apache-opennlp-1.9.4-src/0040775 0001750 0001750 00000000000 14136044321 015456 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/0040775 0001750 0001750 00000000000 14136044432 022065 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/0040775 0001750 0001750 00000000000 14135770370 022662 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/0040775 0001750 0001750 00000000000 14135770370 023606 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/0040775 0001750 0001750 00000000000 14135770370 024527 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 026202 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/bratann/0040775 0001750 0001750 00000000000 14135770370 027627 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/bin/0040775 0001750 0001750 00000000000 14135770370 024356 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/0040775 0001750 0001750 00000000000 14136044331 020270 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/0040775 0001750 0001750 00000000000 14135770370 021067 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/0040775 0001750 0001750 00000000000 14135770370 022046 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/0040775 0001750 0001750 00000000000 14135770370 022767 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 024442 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/0040775 0001750 0001750 00000000000 14135770370 025602 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/0040775 0001750 0001750 00000000000 14135770370 027255 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/letsmt/0040775 0001750 0001750 00000000000 14135770370 030565 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/0040775 0001750 0001750 00000000000 14135770370 027641 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/0040775 0001750 0001750 00000000000 14135770370 030205 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/0040775 0001750 0001750 00000000000 14135770370 030551 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/frenchtreebank/0040775 0001750 0001750 00000000000 14135770370 032236 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/muc/0040775 0001750 0001750 00000000000 14135770370 030041 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/irishsentencebank/0040775 0001750 0001750 00000000000 14135770370 032754 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/leipzig/0040775 0001750 0001750 00000000000 14135770370 030720 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/nkjp/0040775 0001750 0001750 00000000000 14135770370 030217 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/0040775 0001750 0001750 00000000000 14135770370 027432 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/0040775 0001750 0001750 00000000000 14135770370 027076 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/chunking/0040775 0001750 0001750 00000000000 14135770370 030704 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/treeinsert/0040775 0001750 0001750 00000000000 14135770370 031262 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/lang/0040775 0001750 0001750 00000000000 14135770370 030017 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/lang/en/0040775 0001750 0001750 00000000000 14135770370 030421 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/0040775 0001750 0001750 00000000000 14135770370 027215 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/stemmer/0040775 0001750 0001750 00000000000 14135770370 027256 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/0040775 0001750 0001750 00000000000 14135770370 026557 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/0040775 0001750 0001750 00000000000 14135770370 030741 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/ext/0040775 0001750 0001750 00000000000 14135770370 027357 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/0040775 0001750 0001750 00000000000 14135770370 030704 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/eval/0040775 0001750 0001750 00000000000 14135770370 027506 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/model/0040775 0001750 0001750 00000000000 14135770370 027657 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/0040775 0001750 0001750 00000000000 14135770370 027363 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/0040775 0001750 0001750 00000000000 14135770370 027744 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ngram/0040775 0001750 0001750 00000000000 14135770370 026706 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/0040775 0001750 0001750 00000000000 14135770370 026212 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/0040775 0001750 0001750 00000000000 14135770370 030373 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/0040775 0001750 0001750 00000000000 14135770370 030340 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/0040775 0001750 0001750 00000000000 14135770370 027506 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/0040775 0001750 0001750 00000000000 14135770370 032063 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/0040775 0001750 0001750 00000000000 14135770370 030115 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/0040775 0001750 0001750 00000000000 14135770370 027312 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/0040775 0001750 0001750 00000000000 14135770370 027077 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/0040775 0001750 0001750 00000000000 14135770370 027714 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 027753 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/0040775 0001750 0001750 00000000000 14135770370 026531 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/convert/0040775 0001750 0001750 00000000000 14135770370 027262 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/0040775 0001750 0001750 00000000000 14135770370 027747 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/0040775 0001750 0001750 00000000000 14135770370 027037 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/0040775 0001750 0001750 00000000000 14135770370 027241 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/0040775 0001750 0001750 00000000000 14135770370 030406 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/0040775 0001750 0001750 00000000000 14135770370 024060 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/0040775 0001750 0001750 00000000000 14135770370 025533 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/0040775 0001750 0001750 00000000000 14135770370 026673 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/0040775 0001750 0001750 00000000000 14135770370 030346 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/letsmt/0040775 0001750 0001750 00000000000 14135770370 031656 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/0040775 0001750 0001750 00000000000 14135770370 031276 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/0040775 0001750 0001750 00000000000 14135770370 031642 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/frenchtreebank/0040775 0001750 0001750 00000000000 14135770370 033327 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/muc/0040775 0001750 0001750 00000000000 14135770370 031132 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/irishsentencebank/0040775 0001750 0001750 00000000000 14135770370 034045 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/0040775 0001750 0001750 00000000000 14135770370 032011 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/0040775 0001750 0001750 00000000000 14135770370 033455 5ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_leip0100644 0000000 0000000 00000000163 14135770370 032774 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dontread/ apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dont0040775 0001750 0001750 00000000000 14135770370 034342 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/nkjp/0040775 0001750 0001750 00000000000 14135770370 031310 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/0040775 0001750 0001750 00000000000 14135770370 030523 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/parser/0040775 0001750 0001750 00000000000 14135770370 030167 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/0040775 0001750 0001750 00000000000 14135770370 027650 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/0040775 0001750 0001750 00000000000 14135770370 031775 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/0040775 0001750 0001750 00000000000 14135770370 030454 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/sentdetect/0040775 0001750 0001750 00000000000 14135770370 031035 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/0040775 0001750 0001750 00000000000 14135770370 027777 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ml/0040775 0001750 0001750 00000000000 14135770370 027303 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ml/maxent/0040775 0001750 0001750 00000000000 14135770370 030577 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/0040775 0001750 0001750 00000000000 14135770370 030170 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 031044 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/eval/0040775 0001750 0001750 00000000000 14135770370 027622 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/doccat/0040775 0001750 0001750 00000000000 14135770370 030130 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/0040775 0001750 0001750 00000000000 14135770370 030332 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/languagemodel/0040775 0001750 0001750 00000000000 14135770370 031477 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/0040775 0001750 0001750 00000000000 14135770370 024771 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/0040775 0001750 0001750 00000000000 14135770370 026444 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/0040775 0001750 0001750 00000000000 14135770370 027740 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/io/0040775 0001750 0001750 00000000000 14135770370 030347 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/0040775 0001750 0001750 00000000000 14135770370 025551 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/0040775 0001750 0001750 00000000000 14135770370 022013 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/0040775 0001750 0001750 00000000000 14135770370 022734 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 024407 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/0040775 0001750 0001750 00000000000 14135770370 025547 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/0040775 0001750 0001750 00000000000 14135770370 027222 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/0040775 0001750 0001750 00000000000 14135770370 030532 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/0040775 0001750 0001750 00000000000 14135770370 027606 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/0040775 0001750 0001750 00000000000 14135770370 030152 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/0040775 0001750 0001750 00000000000 14135770370 030516 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/0040775 0001750 0001750 00000000000 14135770370 032203 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/0040775 0001750 0001750 00000000000 14135770370 030006 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/moses/0040775 0001750 0001750 00000000000 14135770370 030350 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/0040775 0001750 0001750 00000000000 14135770370 032721 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/0040775 0001750 0001750 00000000000 14135770370 030665 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/0040775 0001750 0001750 00000000000 14135770370 031252 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/0040775 0001750 0001750 00000000000 14135770370 030702 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/0040775 0001750 0001750 00000000000 14135770370 030164 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/0040775 0001750 0001750 00000000000 14135770370 027377 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/0040775 0001750 0001750 00000000000 14135770370 030320 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/0040775 0001750 0001750 00000000000 14135770370 030722 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/0040775 0001750 0001750 00000000000 14135770370 027043 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/0040775 0001750 0001750 00000000000 14135770370 030651 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/0040775 0001750 0001750 00000000000 14135770370 031227 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/0040775 0001750 0001750 00000000000 14135770370 027764 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/en/0040775 0001750 0001750 00000000000 14135770370 030366 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/es/0040775 0001750 0001750 00000000000 14135770370 030373 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/0040775 0001750 0001750 00000000000 14135770370 030270 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/0040775 0001750 0001750 00000000000 14135770370 027162 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/0040775 0001750 0001750 00000000000 14135770370 030456 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/entitylinker/0040775 0001750 0001750 00000000000 14135770370 031703 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/0040775 0001750 0001750 00000000000 14135770370 030743 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/0040775 0001750 0001750 00000000000 14135770370 031174 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/0040775 0001750 0001750 00000000000 14135770370 030445 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/0040775 0001750 0001750 00000000000 14135770370 031324 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/0040775 0001750 0001750 00000000000 14135770370 030457 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/0040775 0001750 0001750 00000000000 14135770370 031274 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 031333 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/0040775 0001750 0001750 00000000000 14135770370 031327 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/0040775 0001750 0001750 00000000000 14135770370 030417 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/0040775 0001750 0001750 00000000000 14135770370 030621 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/languagemodel/0040775 0001750 0001750 00000000000 14135770370 031766 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/0040775 0001750 0001750 00000000000 14135770370 027223 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/0040775 0001750 0001750 00000000000 14135770370 031044 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/0040775 0001750 0001750 00000000000 14135770370 026524 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/0040775 0001750 0001750 00000000000 14135770370 030722 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/java/0040775 0001750 0001750 00000000000 14135770370 027445 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/0040775 0001750 0001750 00000000000 14135770370 030706 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/0040775 0001750 0001750 00000000000 14135770370 027324 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/0040775 0001750 0001750 00000000000 14135770370 030651 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/0040775 0001750 0001750 00000000000 14135770370 027453 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/0040775 0001750 0001750 00000000000 14135770370 027624 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/0040775 0001750 0001750 00000000000 14135770370 027330 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/0040775 0001750 0001750 00000000000 14135770370 027711 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/0040775 0001750 0001750 00000000000 14135770370 030632 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/th/0040775 0001750 0001750 00000000000 14135770370 031245 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/0040775 0001750 0001750 00000000000 14135770370 026653 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/0040775 0001750 0001750 00000000000 14135770370 026157 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/0040775 0001750 0001750 00000000000 14135770370 030340 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/0040775 0001750 0001750 00000000000 14135770370 030305 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/0040775 0001750 0001750 00000000000 14135770370 027453 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/0040775 0001750 0001750 00000000000 14135770370 032030 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/0040775 0001750 0001750 00000000000 14135770370 030062 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/0040775 0001750 0001750 00000000000 14135770370 027257 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/0040775 0001750 0001750 00000000000 14135770370 027044 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/0040775 0001750 0001750 00000000000 14135770370 027661 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 027720 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/0040775 0001750 0001750 00000000000 14135770370 027714 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/0040775 0001750 0001750 00000000000 14135770370 032065 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/0040775 0001750 0001750 00000000000 14135770370 027004 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/0040775 0001750 0001750 00000000000 14135770370 027206 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/languagemodel/0040775 0001750 0001750 00000000000 14135770370 030353 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/0040775 0001750 0001750 00000000000 14135770370 024025 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/0040775 0001750 0001750 00000000000 14135770370 025500 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/0040775 0001750 0001750 00000000000 14135770370 026640 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/util/0040775 0001750 0001750 00000000000 14135770370 027615 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/namefind/0040775 0001750 0001750 00000000000 14135770370 030421 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/postag/0040775 0001750 0001750 00000000000 14135770370 030135 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/0040775 0001750 0001750 00000000000 14135770370 021221 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/0040775 0001750 0001750 00000000000 14135770370 021623 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/parser/0040775 0001750 0001750 00000000000 14135770370 023117 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/tokenizer/0040775 0001750 0001750 00000000000 14135770370 023635 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/namefinder/0040775 0001750 0001750 00000000000 14135770370 023733 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/postag/0040775 0001750 0001750 00000000000 14135770370 023120 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/fr/0040775 0001750 0001750 00000000000 14135770370 021630 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/fr/tokenizer/0040775 0001750 0001750 00000000000 14135770370 023642 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/ga/0040775 0001750 0001750 00000000000 14135770370 021610 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/ga/tokenizer/0040775 0001750 0001750 00000000000 14135770370 023622 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/ga/sentdetect/0040775 0001750 0001750 00000000000 14135770370 023752 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/general/0040775 0001750 0001750 00000000000 14135770370 022636 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/general/tokenizer/0040775 0001750 0001750 00000000000 14135770370 024650 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/pt/0040775 0001750 0001750 00000000000 14135770370 021644 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/pt/tokenizer/0040775 0001750 0001750 00000000000 14135770370 023656 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/es/0040775 0001750 0001750 00000000000 14135770370 021630 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/es/parser/0040775 0001750 0001750 00000000000 14135770370 023124 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/0040775 0001750 0001750 00000000000 14135770370 021631 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/de/0040775 0001750 0001750 00000000000 14135770370 021611 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/de/namefinder/0040775 0001750 0001750 00000000000 14135770370 023721 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/bin/0040775 0001750 0001750 00000000000 14135770370 021050 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/0040775 0001750 0001750 00000000000 14136044445 020066 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/0040775 0001750 0001750 00000000000 14135770370 020657 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/main/0040775 0001750 0001750 00000000000 14135770370 021603 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/main/resources/0040775 0001750 0001750 00000000000 14135770370 023615 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/main/resources/xsl/0040775 0001750 0001750 00000000000 14135770370 024423 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/0040775 0001750 0001750 00000000000 14135770370 022131 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/images/0040775 0001750 0001750 00000000000 14135770370 023376 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/css/0040775 0001750 0001750 00000000000 14135770370 022721 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/0040775 0001750 0001750 00000000000 14136044451 020260 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/0040775 0001750 0001750 00000000000 14135770370 021054 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/0040775 0001750 0001750 00000000000 14135770370 022000 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/readme/0040775 0001750 0001750 00000000000 14135770370 023235 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/docker/0040775 0001750 0001750 00000000000 14135770370 023247 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/assembly/0040775 0001750 0001750 00000000000 14135770370 023617 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/bin/0040775 0001750 0001750 00000000000 14135770370 022550 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/0040775 0001750 0001750 00000000000 14136044423 020065 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/0040775 0001750 0001750 00000000000 14135770370 020662 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/0040775 0001750 0001750 00000000000 14135770370 021641 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/0040775 0001750 0001750 00000000000 14135770370 022562 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 024235 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/0040775 0001750 0001750 00000000000 14135770370 025170 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/util/0040775 0001750 0001750 00000000000 14135770370 026145 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/dictionary/0040775 0001750 0001750 00000000000 14135770370 027335 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/0040775 0001750 0001750 00000000000 14135770370 023653 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/cas/0040775 0001750 0001750 00000000000 14135770370 024421 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/0040775 0001750 0001750 00000000000 14135770370 027171 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/0040775 0001750 0001750 00000000000 14135770370 021606 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/0040775 0001750 0001750 00000000000 14135770370 022527 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 024202 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/0040775 0001750 0001750 00000000000 14135770370 025135 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/0040775 0001750 0001750 00000000000 14135770370 026765 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/parser/0040775 0001750 0001750 00000000000 14135770370 026431 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/0040775 0001750 0001750 00000000000 14135770370 026112 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/0040775 0001750 0001750 00000000000 14135770370 026716 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/0040775 0001750 0001750 00000000000 14135770370 027277 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/normalizer/0040775 0001750 0001750 00000000000 14135770370 027317 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/postag/0040775 0001750 0001750 00000000000 14135770370 026432 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/dictionary/0040775 0001750 0001750 00000000000 14135770370 027302 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/0040775 0001750 0001750 00000000000 14135770370 026372 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/0040775 0001750 0001750 00000000000 14135770370 026574 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/0040775 0001750 0001750 00000000000 14135770370 023620 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/opennlp/0040775 0001750 0001750 00000000000 14135770370 025273 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/opennlp/uima/0040775 0001750 0001750 00000000000 14135770370 026226 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/opennlp/uima/util/0040775 0001750 0001750 00000000000 14135770370 027203 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/metadata/0040775 0001750 0001750 00000000000 14135770370 021653 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/descriptors/0040775 0001750 0001750 00000000000 14135770370 022434 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/0040775 0001750 0001750 00000000000 14136044437 022372 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/0040775 0001750 0001750 00000000000 14135770370 023162 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/0040775 0001750 0001750 00000000000 14135770370 024141 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/0040775 0001750 0001750 00000000000 14135770370 025062 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 026535 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/0040775 0001750 0001750 00000000000 14135770370 030705 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/builder/0040775 0001750 0001750 00000000000 14135770370 032333 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/tagdict/0040775 0001750 0001750 00000000000 14135770370 032324 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 033056 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/resources/0040775 0001750 0001750 00000000000 14135770370 026153 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/0040775 0001750 0001750 00000000000 14135770370 024106 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/0040775 0001750 0001750 00000000000 14135770370 025027 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/0040775 0001750 0001750 00000000000 14135770370 026502 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/0040775 0001750 0001750 00000000000 14135770370 030652 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/0040775 0001750 0001750 00000000000 14135770370 032265 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/0040775 0001750 0001750 00000000000 14135770370 033713 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/util/0040775 0001750 0001750 00000000000 14135770370 031627 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/builder/0040775 0001750 0001750 00000000000 14135770370 032300 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/0040775 0001750 0001750 00000000000 14135770370 032271 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/0040775 0001750 0001750 00000000000 14135770370 033023 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/bin/0040775 0001750 0001750 00000000000 14135770370 024656 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-morfologik-addon/bin/0040775 0001750 0001750 00000000000 14135770370 023143 5ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/NOTICE0100664 0001750 0001750 00000000570 14135770370 016372 0ustar00jeffjeff0000000 0000000 Apache OpenNLP Copyright 2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). The snowball stemmers in opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball were developed by Martin Porter and Richard Boulton. The full snowball package is available from http://snowball.tartarus.org/ ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-brat-annotator_src_main_java_opennlp_bratann_NameFi0100644 0000000 0000000 00000000161 14135770370 032401 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderAnnService.java apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderAnnService.j0100664 0001750 0001750 00000007524 14135770370 033775 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.bratann; import java.io.File; import java.net.URI; import java.util.Arrays; import java.util.List; import javax.ws.rs.core.UriBuilder; import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; import org.glassfish.jersey.server.ResourceConfig; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.sentdetect.NewlineSentenceDetector; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.tokenize.WhitespaceTokenizer; public class NameFinderAnnService { public static SentenceDetector sentenceDetector = new NewlineSentenceDetector(); public static Tokenizer tokenizer = WhitespaceTokenizer.INSTANCE; public static TokenNameFinder[] nameFinders; public static void main(String[] args) throws Exception { if (args.length == 0) { System.out.println("Usage:"); System.out.println("[NameFinderAnnService -serverPort port] [-tokenizerModel file] " + "[-ruleBasedTokenizer whitespace|simple] " + "[-sentenceDetectorModel file] namefinderFile|nameFinderURI"); return; } List argList = Arrays.asList(args); int serverPort = 8080; int serverPortIndex = argList.indexOf("-serverPort") + 1; if (serverPortIndex > 0 && serverPortIndex < args.length) { serverPort = Integer.parseInt(args[serverPortIndex]); } int sentenceModelIndex = argList.indexOf("-sentenceDetectorModel") + 1; if (sentenceModelIndex > 0 && sentenceModelIndex < args.length) { sentenceDetector = new SentenceDetectorME( new SentenceModel(new File(args[sentenceModelIndex]))); } int ruleBasedTokenizerIndex = argList.indexOf("-ruleBasedTokenizer") + 1; if (ruleBasedTokenizerIndex > 0 && ruleBasedTokenizerIndex < args.length) { if ("whitespace".equals(args[ruleBasedTokenizerIndex])) { tokenizer = WhitespaceTokenizer.INSTANCE; } else if ("simple".equals(args[ruleBasedTokenizerIndex])) { tokenizer = SimpleTokenizer.INSTANCE; } else { System.out.println("unkown tokenizer: " + args[ruleBasedTokenizerIndex]); return; } } int tokenizerModelIndex = argList.indexOf("-tokenizerModel") + 1; if (tokenizerModelIndex > 0 && tokenizerModelIndex < args.length) { tokenizer = new TokenizerME( new TokenizerModel(new File(args[tokenizerModelIndex]))); } nameFinders = new TokenNameFinder[] {new NameFinderME( new TokenNameFinderModel(new File(args[args.length - 1])))}; URI baseUri = UriBuilder.fromUri("http://localhost/").port(serverPort).build(); ResourceConfig config = new ResourceConfig(NameFinderResource.class); GrizzlyHttpServerFactory.createHttpServer(baseUri, config); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-brat-annotator_src_main_java_opennlp_bratann_NameFi0100644 0000000 0000000 00000000157 14135770370 032406 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.java apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/java/opennlp/bratann/NameFinderResource.jav0100664 0001750 0001750 00000011015 14135770370 034044 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.bratann; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.Span; @Path("/ner") public class NameFinderResource { private SentenceDetector sentDetect = NameFinderAnnService.sentenceDetector; private Tokenizer tokenizer = NameFinderAnnService.tokenizer; private TokenNameFinder[] nameFinders = NameFinderAnnService.nameFinders; private static int findNextNonWhitespaceChar(CharSequence s, int beginOffset, int endOffset) { for (int i = beginOffset; i < endOffset; i++) { if (!Character.isSpaceChar(s.charAt(i))) { return i; } } return -1; } @POST @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON) public Map findNames(@QueryParam("model") String modelName, String text) { Span[] sentenceSpans = sentDetect.sentPosDetect(text); Map map = new HashMap<>(); int indexCounter = 0; for (Span sentenceSpan : sentenceSpans) { String sentenceText = sentenceSpan.getCoveredText(text).toString(); // offset of sentence gets lost here! Span[] tokenSpans = tokenizer.tokenizePos(sentenceText); String[] tokens = Span.spansToStrings(tokenSpans, sentenceText); for (TokenNameFinder nameFinder : nameFinders) { Span[] names = nameFinder.find(tokens); for (Span name : names) { int beginOffset = tokenSpans[name.getStart()].getStart() + sentenceSpan.getStart(); int endOffset = tokenSpans[name.getEnd() - 1].getEnd() + sentenceSpan.getStart(); // create a list of new line indexes List newLineIndexes = new ArrayList<>(); // TODO: Code needs to handle case that there are multiple new lines // in a row boolean inNewLineSequence = false; for (int ci = beginOffset; ci < endOffset; ci++) { if (text.charAt(ci) == '\n' || text.charAt(ci) == '\r') { if (!inNewLineSequence) { newLineIndexes.add(ci); } inNewLineSequence = true; } else { inNewLineSequence = false; } } List textSegments = new ArrayList<>(); List spanSegments = new ArrayList<>(); int segmentBegin = beginOffset; for (int newLineOffset : newLineIndexes) { // create segment from begin to offset textSegments.add(text.substring(segmentBegin, newLineOffset)); spanSegments.add(new int[] {segmentBegin, newLineOffset}); segmentBegin = findNextNonWhitespaceChar(text, newLineOffset + 1, endOffset); if (segmentBegin == -1) { break; } } // create left over segment if (segmentBegin != -1) { textSegments.add(text.substring(segmentBegin, endOffset)); spanSegments.add(new int[] {segmentBegin, endOffset}); } NameAnn ann = new NameAnn(); ann.texts = textSegments.toArray(new String[textSegments.size()]); ann.offsets = spanSegments.toArray(new int[spanSegments.size()][]); ann.type = name.getType(); map.put(Integer.toString(indexCounter++), ann); } } } return map; } public static class NameAnn { public int[][] offsets; public String[] texts; public String type; } } apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/bin/brat-annotation-service0100775 0001750 0001750 00000002371 14135770370 031042 0ustar00jeffjeff0000000 0000000 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Note: Do not output anything in this script file, any output # may be inadvertantly placed in any output files if # output redirection is used. if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then JAVACMD="$JAVA_HOME/bin/java" else JAVACMD="`which java`" fi fi # Might fail if $0 is a link OPENNLP_HOME=`dirname "$0"`/.. $JAVACMD -Xmx1024m -cp "$OPENNLP_HOME/lib/*" opennlp.bratann.NameFinderAnnService $@ apache-opennlp-1.9.4-src/opennlp-brat-annotator/src/main/bin/brat-annotation-service.bat0100775 0001750 0001750 00000003400 14135770370 031601 0ustar00jeffjeff0000000 0000000 @ECHO off REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. REM # Note: Do not output anything in this script file, any output REM # may be inadvertantly placed in any output files if REM # output redirection is used. SETLOCAL IF "%JAVA_CMD%" == "" ( IF "%JAVA_HOME%" == "" ( SET JAVA_CMD=java ) ELSE ( REM # Keep JAVA_HOME to short-name without spaces FOR %%A IN ("%JAVA_HOME%") DO SET JAVA_CMD=%%~sfA\bin\java ) ) REM # Should work with Windows XP and greater. If not, specify the path to where it is installed. IF "%OPENNLP_HOME%" == "" ( SET OPENNLP_HOME=%~sp0.. ) ELSE ( REM # Keep OPENNLP_HOME to short-name without spaces FOR %%A IN ("%OPENNLP_HOME%") DO SET OPENNLP_HOME=%%~sfA ) setLocal EnableDelayedExpansion set CLASSPATH=" FOR %%A IN ("%OPENNLP_HOME%\lib\*.jar") DO ( set CLASSPATH=!CLASSPATH!;%%A ) set CLASSPATH=!CLASSPATH!" %JAVA_CMD% -Xmx1024m -cp %CLASSPATH% opennlp.bratann.NameFinderAnnService %* ENDLOCALapache-opennlp-1.9.4-src/opennlp-brat-annotator/pom.xml0100664 0001750 0001750 00000004736 14136044070 023407 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-brat-annotator jar Apache OpenNLP Brat Annotator UTF-8 org.glassfish.jersey.containers jersey-container-grizzly2-http ${glassfish.version} org.glassfish.jersey.media jersey-media-json-jackson ${glassfish.version} org.apache.opennlp opennlp-tools junit junit test maven-assembly-plugin jar-with-dependencies make-assembly package single ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_letsmt_Le0100644 0000000 0000000 00000000163 14135770370 032702 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/letsmt/LetsmtDocumentTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/letsmt/LetsmtDocumentTest0100664 0001750 0001750 00000005526 14135770370 034324 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.letsmt; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.junit.Assert; import org.junit.Test; public class LetsmtDocumentTest { @Test public void testParsingSimpleDoc() throws IOException { try (InputStream letsmtXmlIn = LetsmtDocumentTest.class.getResourceAsStream("letsmt-with-words.xml");) { LetsmtDocument doc = LetsmtDocument.parse(letsmtXmlIn); List sents = doc.getSentences(); Assert.assertEquals(2, sents.size()); LetsmtDocument.LetsmtSentence sent1 = sents.get(0); Assert.assertNull(sent1.getNonTokenizedText()); Assert.assertArrayEquals(new String[]{ "The", "Apache", "Software", "Foundation", "uses", "various", "licenses", "to", "distribute", "software", "and", "documentation", ",", "to", "accept", "regular", "contributions", "from", "individuals", "and", "corporations", ",", "and", "to", "accept", "larger", "grants", "of", "existing", "software", "products", "." }, sent1.getTokens()); LetsmtDocument.LetsmtSentence sent2 = sents.get(1); Assert.assertNull(sent2.getNonTokenizedText()); Assert.assertArrayEquals(new String[]{ "All", "software", "produced", "by", "The", "Apache", "Software", "Foundation", "or", "any", "of", "its", "projects", "or", "subjects", "is", "licensed", "according", "to", "the", "terms", "of", "the", "documents", "listed", "below", "." }, sent2.getTokens()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADSent0100644 0000000 0000000 00000000167 14135770370 032540 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADSentenceSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADSentenceSampleStream0100664 0001750 0001750 00000004501 14135770370 034050 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public class ADSentenceSampleStreamTest { private List samples = new ArrayList<>(); @Test public void testSimpleCount() throws IOException { Assert.assertEquals(5, samples.size()); } @Test public void testSentences() throws IOException { Assert.assertNotNull(samples.get(0).getDocument()); Assert.assertEquals(3, samples.get(0).getSentences().length); Assert.assertEquals(new Span(0, 119), samples.get(0).getSentences()[0]); Assert.assertEquals(new Span(120, 180), samples.get(0).getSentences()[1]); } @Before public void setup() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(ADSentenceSampleStreamTest.class, "/opennlp/tools/formats/ad.sample"); try (ADSentenceSampleStream stream = new ADSentenceSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8), true)) { SentenceSample sample; while ((sample = stream.read()) != null) { System.out.println(sample.getDocument()); System.out.println(""); samples.add(sample); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADToke0100644 0000000 0000000 00000000164 14135770370 032526 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADTokenSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADTokenSampleStreamTes0100664 0001750 0001750 00000004572 14135770370 034050 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; public class ADTokenSampleStreamTest { private List samples = new ArrayList<>(); @Test public void testSimpleCount() throws IOException { Assert.assertEquals(ADParagraphStreamTest.NUM_SENTENCES, samples.size()); } @Test public void testSentences() throws IOException { Assert.assertTrue(samples.get(5).getText().contains("ofereceu-me")); } @Before public void setup() throws IOException, URISyntaxException { ADTokenSampleStreamFactory factory = new ADTokenSampleStreamFactory( ADTokenSampleStreamFactory.Parameters.class); File dict = new File(Objects.requireNonNull(getClass().getClassLoader() .getResource("opennlp/tools/tokenize/latin-detokenizer.xml")).toURI()); File data = new File(Objects.requireNonNull(getClass().getClassLoader() .getResource("opennlp/tools/formats/ad.sample")).toURI()); String[] args = { "-data", data.getCanonicalPath(), "-encoding", "UTF-8", "-lang", "por", "-detokenizer", dict.getCanonicalPath() }; ObjectStream tokenSampleStream = factory.create(args); TokenSample sample = tokenSampleStream.read(); while (sample != null) { samples.add(sample); sample = tokenSampleStream.read(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADChun0100644 0000000 0000000 00000000164 14135770370 032521 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADChunkSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADChunkSampleStreamTes0100664 0001750 0001750 00000005511 14135770370 034032 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; public class ADChunkSampleStreamTest { private List samples = new ArrayList<>(); @Test public void testSimpleCount() { Assert.assertEquals(ADParagraphStreamTest.NUM_SENTENCES, samples.size()); } @Test public void testChunks() { Assert.assertEquals("Inicia", samples.get(0).getSentence()[0]); Assert.assertEquals("v-fin", samples.get(0).getTags()[0]); Assert.assertEquals("B-VP", samples.get(0).getPreds()[0]); Assert.assertEquals("em", samples.get(0).getSentence()[1]); Assert.assertEquals("prp", samples.get(0).getTags()[1]); Assert.assertEquals("B-PP", samples.get(0).getPreds()[1]); Assert.assertEquals("o", samples.get(0).getSentence()[2]); Assert.assertEquals("art", samples.get(0).getTags()[2]); Assert.assertEquals("B-NP", samples.get(0).getPreds()[2]); Assert.assertEquals("próximo", samples.get(0).getSentence()[3]); Assert.assertEquals("adj", samples.get(0).getTags()[3]); Assert.assertEquals("I-NP", samples.get(0).getPreds()[3]); Assert.assertEquals("Casas", samples.get(3).getSentence()[0]); Assert.assertEquals("n", samples.get(3).getTags()[0]); Assert.assertEquals("B-NP", samples.get(3).getPreds()[0]); } @Before public void setup() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"); try (ADChunkSampleStream stream = new ADChunkSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8))) { ChunkSample sample; while ((sample = stream.read()) != null) { samples.add(sample); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADName0100644 0000000 0000000 00000000163 14135770370 032503 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADNameSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADNameSampleStreamTest0100664 0001750 0001750 00000013265 14135770370 034033 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public class ADNameSampleStreamTest { private List samples = new ArrayList<>(); @Test public void testSimpleCount() throws IOException { Assert.assertEquals(ADParagraphStreamTest.NUM_SENTENCES, samples.size()); } @Test public void testCheckMergedContractions() throws IOException { Assert.assertEquals("no", samples.get(0).getSentence()[1]); Assert.assertEquals("no", samples.get(0).getSentence()[11]); Assert.assertEquals("Com", samples.get(1).getSentence()[0]); Assert.assertEquals("relação", samples.get(1).getSentence()[1]); Assert.assertEquals("à", samples.get(1).getSentence()[2]); Assert.assertEquals("mais", samples.get(2).getSentence()[4]); Assert.assertEquals("de", samples.get(2).getSentence()[5]); Assert.assertEquals("da", samples.get(2).getSentence()[8]); Assert.assertEquals("num", samples.get(3).getSentence()[26]); } @Test public void testSize() throws IOException { Assert.assertEquals(25, samples.get(0).getSentence().length); Assert.assertEquals(12, samples.get(1).getSentence().length); Assert.assertEquals(59, samples.get(2).getSentence().length); Assert.assertEquals(33, samples.get(3).getSentence().length); } @Test public void testNames() throws IOException { Assert.assertEquals(new Span(4, 7, "time"), samples.get(0).getNames()[0]); Assert.assertEquals(new Span(8, 10, "place"), samples.get(0).getNames()[1]); Assert.assertEquals(new Span(12, 14, "place"), samples.get(0).getNames()[2]); Assert.assertEquals(new Span(15, 17, "person"), samples.get(0).getNames()[3]); Assert.assertEquals(new Span(18, 19, "numeric"), samples.get(0).getNames()[4]); Assert.assertEquals(new Span(20, 22, "place"), samples.get(0).getNames()[5]); Assert.assertEquals(new Span(23, 24, "place"), samples.get(0).getNames()[6]); Assert.assertEquals(new Span(22, 24, "person"), samples.get(2).getNames()[0]);// 22..24 Assert.assertEquals(new Span(25, 27, "person"), samples.get(2).getNames()[1]);// 25..27 Assert.assertEquals(new Span(28, 30, "person"), samples.get(2).getNames()[2]);// 28..30 Assert.assertEquals(new Span(31, 34, "person"), samples.get(2).getNames()[3]);// 31..34 Assert.assertEquals(new Span(35, 37, "person"), samples.get(2).getNames()[4]);// 35..37 Assert.assertEquals(new Span(38, 40, "person"), samples.get(2).getNames()[5]);// 38..40 Assert.assertEquals(new Span(41, 43, "person"), samples.get(2).getNames()[6]);// 41..43 Assert.assertEquals(new Span(44, 46, "person"), samples.get(2).getNames()[7]);// 44..46 Assert.assertEquals(new Span(47, 49, "person"), samples.get(2).getNames()[8]);// 47..49 Assert.assertEquals(new Span(50, 52, "person"), samples.get(2).getNames()[9]);// 50..52 Assert.assertEquals(new Span(53, 55, "person"), samples.get(2).getNames()[10]);// 53..55 Assert.assertEquals(new Span(0, 1, "place"), samples.get(3).getNames()[0]);// 0..1 Assert.assertEquals(new Span(6, 7, "event"), samples.get(3).getNames()[1]);// 6..7 Assert.assertEquals(new Span(15, 16, "organization"), samples.get(3).getNames()[2]);// 15..16 Assert.assertEquals(new Span(18, 19, "event"), samples.get(3).getNames()[3]);// 18..19 Assert.assertEquals(new Span(27, 28, "event"), samples.get(3).getNames()[4]);// 27..28 Assert.assertEquals(new Span(29, 30, "event"), samples.get(3).getNames()[5]);// 29..30 Assert.assertEquals(new Span(1, 6, "time"), samples.get(4).getNames()[0]);// 0..1 Assert.assertEquals(new Span(0, 3, "person"), samples.get(5).getNames()[0]);// 0..1 } @Test public void testSmallSentence() throws IOException { Assert.assertEquals(2, samples.get(6).getSentence().length); } @Test public void testMissingRightContraction() throws IOException { Assert.assertEquals(new Span(0, 1, "person"), samples.get(7).getNames()[0]); Assert.assertEquals(new Span(3, 4, "person"), samples.get(7).getNames()[1]); Assert.assertEquals(new Span(5, 6, "person"), samples.get(7).getNames()[2]); } @Before public void setup() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"); try (ADNameSampleStream stream = new ADNameSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8), true)) { NameSample sample; while ((sample = stream.read()) != null) { samples.add(sample); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADPOSS0100644 0000000 0000000 00000000162 14135770370 032406 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADPOSSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADPOSSampleStreamTest.0100664 0001750 0001750 00000010056 14135770370 033665 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.util.PlainTextByLineStream; public class ADPOSSampleStreamTest { @Test public void testSimple() throws IOException { // add one sentence with expandME = includeFeats = false try (ADPOSSampleStream stream = new ADPOSSampleStream( new PlainTextByLineStream(new ResourceAsStreamFactory( ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"), StandardCharsets.UTF_8), false, false)) { POSSample sample = stream.read(); Assert.assertEquals(23, sample.getSentence().length); Assert.assertEquals("Inicia", sample.getSentence()[0]); Assert.assertEquals("v-fin", sample.getTags()[0]); Assert.assertEquals("em", sample.getSentence()[1]); Assert.assertEquals("prp", sample.getTags()[1]); Assert.assertEquals("o", sample.getSentence()[2]); Assert.assertEquals("art", sample.getTags()[2]); Assert.assertEquals("Porto_Poesia", sample.getSentence()[9]); Assert.assertEquals("prop", sample.getTags()[9]); } } @Test public void testExpandME() throws IOException { // add one sentence with expandME = true try (ADPOSSampleStream stream = new ADPOSSampleStream( new PlainTextByLineStream(new ResourceAsStreamFactory( ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"), StandardCharsets.UTF_8), true, false)) { POSSample sample = stream.read(); Assert.assertEquals(27, sample.getSentence().length); Assert.assertEquals("Inicia", sample.getSentence()[0]); Assert.assertEquals("v-fin", sample.getTags()[0]); Assert.assertEquals("em", sample.getSentence()[1]); Assert.assertEquals("prp", sample.getTags()[1]); Assert.assertEquals("o", sample.getSentence()[2]); Assert.assertEquals("art", sample.getTags()[2]); Assert.assertEquals("Porto", sample.getSentence()[9]); Assert.assertEquals("B-prop", sample.getTags()[9]); Assert.assertEquals("Poesia", sample.getSentence()[10]); Assert.assertEquals("I-prop", sample.getTags()[10]); } } @Test public void testIncludeFeats() throws IOException { // add one sentence with includeFeats = true try (ADPOSSampleStream stream = new ADPOSSampleStream( new PlainTextByLineStream(new ResourceAsStreamFactory( ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"), StandardCharsets.UTF_8), false, true)) { POSSample sample = stream.read(); Assert.assertEquals(23, sample.getSentence().length); Assert.assertEquals("Inicia", sample.getSentence()[0]); Assert.assertEquals("v-fin=PR=3S=IND=VFIN", sample.getTags()[0]); Assert.assertEquals("em", sample.getSentence()[1]); Assert.assertEquals("prp", sample.getTags()[1]); Assert.assertEquals("o", sample.getSentence()[2]); Assert.assertEquals("art=DET=M=S", sample.getTags()[2]); Assert.assertEquals("Porto_Poesia", sample.getSentence()[9]); Assert.assertEquals("prop=M=S", sample.getTags()[9]); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ad_ADPara0100644 0000000 0000000 00000000162 14135770370 032505 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADParagraphStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ad/ADParagraphStreamTest.0100664 0001750 0001750 00000004273 14135770370 033773 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; public class ADParagraphStreamTest { public static final int NUM_SENTENCES = 8; @Test public void testSimpleReading() throws IOException { int count = 0; ADSentenceStream stream = openData(); ADSentenceStream.Sentence paragraph = stream.read(); paragraph.getRoot(); while (paragraph != null) { count++; paragraph = stream.read(); // paragraph.getRoot(); } Assert.assertEquals(ADParagraphStreamTest.NUM_SENTENCES, count); } @Test public void testLeadingWithContraction() throws IOException { int count = 0; ADSentenceStream stream = openData(); ADSentenceStream.Sentence paragraph = stream.read(); while (paragraph != null) { count++; paragraph = stream.read(); } Assert.assertEquals(ADParagraphStreamTest.NUM_SENTENCES, count); } private static ADSentenceStream openData() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(ADParagraphStreamTest.class, "/opennlp/tools/formats/ad.sample"); return new ADSentenceStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000167 14135770370 032656 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratAnnotationStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratAnnotationStream0100664 0001750 0001750 00000005427 14135770370 034234 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.junit.Test; import opennlp.tools.util.ObjectStream; public class BratAnnotationStreamTest { private ObjectStream creatBratAnnotationStream( AnnotationConfiguration conf, String file) { InputStream in = BratAnnotationStreamTest.class.getResourceAsStream(file); return new BratAnnotationStream(conf, "testing", in); } static void addEntityTypes(Map typeToClassMap) { typeToClassMap.put("Person", AnnotationConfiguration.ENTITY_TYPE); typeToClassMap.put("Location", AnnotationConfiguration.ENTITY_TYPE); typeToClassMap.put("Organization", AnnotationConfiguration.ENTITY_TYPE); typeToClassMap.put("Date", AnnotationConfiguration.ENTITY_TYPE); } @Test public void testParsingEntities() throws Exception { Map typeToClassMap = new HashMap<>(); addEntityTypes(typeToClassMap); AnnotationConfiguration annConfig = new AnnotationConfiguration(typeToClassMap); ObjectStream annStream = creatBratAnnotationStream(annConfig, "/opennlp/tools/formats/brat/voa-with-entities.ann"); // TODO: Test if we get the entities ... we expect! BratAnnotation ann; while ((ann = annStream.read()) != null) { System.out.println(ann); } } @Test public void testParsingRelations() throws Exception { Map typeToClassMap = new HashMap<>(); addEntityTypes(typeToClassMap); typeToClassMap.put("Related", AnnotationConfiguration.RELATION_TYPE); AnnotationConfiguration annConfig = new AnnotationConfiguration(typeToClassMap); ObjectStream annStream = creatBratAnnotationStream(annConfig, "/opennlp/tools/formats/brat/voa-with-relations.ann"); // TODO: Test if we get the entities ... we expect! BratAnnotation ann; while ((ann = annStream.read()) != null) { System.out.println(ann); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000165 14135770370 032654 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratDocumentParserTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratDocumentParserTe0100664 0001750 0001750 00000005556 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.NewlineSentenceDetector; import opennlp.tools.tokenize.WhitespaceTokenizer; public class BratDocumentParserTest { @Test public void testParse() throws IOException { Map typeToClassMap = new HashMap<>(); BratAnnotationStreamTest.addEntityTypes(typeToClassMap); AnnotationConfiguration config = new AnnotationConfiguration(typeToClassMap); InputStream txtIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/opennlp-1193.txt"); InputStream annIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/opennlp-1193.ann"); BratDocument doc = BratDocument.parseDocument(config, "opennlp-1193", txtIn, annIn); BratDocumentParser parser = new BratDocumentParser(new NewlineSentenceDetector(), WhitespaceTokenizer.INSTANCE); List names = parser.parse(doc); Assert.assertEquals(3, names.size()); NameSample sample1 = names.get(0); Assert.assertEquals(1, sample1.getNames().length); Assert.assertEquals(0, sample1.getNames()[0].getStart()); Assert.assertEquals(2, sample1.getNames()[0].getEnd()); NameSample sample2 = names.get(1); Assert.assertEquals(1, sample2.getNames().length); Assert.assertEquals(0, sample2.getNames()[0].getStart()); Assert.assertEquals(1, sample2.getNames()[0].getEnd()); NameSample sample3 = names.get(2); Assert.assertEquals(3, sample3.getNames().length); Assert.assertEquals(0, sample3.getNames()[0].getStart()); Assert.assertEquals(1, sample3.getNames()[0].getEnd()); Assert.assertEquals(1, sample3.getNames()[1].getStart()); Assert.assertEquals(2, sample3.getNames()[1].getEnd()); Assert.assertEquals(2, sample3.getNames()[2].getStart()); Assert.assertEquals(3, sample3.getNames()[2].getEnd()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000167 14135770370 032656 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratNameSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratNameSampleStream0100664 0001750 0001750 00000006301 14135770370 034134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.junit.Assert; import org.junit.Test; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.NewlineSentenceDetector; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; public class BratNameSampleStreamTest { private BratNameSampleStream createNameSampleWith(String nameContainsFilter, Set nameTypes) throws IOException { Map typeToClassMap = new HashMap<>(); BratAnnotationStreamTest.addEntityTypes(typeToClassMap); AnnotationConfiguration config = new AnnotationConfiguration(typeToClassMap); File dir = new File(this.getClass().getResource("/opennlp/tools/formats/brat/").getFile()); FileFilter fileFilter = pathname -> pathname.getName().contains(nameContainsFilter); ObjectStream bratDocumentStream = new BratDocumentStream(config, dir, false, fileFilter); return new BratNameSampleStream(new NewlineSentenceDetector(), WhitespaceTokenizer.INSTANCE, bratDocumentStream, nameTypes); } @Test public void readNoOverlap() throws IOException { BratNameSampleStream stream = createNameSampleWith("-entities.", null); int count = 0; NameSample sample = stream.read(); while (sample != null) { count++; sample = stream.read(); } Assert.assertEquals(8, count); } @Test(expected = RuntimeException.class) public void readOverlapFail() throws IOException { BratNameSampleStream stream = createNameSampleWith("overlapping", null); NameSample sample = stream.read(); while (sample != null) { sample = stream.read(); } } @Test(expected = IllegalArgumentException.class) public void emptySample() throws IOException { createNameSampleWith("overlapping", Collections.emptySet()); } @Test public void readOverlapFilter() throws IOException { BratNameSampleStream stream = createNameSampleWith("overlapping", Collections.singleton("Person")); int count = 0; NameSample sample = stream.read(); while (sample != null) { count++; sample = stream.read(); } Assert.assertEquals(8, count); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000157 14135770370 032655 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratDocumentTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/brat/BratDocumentTest.jav0100664 0001750 0001750 00000007714 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; public class BratDocumentTest { @Test public void testDocumentWithEntitiesParsing() throws IOException { Map typeToClassMap = new HashMap<>(); BratAnnotationStreamTest.addEntityTypes(typeToClassMap); AnnotationConfiguration config = new AnnotationConfiguration(typeToClassMap); InputStream txtIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/voa-with-entities.txt"); InputStream annIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/voa-with-entities.ann"); BratDocument doc = BratDocument.parseDocument(config, "voa-with-entities", txtIn, annIn); Assert.assertEquals("voa-with-entities", doc.getId()); Assert.assertTrue(doc.getText().startsWith(" U . S . President ")); Assert.assertTrue(doc.getText().endsWith("multinational process . \n")); Assert.assertEquals(18, doc.getAnnotations().size()); BratAnnotation annotation = doc.getAnnotation("T2"); checkNote(annotation, "Barack Obama", "President Obama was the 44th U.S. president"); annotation = doc.getAnnotation("T3"); checkNote(annotation,"South Korea","The capital of South Korea is Seoul"); } private void checkNote(BratAnnotation annotation, String expectedCoveredText, String expectedNote) { Assert.assertTrue(annotation instanceof SpanAnnotation); SpanAnnotation spanAnn = (SpanAnnotation) annotation; Assert.assertEquals(expectedCoveredText, spanAnn.getCoveredText()); Assert.assertEquals(expectedNote, spanAnn.getNote()); } /** * Parse spans that have multiple fragments and ensure they are matched to the correct tokens. * * Test to ensure OPENNLP-1193 works. */ @Test public void testSpanWithMultiFragments() throws IOException { Map typeToClassMap = new HashMap<>(); BratAnnotationStreamTest.addEntityTypes(typeToClassMap); AnnotationConfiguration config = new AnnotationConfiguration(typeToClassMap); InputStream txtIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/opennlp-1193.txt"); InputStream annIn = BratDocumentTest.class.getResourceAsStream( "/opennlp/tools/formats/brat/opennlp-1193.ann"); BratDocument doc = BratDocument.parseDocument(config, "opennlp-1193", txtIn, annIn); SpanAnnotation t1 = (SpanAnnotation) doc.getAnnotation("T1"); Assert.assertEquals(t1.getSpans()[0].getStart(), 0); Assert.assertEquals(t1.getSpans()[0].getEnd(), 7); Assert.assertEquals(t1.getSpans()[1].getStart(), 8); Assert.assertEquals(t1.getSpans()[1].getEnd(), 15); Assert.assertEquals(t1.getSpans()[2].getStart(), 17); Assert.assertEquals(t1.getSpans()[2].getEnd(), 24); SpanAnnotation t2 = (SpanAnnotation) doc.getAnnotation("T2"); Assert.assertEquals(t2.getSpans()[0].getStart(), 26); Assert.assertEquals(t2.getSpans()[0].getEnd(), 33); Assert.assertEquals(t2.getSpans()[1].getStart(), 40); Assert.assertEquals(t2.getSpans()[1].getEnd(), 47); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_NameFinde0100644 0000000 0000000 00000000172 14135770370 032600 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/NameFinderCensus90NameStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/NameFinderCensus90NameStr0100664 0001750 0001750 00000007327 14135770370 034042 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Test; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.StringList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; public class NameFinderCensus90NameStreamTest { private static ObjectStream openData(String name) throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( NameFinderCensus90NameStreamTest.class, "/opennlp/tools/formats/" + name); return new NameFinderCensus90NameStream(in, StandardCharsets.UTF_8); } @Test public void testParsingEnglishSample() throws IOException { ObjectStream sampleStream = openData("census90.sample"); StringList personName = sampleStream.read(); // verify the first 5 taken from the Surname data assertNotNull(personName); assertEquals("Smith", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Johnson", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Williams", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Jones", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Brown", personName.getToken(0)); // verify the next 5 taken from the female names personName = sampleStream.read(); assertNotNull(personName); assertEquals("Mary", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Patricia", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Linda", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Barbara", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Elizabeth", personName.getToken(0)); // verify the last 5 taken from the male names personName = sampleStream.read(); assertNotNull(personName); assertEquals("James", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("John", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Robert", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("Michael", personName.getToken(0)); personName = sampleStream.read(); assertNotNull(personName); assertEquals("William", personName.getToken(0)); // verify the end of the file. personName = sampleStream.read(); assertNull(personName); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000174 14135770370 032671 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluTokenSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluTokenSampleS0100664 0001750 0001750 00000011007 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluTokenSampleStreamTest { @Test public void testParseTwoSentences() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "de-ud-train-sample.conllu"); try (ObjectStream stream = new ConlluTokenSampleStream(new ConlluStream(streamFactory))) { TokenSample expected1 = TokenSample.parse( "Fachlich kompetent" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", sehr gute Beratung und ein freundliches Team" + TokenSample.DEFAULT_SEPARATOR_CHARS + ".", TokenSample.DEFAULT_SEPARATOR_CHARS); Assert.assertEquals(expected1, stream.read()); TokenSample expected2 = TokenSample.parse("Beiden Zahnärzten verdanke ich einen " + "neuen Biss und dadurch endlich keine Rückenschmerzen mehr" + TokenSample.DEFAULT_SEPARATOR_CHARS + ".", TokenSample.DEFAULT_SEPARATOR_CHARS); Assert.assertEquals(expected2, stream.read()); Assert.assertNull("Stream must be exhausted", stream.read()); } } @Test public void testParseContraction() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "pt_br-ud-sample.conllu"); try (ObjectStream stream = new ConlluTokenSampleStream(new ConlluStream(streamFactory))) { TokenSample expected1 = TokenSample.parse( "Numa reunião entre representantes da Secretaria da Criança do DF " + "ea juíza da Vara de Execuções de Medidas Socioeducativas" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", Lavínia Tupi Vieira Fonseca" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", ficou acordado que dos 25 internos" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", 12 serão internados na Unidade de " + "Planaltina e os outros 13 devem retornar para a Unidade do Recanto das Emas" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", antigo Ciago" + TokenSample.DEFAULT_SEPARATOR_CHARS + "." , TokenSample.DEFAULT_SEPARATOR_CHARS); TokenSample predicted = stream.read(); Assert.assertEquals(expected1, predicted); } } @Test public void testParseSpanishS300() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "es-ud-sample.conllu"); try (ObjectStream stream = new ConlluTokenSampleStream(new ConlluStream(streamFactory))) { TokenSample expected1 = TokenSample.parse( "Digámoslo claramente" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", la insurgencia se ha pronunciado mucho más claramente respecto al " + "tema de la paz que el Estado" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", como lo demuestra el fragmento que Bermúdez cita de la respuesta de \"" + TokenSample.DEFAULT_SEPARATOR_CHARS + "Gabino" + TokenSample.DEFAULT_SEPARATOR_CHARS + "\" a Piedad Córdoba" + TokenSample.DEFAULT_SEPARATOR_CHARS + ", en la cual no se plantea ni siquiera \"" + TokenSample.DEFAULT_SEPARATOR_CHARS + "esperar un mejor gobierno" + TokenSample.DEFAULT_SEPARATOR_CHARS + "\"" + TokenSample.DEFAULT_SEPARATOR_CHARS + "." , TokenSample.DEFAULT_SEPARATOR_CHARS); TokenSample predicted = stream.read(); Assert.assertEquals(expected1, predicted); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000161 14135770370 032665 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluStreamTest.j0100664 0001750 0001750 00000004074 14135770370 034176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluStreamTest { @Test public void testParseTwoSentences() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "de-ud-train-sample.conllu"); try (ObjectStream stream = new ConlluStream(streamFactory)) { ConlluSentence sent1 = stream.read(); Assert.assertEquals("train-s21", sent1.getSentenceIdComment()); Assert.assertEquals("Fachlich kompetent, sehr gute Beratung und ein freundliches Team.", sent1.getTextComment()); Assert.assertEquals(11, sent1.getWordLines().size()); ConlluSentence sent2 = stream.read(); Assert.assertEquals("train-s22", sent2.getSentenceIdComment()); Assert.assertEquals( "Beiden Zahnärzten verdanke ich einen neuen Biss und dadurch endlich keine Rückenschmerzen mehr.", sent2.getTextComment()); Assert.assertEquals(14, sent2.getWordLines().size()); Assert.assertNull("Stream must be exhausted", stream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000174 14135770370 032671 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluLemmaSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluLemmaSampleS0100664 0001750 0001750 00000003336 14135770370 034173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluLemmaSampleStreamTest { @Test public void testParseSpanishS300() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "es-ud-sample.conllu"); try (ObjectStream stream = new ConlluLemmaSampleStream( new ConlluStream(streamFactory), ConlluTagset.U)) { LemmaSample predicted = stream.read(); System.out.println(predicted); Assert.assertEquals("digám+tú+él", predicted.getLemmas()[0]); Assert.assertEquals("la", predicted.getTokens()[3]); Assert.assertEquals("el", predicted.getLemmas()[3]); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000172 14135770370 032667 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluPOSSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluPOSSampleStr0100664 0001750 0001750 00000006763 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluPOSSampleStreamTest { @Test public void testParseContraction() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "pt_br-ud-sample.conllu"); try (ObjectStream stream = new ConlluPOSSampleStream( new ConlluStream(streamFactory), ConlluTagset.U)) { POSSample expected = POSSample.parse("Numa_ADP+DET reunião_NOUN entre_ADP " + "representantes_NOUN da_ADP+DET Secretaria_PROPN da_ADP+DET Criança_PROPN do_ADP+DET " + "DF_PROPN ea_CCONJ juíza_NOUN da_ADP+DET Vara_PROPN de_ADP Execuções_PROPN de_ADP " + "Medidas_PROPN Socioeducativas_PROPN ,_PUNCT Lavínia_PROPN Tupi_PROPN Vieira_PROPN " + "Fonseca_PROPN ,_PUNCT ficou_VERB acordado_ADJ que_CCONJ dos_ADP+DET 25_NUM " + "internos_NOUN ,_PUNCT 12_NUM serão_AUX internados_VERB na_ADP+DET Unidade_PROPN " + "de_ADP Planaltina_PROPN e_CCONJ os_DET outros_DET 13_NUM devem_AUX retornar_VERB " + "para_ADP a_DET Unidade_PROPN do_ADP+DET Recanto_NOUN das_ADP+DET Emas_PROPN ,_PUNCT " + "antigo_ADJ Ciago_PROPN ._PUNCT"); POSSample predicted = stream.read(); Assert.assertEquals(expected, predicted); } } @Test public void testParseSpanishS300() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "es-ud-sample.conllu"); try (ObjectStream stream = new ConlluPOSSampleStream(new ConlluStream(streamFactory), ConlluTagset.U)) { POSSample expected1 = POSSample.parse( "Digámoslo_VERB+PRON+PRON claramente_ADV ,_PUNCT la_DET insurgencia_NOUN se_PRON " + "ha_AUX pronunciado_VERB mucho_PRON más_ADV claramente_ADV respecto_NOUN " + "al_ADP+DET tema_NOUN de_ADP la_DET paz_NOUN que_CCONJ el_DET Estado_NOUN ,_PUNCT " + "como_SCONJ lo_PRON demuestra_VERB el_DET fragmento_NOUN que_SCONJ Bermúdez_PROPN " + "cita_VERB de_ADP la_DET respuesta_NOUN de_ADP \"_PUNCT Gabino_PROPN \"_PUNCT " + "a_ADP Piedad_PROPN Córdoba_PROPN ,_PUNCT en_ADP la_DET cual_PRON no_ADV se_PRON " + "plantea_VERB ni_CCONJ siquiera_ADV \"_PUNCT esperar_VERB un_DET mejor_ADJ " + "gobierno_NOUN \"_PUNCT ._PUNCT"); POSSample predicted = stream.read(); Assert.assertEquals(expected1, predicted); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000163 14135770370 032667 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluWordLineTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluWordLineTest0100664 0001750 0001750 00000003252 14135770370 034233 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; public class ConlluWordLineTest { @Test public void testParseLine() throws InvalidFormatException { ConlluWordLine line = new ConlluWordLine( "12\tHänden\tHand\tNOUN\tNN\tCase=Dat|Number=Plur\t5\tnmod\t_\t_"); Assert.assertEquals("12", line.getId()); Assert.assertEquals("Händen", line.getForm()); Assert.assertEquals("Hand", line.getLemma()); Assert.assertEquals("NOUN", line.getPosTag(ConlluTagset.U)); Assert.assertEquals("NN", line.getPosTag(ConlluTagset.X)); Assert.assertEquals("Case=Dat|Number=Plur", line.getFeats()); Assert.assertEquals("5", line.getHead()); Assert.assertEquals("nmod", line.getDeprel()); Assert.assertEquals("_", line.getDeps()); Assert.assertEquals("_", line.getMisc()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000177 14135770370 032674 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/conllu/ConlluSentenceSamp0100664 0001750 0001750 00000005117 14135770370 034237 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class ConlluSentenceSampleStreamTest { @Test public void testParseTwoSentences() throws IOException { InputStreamFactory streamFactory = new ResourceAsStreamFactory(ConlluStreamTest.class, "de-ud-train-sample.conllu"); try (ObjectStream stream = new ConlluSentenceSampleStream(new ConlluStream(streamFactory), 1)) { SentenceSample sample1 = stream.read(); Assert.assertEquals("Fachlich kompetent, sehr gute Beratung und ein freundliches Team.", sample1.getDocument()); Assert.assertEquals(new Span(0, 65), sample1.getSentences()[0]); SentenceSample sample2 = stream.read(); Assert.assertEquals("Beiden Zahnärzten verdanke ich einen neuen Biss und dadurch " + "endlich keine Rückenschmerzen mehr.", sample2.getDocument()); Assert.assertEquals(new Span(0, 95), sample2.getSentences()[0]); Assert.assertNull("Stream must be exhausted", stream.read()); } try (ObjectStream stream = new ConlluSentenceSampleStream(new ConlluStream(streamFactory), 3)) { SentenceSample sample = stream.read(); Assert.assertEquals("Fachlich kompetent, sehr gute Beratung und ein freundliches Team." + " Beiden Zahnärzten verdanke ich einen neuen Biss und dadurch endlich keine " + "Rückenschmerzen mehr.", sample.getDocument()); Assert.assertNull("Stream must be exhausted", stream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_frenchtre0100644 0000000 0000000 00000000205 14135770370 032727 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/frenchtreebank/ConstitParseSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/frenchtreebank/ConstitPar0100664 0001750 0001750 00000006272 14135770370 034253 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.frenchtreebank; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.parser.Parse; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; public class ConstitParseSampleStreamTest { private String[] sample1Tokens = new String[]{ "L'", "autonomie", "de", "la", "Bundesbank", ",", "la", "politique", "de", "stabilité", "qu'", "elle", "a", "fait", "prévaloir", "(", "avec", "moins", "de", "succès", "et", "de", "sévérité", "qu'", "on", "ne", "le", "dit", ",", "mais", "tout", "est", "relatif", ")", ",", "est", "une", "pièce", "essentielle", "de", "la", "division", "des", "pouvoirs", "en", "Allemagne", "." }; /** * Reads sample1.xml into a byte array. * * @return byte array containing sample1.xml. */ private static byte[] getSample1() throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; try (InputStream sampleIn = ConstitParseSampleStreamTest.class.getResourceAsStream("sample1.xml")) { while ((length = sampleIn.read(buffer)) > 0) { out.write(buffer, 0, length); } } return out.toByteArray(); } @Test public void testThereIsExactlyOneSent() throws IOException { try (ObjectStream samples = new ConstitParseSampleStream(ObjectStreamUtils.createObjectStream(getSample1()))) { Assert.assertNotNull(samples.read()); Assert.assertNull(samples.read()); Assert.assertNull(samples.read()); } } @Test public void testTokensAreCorrect() throws IOException { try (ObjectStream samples = new ConstitParseSampleStream(ObjectStreamUtils.createObjectStream(getSample1()))) { Parse p = samples.read(); Parse[] tagNodes = p.getTagNodes(); String[] tokens = new String[tagNodes.length]; for (int ti = 0; ti < tagNodes.length; ti++) { tokens[ti] = tagNodes[ti].getCoveredText(); } Assert.assertArrayEquals(sample1Tokens, tokens); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ResourceA0100644 0000000 0000000 00000000161 14135770370 032640 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ResourceAsStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ResourceAsStreamFactory.j0100664 0001750 0001750 00000002616 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.InputStream; import java.util.Objects; import opennlp.tools.util.InputStreamFactory; public class ResourceAsStreamFactory implements InputStreamFactory { private Class clazz; private String name; public ResourceAsStreamFactory(Class clazz, String name) { this.clazz = Objects.requireNonNull(clazz, "callz must not be null"); this.name = Objects.requireNonNull(name, "name must not be null"); } @Override public InputStream createInputStream() throws IOException { return clazz.getResourceAsStream(name); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_muc_Docum0100644 0000000 0000000 00000000170 14135770370 032663 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/muc/DocumentSplitterStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/muc/DocumentSplitterStrea0100664 0001750 0001750 00000003522 14135770370 034267 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; public class DocumentSplitterStreamTest { @Test public void testSplitTwoDocuments() throws IOException { StringBuilder docsString = new StringBuilder(); for (int i = 0; i < 2; i++) { docsString.append("\n"); docsString.append("test document #").append(i).append("\n"); docsString.append("\n"); } try (ObjectStream docs = new DocumentSplitterStream( ObjectStreamUtils.createObjectStream(docsString.toString()))) { String doc1 = docs.read(); Assert.assertEquals(docsString.length() / 2, doc1.length() + 1); Assert.assertTrue(doc1.contains("#0")); String doc2 = docs.read(); Assert.assertEquals(docsString.length() / 2, doc2.length() + 1); Assert.assertTrue(doc2.contains("#1")); Assert.assertNull(docs.read()); Assert.assertNull(docs.read()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/muc/SgmlParserTest.java0100664 0001750 0001750 00000002477 14135770370 033632 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; import org.junit.Test; public class SgmlParserTest { @Test public void testParse1() throws IOException { try (Reader in = new InputStreamReader( SgmlParserTest.class.getResourceAsStream("parsertest1.sgml"), StandardCharsets.UTF_8)) { SgmlParser parser = new SgmlParser(); parser.parse(in, new SgmlParser.ContentHandler() { }); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_ConllXPOS0100644 0000000 0000000 00000000163 14135770370 032533 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ConllXPOSSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/ConllXPOSSampleStreamTest0100664 0001750 0001750 00000011122 14135770370 034131 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Test; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class ConllXPOSSampleStreamTest { @Test public void testParsingSample() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(ConllXPOSSampleStreamTest.class, "/opennlp/tools/formats/conllx.sample"); try (ObjectStream sampleStream = new ConllXPOSSampleStream(in, StandardCharsets.UTF_8)) { POSSample a = sampleStream.read(); String[] aSentence = a.getSentence(); String[] aTags = a.getTags(); assertEquals(22, aSentence.length); assertEquals(22, aTags.length); assertEquals("To", aSentence[0]); assertEquals("AC", aTags[0]); assertEquals("kendte", aSentence[1]); assertEquals("AN", aTags[1]); assertEquals("russiske", aSentence[2]); assertEquals("AN", aTags[2]); assertEquals("historikere", aSentence[3]); assertEquals("NC", aTags[3]); assertEquals("Andronik", aSentence[4]); assertEquals("NP", aTags[4]); assertEquals("Andronik", aSentence[5]); assertEquals("NP", aTags[5]); assertEquals("og", aSentence[6]); assertEquals("CC", aTags[6]); assertEquals("Igor", aSentence[7]); assertEquals("NP", aTags[7]); assertEquals("Klamkin", aSentence[8]); assertEquals("NP", aTags[8]); assertEquals("tror", aSentence[9]); assertEquals("VA", aTags[9]); assertEquals("ikke", aSentence[10]); assertEquals("RG", aTags[10]); assertEquals(",", aSentence[11]); assertEquals("XP", aTags[11]); assertEquals("at", aSentence[12]); assertEquals("CS", aTags[12]); assertEquals("Rusland", aSentence[13]); assertEquals("NP", aTags[13]); assertEquals("kan", aSentence[14]); assertEquals("VA", aTags[14]); assertEquals("udvikles", aSentence[15]); assertEquals("VA", aTags[15]); assertEquals("uden", aSentence[16]); assertEquals("SP", aTags[16]); assertEquals("en", aSentence[17]); assertEquals("PI", aTags[17]); assertEquals("\"", aSentence[18]); assertEquals("XP", aTags[18]); assertEquals("jernnæve", aSentence[19]); assertEquals("NC", aTags[19]); assertEquals("\"", aSentence[20]); assertEquals("XP", aTags[20]); assertEquals(".", aSentence[21]); assertEquals("XP", aTags[21]); POSSample b = sampleStream.read(); String[] bSentence = b.getSentence(); String[] bTags = b.getTags(); assertEquals(12, bSentence.length); assertEquals(12, bTags.length); assertEquals("De", bSentence[0]); assertEquals("PP", bTags[0]); assertEquals("hævder", bSentence[1]); assertEquals("VA", bTags[1]); assertEquals(",", bSentence[2]); assertEquals("XP", bTags[2]); assertEquals("at", bSentence[3]); assertEquals("CS", bTags[3]); assertEquals("Ruslands", bSentence[4]); assertEquals("NP", bTags[4]); assertEquals("vej", bSentence[5]); assertEquals("NC", bTags[5]); assertEquals("til", bSentence[6]); assertEquals("SP", bTags[6]); assertEquals("demokrati", bSentence[7]); assertEquals("NC", bTags[7]); assertEquals("går", bSentence[8]); assertEquals("VA", bTags[8]); assertEquals("gennem", bSentence[9]); assertEquals("SP", bTags[9]); assertEquals("diktatur", bSentence[10]); assertEquals("NC", bTags[10]); assertEquals(".", bSentence[11]); assertEquals("XP", bTags[11]); assertNull(sampleStream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_Conll03Na0100644 0000000 0000000 00000000165 14135770370 032445 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/Conll03NameSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/Conll03NameSampleStreamTe0100664 0001750 0001750 00000007307 14135770370 034026 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.Conll03NameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * Test for the {@link Conll03NameSampleStream} class. */ public class Conll03NameSampleStreamTest { private static final String ENGLISH_SAMPLE = "conll2003-en.sample"; private static final String GERMAN_SAMPLE = "conll2003-de.sample"; private static ObjectStream openData(LANGUAGE lang, String name) throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(Conll03NameSampleStreamTest.class, "/opennlp/tools/formats/" + name); return new Conll03NameSampleStream(lang, in, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); } @Test public void testParsingEnglishSample() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.EN, ENGLISH_SAMPLE); NameSample personName = sampleStream.read(); Assert.assertNotNull(personName); Assert.assertEquals(9, personName.getSentence().length); Assert.assertEquals(0, personName.getNames().length); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); personName = sampleStream.read(); Assert.assertNotNull(personName); Assert.assertEquals(2, personName.getSentence().length); Assert.assertEquals(1, personName.getNames().length); Assert.assertEquals(false, personName.isClearAdaptiveDataSet()); Span nameSpan = personName.getNames()[0]; Assert.assertEquals(0, nameSpan.getStart()); Assert.assertEquals(2, nameSpan.getEnd()); Assert.assertNull(sampleStream.read()); } @Test(expected = IOException.class) public void testParsingEnglishSampleWithGermanAsLanguage() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.DE, ENGLISH_SAMPLE); sampleStream.read(); } @Test(expected = IOException.class) public void testParsingGermanSampleWithEnglishAsLanguage() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.EN, GERMAN_SAMPLE); sampleStream.read(); } @Test public void testParsingGermanSample() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.DE, GERMAN_SAMPLE); NameSample personName = sampleStream.read(); Assert.assertNotNull(personName); Assert.assertEquals(5, personName.getSentence().length); Assert.assertEquals(0, personName.getNames().length); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); } @Test public void testReset() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.DE, GERMAN_SAMPLE); NameSample sample = sampleStream.read(); sampleStream.reset(); Assert.assertEquals(sample, sampleStream.read()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000211 14135770370 032754 xustar000000000 0000000 137 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankDocumentTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000005177 14135770370 034254 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.Span; public class IrishSentenceBankDocumentTest { @Test public void testParsingSimpleDoc() throws IOException { try (InputStream irishSBXmlIn = IrishSentenceBankDocumentTest.class.getResourceAsStream("irishsentencebank-sample.xml")) { IrishSentenceBankDocument doc = IrishSentenceBankDocument.parse(irishSBXmlIn); List sents = doc.getSentences(); Assert.assertEquals(2, sents.size()); IrishSentenceBankDocument.IrishSentenceBankSentence sent1 = sents.get(0); IrishSentenceBankDocument.IrishSentenceBankSentence sent2 = sents.get(1); Assert.assertEquals("A Dhia, tá mé ag iompar clainne!", sent1.getOriginal()); IrishSentenceBankDocument.IrishSentenceBankFlex[] flex = sent1.getFlex(); Assert.assertEquals(7, flex.length); Assert.assertEquals("A", flex[0].getSurface()); Assert.assertArrayEquals(new String[]{"a"}, flex[0].getFlex()); IrishSentenceBankDocument.IrishSentenceBankFlex[] flex2 = sent2.getFlex(); Assert.assertEquals("ón", flex2[4].getSurface()); Assert.assertArrayEquals(new String[]{"ó", "an"}, flex2[4].getFlex()); Assert.assertEquals("Excuse me, are you from the stone age?", sent2.getTranslation()); TokenSample ts = sent1.getTokenSample(); Span[] spans = ts.getTokenSpans(); Assert.assertEquals(9, spans.length); Assert.assertEquals(24, spans[7].getStart()); Assert.assertEquals(31, spans[7].getEnd()); Assert.assertEquals("clainne", ts.getText().substring(spans[7].getStart(), spans[7].getEnd())); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_leipzig_L0100644 0000000 0000000 00000000201 14135770370 032661 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/leipzig/LeipzigLanguageSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/leipzig/LeipzigLanguageSa0100664 0001750 0001750 00000004077 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.leipzig; import java.io.File; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; /** * Tests for the {@link LeipzigLanguageSampleStream} class. */ public class LeipzigLanguageSampleStreamTest { private static String testDataPath = LeipzigLanguageSampleStreamTest.class .getClassLoader().getResource("opennlp/tools/formats/leipzig/samples").getPath(); @Test public void testReadSentenceFiles() { int samplesPerLanguage = 2; int sentencesPerSample = 1; try { LeipzigLanguageSampleStream stream = new LeipzigLanguageSampleStream(new File(testDataPath), sentencesPerSample, samplesPerLanguage); int count = 0; while (stream.read() != null) count++; Assert.assertEquals(4, count); } catch (IOException e) { Assert.fail(); } } @Test(expected = InvalidFormatException.class) public void testNotEnoughSentences() throws IOException { int samplesPerLanguage = 2; int sentencesPerSample = 2; LeipzigLanguageSampleStream stream = new LeipzigLanguageSampleStream(new File(testDataPath), sentencesPerSample, samplesPerLanguage); while (stream.read() != null); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_EvalitaNa0100644 0000000 0000000 00000000165 14135770370 032620 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/EvalitaNameSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/EvalitaNameSampleStreamTe0100664 0001750 0001750 00000005132 14135770370 034173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.EvalitaNameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * Note: * Sample training data must be UTF-8 encoded and uncompressed! */ public class EvalitaNameSampleStreamTest { private static ObjectStream openData(LANGUAGE lang, String name) throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(EvalitaNameSampleStreamTest.class, "/opennlp/tools/formats/" + name); return new EvalitaNameSampleStream(lang, in, EvalitaNameSampleStream.GENERATE_PERSON_ENTITIES); } @Test public void testParsingItalianSample() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.IT, "evalita-ner-it.sample"); NameSample personName = sampleStream.read(); Assert.assertNotNull(personName); Assert.assertEquals(11, personName.getSentence().length); Assert.assertEquals(1, personName.getNames().length); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); Span nameSpan = personName.getNames()[0]; Assert.assertEquals(8, nameSpan.getStart()); Assert.assertEquals(10, nameSpan.getEnd()); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); Assert.assertEquals(0, sampleStream.read().getNames().length); Assert.assertNull(sampleStream.read()); } @Test public void testReset() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.IT, "evalita-ner-it.sample"); NameSample sample = sampleStream.read(); sampleStream.reset(); Assert.assertEquals(sample, sampleStream.read()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000173 14135770370 032537 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/nkjp/NKJPSegmentationDocumentTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/nkjp/NKJPSegmentationDocu0100664 0001750 0001750 00000003346 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.IOException; import java.io.InputStream; import org.junit.Test; import static org.junit.Assert.assertEquals; public class NKJPSegmentationDocumentTest { @Test public void testParsingSimpleDoc() throws IOException { try (InputStream nkjpSegXmlIn = NKJPSegmentationDocumentTest.class.getResourceAsStream("ann_segmentation.xml")) { NKJPSegmentationDocument doc = NKJPSegmentationDocument.parse(nkjpSegXmlIn); assertEquals(1, doc.getSegments().size()); assertEquals(7, doc.getSegments().get("segm_1.1-s").size()); String src = "To krótkie zdanie w drugim akapicie."; int offset = doc.getSegments().get("segm_1.1-s").get("segm_1.1-seg").offset; assertEquals(0, offset); int length = doc.getSegments().get("segm_1.1-s").get("segm_1.1-seg").length; assertEquals(2, length); assertEquals("To", src.substring(offset, length)); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000163 14135770370 032536 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/nkjp/NKJPTextDocumentTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/nkjp/NKJPTextDocumentTest0100664 0001750 0001750 00000004072 14135770370 034110 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.InputStream; import java.util.Map; import org.junit.Test; import static org.junit.Assert.assertEquals; public class NKJPTextDocumentTest { @Test public void testParsingSimpleDoc() throws Exception { try (InputStream nkjpTextXmlIn = NKJPTextDocumentTest.class.getResourceAsStream("text_structure.xml")) { NKJPTextDocument doc = NKJPTextDocument.parse(nkjpTextXmlIn); assertEquals(1, doc.getDivtypes().size()); assertEquals("article", doc.getDivtypes().get("div-1")); assertEquals(1, doc.getTexts().size()); assertEquals(1, doc.getTexts().get("text-1").size()); assertEquals(2, doc.getTexts().get("text-1").get("div-1").size()); String exp = "To krótki tekst w formacie NKJP. Zawiera dwa zdania."; assertEquals(exp, doc.getTexts().get("text-1").get("div-1").get("p-1")); } } @Test public void testGetParagraphs() throws Exception { try (InputStream nkjpTextXmlIn = NKJPTextDocumentTest.class.getResourceAsStream("text_structure.xml")) { NKJPTextDocument doc = NKJPTextDocument.parse(nkjpTextXmlIn); Map paras = doc.getParagraphs(); assertEquals("To krótkie zdanie w drugim akapicie.", paras.get("ab-1")); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_Directory0100644 0000000 0000000 00000000163 14135770370 032716 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/DirectorySampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/DirectorySampleStreamTest0100664 0001750 0001750 00000011317 14135770370 034322 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; public class DirectorySampleStreamTest { @Rule public TemporaryFolder tempDirectory = new TemporaryFolder(); @Test public void directoryTest() throws IOException { FileFilter filter = new TempFileNameFilter(); List files = new ArrayList<>(); File temp1 = tempDirectory.newFile(); files.add(temp1); File temp2 = tempDirectory.newFile(); files.add(temp2); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.getRoot(), filter, false); File file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertNull(file); stream.close(); } @Test public void directoryNullFilterTest() throws IOException { List files = new ArrayList<>(); File temp1 = tempDirectory.newFile(); files.add(temp1); File temp2 = tempDirectory.newFile(); files.add(temp2); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.getRoot(), null, false); File file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertNull(file); stream.close(); } @Test public void recursiveDirectoryTest() throws IOException { FileFilter filter = new TempFileNameFilter(); List files = new ArrayList<>(); File temp1 = tempDirectory.newFile(); files.add(temp1); File tempSubDirectory = tempDirectory.newFolder("sub1"); File temp2 = File.createTempFile("sub1", ".tmp", tempSubDirectory); files.add(temp2); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.getRoot(), filter, true); File file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertNull(file); stream.close(); } @Test public void resetDirectoryTest() throws IOException { FileFilter filter = new TempFileNameFilter(); List files = new ArrayList<>(); File temp1 = tempDirectory.newFile(); files.add(temp1); File temp2 = tempDirectory.newFile(); files.add(temp2); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.getRoot(), filter, false); File file = stream.read(); Assert.assertTrue(files.contains(file)); stream.reset(); file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertTrue(files.contains(file)); file = stream.read(); Assert.assertNull(file); stream.close(); } @Test public void emptyDirectoryTest() throws IOException { FileFilter filter = new TempFileNameFilter(); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.getRoot(), filter, false); Assert.assertNull(stream.read()); stream.close(); } @Test(expected = IllegalArgumentException.class) public void invalidDirectoryTest() throws IOException { FileFilter filter = new TempFileNameFilter(); DirectorySampleStream stream = new DirectorySampleStream(tempDirectory.newFile(), filter, false); Assert.assertNull(stream.read()); stream.close(); } class TempFileNameFilter implements FileFilter { @Override public boolean accept(File file) { return file.isDirectory() || file.getName().endsWith(".tmp"); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_formats_Conll02Na0100644 0000000 0000000 00000000165 14135770370 032444 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/Conll02NameSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/formats/Conll02NameSampleStreamTe0100664 0001750 0001750 00000006070 14135770370 034021 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.Conll02NameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * Note: * Sample training data must be UTF-8 encoded and uncompressed! */ public class Conll02NameSampleStreamTest { private static ObjectStream openData(LANGUAGE lang, String name) throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(Conll02NameSampleStreamTest.class, "/opennlp/tools/formats/" + name); return new Conll02NameSampleStream(lang, in, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); } @Test public void testParsingSpanishSample() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.SPA, "conll2002-es.sample"); NameSample personName = sampleStream.read(); Assert.assertNotNull(personName); Assert.assertEquals(5, personName.getSentence().length); Assert.assertEquals(1, personName.getNames().length); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); Span nameSpan = personName.getNames()[0]; Assert.assertEquals(0, nameSpan.getStart()); Assert.assertEquals(4, nameSpan.getEnd()); Assert.assertEquals(true, personName.isClearAdaptiveDataSet()); Assert.assertEquals(0, sampleStream.read().getNames().length); Assert.assertNull(sampleStream.read()); } @Test public void testParsingDutchSample() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.NLD, "conll2002-nl.sample"); NameSample personName = sampleStream.read(); Assert.assertEquals(0, personName.getNames().length); Assert.assertTrue(personName.isClearAdaptiveDataSet()); personName = sampleStream.read(); Assert.assertFalse(personName.isClearAdaptiveDataSet()); Assert.assertNull(sampleStream.read()); } @Test public void testReset() throws IOException { ObjectStream sampleStream = openData(LANGUAGE.NLD, "conll2002-nl.sample"); NameSample sample = sampleStream.read(); sampleStream.reset(); Assert.assertEquals(sample, sampleStream.read()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Whitespa0100644 0000000 0000000 00000000164 14135770370 032714 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/WhitespaceTokenStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/WhitespaceTokenStreamTes0100664 0001750 0001750 00000006075 14135770370 034307 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.Span; public class WhitespaceTokenStreamTest { /** * Tests for the {@link WhitespaceTokenStream} class. */ @Test public void testWhitespace() throws IOException { String text = " a b c d e f "; ObjectStream sampleStream = new TokenSampleStream( ObjectStreamUtils.createObjectStream(text)); WhitespaceTokenStream tokenStream = new WhitespaceTokenStream(sampleStream); String read = tokenStream.read(); Assert.assertEquals("a b c d e f", read); } @Test public void testSeparatedString() throws IOException { String text = " a bc de "; ObjectStream sampleStream = new TokenSampleStream( ObjectStreamUtils.createObjectStream(text)); WhitespaceTokenStream tokenStream = new WhitespaceTokenStream(sampleStream); String read = tokenStream.read(); Assert.assertEquals("a b c d e", read); } /** * Tests for the {@link TokenizerStream} correctly tokenizes whitespace separated tokens. */ @Test public void testTokenizerStream() throws IOException { String text = " a b c d e "; WhitespaceTokenizer instance = WhitespaceTokenizer.INSTANCE; TokenizerStream stream = new TokenizerStream(instance, ObjectStreamUtils.createObjectStream(text)); TokenSample read = stream.read(); Span[] tokenSpans = read.getTokenSpans(); Assert.assertEquals(5, tokenSpans.length); Assert.assertEquals("a", tokenSpans[0].getCoveredText(read.getText())); Assert.assertEquals(new Span(1,2), tokenSpans[0]); Assert.assertEquals("b", tokenSpans[1].getCoveredText(read.getText())); Assert.assertEquals(new Span(3,4), tokenSpans[1]); Assert.assertEquals("c", tokenSpans[2].getCoveredText(read.getText())); Assert.assertEquals(new Span(5,6), tokenSpans[2]); Assert.assertEquals("d", tokenSpans[3].getCoveredText(read.getText())); Assert.assertEquals(new Span(8,9), tokenSpans[3]); Assert.assertEquals("e", tokenSpans[4].getCoveredText(read.getText())); Assert.assertEquals(new Span(13,14), tokenSpans[4]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Tokenize0100644 0000000 0000000 00000000161 14135770370 032715 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerEvaluatorTest.j0100664 0001750 0001750 00000005072 14135770370 034303 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.tokenizer.TokenEvaluationErrorListener; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.Span; public class TokenizerEvaluatorTest { @Test public void testPositive() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); TokenizerEvaluationMonitor listener = new TokenEvaluationErrorListener(stream); TokenizerEvaluator eval = new TokenizerEvaluator(new DummyTokenizer( TokenSampleTest.createGoldSample()), listener); eval.evaluateSample(TokenSampleTest.createGoldSample()); Assert.assertEquals(1.0, eval.getFMeasure().getFMeasure(), 0.0); Assert.assertEquals(0, stream.toString().length()); } @Test public void testNegative() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); TokenizerEvaluationMonitor listener = new TokenEvaluationErrorListener( stream); TokenizerEvaluator eval = new TokenizerEvaluator(new DummyTokenizer( TokenSampleTest.createGoldSample()), listener); eval.evaluateSample(TokenSampleTest.createPredSample()); Assert.assertEquals(.5d, eval.getFMeasure().getFMeasure(), .1d); Assert.assertNotSame(0, stream.toString().length()); } /** * a dummy tokenizer that always return something expected */ class DummyTokenizer implements Tokenizer { private TokenSample sample; public DummyTokenizer(TokenSample sample) { this.sample = sample; } public String[] tokenize(String s) { return null; } public Span[] tokenizePos(String s) { return this.sample.getTokenSpans(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_TokenSam0100644 0000000 0000000 00000000160 14135770370 032645 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleStreamTest.ja0100664 0001750 0001750 00000010031 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.Span; /** * Tests for the {@link TokenSampleStream} class. */ public class TokenSampleStreamTest { /** * Tests if the {@link TokenSample} correctly tokenizes tokens which * are separated by a whitespace. * */ @Test public void testParsingWhitespaceSeparatedTokens() throws IOException { String sampleTokens = "Slave to the wage"; ObjectStream sampleTokenStream = new TokenSampleStream( ObjectStreamUtils.createObjectStream(sampleTokens)); TokenSample tokenSample = sampleTokenStream.read(); Span[] tokenSpans = tokenSample.getTokenSpans(); Assert.assertEquals(4, tokenSpans.length); Assert.assertEquals("Slave", tokenSpans[0].getCoveredText(sampleTokens)); Assert.assertEquals("to", tokenSpans[1].getCoveredText(sampleTokens)); Assert.assertEquals("the", tokenSpans[2].getCoveredText(sampleTokens)); Assert.assertEquals("wage", tokenSpans[3].getCoveredText(sampleTokens)); } /** * Tests if the {@link TokenSample} correctly tokenizes tokens which * are separated by the split chars. * */ @Test public void testParsingSeparatedString() throws IOException { String sampleTokens = "abcd"; ObjectStream sampleTokenStream = new TokenSampleStream( ObjectStreamUtils.createObjectStream(sampleTokens)); TokenSample tokenSample = sampleTokenStream.read(); Span[] tokenSpans = tokenSample.getTokenSpans(); Assert.assertEquals(4, tokenSpans.length); Assert.assertEquals("a", tokenSpans[0].getCoveredText(tokenSample.getText())); Assert.assertEquals(new Span(0,1), tokenSpans[0]); Assert.assertEquals("b", tokenSpans[1].getCoveredText(tokenSample.getText())); Assert.assertEquals(new Span(1,2), tokenSpans[1]); Assert.assertEquals("c", tokenSpans[2].getCoveredText(tokenSample.getText())); Assert.assertEquals(new Span(2,3), tokenSpans[2]); Assert.assertEquals("d", tokenSpans[3].getCoveredText(tokenSample.getText())); Assert.assertEquals(new Span(3,4), tokenSpans[3]); } /** * Tests if the {@link TokenSample} correctly tokenizes tokens which * are separated by whitespace and by the split chars. * */ @Test public void testParsingWhitespaceAndSeparatedString() throws IOException { String sampleTokens = "a bc de"; try (ObjectStream sampleTokenStream = new TokenSampleStream( ObjectStreamUtils.createObjectStream(sampleTokens))) { TokenSample tokenSample = sampleTokenStream.read(); Span[] tokenSpans = tokenSample.getTokenSpans(); Assert.assertEquals(5, tokenSpans.length); Assert.assertEquals("a", tokenSpans[0].getCoveredText(tokenSample.getText())); Assert.assertEquals("b", tokenSpans[1].getCoveredText(tokenSample.getText())); Assert.assertEquals("c", tokenSpans[2].getCoveredText(tokenSample.getText())); Assert.assertEquals("d", tokenSpans[3].getCoveredText(tokenSample.getText())); Assert.assertEquals("e", tokenSpans[4].getCoveredText(tokenSample.getText())); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_TokSpanE0100644 0000000 0000000 00000000161 14135770370 032611 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokSpanEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokSpanEventStreamTest.j0100664 0001750 0001750 00000004044 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; /** * Tests for the {@link TokSpanEventStream} class. */ public class TokSpanEventStreamTest { /** * Tests the event stream for correctly generated outcomes. */ @Test public void testEventOutcomes() throws IOException { ObjectStream sentenceStream = ObjectStreamUtils.createObjectStream("\"out.\""); ObjectStream tokenSampleStream = new TokenSampleStream(sentenceStream); try (ObjectStream eventStream = new TokSpanEventStream(tokenSampleStream, false)) { Assert.assertEquals(TokenizerME.SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(TokenizerME.NO_SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(TokenizerME.NO_SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(TokenizerME.SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(TokenizerME.SPLIT, eventStream.read().getOutcome()); Assert.assertNull(eventStream.read()); Assert.assertNull(eventStream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Tokenize0100644 0000000 0000000 00000000157 14135770370 032722 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerFactoryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerFactoryTest.jav0100664 0001750 0001750 00000021131 14135770370 034271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; import org.junit.Assert; import org.junit.Test; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.tokenize.DummyTokenizerFactory.DummyContextGenerator; import opennlp.tools.tokenize.DummyTokenizerFactory.DummyDictionary; import opennlp.tools.tokenize.lang.Factory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link TokenizerFactory} class. */ public class TokenizerFactoryTest { private static ObjectStream createSampleStream() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( TokenizerFactoryTest.class, "/opennlp/tools/tokenize/token.train"); return new TokenSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } private static TokenizerModel train(TokenizerFactory factory) throws IOException { return TokenizerME.train(createSampleStream(), factory, TrainingParameters.defaultParams()); } private static Dictionary loadAbbDictionary() throws IOException { InputStream in = TokenizerFactoryTest.class.getClassLoader() .getResourceAsStream("opennlp/tools/sentdetect/abb.xml"); return new Dictionary(in); } @Test public void testDefault() throws IOException { Dictionary dic = loadAbbDictionary(); final String lang = "spa"; TokenizerModel model = train(new TokenizerFactory(lang, dic, false, null)); TokenizerFactory factory = model.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() != null); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(Factory.DEFAULT_ALPHANUMERIC, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertFalse(factory.isUseAlphaNumericOptmization()); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); TokenizerModel fromSerialized = new TokenizerModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() != null); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(Factory.DEFAULT_ALPHANUMERIC, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertFalse(factory.isUseAlphaNumericOptmization()); } @Test public void testNullDict() throws IOException { Dictionary dic = null; final String lang = "spa"; TokenizerModel model = train(new TokenizerFactory(lang, dic, false, null)); TokenizerFactory factory = model.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(Factory.DEFAULT_ALPHANUMERIC, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertFalse(factory.isUseAlphaNumericOptmization()); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); TokenizerModel fromSerialized = new TokenizerModel(in); factory = fromSerialized.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(Factory.DEFAULT_ALPHANUMERIC, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertFalse(factory.isUseAlphaNumericOptmization()); } @Test public void testCustomPatternAndAlphaOpt() throws IOException { Dictionary dic = null; final String lang = "spa"; String pattern = "^[0-9A-Za-z]+$"; TokenizerModel model = train(new TokenizerFactory(lang, dic, true, Pattern.compile(pattern))); TokenizerFactory factory = model.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(pattern, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertTrue(factory.isUseAlphaNumericOptmization()); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); TokenizerModel fromSerialized = new TokenizerModel(in); factory = fromSerialized.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultTokenContextGenerator); Assert.assertEquals(pattern, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertTrue(factory.isUseAlphaNumericOptmization()); } @Test public void testDummyFactory() throws IOException { Dictionary dic = loadAbbDictionary(); final String lang = "spa"; String pattern = "^[0-9A-Za-z]+$"; TokenizerModel model = train(new DummyTokenizerFactory(lang, dic, true, Pattern.compile(pattern))); TokenizerFactory factory = model.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getContextGenerator() instanceof DummyContextGenerator); Assert.assertEquals(pattern, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertTrue(factory.isUseAlphaNumericOptmization()); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); TokenizerModel fromSerialized = new TokenizerModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getContextGenerator() instanceof DummyContextGenerator); Assert.assertEquals(pattern, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertEquals(lang, model.getLanguage()); Assert.assertTrue(factory.isUseAlphaNumericOptmization()); } @Test public void testCreateDummyFactory() throws IOException { Dictionary dic = loadAbbDictionary(); final String lang = "spa"; String pattern = "^[0-9A-Za-z]+$"; TokenizerFactory factory = TokenizerFactory.create( DummyTokenizerFactory.class.getCanonicalName(), lang, dic, true, Pattern.compile(pattern)); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getContextGenerator() instanceof DummyContextGenerator); Assert.assertEquals(pattern, factory.getAlphaNumericPattern().pattern()); Assert.assertEquals(lang, factory.getLanguageCode()); Assert.assertTrue(factory.isUseAlphaNumericOptmization()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java0100664 0001750 0001750 00000006360 14135770370 033333 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link TokenizerME} class. * * This test trains the tokenizer with a few sample tokens * and then predicts a token. This test checks if the * tokenizer code can be executed. * * @see TokenizerME */ public class TokenizerMETest { @Test public void testTokenizerSimpleModel() throws IOException { TokenizerModel model = TokenizerTestUtil.createSimpleMaxentTokenModel(); TokenizerME tokenizer = new TokenizerME(model); String[] tokens = tokenizer.tokenize("test,"); Assert.assertEquals(2, tokens.length); Assert.assertEquals("test", tokens[0]); Assert.assertEquals(",", tokens[1]); } @Test public void testTokenizer() throws IOException { TokenizerModel model = TokenizerTestUtil.createMaxentTokenModel(); TokenizerME tokenizer = new TokenizerME(model); String[] tokens = tokenizer.tokenize("Sounds like it's not properly thought through!"); Assert.assertEquals(9, tokens.length); Assert.assertEquals("Sounds", tokens[0]); Assert.assertEquals("like", tokens[1]); Assert.assertEquals("it", tokens[2]); Assert.assertEquals("'s", tokens[3]); Assert.assertEquals("not", tokens[4]); Assert.assertEquals("properly", tokens[5]); Assert.assertEquals("thought", tokens[6]); Assert.assertEquals("through", tokens[7]); Assert.assertEquals("!", tokens[8]); } @Test(expected = InsufficientTrainingDataException.class) public void testInsufficientData() throws IOException { InputStreamFactory trainDataIn = new ResourceAsStreamFactory( TokenizerModel.class, "/opennlp/tools/tokenize/token-insufficient.train"); ObjectStream samples = new TokenSampleStream( new PlainTextByLineStream(trainDataIn, StandardCharsets.UTF_8)); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 5); TokenizerME.train(samples, TokenizerFactory.create(null, "eng", null, true, null), mlParams); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleTest.java0100664 0001750 0001750 00000011227 14135770370 033357 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; public class TokenSampleTest { public static TokenSample createGoldSample() { return new TokenSample("A test.", new Span[] {new Span(0, 1), new Span(2, 6)}); } public static TokenSample createPredSample() { return new TokenSample("A test.", new Span[] {new Span(0, 3), new Span(2, 6)}); } public static TokenSample createPredSilverSample() { return new TokenSample("A t st.", new Span[] {new Span(0, 1), new Span(2, 6)}); } @Test public void testRetrievingContent() { String sentence = "A test"; TokenSample sample = new TokenSample(sentence, new Span[] {new Span(0, 1), new Span(2, 6)}); Assert.assertEquals("A test", sample.getText()); Assert.assertEquals(new Span(0, 1), sample.getTokenSpans()[0]); Assert.assertEquals(new Span(2, 6), sample.getTokenSpans()[1]); } @Test public void testTokenSampleSerDe() throws IOException { TokenSample tokenSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(tokenSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); TokenSample deSerializedTokenSample = null; try { deSerializedTokenSample = (TokenSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedTokenSample); Assert.assertEquals(tokenSample.getText(), deSerializedTokenSample.getText()); Assert.assertArrayEquals(tokenSample.getTokenSpans(), deSerializedTokenSample.getTokenSpans()); } @Test public void testCreationWithDetokenizer() throws IOException { Detokenizer detokenizer = DictionaryDetokenizerTest.createLatinDetokenizer(); String[] tokens = new String[] { "start", "(", // move right ")", // move left "end", ".", // move left "hyphen", "-", // move both "string", "." }; TokenSample a = new TokenSample(detokenizer, tokens); Assert.assertEquals("start () end. hyphen-string.", a.getText()); Assert.assertEquals("start (" + TokenSample.DEFAULT_SEPARATOR_CHARS + ") end" + TokenSample.DEFAULT_SEPARATOR_CHARS + "." + " hyphen" + TokenSample.DEFAULT_SEPARATOR_CHARS + "-" + TokenSample.DEFAULT_SEPARATOR_CHARS + "string" + TokenSample.DEFAULT_SEPARATOR_CHARS + ".", a.toString()); Assert.assertEquals(9, a.getTokenSpans().length); Assert.assertEquals(new Span(0, 5), a.getTokenSpans()[0]); Assert.assertEquals(new Span(6, 7), a.getTokenSpans()[1]); Assert.assertEquals(new Span(7, 8), a.getTokenSpans()[2]); Assert.assertEquals(new Span(9, 12), a.getTokenSpans()[3]); Assert.assertEquals(new Span(12, 13), a.getTokenSpans()[4]); Assert.assertEquals(new Span(14, 20), a.getTokenSpans()[5]); Assert.assertEquals(new Span(20, 21), a.getTokenSpans()[6]); Assert.assertEquals(new Span(21, 27), a.getTokenSpans()[7]); Assert.assertEquals(new Span(27, 28), a.getTokenSpans()[8]); } @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Whitespa0100644 0000000 0000000 00000000162 14135770370 032712 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/WhitespaceTokenizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/WhitespaceTokenizerTest.0100664 0001750 0001750 00000004417 14135770370 034265 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link WhitespaceTokenizer} class. */ public class WhitespaceTokenizerTest { @Test public void testOneToken() { Assert.assertEquals("one", WhitespaceTokenizer.INSTANCE.tokenize("one")[0]); Assert.assertEquals("one", WhitespaceTokenizer.INSTANCE.tokenize(" one")[0]); Assert.assertEquals("one", WhitespaceTokenizer.INSTANCE.tokenize("one ")[0]); } /** * Tests if it can tokenize whitespace separated tokens. */ @Test public void testWhitespaceTokenization() { String text = "a b c d e f "; String[] tokenizedText = WhitespaceTokenizer.INSTANCE.tokenize(text); Assert.assertTrue("a".equals(tokenizedText[0])); Assert.assertTrue("b".equals(tokenizedText[1])); Assert.assertTrue("c".equals(tokenizedText[2])); Assert.assertTrue("d".equals(tokenizedText[3])); Assert.assertTrue("e".equals(tokenizedText[4])); Assert.assertTrue("f".equals(tokenizedText[5])); Assert.assertTrue(tokenizedText.length == 6); } @Test public void testTokenizationOfStringWithoutTokens() { Assert.assertEquals(0, WhitespaceTokenizer.INSTANCE.tokenize("").length); // empty Assert.assertEquals(0, WhitespaceTokenizer.INSTANCE.tokenize(" ").length); // space Assert.assertEquals(0, WhitespaceTokenizer.INSTANCE.tokenize(" ").length); // tab Assert.assertEquals(0, WhitespaceTokenizer.INSTANCE.tokenize(" ").length); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerModelTest.java0100664 0001750 0001750 00000003333 14135770370 034067 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Test; /** * Tests for the {@link TokenizerModel} class. */ public class TokenizerModelTest { @Test public void testSentenceModel() throws IOException { TokenizerModel model = TokenizerTestUtil.createSimpleMaxentTokenModel(); ByteArrayOutputStream arrayOut = new ByteArrayOutputStream(); model.serialize(arrayOut); arrayOut.close(); model = new TokenizerModel(new ByteArrayInputStream(arrayOut.toByteArray())); // TODO: check that both maxent models are equal // Also test serialization after building model from an inputstream arrayOut = new ByteArrayOutputStream(); model.serialize(arrayOut); arrayOut.close(); new TokenizerModel(new ByteArrayInputStream(arrayOut.toByteArray())); // TODO: check that both maxent models are equal } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Detokeni0100644 0000000 0000000 00000000167 14135770370 032675 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DetokenizationDictionaryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DetokenizationDictionary0100664 0001750 0001750 00000004371 14135770370 034374 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.tokenize.DetokenizationDictionary.Operation; public class DetokenizationDictionaryTest { private DetokenizationDictionary dict; @Before public void setUp() throws Exception { String[] tokens = new String[] {"\"", "(", ")", "-"}; Operation[] operations = new Operation[] {Operation.RIGHT_LEFT_MATCHING, Operation.MOVE_RIGHT, Operation.MOVE_LEFT, Operation.MOVE_BOTH}; dict = new DetokenizationDictionary(tokens, operations); } private static void testEntries(DetokenizationDictionary dict) { Assert.assertEquals(Operation.RIGHT_LEFT_MATCHING, dict.getOperation("\"")); Assert.assertEquals(Operation.MOVE_RIGHT, dict.getOperation("(")); Assert.assertEquals(Operation.MOVE_LEFT, dict.getOperation(")")); Assert.assertEquals(Operation.MOVE_BOTH, dict.getOperation("-")); } @Test public void testSimpleDict() { testEntries(dict); } @Test public void testSerialization() throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); dict.serialize(out); DetokenizationDictionary parsedDict = new DetokenizationDictionary( new ByteArrayInputStream(out.toByteArray())); // should contain the same entries like the original testEntries(parsedDict); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Detokeni0100644 0000000 0000000 00000000163 14135770370 032671 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DetokenizerEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DetokenizerEvaluatorTest0100664 0001750 0001750 00000005160 14135770370 034362 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.tokenizer.DetokenEvaluationErrorListener; import opennlp.tools.util.InvalidFormatException; public class DetokenizerEvaluatorTest { @Test public void testPositive() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); DetokenEvaluationErrorListener listener = new DetokenEvaluationErrorListener(stream); DetokenizerEvaluator eval = new DetokenizerEvaluator(new DummyDetokenizer( TokenSampleTest.createGoldSample()), listener); eval.evaluateSample(TokenSampleTest.createGoldSample()); Assert.assertEquals(1.0, eval.getFMeasure().getFMeasure(), 0.0); Assert.assertEquals(0, stream.toString().length()); } @Test public void testNegative() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); DetokenEvaluationErrorListener listener = new DetokenEvaluationErrorListener( stream); DetokenizerEvaluator eval = new DetokenizerEvaluator(new DummyDetokenizer( TokenSampleTest.createGoldSample()), listener); eval.evaluateSample(TokenSampleTest.createPredSilverSample()); Assert.assertEquals(-1.0d, eval.getFMeasure().getFMeasure(), .1d); Assert.assertNotSame(0, stream.toString().length()); } /** * a dummy tokenizer that always return something expected */ class DummyDetokenizer implements Detokenizer { private TokenSample sample; public DummyDetokenizer(TokenSample sample) { this.sample = sample; } public DetokenizationOperation[] detokenize(String[] tokens) { return null; } public String detokenize(String[] tokens, String splitMarker) { return this.sample.getText(); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java0100664 0001750 0001750 00000005651 14135770370 033751 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.CollectionObjectStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * Utility class for testing the {@link Tokenizer}. */ public class TokenizerTestUtil { static TokenizerModel createSimpleMaxentTokenModel() throws IOException { List samples = new ArrayList<>(); samples.add(new TokenSample("year", new Span[]{new Span(0, 4)})); samples.add(new TokenSample("year,", new Span[]{ new Span(0, 4), new Span(4, 5)})); samples.add(new TokenSample("it,", new Span[]{ new Span(0, 2), new Span(2, 3)})); samples.add(new TokenSample("it", new Span[]{ new Span(0, 2)})); samples.add(new TokenSample("yes", new Span[]{ new Span(0, 3)})); samples.add(new TokenSample("yes,", new Span[]{ new Span(0, 3), new Span(3, 4)})); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 0); return TokenizerME.train(new CollectionObjectStream<>(samples), TokenizerFactory.create(null, "eng", null, true, null), mlParams); } static TokenizerModel createMaxentTokenModel() throws IOException { InputStreamFactory trainDataIn = new ResourceAsStreamFactory( TokenizerModel.class, "/opennlp/tools/tokenize/token.train"); ObjectStream samples = new TokenSampleStream( new PlainTextByLineStream(trainDataIn, StandardCharsets.UTF_8)); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 0); return TokenizerME.train(samples, TokenizerFactory.create(null, "eng", null, true, null), mlParams); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_SimpleTo0100644 0000000 0000000 00000000156 14135770370 032665 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/SimpleTokenizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/SimpleTokenizerTest.java0100664 0001750 0001750 00000005521 14135770370 034261 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link SimpleTokenizer} class. */ public class SimpleTokenizerTest { // The SimpleTokenizer is thread safe private SimpleTokenizer mTokenizer = SimpleTokenizer.INSTANCE; /** * Tests if it can tokenize whitespace separated tokens. */ @Test public void testWhitespaceTokenization() { String text = "a b c d e f "; String[] tokenizedText = mTokenizer.tokenize(text); Assert.assertTrue("a".equals(tokenizedText[0])); Assert.assertTrue("b".equals(tokenizedText[1])); Assert.assertTrue("c".equals(tokenizedText[2])); Assert.assertTrue("d".equals(tokenizedText[3])); Assert.assertTrue("e".equals(tokenizedText[4])); Assert.assertTrue("f".equals(tokenizedText[5])); Assert.assertTrue(tokenizedText.length == 6); } /** * Tests if it can tokenize a word and a dot. */ @Test public void testWordDotTokenization() { String text = "a."; String[] tokenizedText = mTokenizer.tokenize(text); Assert.assertTrue("a".equals(tokenizedText[0])); Assert.assertTrue(".".equals(tokenizedText[1])); Assert.assertTrue(tokenizedText.length == 2); } /** * Tests if it can tokenize a word and numeric. */ @Test public void testWordNumericTokeniztation() { String text = "305KW"; String[] tokenizedText = mTokenizer.tokenize(text); Assert.assertTrue("305".equals(tokenizedText[0])); Assert.assertTrue("KW".equals(tokenizedText[1])); Assert.assertTrue(tokenizedText.length == 2); } @Test public void testWordWithOtherTokenization() { String text = "rebecca.sleep()"; String[] tokenizedText = mTokenizer.tokenize(text); Assert.assertTrue("rebecca".equals(tokenizedText[0])); Assert.assertTrue(".".equals(tokenizedText[1])); Assert.assertTrue("sleep".equals(tokenizedText[2])); Assert.assertTrue("(".equals(tokenizedText[3])); Assert.assertTrue(")".equals(tokenizedText[4])); Assert.assertTrue(tokenizedText.length == 5); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_DummyTok0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.ja0100664 0001750 0001750 00000007551 14135770370 034271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.model.ArtifactSerializer; public class DummyTokenizerFactory extends TokenizerFactory { private static final String DUMMY_DICT = "dummy"; private DummyDictionary dict; public DummyTokenizerFactory() { } public DummyTokenizerFactory(String languageCode, Dictionary abbreviationDictionary, boolean useAlphaNumericOptimization, Pattern alphaNumericPattern) { super(languageCode, abbreviationDictionary, useAlphaNumericOptimization, alphaNumericPattern); } @Override protected void init(String languageCode, Dictionary abbreviationDictionary, boolean useAlphaNumericOptimization, Pattern alphaNumericPattern) { super.init(languageCode, abbreviationDictionary, useAlphaNumericOptimization, alphaNumericPattern); this.dict = new DummyDictionary(abbreviationDictionary); } @Override public DummyDictionary getAbbreviationDictionary() { if (this.dict == null && artifactProvider != null) { this.dict = artifactProvider.getArtifact(DUMMY_DICT); } return this.dict; } @Override public TokenContextGenerator getContextGenerator() { return new DummyContextGenerator(getAbbreviationDictionary().asStringSet()); } @Override @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { Map serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_DICT, new DummyDictionarySerializer()); return serializers; } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); if (this.dict != null) artifactMap.put(DUMMY_DICT, this.dict); return artifactMap; } public static class DummyDictionarySerializer implements ArtifactSerializer { public DummyDictionary create(InputStream in) throws IOException { return new DummyDictionary(in); } public void serialize(DummyDictionary artifact, OutputStream out) throws IOException { artifact.serialize(out); } } public static class DummyDictionary extends Dictionary { private Dictionary indict; public DummyDictionary(Dictionary dict) { this.indict = dict; } public DummyDictionary(InputStream in) throws IOException { this.indict = new Dictionary(in); } public void serialize(OutputStream out) throws IOException { indict.serialize(out); } public Set asStringSet() { return indict.asStringSet(); } @Override public Class getArtifactSerializerClass() { return DummyDictionarySerializer.class; } } static class DummyContextGenerator extends DefaultTokenContextGenerator { public DummyContextGenerator(Set inducedAbbreviations) { super(inducedAbbreviations); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_tokenize_Dictiona0100644 0000000 0000000 00000000164 14135770370 032662 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DictionaryDetokenizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/tokenize/DictionaryDetokenizerTes0100664 0001750 0001750 00000006335 14135770370 034346 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.io.InputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.tokenize.DetokenizationDictionary.Operation; import opennlp.tools.tokenize.Detokenizer.DetokenizationOperation; public class DictionaryDetokenizerTest { @Test public void testDetokenizer() { String[] tokens = new String[]{".", "!", "(", ")", "\"", "-"}; Operation[] operations = new Operation[]{ Operation.MOVE_LEFT, Operation.MOVE_LEFT, Operation.MOVE_RIGHT, Operation.MOVE_LEFT, Operation.RIGHT_LEFT_MATCHING, Operation.MOVE_BOTH}; DetokenizationDictionary dict = new DetokenizationDictionary(tokens, operations); Detokenizer detokenizer = new DictionaryDetokenizer(dict); DetokenizationOperation[] detokenizeOperations = detokenizer.detokenize(new String[]{"Simple", "test", ".", "co", "-", "worker"}); Assert.assertEquals(DetokenizationOperation.NO_OPERATION, detokenizeOperations[0]); Assert.assertEquals(DetokenizationOperation.NO_OPERATION, detokenizeOperations[1]); Assert.assertEquals(DetokenizationOperation.MERGE_TO_LEFT, detokenizeOperations[2]); Assert.assertEquals(DetokenizationOperation.NO_OPERATION, detokenizeOperations[3]); Assert.assertEquals(DetokenizationOperation.MERGE_BOTH, detokenizeOperations[4]); Assert.assertEquals(DetokenizationOperation.NO_OPERATION, detokenizeOperations[5]); } static Detokenizer createLatinDetokenizer() throws IOException { InputStream dictIn = DictionaryDetokenizerTest.class.getResourceAsStream( "/opennlp/tools/tokenize/latin-detokenizer.xml"); DetokenizationDictionary dict = new DetokenizationDictionary(dictIn); dictIn.close(); return new DictionaryDetokenizer(dict); } @Test public void testDetokenizeToString() throws IOException { Detokenizer detokenizer = createLatinDetokenizer(); String[] tokens = new String[]{"A", "test", ",", "(", "string", ")", "."}; String sentence = detokenizer.detokenize(tokens, null); Assert.assertEquals("A test, (string).", sentence); } @Test public void testDetokenizeToString2() throws IOException { Detokenizer detokenizer = createLatinDetokenizer(); String[] tokens = new String[]{"A", "co", "-", "worker", "helped", "."}; String sentence = detokenizer.detokenize(tokens, null); Assert.assertEquals("A co-worker helped.", sentence); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_parser_ChunkSampl0100644 0000000 0000000 00000000156 14135770370 032642 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ChunkSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ChunkSampleStreamTest.java0100664 0001750 0001750 00000010172 14135770370 034165 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import org.junit.Test; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class ChunkSampleStreamTest { @Test public void testConvertParseToPosSample() throws IOException { try (ObjectStream chunkSampleStream = new ChunkSampleStream(new ParseSampleStream( ObjectStreamUtils.createObjectStream(ParseTest.PARSE_STRING)))) { ChunkSample sample = chunkSampleStream.read(); assertEquals("She", sample.getSentence()[0]); assertEquals("PRP", sample.getTags()[0]); assertEquals("S-NP", sample.getPreds()[0]); assertEquals("was", sample.getSentence()[1]); assertEquals("VBD", sample.getTags()[1]); assertEquals("O", sample.getPreds()[1]); assertEquals("just", sample.getSentence()[2]); assertEquals("RB", sample.getTags()[2]); assertEquals("S-ADVP", sample.getPreds()[2]); assertEquals("another", sample.getSentence()[3]); assertEquals("DT", sample.getTags()[3]); assertEquals("S-NP", sample.getPreds()[3]); assertEquals("freighter", sample.getSentence()[4]); assertEquals("NN", sample.getTags()[4]); assertEquals("C-NP", sample.getPreds()[4]); assertEquals("from", sample.getSentence()[5]); assertEquals("IN", sample.getTags()[5]); assertEquals("O", sample.getPreds()[5]); assertEquals("the", sample.getSentence()[6]); assertEquals("DT", sample.getTags()[6]); assertEquals("S-NP", sample.getPreds()[6]); assertEquals("States", sample.getSentence()[7]); assertEquals("NNPS", sample.getTags()[7]); assertEquals("C-NP", sample.getPreds()[7]); assertEquals(",", sample.getSentence()[8]); assertEquals(",", sample.getTags()[8]); assertEquals("O", sample.getPreds()[8]); assertEquals("and", sample.getSentence()[9]); assertEquals("CC", sample.getTags()[9]); assertEquals("O", sample.getPreds()[9]); assertEquals("she", sample.getSentence()[10]); assertEquals("PRP", sample.getTags()[10]); assertEquals("S-NP", sample.getPreds()[10]); assertEquals("seemed", sample.getSentence()[11]); assertEquals("VBD", sample.getTags()[11]); assertEquals("O", sample.getPreds()[11]); assertEquals("as", sample.getSentence()[12]); assertEquals("RB", sample.getTags()[12]); assertEquals("S-ADJP", sample.getPreds()[12]); assertEquals("commonplace", sample.getSentence()[13]); assertEquals("JJ", sample.getTags()[13]); assertEquals("C-ADJP", sample.getPreds()[13]); assertEquals("as", sample.getSentence()[14]); assertEquals("IN", sample.getTags()[14]); assertEquals("O", sample.getPreds()[14]); assertEquals("her", sample.getSentence()[15]); assertEquals("PRP$", sample.getTags()[15]); assertEquals("S-NP", sample.getPreds()[15]); assertEquals("name", sample.getSentence()[16]); assertEquals("NN", sample.getTags()[16]); assertEquals("C-NP", sample.getPreds()[16]); assertEquals(".", sample.getSentence()[17]); assertEquals(".", sample.getTags()[17]); assertEquals("O", sample.getPreds()[17]); assertNull(chunkSampleStream.read()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ParseTest.java0100664 0001750 0001750 00000010613 14135770370 031651 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link Parse} class. */ public class ParseTest { public static final String PARSE_STRING = "(TOP (S (S (NP-SBJ (PRP She) )(VP (VBD was) " + "(ADVP (RB just) )(NP-PRD (NP (DT another) (NN freighter) )(PP (IN from) (NP (DT the) " + "(NNPS States) )))))(, ,) (CC and) (S (NP-SBJ (PRP she) )(VP (VBD seemed) " + "(ADJP-PRD (ADJP (RB as) (JJ commonplace) )(PP (IN as) (NP (PRP$ her) " + "(NN name) )))))(. .) ))"; @Test public void testToHashCode() { Parse p1 = Parse.parseParse(PARSE_STRING); p1.hashCode(); } @Test public void testToString() { Parse p1 = Parse.parseParse(PARSE_STRING); p1.toString(); } @Test public void testEquals() { Parse p1 = Parse.parseParse(PARSE_STRING); Assert.assertTrue(p1.equals(p1)); } @Test public void testParseClone() { Parse p1 = Parse.parseParse(PARSE_STRING); Parse p2 = (Parse) p1.clone(); Assert.assertTrue(p1.equals(p2)); Assert.assertTrue(p2.equals(p1)); } @Test public void testGetText() { Parse p = Parse.parseParse(PARSE_STRING); // TODO: Why does parse attaches a space to the end of the text ??? String expectedText = "She was just another freighter from the States , " + "and she seemed as commonplace as her name . "; Assert.assertEquals(expectedText, p.getText()); } @Test public void testShow() { Parse p1 = Parse.parseParse(PARSE_STRING); StringBuffer parseString = new StringBuffer(); p1.show(parseString); Parse p2 = Parse.parseParse(parseString.toString()); Assert.assertEquals(p1, p2); } @Test public void testTokenReplacement() { Parse p1 = Parse.parseParse("(TOP (S-CLF (NP-SBJ (PRP It) )(VP (VBD was) " + " (NP-PRD (NP (DT the) (NN trial) )(PP (IN of) " + " (NP (NP (NN oleomargarine) (NN heir) )(NP (NNP Minot) " + " (PRN (-LRB- -LRB-) (NNP Mickey) " + " (-RRB- -RRB-) )(NNP Jelke) )))(PP (IN for) " + " (NP (JJ compulsory) (NN prostitution) " + " ))(PP-LOC (IN in) (NP (NNP New) (NNP York) " + " )))(SBAR (WHNP-1 (WDT that) )(S (VP (VBD put) " + " (NP (DT the) (NN spotlight) )(PP (IN on) (NP (DT the) " + " (JJ international) (NN play-girl) ))))))(. .) ))"); StringBuffer parseString = new StringBuffer(); p1.show(parseString); Parse p2 = Parse.parseParse(parseString.toString()); Assert.assertEquals(p1, p2); } @Test public void testGetTagNodes() { Parse p = Parse.parseParse(PARSE_STRING); Parse[] tags = p.getTagNodes(); for (Parse node : tags) { Assert.assertTrue(node.isPosTag()); } Assert.assertEquals("PRP", tags[0].getType()); Assert.assertEquals("VBD", tags[1].getType()); Assert.assertEquals("RB", tags[2].getType()); Assert.assertEquals("DT", tags[3].getType()); Assert.assertEquals("NN", tags[4].getType()); Assert.assertEquals("IN", tags[5].getType()); Assert.assertEquals("DT", tags[6].getType()); Assert.assertEquals("NNPS", tags[7].getType()); Assert.assertEquals(",", tags[8].getType()); Assert.assertEquals("CC", tags[9].getType()); Assert.assertEquals("PRP", tags[10].getType()); Assert.assertEquals("VBD", tags[11].getType()); Assert.assertEquals("RB", tags[12].getType()); Assert.assertEquals("JJ", tags[13].getType()); Assert.assertEquals("IN", tags[14].getType()); Assert.assertEquals("PRP$", tags[15].getType()); Assert.assertEquals("NN", tags[16].getType()); Assert.assertEquals(".", tags[17].getType()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/chunking/ParserTest.java0100664 0001750 0001750 00000004504 14135770370 033643 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.chunking; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.junit.Test; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.ParserTestUtil; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link Parser} class. */ public class ParserTest { /** * Verify that training and tagging does not cause * runtime problems. */ @Test public void testChunkingParserTraining() throws Exception { ObjectStream parseSamples = ParserTestUtil.openTestTrainingData(); HeadRules headRules = ParserTestUtil.createTestHeadRules(); ParserModel model = Parser.train("eng", parseSamples, headRules, TrainingParameters.defaultParams()); opennlp.tools.parser.Parser parser = ParserFactory.create(model); // TODO: // Tests parsing to make sure the code does not has // a bug which fails always with a runtime exception // parser.parse(Parse.parseParse("She was just another freighter from the " + // "States and she seemed as commonplace as her name .")); // Test serializing and de-serializing model ByteArrayOutputStream outArray = new ByteArrayOutputStream(); model.serialize(outArray); outArray.close(); ParserModel outputModel = new ParserModel(new ByteArrayInputStream(outArray.toByteArray())); // TODO: compare both models } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ParserTestUtil.java0100664 0001750 0001750 00000005156 14135770370 032677 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.parser.lang.en.HeadRules; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class ParserTestUtil { public static HeadRules createTestHeadRules() throws IOException { InputStream headRulesIn = ParserTestUtil.class.getResourceAsStream("/opennlp/tools/parser/en_head_rules"); HeadRules headRules = new HeadRules(new BufferedReader( new InputStreamReader(headRulesIn, StandardCharsets.UTF_8))); headRulesIn.close(); return headRules; } public static ObjectStream openTestTrainingData() throws IOException { ObjectStream resetableSampleStream = new ObjectStream() { private ObjectStream samples; public void close() throws IOException { samples.close(); } public Parse read() throws IOException { return samples.read(); } public void reset() throws IOException { try { if (samples != null) { samples.close(); } InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/parser/parser.train"); samples = new ParseSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } catch (UnsupportedEncodingException e) { // Should never happen Assert.fail(e.getMessage()); } } }; resetableSampleStream.reset(); return resetableSampleStream; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_parser_treeinsert0100644 0000000 0000000 00000000156 14135770370 032761 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/treeinsert/ParserTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/treeinsert/ParserTest.java0100664 0001750 0001750 00000004314 14135770370 034220 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.treeinsert; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.junit.Test; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.ParserTestUtil; import opennlp.tools.util.ObjectStream; /** * Tests for the {@link Parser} class. */ public class ParserTest { /** * Verify that training and tagging does not cause * runtime problems. */ @Test public void testTreeInsertParserTraining() throws Exception { ObjectStream parseSamples = ParserTestUtil.openTestTrainingData(); HeadRules headRules = ParserTestUtil.createTestHeadRules(); ParserModel model = Parser.train("eng", parseSamples, headRules, 100, 0); opennlp.tools.parser.Parser parser = ParserFactory.create(model); // Tests parsing to make sure the code does not has // a bug which fails always with a runtime exception parser.parse(Parse.parseParse("She was just another freighter from the " + "States and she seemed as commonplace as her name .")); // Test serializing and de-serializing model ByteArrayOutputStream outArray = new ByteArrayOutputStream(); model.serialize(outArray); outArray.close(); new ParserModel(new ByteArrayInputStream(outArray.toByteArray())); // TODO: compare both models } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_parser_lang_en_He0100644 0000000 0000000 00000000156 14135770370 032614 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/lang/en/HeadRulesTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/lang/en/HeadRulesTest.java0100664 0001750 0001750 00000003457 14135770370 034006 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.lang.en; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; public class HeadRulesTest { @Test public void testSerialization() throws IOException { InputStream headRulesIn = HeadRulesTest.class.getResourceAsStream("/opennlp/tools/parser/en_head_rules"); HeadRules headRulesOrginal = new HeadRules(new InputStreamReader(headRulesIn, StandardCharsets.UTF_8)); ByteArrayOutputStream out = new ByteArrayOutputStream(); headRulesOrginal.serialize(new OutputStreamWriter(out, StandardCharsets.UTF_8)); out.close(); HeadRules headRulesRecreated = new HeadRules(new InputStreamReader( new ByteArrayInputStream(out.toByteArray()), StandardCharsets.UTF_8)); Assert.assertEquals(headRulesOrginal, headRulesRecreated); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_parser_ParseSampl0100644 0000000 0000000 00000000156 14135770370 032644 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ParseSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/ParseSampleStreamTest.java0100664 0001750 0001750 00000003476 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class ParseSampleStreamTest { private static ObjectStream createParseSampleStream() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( ParseSampleStreamTest.class, "/opennlp/tools/parser/test.parse"); return new ParseSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } @Test public void testReadTestStream() throws IOException { ObjectStream parseStream = createParseSampleStream(); Assert.assertNotNull(parseStream.read()); Assert.assertNotNull(parseStream.read()); Assert.assertNotNull(parseStream.read()); Assert.assertNotNull(parseStream.read()); Assert.assertNull(parseStream.read()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/parser/PosSampleStreamTest.java0100664 0001750 0001750 00000006660 14135770370 033665 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.postag.POSSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; public class PosSampleStreamTest { @Test public void testConvertParseToPosSample() throws IOException { try (ObjectStream posSampleStream = new PosSampleStream(new ParseSampleStream( ObjectStreamUtils.createObjectStream(ParseTest.PARSE_STRING)))) { POSSample sample = posSampleStream.read(); Assert.assertEquals("PRP", sample.getTags()[0]); Assert.assertEquals("She", sample.getSentence()[0]); Assert.assertEquals("VBD", sample.getTags()[1]); Assert.assertEquals("was", sample.getSentence()[1]); Assert.assertEquals("RB", sample.getTags()[2]); Assert.assertEquals("just", sample.getSentence()[2]); Assert.assertEquals("DT", sample.getTags()[3]); Assert.assertEquals("another", sample.getSentence()[3]); Assert.assertEquals("NN", sample.getTags()[4]); Assert.assertEquals("freighter", sample.getSentence()[4]); Assert.assertEquals("IN", sample.getTags()[5]); Assert.assertEquals("from", sample.getSentence()[5]); Assert.assertEquals("DT", sample.getTags()[6]); Assert.assertEquals("the", sample.getSentence()[6]); Assert.assertEquals("NNPS", sample.getTags()[7]); Assert.assertEquals("States", sample.getSentence()[7]); Assert.assertEquals(",", sample.getTags()[8]); Assert.assertEquals(",", sample.getSentence()[8]); Assert.assertEquals("CC", sample.getTags()[9]); Assert.assertEquals("and", sample.getSentence()[9]); Assert.assertEquals("PRP", sample.getTags()[10]); Assert.assertEquals("she", sample.getSentence()[10]); Assert.assertEquals("VBD", sample.getTags()[11]); Assert.assertEquals("seemed", sample.getSentence()[11]); Assert.assertEquals("RB", sample.getTags()[12]); Assert.assertEquals("as", sample.getSentence()[12]); Assert.assertEquals("JJ", sample.getTags()[13]); Assert.assertEquals("commonplace", sample.getSentence()[13]); Assert.assertEquals("IN", sample.getTags()[14]); Assert.assertEquals("as", sample.getSentence()[14]); Assert.assertEquals("PRP$", sample.getTags()[15]); Assert.assertEquals("her", sample.getSentence()[15]); Assert.assertEquals("NN", sample.getTags()[16]); Assert.assertEquals("name", sample.getSentence()[16]); Assert.assertEquals(".", sample.getTags()[17]); Assert.assertEquals(".", sample.getSentence()[17]); Assert.assertNull(posSampleStream.read()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/HighMemoryUsage.java0100664 0001750 0001750 00000001640 14135770370 031500 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools; /** * Marker class for tests with heap memory usage above 4 GB. */ public class HighMemoryUsage { } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/CLITest.java0100664 0001750 0001750 00000006563 14135770370 031336 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.security.Permission; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class CLITest { private static class ExitException extends SecurityException { private final int status; public ExitException(int status) { this.status = status; } int status() { return status; } } /** * A SecurityManager which prevents System.exit anything else is allowed. */ private static class NoExitSecurityManager extends SecurityManager { @Override public void checkPermission(Permission perm) { } @Override public void checkPermission(Permission perm, Object context) { } @Override public void checkExit(int status) { super.checkExit(status); throw new ExitException(status); } } private final SecurityManager originalSecurityManager = System.getSecurityManager(); @Before public void installNoExitSecurityManager() { System.setSecurityManager(new NoExitSecurityManager()); } /** * Ensure the main method does not fail to print help message. */ @Test public void testMainHelpMessage() { try { CLI.main(new String[]{}); } catch (ExitException e) { Assert.assertEquals(0, e.status()); } } /** * Ensure the main method prints error and returns 1. */ @Test public void testUnknownToolMessage() { try { CLI.main(new String[]{"unknown name"}); } catch (ExitException e) { Assert.assertEquals(1, e.status()); } } /** * Ensure the tool checks the parameter and returns 1. */ @Test public void testToolParameterMessage() { try { CLI.main(new String[]{"DoccatTrainer", "-param", "value"}); } catch (ExitException e) { Assert.assertEquals(1, e.status()); } } /** * Ensure the main method prints error and returns -1 */ @Test public void testUnknownFileMessage() { try { CLI.main(new String[]{"Doccat", "unknown.model"}); } catch (ExitException e) { Assert.assertEquals(-1, e.status()); } } /** * Ensure all tools do not fail printing help message; */ @Test public void testHelpMessageOfTools() { for (String toolName : CLI.getToolNames()) { System.err.println("-> ToolName" + toolName); try { CLI.main(new String[]{toolName, "help"}); } catch (ExitException e) { Assert.assertEquals(0, e.status()); } } } @After public void restoreSecurityManager() { System.setSecurityManager(originalSecurityManager); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_cmdline_Terminate0100644 0000000 0000000 00000000164 14135770370 032643 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/TerminateToolExceptionTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/TerminateToolExceptionTes0100664 0001750 0001750 00000002167 14135770370 034264 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link TerminateToolException} class. */ public class TerminateToolExceptionTest { @Test public void testCreation() { TerminateToolException e = new TerminateToolException(-500); Assert.assertEquals(-500, e.getCode()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_cmdline_TokenName0100644 0000000 0000000 00000000161 14135770370 032571 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.j0100664 0001750 0001750 00000010051 14135770370 034071 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.namefind.TokenNameFinderTool; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleDataStream; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; public class TokenNameFinderToolTest { @Test public void run() throws IOException { File model1 = trainModel(); String[] args = new String[]{model1.getAbsolutePath()}; final String in = "It is Stefanie Schmidt.\n\nNothing in this sentence."; InputStream stream = new ByteArrayInputStream(in.getBytes(StandardCharsets.UTF_8)); System.setIn(stream); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); System.setOut(ps); TokenNameFinderTool tool = new TokenNameFinderTool(); tool.run(args); final String content = new String(baos.toByteArray(), StandardCharsets.UTF_8); Assert.assertTrue(content.contains("It is Stefanie Schmidt. ")); model1.delete(); } @Test(expected = TerminateToolException.class) public void invalidModel() { String[] args = new String[]{"invalidmodel.bin"}; TokenNameFinderTool tool = new TokenNameFinderTool(); tool.run(args); } @Test() public void usage() { String[] args = new String[]{}; ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); System.setOut(ps); TokenNameFinderTool tool = new TokenNameFinderTool(); tool.run(args); final String content = new String(baos.toByteArray(), StandardCharsets.UTF_8); Assert.assertEquals(tool.getHelp(), content.trim()); } private File trainModel() throws IOException { ObjectStream lineStream = new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/AnnotatedSentencesWithTypes.txt")), StandardCharsets.ISO_8859_1); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel model; TokenNameFinderFactory nameFinderFactory = new TokenNameFinderFactory(); try (ObjectStream sampleStream = new NameSampleDataStream(lineStream)) { model = NameFinderME.train("eng", null, sampleStream, params, nameFinderFactory); } File modelFile = File.createTempFile("model", ".bin"); try (BufferedOutputStream modelOut = new BufferedOutputStream(new FileOutputStream(modelFile))) { model.serialize(modelOut); } return modelFile; } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java0100664 0001750 0001750 00000013247 14135770370 033663 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.EncodingParameter; public class ArgumentParserTest { interface ZeroMethods { } @Test(expected = IllegalArgumentException.class) public void testZeroMethods() { ArgumentParser.createUsage(ZeroMethods.class); } interface InvalidMethodName { String invalidMethodName(); } @Test(expected = IllegalArgumentException.class) public void testInvalidMethodName() { ArgumentParser.createUsage(InvalidMethodName.class); } interface InvalidReturnType { Exception getTest(); } @Test(expected = IllegalArgumentException.class) public void testInvalidReturnType() { ArgumentParser.createUsage(InvalidReturnType.class); } interface SimpleArguments extends AllOptionalArguments { @ParameterDescription(valueName = "charset", description = "a charset encoding") String getEncoding(); @OptionalParameter Integer getCutoff(); } interface AllOptionalArguments { @ParameterDescription(valueName = "num") @OptionalParameter(defaultValue = "100") Integer getIterations(); @ParameterDescription(valueName = "true|false") @OptionalParameter(defaultValue = "true") Boolean getAlphaNumOpt(); } @Test public void testSimpleArguments() { String argsString = "-encoding UTF-8 -alphaNumOpt false"; SimpleArguments args = ArgumentParser.parse(argsString.split(" "), SimpleArguments.class); Assert.assertEquals(StandardCharsets.UTF_8.name(), args.getEncoding()); Assert.assertEquals(Integer.valueOf(100), args.getIterations()); Assert.assertNull(args.getCutoff()); Assert.assertEquals(false, args.getAlphaNumOpt()); } @Test(expected = IllegalArgumentException.class) public void testSimpleArgumentsMissingEncoding() { String argsString = "-alphaNumOpt false"; Assert.assertFalse(ArgumentParser.validateArguments(argsString.split(" "), SimpleArguments.class)); ArgumentParser.parse(argsString.split(" "), SimpleArguments.class); } @Test public void testAllOptionalArgumentsOneArgument() { String argsString = "-alphaNumOpt false"; Assert.assertTrue(ArgumentParser.validateArguments(argsString.split(" "), AllOptionalArguments.class)); ArgumentParser.parse(argsString.split(" "), AllOptionalArguments.class); } @Test public void testAllOptionalArgumentsZeroArguments() { String[] args = {}; Assert.assertTrue(ArgumentParser.validateArguments(args, AllOptionalArguments.class)); ArgumentParser.parse(args, AllOptionalArguments.class); } @Test(expected = IllegalArgumentException.class) public void testAllOptionalArgumentsExtraArgument() { String argsString = "-encoding UTF-8"; Assert.assertFalse(ArgumentParser.validateArguments(argsString.split(" "), AllOptionalArguments.class)); ArgumentParser.parse(argsString.split(" "), AllOptionalArguments.class); } @Test public void testSimpleArgumentsUsage() { String[] arguments = new String[] {"-encoding charset", "[-iterations num]", "[-alphaNumOpt true|false]"}; String usage = ArgumentParser.createUsage(SimpleArguments.class); int expectedLength = 2; for (String arg : arguments) { Assert.assertTrue(usage.contains(arg)); expectedLength += arg.length(); } Assert.assertTrue(usage.contains("a charset encoding")); Assert.assertTrue(expectedLength < usage.length()); } interface ExtendsEncodingParameter extends EncodingParameter { @ParameterDescription(valueName = "value") String getSomething(); } @Test public void testDefaultEncodingParameter() { String[] args = "-something aValue".split(" "); Assert.assertTrue(ArgumentParser.validateArguments(args, ExtendsEncodingParameter.class)); ExtendsEncodingParameter params = ArgumentParser.parse(args, ExtendsEncodingParameter.class); Assert.assertEquals(Charset.defaultCharset(), params.getEncoding()); } @Test public void testSetEncodingParameter() { Collection availableCharset = Charset.availableCharsets().values(); String notTheDefaultCharset = StandardCharsets.UTF_8.name(); for (Charset charset : availableCharset) { if (!charset.equals(Charset.defaultCharset())) { notTheDefaultCharset = charset.name(); break; } } String[] args = ("-something aValue -encoding " + notTheDefaultCharset).split(" "); Assert.assertTrue(ArgumentParser.validateArguments(args, ExtendsEncodingParameter.class)); ExtendsEncodingParameter params = ArgumentParser.parse(args, ExtendsEncodingParameter.class); Assert.assertEquals(Charset.forName(notTheDefaultCharset), params.getEncoding()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/stemmer/PorterStemmerTest.java0100664 0001750 0001750 00000002565 14135770370 033576 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.stemmer; import org.junit.Assert; import org.junit.Test; public class PorterStemmerTest { private PorterStemmer stemmer = new PorterStemmer(); @Test public void testNotNull() { Assert.assertNotNull(stemmer); } @Test public void testStemming() { Assert.assertEquals(stemmer.stem("deny"), "deni" ); Assert.assertEquals(stemmer.stem("declining"), "declin" ); Assert.assertEquals(stemmer.stem("diversity"), "divers" ); Assert.assertEquals(stemmer.stem("divers"), "diver" ); Assert.assertEquals(stemmer.stem("dental"), "dental" ); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/stemmer/SnowballStemmerTest.java0100664 0001750 0001750 00000015275 14135770370 034106 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.stemmer; import org.junit.Assert; import org.junit.Test; import opennlp.tools.stemmer.snowball.SnowballStemmer; import opennlp.tools.stemmer.snowball.SnowballStemmer.ALGORITHM; public class SnowballStemmerTest { @Test public void testArabic() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.ARABIC); Assert.assertEquals(stemmer.stem("أأباءاهم"), "اباء"); Assert.assertEquals(stemmer.stem("استفتياكما"), "استفتي"); Assert.assertEquals(stemmer.stem("استنتاجاتهما"), "استنتاجا"); } @Test public void testDanish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.DANISH); Assert.assertEquals(stemmer.stem("aabenbaringen"), "aabenbaring"); Assert.assertEquals(stemmer.stem("skuebrødsbordene"), "skuebrødsbord"); Assert.assertEquals(stemmer.stem("skrøbeligheder"), "skrøb"); } @Test public void testDutch() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.DUTCH); Assert.assertEquals(stemmer.stem("vliegtuigtransport"), "vliegtuigtransport"); Assert.assertEquals(stemmer.stem("sterlabcertificaat"), "sterlabcertificat"); Assert.assertEquals(stemmer.stem("vollegrondsgroenteteelt"), "vollegrondsgroenteteelt"); } @Test public void testCatalan() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.CATALAN); Assert.assertEquals(stemmer.stem("importantíssimes"), "important"); Assert.assertEquals(stemmer.stem("besar"), "bes"); Assert.assertEquals(stemmer.stem("accidentalment"), "accidental"); } @Test public void testEnglish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.ENGLISH); Assert.assertEquals(stemmer.stem("accompanying"), "accompani"); Assert.assertEquals(stemmer.stem("malediction"), "maledict"); Assert.assertEquals(stemmer.stem("softeners"), "soften"); } @Test public void testFinnish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.FINNISH); Assert.assertEquals(stemmer.stem("esiintymispaikasta"), "esiintymispaik"); Assert.assertEquals(stemmer.stem("esiintyviätaiteilijaystäviään"), "esiintyviätaiteilijaystäviä"); Assert.assertEquals(stemmer.stem("hellbergiä"), "hellberg"); } @Test public void testFrench() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.FRENCH); Assert.assertEquals(stemmer.stem("accomplissaient"), "accompl"); Assert.assertEquals(stemmer.stem("examinateurs"), "examin"); Assert.assertEquals(stemmer.stem("prévoyant"), "prévoi"); } @Test public void testGerman() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.GERMAN); Assert.assertEquals(stemmer.stem("buchbindergesellen"), "buchbindergesell"); Assert.assertEquals(stemmer.stem("mindere"), "mind"); Assert.assertEquals(stemmer.stem("mitverursacht"), "mitverursacht"); } @Test public void testGreek() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.GREEK); Assert.assertEquals(stemmer.stem("επιστροφή"), "επιστροφ"); Assert.assertEquals(stemmer.stem("Αμερικανών"), "αμερικαν"); Assert.assertEquals(stemmer.stem("στρατιωτών"), "στρατιωτ"); } @Test public void testHungarian() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.HUNGARIAN); Assert.assertEquals(stemmer.stem("abbahagynám"), "abbahagyna"); Assert.assertEquals(stemmer.stem("konstrukciójából"), "konstrukció"); Assert.assertEquals(stemmer.stem("lopta"), "lopt"); } @Test public void testIrish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.IRISH); Assert.assertEquals(stemmer.stem("bhfeidhm"), "feidhm"); Assert.assertEquals(stemmer.stem("feirmeoireacht"), "feirmeoir"); Assert.assertEquals(stemmer.stem("monarcacht"), "monarc"); } @Test public void testItalian() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.ITALIAN); Assert.assertEquals(stemmer.stem("abbattimento"), "abbatt"); Assert.assertEquals(stemmer.stem("dancer"), "dancer"); Assert.assertEquals(stemmer.stem("dance"), "danc"); } @Test public void testIndonesian() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.INDONESIAN); Assert.assertEquals(stemmer.stem("peledakan"), "ledak"); Assert.assertEquals(stemmer.stem("pelajaran"), "ajar"); Assert.assertEquals(stemmer.stem("perbaikan"), "baik"); } @Test public void testPortuguese() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.PORTUGUESE); Assert.assertEquals(stemmer.stem("aborrecimentos"), "aborrec"); Assert.assertEquals(stemmer.stem("aché"), "aché"); Assert.assertEquals(stemmer.stem("ache"), "ache"); } @Test public void testRomanian() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.ROMANIAN); Assert.assertEquals(stemmer.stem("absurdităţilor"), "absurd"); Assert.assertEquals(stemmer.stem("laşi"), "laş"); Assert.assertEquals(stemmer.stem("saracilor"), "sarac"); } @Test public void testSpanish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.SPANISH); Assert.assertEquals(stemmer.stem("besó"), "bes"); Assert.assertEquals(stemmer.stem("importantísimas"), "importantisim"); Assert.assertEquals(stemmer.stem("incidental"), "incidental"); } @Test public void testSwedish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.SWEDISH); Assert.assertEquals(stemmer.stem("aftonringningen"), "aftonringning"); Assert.assertEquals(stemmer.stem("andedrag"), "andedrag"); Assert.assertEquals(stemmer.stem("andedrägt"), "andedräg"); } @Test public void testTurkish() { SnowballStemmer stemmer = new SnowballStemmer(ALGORITHM.TURKISH); Assert.assertEquals(stemmer.stem("ab'yle"), "ab'yle"); Assert.assertEquals(stemmer.stem("kaçmamaktadır"), "kaçmamak"); Assert.assertEquals(stemmer.stem("sarayı'nı"), "sarayı'nı"); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/MockInputStreamFactory.java0100664 0001750 0001750 00000003544 14135770370 034042 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; public class MockInputStreamFactory implements InputStreamFactory { private final File inputSourceFile; private final String inputSourceStr; private final Charset charset; public MockInputStreamFactory(File file) { this.inputSourceFile = file; this.inputSourceStr = null; this.charset = null; } public MockInputStreamFactory(String str) { this(str, StandardCharsets.UTF_8); } public MockInputStreamFactory(String str, Charset charset) { this.inputSourceFile = null; this.inputSourceStr = str; this.charset = charset; } @Override public InputStream createInputStream() throws IOException { if (inputSourceFile != null) { return getClass().getClassLoader().getResourceAsStream(inputSourceFile.getPath()); } else { return new ByteArrayInputStream(inputSourceStr.getBytes(charset)); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/ObjectStreamUtilsTest.java0100664 0001750 0001750 00000010754 14135770370 033671 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; import org.junit.Assert; import org.junit.Test; public class ObjectStreamUtilsTest { @Test public void buildStreamTest() throws IOException { String[] data = {"dog","cat","pig","frog"}; // make a stream out of the data array... ObjectStream stream = ObjectStreamUtils.createObjectStream(data); compare(stream, data); // make a stream out of a list... List dataList = Arrays.asList(data); stream = ObjectStreamUtils.createObjectStream(Arrays.asList(data)); compare(stream, data); // make a stream out of a set... // A treeSet will order the set in Alphabetical order, so // we can compare it with the sorted Array, but this changes the // array. so it must be checked last. Arrays.sort(data); stream = ObjectStreamUtils.createObjectStream(new TreeSet<>(dataList)); compare(stream, data); } @Test public void concatenateStreamTest() throws IOException { String[] data1 = {"dog1","cat1","pig1","frog1"}; String[] data2 = {"dog2","cat2","pig2","frog2"}; String[] expected = {"dog1","cat1","pig1","frog1","dog2","cat2","pig2","frog2"}; // take individual streams and concatenate them as 1 stream. // Note: this is much easier than trying to create an array of // streams which needs to have annotation to avoid warnings about // generics and arrays. ObjectStream stream = ObjectStreamUtils.concatenateObjectStream( ObjectStreamUtils.createObjectStream(data1), ObjectStreamUtils.createObjectStream(data2)); compare(stream, expected); // test that collections of streams can be concatenated... List> listOfStreams = new ArrayList<>(); listOfStreams.add(ObjectStreamUtils.createObjectStream(data1) ); listOfStreams.add(ObjectStreamUtils.createObjectStream(data2) ); stream = ObjectStreamUtils.concatenateObjectStream(listOfStreams); compare(stream, expected); // test that sets of streams can be concatenated.. Set> streamSet = new HashSet<>(); streamSet.add(ObjectStreamUtils.createObjectStream(data1) ); streamSet.add(ObjectStreamUtils.createObjectStream(data2) ); stream = ObjectStreamUtils.concatenateObjectStream(streamSet); // The order the of the streams in the set is not know a priori // just check that the dog, cat, pig. frog is in the write order... compareUpToLastCharacter(stream, expected); } private void compare(ObjectStream stream,String[] expectedValues) throws IOException { String value = ""; int i = 0; while ( (value = stream.read()) != null) { Assert.assertTrue("The stream is longer than expected at index: " + i + " expected length: " + expectedValues.length + " expectedValues" + Arrays.toString(expectedValues),i < expectedValues.length); Assert.assertEquals(expectedValues[i++], value); } } private void compareUpToLastCharacter(ObjectStream stream, String[] expectedValues) throws IOException { String value = ""; int i = 0; while ( (value = stream.read()) != null) { Assert.assertTrue("The stream is longer than expected at index: " + i + " expected length: " + expectedValues.length + " expectedValues" + Arrays.toString(expectedValues),i < expectedValues.length); Assert.assertEquals( expectedValues[i].substring(0, expectedValues[i].length() - 1), value.substring(0, value.length() - 1)); i++; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_PlainTextByL0100644 0000000 0000000 00000000160 14135770370 032570 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/PlainTextByLineStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/PlainTextByLineStreamTest.ja0100664 0001750 0001750 00000004414 14135770370 034122 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link PlainTextByLineStream} class. */ public class PlainTextByLineStreamTest { static final String testString = "line1" + '\n' + "line2" + '\n' + "line3" + "\r\n" + "line4" + '\n'; @Test public void testLineSegmentation() throws IOException { ObjectStream stream = new PlainTextByLineStream(new MockInputStreamFactory(testString), StandardCharsets.UTF_8); Assert.assertEquals("line1", stream.read()); Assert.assertEquals("line2", stream.read()); Assert.assertEquals("line3", stream.read()); Assert.assertEquals("line4", stream.read()); Assert.assertNull(stream.read()); stream.close(); } @Test public void testReset() throws IOException { ObjectStream stream = new PlainTextByLineStream(new MockInputStreamFactory(testString), StandardCharsets.UTF_8); Assert.assertEquals("line1", stream.read()); Assert.assertEquals("line2", stream.read()); Assert.assertEquals("line3", stream.read()); stream.reset(); Assert.assertEquals("line1", stream.read()); Assert.assertEquals("line2", stream.read()); Assert.assertEquals("line3", stream.read()); Assert.assertEquals("line4", stream.read()); Assert.assertNull(stream.read()); stream.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java0100664 0001750 0001750 00000013037 14135770370 034062 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.ByteArrayInputStream; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.EventTrainer; public class TrainingParametersTest { @Test public void testConstructors() throws Exception { TrainingParameters tp1 = new TrainingParameters(build("key1=val1,key2=val2,key3=val3")); TrainingParameters tp2 = new TrainingParameters( new ByteArrayInputStream("key1=val1\nkey2=val2\nkey3=val3\n".getBytes()) ); TrainingParameters tp3 = new TrainingParameters(tp2); assertEquals(tp1, tp2); assertEquals(tp2, tp3); } @Test public void testDefault() { TrainingParameters tr = TrainingParameters.defaultParams(); Assert.assertEquals(4, tr.getSettings().size()); Assert.assertEquals("MAXENT", tr.algorithm()); Assert.assertEquals(EventTrainer.EVENT_VALUE, tr.getStringParameter(TrainingParameters.TRAINER_TYPE_PARAM, "v11")); // use different defaults Assert.assertEquals(100, tr.getIntParameter(TrainingParameters.ITERATIONS_PARAM, 200)); // use different defaults Assert.assertEquals(5, tr.getIntParameter(TrainingParameters.CUTOFF_PARAM, 200)); // use different defaults } @Test public void testGetAlgorithm() { TrainingParameters tp = build("Algorithm=Perceptron,n1.Algorithm=SVM"); Assert.assertEquals("Perceptron", tp.algorithm()); Assert.assertEquals("SVM", tp.algorithm("n1")); } @Test public void testGetSettings() { TrainingParameters tp = build("k1=v1,n1.k2=v2,n2.k3=v3,n1.k4=v4"); assertEquals(buildMap("k1=v1"), tp.getSettings()); assertEquals(buildMap("k2=v2,k4=v4"), tp.getSettings("n1")); assertEquals(buildMap("k3=v3"), tp.getSettings("n2")); Assert.assertTrue(tp.getSettings("n3").isEmpty()); } @Test public void testGetParameters() { TrainingParameters tp = build("k1=v1,n1.k2=v2,n2.k3=v3,n1.k4=v4"); assertEquals(build("k1=v1"), tp.getParameters(null)); assertEquals(build("k2=v2,k4=v4"), tp.getParameters("n1")); assertEquals(build("k3=v3"), tp.getParameters("n2")); Assert.assertTrue(tp.getParameters("n3").getSettings().isEmpty()); } @Test public void testPutGet() { TrainingParameters tp = build("k1=v1,int.k2=123,str.k2=v3,str.k3=v4,boolean.k4=false,double.k5=123.45,k21=234.5"); Assert.assertEquals("v1", tp.getStringParameter("k1", "def")); Assert.assertEquals("def", tp.getStringParameter("k2", "def")); Assert.assertEquals("v3", tp.getStringParameter("str", "k2", "def")); Assert.assertEquals("def", tp.getStringParameter("str", "k4", "def")); Assert.assertEquals(-100, tp.getIntParameter("k11", -100)); tp.put("k11", 234); Assert.assertEquals(234, tp.getIntParameter("k11", -100)); Assert.assertEquals(123, tp.getIntParameter("int", "k2", -100)); Assert.assertEquals(-100, tp.getIntParameter("int", "k4", -100)); Assert.assertEquals(234.5, tp.getDoubleParameter("k21", -100), 0.001); tp.put("k21", 345.6); Assert.assertEquals(345.6, tp.getDoubleParameter("k21", -100), 0.001); // should be changed tp.putIfAbsent("k21", 456.7); Assert.assertEquals(345.6, tp.getDoubleParameter("k21", -100), 0.001); // should be unchanged Assert.assertEquals(123.45, tp.getDoubleParameter("double", "k5", -100), 0.001); Assert.assertEquals(true, tp.getBooleanParameter("k31", true)); tp.put("k31", false); Assert.assertEquals(false, tp.getBooleanParameter("k31", true)); Assert.assertEquals(false, tp.getBooleanParameter("boolean", "k4", true)); } // format: k1=v1,k2=v2,... private static Map buildMap(String str) { String[] pairs = str.split(","); Map map = new HashMap<>(pairs.length); for (String pair : pairs) { String[] keyValue = pair.split("="); map.put(keyValue[0], keyValue[1]); } return map; } // format: k1=v1,k2=v2,... private static TrainingParameters build(String str) { return new TrainingParameters(buildMap(str)); } private static void assertEquals(Map map1, Map map2) { Assert.assertNotNull(map1); Assert.assertNotNull(map2); Assert.assertEquals(map1.size(), map2.size()); for (String key : map1.keySet()) { Assert.assertEquals(map1.get(key), map2.get(key)); } } private static void assertEquals(Map map, TrainingParameters actual) { Assert.assertNotNull(actual); assertEquals(map, actual.getSettings()); } private static void assertEquals(TrainingParameters expected, TrainingParameters actual) { if (expected == null) { Assert.assertNull(actual); } else { assertEquals(expected.getSettings(), actual); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java0100664 0001750 0001750 00000003631 14135770370 031707 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link Version} class. */ public class VersionTest { @Test public void testParse() { Version referenceVersion = Version.currentVersion(); Assert.assertEquals(referenceVersion, Version.parse(referenceVersion.toString())); Assert.assertEquals(new Version(1,5,2, false), Version.parse("1.5.2-incubating")); Assert.assertEquals(new Version(1,5,2, false), Version.parse("1.5.2")); } @Test public void testParseSnapshot() { Assert.assertEquals(new Version(1,5,2, true), Version.parse("1.5.2-incubating-SNAPSHOT")); Assert.assertEquals(new Version(1,5,2, true), Version.parse("1.5.2-SNAPSHOT")); } @Test public void testParseInvalidVersion() { try { Version.parse("1.5."); } catch (NumberFormatException e) { return; } Assert.assertFalse(false); } @Test public void testParseInvalidVersion2() { try { Version.parse("1.5"); } catch (NumberFormatException e) { return; } Assert.assertTrue(false); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_AbstractEven0100644 0000000 0000000 00000000156 14135770370 032637 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/AbstractEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/AbstractEventStreamTest.java0100664 0001750 0001750 00000007466 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.Event; /** * Tests for the {@link AbstractEventStream} class. */ public class AbstractEventStreamTest { /** * Checks if the {@link AbstractEventStream} behavior is correctly * if the {@link AbstractEventStream#createEvents(Object)} method * return iterators with events and empty iterators. */ @Test public void testStandardCase() throws IOException { List samples = new ArrayList<>(); samples.add(RESULT.EVENTS); samples.add(RESULT.EMPTY); samples.add(RESULT.EVENTS); try (TestEventStream eventStream = new TestEventStream(new CollectionObjectStream<>(samples))) { int eventCounter = 0; while (eventStream.read() != null) { eventCounter++; } Assert.assertEquals(2, eventCounter); } } /** * Checks if the {@link AbstractEventStream} behavior is correctly * if the {@link AbstractEventStream#createEvents(Object)} method * only returns empty iterators. */ @Test public void testEmtpyEventStream() throws IOException { List samples = new ArrayList<>(); samples.add(RESULT.EMPTY); try (TestEventStream eventStream = new TestEventStream(new CollectionObjectStream<>(samples))) { Assert.assertNull(eventStream.read()); // now check if it can handle multiple empty event iterators samples.add(RESULT.EMPTY); samples.add(RESULT.EMPTY); } try (TestEventStream eventStream = new TestEventStream(new CollectionObjectStream<>(samples))) { Assert.assertNull(eventStream.read()); } } private enum RESULT { EVENTS, EMPTY } /** * This class extends the {@link AbstractEventStream} to help * testing the {@link AbstractEventStream#hasNext()} * and {@link AbstractEventStream#next()} methods. */ class TestEventStream extends AbstractEventStream { public TestEventStream(ObjectStream samples) { super(samples); } /** * Creates {@link Iterator}s for testing. * * @param sample parameter to specify the output * @return it returns an {@link Iterator} which contains one * {@link Event} object if the sample parameter equals * {@link RESULT#EVENTS} or an empty {@link Iterator} if the sample * parameter equals {@link RESULT#EMPTY}. */ @Override protected Iterator createEvents(RESULT sample) { if (RESULT.EVENTS.equals(sample)) { List events = new ArrayList<>(); events.add(new Event("test", new String[] {"f1", "f2"})); return events.iterator(); } else if (RESULT.EMPTY.equals(sample)) { List emptyList = Collections.emptyList(); return emptyList.iterator(); } else { // throws runtime exception, execution stops here Assert.fail(); return null; } } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/StringUtilTest.java0100664 0001750 0001750 00000004606 14135770370 032371 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link StringUtil} class. */ public class StringUtilTest { @Test public void testNoBreakSpace() { Assert.assertTrue(StringUtil.isWhitespace(0x00A0)); Assert.assertTrue(StringUtil.isWhitespace(0x2007)); Assert.assertTrue(StringUtil.isWhitespace(0x202F)); Assert.assertTrue(StringUtil.isWhitespace((char) 0x00A0)); Assert.assertTrue(StringUtil.isWhitespace((char) 0x2007)); Assert.assertTrue(StringUtil.isWhitespace((char) 0x202F)); } @Test public void testToLowerCase() { Assert.assertEquals("test", StringUtil.toLowerCase("TEST")); Assert.assertEquals("simple", StringUtil.toLowerCase("SIMPLE")); } @Test public void testToUpperCase() { Assert.assertEquals("TEST", StringUtil.toUpperCase("test")); Assert.assertEquals("SIMPLE", StringUtil.toUpperCase("simple")); } @Test public void testIsEmpty() { Assert.assertTrue(StringUtil.isEmpty("")); Assert.assertTrue(!StringUtil.isEmpty("a")); } @Test(expected = NullPointerException.class) public void testIsEmptyWithNullString() { // should raise a NPE StringUtil.isEmpty(null); } @Test public void testLowercaseBeyondBMP() throws Exception { int[] codePoints = new int[]{65,66578,67}; //A,Deseret capital BEE,C int[] expectedCodePoints = new int[]{97,66618,99};//a,Deseret lowercase b,c String input = new String(codePoints, 0, codePoints.length); String lc = StringUtil.toLowerCase(input); Assert.assertArrayEquals(expectedCodePoints, lc.codePoints().toArray()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/SequenceTest.java0100664 0001750 0001750 00000004772 14135770370 032041 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link Sequence} class. */ public class SequenceTest { /** * Tests the copy constructor {@link Sequence#Sequence(Sequence)}. */ @Test public void testCopyConstructor() { Sequence sequence = new Sequence(); sequence.add("a", 10); sequence.add("b", 20); Sequence copy = new Sequence(sequence); Assert.assertEquals(sequence.getOutcomes(), copy.getOutcomes()); Assert.assertArrayEquals(sequence.getProbs(), copy.getProbs(), 0.0); Assert.assertTrue(sequence.compareTo(copy) == 0); } /** * Tests {@link Sequence#add(String, double)}, also * tests {@link Sequence#getOutcomes()} and {@link Sequence#getProbs()}. */ @Test public void testAddMethod() { Sequence sequence = new Sequence(); sequence.add("a", 10d); // check if insert was successful Assert.assertEquals("a", sequence.getOutcomes().get(0)); Assert.assertEquals(10d, sequence.getProbs()[0], 0d); } /** * Tests {@link Sequence#compareTo(Sequence)}. */ @Test public void testCompareTo() { Sequence lowScore = new Sequence(); lowScore.add("A", 1d); lowScore.add("B", 2d); lowScore.add("C", 3d); Sequence highScore = new Sequence(); lowScore.add("A", 7d); lowScore.add("B", 8d); lowScore.add("C", 9d); Assert.assertEquals(-1, lowScore.compareTo(highScore)); Assert.assertEquals(1, highScore.compareTo(lowScore)); } /** * Checks that {@link Sequence#toString()} is executable. */ @Test public void testToString() { new Sequence().toString(); Sequence sequence = new Sequence(); sequence.add("test", 0.1d); sequence.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/StringListTest.java0100664 0001750 0001750 00000006273 14135770370 032371 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Iterator; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link StringList} class. */ public class StringListTest { /** * Tests {@link StringList} which uses {@link String#intern}. */ @Test public void testIntern() { StringList l1 = new StringList("a"); StringList l2 = new StringList("a", "b"); Assert.assertTrue(l1.getToken(0) == l2.getToken(0)); } /** * Tests {@link StringList#getToken(int)}. */ @Test public void testGetToken() { StringList l = new StringList("a", "b"); Assert.assertEquals(2, l.size()); Assert.assertEquals("a", l.getToken(0)); Assert.assertEquals("b", l.getToken(1)); } /** * Tests {@link StringList#iterator()}. */ @Test public void testIterator() { StringList l = new StringList("a"); Iterator it = l.iterator(); Assert.assertTrue(it.hasNext()); Assert.assertEquals("a", it.next()); Assert.assertFalse(it.hasNext()); // now test with more than one string l = new StringList("a", "b", "c"); it = l.iterator(); Assert.assertTrue(it.hasNext()); Assert.assertEquals("a", it.next()); Assert.assertTrue(it.hasNext()); Assert.assertEquals("b", it.next()); Assert.assertTrue(it.hasNext()); Assert.assertEquals("c", it.next()); Assert.assertFalse(it.hasNext()); } /** * Tests {@link StringList#compareToIgnoreCase(StringList)}. */ @Test public void testCompareToIgnoreCase() { Assert.assertTrue(new StringList("a", "b").compareToIgnoreCase( new StringList("A", "B"))); } /** * Tests {@link StringList#equals(Object)}. */ @Test public void testEquals() { Assert.assertEquals(new StringList("a", "b"), new StringList("a", "b")); Assert.assertFalse(new StringList("a", "b").equals( new StringList("A", "B"))); } /** * Tests {@link StringList#hashCode()}. */ @Test public void testHashCode() { Assert.assertEquals(new StringList("a", "b").hashCode(), new StringList("a", "b").hashCode()); Assert.assertNotEquals(new StringList("a", "b").hashCode(), new StringList("a", "c").hashCode()); } /** * Tests {@link StringList#toString()}. */ @Test public void testToString() { Assert.assertEquals("[a]", new StringList("a").toString()); Assert.assertEquals("[a,b]", new StringList("a", "b").toString()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/SpanTest.java0100664 0001750 0001750 00000017575 14135770370 031177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link Span} class. */ public class SpanTest { /** * Test for {@link Span#getStart()}. */ @Test public void testGetStart() { Assert.assertEquals(5, new Span(5, 6).getStart()); } /** * Test for {@link Span#getEnd()}. */ @Test public void testGetEnd() { Assert.assertEquals(6, new Span(5, 6).getEnd()); } /** * Test for {@link Span#length()}. */ @Test public void testLength() { Assert.assertEquals(11, new Span(10, 21).length()); } /** * Test for {@link Span#contains(Span)}. */ @Test public void testContains() { Span a = new Span(500, 900); Span b = new Span(520, 600); Assert.assertEquals(true, a.contains(b)); } /** * Test for {@link Span#contains(Span)}. */ @Test public void testContainsWithEqual() { Span a = new Span(500, 900); Assert.assertEquals(true, a.contains(a)); } /** * Test for {@link Span#contains(Span)}. */ @Test public void testContainsWithLowerIntersect() { Span a = new Span(500, 900); Span b = new Span(450, 1000); Assert.assertEquals(false, a.contains(b)); } /** * Test for {@link Span#contains(Span)}. */ @Test public void testContainsWithHigherIntersect() { Span a = new Span(500, 900); Span b = new Span(500, 1000); Assert.assertEquals(false, a.contains(b)); } /** * Test for {@link Span#contains(int)}. */ @Test public void testContainsInt() { Span a = new Span(10, 300); /* NOTE: here the span does not contain the endpoint marked as the end * for the span. This is because the end should be placed one past the * true end for the span. The indexes used must observe the same * requirements for the contains function. */ Assert.assertFalse(a.contains(9)); Assert.assertTrue(a.contains(10)); Assert.assertTrue(a.contains(200)); Assert.assertTrue(a.contains(299)); Assert.assertFalse(a.contains(300)); } /** * Test for {@link Span#startsWith(Span)}. */ @Test public void testStartsWith() { Span a = new Span(10, 50); Span b = new Span(10, 12); Assert.assertTrue(a.startsWith(a)); Assert.assertTrue(a.startsWith(b)); Assert.assertFalse(b.startsWith(a)); } /** * Test for {@link Span#intersects(Span)}. */ @Test public void testIntersects() { Span a = new Span(10, 50); Span b = new Span(40, 100); Assert.assertTrue(a.intersects(b)); Assert.assertTrue(b.intersects(a)); Span c = new Span(10, 20); Span d = new Span(40, 50); Assert.assertFalse(c.intersects(d)); Assert.assertFalse(d.intersects(c)); Assert.assertTrue(b.intersects(d)); } /** * Test for {@link Span#crosses(Span)}. */ @Test public void testCrosses() { Span a = new Span(10, 50); Span b = new Span(40, 100); Assert.assertTrue(a.crosses(b)); Assert.assertTrue(b.crosses(a)); Span c = new Span(10, 20); Span d = new Span(40, 50); Assert.assertFalse(c.crosses(d)); Assert.assertFalse(d.crosses(c)); Assert.assertFalse(b.crosses(d)); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToLower() { Span a = new Span(100, 1000); Span b = new Span(10, 50); Assert.assertEquals(true, a.compareTo(b) > 0); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToHigher() { Span a = new Span(100, 200); Span b = new Span(300, 400); Assert.assertEquals(true, a.compareTo(b) < 0); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEquals() { Span a = new Span(30, 1000); Span b = new Span(30, 1000); Assert.assertEquals(true, a.compareTo(b) == 0); } /// /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEqualsSameType() { Span a = new Span(30, 1000, "a"); Span b = new Span(30, 1000, "a"); Assert.assertEquals(true, a.compareTo(b) == 0); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEqualsDiffType1() { Span a = new Span(30, 1000, "a"); Span b = new Span(30, 1000, "b"); Assert.assertEquals(true, a.compareTo(b) == -1); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEqualsDiffType2() { Span a = new Span(30, 1000, "b"); Span b = new Span(30, 1000, "a"); Assert.assertEquals(true, a.compareTo(b) == 1); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEqualsNullType1() { Span a = new Span(30, 1000); Span b = new Span(30, 1000, "b"); Assert.assertEquals(true, a.compareTo(b) == 1); } /** * Test for {@link Span#compareTo(Object)}. */ @Test public void testCompareToEqualsNullType2() { Span a = new Span(30, 1000, "b"); Span b = new Span(30, 1000); Assert.assertEquals(true, a.compareTo(b) == -1); } /** * Test for {@link Span#hashCode()}. */ @Test public void testhHashCode() { Assert.assertEquals(new Span(10, 11), new Span(10, 11)); } /** * Test for {@link Span#equals(Object)}. */ @Test public void testEqualsWithNull() { Span a = new Span(0, 0); Assert.assertEquals(a.equals(null), false); } /** * Test for {@link Span#equals(Object)}. */ @Test public void testEquals() { Span a1 = new Span(100, 1000, "test"); Span a2 = new Span(100, 1000, "test"); Assert.assertTrue(a1.equals(a2)); // end is different Span b1 = new Span(100, 100, "test"); Assert.assertFalse(a1.equals(b1)); // type is different Span c1 = new Span(100, 1000, "Test"); Assert.assertFalse(a1.equals(c1)); Span d1 = new Span(100, 1000); Assert.assertFalse(d1.equals(a1)); Assert.assertFalse(a1.equals(d1)); } /** * Test for {@link Span#toString()}. */ @Test public void testToString() { Assert.assertEquals("[50..100)", new Span(50, 100).toString()); Assert.assertEquals("[50..100) myType", new Span(50, 100, "myType").toString()); } @Test public void testTrim() { String string1 = " 12 34 "; Span span1 = new Span(0, string1.length()); Assert.assertEquals("12 34", span1.trim(string1).getCoveredText(string1)); } @Test public void testTrimWhitespaceSpan() { String string1 = " "; Span span1 = new Span(0, string1.length()); Assert.assertEquals("", span1.trim(string1).getCoveredText(string1)); } /** * Test if it fails to construct span with invalid start */ @Test(expected = IllegalArgumentException.class) public void testTooSmallStart() throws Exception { new Span(-1, 100); } /** * Test if it fails to construct span with invalid end */ @Test(expected = IllegalArgumentException.class) public void testTooSmallEnd() throws Exception { new Span(50, -1); } /** * Test if it fails to construct span with start > end */ @Test(expected = IllegalArgumentException.class) public void testStartLargerThanEnd() throws Exception { new Span(100, 50); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_normalizer_T0100644 0000000 0000000 00000000203 14135770370 032714 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/TwitterCharSequenceNormalizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/TwitterCharSequen0100664 0001750 0001750 00000004327 14135770370 034310 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import org.junit.Assert; import org.junit.Test; public class TwitterCharSequenceNormalizerTest { public TwitterCharSequenceNormalizer normalizer = TwitterCharSequenceNormalizer.getInstance(); @Test public void normalizeHashtag() throws Exception { Assert.assertEquals("asdf 2nnfdf", normalizer.normalize("asdf #hasdk23 2nnfdf")); } @Test public void normalizeUser() throws Exception { Assert.assertEquals("asdf 2nnfdf", normalizer.normalize("asdf @hasdk23 2nnfdf")); } @Test public void normalizeRT() throws Exception { Assert.assertEquals(" 2nnfdf", normalizer.normalize("RT RT RT 2nnfdf")); } @Test public void normalizeLaugh() throws Exception { Assert.assertEquals("ahahah", normalizer.normalize("ahahahah")); Assert.assertEquals("haha", normalizer.normalize("hahha")); Assert.assertEquals("haha", normalizer.normalize("hahaa")); Assert.assertEquals("ahaha", normalizer.normalize("ahahahahhahahhahahaaaa")); Assert.assertEquals("jaja", normalizer.normalize("jajjajajaja")); } @Test public void normalizeFace() throws Exception { Assert.assertEquals("hello hello", normalizer.normalize("hello :-) hello")); Assert.assertEquals("hello hello", normalizer.normalize("hello ;) hello")); Assert.assertEquals(" hello", normalizer.normalize(":) hello")); Assert.assertEquals("hello ", normalizer.normalize("hello :P")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_normalizer_E0100644 0000000 0000000 00000000201 14135770370 032673 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/EmojiCharSequenceNormalizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/EmojiCharSequence0100664 0001750 0001750 00000002651 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import org.junit.Assert; import org.junit.Test; public class EmojiCharSequenceNormalizerTest { public EmojiCharSequenceNormalizer normalizer = EmojiCharSequenceNormalizer.getInstance(); @Test public void normalizeEmoji() throws Exception { String s = new StringBuilder() .append("Any funny text goes here ") .appendCodePoint(0x1F606) .appendCodePoint(0x1F606) .appendCodePoint(0x1F606) .append(" ") .appendCodePoint(0x1F61B) .toString(); Assert.assertEquals( "Any funny text goes here ", normalizer.normalize(s)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_normalizer_N0100644 0000000 0000000 00000000202 14135770370 032705 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/NumberCharSequenceNormalizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/NumberCharSequenc0100664 0001750 0001750 00000002236 14135770370 034236 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import org.junit.Assert; import org.junit.Test; public class NumberCharSequenceNormalizerTest { public NumberCharSequenceNormalizer normalizer = NumberCharSequenceNormalizer.getInstance(); @Test public void normalize() throws Exception { Assert.assertEquals("absc , abcd", normalizer.normalize("absc 123,0123 abcd")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_normalizer_U0100644 0000000 0000000 00000000177 14135770370 032727 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/UrlCharSequenceNormalizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/UrlCharSequenceNo0100664 0001750 0001750 00000003231 14135770370 034206 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import org.junit.Assert; import org.junit.Test; public class UrlCharSequenceNormalizerTest { public UrlCharSequenceNormalizer normalizer = UrlCharSequenceNormalizer.getInstance(); @Test public void normalizeUrl() throws Exception { Assert.assertEquals( "asdf 2nnfdf", normalizer.normalize("asdf http://asdf.com/dfa/cxs 2nnfdf")); Assert.assertEquals( "asdf 2nnfdf ", normalizer.normalize("asdf http://asdf.com/dfa/cx" + "s 2nnfdf http://asdf.com/dfa/cxs")); } @Test public void normalizeEmail() throws Exception { Assert.assertEquals( "asdf 2nnfdf", normalizer.normalize("asdf asd.fdfa@hasdk23.com.br 2nnfdf")); Assert.assertEquals( "asdf 2nnfdf ", normalizer.normalize("asdf asd.fdfa@hasdk23.com.br" + " 2nnfdf asd.fdfa@hasdk23.com.br")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_normalizer_S0100644 0000000 0000000 00000000202 14135770370 032712 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/ShrinkCharSequenceNormalizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/normalizer/ShrinkCharSequenc0100664 0001750 0001750 00000002702 14135770370 034242 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import org.junit.Assert; import org.junit.Test; public class ShrinkCharSequenceNormalizerTest { public ShrinkCharSequenceNormalizer normalizer = ShrinkCharSequenceNormalizer.getInstance(); @Test public void normalizeSpace() throws Exception { Assert.assertEquals( "a text extra space", normalizer.normalize("a text extra space")); } @Test public void normalizeChar() throws Exception { Assert.assertEquals("Helloo", normalizer.normalize("Helllllloooooo")); Assert.assertEquals("Hello", normalizer.normalize("Hello")); Assert.assertEquals("HHello", normalizer.normalize("HHello")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_ext_Extensio0100644 0000000 0000000 00000000156 14135770370 032734 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/ext/ExtensionLoaderTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/ext/ExtensionLoaderTest.java0100664 0001750 0001750 00000002660 14135770370 034166 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.ext; import org.junit.Assert; import org.junit.Test; public class ExtensionLoaderTest { // define an interface here interface TestStringGenerator { String generateTestString(); } static class TestStringGeneratorImpl implements TestStringGenerator { public String generateTestString() { return "test"; } } @Test public void testLoadingStringGenerator() throws ClassNotFoundException { TestStringGenerator g = ExtensionLoader.instantiateExtension(TestStringGenerator.class, TestStringGeneratorImpl.class.getName()); Assert.assertEquals("test", g.generateTestString()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/FileUtil.java0100664 0001750 0001750 00000002503 14135770370 031134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.File; public class FileUtil { /** * delete the specified directory and its child directories and files * @param file specify the file or directory to be deleted */ public static void deleteDirectory(File file) { if (file.exists()) { if (file.isDirectory()) { File[] files = file.listFiles(); for (File f: files) { deleteDirectory(f); } file.delete(); } else if (file.isFile()) { file.delete(); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_F0100644 0000000 0000000 00000000172 14135770370 032646 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/FeatureGeneratorUtilTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/FeatureGeneratorU0100664 0001750 0001750 00000006360 14135770370 034220 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import org.junit.Assert; import org.junit.Test; public class FeatureGeneratorUtilTest { @Test public void test() { // digits Assert.assertEquals("2d", FeatureGeneratorUtil.tokenFeature("12")); Assert.assertEquals("4d", FeatureGeneratorUtil.tokenFeature("1234")); Assert.assertEquals("an", FeatureGeneratorUtil.tokenFeature("abcd234")); Assert.assertEquals("dd", FeatureGeneratorUtil.tokenFeature("1234-56")); Assert.assertEquals("ds", FeatureGeneratorUtil.tokenFeature("4/6/2017")); Assert.assertEquals("dc", FeatureGeneratorUtil.tokenFeature("1,234,567")); Assert.assertEquals("dp", FeatureGeneratorUtil.tokenFeature("12.34567")); Assert.assertEquals("num", FeatureGeneratorUtil.tokenFeature("123(456)7890")); // letters Assert.assertEquals("lc", FeatureGeneratorUtil.tokenFeature("opennlp")); Assert.assertEquals("sc", FeatureGeneratorUtil.tokenFeature("O")); Assert.assertEquals("ac", FeatureGeneratorUtil.tokenFeature("OPENNLP")); Assert.assertEquals("cp", FeatureGeneratorUtil.tokenFeature("A.")); Assert.assertEquals("ic", FeatureGeneratorUtil.tokenFeature("Mike")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("somethingStupid")); // symbols Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature(",")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature(".")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("?")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("!")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("#")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("%")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("&")); } @Test public void testJapanese() { // Hiragana Assert.assertEquals("jah", FeatureGeneratorUtil.tokenFeature("そういえば")); Assert.assertEquals("jah", FeatureGeneratorUtil.tokenFeature("おーぷん・そ〜す・そふとうぇあ")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("あぱっち・そふとうぇあ財団")); // Katakana Assert.assertEquals("jak", FeatureGeneratorUtil.tokenFeature("ジャパン")); Assert.assertEquals("jak", FeatureGeneratorUtil.tokenFeature("オープン・ソ〜ス・ソフトウェア")); Assert.assertEquals("other", FeatureGeneratorUtil.tokenFeature("アパッチ・ソフトウェア財団")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_G0100644 0000000 0000000 00000000203 14135770370 032642 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryClassicFormatTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryC0100664 0001750 0001750 00000013272 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.featuregen.WordClusterDictionary.WordClusterDictionarySerializer; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.DictionarySerializer; @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public class GeneratorFactoryClassicFormatTest { @Test public void testCreationWithTokenClassFeatureGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig_classic.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AggregatedFeatureGenerator aggregatedGenerator = (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertEquals(1, aggregatedGenerator.getGenerators().size()); Assert.assertEquals(TokenClassFeatureGenerator.class.getName(), aggregatedGenerator.getGenerators().iterator().next().getClass().getName()); } @Test public void testCreationWihtSimpleDescriptor() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestFeatureGeneratorConfig_classic.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); Collection expectedGenerators = new ArrayList<>(); expectedGenerators.add(OutcomePriorFeatureGenerator.class.getName()); AggregatedFeatureGenerator aggregatedGenerator = (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); for (AdaptiveFeatureGenerator generator : aggregatedGenerator.getGenerators()) { expectedGenerators.remove(generator.getClass().getName()); // if of kind which requires parameters check that } // If this fails not all expected generators were found and // removed from the expected generators collection Assert.assertEquals(0, expectedGenerators.size()); } @Test public void testCreationWithCustomGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/CustomClassLoading_classic.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AggregatedFeatureGenerator aggregatedGenerator = (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); Collection embeddedGenerator = aggregatedGenerator.getGenerators(); Assert.assertEquals(1, embeddedGenerator.size()); for (AdaptiveFeatureGenerator generator : embeddedGenerator) { Assert.assertEquals(TokenFeatureGenerator.class.getName(), generator.getClass().getName()); } } /** * Tests the creation from a descriptor which contains an unkown element. * The creation should fail with an {@link InvalidFormatException} */ @Test(expected = IOException.class) public void testCreationWithUnkownElement() throws IOException { try (InputStream descIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/FeatureGeneratorConfigWithUnkownElement_classic.xml")) { GeneratorFactory.create(descIn, null); } } @Test public void testArtifactToSerializerMappingExtraction() throws IOException { // TODO: Define a new one here with custom elements ... InputStream descIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/CustomClassLoadingWithSerializers_classic.xml"); Map> mapping = GeneratorFactory.extractArtifactSerializerMappings(descIn); Assert.assertTrue(mapping.get("test.resource") instanceof WordClusterDictionarySerializer); } @Test public void testDictionaryArtifactToSerializerMappingExtraction() throws IOException { InputStream descIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestDictionarySerializerMappingExtraction_classic.xml"); Map> mapping = GeneratorFactory.extractArtifactSerializerMappings(descIn); Assert.assertTrue(mapping.get("test.dictionary") instanceof DictionarySerializer); // TODO: if make the following effective, the test fails. // this is strange because DictionaryFeatureGeneratorFactory cast dictResource to Dictionary... //Assert.assertTrue(mapping.get("test.dictionary") instanceof // opennlp.tools.dictionary.Dictionary); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000174 14135770370 032645 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGene0100664 0001750 0001750 00000010211 14135770370 034101 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * Test for the {@link CachedFeatureGenerator} class. */ public class CachedFeatureGeneratorTest { private AdaptiveFeatureGenerator[] identityGenerator = new AdaptiveFeatureGenerator[] { new IdentityFeatureGenerator()}; private String[] testSentence1; private String[] testSentence2; private List features; @Before public void setUp() throws Exception { testSentence1 = new String[] {"a1", "b1", "c1", "d1"}; testSentence2 = new String[] {"a2", "b2", "c2", "d2"}; features = new ArrayList<>(); } /** * Tests if cache works for one sentence and two different token indexes. */ @Test public void testCachingOfSentence() { CachedFeatureGenerator generator = new CachedFeatureGenerator(identityGenerator); int testIndex = 0; // after this call features are cached for testIndex generator.createFeatures(features, testSentence1, testIndex, null); Assert.assertEquals(1, generator.getNumberOfCacheMisses()); Assert.assertEquals(0, generator.getNumberOfCacheHits()); Assert.assertTrue(features.contains(testSentence1[testIndex])); features.clear(); // check if features are really cached final String expectedToken = testSentence1[testIndex]; testSentence1[testIndex] = null; generator.createFeatures(features, testSentence1, testIndex, null); Assert.assertEquals(1, generator.getNumberOfCacheMisses()); Assert.assertEquals(1, generator.getNumberOfCacheHits()); Assert.assertTrue(features.contains(expectedToken)); Assert.assertEquals(1, features.size()); features.clear(); // try caching with an other index int testIndex2 = testIndex + 1; generator.createFeatures(features, testSentence1, testIndex2, null); Assert.assertEquals(2, generator.getNumberOfCacheMisses()); Assert.assertEquals(1, generator.getNumberOfCacheHits()); Assert.assertTrue(features.contains(testSentence1[testIndex2])); features.clear(); // now check if cache still contains feature for testIndex generator.createFeatures(features, testSentence1, testIndex, null); Assert.assertTrue(features.contains(expectedToken)); } /** * Tests if the cache was cleared after the sentence changed. */ @Test public void testCacheClearAfterSentenceChange() { CachedFeatureGenerator generator = new CachedFeatureGenerator(identityGenerator); int testIndex = 0; // use generator with sentence 1 generator.createFeatures(features, testSentence1, testIndex, null); features.clear(); // use another sentence but same index generator.createFeatures(features, testSentence2, testIndex, null); Assert.assertEquals(2, generator.getNumberOfCacheMisses()); Assert.assertEquals(0, generator.getNumberOfCacheHits()); Assert.assertTrue(features.contains(testSentence2[testIndex])); Assert.assertEquals(1, features.size()); features.clear(); // check if features are really cached final String expectedToken = testSentence2[testIndex]; testSentence2[testIndex] = null; generator.createFeatures(features, testSentence2, testIndex, null); Assert.assertTrue(features.contains(expectedToken)); Assert.assertEquals(1, features.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_F0100644 0000000 0000000 00000000201 14135770370 032637 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/FeatureGenWithSerializerMapping.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/FeatureGenWithSer0100664 0001750 0001750 00000003715 14135770370 034165 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; @Deprecated // TODO: (OPENNLP-1174) remove back-compat support when it is unnecessary public class FeatureGenWithSerializerMapping extends CustomFeatureGenerator implements ArtifactToSerializerMapper { @Override public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { } @Override public void updateAdaptiveData(String[] tokens, String[] outcomes) { } @Override public void clearAdaptiveData() { } @Override public Map> getArtifactSerializerMapping() { Map> mapping = new HashMap<>(); mapping.put("test.resource", new WordClusterDictionary.WordClusterDictionarySerializer()); return Collections.unmodifiableMap(mapping); } @Override public void init(Map properties, FeatureGeneratorResourceProvider resourceProvider) throws InvalidFormatException { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000203 14135770370 032653 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/POSTaggerNameFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/POSTaggerNameFeat0100664 0001750 0001750 00000003105 14135770370 034017 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.postag.POSTaggerMETest; import opennlp.tools.util.model.ModelType; public class POSTaggerNameFeatureGeneratorTest { @Test public void testFeatureGeneration() throws IOException { POSTaggerNameFeatureGenerator fg = new POSTaggerNameFeatureGenerator( POSTaggerMETest.trainPOSModel(ModelType.MAXENT)); String[] tokens = {"Hi", "Mike", ",", "it", "'s", "Stefanie", "Schmidt", "."}; for (int i = 0; i < tokens.length; i++) { List feats = new ArrayList<>(); fg.createFeatures(feats, tokens, i, null); Assert.assertTrue(feats.get(0).startsWith("pos=")); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_G0100644 0000000 0000000 00000000166 14135770370 032652 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryT0100664 0001750 0001750 00000025561 14135770370 034237 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.DictionarySerializer; public class GeneratorFactoryTest { static class TestParametersFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory { public TestParametersFeatureGeneratorFactory() { super(); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new TestParametersFeatureGenerator( getInt("intParam"), getFloat("floatParam"), getLong("longParam"), getDouble("doubleParam"), getBool("boolParam"), getStr("strParam")); } } static class TestParametersFeatureGenerator implements AdaptiveFeatureGenerator { public final int ip; public final float fp; public final long lp; public final double dp; public final boolean bp; public final String sp; TestParametersFeatureGenerator(int ip, float fp, long lp, double dp, boolean bp, String sp) { this.ip = ip; this.fp = fp; this.lp = lp; this.dp = dp; this.bp = bp; this.sp = sp; } @Override public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { } } @Test public void testCreationWithTokenClassFeatureGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AggregatedFeatureGenerator aggregatedGenerator = (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertEquals(1, aggregatedGenerator.getGenerators().size()); Assert.assertEquals(TokenClassFeatureGenerator.class.getName(), aggregatedGenerator.getGenerators().iterator().next().getClass().getName()); } @Test public void testCreationWihtSimpleDescriptor() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestFeatureGeneratorConfig.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); Collection expectedGenerators = new ArrayList<>(); expectedGenerators.add(OutcomePriorFeatureGenerator.class.getName()); AggregatedFeatureGenerator aggregatedGenerator = (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); for (AdaptiveFeatureGenerator generator : aggregatedGenerator.getGenerators()) { expectedGenerators.remove(generator.getClass().getName()); // if of kind which requires parameters check that } // If this fails not all expected generators were found and // removed from the expected generators collection Assert.assertEquals(0, expectedGenerators.size()); } /** * Tests the creation from a descriptor which contains an unkown element. * The creation should fail with an {@link InvalidFormatException} */ @Test(expected = IOException.class) public void testCreationWithUnkownElement() throws IOException { try (InputStream descIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/FeatureGeneratorConfigWithUnkownElement.xml")) { GeneratorFactory.create(descIn, null); } } @Test public void testDictionaryArtifactToSerializerMappingExtraction() throws IOException { InputStream descIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestDictionarySerializerMappingExtraction.xml"); Map> mapping = GeneratorFactory.extractArtifactSerializerMappings(descIn); Assert.assertTrue(mapping.get("test.dictionary") instanceof DictionarySerializer); // TODO: if make the following effective, the test fails. // this is strange because DictionaryFeatureGeneratorFactory cast dictResource to Dictionary... //Assert.assertTrue(mapping.get("test.dictionary") instanceof // opennlp.tools.dictionary.Dictionary); } @Test public void testParameters() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestParametersConfig.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator generator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(generator instanceof TestParametersFeatureGenerator); TestParametersFeatureGenerator featureGenerator = (TestParametersFeatureGenerator)generator; Assert.assertEquals(123, featureGenerator.ip); Assert.assertEquals(45, featureGenerator.fp, 0.1); Assert.assertEquals(67890, featureGenerator.lp); Assert.assertEquals(123456.789, featureGenerator.dp, 0.1); Assert.assertTrue(featureGenerator.bp); Assert.assertEquals("HELLO", featureGenerator.sp); } @Test public void testNotAutomaticallyInsertAggregatedFeatureGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestNotAutomaticallyInsertAggregatedFeatureGenerator.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator featureGenerator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(featureGenerator instanceof OutcomePriorFeatureGenerator); } @Test public void testAutomaticallyInsertAggregatedFeatureGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestAutomaticallyInsertAggregatedFeatureGenerator.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator featureGenerator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(featureGenerator instanceof AggregatedFeatureGenerator); AggregatedFeatureGenerator aggregatedFeatureGenerator = (AggregatedFeatureGenerator)featureGenerator; Assert.assertEquals(3, aggregatedFeatureGenerator.getGenerators().size()); for (AdaptiveFeatureGenerator afg: aggregatedFeatureGenerator.getGenerators()) { Assert.assertTrue(afg instanceof OutcomePriorFeatureGenerator); } } @Test public void testNotAutomaticallyInsertAggregatedFeatureGeneratorChild() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestNotAutomaticallyInsertAggregatedFeatureGeneratorCache.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator featureGenerator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(featureGenerator instanceof CachedFeatureGenerator); CachedFeatureGenerator cachedFeatureGenerator = (CachedFeatureGenerator)featureGenerator; Assert.assertTrue(cachedFeatureGenerator.getCachedFeatureGenerator() instanceof OutcomePriorFeatureGenerator); } @Test public void testAutomaticallyInsertAggregatedFeatureGeneratorChildren() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestAutomaticallyInsertAggregatedFeatureGeneratorCache.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator featureGenerator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(featureGenerator instanceof CachedFeatureGenerator); CachedFeatureGenerator cachedFeatureGenerator = (CachedFeatureGenerator)featureGenerator; AdaptiveFeatureGenerator afg = cachedFeatureGenerator.getCachedFeatureGenerator(); Assert.assertTrue(afg instanceof AggregatedFeatureGenerator); AggregatedFeatureGenerator aggregatedFeatureGenerator = (AggregatedFeatureGenerator)afg; Assert.assertEquals(3, aggregatedFeatureGenerator.getGenerators().size()); for (AdaptiveFeatureGenerator afgen: aggregatedFeatureGenerator.getGenerators()) { Assert.assertTrue(afgen instanceof OutcomePriorFeatureGenerator); } } @Test public void testInsertCachedFeatureGenerator() throws Exception { InputStream generatorDescriptorIn = getClass().getResourceAsStream( "/opennlp/tools/util/featuregen/TestInsertCachedFeatureGenerator.xml"); // If this fails the generator descriptor could not be found // at the expected location Assert.assertNotNull(generatorDescriptorIn); AdaptiveFeatureGenerator featureGenerator = GeneratorFactory.create(generatorDescriptorIn, null); Assert.assertTrue(featureGenerator instanceof CachedFeatureGenerator); CachedFeatureGenerator cachedFeatureGenerator = (CachedFeatureGenerator)featureGenerator; Assert.assertTrue(cachedFeatureGenerator.getCachedFeatureGenerator() instanceof AggregatedFeatureGenerator); AggregatedFeatureGenerator aggregatedFeatureGenerator = (AggregatedFeatureGenerator)cachedFeatureGenerator.getCachedFeatureGenerator(); Assert.assertEquals(3, aggregatedFeatureGenerator.getGenerators().size()); for (AdaptiveFeatureGenerator afg: aggregatedFeatureGenerator.getGenerators()) { Assert.assertTrue(afg instanceof OutcomePriorFeatureGenerator); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000174 14135770370 032665 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/SuffixFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/SuffixFeatureGene0100664 0001750 0001750 00000005446 14135770370 034214 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class SuffixFeatureGeneratorTest { private List features; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void lengthTest1() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 0; int suffixLength = 2; AdaptiveFeatureGenerator generator = new SuffixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("suf=s", features.get(0)); Assert.assertEquals("suf=is", features.get(1)); } @Test public void lengthTest2() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 3; int suffixLength = 5; AdaptiveFeatureGenerator generator = new SuffixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(5, features.size()); Assert.assertEquals("suf=e", features.get(0)); Assert.assertEquals("suf=le", features.get(1)); Assert.assertEquals("suf=ple", features.get(2)); Assert.assertEquals("suf=mple", features.get(3)); Assert.assertEquals("suf=ample", features.get(4)); } @Test public void lengthTest3() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 1; int suffixLength = 5; AdaptiveFeatureGenerator generator = new SuffixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("suf=s", features.get(0)); Assert.assertEquals("suf=is", features.get(1)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000202 14135770370 032656 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenPatternFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenPatternFeatu0100664 0001750 0001750 00000005177 14135770370 034241 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TokenPatternFeatureGeneratorTest { private List features; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testSingleToken() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; final int testTokenIndex = 3; AdaptiveFeatureGenerator generator = new TokenPatternFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("st=example", features.get(0)); } @Test public void testSentence() { String[] testSentence = new String[] {"This is an example sentence"}; final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new TokenPatternFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(14, features.size()); Assert.assertEquals("stn=5", features.get(0)); Assert.assertEquals("pt2=iclc", features.get(1)); Assert.assertEquals("pt3=iclclc", features.get(2)); Assert.assertEquals("st=this", features.get(3)); Assert.assertEquals("pt2=lclc", features.get(4)); Assert.assertEquals("pt3=lclclc", features.get(5)); Assert.assertEquals("st=is", features.get(6)); Assert.assertEquals("pt2=lclc", features.get(7)); Assert.assertEquals("pt3=lclclc", features.get(8)); Assert.assertEquals("st=an", features.get(9)); Assert.assertEquals("pt2=lclc", features.get(10)); Assert.assertEquals("st=example", features.get(11)); Assert.assertEquals("st=sentence", features.get(12)); Assert.assertEquals("pta=iclclclclc", features.get(13)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000201 14135770370 032655 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TrigramNameFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TrigramNameFeatur0100664 0001750 0001750 00000006436 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TrigramNameFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testBegin() { final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new TrigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("w,nw,nnw=This,is,an", features.get(0)); Assert.assertEquals("wc,nwc,nnwc=ic,lc,lc", features.get(1)); } @Test public void testNextOfBegin() { final int testTokenIndex = 1; AdaptiveFeatureGenerator generator = new TrigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("w,nw,nnw=is,an,example", features.get(0)); Assert.assertEquals("wc,nwc,nnwc=lc,lc,lc", features.get(1)); } @Test public void testMiddle() { final int testTokenIndex = 2; AdaptiveFeatureGenerator generator = new TrigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(4, features.size()); Assert.assertEquals("ppw,pw,w=This,is,an", features.get(0)); Assert.assertEquals("ppwc,pwc,wc=ic,lc,lc", features.get(1)); Assert.assertEquals("w,nw,nnw=an,example,sentence", features.get(2)); Assert.assertEquals("wc,nwc,nnwc=lc,lc,lc", features.get(3)); } @Test public void testEnd() { final int testTokenIndex = 4; AdaptiveFeatureGenerator generator = new TrigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("ppw,pw,w=an,example,sentence", features.get(0)); Assert.assertEquals("ppwc,pwc,wc=lc,lc,lc", features.get(1)); } @Test public void testShort() { String[] shortSentence = new String[] {"I", "know", "it"}; final int testTokenIndex = 1; AdaptiveFeatureGenerator generator = new TrigramNameFeatureGenerator(); generator.createFeatures(features, shortSentence, testTokenIndex, null); Assert.assertEquals(0, features.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000201 14135770370 032651 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PreviousMapFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PreviousMapFeatur0100664 0001750 0001750 00000004022 14135770370 034243 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; /** * Test for the {@link PreviousMapFeatureGenerator} class. */ public class PreviousMapFeatureGeneratorTest { @Test public void testFeatureGeneration() { AdaptiveFeatureGenerator fg = new PreviousMapFeatureGenerator(); String[] sentence = new String[] {"a", "b", "c"}; List features = new ArrayList<>(); // this should generate the pd=null feature fg.createFeatures(features, sentence, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("pd=null", features.get(0)); features.clear(); // this should generate the pd=1 feature fg.updateAdaptiveData(sentence, new String[] {"1", "2", "3"}); fg.createFeatures(features, sentence, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("pd=1", features.get(0)); features.clear(); // this should generate the pd=null feature again after // the adaptive data was cleared fg.clearAdaptiveData(); fg.createFeatures(features, sentence, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("pd=null", features.get(0)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000177 14135770370 032665 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PosTaggerFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PosTaggerFeatureG0100664 0001750 0001750 00000004366 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class PosTaggerFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; static String[] testTags = new String[] {"DT", "VBZ", "DT", "NN", "NN"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testBegin() { final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new PosTaggerFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, testTags); Assert.assertEquals(0, features.size()); } @Test public void testNext() { final int testTokenIndex = 1; AdaptiveFeatureGenerator generator = new PosTaggerFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, testTags); Assert.assertEquals(1, features.size()); Assert.assertEquals("t=DT", features.get(0)); } @Test public void testMiddle() { final int testTokenIndex = 3; AdaptiveFeatureGenerator generator = new PosTaggerFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, testTags); Assert.assertEquals(2, features.size()); Assert.assertEquals("t=DT", features.get(0)); Assert.assertEquals("t2=VBZ,DT", features.get(1)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000176 14135770370 032667 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/SentenceFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/SentenceFeatureGe0100664 0001750 0001750 00000010031 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class SentenceFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; static String[] testShort = new String[] {"word"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testTT() { AdaptiveFeatureGenerator generator = new SentenceFeatureGenerator(true, true); generator.createFeatures(features, testSentence, 2, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=begin", features.get(0)); features.clear(); generator.createFeatures(features, testSentence, testSentence.length - 1, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=end", features.get(0)); features.clear(); generator.createFeatures(features, testShort, 0, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("S=begin", features.get(0)); Assert.assertEquals("S=end", features.get(1)); } @Test public void testTF() { AdaptiveFeatureGenerator generator = new SentenceFeatureGenerator(true, false); generator.createFeatures(features, testSentence, 2, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=begin", features.get(0)); features.clear(); generator.createFeatures(features, testSentence, testSentence.length - 1, null); Assert.assertEquals(0, features.size()); features.clear(); generator.createFeatures(features, testShort, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=begin", features.get(0)); } @Test public void testFT() { AdaptiveFeatureGenerator generator = new SentenceFeatureGenerator(false, true); generator.createFeatures(features, testSentence, 2, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, testSentence.length - 1, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=end", features.get(0)); features.clear(); generator.createFeatures(features, testShort, 0, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("S=end", features.get(0)); } @Test public void testFF() { AdaptiveFeatureGenerator generator = new SentenceFeatureGenerator(false, false); generator.createFeatures(features, testSentence, 2, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testSentence, testSentence.length - 1, null); Assert.assertEquals(0, features.size()); generator.createFeatures(features, testShort, 0, null); Assert.assertEquals(0, features.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000163 14135770370 032663 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/StringPatternTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/StringPatternTest0100664 0001750 0001750 00000014774 14135770370 034305 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import org.junit.Assert; import org.junit.Test; public class StringPatternTest { @Test public void testIsAllLetters() { Assert.assertTrue(StringPattern.recognize("test").isAllLetter()); Assert.assertTrue(StringPattern.recognize("TEST").isAllLetter()); Assert.assertTrue(StringPattern.recognize("TesT").isAllLetter()); Assert.assertTrue(StringPattern.recognize("grün").isAllLetter()); Assert.assertTrue(StringPattern.recognize("üäöæß").isAllLetter()); Assert.assertTrue(StringPattern.recognize("あア亜Aa").isAllLetter()); } @Test public void testIsInitialCapitalLetter() { Assert.assertTrue(StringPattern.recognize("Test").isInitialCapitalLetter()); Assert.assertFalse(StringPattern.recognize("tEST").isInitialCapitalLetter()); Assert.assertTrue(StringPattern.recognize("TesT").isInitialCapitalLetter()); Assert.assertTrue(StringPattern.recognize("Üäöæß").isInitialCapitalLetter()); Assert.assertFalse(StringPattern.recognize("いイ井").isInitialCapitalLetter()); Assert.assertTrue(StringPattern.recognize("Iいイ井").isInitialCapitalLetter()); Assert.assertTrue(StringPattern.recognize("Iいイ井").isInitialCapitalLetter()); } @Test public void testIsAllCapitalLetter() { Assert.assertTrue(StringPattern.recognize("TEST").isAllCapitalLetter()); Assert.assertTrue(StringPattern.recognize("ÄÄÄÜÜÜÖÖÖÖ").isAllCapitalLetter()); Assert.assertFalse(StringPattern.recognize("ÄÄÄÜÜÜÖÖä").isAllCapitalLetter()); Assert.assertFalse(StringPattern.recognize("ÄÄÄÜÜdÜÖÖ").isAllCapitalLetter()); Assert.assertTrue(StringPattern.recognize("ABC").isAllCapitalLetter()); Assert.assertFalse(StringPattern.recognize("うウ宇").isAllCapitalLetter()); } @Test public void testIsAllLowerCaseLetter() { Assert.assertTrue(StringPattern.recognize("test").isAllLowerCaseLetter()); Assert.assertTrue(StringPattern.recognize("öäü").isAllLowerCaseLetter()); Assert.assertTrue(StringPattern.recognize("öäüßßß").isAllLowerCaseLetter()); Assert.assertFalse(StringPattern.recognize("Test").isAllLowerCaseLetter()); Assert.assertFalse(StringPattern.recognize("TEST").isAllLowerCaseLetter()); Assert.assertFalse(StringPattern.recognize("testT").isAllLowerCaseLetter()); Assert.assertFalse(StringPattern.recognize("tesÖt").isAllLowerCaseLetter()); Assert.assertTrue(StringPattern.recognize("abc").isAllLowerCaseLetter()); Assert.assertFalse(StringPattern.recognize("えエ絵").isAllLowerCaseLetter()); } @Test public void testIsAllDigit() { Assert.assertTrue(StringPattern.recognize("123456").isAllDigit()); Assert.assertFalse(StringPattern.recognize("123,56").isAllDigit()); Assert.assertFalse(StringPattern.recognize("12356f").isAllDigit()); Assert.assertTrue(StringPattern.recognize("123456").isAllDigit()); } @Test public void testIsAllHiragana() { Assert.assertTrue(StringPattern.recognize("あぱっち・るしーん").isAllHiragana()); Assert.assertFalse(StringPattern.recognize("あぱっち・そふとうぇあ財団").isAllHiragana()); Assert.assertFalse(StringPattern.recognize("あぱっち・るしーんV1.0").isAllHiragana()); } @Test public void testIsAllKatakana() { Assert.assertTrue(StringPattern.recognize("アパッチ・ルシーン").isAllKatakana()); Assert.assertFalse(StringPattern.recognize("アパッチ・ソフトウェア財団").isAllKatakana()); Assert.assertFalse(StringPattern.recognize("アパッチ・ルシーンV1.0").isAllKatakana()); } @Test public void testDigits() { Assert.assertEquals(6, StringPattern.recognize("123456").digits()); Assert.assertEquals(3, StringPattern.recognize("123fff").digits()); Assert.assertEquals(0, StringPattern.recognize("test").digits()); Assert.assertEquals(3, StringPattern.recognize("123fff").digits()); } @Test public void testContainsPeriod() { Assert.assertTrue(StringPattern.recognize("test.").containsPeriod()); Assert.assertTrue(StringPattern.recognize("23.5").containsPeriod()); Assert.assertFalse(StringPattern.recognize("test,/-1").containsPeriod()); } @Test public void testContainsComma() { Assert.assertTrue(StringPattern.recognize("test,").containsComma()); Assert.assertTrue(StringPattern.recognize("23,5").containsComma()); Assert.assertFalse(StringPattern.recognize("test./-1").containsComma()); } @Test public void testContainsSlash() { Assert.assertTrue(StringPattern.recognize("test/").containsSlash()); Assert.assertTrue(StringPattern.recognize("23/5").containsSlash()); Assert.assertFalse(StringPattern.recognize("test.1-,").containsSlash()); } @Test public void testContainsDigit() { Assert.assertTrue(StringPattern.recognize("test1").containsDigit()); Assert.assertTrue(StringPattern.recognize("23,5").containsDigit()); Assert.assertFalse(StringPattern.recognize("test./-,").containsDigit()); Assert.assertTrue(StringPattern.recognize("テスト1").containsDigit()); Assert.assertFalse(StringPattern.recognize("テストTEST").containsDigit()); } @Test public void testContainsHyphen() { Assert.assertTrue(StringPattern.recognize("test--").containsHyphen()); Assert.assertTrue(StringPattern.recognize("23-5").containsHyphen()); Assert.assertFalse(StringPattern.recognize("test.1/,").containsHyphen()); } @Test public void testContainsLetters() { Assert.assertTrue(StringPattern.recognize("test--").containsLetters()); Assert.assertTrue(StringPattern.recognize("23h5ßm").containsLetters()); Assert.assertFalse(StringPattern.recognize("---.1/,").containsLetters()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_I0100644 0000000 0000000 00000000165 14135770370 032653 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/InSpanGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/InSpanGeneratorTe0100664 0001750 0001750 00000004256 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.util.Span; public class InSpanGeneratorTest { static class SimpleSpecificPersonFinder implements TokenNameFinder { private final String theName; public SimpleSpecificPersonFinder(String theName) { this.theName = theName; } @Override public Span[] find(String[] tokens) { for (int i = 0; i < tokens.length; i++) { if (theName.equals(tokens[i])) { return new Span[]{ new Span(i, i + 1, "person") }; } } return new Span[]{}; } @Override public void clearAdaptiveData() { } } @Test public void test() { List features = new ArrayList<>(); String[] testSentence = new String[]{ "Every", "John", "has", "its", "day", "." }; AdaptiveFeatureGenerator generator = new InSpanGenerator("john", new SimpleSpecificPersonFinder("John")); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(0, features.size()); features.clear(); generator.createFeatures(features, testSentence, 1, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("john:w=dic", features.get(0)); Assert.assertEquals("john:w=dic=John", features.get(1)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000201 14135770370 032633 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/BrownBigramFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/BrownBigramFeatur0100664 0001750 0001750 00000005435 14135770370 034213 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; public class BrownBigramFeatureGeneratorTest { private AdaptiveFeatureGenerator generator; @Before public void setup() throws IOException { ResourceAsStreamFactory stream = new ResourceAsStreamFactory( getClass(), "/opennlp/tools/formats/brown-cluster.txt"); BrownCluster brownCluster = new BrownCluster(stream.createInputStream()); generator = new BrownBigramFeatureGenerator(brownCluster); } @Test public void createFeaturesTest() throws IOException { String[] tokens = new String[] {"he", "went", "with", "you"}; List features = new ArrayList<>(); generator.createFeatures(features, tokens, 3, null); Assert.assertEquals(2, features.size()); Assert.assertTrue(features.contains("pbrowncluster,browncluster=0101,0010")); Assert.assertTrue(features.contains("pbrowncluster,browncluster=01010,00101")); } @Test public void createFeaturesSuccessiveTokensTest() throws IOException { final String[] testSentence = new String[] {"he", "went", "with", "you", "in", "town"}; List features = new ArrayList<>(); generator.createFeatures(features, testSentence, 3, null); Assert.assertEquals(3, features.size()); Assert.assertTrue(features.contains("pbrowncluster,browncluster=0101,0010")); Assert.assertTrue(features.contains("pbrowncluster,browncluster=01010,00101")); Assert.assertTrue(features.contains("browncluster,nbrowncluster=0010,0000")); } @Test public void noFeaturesTest() throws IOException { final String[] testSentence = new String[] {"he", "went", "with", "you"}; List features = new ArrayList<>(); generator.createFeatures(features, testSentence, 0, null); Assert.assertEquals(0, features.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000200 14135770370 032632 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/BigramNameFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/BigramNameFeature0100664 0001750 0001750 00000005450 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class BigramNameFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testBegin() { final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new BigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("w,nw=This,is", features.get(0)); Assert.assertEquals("wc,nc=ic,lc", features.get(1)); } @Test public void testMiddle() { final int testTokenIndex = 2; AdaptiveFeatureGenerator generator = new BigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(4, features.size()); Assert.assertEquals("pw,w=is,an", features.get(0)); Assert.assertEquals("pwc,wc=lc,lc", features.get(1)); Assert.assertEquals("w,nw=an,example", features.get(2)); Assert.assertEquals("wc,nc=lc,lc", features.get(3)); } @Test public void testEnd() { final int testTokenIndex = 4; AdaptiveFeatureGenerator generator = new BigramNameFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("pw,w=example,sentence", features.get(0)); Assert.assertEquals("pwc,wc=lc,lc", features.get(1)); } @Test public void testShort() { String[] shortSentence = new String[] {"word"}; final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new BigramNameFeatureGenerator(); generator.createFeatures(features, shortSentence, testTokenIndex, null); Assert.assertEquals(0, features.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000204 14135770370 032637 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CharacterNgramFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CharacterNgramFea0100664 0001750 0001750 00000003631 14135770370 034124 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class CharacterNgramFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testDefault() { final int testTokenIndex = 3; AdaptiveFeatureGenerator generator = new CharacterNgramFeatureGenerator(); generator.createFeatures(features, testSentence, testTokenIndex, null); assertContainsNg(features, "ex", "exa", "exam", "examp", "xa", "xam", "xamp", "xampl", "am", "amp", "ampl", "ample", "mp", "mpl", "mple", "pl", "ple", "le"); } private static void assertContainsNg(List features, String... elements) { Assert.assertEquals(elements.length, features.size()); for (String e: elements) { Assert.assertTrue(features.contains("ng=" + e)); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000173 14135770370 032665 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenFeatureGener0100664 0001750 0001750 00000003526 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TokenFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void test() { final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new TokenFeatureGenerator(false); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("w=This", features.get(0)); } @Test public void testLowerCase() { final int testTokenIndex = 0; AdaptiveFeatureGenerator generator = new TokenFeatureGenerator(true); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("w=this", features.get(0)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_I0100644 0000000 0000000 00000000172 14135770370 032651 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/IdentityFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/IdentityFeatureGe0100664 0001750 0001750 00000002102 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; class IdentityFeatureGenerator implements AdaptiveFeatureGenerator { public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { features.add(tokens[index]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000204 14135770370 032654 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PreviousTwoMapFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PreviousTwoMapFea0100664 0001750 0001750 00000004162 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; public class PreviousTwoMapFeatureGeneratorTest { @Test public void testFeatureGeneration() { AdaptiveFeatureGenerator fg = new PreviousTwoMapFeatureGenerator(); String[] sentence = new String[] {"a", "b", "c"}; List features = new ArrayList<>(); // this should generate the no features fg.createFeatures(features, sentence, 0, null); Assert.assertEquals(0, features.size()); // this should generate the pd=null feature fg.createFeatures(features, sentence, 1, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("ppd=null,null", features.get(0)); features.clear(); // this should generate the pd=1 feature fg.updateAdaptiveData(sentence, new String[] {"1", "2", "3"}); fg.createFeatures(features, sentence, 1, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("ppd=2,1", features.get(0)); features.clear(); // this should generate the pd=null feature again after // the adaptive data was cleared fg.clearAdaptiveData(); fg.createFeatures(features, sentence, 1, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("ppd=null,null", features.get(0)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000200 14135770370 032654 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenClassFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/TokenClassFeature0100664 0001750 0001750 00000003641 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TokenClassFeatureGeneratorTest { private List features; static String[] testSentence = new String[] {"This", "is", "an", "Example", "sentence"}; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void testGenWAC() { final int testTokenIndex = 3; AdaptiveFeatureGenerator generator = new TokenClassFeatureGenerator(true); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("wc=ic", features.get(0)); Assert.assertEquals("w&c=example,ic", features.get(1)); } @Test public void testNoWAC() { final int testTokenIndex = 3; AdaptiveFeatureGenerator generator = new TokenClassFeatureGenerator(false); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("wc=ic", features.get(0)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000174 14135770370 032671 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/WindowFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/WindowFeatureGene0100664 0001750 0001750 00000007340 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * Test for the {@link WindowFeatureGenerator} class. */ public class WindowFeatureGeneratorTest { private String[] testSentence = new String[] {"a", "b", "c", "d", "e", "f", "g", "h"}; private List features; @Before public void setUp() throws Exception { features = new ArrayList<>(); } /** * Tests if the {@link WindowFeatureGenerator} works as specified, with a previous * and next window size of zero. */ @Test public void testWithoutWindow() { AdaptiveFeatureGenerator windowFeatureGenerator = new WindowFeatureGenerator( new IdentityFeatureGenerator(), 0, 0); int testTokenIndex = 2; windowFeatureGenerator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("c", features.get(0)); } @Test public void testWindowSizeOne() { AdaptiveFeatureGenerator windowFeatureGenerator = new WindowFeatureGenerator( new IdentityFeatureGenerator(), 1, 1); int testTokenIndex = 2; windowFeatureGenerator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(3, features.size()); Assert.assertEquals("c", features.get(0)); Assert.assertEquals("p1b", features.get(1)); Assert.assertEquals("n1d", features.get(2)); } @Test public void testWindowAtBeginOfSentence() { AdaptiveFeatureGenerator windowFeatureGenerator = new WindowFeatureGenerator( new IdentityFeatureGenerator(), 1, 0); int testTokenIndex = 0; windowFeatureGenerator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("a", features.get(0)); } @Test public void testWindowAtEndOfSentence() { AdaptiveFeatureGenerator windowFeatureGenerator = new WindowFeatureGenerator( new IdentityFeatureGenerator(), 0, 1); int testTokenIndex = testSentence.length - 1; windowFeatureGenerator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(1, features.size()); Assert.assertEquals("h", features.get(0)); } /** * Tests for a window size of previous and next 2 if the features are correct. */ @Test public void testForCorrectFeatures() { AdaptiveFeatureGenerator windowFeatureGenerator = new WindowFeatureGenerator( new IdentityFeatureGenerator(), 2, 2); int testTokenIndex = 3; windowFeatureGenerator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(5, features.size()); Assert.assertEquals("d", features.get(0)); Assert.assertEquals("p1c", features.get(1)); Assert.assertEquals("p2b", features.get(2)); Assert.assertEquals("n1e", features.get(3)); Assert.assertEquals("n2f", features.get(4)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000174 14135770370 032662 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PrefixFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/PrefixFeatureGene0100664 0001750 0001750 00000005462 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class PrefixFeatureGeneratorTest { private List features; @Before public void setUp() throws Exception { features = new ArrayList<>(); } @Test public void lengthTest1() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 0; int suffixLength = 2; AdaptiveFeatureGenerator generator = new PrefixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("pre=T", features.get(0)); Assert.assertEquals("pre=Th", features.get(1)); } @Test public void lengthTest2() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 3; int suffixLength = 5; AdaptiveFeatureGenerator generator = new PrefixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(5, features.size()); Assert.assertEquals("pre=e", features.get(0)); Assert.assertEquals("pre=ex", features.get(1)); Assert.assertEquals("pre=exa", features.get(2)); Assert.assertEquals("pre=exam", features.get(3)); Assert.assertEquals("pre=examp", features.get(4)); } @Test public void lengthTest3() { String[] testSentence = new String[] {"This", "is", "an", "example", "sentence"}; int testTokenIndex = 1; int suffixLength = 5; AdaptiveFeatureGenerator generator = new PrefixFeatureGenerator(suffixLength); generator.createFeatures(features, testSentence, testTokenIndex, null); Assert.assertEquals(2, features.size()); Assert.assertEquals("pre=i", features.get(0)); Assert.assertEquals("pre=is", features.get(1)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_eval_CrossVa0100644 0000000 0000000 00000000172 14135770370 032643 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/eval/CrossValidationPartitionerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/eval/CrossValidationPartitio0100664 0001750 0001750 00000015334 14135770370 034254 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.NoSuchElementException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.eval.CrossValidationPartitioner.TrainingSampleStream; /** * Test for the {@link CrossValidationPartitioner} class. */ public class CrossValidationPartitionerTest { @Test public void testEmptyDataSet() throws IOException { Collection emptyCollection = Collections.emptySet(); CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(emptyCollection, 2); Assert.assertTrue(partitioner.hasNext()); Assert.assertNull(partitioner.next().read()); Assert.assertTrue(partitioner.hasNext()); Assert.assertNull(partitioner.next().read()); Assert.assertFalse(partitioner.hasNext()); try { // Should throw NoSuchElementException partitioner.next(); // ups, hasn't thrown one Assert.fail(); } catch (NoSuchElementException e) { // expected } } /** * Test 3-fold cross validation on a small sample data set. */ @Test public void test3FoldCV() throws IOException { List data = new LinkedList<>(); data.add("01"); data.add("02"); data.add("03"); data.add("04"); data.add("05"); data.add("06"); data.add("07"); data.add("08"); data.add("09"); data.add("10"); CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(data, 3); // first partition Assert.assertTrue(partitioner.hasNext()); TrainingSampleStream firstTraining = partitioner.next(); Assert.assertEquals("02", firstTraining.read()); Assert.assertEquals("03", firstTraining.read()); Assert.assertEquals("05", firstTraining.read()); Assert.assertEquals("06", firstTraining.read()); Assert.assertEquals("08", firstTraining.read()); Assert.assertEquals("09", firstTraining.read()); Assert.assertNull(firstTraining.read()); ObjectStream firstTest = firstTraining.getTestSampleStream(); Assert.assertEquals("01", firstTest.read()); Assert.assertEquals("04", firstTest.read()); Assert.assertEquals("07", firstTest.read()); Assert.assertEquals("10", firstTest.read()); Assert.assertNull(firstTest.read()); // second partition Assert.assertTrue(partitioner.hasNext()); TrainingSampleStream secondTraining = partitioner.next(); Assert.assertEquals("01", secondTraining.read()); Assert.assertEquals("03", secondTraining.read()); Assert.assertEquals("04", secondTraining.read()); Assert.assertEquals("06", secondTraining.read()); Assert.assertEquals("07", secondTraining.read()); Assert.assertEquals("09", secondTraining.read()); Assert.assertEquals("10", secondTraining.read()); Assert.assertNull(secondTraining.read()); ObjectStream secondTest = secondTraining.getTestSampleStream(); Assert.assertEquals("02", secondTest.read()); Assert.assertEquals("05", secondTest.read()); Assert.assertEquals("08", secondTest.read()); Assert.assertNull(secondTest.read()); // third partition Assert.assertTrue(partitioner.hasNext()); TrainingSampleStream thirdTraining = partitioner.next(); Assert.assertEquals("01", thirdTraining.read()); Assert.assertEquals("02", thirdTraining.read()); Assert.assertEquals("04", thirdTraining.read()); Assert.assertEquals("05", thirdTraining.read()); Assert.assertEquals("07", thirdTraining.read()); Assert.assertEquals("08", thirdTraining.read()); Assert.assertEquals("10", thirdTraining.read()); Assert.assertNull(thirdTraining.read()); ObjectStream thirdTest = thirdTraining.getTestSampleStream(); Assert.assertEquals("03", thirdTest.read()); Assert.assertEquals("06", thirdTest.read()); Assert.assertEquals("09", thirdTest.read()); Assert.assertNull(thirdTest.read()); Assert.assertFalse(partitioner.hasNext()); } @Test public void testFailSafty() throws IOException { List data = new LinkedList<>(); data.add("01"); data.add("02"); data.add("03"); data.add("04"); CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(data, 4); // Test that iterator from previous partition fails // if it is accessed TrainingSampleStream firstTraining = partitioner.next(); Assert.assertEquals("02", firstTraining.read()); TrainingSampleStream secondTraining = partitioner.next(); try { firstTraining.read(); Assert.fail(); } catch (IllegalStateException expected) { // the read above is expected to throw an exception } try { firstTraining.getTestSampleStream(); Assert.fail(); } catch (IllegalStateException expected) { // the read above is expected to throw an exception } // Test that training iterator fails if there is a test iterator secondTraining.getTestSampleStream(); try { secondTraining.read(); Assert.fail(); } catch (IllegalStateException expected) { // the read above is expected to throw an exception } // Test that test iterator from previous partition fails // if there is a new partition TrainingSampleStream thirdTraining = partitioner.next(); ObjectStream thridTest = thirdTraining.getTestSampleStream(); Assert.assertTrue(partitioner.hasNext()); partitioner.next(); try { thridTest.read(); Assert.fail(); } catch (IllegalStateException expected) { // the read above is expected to throw an exception } } @Test public void testToString() { Collection emptyCollection = Collections.emptySet(); new CrossValidationPartitioner<>(emptyCollection, 10).toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/eval/MeanTest.java0100664 0001750 0001750 00000003154 14135770370 032071 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link Mean} class. */ public class MeanTest { @Test public void testMeanCalculation() { Mean a = new Mean(); a.add(1); Assert.assertEquals(1, a.count()); Assert.assertEquals(1d, a.mean(), 0.00001d); a.add(1); Assert.assertEquals(2, a.count()); Assert.assertEquals(1d, a.mean(), 0.00001d); a.toString(); Mean b = new Mean(); b.add(0.5); Assert.assertEquals(1, b.count()); Assert.assertEquals(0.5d, b.mean(), 0.00001d); b.add(2); Assert.assertEquals(2, b.count()); Assert.assertEquals(1.25d, b.mean(), 0.00001d); b.toString(); Mean c = new Mean(); Assert.assertEquals(0, c.count()); Assert.assertEquals(0d, c.mean(), 0.00001d); c.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/eval/FMeasureTest.java0100664 0001750 0001750 00000011714 14135770370 032721 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * Tests for the {@link FMeasure} class. */ public class FMeasureTest { private static final double DELTA = 1.0E-9d; private Span[] gold = { new Span(8, 9), new Span(9, 10), new Span(10, 12), new Span(13, 14), new Span(14, 15), new Span(15, 16) }; private Span[] predicted = { new Span(14, 15), new Span(15, 16), new Span(100, 120), new Span(210, 220), new Span(220, 230) }; private Span[] predictedCompletelyDistinct = { new Span(100, 120), new Span(210, 220), new Span(211, 220), new Span(212, 220), new Span(220, 230) }; private Span[] goldToMerge = { new Span(8, 9), new Span(9, 10), new Span(11, 11), new Span(13, 14), new Span(14, 15), new Span(15, 16), new Span(18, 19), }; private Span[] predictedToMerge = { new Span(8, 9), new Span(14, 15), new Span(15, 16), new Span(100, 120), new Span(210, 220), new Span(220, 230) }; /** * Test for the {@link EvaluatorUtil#countTruePositives(Span[], Span[])} method. */ @Test public void testCountTruePositives() { Assert.assertEquals(0, FMeasure.countTruePositives(new Object[] {}, new Object[] {})); Assert.assertEquals(gold.length, FMeasure.countTruePositives(gold, gold)); Assert.assertEquals(0, FMeasure.countTruePositives(gold, predictedCompletelyDistinct)); Assert.assertEquals(2, FMeasure.countTruePositives(gold, predicted)); } /** * Test for the {@link EvaluatorUtil#precision(Span[], Span[])} method. */ @Test public void testPrecision() { Assert.assertEquals(1.0d, FMeasure.precision(gold, gold), DELTA); Assert.assertEquals(0, FMeasure.precision(gold, predictedCompletelyDistinct), DELTA); Assert.assertEquals(Double.NaN, FMeasure.precision(gold, new Object[] {}), DELTA); Assert.assertEquals(0, FMeasure.precision(new Object[] {}, gold), DELTA); Assert.assertEquals(2d / predicted.length, FMeasure.precision(gold, predicted), DELTA); } /** * Test for the {@link EvaluatorUtil#recall(Span[], Span[])} method. */ @Test public void testRecall() { Assert.assertEquals(1.0d, FMeasure.recall(gold, gold), DELTA); Assert.assertEquals(0, FMeasure.recall(gold, predictedCompletelyDistinct), DELTA); Assert.assertEquals(0, FMeasure.recall(gold, new Object[] {}), DELTA); Assert.assertEquals(Double.NaN, FMeasure.recall(new Object[] {}, gold), DELTA); Assert.assertEquals(2d / gold.length, FMeasure.recall(gold, predicted), DELTA); } @Test public void testEmpty() { FMeasure fm = new FMeasure(); Assert.assertEquals(-1, fm.getFMeasure(), DELTA); Assert.assertEquals(0, fm.getRecallScore(), DELTA); Assert.assertEquals(0, fm.getPrecisionScore(), DELTA); } @Test public void testPerfect() { FMeasure fm = new FMeasure(); fm.updateScores(gold, gold); Assert.assertEquals(1, fm.getFMeasure(), DELTA); Assert.assertEquals(1, fm.getRecallScore(), DELTA); Assert.assertEquals(1, fm.getPrecisionScore(), DELTA); } @Test public void testMerge() { FMeasure fm = new FMeasure(); fm.updateScores(gold, predicted); fm.updateScores(goldToMerge, predictedToMerge); FMeasure fmMerge = new FMeasure(); fmMerge.updateScores(gold, predicted); FMeasure toMerge = new FMeasure(); toMerge.updateScores(goldToMerge, predictedToMerge); fmMerge.mergeInto(toMerge); double selected1 = predicted.length; double target1 = gold.length; double tp1 = FMeasure.countTruePositives(gold, predicted); double selected2 = predictedToMerge.length; double target2 = goldToMerge.length; double tp2 = FMeasure.countTruePositives(goldToMerge, predictedToMerge); Assert.assertEquals((tp1 + tp2) / (target1 + target2), fm.getRecallScore(), DELTA); Assert.assertEquals((tp1 + tp2) / (selected1 + selected2), fm.getPrecisionScore(), DELTA); Assert.assertEquals(fm.getRecallScore(), fmMerge.getRecallScore(), DELTA); Assert.assertEquals(fm.getPrecisionScore(), fmMerge.getPrecisionScore(), DELTA); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_util_model_ByteAr0100644 0000000 0000000 00000000164 14135770370 032623 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/model/ByteArraySerializerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/model/ByteArraySerializerTes0100664 0001750 0001750 00000003002 14135770370 034202 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.Random; import org.junit.Assert; import org.junit.Test; public class ByteArraySerializerTest { @Test public void testSerialization() throws IOException { byte[] b = new byte[1024]; new Random(23).nextBytes(b); ByteArraySerializer serializer = new ByteArraySerializer(); ByteArrayOutputStream bOut = new ByteArrayOutputStream(); serializer.serialize(Arrays.copyOf(b, b.length), bOut) ; Assert.assertArrayEquals(b, bOut.toByteArray()); Assert.assertArrayEquals(b, serializer.create(new ByteArrayInputStream(b))); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/util/ParagraphStreamTest.java0100664 0001750 0001750 00000004031 14135770370 033336 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import org.junit.Assert; import org.junit.Test; public class ParagraphStreamTest { @Test public void testSimpleReading() throws IOException { try (ParagraphStream paraStream = new ParagraphStream( ObjectStreamUtils.createObjectStream("1", "2", "", "", "4", "5"))) { Assert.assertEquals("1\n2\n", paraStream.read()); Assert.assertEquals("4\n5\n", paraStream.read()); Assert.assertNull(paraStream.read()); } try (ParagraphStream paraStream = new ParagraphStream( ObjectStreamUtils.createObjectStream("1", "2", "", "", "4", "5", ""))) { Assert.assertEquals("1\n2\n", paraStream.read()); Assert.assertEquals("4\n5\n", paraStream.read()); Assert.assertNull(paraStream.read()); } } @Test public void testReset() throws IOException { try (ParagraphStream paraStream = new ParagraphStream( ObjectStreamUtils.createObjectStream("1", "2", "", "", "4", "5", ""))) { Assert.assertEquals("1\n2\n", paraStream.read()); paraStream.reset(); Assert.assertEquals("1\n2\n", paraStream.read()); Assert.assertEquals("4\n5\n", paraStream.read()); Assert.assertNull(paraStream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000163 14135770370 032574 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest0100664 0001750 0001750 00000007651 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; import java.util.stream.Collectors; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTaggerMETest; import opennlp.tools.util.FileUtil; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelType; public class TokenNameFinderModelTest { @Test public void testNERWithPOSModel() throws IOException { // create a resources folder Path resourcesFolder = Files.createTempDirectory("resources").toAbsolutePath(); // save a POS model there POSModel posModel = POSTaggerMETest.trainPOSModel(ModelType.MAXENT); File posModelFile = new File(resourcesFolder.toFile(),"pos-model.bin"); posModel.serialize(posModelFile); Assert.assertTrue(posModelFile.exists()); // load feature generator xml bytes InputStream fgInputStream = this.getClass().getResourceAsStream("ner-pos-features.xml"); BufferedReader buffers = new BufferedReader(new InputStreamReader(fgInputStream)); String featureGeneratorString = buffers.lines(). collect(Collectors.joining("\n")); // create a featuregenerator file Path featureGenerator = Files.createTempFile("ner-featuregen", ".xml"); Files.write(featureGenerator, featureGeneratorString.getBytes()); Map resources; try { resources = TokenNameFinderTrainerTool.loadResources(resourcesFolder.toFile(), featureGenerator.toAbsolutePath().toFile()); } catch (IOException e) { throw new TerminateToolException(-1, e.getMessage(), e); } finally { Files.delete(featureGenerator); } // train a name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/voa1.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, sampleStream, params, TokenNameFinderFactory.create(null, featureGeneratorString.getBytes(), resources, new BioCodec())); File model = File.createTempFile("nermodel", ".bin"); try { FileOutputStream modelOut = new FileOutputStream(model); nameFinderModel.serialize(modelOut); modelOut.close(); Assert.assertTrue(model.exists()); } finally { model.delete(); FileUtil.deleteDirectory(resourcesFolder.toFile()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java0100664 0001750 0001750 00000022410 14135770370 033104 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * This is the test class for {@link NameSample}. */ public class NameSampleTest { /** * Create a NameSample from scratch and validate it. * * @param useTypes if to use nametypes * @return the NameSample */ private static NameSample createSimpleNameSample(boolean useTypes) { String[] sentence = {"U", ".", "S", ".", "President", "Barack", "Obama", "is", "considering", "sending", "additional", "American", "forces", "to", "Afghanistan", "."}; Span[] names = {new Span(0, 4, "Location"), new Span(5, 7, "Person"), new Span(14, 15, "Location")}; NameSample nameSample; if (useTypes) { nameSample = new NameSample(sentence, names, false); } else { Span[] namesWithoutType = new Span[names.length]; for (int i = 0; i < names.length; i++) { namesWithoutType[i] = new Span(names[i].getStart(), names[i].getEnd()); } nameSample = new NameSample(sentence, namesWithoutType, false); } return nameSample; } @Test public void testNameSampleSerDe() throws IOException { NameSample nameSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(nameSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); NameSample deSerializedNameSample = null; try { deSerializedNameSample = (NameSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedNameSample); Assert.assertArrayEquals(nameSample.getSentence(), deSerializedNameSample.getSentence()); Assert.assertArrayEquals(nameSample.getNames(), deSerializedNameSample.getNames()); Assert.assertArrayEquals(nameSample.getAdditionalContext(), deSerializedNameSample.getAdditionalContext()); } /** * Test serialization of sequential spans. */ @Test public void testSequentialSpans() { String[] sentence = {"A", "Place", "a", "time", "A", "Person", "."}; Span[] names = {new Span(0, 2, "Place"), new Span(2, 4, "Time"), new Span(4, 6, "Person")}; NameSample nameSample = new NameSample(sentence, names, false); Assert.assertEquals( " A Place a time A Person .", nameSample.toString()); } /** * Test serialization of unsorted sequential spans. */ @Test public void testUnsortedSequentialSpans() { String[] sentence = {"A", "Place", "a", "time", "A", "Person", "."}; Span[] names = {new Span(0, 2, "Place"), new Span(4, 6, "Person"), new Span(2, 4, "Time")}; NameSample nameSample = new NameSample(sentence, names, false); Assert.assertEquals( " A Place a time A Person .", nameSample.toString()); } /** * Test if it fails to name spans are overlapping */ @Test(expected = RuntimeException.class) public void testOverlappingNameSpans() throws Exception { String[] sentence = {"A", "Place", "a", "time", "A", "Person", "."}; Span[] names = {new Span(0, 2, "Place"), new Span(3, 5, "Person"), new Span(2, 4, "Time")}; new NameSample(sentence, names, false); } /** * Checks if could create a NameSample without NameTypes, generate the * string representation and validate it. */ @Test public void testNoTypesToString() { String nameSampleStr = createSimpleNameSample(false).toString(); Assert.assertEquals(" U . S . President Barack Obama " + " is considering " + "sending additional American forces to Afghanistan .", nameSampleStr); } /** * Checks if could create a NameSample with NameTypes, generate the * string representation and validate it. */ @Test public void testWithTypesToString() throws Exception { String nameSampleStr = createSimpleNameSample(true).toString(); Assert.assertEquals(" U . S . President " + " Barack Obama " + "is considering sending additional American forces to Afghanistan .", nameSampleStr); NameSample parsedSample = NameSample.parse(" U . S . " + "President Barack Obama is considering sending " + "additional American forces to Afghanistan .", false); Assert.assertEquals(createSimpleNameSample(true), parsedSample); } /** * Checks that if the name is the last token in a sentence it is still outputed * correctly. */ @Test public void testNameAtEnd() { String[] sentence = new String[] { "My", "name", "is", "Anna" }; NameSample sample = new NameSample(sentence, new Span[]{new Span(3, 4)}, false); Assert.assertEquals("My name is Anna ", sample.toString()); } /** * Tests if an additional space is correctly treated as one space. * * @throws Exception */ @Test public void testParseWithAdditionalSpace() throws Exception { String line = " M . K . Schwitters ? Heartfield ?"; NameSample test = NameSample.parse(line, false); Assert.assertEquals(8, test.getSentence().length); } /** * Checks if it accepts name type with some special characters */ @Test public void testTypeWithSpecialChars() throws Exception { NameSample parsedSample = NameSample .parse( " U . S . " + "President Barack Obama is considering sending " + "additional American forces to Afghanistan .", false); Assert.assertEquals(3, parsedSample.getNames().length); Assert.assertEquals("type-1", parsedSample.getNames()[0].getType()); Assert.assertEquals("type_2", parsedSample.getNames()[1].getType()); Assert.assertEquals("type_3-/;.,&%$", parsedSample.getNames()[2].getType()); } /** * Test if it fails to parse empty type */ @Test(expected = IOException.class) public void testMissingType() throws Exception { NameSample.parse(" token ", false); } /** * Test if it fails to parse type with space * @throws Exception */ @Test(expected = IOException.class) public void testTypeWithSpace() throws Exception { NameSample.parse(" token ", false); } /** * Test if it fails to parse type with new line * @throws Exception */ @Test(expected = IOException.class) public void testTypeWithNewLine() throws Exception { NameSample.parse(" token ", false); } /** * Test if it fails to parse type with : * @throws Exception */ @Test(expected = IOException.class) public void testTypeWithInvalidChar1() throws Exception { NameSample.parse(" token ", false); } /** * Test if it fails to parse type with > * @throws Exception */ @Test(expected = IOException.class) public void testTypeWithInvalidChar2() throws Exception { NameSample.parse("a> token ", false); } /** * Test if it fails to parse nested names * @throws Exception */ @Test(expected = IOException.class) public void testNestedNameSpans() throws Exception { NameSample.parse(" Kennedy City ", false); } @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createGoldSample().equals(createPredSample())); Assert.assertFalse(createPredSample().equals(new Object())); } public static NameSample createGoldSample() { return createSimpleNameSample(true); } public static NameSample createPredSample() { return createSimpleNameSample(false); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java0100664 0001750 0001750 00000033425 14135770370 033324 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.File; import java.nio.charset.StandardCharsets; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * This is the test class for {@link NameFinderME}. *

* A proper testing and evaluation of the name finder * is only possible with a large corpus which contains * a huge amount of test sentences. *

* The scope of this test is to make sure that the name finder * code can be executed. This test can not detect * mistakes which lead to incorrect feature generation * or other mistakes which decrease the tagging * performance of the name finder. *

* In this test the {@link NameFinderME} is trained with * a small amount of training sentences and then the * computed model is used to predict sentences from the * training sentences. */ public class NameFinderMETest { private static final String TYPE_OVERRIDE = "aType"; private static final String DEFAULT = "default"; @Test public void testNameFinder() throws Exception { // train the name finder String encoding = "ISO-8859-1"; ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/AnnotatedSentences.txt")), encoding)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); TokenNameFinder nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = {"Alisa", "appreciated", "the", "hint", "and", "enjoyed", "a", "delicious", "traditional", "meal."}; Span[] names = nameFinder.find(sentence); Assert.assertEquals(1, names.length); Assert.assertEquals(new Span(0, 1, DEFAULT), names[0]); sentence = new String[] { "Hi", "Mike", ",", "it's", "Stefanie", "Schmidt", "." }; names = nameFinder.find(sentence); Assert.assertEquals(2, names.length); Assert.assertEquals(new Span(1, 2, DEFAULT), names[0]); Assert.assertEquals(new Span(4, 6, DEFAULT), names[1]); } /** * Train NamefinderME using AnnotatedSentencesWithTypes.txt with "person" * nameType and try the model in a sample text. */ @Test public void testNameFinderWithTypes() throws Exception { // train the name finder String encoding = "ISO-8859-1"; ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/AnnotatedSentencesWithTypes.txt")), encoding)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence2 = new String[] { "Hi", "Mike", ",", "it's", "Stefanie", "Schmidt", "." }; Span[] names2 = nameFinder.find(sentence2); Assert.assertEquals(2, names2.length); Assert.assertEquals(new Span(1, 2, "person"), names2[0]); Assert.assertEquals(new Span(4, 6, "person"), names2[1]); Assert.assertEquals("person", names2[0].getType()); Assert.assertEquals("person", names2[1].getType()); String[] sentence = { "Alisa", "appreciated", "the", "hint", "and", "enjoyed", "a", "delicious", "traditional", "meal." }; Span[] names = nameFinder.find(sentence); Assert.assertEquals(1, names.length); Assert.assertEquals(new Span(0, 1, "person"), names[0]); Assert.assertTrue(hasOtherAsOutcome(nameFinderModel)); } /** * Train NamefinderME using OnlyWithNames.train. The goal is to check if the model validator accepts it. * This is related to the issue OPENNLP-9 */ @Test public void testOnlyWithNames() throws Exception { // train the name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/OnlyWithNames.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = ("Neil Abercrombie Anibal Acevedo-Vila Gary Ackerman " + "Robert Aderholt Daniel Akaka Todd Akin Lamar Alexander Rodney Alexander").split("\\s+"); Span[] names1 = nameFinder.find(sentence); Assert.assertEquals(new Span(0, 2, DEFAULT), names1[0]); Assert.assertEquals(new Span(2, 4, DEFAULT), names1[1]); Assert.assertEquals(new Span(4, 6, DEFAULT), names1[2]); Assert.assertFalse(hasOtherAsOutcome(nameFinderModel)); } @Test public void testOnlyWithNamesTypeOverride() throws Exception { // train the name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/OnlyWithNames.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", TYPE_OVERRIDE, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = ("Neil Abercrombie Anibal Acevedo-Vila Gary Ackerman " + "Robert Aderholt Daniel Akaka Todd Akin Lamar Alexander Rodney Alexander").split("\\s+"); Span[] names1 = nameFinder.find(sentence); Assert.assertEquals(new Span(0, 2, TYPE_OVERRIDE), names1[0]); Assert.assertEquals(new Span(2, 4, TYPE_OVERRIDE), names1[1]); Assert.assertEquals(new Span(4, 6, TYPE_OVERRIDE), names1[2]); Assert.assertFalse(hasOtherAsOutcome(nameFinderModel)); } /** * Train NamefinderME using OnlyWithNamesWithTypes.train. * The goal is to check if the model validator accepts it. * This is related to the issue OPENNLP-9 */ @Test public void testOnlyWithNamesWithTypes() throws Exception { // train the name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/OnlyWithNamesWithTypes.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = ("Neil Abercrombie Anibal Acevedo-Vila Gary Ackerman " + "Robert Aderholt Daniel Akaka Todd Akin Lamar Alexander Rodney Alexander").split("\\s+"); Span[] names1 = nameFinder.find(sentence); Assert.assertEquals(new Span(0, 2, "person"), names1[0]); Assert.assertEquals(new Span(2, 4, "person"), names1[1]); Assert.assertEquals(new Span(4, 6, "person"), names1[2]); Assert.assertEquals("person", names1[2].getType()); Assert.assertFalse(hasOtherAsOutcome(nameFinderModel)); } /** * Train NamefinderME using OnlyWithNames.train. The goal is to check if the model validator accepts it. * This is related to the issue OPENNLP-9 */ @Test public void testOnlyWithEntitiesWithTypes() throws Exception { // train the name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/OnlyWithEntitiesWithTypes.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT"); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = "NATO United States Barack Obama".split("\\s+"); Span[] names1 = nameFinder.find(sentence); Assert.assertEquals(new Span(0, 1, "organization"), names1[0]); // NATO Assert.assertEquals(new Span(1, 3, "location"), names1[1]); // United States Assert.assertEquals("person", names1[2].getType()); Assert.assertFalse(hasOtherAsOutcome(nameFinderModel)); } private boolean hasOtherAsOutcome(TokenNameFinderModel nameFinderModel) { SequenceClassificationModel model = nameFinderModel.getNameFinderSequenceModel(); String[] outcomes = model.getOutcomes(); for (String outcome : outcomes) { if (outcome.equals(NameFinderME.OTHER)) { return true; } } return false; } @Test public void testDropOverlappingSpans() { Span[] spans = new Span[] {new Span(1, 10), new Span(1,11), new Span(1,11), new Span(5, 15)}; Span[] remainingSpan = NameFinderME.dropOverlappingSpans(spans); Assert.assertEquals(new Span(1, 11), remainingSpan[0]); } /** * Train NamefinderME using voa1.train with several * nameTypes and try the model in a sample text. */ @Test public void testNameFinderWithMultipleTypes() throws Exception { // train the name finder ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/namefind/voa1.train")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec())); NameFinderME nameFinder = new NameFinderME(nameFinderModel); // now test if it can detect the sample sentences String[] sentence = new String[] { "U", ".", "S", ".", "President", "Barack", "Obama", "has", "arrived", "in", "South", "Korea", ",", "where", "he", "is", "expected", "to", "show", "solidarity", "with", "the", "country", "'", "s", "president", "in", "demanding", "North", "Korea", "move", "toward", "ending", "its", "nuclear", "weapons", "programs", "." }; Span[] names1 = nameFinder.find(sentence); Assert.assertEquals(new Span(0, 4, "location"), names1[0]); Assert.assertEquals(new Span(5, 7, "person"), names1[1]); Assert.assertEquals(new Span(10, 12, "location"), names1[2]); Assert.assertEquals(new Span(28, 30, "location"), names1[3]); Assert.assertEquals("location", names1[0].getType()); Assert.assertEquals("person", names1[1].getType()); Assert.assertEquals("location", names1[2].getType()); Assert.assertEquals("location", names1[3].getType()); sentence = new String[] { "Scott", "Snyder", "is", "the", "director", "of", "the", "Center", "for", "U", ".", "S", ".", "Korea", "Policy", "." }; Span[] names2 = nameFinder.find(sentence); Assert.assertEquals(2, names2.length); Assert.assertEquals(new Span(0, 2, "person"), names2[0]); Assert.assertEquals(new Span(7, 15, "organization"), names2[1]); Assert.assertEquals("person", names2[0].getType()); Assert.assertEquals("organization", names2[1].getType()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_RegexNam0100644 0000000 0000000 00000000165 14135770370 032570 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/RegexNameFinderFactoryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/RegexNameFinderFactoryTe0100664 0001750 0001750 00000010260 14135770370 034126 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.Span; public class RegexNameFinderFactoryTest { private static RegexNameFinder regexNameFinder; private static String text = "my email is opennlp@gmail.com and my phone num is" + " 123-234-5678 and i like" + " https://www.google.com and I visited MGRS 11sku528111 AKA 11S KU 528 111 and" + " DMS 45N 123W AKA" + " +45.1234, -123.12 AKA 45.1234N 123.12W AKA 45 30 N 50 30 W"; @Before public void setUp() { regexNameFinder = RegexNameFinderFactory.getDefaultRegexNameFinders( RegexNameFinderFactory.DEFAULT_REGEX_NAME_FINDER.DEGREES_MIN_SEC_LAT_LON, RegexNameFinderFactory.DEFAULT_REGEX_NAME_FINDER.EMAIL, RegexNameFinderFactory.DEFAULT_REGEX_NAME_FINDER.MGRS, RegexNameFinderFactory.DEFAULT_REGEX_NAME_FINDER.USA_PHONE_NUM, RegexNameFinderFactory.DEFAULT_REGEX_NAME_FINDER.URL); } @Test public void testEmail() throws Exception { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(text); Span[] find = regexNameFinder.find(tokens); List spanList = Arrays.asList(find); Assert.assertTrue(spanList.contains(new Span(3, 4, "EMAIL"))); Span emailSpan = new Span(3, 4, "EMAIL"); Assert.assertEquals("opennlp@gmail.com", tokens[emailSpan.getStart()]); } @Test public void testPhoneNumber() throws Exception { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(text); Span[] find = regexNameFinder.find(tokens); List spanList = Arrays.asList(find); Span phoneSpan = new Span(9, 10, "PHONE_NUM"); Assert.assertTrue(spanList.contains(phoneSpan)); Assert.assertEquals("123-234-5678", tokens[phoneSpan.getStart()]); } @Test public void testURL() throws Exception { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(text); Span[] find = regexNameFinder.find(tokens); List spanList = Arrays.asList(find); Span urlSpan = new Span(13, 14, "URL"); Assert.assertTrue(spanList.contains(urlSpan)); Assert.assertEquals("https://www.google.com", tokens[urlSpan.getStart()]); } @Test public void testLatLong() throws Exception { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(text); Span[] find = regexNameFinder.find(tokens); List spanList = Arrays.asList(find); Span latLongSpan1 = new Span(22, 24, "DEGREES_MIN_SEC_LAT_LON"); Span latLongSpan2 = new Span(35, 41, "DEGREES_MIN_SEC_LAT_LON"); Assert.assertTrue(spanList.contains(latLongSpan1)); Assert.assertTrue(spanList.contains(latLongSpan2)); Assert.assertEquals("528", tokens[latLongSpan1.getStart()]); Assert.assertEquals("45", tokens[latLongSpan2.getStart()]); } @Test public void testMgrs() throws Exception { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(text); Span[] find = regexNameFinder.find(tokens); List spanList = Arrays.asList(find); Span mgrsSpan1 = new Span(18, 19, "MGRS"); Span mgrsSpan2 = new Span(20, 24, "MGRS"); Assert.assertTrue(spanList.contains(mgrsSpan1)); Assert.assertTrue(spanList.contains(mgrsSpan2)); Assert.assertEquals("11SKU528111".toLowerCase(), tokens[mgrsSpan1.getStart()]); Assert.assertEquals("11S", tokens[mgrsSpan2.getStart()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_NameFind0100644 0000000 0000000 00000000164 14135770370 032542 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderEventStreamTes0100664 0001750 0001750 00000011755 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.Span; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; /** * This is the test class for {@link NameFinderEventStream}. */ public class NameFinderEventStreamTest { private static final String[] SENTENCE = {"Elise", "Wendel", "appreciated", "the", "hint", "and", "enjoyed", "a", "delicious", "traditional", "meal", "."}; private static final NameContextGenerator CG = new DefaultNameContextGenerator( (AdaptiveFeatureGenerator[]) null); /** * Tests the correctly generated outcomes for a test sentence. */ @Test public void testOutcomesForSingleTypeSentence() throws IOException { NameSample nameSample = new NameSample(SENTENCE, new Span[]{new Span(0, 2, "person")}, false); try (ObjectStream eventStream = new NameFinderEventStream( ObjectStreamUtils.createObjectStream(nameSample))) { Assert.assertEquals("person-" + NameFinderME.START, eventStream.read().getOutcome()); Assert.assertEquals("person-" + NameFinderME.CONTINUE, eventStream.read().getOutcome()); for (int i = 0; i < 10; i++) { Assert.assertEquals(NameFinderME.OTHER, eventStream.read().getOutcome()); } Assert.assertNull(eventStream.read()); } } /** * Tests the correctly generated outcomes for a test sentence. If the Span * declares its type, passing the type to event stream has no effect */ @Test public void testOutcomesTypeCantOverride() throws IOException { String type = "XYZ"; NameSample nameSample = new NameSample(SENTENCE, new Span[] { new Span(0, 2, "person") }, false); ObjectStream eventStream = new NameFinderEventStream( ObjectStreamUtils.createObjectStream(nameSample), type, CG, null); String prefix = type + "-"; Assert.assertEquals(prefix + NameFinderME.START, eventStream.read().getOutcome()); Assert.assertEquals(prefix + NameFinderME.CONTINUE, eventStream.read().getOutcome()); for (int i = 0; i < 10; i++) { Assert.assertEquals(NameFinderME.OTHER, eventStream.read().getOutcome()); } Assert.assertNull(eventStream.read()); eventStream.close(); } /** * Tests the correctly generated outcomes for a test sentence. If the Span * does not declare its type and the user passed a type, use the type from * user */ @Test public void testOutcomesWithType() throws IOException { String type = "XYZ"; NameSample nameSample = new NameSample(SENTENCE, new Span[] { new Span(0, 2) }, false); ObjectStream eventStream = new NameFinderEventStream( ObjectStreamUtils.createObjectStream(nameSample), type, CG, null); String prefix = type + "-"; Assert.assertEquals(prefix + NameFinderME.START, eventStream.read().getOutcome()); Assert.assertEquals(prefix + NameFinderME.CONTINUE, eventStream.read().getOutcome()); for (int i = 0; i < 10; i++) { Assert.assertEquals(NameFinderME.OTHER, eventStream.read().getOutcome()); } Assert.assertNull(eventStream.read()); eventStream.close(); } /** * Tests the correctly generated outcomes for a test sentence. If the Span * does not declare its type and the user did not set a type, it will use * "default". */ @Test public void testOutcomesTypeEmpty() throws IOException { NameSample nameSample = new NameSample(SENTENCE, new Span[] { new Span(0, 2) }, false); ObjectStream eventStream = new NameFinderEventStream( ObjectStreamUtils.createObjectStream(nameSample), null, CG, null); String prefix = "default-"; Assert.assertEquals(prefix + NameFinderME.START, eventStream.read().getOutcome()); Assert.assertEquals(prefix + NameFinderME.CONTINUE, eventStream.read().getOutcome()); for (int i = 0; i < 10; i++) { Assert.assertEquals(NameFinderME.OTHER, eventStream.read().getOutcome()); } Assert.assertNull(eventStream.read()); eventStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_NameSamp0100644 0000000 0000000 00000000163 14135770370 032561 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTypeFilterTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTypeFilterTest0100664 0001750 0001750 00000006406 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public class NameSampleTypeFilterTest { private static NameSampleTypeFilter filter; private static final String text = " NATO Secretary - General " + " Anders Fogh Rasmussen made clear that despite an intensifying " + "insurgency and uncertainty over whether U . S . President " + " Barack Obama will send more troops , NATO " + "will remain in Afghanistan ."; private static final String person = "person"; private static final String organization = "organization"; @Test public void testNoFilter() throws IOException { final String[] types = new String[] {}; filter = new NameSampleTypeFilter(types, sampleStream(text)); NameSample ns = filter.read(); Assert.assertEquals(0, ns.getNames().length); } @Test public void testSingleFilter() throws IOException { final String[] types = new String[] {organization}; filter = new NameSampleTypeFilter(types, sampleStream(text)); NameSample ns = filter.read(); Assert.assertEquals(1, ns.getNames().length); Assert.assertEquals(organization, ns.getNames()[0].getType()); } @Test public void testMultiFilter() throws IOException { final String[] types = new String[] {person, organization}; filter = new NameSampleTypeFilter(types, sampleStream(text)); NameSample ns = filter.read(); Map> collect = Arrays.stream(ns.getNames()) .collect(Collectors.groupingBy(Span::getType)); Assert.assertEquals(2, collect.size()); Assert.assertEquals(2, collect.get(person).size()); Assert.assertEquals(1, collect.get(organization).size()); } private ObjectStream sampleStream(String sampleText) throws IOException { InputStreamFactory in = () -> new ByteArrayInputStream(sampleText.getBytes(StandardCharsets.UTF_8)); return new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_NameSamp0100644 0000000 0000000 00000000163 14135770370 032561 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleDataStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleDataStreamTest0100664 0001750 0001750 00000040240 14135770370 034133 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.io.ObjectStreamException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** * This is the test class for {@link NameSampleDataStream}.. */ public class NameSampleDataStreamTest { private static final String person = "person"; private static final String date = "date"; private static final String location = "location"; private static final String organization = "organization"; /** * Create a string from a array section. * * @param tokens the tokens * @param nameSpan the section * @return the string */ private static String sublistToString(String[] tokens, Span nameSpan) { StringBuilder sb = new StringBuilder(); for (int i = nameSpan.getStart(); i < nameSpan.getEnd(); i++) { sb.append(tokens[i]).append(" "); } return sb.toString().trim(); } /** * Create a NameSampleDataStream from a corpus with entities annotated but * without nameType and validate it. * * @throws Exception */ @Test public void testWithoutNameTypes() throws Exception { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/AnnotatedSentences.txt"); NameSampleDataStream ds = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1)); NameSample ns = ds.read(); String[] expectedNames = { "Alan McKennedy", "Julie", "Marie Clara", "Stefanie Schmidt", "Mike", "Stefanie Schmidt", "George", "Luise", "George Bauer", "Alisa Fernandes", "Alisa", "Mike Sander", "Stefan Miller", "Stefan Miller", "Stefan Miller", "Elenor Meier", "Gina Schneider", "Bruno Schulz", "Michel Seile", "George Miller", "Miller", "Peter Schubert", "Natalie" }; List names = new ArrayList<>(); List spans = new ArrayList<>(); while (ns != null) { for (Span nameSpan : ns.getNames()) { names.add(sublistToString(ns.getSentence(), nameSpan)); spans.add(nameSpan); } ns = ds.read(); } ds.close(); assertEquals(expectedNames.length, names.size()); assertEquals(createDefaultSpan(6,8), spans.get(0)); assertEquals(createDefaultSpan(3,4), spans.get(1)); assertEquals(createDefaultSpan(1,3), spans.get(2)); assertEquals(createDefaultSpan(4,6), spans.get(3)); assertEquals(createDefaultSpan(1,2), spans.get(4)); assertEquals(createDefaultSpan(4,6), spans.get(5)); assertEquals(createDefaultSpan(2,3), spans.get(6)); assertEquals(createDefaultSpan(16,17), spans.get(7)); assertEquals(createDefaultSpan(18,20), spans.get(8)); assertEquals(createDefaultSpan(0,2), spans.get(9)); assertEquals(createDefaultSpan(0,1), spans.get(10)); assertEquals(createDefaultSpan(3,5), spans.get(11)); assertEquals(createDefaultSpan(3,5), spans.get(12)); assertEquals(createDefaultSpan(10,12), spans.get(13)); assertEquals(createDefaultSpan(1,3), spans.get(14)); assertEquals(createDefaultSpan(6,8), spans.get(15)); assertEquals(createDefaultSpan(6,8), spans.get(16)); assertEquals(createDefaultSpan(8,10), spans.get(17)); assertEquals(createDefaultSpan(12,14), spans.get(18)); assertEquals(createDefaultSpan(1,3), spans.get(19)); assertEquals(createDefaultSpan(0,1), spans.get(20)); assertEquals(createDefaultSpan(2,4), spans.get(21)); assertEquals(createDefaultSpan(5,6), spans.get(22)); } private Span createDefaultSpan(int s, int e) { return new Span(s, e, NameSample.DEFAULT_TYPE); } /** * Checks that invalid spans cause an {@link ObjectStreamException} to be thrown. */ @Test public void testWithoutNameTypeAndInvalidData() { try (NameSampleDataStream sampleStream = new NameSampleDataStream( ObjectStreamUtils.createObjectStream(" Name "))) { sampleStream.read(); fail(); } catch (IOException expected) { // the read above is expected to throw an exception } try (NameSampleDataStream sampleStream = new NameSampleDataStream( ObjectStreamUtils.createObjectStream(" Name "))) { sampleStream.read(); fail(); } catch (IOException expected) { // the read above is expected to throw an exception } try (NameSampleDataStream sampleStream = new NameSampleDataStream( ObjectStreamUtils.createObjectStream( " Person Street "))) { sampleStream.read(); fail(); } catch (IOException expected) { // the read above is expected to throw an exception } } /** * Create a NameSampleDataStream from a corpus with entities annotated * with multiple nameTypes, like person, date, location and organization, and validate it. * * @throws Exception */ @Test public void testWithNameTypes() throws Exception { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/voa1.train"); NameSampleDataStream ds = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); Map> names = new HashMap<>(); Map> spans = new HashMap<>(); NameSample ns; while ((ns = ds.read()) != null) { Span[] nameSpans = ns.getNames(); for (Span nameSpan : nameSpans) { if (!names.containsKey(nameSpan.getType())) { names.put(nameSpan.getType(), new ArrayList<>()); spans.put(nameSpan.getType(), new ArrayList<>()); } names.get(nameSpan.getType()).add(sublistToString(ns.getSentence(), nameSpan)); spans.get(nameSpan.getType()).add(nameSpan); } } ds.close(); String[] expectedPerson = { "Barack Obama", "Obama", "Obama", "Lee Myung - bak", "Obama", "Obama", "Scott Snyder", "Snyder", "Obama", "Obama", "Obama", "Tim Peters", "Obama", "Peters" }; String[] expectedDate = { "Wednesday", "Thursday", "Wednesday" }; String[] expectedLocation = { "U . S .", "South Korea", "North Korea", "China", "South Korea", "North Korea", "North Korea", "U . S .", "South Korea", "United States", "Pyongyang", "North Korea", "South Korea", "Afghanistan", "Seoul", "U . S .", "China" }; String[] expectedOrganization = {"Center for U . S . Korea Policy"}; assertEquals(expectedPerson.length, names.get(person).size()); assertEquals(expectedDate.length, names.get(date).size()); assertEquals(expectedLocation.length, names.get(location).size()); assertEquals(expectedOrganization.length, names.get(organization).size()); assertEquals(new Span(5,7, person), spans.get(person).get(0)); assertEquals(expectedPerson[0], names.get(person).get(0)); assertEquals(new Span(10,11, person), spans.get(person).get(1)); assertEquals(expectedPerson[1], names.get(person).get(1)); assertEquals(new Span(29,30, person), spans.get(person).get(2)); assertEquals(expectedPerson[2], names.get(person).get(2)); assertEquals(new Span(23,27, person), spans.get(person).get(3)); assertEquals(expectedPerson[3], names.get(person).get(3)); assertEquals(new Span(1,2, person), spans.get(person).get(4)); assertEquals(expectedPerson[4], names.get(person).get(4)); assertEquals(new Span(8,9, person), spans.get(person).get(5)); assertEquals(expectedPerson[5], names.get(person).get(5)); assertEquals(new Span(0,2, person), spans.get(person).get(6)); assertEquals(expectedPerson[6], names.get(person).get(6)); assertEquals(new Span(25,26, person), spans.get(person).get(7)); assertEquals(expectedPerson[7], names.get(person).get(7)); assertEquals(new Span(1,2, person), spans.get(person).get(8)); assertEquals(expectedPerson[8], names.get(person).get(8)); assertEquals(new Span(6,7, person), spans.get(person).get(9)); assertEquals(expectedPerson[9], names.get(person).get(9)); assertEquals(new Span(14,15, person), spans.get(person).get(10)); assertEquals(expectedPerson[10], names.get(person).get(10)); assertEquals(new Span(0,2, person), spans.get(person).get(11)); assertEquals(expectedPerson[11], names.get(person).get(11)); assertEquals(new Span(12,13, person), spans.get(person).get(12)); assertEquals(expectedPerson[12], names.get(person).get(12)); assertEquals(new Span(12,13, person), spans.get(person).get(13)); assertEquals(expectedPerson[13], names.get(person).get(13)); assertEquals(new Span(7,8, date), spans.get(date).get(0)); assertEquals(expectedDate[0], names.get(date).get(0)); assertEquals(new Span(27,28, date), spans.get(date).get(1)); assertEquals(expectedDate[1], names.get(date).get(1)); assertEquals(new Span(15,16, date), spans.get(date).get(2)); assertEquals(expectedDate[2], names.get(date).get(2)); assertEquals(new Span(0, 4, location), spans.get(location).get(0)); assertEquals(expectedLocation[0], names.get(location).get(0)); assertEquals(new Span(10,12, location), spans.get(location).get(1)); assertEquals(expectedLocation[1], names.get(location).get(1)); assertEquals(new Span(28,30, location), spans.get(location).get(2)); assertEquals(expectedLocation[2], names.get(location).get(2)); assertEquals(new Span(3,4, location), spans.get(location).get(3)); assertEquals(expectedLocation[3], names.get(location).get(3)); assertEquals(new Span(5,7, location), spans.get(location).get(4)); assertEquals(expectedLocation[4], names.get(location).get(4)); assertEquals(new Span(16,18, location), spans.get(location).get(5)); assertEquals(expectedLocation[5], names.get(location).get(5)); assertEquals(new Span(1,3, location), spans.get(location).get(6)); assertEquals(expectedLocation[6], names.get(location).get(6)); assertEquals(new Span(5,9, location), spans.get(location).get(7)); assertEquals(expectedLocation[7], names.get(location).get(7)); assertEquals(new Span(0,2, location), spans.get(location).get(8)); assertEquals(expectedLocation[8], names.get(location).get(8)); assertEquals(new Span(4,6, location), spans.get(location).get(9)); assertEquals(expectedLocation[9], names.get(location).get(9)); assertEquals(new Span(10,11, location), spans.get(location).get(10)); assertEquals(expectedLocation[10], names.get(location).get(10)); assertEquals(new Span(6,8, location), spans.get(location).get(11)); assertEquals(expectedLocation[11], names.get(location).get(11)); assertEquals(new Span(4,6, location), spans.get(location).get(12)); assertEquals(expectedLocation[12], names.get(location).get(12)); assertEquals(new Span(10,11, location), spans.get(location).get(13)); assertEquals(expectedLocation[13], names.get(location).get(13)); assertEquals(new Span(12,13, location), spans.get(location).get(14)); assertEquals(expectedLocation[14], names.get(location).get(14)); assertEquals(new Span(5,9, location), spans.get(location).get(15)); assertEquals(expectedLocation[15], names.get(location).get(15)); assertEquals(new Span(11,12, location), spans.get(location).get(16)); assertEquals(expectedLocation[16], names.get(location).get(16)); assertEquals(new Span(7,15, organization), spans.get(organization).get(0)); assertEquals(expectedOrganization[0], names.get(organization).get(0)); } @Test public void testWithNameTypeAndInvalidData() { try (NameSampleDataStream sampleStream = new NameSampleDataStream( ObjectStreamUtils.createObjectStream(" Name "))) { sampleStream.read(); fail(); } catch (IOException expected) { // the read above is expected to throw an exception } try (NameSampleDataStream sampleStream = new NameSampleDataStream( ObjectStreamUtils.createObjectStream( " Name "))) { sampleStream.read(); fail(); } catch (IOException expected) { // the read above is expected to throw an exception } } @Test public void testClearAdaptiveData() throws IOException { String trainingData = "a\n" + "b\n" + "c\n" + "\n" + "d\n"; ObjectStream untokenizedLineStream = new PlainTextByLineStream( new MockInputStreamFactory(trainingData), StandardCharsets.UTF_8); ObjectStream trainingStream = new NameSampleDataStream(untokenizedLineStream); assertFalse(trainingStream.read().isClearAdaptiveDataSet()); assertFalse(trainingStream.read().isClearAdaptiveDataSet()); assertFalse(trainingStream.read().isClearAdaptiveDataSet()); assertTrue(trainingStream.read().isClearAdaptiveDataSet()); assertNull(trainingStream.read()); trainingStream.close(); } @Test public void testHtmlNameSampleParsing() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/html1.train"); NameSampleDataStream ds = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); NameSample ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("", ns.getSentence()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("", ns.getSentence()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("", ns.getSentence()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("

    ", ns.getSentence()[0]); //
  • Advanced Integrated Pest Management
  • ns = ds.read(); assertEquals(6, ns.getSentence().length); assertEquals("
  • ", ns.getSentence()[0]); assertEquals("Advanced", ns.getSentence()[1]); assertEquals("Integrated", ns.getSentence()[2]); assertEquals("Pest", ns.getSentence()[3]); assertEquals("Management", ns.getSentence()[4]); assertEquals("
  • ", ns.getSentence()[5]); assertEquals(new Span(1, 5, organization), ns.getNames()[0]); //
  • Bay Cities Produce Co., Inc.
  • ns = ds.read(); assertEquals(7, ns.getSentence().length); assertEquals("
  • ", ns.getSentence()[0]); assertEquals("Bay", ns.getSentence()[1]); assertEquals("Cities", ns.getSentence()[2]); assertEquals("Produce", ns.getSentence()[3]); assertEquals("Co.,", ns.getSentence()[4]); assertEquals("Inc.", ns.getSentence()[5]); assertEquals("
  • ", ns.getSentence()[6]); assertEquals(new Span(1, 6, organization), ns.getNames()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("
", ns.getSentence()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("", ns.getSentence()[0]); ns = ds.read(); assertEquals(1, ns.getSentence().length); assertEquals("", ns.getSentence()[0]); assertNull(ds.read()); ds.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_Dictiona0100644 0000000 0000000 00000000174 14135770370 032614 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/DictionaryNameFinderEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/DictionaryNameFinderEval0100664 0001750 0001750 00000007214 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.namefind.NameEvaluationErrorListener; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringList; import opennlp.tools.util.eval.FMeasure; /** * Tests the evaluation of a {@link DictionaryNameFinder}. */ public class DictionaryNameFinderEvaluatorTest { @Test public void testEvaluator() throws IOException, URISyntaxException { DictionaryNameFinder nameFinder = new DictionaryNameFinder( createDictionary()); TokenNameFinderEvaluator evaluator = new TokenNameFinderEvaluator( nameFinder, new NameEvaluationErrorListener()); ObjectStream sample = createSample(); evaluator.evaluate(sample); sample.close(); FMeasure fmeasure = evaluator.getFMeasure(); Assert.assertTrue(fmeasure.getFMeasure() == 1); Assert.assertTrue(fmeasure.getRecallScore() == 1); } /** * Creates a NameSample stream using an annotated corpus * * @return * @throws IOException * @throws URISyntaxException */ private static ObjectStream createSample() throws IOException, URISyntaxException { InputStreamFactory in = new ResourceAsStreamFactory( DictionaryNameFinderEvaluatorTest.class, "/opennlp/tools/namefind/AnnotatedSentences.txt"); return new NameSampleDataStream(new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1)); } /** * Creates a dictionary with all names from the sample data. * * @return a dictionary * @throws IOException * @throws URISyntaxException */ private static Dictionary createDictionary() throws IOException, URISyntaxException { ObjectStream sampleStream = createSample(); NameSample sample = sampleStream.read(); List entries = new ArrayList<>(); while (sample != null) { Span[] names = sample.getNames(); if (names != null && names.length > 0) { String[] toks = sample.getSentence(); for (Span name : names) { String[] nameToks = new String[name.length()]; System.arraycopy(toks, name.getStart(), nameToks, 0, name.length()); entries.add(nameToks); } } sample = sampleStream.read(); } sampleStream.close(); Dictionary dictionary = new Dictionary(true); for (String[] entry : entries) { StringList dicEntry = new StringList(entry); dictionary.put(dicEntry); } return dictionary; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000167 14135770370 032600 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderEvaluator0100664 0001750 0001750 00000006557 14135770370 034214 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.namefind.NameEvaluationErrorListener; import opennlp.tools.util.Span; import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * This is the test class for {@link TokenNameFinderEvaluator}.. */ public class TokenNameFinderEvaluatorTest { /** Return a dummy name finder that always return something expected */ public TokenNameFinder mockTokenNameFinder(Span[] ret) { TokenNameFinder mockInstance = mock(TokenNameFinder.class); when(mockInstance.find(any(String[].class))).thenReturn(ret); return mockInstance; } @Test public void testPositive() { OutputStream stream = new ByteArrayOutputStream(); TokenNameFinderEvaluationMonitor listener = new NameEvaluationErrorListener(stream); Span[] pred = createSimpleNameSampleA().getNames(); // Construct mock object TokenNameFinderEvaluator eval = new TokenNameFinderEvaluator(mockTokenNameFinder(pred), listener); eval.evaluateSample(createSimpleNameSampleA()); Assert.assertEquals(1.0, eval.getFMeasure().getFMeasure(), 0.0); Assert.assertEquals(0, stream.toString().length()); } @Test public void testNegative() { OutputStream stream = new ByteArrayOutputStream(); TokenNameFinderEvaluationMonitor listener = new NameEvaluationErrorListener(stream); Span[] pred = createSimpleNameSampleB().getNames(); // Construct mock object TokenNameFinderEvaluator eval = new TokenNameFinderEvaluator(mockTokenNameFinder(pred), listener); eval.evaluateSample(createSimpleNameSampleA()); Assert.assertEquals(0.8, eval.getFMeasure().getFMeasure(), 0.0); Assert.assertNotSame(0, stream.toString().length()); } private static String[] sentence = {"U", ".", "S", ".", "President", "Barack", "Obama", "is", "considering", "sending", "additional", "American", "forces", "to", "Afghanistan", "."}; private static NameSample createSimpleNameSampleA() { Span[] names = { new Span(0, 4, "Location"), new Span(5, 7, "Person"), new Span(14, 15, "Location") }; NameSample nameSample; nameSample = new NameSample(sentence, names, false); return nameSample; } private static NameSample createSimpleNameSampleB() { Span[] names = { new Span(0, 4, "Location"), new Span(14, 15, "Location") }; NameSample nameSample; nameSample = new NameSample(sentence, names, false); return nameSample; } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/BioCodecTest.java0100664 0001750 0001750 00000022507 14135770370 032540 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * This is the test class for {@link BioCodec}. */ public class BioCodecTest { private static final BioCodec codec = new BioCodec(); private static final String A_TYPE = "atype"; private static final String A_START = A_TYPE + "-" + BioCodec.START; private static final String A_CONTINUE = A_TYPE + "-" + BioCodec.CONTINUE; private static final String B_TYPE = "btype"; private static final String B_START = B_TYPE + "-" + BioCodec.START; private static final String B_CONTINUE = B_TYPE + "-" + BioCodec.CONTINUE; private static final String C_TYPE = "ctype"; private static final String C_START = C_TYPE + "-" + BioCodec.START; private static final String OTHER = BioCodec.OTHER; @Test public void testEncodeNoNames() { NameSample nameSample = new NameSample("Once upon a time.".split(" "), new Span[] {}, true); String[] expected = new String[] { OTHER, OTHER, OTHER, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("Only 'Other' is expected.", expected, actual); } @Test public void testEncodeSingleTokenSpan() { String[] sentence = "I called Julie again.".split(" "); Span[] spans = new Span[] { new Span(2,3, A_TYPE)}; NameSample nameSample = new NameSample(sentence, spans, true); String[] expected = new String[] {OTHER, OTHER, A_START, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Julie' should be 'start' only, the rest should be 'other'.", expected, actual); } @Test public void testEncodeDoubleTokenSpan() { String[] sentence = "I saw Stefanie Schmidt today.".split(" "); Span[] span = new Span[] { new Span(2,4, A_TYPE)}; NameSample nameSample = new NameSample(sentence, span, true); String[] expected = new String[] {OTHER, OTHER, A_START, A_CONTINUE, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Stefanie' should be 'start' only, 'Schmidt' is " + "'continue' and the rest should be 'other'.", expected, actual); } @Test public void testEncodeDoubleTokenSpanNoType() { final String DEFAULT_START = "default" + "-" + BioCodec.START; final String DEFAULT_CONTINUE = "default" + "-" + BioCodec.CONTINUE; String[] sentence = "I saw Stefanie Schmidt today.".split(" "); Span[] span = new Span[] { new Span(2,4, null)}; NameSample nameSample = new NameSample(sentence, span, true); String[] expected = new String[] {OTHER, OTHER, DEFAULT_START, DEFAULT_CONTINUE, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Stefanie' should be 'start' only, 'Schmidt' is " + "'continue' and the rest should be 'other'.", expected, actual); } @Test public void testEncodeAdjacentSingleSpans() { String[] sentence = "something PersonA PersonB Something".split(" "); Span[] span = new Span[] { new Span(1,2, A_TYPE), new Span(2, 3, A_TYPE) }; NameSample nameSample = new NameSample(sentence, span, true); String[] expected = new String[] {OTHER, A_START, A_START, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals(expected, actual); } @Test public void testEncodeAdjacentSpans() { String[] sentence = "something PersonA PersonA PersonB Something".split(" "); Span[] span = new Span[] { new Span(1,3, A_TYPE), new Span(3, 4, A_TYPE) }; NameSample nameSample = new NameSample(sentence, span, true); String[] expected = new String[] {OTHER, A_START, A_CONTINUE, A_START, OTHER}; String[] actual = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals(expected, actual); } @Test public void testCreateSequenceValidator() { Assert.assertTrue(codec.createSequenceValidator() instanceof NameFinderSequenceValidator); } @Test public void testDecodeEmpty() { Span[] expected = new Span[] {}; Span[] actual = codec.decode(new ArrayList()); Assert.assertArrayEquals(expected, actual); } /** * Start, Other */ @Test public void testDecodeSingletonFirst() { List encoded = Arrays.asList(B_START, OTHER); Span[] expected = new Span[] {new Span(0, 1, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start Start Other */ @Test public void testDecodeAdjacentSingletonFirst() { List encoded = Arrays.asList(B_START, B_START, OTHER); Span[] expected = new Span[] {new Span(0, 1, B_TYPE), new Span(1, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start Continue Other */ @Test public void testDecodePairFirst() { List encoded = Arrays.asList(B_START, B_CONTINUE, OTHER); Span[] expected = new Span[] {new Span(0, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start Continue Continue Other */ @Test public void testDecodeTripletFirst() { List encoded = Arrays.asList(B_START, B_CONTINUE, B_CONTINUE, OTHER); Span[] expected = new Span[] {new Span(0, 3, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start Continue Start Other */ @Test public void testDecodeAdjacentPairSingleton() { List encoded = Arrays.asList(B_START, B_CONTINUE, B_START, OTHER); Span[] expected = new Span[] {new Span(0, 2, B_TYPE), new Span(2, 3, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Other Start Other */ @Test public void testDecodeOtherFirst() { List encoded = Arrays.asList(OTHER, B_START, OTHER); Span[] expected = new Span[] {new Span(1, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * A-Start A-Continue, A-Continue, Other, B-Start, B-Continue, Other, C-Start, Other */ @Test public void testDecodeMultiClass() { List encoded = Arrays.asList(OTHER, A_START, A_CONTINUE, A_CONTINUE, OTHER, B_START, B_CONTINUE, OTHER, C_START, OTHER); Span[] expected = new Span[] {new Span(1, 4, A_TYPE), new Span(5, 7, B_TYPE), new Span(8, 9, C_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } @Test public void testCompatibilityEmpty() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {})); } @Test public void testCompatibilitySingleStart() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START})); } @Test public void testCompatibilitySingleContinue() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_CONTINUE})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START, A_CONTINUE})); } @Test public void testCompatibilitySingleOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {OTHER})); } @Test public void testCompatibilityStartContinue() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_CONTINUE})); } @Test public void testCompatibilityStartOther() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, OTHER})); } @Test public void testCompatibilityContinueOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_CONTINUE, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START, A_CONTINUE, OTHER})); } @Test public void testCompatibilityStartContinueOther() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_CONTINUE, OTHER})); } @Test public void testCompatibilityMultiClass() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_CONTINUE, B_START, OTHER})); } @Test public void testCompatibilityBadTag() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_CONTINUE, "BAD"})); } @Test public void testCompatibilityRepeated() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_START, A_CONTINUE, A_CONTINUE, B_START, B_START, OTHER, OTHER})); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_NameFind0100644 0000000 0000000 00000000172 14135770370 032541 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderSequenceValidatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderSequenceValida0100664 0001750 0001750 00000016266 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import org.junit.Assert; import org.junit.Test; /** * This is the test class for {@link NameFinderSequenceValidator}.. */ public class NameFinderSequenceValidatorTest { private static NameFinderSequenceValidator validator = new NameFinderSequenceValidator(); private static String START_A = "TypeA-" + NameFinderME.START; private static String CONTINUE_A = "TypeA-" + NameFinderME.CONTINUE; private static String START_B = "TypeB-" + NameFinderME.START; private static String CONTINUE_B = "TypeB-" + NameFinderME.CONTINUE; private static String OTHER = NameFinderME.OTHER; @Test public void testContinueCannotBeFirstOutcome() { final String outcome = CONTINUE_A; String[] inputSequence = new String[] {"PersonA", "is", "here"}; String[] outcomesSequence = new String[] {}; Assert.assertFalse(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAfterStartAndSameType() { final String outcome = CONTINUE_A; // previous start, same name type String[] inputSequence = new String[] {"Stefanie", "Schmidt", "is", "German"}; String[] outcomesSequence = new String[] {START_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAfterStartAndNotSameType() { final String outcome = CONTINUE_B; // previous start, not same name type String[] inputSequence = new String[] {"PersonA", "LocationA", "something"}; String[] outcomesSequence = new String[] {START_A}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAfterContinueAndSameType() { final String outcome = CONTINUE_A; // previous continue, same name type String[] inputSequence = new String[] {"FirstName", "MidleName", "LastName", "is", "a", "long", "name"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAfterContinueAndNotSameType() { final String outcome = CONTINUE_B; // previous continue, not same name type String[] inputSequence = new String[] {"FirstName", "LastName", "LocationA", "something"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertFalse(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAfterOther() { final String outcome = CONTINUE_A; // previous other String[] inputSequence = new String[] {"something", "is", "wrong", "here"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } @Test public void testStartIsAlwaysAValidOutcome() { final String outcome = START_A; // pos zero String[] inputSequence = new String[] {"PersonA", "is", "here"}; String[] outcomesSequence = new String[] {}; Assert.assertTrue(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); // pos one, previous other inputSequence = new String[] {"it's", "PersonA", "again"}; outcomesSequence = new String[] {OTHER}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // pos one, previous start inputSequence = new String[] {"PersonA", "PersonB", "something"}; outcomesSequence = new String[] {START_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // pos two, previous other inputSequence = new String[] {"here", "is", "PersonA"}; outcomesSequence = new String[] {OTHER, OTHER}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous start, same name type inputSequence = new String[] {"is", "PersonA", "PersoneB"}; outcomesSequence = new String[] {OTHER, START_A}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous start, different name type inputSequence = new String[] {"something", "PersonA", "OrganizationA"}; outcomesSequence = new String[] {OTHER, START_B}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous continue, same name type inputSequence = new String[] {"Stefanie", "Schmidt", "PersonB", "something"}; outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous continue, not same name type inputSequence = new String[] {"Stefanie", "Schmidt", "OrganizationA", "something"}; outcomesSequence = new String[] {START_B, CONTINUE_B}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } @Test public void testOtherIsAlwaysAValidOutcome() { final String outcome = OTHER; // pos zero String[] inputSequence = new String[] {"it's", "a", "test"}; String[] outcomesSequence = new String[] {}; Assert.assertTrue(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); // pos one, previous other inputSequence = new String[] {"it's", "a", "test"}; outcomesSequence = new String[] {OTHER}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // pos one, previous start inputSequence = new String[] {"Mike", "is", "here"}; outcomesSequence = new String[] {START_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // pos two, previous other inputSequence = new String[] {"it's", "a", "test"}; outcomesSequence = new String[] {OTHER, OTHER}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous start inputSequence = new String[] {"is", "Mike", "here"}; outcomesSequence = new String[] {OTHER, START_A}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // pos two, previous continue inputSequence = new String[] {"Stefanie", "Schmidt", "lives", "at", "home"}; outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertTrue(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/BilouCodecTest.java0100664 0001750 0001750 00000051766 14135770370 033112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * This is the test class for {@link BilouCodec}. */ public class BilouCodecTest { private static final BilouCodec codec = new BilouCodec(); private static final String A_TYPE = "atype"; private static final String A_START = A_TYPE + "-" + BilouCodec.START; private static final String A_CONTINUE = A_TYPE + "-" + BilouCodec.CONTINUE; private static final String A_LAST = A_TYPE + "-" + BilouCodec.LAST; private static final String A_UNIT = A_TYPE + "-" + BilouCodec.UNIT; private static final String B_TYPE = "btype"; private static final String B_START = B_TYPE + "-" + BilouCodec.START; private static final String B_CONTINUE = B_TYPE + "-" + BilouCodec.CONTINUE; private static final String B_LAST = B_TYPE + "-" + BilouCodec.LAST; private static final String B_UNIT = B_TYPE + "-" + BilouCodec.UNIT; private static final String C_TYPE = "ctype"; private static final String C_UNIT = C_TYPE + "-" + BilouCodec.UNIT; private static final String OTHER = BilouCodec.OTHER; @Test public void testEncodeNoNames() { NameSample nameSample = new NameSample("Once upon a time.".split(" "), new Span[] {}, true); String[] expected = new String[] {OTHER, OTHER, OTHER, OTHER}; String[] acutal = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("Only 'Other' is expected.", expected, acutal); } @Test public void testEncodeSingleUnitTokenSpan() { String[] sentence = "I called Julie again.".split(" "); Span[] singleSpan = new Span[] { new Span(2,3, A_TYPE)}; NameSample nameSample = new NameSample(sentence, singleSpan, true); String[] expected = new String[] {OTHER, OTHER, A_UNIT, OTHER}; String[] acutal = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Julie' should be 'unit' only, the rest should be 'other'.", expected, acutal); } @Test public void testEncodeDoubleTokenSpan() { String[] sentence = "I saw Stefanie Schmidt today.".split(" "); Span[] singleSpan = new Span[] { new Span(2,4, A_TYPE)}; NameSample nameSample = new NameSample(sentence, singleSpan, true); String[] expected = new String[] {OTHER, OTHER, A_START, A_LAST, OTHER}; String[] acutal = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Stefanie' should be 'start' only, 'Schmidt' is 'last' " + "and the rest should be 'other'.", expected, acutal); } @Test public void testEncodeTripleTokenSpan() { String[] sentence = "Secretary - General Anders Fogh Rasmussen is from Denmark.".split(" "); Span[] singleSpan = new Span[] { new Span(3,6, A_TYPE)}; NameSample nameSample = new NameSample(sentence, singleSpan, true); String[] expected = new String[] {OTHER, OTHER, OTHER, A_START, A_CONTINUE, A_LAST, OTHER, OTHER, OTHER}; String[] acutal = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("'Anders' should be 'start' only, 'Fogh' is 'inside', " + "'Rasmussen' is 'last' and the rest should be 'other'.", expected, acutal); } @Test public void testEncodeAdjacentUnitSpans() { String[] sentence = "word PersonA PersonB word".split(" "); Span[] singleSpan = new Span[] { new Span(1,2, A_TYPE), new Span(2, 3, A_TYPE)}; NameSample nameSample = new NameSample(sentence, singleSpan, true); String[] expected = new String[] {OTHER, A_UNIT, A_UNIT, OTHER}; String[] acutal = codec.encode(nameSample.getNames(), nameSample.getSentence().length); Assert.assertArrayEquals("Both PersonA and PersonB are 'unit' tags", expected, acutal); } @Test public void testCreateSequenceValidator() { Assert.assertTrue(codec.createSequenceValidator() instanceof BilouNameFinderSequenceValidator); } @Test public void testDecodeEmpty() { Span[] expected = new Span[] {}; Span[] actual = codec.decode(new ArrayList()); Assert.assertArrayEquals(expected, actual); } /** * Unit, Other */ @Test public void testDecodeSingletonFirst() { List encoded = Arrays.asList(A_UNIT, OTHER); Span[] expected = new Span[] {new Span(0,1, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Unit, Unit, Other */ @Test public void testDecodeAdjacentSingletonFirst() { List encoded = Arrays.asList(A_UNIT, A_UNIT, OTHER); Span[] expected = new Span[] {new Span(0, 1, A_TYPE), new Span(1, 2, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start, Last, Other */ @Test public void testDecodePairFirst() { List encoded = Arrays.asList(A_START, A_LAST, OTHER); Span[] expected = new Span[] {new Span(0, 2, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start, Continue, Last, Other */ @Test public void testDecodeTripletFirst() { List encoded = Arrays.asList(A_START, A_CONTINUE, A_LAST, OTHER); Span[] expected = new Span[] {new Span(0, 3, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start, Continue, Continue, Last, Other */ @Test public void testDecodeTripletContinuationFirst() { List encoded = Arrays.asList(A_START, A_CONTINUE, A_CONTINUE, A_LAST, OTHER); Span[] expected = new Span[] {new Span(0, 4, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Start, Last, Unit, Other */ @Test public void testDecodeAdjacentPairSingleton() { List encoded = Arrays.asList(A_START, A_LAST, A_UNIT, OTHER); Span[] expected = new Span[] {new Span(0, 2, A_TYPE), new Span(2, 3, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Other, Unit, Other */ @Test public void testDecodeOtherFirst() { List encoded = Arrays.asList(OTHER, A_UNIT, OTHER); Span[] expected = new Span[] {new Span(1, 2, A_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } /** * Other, A-Start, A-Continue, A-Last, Other, B-Start, B-Last, Other, C-Unit, Other */ @Test public void testDecodeMultiClass() { List encoded = Arrays.asList(OTHER, A_START, A_CONTINUE, A_LAST, OTHER, B_START, B_LAST, OTHER, C_UNIT, OTHER); Span[] expected = new Span[] {new Span(1, 4, A_TYPE), new Span(5, 7, B_TYPE), new Span(8,9, C_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); } @Test public void testCompatibilityEmpty() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {})); } /** * Singles and singles in combination with other valid type (unit/start+last) */ /** * B-Start => Fail * A-Unit, B-Start => Fail * A-Start, A-Last, B-Start => Fail */ @Test public void testCompatibilitySinglesStart() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_START})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_START})); } /** * B-Continue => Fail * A-Unit, B-Continue => Fail * A-Start, A-Last, B-Continue => Fail */ @Test public void testCompatibilitySinglesContinue() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_CONTINUE})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_CONTINUE})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_CONTINUE})); } /** * B-Last => Fail * A-Unit, B-Last => Fail * A-Start, A-Last, B-Last => Fail */ @Test public void testCompatibilitySinglesLast() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_LAST})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_LAST})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_LAST})); } /** * Other => Fail * A-Unit, Other => Pass * A-Start, A-Last, Other => Pass */ @Test public void testCompatibilitySinglesOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {OTHER})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_UNIT, OTHER})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, OTHER})); } /** * B-Unit => Pass * A-Unit, B-Unit => Pass * A-Start, A-Last, B-Unit => Pass */ @Test public void testCompatibilitySinglesUnit() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_UNIT, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_UNIT})); } /** * Doubles and doubles in combination with other valid type (unit/start+last) * * B-Start, B-Continue => Fail * A-Unit, B-Start, B-Continue => Fail * A-Start, A-Last, B-Start, B-Continue => Fail */ @Test public void testCompatibilityStartContinue() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START, B_CONTINUE})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_START, B_CONTINUE})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_START, B_CONTINUE})); } /** * B-Start, B-Last => Pass * A-Unit, B-Start, B-Last => Pass * A-Start, A-Last, B-Start, B-Last => Pass */ @Test public void testCompatibilityStartLast() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {B_START, B_LAST})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_UNIT, B_START, B_LAST})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_START, B_LAST})); } /** * B-Start, Other => Fail * A-Unit, B-Start, Other => Fail * A-Start, A-Last, B-Start, Other => Fail */ @Test public void testCompatibilityStartOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_START, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_START, OTHER})); } /** * B-Start, B-Unit => Fail * A-Unit, B-Start, B-Unit => Fail * A-Start, A-Last, B-Start, B-Unit => Fail */ @Test public void testCompatibilityStartUnit() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_START, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_START, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_START, B_UNIT})); } /** * B-Continue, C-Last => Fail * A-Unit, B-Continue, C-Last => Fail * A-Start, A-Last, B-Continue, B-Last => Fail */ @Test public void testCompatibilityContinueLast() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_CONTINUE, B_LAST})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_CONTINUE, B_LAST})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_CONTINUE, B_LAST})); } /** * B-Continue, Other => Fail * A-Unit, B-Continue, Other => Fail * A-Start, A-Last, B-Continue, Other => Fail */ @Test public void testCompatibilityContinueOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_CONTINUE, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_CONTINUE, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_CONTINUE, OTHER})); } /** * B-Continue, B-Unit => Fail * A-Unit, B-Continue, B-Unit => Fail * A-Start, A-Last, B-Continue, B-Unit => Fail */ @Test public void testCompatibilityContinueUnit() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_CONTINUE, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_CONTINUE, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_CONTINUE, B_UNIT})); } /** * B-Last, Other => Fail * A-Unit, B-Last, Other => Fail * A-Start, A-Last, B-Last, Other => Fail */ @Test public void testCompatibilityLastOther() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_LAST, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_LAST, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_LAST, OTHER})); } /** * B-Last, B-Unit => Fail * A-Unit, B-Last, B-Unit => Fail * A-Start, A-Last, B-Last, B-Unit => Fail */ @Test public void testCompatibilityLastUnit() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {B_LAST, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_UNIT, B_LAST, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, B_LAST, B_UNIT})); } /** * Other, B-Unit => Pass * A-Unit, Other, B-Unit => Pass * A-Start, A-Last, Other, B-Unit => Pass */ @Test public void testCompatibilityOtherUnit() { Assert.assertTrue(codec.areOutcomesCompatible(new String[] {OTHER, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_UNIT, OTHER, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible(new String[] {A_START, A_LAST, OTHER, B_UNIT})); } /** * Triples and triples in combination with other valid type (unit/start+last) * * B-Start, B-Continue, B-Last => Pass * A-Unit, B-Start, B-Continue, B-Last => Pass * A-Start, A-Last, B-Start, B-Continue, B-Last => Pass */ @Test public void testCompatibilityStartContinueLast() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, B_LAST})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, B_LAST})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, B_LAST})); } /** * B-Start, B-Continue, Other => Fail * A-Unit, B-Start, B-Continue, Other => Fail * A-Start, A-Last, B-Start, B-Continue, Other => Fail */ @Test public void testCompatibilityStartContinueOther() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, OTHER})); } /** * B-Start, B-Continue, B-Unit => Fail * A-Unit, B-Start, B-Continue, B-Unit => Fail * A-Start, A-Last, B-Start, B-Continue, B-Unit => Fail */ @Test public void testCompatibilityStartContinueUnit() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, B_UNIT})); } /** * B-Continue, B-Last, Other => Fail * A-Unit, B-Continue, B-Last, Other => Fail * A-Start, A-Last, B-Continue, B-Last, Other => Fail */ @Test public void testCompatibilityContinueLastOther() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_CONTINUE, B_LAST, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_CONTINUE, B_LAST, OTHER})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_CONTINUE, B_LAST, OTHER})); } /** * B-Continue, B-Last, B-Unit => Fail * A-Unit, B-Continue, B-Last, B_Unit => Fail * A-Start, A-Last, B-Continue, B-Last, B_Unit => Fail */ @Test public void testCompatibilityContinueLastUnit() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_CONTINUE, B_LAST, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_CONTINUE, B_LAST, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_CONTINUE, B_LAST, B_UNIT})); } /** * B-Last, Other, B-Unit => Fail * A-Unit, B-Continue, B-Last, B_Unit => Fail * A-Start, A-Last, B-Continue, B-Last, B_Unit => Fail */ @Test public void testCompatibilityLastOtherUnit() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_LAST, OTHER, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_LAST, OTHER, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_LAST, OTHER, B_UNIT})); } /** * Quadruples and quadruple in combination of unit/start+last * * B-Start, B-Continue, B-Last, Other => Pass * A-Unit, B-Start, B-Continue, B-Last, Other => Pass * A-Start, A-Last, B-Start, B-Continue, B-Last, Other => Pass */ @Test public void testCompatibilityStartContinueLastOther() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, B_LAST, OTHER})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, B_LAST, OTHER})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, B_LAST, OTHER})); } /** * B-Start, B-Continue, B-Last, B-Unit => Pass * A-Unit, B-Start, B-Continue, B-Last, B-Unit => Pass * A-Start, A-Last, B-Start, B-Continue, B-Last, B-Unit => Pass */ @Test public void testCompatibilityStartContinueLastUnit() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, B_LAST, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, B_LAST, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, B_LAST, B_UNIT})); } /** * B-Continue, B-Last, Other, B-Unit => Fail * A-Unit, B-Continue, B-Last, Other, B-Unit => Fail * A-Start, A-Last, B-Continue, B-Last, Other, B-Unit => Fail */ @Test public void testCompatibilityContinueLastOtherUnit() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {B_CONTINUE, B_LAST, OTHER, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_UNIT, B_CONTINUE, B_LAST, OTHER, B_UNIT})); Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_CONTINUE, B_LAST, OTHER, B_UNIT})); } /** * Quintuple * * B-Start, B-Continue, B-Last, Other, B-Unit => Pass * A-Unit, B-Start, B-Continue, B-Last, Other, B-Unit => Pass * A-Staart, A-Last, B-Start, B-Continue, B-Last, Other, B-Unit => Pass */ @Test public void testCompatibilityUnitOther() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {B_START, B_CONTINUE, B_LAST, OTHER, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_UNIT, B_START, B_CONTINUE, B_LAST, OTHER, B_UNIT})); Assert.assertTrue(codec.areOutcomesCompatible( new String[] {A_START, A_LAST, B_START, B_CONTINUE, B_LAST, OTHER, B_UNIT})); } /** * Multiclass */ @Test public void testCompatibilityMultiClass() { Assert.assertTrue(codec.areOutcomesCompatible( new String[] {B_UNIT, A_CONTINUE, A_LAST, A_UNIT, B_START, B_LAST, A_START, C_UNIT, OTHER})); } /** * Bad combinations */ @Test public void testCompatibilityBadTag() { Assert.assertFalse(codec.areOutcomesCompatible( new String[] {A_START, A_CONTINUE, OTHER, "BAD"})); } @Test public void testCompatibilityWrongClass() { Assert.assertFalse(codec.areOutcomesCompatible(new String[] {A_START, B_LAST, OTHER})); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_Dictiona0100644 0000000 0000000 00000000163 14135770370 032612 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/DictionaryNameFinderTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/DictionaryNameFinderTest0100664 0001750 0001750 00000007714 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.util.Span; import opennlp.tools.util.StringList; /** *Tests for the {@link DictionaryNameFinder} class. */ public class DictionaryNameFinderTest { private Dictionary mDictionary = new Dictionary(); private TokenNameFinder mNameFinder; public DictionaryNameFinderTest() { StringList vanessa = new StringList(new String[]{"Vanessa"}); mDictionary.put(vanessa); StringList vanessaWilliams = new StringList("Vanessa", "Williams"); mDictionary.put(vanessaWilliams); StringList max = new StringList(new String[]{"Max"}); mDictionary.put(max); StringList michaelJordan = new StringList("Michael", "Jordan"); mDictionary.put(michaelJordan); } @Before public void setUp() throws Exception { mNameFinder = new DictionaryNameFinder(mDictionary); } @Test public void testSingleTokeNameAtSentenceStart() { String sentence = "Max a b c d"; SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE; String[] tokens = tokenizer.tokenize(sentence); Span[] names = mNameFinder.find(tokens); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 0 && names[0].getEnd() == 1); } @Test public void testSingleTokeNameInsideSentence() { String sentence = "a b Max c d"; SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE; String[] tokens = tokenizer.tokenize(sentence); Span[] names = mNameFinder.find(tokens); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 2 && names[0].getEnd() == 3); } @Test public void testSingleTokeNameAtSentenceEnd() { String sentence = "a b c Max"; SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE; String[] tokens = tokenizer.tokenize(sentence); Span[] names = mNameFinder.find(tokens); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 3 && names[0].getEnd() == 4); } @Test public void testLastMatchingTokenNameIsChoosen() { String[] sentence = {"a", "b", "c", "Vanessa"}; Span[] names = mNameFinder.find(sentence); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 3 && names[0].getEnd() == 4); } @Test public void testLongerTokenNameIsPreferred() { String[] sentence = {"a", "b", "c", "Vanessa", "Williams"}; Span[] names = mNameFinder.find(sentence); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 3 && names[0].getEnd() == 5); } @Test public void testCaseSensitivity() { String[] sentence = {"a", "b", "c", "vanessa", "williams"}; Span[] names = mNameFinder.find(sentence); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].getStart() == 3 && names[0].getEnd() == 5); } @Test public void testCaseLongerEntry() { String[] sentence = {"a", "b", "michael", "jordan"}; Span[] names = mNameFinder.find(sentence); Assert.assertTrue(names.length == 1); Assert.assertTrue(names[0].length() == 2); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000174 14135770370 032576 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossVali0100664 0001750 0001750 00000010461 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayOutputStream; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.namefind.NameEvaluationErrorListener; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelType; public class TokenNameFinderCrossValidatorTest { private final String TYPE = null; @Test /* * Test that reproduces jira OPENNLP-463 */ public void testWithNullResources() throws Exception { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/AnnotatedSentences.txt"); ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1)); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70); mlParams.put(TrainingParameters.CUTOFF_PARAM, 1); mlParams.put(TrainingParameters.ALGORITHM_PARAM, ModelType.MAXENT.toString()); TokenNameFinderCrossValidator cv = new TokenNameFinderCrossValidator("eng", TYPE, mlParams, null, (TokenNameFinderEvaluationMonitor)null); cv.evaluate(sampleStream, 2); Assert.assertNotNull(cv.getFMeasure()); } @Test /* * Test that tries to reproduce jira OPENNLP-466 */ public void testWithNameEvaluationErrorListener() throws Exception { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/AnnotatedSentences.txt"); ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1)); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70); mlParams.put(TrainingParameters.CUTOFF_PARAM, 1); mlParams.put(TrainingParameters.ALGORITHM_PARAM, ModelType.MAXENT.toString()); ByteArrayOutputStream out = new ByteArrayOutputStream(); NameEvaluationErrorListener listener = new NameEvaluationErrorListener(out); Map resources = Collections.emptyMap(); TokenNameFinderCrossValidator cv = new TokenNameFinderCrossValidator("eng", TYPE, mlParams, null, resources, listener); cv.evaluate(sampleStream, 2); Assert.assertTrue(out.size() > 0); Assert.assertNotNull(cv.getFMeasure()); } @Test(expected = InsufficientTrainingDataException.class) public void testWithInsufficientData() throws Exception { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/namefind/AnnotatedSentencesInsufficient.txt"); ObjectStream sampleStream = new NameSampleDataStream( new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1)); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70); mlParams.put(TrainingParameters.CUTOFF_PARAM, 1); mlParams.put(TrainingParameters.ALGORITHM_PARAM, ModelType.MAXENT.toString()); TokenNameFinderCrossValidator cv = new TokenNameFinderCrossValidator("eng", TYPE, mlParams, null, (TokenNameFinderEvaluationMonitor)null); cv.evaluate(sampleStream, 2); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_RegexNam0100644 0000000 0000000 00000000156 14135770370 032570 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/RegexNameFinderTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/RegexNameFinderTest.java0100664 0001750 0001750 00000005543 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * Tests for the {@link RegexNameFinder} class. */ public class RegexNameFinderTest { @Test public void testFindSingleTokenPattern() { Pattern testPattern = Pattern.compile("test"); String[] sentence = new String[]{"a", "test", "b", "c"}; Pattern[] patterns = new Pattern[]{testPattern}; Map regexMap = new HashMap<>(); String type = "testtype"; regexMap.put(type, patterns); RegexNameFinder finder = new RegexNameFinder(regexMap); Span[] result = finder.find(sentence); Assert.assertTrue(result.length == 1); Assert.assertTrue(result[0].getStart() == 1); Assert.assertTrue(result[0].getEnd() == 2); } @Test public void testFindTokenizdPattern() { Pattern testPattern = Pattern.compile("[0-9]+ year"); String[] sentence = new String[]{"a", "80", "year", "b", "c"}; Pattern[] patterns = new Pattern[]{testPattern}; Map regexMap = new HashMap<>(); String type = "match"; regexMap.put(type, patterns); RegexNameFinder finder = new RegexNameFinder(regexMap); Span[] result = finder.find(sentence); Assert.assertTrue(result.length == 1); Assert.assertTrue(result[0].getStart() == 1); Assert.assertTrue(result[0].getEnd() == 3); Assert.assertTrue(result[0].getType().equals("match")); } @Test public void testFindMatchingPatternWithoutMatchingTokenBounds() { Pattern testPattern = Pattern.compile("[0-8] year"); // does match "0 year" String[] sentence = new String[]{"a", "80", "year", "c"}; Pattern[] patterns = new Pattern[]{testPattern}; Map regexMap = new HashMap<>(); String type = "testtype"; regexMap.put(type, patterns); RegexNameFinder finder = new RegexNameFinder(regexMap); Span[] result = finder.find(sentence); Assert.assertTrue(result.length == 0); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_namefind_BilouNam0100644 0000000 0000000 00000000177 14135770370 032573 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/BilouNameFinderSequenceValidatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/namefind/BilouNameFinderSequenceV0100664 0001750 0001750 00000035064 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import org.junit.Assert; import org.junit.Test; /** * This is the test class for {@link BilouNameFinderSequenceValidator}.. * inputSequence is actually not used, but provided in the test to describe the cases. */ public class BilouNameFinderSequenceValidatorTest { private static BilouNameFinderSequenceValidator validator = new BilouNameFinderSequenceValidator(); private static String START_A = "TypeA-" + BilouCodec.START; private static String CONTINUE_A = "TypeA-" + BilouCodec.CONTINUE; private static String LAST_A = "TypeA-" + BilouCodec.LAST; private static String UNIT_A = "TypeA-" + BilouCodec.UNIT; private static String START_B = "TypeB-" + BilouCodec.START; private static String CONTINUE_B = "TypeB-" + BilouCodec.CONTINUE; private static String LAST_B = "TypeB-" + BilouCodec.LAST; //private static String UNIT = BilouCodec.UNIT; private static String OTHER = BilouCodec.OTHER; @Test public void testStartAsFirstLabel() { String outcome = START_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "something"}; String[] outcomesSequence = new String[] { }; Assert.assertTrue(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } @Test public void testContinueAsFirstLabel() { String outcome = CONTINUE_A; String[] inputSequence = new String[] {"TypeA", "something", "something"}; String[] outcomesSequence = new String[] { }; Assert.assertFalse(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } @Test public void testLastAsFirstLabel() { String outcome = LAST_A; String[] inputSequence = new String[] {"TypeA", "something", "something"}; String[] outcomesSequence = new String[] { }; Assert.assertFalse(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } @Test public void testUnitAsFirstLabel() { String outcome = UNIT_A; String[] inputSequence = new String[] {"TypeA", "something", "something"}; String[] outcomesSequence = new String[] { }; Assert.assertTrue(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } @Test public void testOtherAsFirstLabel() { String outcome = OTHER; String[] inputSequence = new String[] {"something", "TypeA", "something"}; String[] outcomesSequence = new String[] { }; Assert.assertTrue(validator.validSequence(0, inputSequence, outcomesSequence, outcome)); } /** * Start, Any Start => Invalid */ @Test public void testBeginFollowedByBegin() { String[] outcomesSequence = new String[] {START_A}; // Same Types String outcome = START_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "something"}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // Diff. Types outcome = START_B; inputSequence = new String[] {"TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Start, Continue, Same type => Valid * Start, Continue, Diff. Type => Invalid */ @Test public void testBeginFollowedByContinue() { String[] outcomesSequence = new String[] {START_A}; // Same Types String outcome = CONTINUE_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "something"}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // Different Types outcome = CONTINUE_B; inputSequence = new String[] {"TypeA", "TypeB", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Start, Last, Same Type => Valid * Start, Last, Diff. Type => Invalid */ @Test public void testStartFollowedByLast() { String[] outcomesSequence = new String[] {START_A}; // Same Type String outcome = LAST_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "something"}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); // Diff. Types outcome = LAST_B; inputSequence = new String[] {"TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Start, Other => Invalid */ @Test public void testStartFollowedByOther() { String outcome = OTHER; String[] inputSequence = new String[] {"TypeA", "something", "something"}; String[] outcomesSequence = new String[] {START_A}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Start, Unit => Invalid */ @Test public void testStartFollowedByUnit() { String outcome = UNIT_A; String[] inputSequence = new String[] {"TypeA", "AnyType", "something"}; String[] outcomesSequence = new String[] {START_A}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Continue, Any Begin => Invalid */ @Test public void testContinueFollowedByStart() { String[] outcomesSequence = new String[] {START_A, CONTINUE_A}; // Same Types String outcome = START_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "something"}; Assert.assertFalse(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); // Diff. Types outcome = START_B; inputSequence = new String[] {"TypeA", "TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } /** * Continue, Continue, Same type => Valid * Continue, Continue, Diff. Type => Invalid */ @Test public void testContinueFollowedByContinue() { String[] outcomesSequence = new String[] {START_A, CONTINUE_A, CONTINUE_A}; // Same Types String outcome = CONTINUE_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeA", "something"}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); // Different Types outcome = CONTINUE_B; inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Continue, Last, Same Type => Valid * Continue, Last, Diff. Type => Invalid */ @Test public void testContinueFollowedByLast() { String[] outcomesSequence = new String[] {OTHER, START_A, CONTINUE_A}; // Same Types String outcome = LAST_A; String[] inputSequence = new String[] {"something", "TypeA", "TypeA", "TypeA", "something"}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); // Different Types outcome = LAST_B; inputSequence = new String[] {"something", "TypeA", "TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Continue, Other => Invalid */ @Test public void testContinueFollowedByOther() { String outcome = OTHER; String[] inputSequence = new String[] {"TypeA", "TypeA", "something", "something"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertFalse(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } /** * Continue, Unit => Invalid */ @Test public void testContinueFollowedByUnit() { String outcome = UNIT_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "AnyType", "something"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A}; Assert.assertFalse(validator.validSequence(2, inputSequence, outcomesSequence, outcome)); } /** * Last, Any Start => Valid */ @Test public void testLastFollowedByStart() { String[] outcomesSequence = new String[] {START_A, CONTINUE_A, LAST_A}; // Same Types String outcome = START_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeA", "TypeA"}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); // Same Types outcome = START_B; inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeB", "TypeB"}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Last, Any Continue => Invalid */ @Test public void testLastFollowedByContinue() { String[] outcomesSequence = new String[] {START_A, CONTINUE_A, LAST_A}; String outcome = CONTINUE_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeA", "something"}; Assert.assertFalse(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); // Diff. Types outcome = CONTINUE_B; inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Last, Any Last => Invalid */ @Test public void testLastFollowedByLast() { String[] outcomesSequence = new String[] {OTHER, OTHER, START_A, CONTINUE_A, LAST_A}; // Same Types String outcome = LAST_A; String[] inputSequence = new String[] {"something", "something", "TypeA", "TypeA", "TypeA", "TypeA", "something"}; Assert.assertFalse(validator.validSequence(5, inputSequence, outcomesSequence, outcome)); // Diff. Types outcome = LAST_B; inputSequence = new String[] {"something", "something", "TypeA", "TypeA", "TypeA", "TypeB", "something"}; Assert.assertFalse(validator.validSequence(5, inputSequence, outcomesSequence, outcome)); } /** * Last, Other => Valid */ @Test public void testLastFollowedByOther() { String outcome = OTHER; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "something", "something"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A, LAST_A}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Last, Unit => Valid */ @Test public void testLastFollowedByUnit() { String outcome = UNIT_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "TypeA", "AnyType", "something"}; String[] outcomesSequence = new String[] {START_A, CONTINUE_A, LAST_A}; Assert.assertTrue(validator.validSequence(3, inputSequence, outcomesSequence, outcome)); } /** * Other, Any Start => Valid */ @Test public void testOtherFollowedByBegin() { String outcome = START_A; String[] inputSequence = new String[] {"something", "TypeA", "TypeA"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Other, Any Continue => Invalid */ @Test public void testOtherFollowedByContinue() { String outcome = CONTINUE_A; String[] inputSequence = new String[] {"something", "TypeA", "TypeA"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Other, Any Last => Invalid */ @Test public void testOtherFollowedByLast() { String outcome = LAST_A; String[] inputSequence = new String[] {"something", "TypeA", "TypeA"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Outside, Unit => Valid */ @Test public void testOtherFollowedByUnit() { String outcome = UNIT_A; String[] inputSequence = new String[] {"something", "AnyType", "something"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Other, Other => Valid */ @Test public void testOutsideFollowedByOutside() { String outcome = OTHER; String[] inputSequence = new String[] {"something", "something", "something"}; String[] outcomesSequence = new String[] {OTHER}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Unit, Any Start => Valid */ @Test public void testUnitFollowedByBegin() { String outcome = START_A; String[] inputSequence = new String[] {"AnyType", "TypeA", "something"}; String[] outcomesSequence = new String[] {UNIT_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Unit, Any Continue => Invalid */ @Test public void testUnitFollowedByInside() { String outcome = CONTINUE_A; String[] inputSequence = new String[] {"TypeA", "TypeA", "something"}; String[] outcomesSequence = new String[] {UNIT_A}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Unit, Any Last => Invalid */ @Test public void testUnitFollowedByLast() { String outcome = LAST_A; String[] inputSequence = new String[] {"AnyType", "TypeA", "something"}; String[] outcomesSequence = new String[] {UNIT_A}; Assert.assertFalse(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Unit, Other => Valid */ @Test public void testUnitFollowedByOutside() { String outcome = OTHER; String[] inputSequence = new String[] {"TypeA", "something", "something"}; String[] outcomesSequence = new String[] {UNIT_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } /** * Unit, Unit => Valid */ @Test public void testUnitFollowedByUnit() { String outcome = UNIT_A; String[] inputSequence = new String[] {"AnyType", "AnyType", "something"}; String[] outcomesSequence = new String[] {UNIT_A}; Assert.assertTrue(validator.validSequence(1, inputSequence, outcomesSequence, outcome)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Defaul0100644 0000000 0000000 00000000172 14135770370 032641 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DefaultSDContextGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DefaultSDContextGenera0100664 0001750 0001750 00000004624 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import org.junit.Assert; import org.junit.Test; import opennlp.tools.sentdetect.lang.Factory; public class DefaultSDContextGeneratorTest { @Test public void testGetContext() throws Exception { SDContextGenerator sdContextGenerator = new DefaultSDContextGenerator(Collections.emptySet(), Factory.defaultEosCharacters); String[] context = sdContextGenerator.getContext( "Mr. Smith joined RONDHUIT Inc. as a manager of sales department.", 2); Assert.assertArrayEquals("sn/eos=./x=Mr/2/xcap/v=/s=/n=Smith/ncap".split("/"), context); context = sdContextGenerator.getContext( "Mr. Smith joined RONDHUIT Inc. as a manager of sales department.", 29); Assert.assertArrayEquals("sn/eos=./x=Inc/3/xcap/v=RONDHUIT/vcap/s=/n=as".split("/"), context); } @Test public void testGetContextWithAbbreviations() throws Exception { SDContextGenerator sdContextGenerator = new DefaultSDContextGenerator(new HashSet<>(Arrays.asList("Mr./Inc.".split("/"))), Factory.defaultEosCharacters); String[] context = sdContextGenerator.getContext( "Mr. Smith joined RONDHUIT Inc. as a manager of sales department.", 2); Assert.assertArrayEquals("sn/eos=./x=Mr/2/xcap/xabbrev/v=/s=/n=Smith/ncap".split("/"), context); context = sdContextGenerator.getContext( "Mr. Smith joined RONDHUIT Inc. as a manager of sales department.", 29); Assert.assertArrayEquals("sn/eos=./x=Inc/3/xcap/xabbrev/v=RONDHUIT/vcap/s=/n=as".split("/"), context); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Newlin0100644 0000000 0000000 00000000170 14135770370 032673 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/NewlineSentenceDetectorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/NewlineSentenceDetecto0100664 0001750 0001750 00000003173 14135770370 034266 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link NewlineSentenceDetector} class. */ public class NewlineSentenceDetectorTest { private static void testSentenceValues(String sentences) { NewlineSentenceDetector sd = new NewlineSentenceDetector(); String[] results = sd.sentDetect(sentences); Assert.assertEquals(3, results.length); Assert.assertEquals("one.", results[0]); Assert.assertEquals("two.", results[1]); Assert.assertEquals("three.", results[2]); } @Test public void testNewlineCr() { testSentenceValues("one.\rtwo. \r\r three.\r"); } @Test public void testNewlineLf() { testSentenceValues("one.\ntwo. \n\n three.\n"); } @Test public void testNewlineCrLf() { testSentenceValues("one.\r\ntwo. \r\n\r\n three.\r\n"); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000157 14135770370 032700 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.jav0100664 0001750 0001750 00000006441 14135770370 034216 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.Span; /** * Tests for the {@link SentenceSample} class. */ public class SentenceSampleTest { @Test public void testRetrievingContent() { SentenceSample sample = new SentenceSample("1. 2.", new Span(0, 2), new Span(3, 5)); Assert.assertEquals("1. 2.", sample.getDocument()); Assert.assertEquals(new Span(0, 2), sample.getSentences()[0]); Assert.assertEquals(new Span(3, 5), sample.getSentences()[1]); } @Test public void testSentenceSampleSerDe() throws IOException { SentenceSample sentenceSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(sentenceSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); SentenceSample deSerializedSentenceSample = null; try { deSerializedSentenceSample = (SentenceSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedSentenceSample); Assert.assertEquals(sentenceSample.getDocument(), deSerializedSentenceSample.getDocument()); Assert.assertArrayEquals(sentenceSample.getSentences(), deSerializedSentenceSample.getSentences()); } @Test(expected = IllegalArgumentException.class) public void testInvalidSpansFailFast() { SentenceSample sample = new SentenceSample("1. 2.", new Span(0, 2), new Span(5, 7)); } @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } public static SentenceSample createGoldSample() { return new SentenceSample("1. 2.", new Span(0, 2), new Span(3, 5)); } public static SentenceSample createPredSample() { return new SentenceSample("1. 2.", new Span(0, 1), new Span(4, 5)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Defaul0100644 0000000 0000000 00000000174 14135770370 032643 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DefaultEndOfSentenceScannerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DefaultEndOfSentenceSc0100664 0001750 0001750 00000003062 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.List; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link DefaultEndOfSentenceScanner} class. */ public class DefaultEndOfSentenceScannerTest { @Test public void testScanning() { EndOfSentenceScanner scanner = new DefaultEndOfSentenceScanner( new char[]{'.', '!', '?'}); List eosPositions = scanner.getPositions("... um die Wertmarken zu auswählen !?"); Assert.assertEquals(0, eosPositions.get(0).intValue()); Assert.assertEquals(1, eosPositions.get(1).intValue()); Assert.assertEquals(2, eosPositions.get(2).intValue()); Assert.assertEquals(35, eosPositions.get(3).intValue()); Assert.assertEquals(36, eosPositions.get(4).intValue()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_SDEven0100644 0000000 0000000 00000000156 14135770370 032567 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SDEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SDEventStreamTest.java0100664 0001750 0001750 00000004130 14135770370 034126 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.Event; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.Span; /** * Tests for the {@link SDEventStream} class. */ public class SDEventStreamTest { @Test public void testEventOutcomes() throws IOException { // Sample with two sentences SentenceSample sample = new SentenceSample("Test sent. one. Test sent. 2?", new Span(0, 15), new Span(16, 29)); ObjectStream sampleStream = ObjectStreamUtils.createObjectStream(sample); Factory factory = new Factory(); ObjectStream eventStream = new SDEventStream(sampleStream, factory.createSentenceContextGenerator("eng"), factory.createEndOfSentenceScanner("eng")); Assert.assertEquals(SentenceDetectorME.NO_SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(SentenceDetectorME.SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(SentenceDetectorME.NO_SPLIT, eventStream.read().getOutcome()); Assert.assertEquals(SentenceDetectorME.SPLIT, eventStream.read().getOutcome()); Assert.assertNull(eventStream.read()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_DummyS0100644 0000000 0000000 00000000171 14135770370 032656 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorF0100664 0001750 0001750 00000010145 14135770370 034245 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import java.util.Set; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.model.ArtifactSerializer; public class DummySentenceDetectorFactory extends SentenceDetectorFactory { private static final String DUMMY_DICT = "dummy"; private DummyDictionary dict; public DummySentenceDetectorFactory() { } public DummySentenceDetectorFactory(String languageCode, boolean useTokenEnd, Dictionary abbreviationDictionary, char[] eosCharacters) { super(languageCode, useTokenEnd, abbreviationDictionary, eosCharacters); } @Override protected void init(String languageCode, boolean useTokenEnd, Dictionary abbreviationDictionary, char[] eosCharacters) { super.init(languageCode, useTokenEnd, abbreviationDictionary, eosCharacters); this.dict = new DummyDictionary(abbreviationDictionary); } @Override public DummyDictionary getAbbreviationDictionary() { if (this.dict == null && artifactProvider != null) { this.dict = artifactProvider.getArtifact(DUMMY_DICT); } return this.dict; } @Override public SDContextGenerator getSDContextGenerator() { return new DummySDContextGenerator(getAbbreviationDictionary() .asStringSet(), getEOSCharacters()); } @Override public EndOfSentenceScanner getEndOfSentenceScanner() { return new DummyEOSScanner(getEOSCharacters()); } @Override @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { Map serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_DICT, new DummyDictionarySerializer()); return serializers; } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); if (this.dict != null) { artifactMap.put(DUMMY_DICT, this.dict); } return artifactMap; } public static class DummyDictionarySerializer implements ArtifactSerializer { public DummyDictionary create(InputStream in) throws IOException { return new DummyDictionary(in); } public void serialize(DummyDictionary artifact, OutputStream out) throws IOException { artifact.serialize(out); } } public static class DummyDictionary extends Dictionary { private Dictionary indict; public DummyDictionary(Dictionary dict) { this.indict = dict; } public DummyDictionary(InputStream in) throws IOException { this.indict = new Dictionary(in); } public void serialize(OutputStream out) throws IOException { indict.serialize(out); } public Set asStringSet() { return indict.asStringSet(); } @Override public Class getArtifactSerializerClass() { return DummyDictionarySerializer.class; } } static class DummySDContextGenerator extends DefaultSDContextGenerator { public DummySDContextGenerator(Set inducedAbbreviations, char[] eosCharacters) { super(inducedAbbreviations, eosCharacters); } } static class DummyEOSScanner extends DefaultEndOfSentenceScanner { public DummyEOSScanner(char[] eosCharacters) { super(eosCharacters); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000172 14135770370 032675 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorEvalua0100664 0001750 0001750 00000005162 14135770370 034264 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.sentdetect.SentenceEvaluationErrorListener; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.Span; public class SentenceDetectorEvaluatorTest { @Test public void testPositive() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); SentenceDetectorEvaluationMonitor listener = new SentenceEvaluationErrorListener(stream); SentenceDetectorEvaluator eval = new SentenceDetectorEvaluator(new DummySD( SentenceSampleTest.createGoldSample()), listener); eval.evaluateSample(SentenceSampleTest.createGoldSample()); Assert.assertEquals(1.0, eval.getFMeasure().getFMeasure(), 0.0); Assert.assertEquals(0, stream.toString().length()); } @Test public void testNegative() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); SentenceDetectorEvaluationMonitor listener = new SentenceEvaluationErrorListener(stream); SentenceDetectorEvaluator eval = new SentenceDetectorEvaluator(new DummySD( SentenceSampleTest.createGoldSample()), listener); eval.evaluateSample(SentenceSampleTest.createPredSample()); Assert.assertEquals(-1.0, eval.getFMeasure().getFMeasure(), .1d); Assert.assertNotSame(0, stream.toString().length()); } /** * a dummy sentence detector that always return something expected */ class DummySD implements SentenceDetector { private SentenceSample sample; public DummySD(SentenceSample sample) { this.sample = sample; } public String[] sentDetect(String s) { return null; } public Span[] sentPosDetect(String s) { return sample.getSentences(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000163 14135770370 032675 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest0100664 0001750 0001750 00000015106 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link SentenceDetectorME} class. */ public class SentenceDetectorMETest { @Test public void testSentenceDetector() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/sentdetect/Sentences.txt"); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 0); SentenceDetectorFactory factory = new SentenceDetectorFactory("eng", true, null, null); SentenceModel sentdetectModel = SentenceDetectorME.train( "eng", new SentenceSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)), factory, mlParams); Assert.assertEquals("eng", sentdetectModel.getLanguage()); SentenceDetectorME sentDetect = new SentenceDetectorME(sentdetectModel); // Tests sentence detector with sentDetect method String sampleSentences1 = "This is a test. There are many tests, this is the second."; String[] sents = sentDetect.sentDetect(sampleSentences1); Assert.assertEquals(sents.length,2); Assert.assertEquals(sents[0],"This is a test."); Assert.assertEquals(sents[1],"There are many tests, this is the second."); double[] probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(probs.length,2); String sampleSentences2 = "This is a test. There are many tests, this is the second"; sents = sentDetect.sentDetect(sampleSentences2); Assert.assertEquals(sents.length,2); probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(probs.length,2); Assert.assertEquals(sents[0],"This is a test."); Assert.assertEquals(sents[1],"There are many tests, this is the second"); String sampleSentences3 = "This is a \"test\". He said \"There are many tests, this is the second.\""; sents = sentDetect.sentDetect(sampleSentences3); Assert.assertEquals(sents.length,2); probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(probs.length,2); Assert.assertEquals(sents[0],"This is a \"test\"."); Assert.assertEquals(sents[1],"He said \"There are many tests, this is the second.\""); String sampleSentences4 = "This is a \"test\". I said \"This is a test.\" Any questions?"; sents = sentDetect.sentDetect(sampleSentences4); Assert.assertEquals(sents.length,3); probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(probs.length,3); Assert.assertEquals(sents[0],"This is a \"test\"."); Assert.assertEquals(sents[1],"I said \"This is a test.\""); Assert.assertEquals(sents[2],"Any questions?"); String sampleSentences5 = "This is a one sentence test space at the end. "; sents = sentDetect.sentDetect(sampleSentences5); Assert.assertEquals(1, sentDetect.getSentenceProbabilities().length); Assert.assertEquals(sents[0],"This is a one sentence test space at the end."); String sampleSentences6 = "This is a one sentences test with tab at the end. "; sents = sentDetect.sentDetect(sampleSentences6); Assert.assertEquals(sents[0],"This is a one sentences test with tab at the end."); String sampleSentences7 = "This is a test. With spaces between the two sentences."; sents = sentDetect.sentDetect(sampleSentences7); Assert.assertEquals(sents[0],"This is a test."); Assert.assertEquals(sents[1],"With spaces between the two sentences."); String sampleSentences9 = ""; sents = sentDetect.sentDetect(sampleSentences9); Assert.assertEquals(0, sents.length); String sampleSentences10 = " "; // whitespaces and tabs sents = sentDetect.sentDetect(sampleSentences10); Assert.assertEquals(0, sents.length); String sampleSentences11 = "This is test sentence without a dot at the end and spaces "; sents = sentDetect.sentDetect(sampleSentences11); Assert.assertEquals(sents[0],"This is test sentence without a dot at the end and spaces"); probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(1, probs.length); String sampleSentence12 = " This is a test."; sents = sentDetect.sentDetect(sampleSentence12); Assert.assertEquals(sents[0],"This is a test."); String sampleSentence13 = " This is a test"; sents = sentDetect.sentDetect(sampleSentence13); Assert.assertEquals(sents[0],"This is a test"); // Test that sentPosDetect also works Span[] pos = sentDetect.sentPosDetect(sampleSentences2); Assert.assertEquals(pos.length,2); probs = sentDetect.getSentenceProbabilities(); Assert.assertEquals(probs.length,2); Assert.assertEquals(new Span(0, 15), pos[0]); Assert.assertEquals(new Span(16, 56), pos[1]); } @Test(expected = InsufficientTrainingDataException.class) public void testInsufficientData() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/sentdetect/SentencesInsufficient.txt"); TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 0); SentenceDetectorFactory factory = new SentenceDetectorFactory("eng", true, null, null); SentenceDetectorME.train("eng", new SentenceSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)), factory, mlParams); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000170 14135770370 032673 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorFactoryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorFactor0100664 0001750 0001750 00000017737 14135770370 034300 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.sentdetect.DummySentenceDetectorFactory.DummyDictionary; import opennlp.tools.sentdetect.DummySentenceDetectorFactory.DummyEOSScanner; import opennlp.tools.sentdetect.DummySentenceDetectorFactory.DummySDContextGenerator; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link SentenceDetectorME} class. */ public class SentenceDetectorFactoryTest { private static ObjectStream createSampleStream() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( SentenceDetectorFactoryTest.class, "/opennlp/tools/sentdetect/Sentences.txt"); return new SentenceSampleStream(new PlainTextByLineStream( in, StandardCharsets.UTF_8)); } private static SentenceModel train(SentenceDetectorFactory factory) throws IOException { return SentenceDetectorME.train("eng", createSampleStream(), factory, TrainingParameters.defaultParams()); } private static Dictionary loadAbbDictionary() throws IOException { InputStream in = SentenceDetectorFactoryTest.class.getClassLoader() .getResourceAsStream("opennlp/tools/sentdetect/abb.xml"); return new Dictionary(in); } @Test public void testDefault() throws IOException { Dictionary dic = loadAbbDictionary(); char[] eos = {'.', '?'}; SentenceModel sdModel = train(new SentenceDetectorFactory("eng", true, dic, eos)); SentenceDetectorFactory factory = sdModel.getFactory(); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); ByteArrayOutputStream out = new ByteArrayOutputStream(); sdModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); SentenceModel fromSerialized = new SentenceModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); } @Test public void testNullDict() throws IOException { Dictionary dic = null; char[] eos = {'.', '?'}; SentenceModel sdModel = train(new SentenceDetectorFactory("eng", true, dic, eos)); SentenceDetectorFactory factory = sdModel.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); ByteArrayOutputStream out = new ByteArrayOutputStream(); sdModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); SentenceModel fromSerialized = new SentenceModel(in); factory = fromSerialized.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); } @Test public void testDefaultEOS() throws IOException { Dictionary dic = null; char[] eos = null; SentenceModel sdModel = train(new SentenceDetectorFactory("eng", true, dic, eos)); SentenceDetectorFactory factory = sdModel.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(Factory.defaultEosCharacters, factory.getEOSCharacters())); ByteArrayOutputStream out = new ByteArrayOutputStream(); sdModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); SentenceModel fromSerialized = new SentenceModel(in); factory = fromSerialized.getFactory(); Assert.assertNull(factory.getAbbreviationDictionary()); Assert.assertTrue(factory.getSDContextGenerator() instanceof DefaultSDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DefaultEndOfSentenceScanner); Assert.assertTrue(Arrays.equals(Factory.defaultEosCharacters, factory.getEOSCharacters())); } @Test public void testDummyFactory() throws IOException { Dictionary dic = loadAbbDictionary(); char[] eos = {'.', '?'}; SentenceModel sdModel = train(new DummySentenceDetectorFactory("eng", true, dic, eos)); SentenceDetectorFactory factory = sdModel.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getSDContextGenerator() instanceof DummySDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DummyEOSScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); ByteArrayOutputStream out = new ByteArrayOutputStream(); sdModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); SentenceModel fromSerialized = new SentenceModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getSDContextGenerator() instanceof DummySDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DummyEOSScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); Assert.assertEquals(factory.getAbbreviationDictionary(), sdModel.getAbbreviations()); Assert.assertTrue(Arrays.equals(factory.getEOSCharacters(), sdModel.getEosCharacters())); } @Test public void testCreateDummyFactory() throws IOException { Dictionary dic = loadAbbDictionary(); char[] eos = {'.', '?'}; SentenceDetectorFactory factory = SentenceDetectorFactory.create( DummySentenceDetectorFactory.class.getCanonicalName(), "spa", false, dic, eos); Assert.assertTrue(factory.getAbbreviationDictionary() instanceof DummyDictionary); Assert.assertTrue(factory.getSDContextGenerator() instanceof DummySDContextGenerator); Assert.assertTrue(factory.getEndOfSentenceScanner() instanceof DummyEOSScanner); Assert.assertTrue(Arrays.equals(eos, factory.getEOSCharacters())); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ngram/NGramGeneratorTest.java0100664 0001750 0001750 00000013060 14135770370 033261 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; public class NGramGeneratorTest { @Test public void generateListTest1() { final List input = Arrays.asList("This", "is", "a", "sentence"); final int window = 1; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(4, ngrams.size()); Assert.assertEquals("This", ngrams.get(0)); Assert.assertEquals("is", ngrams.get(1)); Assert.assertEquals("a", ngrams.get(2)); Assert.assertEquals("sentence", ngrams.get(3)); } @Test public void generateListTest2() { final List input = Arrays.asList("This", "is", "a", "sentence"); final int window = 2; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(3, ngrams.size()); Assert.assertEquals("This-is", ngrams.get(0)); Assert.assertEquals("is-a", ngrams.get(1)); Assert.assertEquals("a-sentence", ngrams.get(2)); } @Test public void generateListTest3() { final List input = Arrays.asList("This", "is", "a", "sentence"); final int window = 3; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(2, ngrams.size()); Assert.assertEquals("This-is-a", ngrams.get(0)); Assert.assertEquals("is-a-sentence", ngrams.get(1)); } @Test public void generateListTest4() { final List input = Arrays.asList("This", "is", "a", "sentence"); final int window = 4; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(1, ngrams.size()); Assert.assertEquals("This-is-a-sentence", ngrams.get(0)); } @Test public void generateCharTest1() { final char[] input = "Test".toCharArray(); final int window = 1; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(4, ngrams.size()); Assert.assertEquals("T", ngrams.get(0)); Assert.assertEquals("e", ngrams.get(1)); Assert.assertEquals("s", ngrams.get(2)); Assert.assertEquals("t", ngrams.get(3)); } @Test public void generateCharTest2() { final char[] input = "Test".toCharArray(); final int window = 2; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(3, ngrams.size()); Assert.assertEquals("T-e", ngrams.get(0)); Assert.assertEquals("e-s", ngrams.get(1)); Assert.assertEquals("s-t", ngrams.get(2)); } @Test public void generateCharTest3() { final char[] input = "Test".toCharArray(); final int window = 3; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(2, ngrams.size()); Assert.assertEquals("T-e-s", ngrams.get(0)); Assert.assertEquals("e-s-t", ngrams.get(1)); } @Test public void generateCharTest4() { final char[] input = "Test".toCharArray(); final int window = 4; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(1, ngrams.size()); Assert.assertEquals("T-e-s-t", ngrams.get(0)); } @Test public void generateCharTest() { final char[] input = "Test again".toCharArray(); final int window = 4; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertEquals(7, ngrams.size()); Assert.assertEquals(("T-e-s-t"), ngrams.get(0)); Assert.assertEquals(("e-s-t- "), ngrams.get(1)); Assert.assertEquals(("s-t- -a"), ngrams.get(2)); Assert.assertEquals(("t- -a-g"), ngrams.get(3)); Assert.assertEquals((" -a-g-a"), ngrams.get(4)); Assert.assertEquals(("a-g-a-i"), ngrams.get(5)); Assert.assertEquals(("g-a-i-n"), ngrams.get(6)); } @Test public void generateLargerWindowThanListTest() { final List input = Arrays.asList("One", "two"); final int window = 3; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertTrue(ngrams.isEmpty()); } @Test public void emptyTest() { final List input = new ArrayList<>(); final int window = 2; final String separator = "-"; final List ngrams = NGramGenerator.generate(input, window, separator); Assert.assertTrue(ngrams.isEmpty()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ngram/NGramModelTest.java0100664 0001750 0001750 00000021305 14135770370 032374 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; /** * Tests for {@link opennlp.tools.ngram.NGramModel} */ public class NGramModelTest { @Test public void testZeroGetCount() throws Exception { NGramModel ngramModel = new NGramModel(); int count = ngramModel.getCount(new StringList("")); Assert.assertEquals(0, count); Assert.assertEquals(0, ngramModel.size()); } @Test public void testZeroGetCount2() throws Exception { NGramModel ngramModel = new NGramModel(); ngramModel.add(new StringList("the", "bro", "wn")); int count = ngramModel.getCount(new StringList("fox")); Assert.assertEquals(0, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd() throws Exception { NGramModel ngramModel = new NGramModel(); ngramModel.add(new StringList("the", "bro", "wn")); int count = ngramModel.getCount(new StringList("the")); Assert.assertEquals(0, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd1() throws Exception { NGramModel ngramModel = new NGramModel(); ngramModel.add(new StringList("the", "bro", "wn")); int count = ngramModel.getCount(new StringList("the", "bro", "wn")); Assert.assertEquals(1, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd2() throws Exception { NGramModel ngramModel = new NGramModel(); ngramModel.add(new StringList("the", "bro", "wn"), 2, 3); int count = ngramModel.getCount(new StringList("the", "bro", "wn")); Assert.assertEquals(1, count); Assert.assertEquals(3, ngramModel.size()); } @Test public void testAdd3() throws Exception { NGramModel ngramModel = new NGramModel(); ngramModel.add(new StringList("the", "brown", "fox"), 2, 3); int count = ngramModel.getCount(new StringList("the", "brown", "fox")); Assert.assertEquals(1, count); count = ngramModel.getCount(new StringList("the", "brown")); Assert.assertEquals(1, count); count = ngramModel.getCount(new StringList("brown", "fox")); Assert.assertEquals(1, count); Assert.assertEquals(3, ngramModel.size()); } @Test public void testRemove() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "bro", "wn"); ngramModel.add(tokens); ngramModel.remove(tokens); Assert.assertEquals(0, ngramModel.size()); } @Test public void testContains() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "bro", "wn"); ngramModel.add(tokens); Assert.assertFalse(ngramModel.contains(new StringList("the"))); } @Test public void testContains2() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "bro", "wn"); ngramModel.add(tokens, 1, 3); Assert.assertTrue(ngramModel.contains(new StringList("the"))); } @Test public void testNumberOfGrams() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "bro", "wn"); ngramModel.add(tokens, 1, 3); Assert.assertEquals(6, ngramModel.numberOfGrams()); } @Test public void testCutoff1() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "brown", "fox", "jumped"); ngramModel.add(tokens, 1, 3); ngramModel.cutoff(2, 4); Assert.assertEquals(0, ngramModel.size()); } @Test public void testCutoff2() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "brown", "fox", "jumped"); ngramModel.add(tokens, 1, 3); ngramModel.cutoff(1, 3); Assert.assertEquals(9, ngramModel.size()); } @Test public void testToDictionary() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "brown", "fox", "jumped"); ngramModel.add(tokens, 1, 3); tokens = new StringList("the", "brown", "Fox", "jumped"); ngramModel.add(tokens, 1, 3); Dictionary dictionary = ngramModel.toDictionary(); Assert.assertNotNull(dictionary); Assert.assertEquals(9, dictionary.size()); Assert.assertEquals(1, dictionary.getMinTokenCount()); Assert.assertEquals(3, dictionary.getMaxTokenCount()); } @Test public void testToDictionary1() throws Exception { NGramModel ngramModel = new NGramModel(); StringList tokens = new StringList("the", "brown", "fox", "jumped"); ngramModel.add(tokens, 1, 3); tokens = new StringList("the", "brown", "Fox", "jumped"); ngramModel.add(tokens, 1, 3); Dictionary dictionary = ngramModel.toDictionary(true); Assert.assertNotNull(dictionary); Assert.assertEquals(14, dictionary.size()); Assert.assertEquals(1, dictionary.getMinTokenCount()); Assert.assertEquals(3, dictionary.getMaxTokenCount()); } @Test(expected = InvalidFormatException.class) public void testInvalidFormat() throws Exception { InputStream stream = new ByteArrayInputStream("inputstring".getBytes(StandardCharsets.UTF_8)); NGramModel ngramModel = new NGramModel(stream); stream.close(); ngramModel.toDictionary(true); } @Test public void testFromFile() throws Exception { InputStream stream = getClass().getResourceAsStream("/opennlp/tools/ngram/ngram-model.xml"); NGramModel ngramModel = new NGramModel(stream); stream.close(); Dictionary dictionary = ngramModel.toDictionary(true); Assert.assertNotNull(dictionary); Assert.assertEquals(14, dictionary.size()); Assert.assertEquals(3, dictionary.getMaxTokenCount()); Assert.assertEquals(1, dictionary.getMinTokenCount()); } @Test public void testSerialize() throws Exception { InputStream stream = getClass().getResourceAsStream("/opennlp/tools/ngram/ngram-model.xml"); NGramModel ngramModel1 = new NGramModel(stream); stream.close(); Dictionary dictionary = ngramModel1.toDictionary(true); Assert.assertNotNull(dictionary); Assert.assertEquals(14, dictionary.size()); Assert.assertEquals(3, dictionary.getMaxTokenCount()); Assert.assertEquals(1, dictionary.getMinTokenCount()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ngramModel1.serialize(baos); final String serialized = new String(baos.toByteArray(), Charset.defaultCharset()); InputStream inputStream = new ByteArrayInputStream(serialized.getBytes(StandardCharsets.UTF_8)); NGramModel ngramModel2 = new NGramModel(inputStream); stream.close(); Assert.assertEquals(ngramModel2.numberOfGrams(), ngramModel2.numberOfGrams()); Assert.assertEquals(ngramModel2.size(), ngramModel2.size()); dictionary = ngramModel2.toDictionary(true); Assert.assertNotNull(dictionary); Assert.assertEquals(14, dictionary.size()); Assert.assertEquals(3, dictionary.getMaxTokenCount()); Assert.assertEquals(1, dictionary.getMinTokenCount()); } @Test(expected = InvalidFormatException.class) public void testFromInvalidFileMissingCount() throws Exception { InputStream stream = getClass().getResourceAsStream("/opennlp/tools/ngram/ngram-model-no-count.xml"); NGramModel ngramModel = new NGramModel(stream); stream.close(); ngramModel.toDictionary(true); } @Test(expected = InvalidFormatException.class) public void testFromInvalidFileNotANumber() throws Exception { InputStream stream = getClass().getResourceAsStream("/opennlp/tools/ngram/ngram-model-not-a-number.xml"); NGramModel ngramModel = new NGramModel(stream); stream.close(); ngramModel.toDictionary(true); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ngram/NGramCharModelTest.java0100664 0001750 0001750 00000006213 14135770370 033173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import org.junit.Assert; import org.junit.Test; /** * Tests for {@link NGramCharModel} */ public class NGramCharModelTest { @Test public void testZeroGetCount() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); int count = ngramModel.getCount(""); Assert.assertEquals(0, count); Assert.assertEquals(0, ngramModel.size()); } @Test public void testZeroGetCount2() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); ngramModel.add("the"); int count = ngramModel.getCount("fox"); Assert.assertEquals(0, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); ngramModel.add("fox"); int count = ngramModel.getCount("the"); Assert.assertEquals(0, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd1() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); ngramModel.add("the"); int count = ngramModel.getCount("the"); Assert.assertEquals(1, count); Assert.assertEquals(1, ngramModel.size()); } @Test public void testAdd2() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); ngramModel.add("the", 1, 3); int count = ngramModel.getCount("th"); Assert.assertEquals(1, count); Assert.assertEquals(6, ngramModel.size()); } @Test public void testRemove() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); String ngram = "the"; ngramModel.add(ngram); ngramModel.remove(ngram); Assert.assertEquals(0, ngramModel.size()); } @Test public void testContains() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); String token = "the"; ngramModel.add(token); Assert.assertFalse(ngramModel.contains("fox")); } @Test public void testContains2() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); String token = "the"; ngramModel.add(token, 1, 3); Assert.assertTrue(ngramModel.contains("the")); } @Test public void testCutoff1() throws Exception { NGramCharModel ngramModel = new NGramCharModel(); String token = "the"; ngramModel.add(token, 1, 3); ngramModel.cutoff(2, 4); Assert.assertEquals(0, ngramModel.size()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ngram/NGramUtilsTest.java0100664 0001750 0001750 00000010650 14135770370 032435 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.util.Collection; import java.util.LinkedList; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.StringList; /** * Tests for {@link NGramUtils} */ public class NGramUtilsTest { @Test public void testBigramMLProbability() { Collection set = new LinkedList<>(); set.add(new StringList("", "I", "am", "Sam", "")); set.add(new StringList("", "Sam", "I", "am", "")); set.add(new StringList("", "I", "do", "not", "like", "green", "eggs", "and", "ham", "")); set.add(new StringList("")); Double d = NGramUtils.calculateBigramMLProbability("", "I", set); Assert.assertEquals(Double.valueOf(0.6666666666666666d), d); d = NGramUtils.calculateBigramMLProbability("Sam", "", set); Assert.assertEquals(Double.valueOf(0.5d), d); d = NGramUtils.calculateBigramMLProbability("", "Sam", set); Assert.assertEquals(Double.valueOf(0.3333333333333333d), d); } @Test public void testTrigramMLProbability() { Collection set = new LinkedList<>(); set.add(new StringList("", "I", "am", "Sam", "")); set.add(new StringList("", "Sam", "I", "am", "")); set.add(new StringList("", "I", "do", "not", "like", "green", "eggs", "and", "ham", "")); set.add(new StringList("")); Double d = NGramUtils.calculateTrigramMLProbability("I", "am", "Sam", set); Assert.assertEquals(Double.valueOf(0.5), d); d = NGramUtils.calculateTrigramMLProbability("Sam", "I", "am", set); Assert.assertEquals(Double.valueOf(1d), d); } @Test public void testNgramMLProbability() { Collection set = new LinkedList<>(); set.add(new StringList("", "I", "am", "Sam", "")); set.add(new StringList("", "Sam", "I", "am", "")); set.add(new StringList("", "I", "do", "not", "like", "green", "eggs", "and", "ham", "")); set.add(new StringList("")); Double d = NGramUtils.calculateNgramMLProbability(new StringList("I", "am", "Sam"), set); Assert.assertEquals(Double.valueOf(0.5), d); d = NGramUtils.calculateNgramMLProbability(new StringList("Sam", "I", "am"), set); Assert.assertEquals(Double.valueOf(1d), d); } @Test public void testLinearInterpolation() throws Exception { Collection set = new LinkedList<>(); set.add(new StringList("the", "green", "book", "STOP")); set.add(new StringList("my", "blue", "book", "STOP")); set.add(new StringList("his", "green", "house", "STOP")); set.add(new StringList("book", "STOP")); Double lambda = 1d / 3d; Double d = NGramUtils.calculateTrigramLinearInterpolationProbability("the", "green", "book", set, lambda, lambda, lambda); Assert.assertNotNull(d); Assert.assertEquals("wrong result", Double.valueOf(0.5714285714285714d), d); } @Test public void testLinearInterpolation2() throws Exception { Collection set = new LinkedList<>(); set.add(new StringList("D", "N", "V", "STOP")); set.add(new StringList("D", "N", "V", "STOP")); Double lambda = 1d / 3d; Double d = NGramUtils.calculateTrigramLinearInterpolationProbability("N", "V", "STOP", set, lambda, lambda, lambda); Assert.assertNotNull(d); Assert.assertEquals("wrong result", Double.valueOf(0.75d), d); } @Test public void testGetNGrams() throws Exception { Collection nGrams = NGramUtils.getNGrams(new StringList("I", "saw", "brown", "fox"), 2); Assert.assertEquals(3, nGrams.size()); nGrams = NGramUtils.getNGrams(new StringList("I", "saw", "brown", "fox"), 3); Assert.assertEquals(2, nGrams.size()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/MockEventTrainer.java0100664 0001750 0001750 00000003037 14135770370 032275 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public class MockEventTrainer implements EventTrainer { public MaxentModel train(ObjectStream events) throws IOException { return null; } @Override public MaxentModel train(DataIndexer indexer) throws IOException { return null; } @Override public void init(Map trainParams, Map reportMap) { } @Override public void init(TrainingParameters trainingParams, Map reportMap) { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_perceptron_Per0100644 0000000 0000000 00000000170 14135770370 032674 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttac0100664 0001750 0001750 00000015023 14135770370 034241 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.PrepAttachDataUtil; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.TrainingParameters; /** * Test for perceptron training and use with the ppa data. */ public class PerceptronPrepAttachTest { @Test public void testPerceptronOnPrepAttachData() throws IOException { TwoPassDataIndexer indexer = new TwoPassDataIndexer(); TrainingParameters indexingParameters = new TrainingParameters(); indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); indexingParameters.put(AbstractDataIndexer.SORT_PARAM, false); indexer.init(indexingParameters, new HashMap<>()); indexer.index(PrepAttachDataUtil.createTrainingStream()); MaxentModel model = new PerceptronTrainer().trainModel(400, indexer, 1); PrepAttachDataUtil.testModel(model, 0.7650408516959644); } @Test public void testPerceptronOnPrepAttachDataWithSkippedAveraging() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put("UseSkippedAveraging", true); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.773706362961129); } @Test public void testPerceptronOnPrepAttachDataWithTolerance() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 500); trainParams.put("Tolerance", 0.0001d); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.7677642980935875); } @Test public void testPerceptronOnPrepAttachDataWithStepSizeDecrease() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 500); trainParams.put("StepSizeDecrease", 0.06d); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.7791532557563754); } @Test public void testModelSerialization() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put("UseSkippedAveraging", true); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); AbstractModel model = (AbstractModel) trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.773706362961129); // serialize and load model, then check if it still works as expected ByteArrayOutputStream modelBytes = new ByteArrayOutputStream(); BinaryPerceptronModelWriter writer = new BinaryPerceptronModelWriter(model, new DataOutputStream(modelBytes)); writer.persist(); writer.close(); MaxentModel restoredModel = new BinaryPerceptronModelReader( new DataInputStream(new ByteArrayInputStream(modelBytes.toByteArray()))).getModel(); PrepAttachDataUtil.testModel(restoredModel, 0.773706362961129); } @Test public void testModelEquals() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put("UseSkippedAveraging", true); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); AbstractModel modelA = (AbstractModel) trainer.train(PrepAttachDataUtil.createTrainingStream()); AbstractModel modelB = (AbstractModel) trainer.train(PrepAttachDataUtil.createTrainingStream()); Assert.assertEquals(modelA, modelB); Assert.assertEquals(modelA.hashCode(), modelB.hashCode()); } @Test public void verifyReportMap() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); // Since we are verifying the report map, we don't need to have more than 1 iteration trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 1); trainParams.put("UseSkippedAveraging", true); Map reportMap = new HashMap<>(); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, reportMap); trainer.train(PrepAttachDataUtil.createTrainingStream()); Assert.assertTrue("Report Map does not contain the training event hash", reportMap.containsKey("Training-Eventhash")); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java0100664 0001750 0001750 00000002575 14135770370 032772 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.TrainingParameters; public class MockSequenceTrainer implements EventModelSequenceTrainer { public AbstractModel train(SequenceStream events) throws IOException { return null; } @Override public void init(Map trainParams, Map reportMap) { } @Override public void init(TrainingParameters trainParams, Map reportMap) { } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java0100664 0001750 0001750 00000014262 14135770370 031711 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.BeamSearchContextGenerator; import opennlp.tools.util.Sequence; public class BeamSearchTest { static class IdentityFeatureGenerator implements BeamSearchContextGenerator { private String[] outcomeSequence; IdentityFeatureGenerator(String[] outcomeSequence) { this.outcomeSequence = outcomeSequence; } public String[] getContext(int index, String[] sequence, String[] priorDecisions, Object[] additionalContext) { return new String[] {outcomeSequence[index]}; } } static class IdentityModel implements MaxentModel { private String[] outcomes; private Map outcomeIndexMap = new HashMap<>(); private double bestOutcomeProb = 0.8d; private double otherOutcomeProb; IdentityModel(String[] outcomes) { this.outcomes = outcomes; for (int i = 0; i < outcomes.length; i++) { outcomeIndexMap.put(outcomes[i], i); } otherOutcomeProb = 0.2d / (outcomes.length - 1); } public double[] eval(String[] context) { double[] probs = new double[outcomes.length]; for (int i = 0; i < probs.length; i++) { if (outcomes[i].equals(context[0])) { probs[i] = bestOutcomeProb; } else { probs[i] = otherOutcomeProb; } } return probs; } public double[] eval(String[] context, double[] probs) { return eval(context); } public double[] eval(String[] context, float[] values) { return eval(context); } public String getAllOutcomes(double[] outcomes) { return null; } public String getBestOutcome(double[] outcomes) { return null; } public Object[] getDataStructures() { return null; } public int getIndex(String outcome) { return 0; } public int getNumOutcomes() { return outcomes.length; } public String getOutcome(int i) { return outcomes[i]; } } /** * Tests that beam search does not fail to detect an empty sequence. */ @Test public void testBestSequenceZeroLengthInput() { String[] sequence = new String[0]; BeamSearchContextGenerator cg = new IdentityFeatureGenerator(sequence); String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); BeamSearch bs = new BeamSearch<>(3, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, String outcome) -> true); Assert.assertNotNull(seq); Assert.assertEquals(sequence.length, seq.getOutcomes().size()); } /** * Tests finding a sequence of length one. */ @Test public void testBestSequenceOneElementInput() { String[] sequence = {"1"}; BeamSearchContextGenerator cg = new IdentityFeatureGenerator(sequence); String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); BeamSearch bs = new BeamSearch<>(3, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, String outcome) -> true); Assert.assertNotNull(seq); Assert.assertEquals(sequence.length, seq.getOutcomes().size()); Assert.assertEquals("1", seq.getOutcomes().get(0)); } /** * Tests finding the best sequence on a short input sequence. */ @Test public void testBestSequence() { String[] sequence = {"1", "2", "3", "2", "1"}; BeamSearchContextGenerator cg = new IdentityFeatureGenerator(sequence); String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); BeamSearch bs = new BeamSearch<>(2, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, String outcome) -> true); Assert.assertNotNull(seq); Assert.assertEquals(sequence.length, seq.getOutcomes().size()); Assert.assertEquals("1", seq.getOutcomes().get(0)); Assert.assertEquals("2", seq.getOutcomes().get(1)); Assert.assertEquals("3", seq.getOutcomes().get(2)); Assert.assertEquals("2", seq.getOutcomes().get(3)); Assert.assertEquals("1", seq.getOutcomes().get(4)); } /** * Tests finding the best sequence on a short input sequence. */ @Test public void testBestSequenceWithValidator() { String[] sequence = {"1", "2", "3", "2", "1"}; BeamSearchContextGenerator cg = new IdentityFeatureGenerator(sequence); String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); BeamSearch bs = new BeamSearch<>(2, model, 0); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, String outcome) -> !"2".equals(outcome)); Assert.assertNotNull(seq); Assert.assertEquals(sequence.length, seq.getOutcomes().size()); Assert.assertEquals("1", seq.getOutcomes().get(0)); Assert.assertNotSame("2", seq.getOutcomes().get(1)); Assert.assertEquals("3", seq.getOutcomes().get(2)); Assert.assertNotSame("2", seq.getOutcomes().get(3)); Assert.assertEquals("1", seq.getOutcomes().get(4)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000171 14135770370 032623 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectne0100664 0001750 0001750 00000012565 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.TrainingParameters; /** * Test for naive bayes classification correctness without smoothing */ public class NaiveBayesCorrectnessTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);; testDataIndexer = new TwoPassDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testNaiveBayes1() throws IOException { testDataIndexer.index(createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); String label = "politics"; String[] context = {"bow=united", "bow=nations"}; Event event = new Event(label, context); // testModel(model, event, 1.0); // Expected value without smoothing testModel(model, event, 0.9681650180264167); // Expected value with smoothing } @Test public void testNaiveBayes2() throws IOException { testDataIndexer.index(createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); String label = "sports"; String[] context = {"bow=manchester", "bow=united"}; Event event = new Event(label, context); // testModel(model, event, 1.0); // Expected value without smoothing testModel(model, event, 0.9658833555831029); // Expected value with smoothing } @Test public void testNaiveBayes3() throws IOException { testDataIndexer.index(createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); String label = "politics"; String[] context = {"bow=united"}; Event event = new Event(label, context); //testModel(model, event, 2.0/3.0); // Expected value without smoothing testModel(model, event, 0.6655036407766989); // Expected value with smoothing } @Test public void testNaiveBayes4() throws IOException { testDataIndexer.index(createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); String label = "politics"; String[] context = {}; Event event = new Event(label, context); testModel(model, event, 7.0 / 12.0); } private void testModel(MaxentModel model, Event event, double higher_probability) { double[] outcomes = model.eval(event.getContext()); String outcome = model.getBestOutcome(outcomes); Assert.assertEquals(2, outcomes.length); Assert.assertEquals(event.getOutcome(), outcome); if (event.getOutcome().equals(model.getOutcome(0))) { Assert.assertEquals(higher_probability, outcomes[0], 0.0001); } if (!event.getOutcome().equals(model.getOutcome(0))) { Assert.assertEquals(1.0 - higher_probability, outcomes[0], 0.0001); } if (event.getOutcome().equals(model.getOutcome(1))) { Assert.assertEquals(higher_probability, outcomes[1], 0.0001); } if (!event.getOutcome().equals(model.getOutcome(1))) { Assert.assertEquals(1.0 - higher_probability, outcomes[1], 0.0001); } } public static ObjectStream createTrainingStream() throws IOException { List trainingEvents = new ArrayList<>(); String label1 = "politics"; String[] context1 = {"bow=the", "bow=united", "bow=nations"}; trainingEvents.add(new Event(label1, context1)); String label2 = "politics"; String[] context2 = {"bow=the", "bow=united", "bow=states", "bow=and"}; trainingEvents.add(new Event(label2, context2)); String label3 = "sports"; String[] context3 = {"bow=manchester", "bow=united"}; trainingEvents.add(new Event(label3, context3)); String label4 = "sports"; String[] context4 = {"bow=manchester", "bow=and", "bow=barca"}; trainingEvents.add(new Event(label4, context4)); return ObjectStreamUtils.createObjectStream(trainingEvents); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000203 14135770370 032617 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerialize0100664 0001750 0001750 00000013574 14135770370 034170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.TrainingParameters; /** * Test for naive bayes classification correctness without smoothing */ public class NaiveBayesSerializedCorrectnessTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);; testDataIndexer = new TwoPassDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testNaiveBayes1() throws IOException { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model1 = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); NaiveBayesModel model2 = persistedModel(model1); String label = "politics"; String[] context = {"bow=united", "bow=nations"}; Event event = new Event(label, context); testModelOutcome(model1, model2, event); } @Test public void testNaiveBayes2() throws IOException { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model1 = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); NaiveBayesModel model2 = persistedModel(model1); String label = "sports"; String[] context = {"bow=manchester", "bow=united"}; Event event = new Event(label, context); testModelOutcome(model1, model2, event); } @Test public void testNaiveBayes3() throws IOException { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model1 = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); NaiveBayesModel model2 = persistedModel(model1); String label = "politics"; String[] context = {"bow=united"}; Event event = new Event(label, context); testModelOutcome(model1, model2, event); } @Test public void testNaiveBayes4() throws IOException { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model1 = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); NaiveBayesModel model2 = persistedModel(model1); String label = "politics"; String[] context = {}; Event event = new Event(label, context); testModelOutcome(model1, model2, event); } @Test public void testPlainTextModel() throws IOException { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model1 = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); StringWriter sw1 = new StringWriter(); NaiveBayesModelWriter modelWriter = new PlainTextNaiveBayesModelWriter(model1, new BufferedWriter(sw1)); modelWriter.persist(); NaiveBayesModelReader reader = new PlainTextNaiveBayesModelReader(new BufferedReader(new StringReader(sw1.toString()))); reader.checkModelType(); NaiveBayesModel model2 = (NaiveBayesModel)reader.constructModel(); StringWriter sw2 = new StringWriter(); modelWriter = new PlainTextNaiveBayesModelWriter(model2, new BufferedWriter(sw2)); modelWriter.persist(); System.out.println(sw1.toString()); Assert.assertEquals(sw1.toString(), sw2.toString()); } protected static NaiveBayesModel persistedModel(NaiveBayesModel model) throws IOException { Path tempFilePath = Files.createTempFile("ptnb-", ".bin"); File file = tempFilePath.toFile(); try { NaiveBayesModelWriter modelWriter = new BinaryNaiveBayesModelWriter(model, file); modelWriter.persist(); NaiveBayesModelReader reader = new BinaryNaiveBayesModelReader(file); reader.checkModelType(); return (NaiveBayesModel)reader.constructModel(); } finally { file.delete(); } } protected static void testModelOutcome(NaiveBayesModel model1, NaiveBayesModel model2, Event event) { String[] labels1 = extractLabels(model1); String[] labels2 = extractLabels(model2); Assert.assertArrayEquals(labels1, labels2); double[] outcomes1 = model1.eval(event.getContext()); double[] outcomes2 = model2.eval(event.getContext()); Assert.assertArrayEquals(outcomes1, outcomes2, 0.000000000001); } private static String[] extractLabels(NaiveBayesModel model) { String[] labels = new String[model.getNumOutcomes()]; for (int i = 0; i < model.getNumOutcomes(); i++) { labels[i] = model.getOutcome(i); } return labels; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000174 14135770370 032626 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelRead0100664 0001750 0001750 00000006275 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.TrainingParameters; /** * Tests for persisting and reading naive bayes models */ public class NaiveBayesModelReadWriteTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);; testDataIndexer = new TwoPassDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testBinaryModelPersistence() throws Exception { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); Path tempFile = Files.createTempFile("bnb-", ".bin"); File file = tempFile.toFile(); try { NaiveBayesModelWriter modelWriter = new BinaryNaiveBayesModelWriter(model, file); modelWriter.persist(); NaiveBayesModelReader reader = new BinaryNaiveBayesModelReader(file); reader.checkModelType(); AbstractModel abstractModel = reader.constructModel(); Assert.assertNotNull(abstractModel); } finally { file.delete(); } } @Test public void testTextModelPersistence() throws Exception { testDataIndexer.index(NaiveBayesCorrectnessTest.createTrainingStream()); NaiveBayesModel model = (NaiveBayesModel) new NaiveBayesTrainer().trainModel(testDataIndexer); Path tempFile = Files.createTempFile("ptnb-", ".txt"); File file = tempFile.toFile(); try { NaiveBayesModelWriter modelWriter = new PlainTextNaiveBayesModelWriter(model, file); modelWriter.persist(); NaiveBayesModelReader reader = new PlainTextNaiveBayesModelReader(file); reader.checkModelType(); AbstractModel abstractModel = reader.constructModel(); Assert.assertNotNull(abstractModel); } finally { file.delete(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000170 14135770370 032622 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttac0100664 0001750 0001750 00000006477 14135770370 034130 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.IOException; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.PrepAttachDataUtil; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.TrainingParameters; /** * Test for Naive Bayes training and use with the ppa data. */ public class NaiveBayesPrepAttachTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false); testDataIndexer = new TwoPassDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testNaiveBayesOnPrepAttachData() throws IOException { testDataIndexer.index(PrepAttachDataUtil.createTrainingStream()); MaxentModel model = new NaiveBayesTrainer().trainModel(testDataIndexer); Assert.assertTrue(model instanceof NaiveBayesModel); PrepAttachDataUtil.testModel(model, 0.7897994553107205); } @Test public void testNaiveBayesOnPrepAttachDataUsingTrainUtil() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, NaiveBayesTrainer.NAIVE_BAYES_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); Assert.assertTrue(model instanceof NaiveBayesModel); PrepAttachDataUtil.testModel(model, 0.7897994553107205); } @Test public void testNaiveBayesOnPrepAttachDataUsingTrainUtilWithCutoff5() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, NaiveBayesTrainer.NAIVE_BAYES_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 5); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); Assert.assertTrue(model instanceof NaiveBayesModel); PrepAttachDataUtil.testModel(model, 0.7945035899975241); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java0100664 0001750 0001750 00000022200 14135770370 033312 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.maxent.quasinewton.QNTrainer; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.DataIndexerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class GISIndexingTest { private static String[][] cntx = new String[][]{ {"dog","cat","mouse"}, {"text", "print", "mouse"}, {"dog", "pig", "cat", "mouse"} }; private static String[] outputs = new String[]{"A","B","A"}; private ObjectStream createEventStream() { List events = new ArrayList<>(); for (int i = 0; i < cntx.length; i++) { events.add(new Event(outputs[i], cntx[i])); } return ObjectStreamUtils.createObjectStream(events); } /* * Test the GIS.trainModel(ObjectStream eventStream) method */ @Test public void testGISTrainSignature1() throws IOException { try (ObjectStream eventStream = createEventStream()) { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(AbstractTrainer.CUTOFF_PARAM, 1); EventTrainer trainer = TrainerFactory.getEventTrainer(params, null); Assert.assertNotNull(trainer.train(eventStream)); } } /* * Test the GIS.trainModel(ObjectStream eventStream,boolean smoothing) method */ @Test public void testGISTrainSignature2() throws IOException { try (ObjectStream eventStream = createEventStream()) { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(AbstractTrainer.CUTOFF_PARAM, 1); params.put("smoothing", true); EventTrainer trainer = TrainerFactory.getEventTrainer(params, null); Assert.assertNotNull(trainer.train(eventStream)); } } /* * Test the GIS.trainModel(ObjectStream eventStream, int iterations, int cutoff) method */ @Test public void testGISTrainSignature3() throws IOException { try (ObjectStream eventStream = createEventStream()) { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(AbstractTrainer.ITERATIONS_PARAM, 10); params.put(AbstractTrainer.CUTOFF_PARAM, 1); EventTrainer trainer = TrainerFactory.getEventTrainer(params, null); Assert.assertNotNull(trainer.train(eventStream)); } } /* * Test the GIS.trainModel(ObjectStream eventStream, int iterations, int cutoff, double sigma) method */ @Test public void testGISTrainSignature4() throws IOException { try (ObjectStream eventStream = createEventStream()) { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(AbstractTrainer.ITERATIONS_PARAM, 10); params.put(AbstractTrainer.CUTOFF_PARAM, 1); GISTrainer trainer = (GISTrainer) TrainerFactory.getEventTrainer(params, null); trainer.setGaussianSigma(0.01); Assert.assertNotNull(trainer.trainModel(eventStream)); } } /* * Test the GIS.trainModel((ObjectStream eventStream, int iterations, int cutoff, * boolean smoothing, boolean printMessagesWhileTraining)) method */ @Test public void testGISTrainSignature5() throws IOException { try (ObjectStream eventStream = createEventStream()) { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(AbstractTrainer.ITERATIONS_PARAM, 10); params.put(AbstractTrainer.CUTOFF_PARAM, 1); params.put("smoothing", false); params.put(AbstractTrainer.VERBOSE_PARAM, false); EventTrainer trainer = TrainerFactory.getEventTrainer(params, null); Assert.assertNotNull(trainer.train(eventStream)); } } @Test public void testIndexingWithTrainingParameters() throws IOException { ObjectStream eventStream = createEventStream(); TrainingParameters parameters = TrainingParameters.defaultParams(); // by default we are using GIS/EventTrainer/Cutoff of 5/100 iterations parameters.put(TrainingParameters.ITERATIONS_PARAM, 10); parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE); parameters.put(AbstractEventTrainer.CUTOFF_PARAM, 1); // note: setting the SORT_PARAM to true is the default, so it is not really needed parameters.put(AbstractDataIndexer.SORT_PARAM, true); // guarantee that you have a GIS trainer... EventTrainer trainer = TrainerFactory.getEventTrainer(parameters, new HashMap<>()); Assert.assertEquals("opennlp.tools.ml.maxent.GISTrainer", trainer.getClass().getName()); AbstractEventTrainer aeTrainer = (AbstractEventTrainer)trainer; // guarantee that you have a OnePassDataIndexer ... DataIndexer di = aeTrainer.getDataIndexer(eventStream); Assert.assertEquals("opennlp.tools.ml.model.OnePassDataIndexer", di.getClass().getName()); Assert.assertEquals(3, di.getNumEvents()); Assert.assertEquals(2, di.getOutcomeLabels().length); Assert.assertEquals(6, di.getPredLabels().length); // change the parameters and try again... eventStream.reset(); parameters.put(TrainingParameters.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); parameters.put(AbstractEventTrainer.CUTOFF_PARAM, 2); trainer = TrainerFactory.getEventTrainer(parameters, new HashMap<>()); Assert.assertEquals("opennlp.tools.ml.maxent.quasinewton.QNTrainer", trainer.getClass().getName()); aeTrainer = (AbstractEventTrainer)trainer; di = aeTrainer.getDataIndexer(eventStream); Assert.assertEquals("opennlp.tools.ml.model.TwoPassDataIndexer", di.getClass().getName()); eventStream.close(); } @Test public void testIndexingFactory() throws IOException { Map myReportMap = new HashMap<>(); ObjectStream eventStream = createEventStream(); // set the cutoff to 1 for this test. TrainingParameters parameters = new TrainingParameters(); parameters.put(AbstractDataIndexer.CUTOFF_PARAM, 1); // test with a 1 pass data indexer... parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE); DataIndexer di = DataIndexerFactory.getDataIndexer(parameters, myReportMap); Assert.assertEquals("opennlp.tools.ml.model.OnePassDataIndexer", di.getClass().getName()); di.index(eventStream); Assert.assertEquals(3, di.getNumEvents()); Assert.assertEquals(2, di.getOutcomeLabels().length); Assert.assertEquals(6, di.getPredLabels().length); eventStream.reset(); // test with a 2-pass data indexer... parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); di = DataIndexerFactory.getDataIndexer(parameters, myReportMap); Assert.assertEquals("opennlp.tools.ml.model.TwoPassDataIndexer", di.getClass().getName()); di.index(eventStream); Assert.assertEquals(3, di.getNumEvents()); Assert.assertEquals(2, di.getOutcomeLabels().length); Assert.assertEquals(6, di.getPredLabels().length); // the rest of the test doesn't actually index, so we can close the eventstream. eventStream.close(); // test with a 1-pass Real value dataIndexer parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_ONE_PASS_REAL_VALUE); di = DataIndexerFactory.getDataIndexer(parameters, myReportMap); Assert.assertEquals("opennlp.tools.ml.model.OnePassRealValueDataIndexer", di.getClass().getName()); // test with an UNRegistered MockIndexer parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, "opennlp.tools.ml.maxent.MockDataIndexer"); di = DataIndexerFactory.getDataIndexer(parameters, myReportMap); Assert.assertEquals("opennlp.tools.ml.maxent.MockDataIndexer", di.getClass().getName()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_MaxentP0100644 0000000 0000000 00000000160 14135770370 032634 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.ja0100664 0001750 0001750 00000010453 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.util.HashMap; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.PrepAttachDataUtil; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.ml.model.UniformPrior; import opennlp.tools.util.TrainingParameters; public class MaxentPrepAttachTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false); testDataIndexer = new TwoPassDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testMaxentOnPrepAttachData() throws IOException { testDataIndexer.index(PrepAttachDataUtil.createTrainingStream()); // this shows why the GISTrainer should be a AbstractEventTrainer. // TODO: make sure that the trainingParameter cutoff and the // cutoff value passed here are equal. AbstractModel model = new GISTrainer(true).trainModel(100, testDataIndexer, new UniformPrior(), 1); PrepAttachDataUtil.testModel(model, 0.7997028967566229); } @Test public void testMaxentOnPrepAttachData2Threads() throws IOException { testDataIndexer.index(PrepAttachDataUtil.createTrainingStream()); AbstractModel model = new GISTrainer(true).trainModel(100, testDataIndexer, new UniformPrior(), 2); PrepAttachDataUtil.testModel(model, 0.7997028967566229); } @Test public void testMaxentOnPrepAttachDataWithParams() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.7997028967566229); } @Test public void testMaxentOnPrepAttachDataWithParamsDefault() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8086159940579352 ); } @Test public void testMaxentOnPrepAttachDataWithParamsLLThreshold() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); trainParams.put(GISTrainer.LOG_LIKELIHOOD_THRESHOLD_PARAM, 5.); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null); MaxentModel model = trainer.train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8103490963109681 ); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000165 14135770370 032732 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTe0100664 0001750 0001750 00000011507 14135770370 034143 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.BinaryFileDataReader; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.GenericModelReader; import opennlp.tools.ml.model.GenericModelWriter; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.TrainingParameters; public class QNTrainerTest { private static final int ITERATIONS = 50; private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); testDataIndexer = new OnePassRealValueDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testTrainModelReturnsAQNModel() throws Exception { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt"); testDataIndexer.index(rvfes1); // when QNModel trainedModel = new QNTrainer(false).trainModel(ITERATIONS, testDataIndexer); // then Assert.assertNotNull(trainedModel); } @Test public void testInTinyDevSet() throws Exception { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt"); testDataIndexer.index(rvfes1);; // when QNModel trainedModel = new QNTrainer(15, true).trainModel(ITERATIONS, testDataIndexer); String[] features2Classify = new String[] { "feature2","feature3", "feature3", "feature3","feature3", "feature3", "feature3","feature3", "feature3", "feature3","feature3", "feature3"}; double[] eval = trainedModel.eval(features2Classify); // then Assert.assertNotNull(eval); } @Test public void testModel() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt"); testDataIndexer.index(rvfes1); // when QNModel trainedModel = new QNTrainer(15, true).trainModel( ITERATIONS, testDataIndexer); Assert.assertFalse(trainedModel.equals(null)); } @Test public void testSerdeModel() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt"); testDataIndexer.index(rvfes1); // when QNModel trainedModel = new QNTrainer(5, 700, true).trainModel(ITERATIONS, testDataIndexer); ByteArrayOutputStream modelBytes = new ByteArrayOutputStream(); GenericModelWriter modelWriter = new GenericModelWriter(trainedModel, new DataOutputStream(modelBytes)); modelWriter.persist(); modelWriter.close(); GenericModelReader modelReader = new GenericModelReader(new BinaryFileDataReader( new ByteArrayInputStream(modelBytes.toByteArray()))); AbstractModel readModel = modelReader.getModel(); QNModel deserModel = (QNModel) readModel; Assert.assertTrue(trainedModel.equals(deserModel)); String[] features2Classify = new String[] { "feature2","feature3", "feature3", "feature3","feature3", "feature3", "feature3","feature3", "feature3", "feature3","feature3", "feature3"}; double[] eval01 = trainedModel.eval(features2Classify); double[] eval02 = deserModel.eval(features2Classify); Assert.assertEquals(eval01.length, eval02.length); for (int i = 0; i < eval01.length; i++) { Assert.assertEquals(eval01[i], eval02[i], 0.00000001); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000174 14135770370 032732 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikel0100664 0001750 0001750 00000024260 14135770370 034143 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.TrainingParameters; public class NegLogLikelihoodTest { private static final double TOLERANCE01 = 1.0E-06; private static final double TOLERANCE02 = 1.0E-10; private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); testDataIndexer = new OnePassRealValueDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testDomainDimensionSanity() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when int correctDomainDimension = testDataIndexer.getPredLabels().length * testDataIndexer.getOutcomeLabels().length; // then Assert.assertEquals(correctDomainDimension, objectFunction.getDimension()); } @Test public void testInitialSanity() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] initial = objectFunction.getInitialPoint(); // then for (double anInitial : initial) { Assert.assertEquals(0.0, anInitial, TOLERANCE01); } } @Test public void testGradientSanity() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] initial = objectFunction.getInitialPoint(); double[] gradientAtInitial = objectFunction.gradientAt(initial); // then Assert.assertNotNull(gradientAtInitial); } @Test public void testValueAtInitialPoint() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", "UTF-8"); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double value = objectFunction.valueAt(objectFunction.getInitialPoint()); double expectedValue = 13.86294361; // then Assert.assertEquals(expectedValue, value, TOLERANCE01); } @Test public void testValueAtNonInitialPoint01() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] nonInitialPoint = new double[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; double value = objectFunction.valueAt(nonInitialPoint); double expectedValue = 13.862943611198894; // then Assert.assertEquals(expectedValue, value, TOLERANCE01); } @Test public void testValueAtNonInitialPoint02() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] nonInitialPoint = new double[] { 3, 2, 3, 2, 3, 2, 3, 2, 3, 2 }; double value = objectFunction.valueAt(dealignDoubleArrayForTestData(nonInitialPoint, testDataIndexer.getPredLabels(), testDataIndexer.getOutcomeLabels())); double expectedValue = 53.163219721099026; // then Assert.assertEquals(expectedValue, value, TOLERANCE02); } @Test public void testGradientAtInitialPoint() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] gradientAtInitialPoint = objectFunction.gradientAt(objectFunction.getInitialPoint()); double[] expectedGradient = new double[] { -9.0, -14.0, -17.0, 20.0, 8.5, 9.0, 14.0, 17.0, -20.0, -8.5 }; // then Assert.assertTrue(compareDoubleArray(expectedGradient, gradientAtInitialPoint, testDataIndexer, TOLERANCE01)); } @Test public void testGradientAtNonInitialPoint() throws IOException { // given RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt", StandardCharsets.UTF_8.name()); testDataIndexer.index(rvfes1); NegLogLikelihood objectFunction = new NegLogLikelihood(testDataIndexer); // when double[] nonInitialPoint = new double[] { 0.2, 0.5, 0.2, 0.5, 0.2, 0.5, 0.2, 0.5, 0.2, 0.5 }; double[] gradientAtNonInitialPoint = objectFunction.gradientAt(dealignDoubleArrayForTestData(nonInitialPoint, testDataIndexer.getPredLabels(), testDataIndexer.getOutcomeLabels())); double[] expectedGradient = new double[] { -12.755042847945553, -21.227127506102434, -72.57790706276435, 38.03525795198456, 15.348650889354925, 12.755042847945557, 21.22712750610244, 72.57790706276438, -38.03525795198456, -15.348650889354925 }; // then Assert.assertTrue(compareDoubleArray(expectedGradient, gradientAtNonInitialPoint, testDataIndexer, TOLERANCE01)); } private double[] alignDoubleArrayForTestData(double[] expected, String[] predLabels, String[] outcomeLabels) { double[] aligned = new double[predLabels.length * outcomeLabels.length]; String[] sortedPredLabels = predLabels.clone(); String[] sortedOutcomeLabels = outcomeLabels.clone(); Arrays.sort(sortedPredLabels); Arrays.sort(sortedOutcomeLabels); Map invertedPredIndex = new HashMap<>(); Map invertedOutcomeIndex = new HashMap<>(); for (int i = 0; i < predLabels.length; i++) { invertedPredIndex.put(predLabels[i], i); } for (int i = 0; i < outcomeLabels.length; i++) { invertedOutcomeIndex.put(outcomeLabels[i], i); } for (int i = 0; i < sortedOutcomeLabels.length; i++) { for (int j = 0; j < sortedPredLabels.length; j++) { aligned[i * sortedPredLabels.length + j] = expected[invertedOutcomeIndex .get(sortedOutcomeLabels[i]) * sortedPredLabels.length + invertedPredIndex.get(sortedPredLabels[j])]; } } return aligned; } private double[] dealignDoubleArrayForTestData(double[] expected, String[] predLabels, String[] outcomeLabels) { double[] dealigned = new double[predLabels.length * outcomeLabels.length]; String[] sortedPredLabels = predLabels.clone(); String[] sortedOutcomeLabels = outcomeLabels.clone(); Arrays.sort(sortedPredLabels); Arrays.sort(sortedOutcomeLabels); Map invertedPredIndex = new HashMap<>(); Map invertedOutcomeIndex = new HashMap<>(); for (int i = 0; i < predLabels.length; i++) { invertedPredIndex.put(predLabels[i], i); } for (int i = 0; i < outcomeLabels.length; i++) { invertedOutcomeIndex.put(outcomeLabels[i], i); } for (int i = 0; i < sortedOutcomeLabels.length; i++) { for (int j = 0; j < sortedPredLabels.length; j++) { dealigned[invertedOutcomeIndex.get(sortedOutcomeLabels[i]) * sortedPredLabels.length + invertedPredIndex.get(sortedPredLabels[j])] = expected[i * sortedPredLabels.length + j]; } } return dealigned; } private boolean compareDoubleArray(double[] expected, double[] actual, DataIndexer indexer, double tolerance) { double[] alignedActual = alignDoubleArrayForTestData( actual, indexer.getPredLabels(), indexer.getOutcomeLabels()); if (expected.length != alignedActual.length) { return false; } for (int i = 0; i < alignedActual.length; i++) { if (StrictMath.abs(alignedActual[i] - expected[i]) > tolerance) { return false; } } return true; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000167 14135770370 032734 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNMinimizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNMinimizer0100664 0001750 0001750 00000005513 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import org.junit.Assert; import org.junit.Test; public class QNMinimizerTest { @Test public void testQuadraticFunction() { QNMinimizer minimizer = new QNMinimizer(); Function f = new QuadraticFunction(); double[] x = minimizer.minimize(f); double minValue = f.valueAt(x); Assert.assertEquals(x[0], 1.0, 1e-5); Assert.assertEquals(x[1], 5.0, 1e-5); Assert.assertEquals(minValue, 10.0, 1e-10); } @Test public void testRosenbrockFunction() { QNMinimizer minimizer = new QNMinimizer(); Function f = new Rosenbrock(); double[] x = minimizer.minimize(f); double minValue = f.valueAt(x); Assert.assertEquals(x[0], 1.0, 1e-5); Assert.assertEquals(x[1], 1.0, 1e-5); Assert.assertEquals(minValue, 0, 1e-10); } /** * Quadratic function: f(x,y) = (x-1)^2 + (y-5)^2 + 10 */ public class QuadraticFunction implements Function { @Override public int getDimension() { return 2; } @Override public double valueAt(double[] x) { return StrictMath.pow(x[0] - 1, 2) + StrictMath.pow(x[1] - 5, 2) + 10; } @Override public double[] gradientAt(double[] x) { return new double[] { 2 * (x[0] - 1), 2 * (x[1] - 5) }; } } /** * Rosenbrock function (http://en.wikipedia.org/wiki/Rosenbrock_function) * f(x,y) = (1-x)^2 + 100*(y-x^2)^2 * f(x,y) is non-convex and has global minimum at (x,y) = (1,1) where f(x,y) = 0 * * f_x = -2*(1-x) - 400*(y-x^2)*x * f_y = 200*(y-x^2) */ public class Rosenbrock implements Function { @Override public int getDimension() { return 2; } @Override public double valueAt(double[] x) { return StrictMath.pow(1 - x[0], 2) + 100 * StrictMath.pow(x[1] - StrictMath.pow(x[0], 2), 2); } @Override public double[] gradientAt(double[] x) { double[] g = new double[2]; g[0] = -2 * (1 - x[0]) - 400 * (x[1] - StrictMath.pow(x[0], 2)) * x[0]; g[1] = 200 * (x[1] - StrictMath.pow(x[0], 2)); return g; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000166 14135770370 032733 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/LineSearchTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/LineSearchT0100664 0001750 0001750 00000016554 14135770370 034157 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.maxent.quasinewton.LineSearch.LineSearchResult; public class LineSearchTest { private static final double TOLERANCE = 0.01; @Test public void testLineSearchDeterminesSaneStepLength1() { Function objectiveFunction = new QuadraticFunction1(); // given double[] testX = new double[] { 0 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { 1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertTrue(succCond); } @Test public void testLineSearchDeterminesSaneStepLength2() { Function objectiveFunction = new QuadraticFunction2(); // given double[] testX = new double[] { -2 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { 1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertTrue(succCond); } @Test public void testLineSearchFailsWithWrongDirection1() { Function objectiveFunction = new QuadraticFunction1(); // given double[] testX = new double[] { 0 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { -1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } @Test public void testLineSearchFailsWithWrongDirection2() { Function objectiveFunction = new QuadraticFunction2(); // given double[] testX = new double[] { -2 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { -1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } @Test public void testLineSearchFailsWithWrongDirection3() { Function objectiveFunction = new QuadraticFunction1(); // given double[] testX = new double[] { 4 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { 1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } @Test public void testLineSearchFailsWithWrongDirection4() { Function objectiveFunction = new QuadraticFunction2(); // given double[] testX = new double[] { 2 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { 1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } @Test public void testLineSearchFailsAtMinimum1() { Function objectiveFunction = new QuadraticFunction2(); // given double[] testX = new double[] { 0 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { -1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } @Test public void testLineSearchFailsAtMinimum2() { Function objectiveFunction = new QuadraticFunction2(); // given double[] testX = new double[] { 0 }; double testValueX = objectiveFunction.valueAt(testX); double[] testGradX = objectiveFunction.gradientAt(testX); double[] testDirection = new double[] { 1 }; // when LineSearchResult lsr = LineSearchResult.getInitialObject(testValueX, testGradX, testX); LineSearch.doLineSearch(objectiveFunction, testDirection, lsr, 1.0); double stepSize = lsr.getStepSize(); // then boolean succCond = TOLERANCE < stepSize && stepSize <= 1; Assert.assertFalse(succCond); Assert.assertEquals(0.0, stepSize, TOLERANCE); } /** * Quadratic function: f(x) = (x-2)^2 + 4 */ public class QuadraticFunction1 implements Function { public double valueAt(double[] x) { // (x-2)^2 + 4; return StrictMath.pow(x[0] - 2, 2) + 4; } public double[] gradientAt(double[] x) { // 2(x-2) return new double[] {2 * (x[0] - 2)}; } public int getDimension() { return 1; } } /** * Quadratic function: f(x) = x^2 */ public class QuadraticFunction2 implements Function { public double valueAt(double[] x) { // x^2; return StrictMath.pow(x[0], 2); } public double[] gradientAt(double[] x) { // 2x return new double[] {2 * x[0]}; } public int getDimension() { return 1; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000170 14135770370 032726 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttac0100664 0001750 0001750 00000012040 14135770370 034122 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.io.IOException; import java.util.HashMap; import org.junit.Test; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.PrepAttachDataUtil; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.TwoPassDataIndexer; import opennlp.tools.util.TrainingParameters; public class QNPrepAttachTest { @Test public void testQNOnPrepAttachData() throws IOException { DataIndexer indexer = new TwoPassDataIndexer(); TrainingParameters indexingParameters = new TrainingParameters(); indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); indexingParameters.put(AbstractDataIndexer.SORT_PARAM, false); indexer.init(indexingParameters, new HashMap<>()); indexer.index(PrepAttachDataUtil.createTrainingStream()); AbstractModel model = new QNTrainer(true).trainModel(100, indexer ); PrepAttachDataUtil.testModel(model, 0.8155484030700668); } @Test public void testQNOnPrepAttachDataWithParamsDefault() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null) .train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8115870264917059); } @Test public void testQNOnPrepAttachDataWithElasticNetParams() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put(QNTrainer.L1COST_PARAM, 0.25); trainParams.put(QNTrainer.L2COST_PARAM, 1.0D); MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null) .train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8229759841544937); } @Test public void testQNOnPrepAttachDataWithL1Params() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put(QNTrainer.L1COST_PARAM, 1.0D); trainParams.put(QNTrainer.L2COST_PARAM, 0D); MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null) .train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8180242634315424); } @Test public void testQNOnPrepAttachDataWithL2Params() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1); trainParams.put(QNTrainer.L1COST_PARAM, 0D); trainParams.put(QNTrainer.L2COST_PARAM, 1.0D); MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null) .train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8227283981183461); } @Test public void testQNOnPrepAttachDataInParallel() throws IOException { TrainingParameters trainParams = new TrainingParameters(); trainParams.put(AbstractTrainer.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); trainParams.put(QNTrainer.THREADS_PARAM, 2); MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null) .train(PrepAttachDataUtil.createTrainingStream()); PrepAttachDataUtil.testModel(model, 0.8115870264917059); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_Footbal0100644 0000000 0000000 00000000157 14135770370 032654 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/FootballEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/FootballEventStream.jav0100664 0001750 0001750 00000003407 14135770370 034131 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class FootballEventStream implements ObjectStream { ObjectStream textStream; public FootballEventStream() throws IOException { textStream = new PlainTextByLineStream( new URLInputStreamFactory(this.getClass().getResource("/opennlp/tools/ml/maxent/football.dat")), StandardCharsets.US_ASCII ); } @Override public Event read() throws IOException { String line = textStream.read(); if (line == null) return null; String[] tokens = line.split("\\s+"); return new Event(tokens[tokens.length - 1], Arrays.copyOf(tokens, tokens.length - 1)); } @Override public void reset() throws IOException, UnsupportedOperationException { textStream.reset(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_URLInpu0100644 0000000 0000000 00000000161 14135770370 032557 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/URLInputStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/URLInputStreamFactory.j0100664 0001750 0001750 00000002314 14135770370 034044 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.io.InputStream; import java.net.URL; import opennlp.tools.util.InputStreamFactory; public class URLInputStreamFactory implements InputStreamFactory { private URL url; public URLInputStreamFactory(URL url) { this.url = url; } @Override public InputStream createInputStream() throws IOException { return url.openStream(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_io_Real0100644 0000000 0000000 00000000173 14135770370 032636 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventSt0100664 0001750 0001750 00000004131 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.IOException; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.TrainingParameters; public class RealValueFileEventStreamTest { private DataIndexer indexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); indexer = new OnePassRealValueDataIndexer(); indexer.init(trainingParameters, new HashMap<>()); } @Test public void testLastLineBug() throws IOException { try (RealValueFileEventStream rvfes = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-ok.txt")) { indexer.index(rvfes); } Assert.assertEquals(1, indexer.getOutcomeLabels().length); try (RealValueFileEventStream rvfes = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-broken.txt")) { indexer.index(rvfes); } Assert.assertEquals(1, indexer.getOutcomeLabels().length); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISTrainerTest.java0100664 0001750 0001750 00000006110 14135770370 033153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public class GISTrainerTest { @SuppressWarnings("unchecked") @Test public void testGaussianSmoothing() throws Exception { TrainingParameters params = new TrainingParameters(); params.put("Algorithm", "MAXENT"); params.put("DataIndexer", "OnePass"); params.put("Cutoff", 0); params.put("Iterations", 5); params.put("GaussianSmoothing", true); Map reportMap = new HashMap<>(); EventTrainer trainer = TrainerFactory.getEventTrainer(params, reportMap); ObjectStream eventStream = new FootballEventStream(); AbstractModel smoothedModel = (AbstractModel)trainer.train(eventStream); Map predMap = (Map)smoothedModel.getDataStructures()[1]; double[] nevilleFalseExpected = new double[] {-0.17,.10,0.05}; double[] nevilleTrueExpected = new double[] {0.080,-0.047,-0.080}; String predicateToTest = "Neville=false"; Assert.assertArrayEquals(nevilleFalseExpected, predMap.get(predicateToTest).getParameters(), 0.01); predicateToTest = "Neville=true"; Assert.assertArrayEquals(nevilleTrueExpected, predMap.get(predicateToTest).getParameters(), 0.001); eventStream.reset(); params.put("GaussianSmoothing", false); trainer = TrainerFactory.getEventTrainer(params, reportMap); AbstractModel unsmoothedModel = (AbstractModel)trainer.train(eventStream); predMap = (Map)unsmoothedModel.getDataStructures()[1]; nevilleFalseExpected = new double[] {-0.19,0.11,0.06}; nevilleTrueExpected = new double[] {0.081,-0.050,-0.084}; predicateToTest = "Neville=false"; Assert.assertArrayEquals(nevilleFalseExpected, predMap.get(predicateToTest).getParameters(), 0.01); predicateToTest = "Neville=true"; Assert.assertArrayEquals(nevilleTrueExpected, predMap.get(predicateToTest).getParameters(), 0.001); eventStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_ScaleDo0100644 0000000 0000000 00000000161 14135770370 032573 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.j0100664 0001750 0001750 00000010612 14135770370 034077 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.nio.charset.StandardCharsets; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class ScaleDoesntMatterTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 0); testDataIndexer = new OnePassRealValueDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } /** * This test sets out to prove that the scale you use on real valued * predicates doesn't matter when it comes the probability assigned to each * outcome. Strangely, if we use (1,2) and (10,20) there's no difference. If * we use (0.1,0.2) and (10,20) there is a difference. */ @Test public void testScaleResults() throws Exception { String smallValues = "predA=0.1 predB=0.2 A\n" + "predB=0.3 predA=0.1 B\n"; String smallTest = "predA=0.2 predB=0.2"; String largeValues = "predA=10 predB=20 A\n" + "predB=30 predA=10 B\n"; String largeTest = "predA=20 predB=20"; ObjectStream smallEventStream = new RealBasicEventStream( new PlainTextByLineStream(new MockInputStreamFactory(smallValues), StandardCharsets.UTF_8)); testDataIndexer.index(smallEventStream); EventTrainer smallModelTrainer = TrainerFactory.getEventTrainer( ModelUtil.createDefaultTrainingParameters(), null); MaxentModel smallModel = smallModelTrainer.train(testDataIndexer); String[] contexts = smallTest.split(" "); float[] values = RealValueFileEventStream.parseContexts(contexts); double[] smallResults = smallModel.eval(contexts, values); String smallResultString = smallModel.getAllOutcomes(smallResults); System.out.println("smallResults: " + smallResultString); ObjectStream largeEventStream = new RealBasicEventStream( new PlainTextByLineStream(new MockInputStreamFactory(largeValues), StandardCharsets.UTF_8)); testDataIndexer.index(largeEventStream); EventTrainer largeModelTrainer = TrainerFactory.getEventTrainer( ModelUtil.createDefaultTrainingParameters(), null); MaxentModel largeModel = largeModelTrainer.train(testDataIndexer); contexts = largeTest.split(" "); values = RealValueFileEventStream.parseContexts(contexts); double[] largeResults = largeModel.eval(contexts, values); String largeResultString = largeModel.getAllOutcomes(largeResults); System.out.println("largeResults: " + largeResultString); Assert.assertEquals(smallResults.length, largeResults.length); for (int i = 0; i < smallResults.length; i++) { System.out.println(String.format( "classifiy with smallModel: %1$s = %2$f", smallModel.getOutcome(i), smallResults[i])); System.out.println(String.format( "classifiy with largeModel: %1$s = %2$f", largeModel.getOutcome(i), largeResults[i])); Assert.assertEquals(smallResults[i], largeResults[i], 0.01f); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MockDataIndexer.java0100664 0001750 0001750 00000003640 14135770370 033353 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public class MockDataIndexer implements DataIndexer { @Override public int[][] getContexts() { return new int[0][0]; } @Override public int[] getNumTimesEventsSeen() { return new int[0]; } @Override public int[] getOutcomeList() { return new int[0]; } @Override public String[] getPredLabels() { return new String[0]; } @Override public int[] getPredCounts() { return new int[0]; } @Override public String[] getOutcomeLabels() { // TODO Auto-generated method stub return new String[0]; } @Override public float[][] getValues() { return new float[0][0]; } @Override public int getNumEvents() { return 0; } @Override public void init(TrainingParameters trainParams, Map reportMap) { } @Override public void index(ObjectStream eventStream) throws IOException { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_maxent_RealVal0100644 0000000 0000000 00000000156 14135770370 032613 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java0100664 0001750 0001750 00000007315 14135770370 034055 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.util.HashMap; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.FileEventStream; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.TrainingParameters; public class RealValueModelTest { private DataIndexer testDataIndexer; @Before public void initIndexer() { TrainingParameters trainingParameters = new TrainingParameters(); trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1); testDataIndexer = new OnePassRealValueDataIndexer(); testDataIndexer.init(trainingParameters, new HashMap<>()); } @Test public void testRealValuedWeightsVsRepeatWeighting() throws IOException { GISModel realModel; GISTrainer gisTrainer = new GISTrainer(); try (RealValueFileEventStream rvfes1 = new RealValueFileEventStream( "src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt")) { testDataIndexer.index(rvfes1); realModel = gisTrainer.trainModel(100, testDataIndexer); } GISModel repeatModel; try (FileEventStream rvfes2 = new FileEventStream( "src/test/resources/data/opennlp/maxent/repeat-weighting-training-data.txt")) { testDataIndexer.index(rvfes2); repeatModel = gisTrainer.trainModel(100,testDataIndexer); } String[] features2Classify = new String[] {"feature2","feature5"}; double[] realResults = realModel.eval(features2Classify); double[] repeatResults = repeatModel.eval(features2Classify); Assert.assertEquals(realResults.length, repeatResults.length); for (int i = 0; i < realResults.length; i++) { System.out.println(String.format("classifiy with realModel: %1$s = %2$f", realModel.getOutcome(i), realResults[i])); System.out.println(String.format("classifiy with repeatModel: %1$s = %2$f", repeatModel.getOutcome(i), repeatResults[i])); Assert.assertEquals(realResults[i], repeatResults[i], 0.01f); } features2Classify = new String[] {"feature1","feature2","feature3","feature4","feature5"}; realResults = realModel.eval(features2Classify, new float[] {5.5f, 6.1f, 9.1f, 4.0f, 1.8f}); repeatResults = repeatModel.eval(features2Classify, new float[] {5.5f, 6.1f, 9.1f, 4.0f, 1.8f}); System.out.println(); Assert.assertEquals(realResults.length, repeatResults.length); for (int i = 0; i < realResults.length; i++) { System.out.println(String.format("classifiy with realModel: %1$s = %2$f", realModel.getOutcome(i), realResults[i])); System.out.println(String.format("classifiy with repeatModel: %1$s = %2$f", repeatModel.getOutcome(i), repeatResults[i])); Assert.assertEquals(realResults[i], repeatResults[i], 0.01f); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/PrepAttachDataUtil.java0100664 0001750 0001750 00000005747 14135770370 032552 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.perceptron.PerceptronPrepAttachTest; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; public class PrepAttachDataUtil { private static List readPpaFile(String filename) throws IOException { List events = new ArrayList<>(); try (InputStream in = PerceptronPrepAttachTest.class.getResourceAsStream("/data/ppa/" + filename)) { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); String line; while ((line = reader.readLine()) != null) { String[] items = line.split("\\s+"); String label = items[5]; String[] context = {"verb=" + items[1], "noun=" + items[2], "prep=" + items[3], "prep_obj=" + items[4]}; events.add(new Event(label, context)); } } return events; } public static ObjectStream createTrainingStream() throws IOException { List trainingEvents = readPpaFile("training"); return ObjectStreamUtils.createObjectStream(trainingEvents); } public static void testModel(MaxentModel model, double expecedAccuracy) throws IOException { List devEvents = readPpaFile("devset"); int total = 0; int correct = 0; for (Event ev: devEvents) { String targetLabel = ev.getOutcome(); double[] ocs = model.eval(ev.getContext()); int best = 0; for (int i = 1; i < ocs.length; i++) { if (ocs[i] > ocs[best]) { best = i; } } String predictedLabel = model.getOutcome(best); if (targetLabel.equals(predictedLabel)) correct++; total++; } double accuracy = correct / (double) total; System.out.println("Accuracy on PPA devset: (" + correct + "/" + total + ") " + accuracy); Assert.assertEquals(expecedAccuracy, accuracy, .00001); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/ArrayMathTest.java0100664 0001750 0001750 00000011472 14135770370 031607 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.util.Arrays; import java.util.Collections; import org.junit.Assert; import org.junit.Test; public class ArrayMathTest { @Test public void testInnerProductDoubleNaN() throws Exception { Assert.assertTrue(Double.isNaN(ArrayMath.innerProduct(null, new double[]{0}))); Assert.assertTrue(Double.isNaN(ArrayMath.innerProduct(new double[]{0}, null))); Assert.assertTrue(Double.isNaN(ArrayMath.innerProduct(new double[]{0, 1, 2}, new double[]{0, 1, 2, 3}))); } @Test public void testInnerProduct() throws Exception { Assert.assertEquals(0, ArrayMath.innerProduct(new double[] {}, new double[] {}), 0); Assert.assertEquals(-1, ArrayMath.innerProduct(new double[] {1}, new double[] {-1}), 0); Assert.assertEquals(14, ArrayMath.innerProduct(new double[] {1, 2, 3}, new double[] {1, 2, 3}), 0); } @Test public void testL1Norm() throws Exception { Assert.assertEquals(0, ArrayMath.l1norm(new double[]{}), 0); Assert.assertEquals(0, ArrayMath.l1norm(new double[] {0}), 0); Assert.assertEquals(2, ArrayMath.l1norm(new double[] {1, -1}), 0); Assert.assertEquals(55, ArrayMath.l1norm(new double[] {1, -2, 3, -4, 5, -6, 7, -8, 9, -10}), 0); } @Test public void testL2Norm() throws Exception { Assert.assertEquals(0, ArrayMath.l2norm(new double[] {}), 0); Assert.assertEquals(0, ArrayMath.l2norm(new double[] {0}), 0); Assert.assertEquals(1.41421, ArrayMath.l2norm(new double[] {1, -1}), 0.001); Assert.assertEquals(0.54772, ArrayMath.l2norm(new double[] {0.1, -0.2, 0.3, -0.4}), 0.001); } @Test public void testInvL2Norm() throws Exception { Assert.assertEquals(0.70711, ArrayMath.invL2norm(new double[] {1, -1}), 0.001); Assert.assertEquals(1.82575, ArrayMath.invL2norm(new double[] {0.1, -0.2, 0.3, -0.4}), 0.001); } @Test public void testLogSumOfExps() throws Exception { Assert.assertEquals(0, ArrayMath.logSumOfExps(new double[] {0}), 0); Assert.assertEquals(1, ArrayMath.logSumOfExps(new double[] {1}), 0); Assert.assertEquals(2.048587, ArrayMath.logSumOfExps(new double[] {-1, 2}), 0.001); Assert.assertEquals(1.472216, ArrayMath.logSumOfExps(new double[] {-0.1, 0.2, -0.3, 0.4}), 0.001); } @Test public void testMax() throws Exception { Assert.assertEquals(0, ArrayMath.max(new double[] {0}), 0); Assert.assertEquals(0, ArrayMath.max(new double[] {0, 0, 0}), 0); Assert.assertEquals(2, ArrayMath.max(new double[] {0, 1, 2}), 0); Assert.assertEquals(200, ArrayMath.max(new double[] {100, 200, 2}), 0); Assert.assertEquals(300, ArrayMath.max(new double[] {100, 200, 300, -10, -20}), 0); } @Test(expected = IllegalArgumentException.class) public void testArgmaxException1() throws Exception { ArrayMath.argmax(null); } @Test(expected = IllegalArgumentException.class) public void testArgmaxException2() throws Exception { ArrayMath.argmax(new double[]{}); } @Test public void testArgmax() throws Exception { Assert.assertEquals(0, ArrayMath.argmax(new double[] {0})); Assert.assertEquals(0, ArrayMath.argmax(new double[] {0, 0, 0})); Assert.assertEquals(2, ArrayMath.argmax(new double[] {0, 1, 2})); Assert.assertEquals(1, ArrayMath.argmax(new double[] {100, 200, 2})); Assert.assertEquals(2, ArrayMath.argmax(new double[] {100, 200, 300, -10, -20})); } @Test public void testToDoubleArray() throws Exception { Assert.assertEquals(0, ArrayMath.toDoubleArray(Collections.EMPTY_LIST).length); Assert.assertArrayEquals(new double[] {0}, ArrayMath.toDoubleArray(Arrays.asList(0D)), 0); Assert.assertArrayEquals(new double[] {0, 1, -2.5, -0.3, 4}, ArrayMath.toDoubleArray(Arrays.asList(0D, 1D, -2.5D, -0.3D, 4D)), 0); } @Test public void testToIntArray() throws Exception { Assert.assertEquals(0, ArrayMath.toIntArray(Collections.EMPTY_LIST).length); Assert.assertArrayEquals(new int[] {0}, ArrayMath.toIntArray(Arrays.asList(0))); Assert.assertArrayEquals(new int[] {0, 1, -2, -3, 4}, ArrayMath.toIntArray(Arrays.asList(0, 1, -2, -3, 4))); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java0100664 0001750 0001750 00000005334 14135770370 032653 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.ml.maxent.GISTrainer; import opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer; import opennlp.tools.util.TrainingParameters; public class TrainerFactoryTest { private TrainingParameters mlParams; @Before public void setup() { mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 10); mlParams.put(TrainingParameters.CUTOFF_PARAM, 5); } @Test public void testBuiltInValid() { Assert.assertTrue(TrainerFactory.isValid(mlParams)); } @Test public void testSequenceTrainerValid() { mlParams.put(TrainingParameters.ALGORITHM_PARAM, MockSequenceTrainer.class.getCanonicalName()); Assert.assertTrue(TrainerFactory.isValid(mlParams)); } @Test public void testEventTrainerValid() { mlParams.put(TrainingParameters.ALGORITHM_PARAM, MockEventTrainer.class.getCanonicalName()); Assert.assertTrue(TrainerFactory.isValid(mlParams)); } @Test public void testInvalidTrainer() { mlParams.put(TrainingParameters.ALGORITHM_PARAM, "xyz"); Assert.assertFalse(TrainerFactory.isValid(mlParams)); } @Test public void testIsSequenceTrainerTrue() { mlParams.put(AbstractTrainer.ALGORITHM_PARAM, SimplePerceptronSequenceTrainer.PERCEPTRON_SEQUENCE_VALUE); TrainerType trainerType = TrainerFactory.getTrainerType(mlParams); Assert.assertTrue(TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)); } @Test public void testIsSequenceTrainerFalse() { mlParams.put(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); TrainerType trainerType = TrainerFactory.getTrainerType(mlParams); Assert.assertFalse(TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/EventTest.java0100664 0001750 0001750 00000004121 14135770370 032071 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import org.junit.Assert; import org.junit.Test; public class EventTest { @Test public void testNullOutcome() { try { new Event(null, new String[]{"aa", "bb", "cc"}); Assert.fail("NPE must be thrown"); } catch (NullPointerException expected) { } } @Test public void testNullContext() { try { new Event("o1", null); Assert.fail("NPE must be thrown"); } catch (NullPointerException expected) { } } @Test public void testWithValues() { Event event = new Event("o1", new String[]{"aa", "bb", "cc"}); Assert.assertEquals("o1", event.getOutcome()); Assert.assertArrayEquals(new String[]{"aa", "bb", "cc"}, event.getContext()); Assert.assertNull(event.getValues()); Assert.assertEquals("o1 [aa bb cc]", event.toString()); } @Test public void testWithoutValues() { Event event = new Event("o1", new String[]{"aa", "bb", "cc"}, new float[]{0.2F, 0.4F, 0.4F}); Assert.assertEquals("o1", event.getOutcome()); Assert.assertArrayEquals(new String[]{"aa", "bb", "cc"}, event.getContext()); Assert.assertArrayEquals(new float[]{0.2F, 0.4F, 0.4F}, event.getValues(), 0.001F); Assert.assertEquals("o1 [aa=0.2 bb=0.4 cc=0.4]", event.toString()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_OnePassR0100644 0000000 0000000 00000000172 14135770370 032561 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/OnePassRealValueDataIndexerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/OnePassRealValueDataInde0100664 0001750 0001750 00000014035 14135770370 034000 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.Collections; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public class OnePassRealValueDataIndexerTest { DataIndexer indexer; @Before public void setUp() throws Exception { indexer = new OnePassRealValueDataIndexer(); indexer.init(new TrainingParameters(Collections.emptyMap()), null); } @Test public void testIndex() throws IOException { // He belongs to Apache Software Foundation . ObjectStream eventStream = new SimpleEventStreamBuilder() .add("other/w=he n1w=belongs n2w=to po=other pow=other,He powf=other,ic ppo=other") .add("other/w=belongs p1w=he n1w=to n2w=apache po=other pow=other,belongs powf=other,lc ppo=other") .add("other/w=to p1w=belongs p2w=he n1w=apache n2w=software po=other pow=other,to" + " powf=other,lc ppo=other") .add("org-start/w=apache p1w=to p2w=belongs n1w=software n2w=foundation po=other pow=other,Apache" + " powf=other,ic ppo=other") .add("org-cont/w=software p1w=apache p2w=to n1w=foundation n2w=. po=org-start" + " pow=org-start,Software powf=org-start,ic ppo=other") .add("org-cont/w=foundation p1w=software p2w=apache n1w=. po=org-cont pow=org-cont,Foundation" + " powf=org-cont,ic ppo=org-start") .add("other/w=. p1w=foundation p2w=software po=org-cont pow=org-cont,. powf=org-cont,other" + " ppo=org-cont") .build(); indexer.index(eventStream); Assert.assertEquals(3, indexer.getContexts().length); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[0]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[1]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[2]); Assert.assertEquals(3, indexer.getValues().length); Assert.assertNull(indexer.getValues()[0]); Assert.assertNull(indexer.getValues()[1]); Assert.assertNull(indexer.getValues()[2]); Assert.assertEquals(5, indexer.getNumEvents()); Assert.assertArrayEquals(new int[]{0, 1, 2}, indexer.getOutcomeList()); Assert.assertArrayEquals(new int[]{3, 1, 1}, indexer.getNumTimesEventsSeen()); Assert.assertArrayEquals(new String[]{"ppo=other"}, indexer.getPredLabels()); Assert.assertArrayEquals(new String[]{"other", "org-start", "org-cont"}, indexer.getOutcomeLabels()); Assert.assertArrayEquals(new int[]{5}, indexer.getPredCounts()); } @Test public void testIndexValues() throws IOException { // He belongs to Apache Software Foundation . ObjectStream eventStream = new SimpleEventStreamBuilder() .add("other/w=he;0.1 n1w=belongs;0.2 n2w=to;0.1 po=other;0.1" + " pow=other,He;0.1 powf=other,ic;0.1 ppo=other;0.1") .add("other/w=belongs;0.1 p1w=he;0.2 n1w=to;0.1 n2w=apache;0.1" + " po=other;0.1 pow=other,belongs;0.1 powf=other,lc;0.1 ppo=other;0.1") .add("other/w=to;0.1 p1w=belongs;0.2 p2w=he;0.1 n1w=apache;0.1" + " n2w=software;0.1 po=other;0.1 pow=other,to;0.1 powf=other,lc;0.1 ppo=other;0.1") .add("org-start/w=apache;0.1 p1w=to;0.2 p2w=belongs;0.1 n1w=software;0.1 n2w=foundation;0.1" + " po=other;0.1 pow=other,Apache;0.1 powf=other,ic;0.1 ppo=other;0.1") .add("org-cont/w=software;0.1 p1w=apache;0.2 p2w=to;0.1 n1w=foundation;0.1" + " n2w=.;0.1 po=org-start;0.1 pow=org-start,Software;0.1 powf=org-start,ic;0.1 ppo=other;0.1") .add("org-cont/w=foundation;0.1 p1w=software;0.2 p2w=apache;0.1 n1w=.;0.1 po=org-cont;0.1" + " pow=org-cont,Foundation;0.1 powf=org-cont,ic;0.1 ppo=org-start;0.1") .add("other/w=.;0.1 p1w=foundation;0.1 p2w=software;0.1 po=org-cont;0.1 pow=org-cont,.;0.1" + " powf=org-cont,other;0.1 ppo=org-cont;0.1") .build(); indexer.index(eventStream); System.out.println(indexer); Assert.assertEquals(3, indexer.getContexts().length); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[0]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[1]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[2]); Assert.assertEquals(3, indexer.getValues().length); final float delta = 0.001F; Assert.assertArrayEquals(new float[]{0.1F, 0.2F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F}, indexer.getValues()[0], delta); Assert.assertArrayEquals(new float[]{0.1F, 0.2F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F}, indexer.getValues()[1], delta); Assert.assertArrayEquals(new float[]{0.1F, 0.2F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F, 0.1F}, indexer.getValues()[2], delta); Assert.assertEquals(5, indexer.getNumEvents()); Assert.assertArrayEquals(new int[]{0, 1, 2}, indexer.getOutcomeList()); Assert.assertArrayEquals(new int[]{3, 1, 1}, indexer.getNumTimesEventsSeen()); Assert.assertArrayEquals(new String[]{"ppo=other"}, indexer.getPredLabels()); Assert.assertArrayEquals(new String[]{"other", "org-start", "org-cont"}, indexer.getOutcomeLabels()); Assert.assertArrayEquals(new int[]{5}, indexer.getPredCounts()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_SimpleEv0100644 0000000 0000000 00000000163 14135770370 032613 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/SimpleEventStreamBuilder.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/SimpleEventStreamBuilder0100664 0001750 0001750 00000005077 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import opennlp.tools.util.ObjectStream; public class SimpleEventStreamBuilder { private final List eventList = new ArrayList<>(); private int pos = 0; /* * the format of event should look like: * without values) other/w=he n1w=belongs n2w=to po=other pow=other,He powf=other,ic * with values) other/w=he;0.5 n1w=belongs;0.4 n2w=to;0.3 po=other;0.5 pow=other,He;0.25 powf=other,ic;0.5 */ public SimpleEventStreamBuilder add(String event) { String[] ss = event.split("/"); if (ss.length != 2) { throw new RuntimeException(String.format("format error of the event \"%s\"", event)); } // look for context (and values) String[] cvPairs = ss[1].split("\\s+"); if (cvPairs[0].contains(";")) { // has values? String[] context = new String[cvPairs.length]; float[] values = new float[cvPairs.length]; for (int i = 0; i < cvPairs.length; i++) { String[] pair = cvPairs[i].split(";"); if (pair.length != 2) { throw new RuntimeException(String.format("format error of the event \"%s\". " + "\"%s\" doesn't have value", event, Arrays.toString(pair))); } context[i] = pair[0]; values[i] = Float.parseFloat(pair[1]); } eventList.add(new Event(ss[0], context, values)); } else { eventList.add(new Event(ss[0], cvPairs)); } return this; } public ObjectStream build() { return new ObjectStream() { @Override public Event read() throws IOException { if (eventList.size() <= pos) { return null; } return eventList.get(pos++); } }; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_TwoPassD0100644 0000000 0000000 00000000161 14135770370 032571 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/TwoPassDataIndexerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/TwoPassDataIndexerTest.j0100664 0001750 0001750 00000010250 14135770370 034031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import opennlp.tools.namefind.DefaultNameContextGenerator; import opennlp.tools.namefind.NameContextGenerator; import opennlp.tools.namefind.NameFinderEventStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; public class TwoPassDataIndexerTest { @Test public void testIndex() throws IOException { // He belongs to Apache Software Foundation . ObjectStream eventStream = new SimpleEventStreamBuilder() .add("other/w=he n1w=belongs n2w=to po=other pow=other,He powf=other,ic ppo=other") .add("other/w=belongs p1w=he n1w=to n2w=apache po=other pow=other,belongs powf=other,lc ppo=other") .add("other/w=to p1w=belongs p2w=he n1w=apache n2w=software po=other pow=other,to" + " powf=other,lc ppo=other") .add("org-start/w=apache p1w=to p2w=belongs n1w=software n2w=foundation po=other pow=other,Apache" + " powf=other,ic ppo=other") .add("org-cont/w=software p1w=apache p2w=to n1w=foundation n2w=. po=org-start" + " pow=org-start,Software powf=org-start,ic ppo=other") .add("org-cont/w=foundation p1w=software p2w=apache n1w=. po=org-cont pow=org-cont,Foundation" + " powf=org-cont,ic ppo=org-start") .add("other/w=. p1w=foundation p2w=software po=org-cont pow=org-cont,. powf=org-cont,other" + " ppo=org-cont") .build(); DataIndexer indexer = new TwoPassDataIndexer(); indexer.init(new TrainingParameters(Collections.emptyMap()), null); indexer.index(eventStream); Assert.assertEquals(3, indexer.getContexts().length); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[0]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[1]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[2]); Assert.assertNull(indexer.getValues()); Assert.assertEquals(5, indexer.getNumEvents()); Assert.assertArrayEquals(new int[]{0, 1, 2}, indexer.getOutcomeList()); Assert.assertArrayEquals(new int[]{3, 1, 1}, indexer.getNumTimesEventsSeen()); Assert.assertArrayEquals(new String[]{"ppo=other"}, indexer.getPredLabels()); Assert.assertArrayEquals(new String[]{"other", "org-start", "org-cont"}, indexer.getOutcomeLabels()); Assert.assertArrayEquals(new int[]{5}, indexer.getPredCounts()); } @Test public void testIndexWithNewline() throws IOException { String[] sentence = "He belongs to Apache \n Software Foundation .".split(" "); NameContextGenerator CG = new DefaultNameContextGenerator( (AdaptiveFeatureGenerator[]) null); NameSample nameSample = new NameSample(sentence, new Span[] { new Span(3, 7) }, false); ObjectStream eventStream = new NameFinderEventStream( ObjectStreamUtils.createObjectStream(nameSample), "org", CG, null); DataIndexer indexer = new TwoPassDataIndexer(); indexer.init(new TrainingParameters(Collections.emptyMap()), null); indexer.index(eventStream); Assert.assertEquals(5, indexer.getContexts().length); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_FileEven0100644 0000000 0000000 00000000156 14135770370 032566 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/FileEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/FileEventStreamTest.java0100664 0001750 0001750 00000005444 14135770370 034056 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.io.StringReader; import org.junit.Assert; import org.junit.Test; public class FileEventStreamTest { private static final String EVENTS = "other wc=ic w&c=he,ic n1wc=lc n1w&c=belongs,lc n2wc=lc\n" + "other wc=lc w&c=belongs,lc p1wc=ic p1w&c=he,ic n1wc=lc\n" + "other wc=lc w&c=to,lc p1wc=lc p1w&c=belongs,lc p2wc=ic\n" + "org-start wc=ic w&c=apache,ic p1wc=lc p1w&c=to,lc\n" + "org-cont wc=ic w&c=software,ic p1wc=ic p1w&c=apache,ic\n" + "org-cont wc=ic w&c=foundation,ic p1wc=ic p1w&c=software,ic\n" + "other wc=other w&c=.,other p1wc=ic\n"; @Test public void testSimpleReading() throws IOException { try (FileEventStream feStream = new FileEventStream(new StringReader(EVENTS))) { Assert.assertEquals("other [wc=ic w&c=he,ic n1wc=lc n1w&c=belongs,lc n2wc=lc]", feStream.read().toString()); Assert.assertEquals("other [wc=lc w&c=belongs,lc p1wc=ic p1w&c=he,ic n1wc=lc]", feStream.read().toString()); Assert.assertEquals("other [wc=lc w&c=to,lc p1wc=lc p1w&c=belongs,lc p2wc=ic]", feStream.read().toString()); Assert.assertEquals("org-start [wc=ic w&c=apache,ic p1wc=lc p1w&c=to,lc]", feStream.read().toString()); Assert.assertEquals("org-cont [wc=ic w&c=software,ic p1wc=ic p1w&c=apache,ic]", feStream.read().toString()); Assert.assertEquals("org-cont [wc=ic w&c=foundation,ic p1wc=ic p1w&c=software,ic]", feStream.read().toString()); Assert.assertEquals("other [wc=other w&c=.,other p1wc=ic]", feStream.read().toString()); Assert.assertNull(feStream.read()); } } @Test public void testReset() throws IOException { try (FileEventStream feStream = new FileEventStream(new StringReader(EVENTS))) { feStream.reset(); Assert.fail("UnsupportedOperationException should be thrown"); } catch (UnsupportedOperationException expected) { } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_OnePassD0100644 0000000 0000000 00000000161 14135770370 032541 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/OnePassDataIndexerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/OnePassDataIndexerTest.j0100664 0001750 0001750 00000006121 14135770370 034003 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public class OnePassDataIndexerTest { @Test public void testIndex() throws IOException { // He belongs to Apache Software Foundation . ObjectStream eventStream = new SimpleEventStreamBuilder() .add("other/w=he n1w=belongs n2w=to po=other pow=other,He powf=other,ic ppo=other") .add("other/w=belongs p1w=he n1w=to n2w=apache po=other pow=other,belongs powf=other,lc ppo=other") .add("other/w=to p1w=belongs p2w=he n1w=apache n2w=software po=other pow=other,to" + " powf=other,lc ppo=other") .add("org-start/w=apache p1w=to p2w=belongs n1w=software n2w=foundation po=other pow=other,Apache" + " powf=other,ic ppo=other") .add("org-cont/w=software p1w=apache p2w=to n1w=foundation n2w=. po=org-start" + " pow=org-start,Software powf=org-start,ic ppo=other") .add("org-cont/w=foundation p1w=software p2w=apache n1w=. po=org-cont pow=org-cont,Foundation" + " powf=org-cont,ic ppo=org-start") .add("other/w=. p1w=foundation p2w=software po=org-cont pow=org-cont,. powf=org-cont,other" + " ppo=org-cont") .build(); DataIndexer indexer = new OnePassDataIndexer(); indexer.init(new TrainingParameters(Collections.emptyMap()), null); indexer.index(eventStream); Assert.assertEquals(3, indexer.getContexts().length); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[0]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[1]); Assert.assertArrayEquals(new int[]{0}, indexer.getContexts()[2]); Assert.assertNull(indexer.getValues()); Assert.assertEquals(5, indexer.getNumEvents()); Assert.assertArrayEquals(new int[]{0, 1, 2}, indexer.getOutcomeList()); Assert.assertArrayEquals(new int[]{3, 1, 1}, indexer.getNumTimesEventsSeen()); Assert.assertArrayEquals(new String[]{"ppo=other"}, indexer.getPredLabels()); Assert.assertArrayEquals(new String[]{"other", "org-start", "org-cont"}, indexer.getOutcomeLabels()); Assert.assertArrayEquals(new int[]{5}, indexer.getPredCounts()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_ml_model_RealValu0100644 0000000 0000000 00000000167 14135770370 032606 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/RealValueFileEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/ml/model/RealValueFileEventStream0100664 0001750 0001750 00000005645 14135770370 034102 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.io.StringReader; import org.junit.Assert; import org.junit.Test; public class RealValueFileEventStreamTest { private static final String EVENTS = "other wc=ic=1 w&c=he,ic=2 n1wc=lc=3 n1w&c=belongs,lc=4 n2wc=lc=5\n" + "other wc=lc=1 w&c=belongs,lc=2 p1wc=ic=3 p1w&c=he,ic=4 n1wc=lc=5\n" + "other wc=lc=1 w&c=to,lc=2 p1wc=lc=3 p1w&c=belongs,lc=4 p2wc=ic=5\n" + "org-start wc=ic=1 w&c=apache,ic=2 p1wc=lc=3 p1w&c=to,lc=4\n" + "org-cont wc=ic=1 w&c=software,ic=2 p1wc=ic=3 p1w&c=apache,ic=4\n" + "org-cont wc=ic=1 w&c=foundation,ic=2 p1wc=ic=3 p1w&c=software,ic=4\n" + "other wc=other=1 w&c=.,other=2 p1wc=ic=3\n"; @Test public void testSimpleReading() throws IOException { try (FileEventStream feStream = new FileEventStream(new StringReader(EVENTS))) { Assert.assertEquals("other [wc=ic=1 w&c=he,ic=2 n1wc=lc=3 n1w&c=belongs,lc=4 n2wc=lc=5]", feStream.read().toString()); Assert.assertEquals("other [wc=lc=1 w&c=belongs,lc=2 p1wc=ic=3 p1w&c=he,ic=4 n1wc=lc=5]", feStream.read().toString()); Assert.assertEquals("other [wc=lc=1 w&c=to,lc=2 p1wc=lc=3 p1w&c=belongs,lc=4 p2wc=ic=5]", feStream.read().toString()); Assert.assertEquals("org-start [wc=ic=1 w&c=apache,ic=2 p1wc=lc=3 p1w&c=to,lc=4]", feStream.read().toString()); Assert.assertEquals("org-cont [wc=ic=1 w&c=software,ic=2 p1wc=ic=3 p1w&c=apache,ic=4]", feStream.read().toString()); Assert.assertEquals("org-cont [wc=ic=1 w&c=foundation,ic=2 p1wc=ic=3 p1w&c=software,ic=4]", feStream.read().toString()); Assert.assertEquals("other [wc=other=1 w&c=.,other=2 p1wc=ic=3]", feStream.read().toString()); Assert.assertNull(feStream.read()); } } @Test public void testReset() throws IOException { try (FileEventStream feStream = new FileEventStream(new StringReader(EVENTS))) { feStream.reset(); Assert.fail("UnsupportedOperationException should be thrown"); } catch (UnsupportedOperationException expected) { } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSEvaluatorTest.java0100664 0001750 0001750 00000005706 14135770370 033133 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.postag.POSEvaluationErrorListener; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.Sequence; public class POSEvaluatorTest { @Test public void testPositive() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); POSTaggerEvaluationMonitor listener = new POSEvaluationErrorListener(stream); POSEvaluator eval = new POSEvaluator(new DummyPOSTagger( POSSampleTest.createGoldSample()), listener); eval.evaluateSample(POSSampleTest.createGoldSample()); Assert.assertEquals(1.0, eval.getWordAccuracy(), 0.0); Assert.assertEquals(0, stream.toString().length()); } @Test public void testNegative() throws InvalidFormatException { OutputStream stream = new ByteArrayOutputStream(); POSTaggerEvaluationMonitor listener = new POSEvaluationErrorListener(stream); POSEvaluator eval = new POSEvaluator( new DummyPOSTagger(POSSampleTest.createGoldSample()), listener); eval.evaluateSample(POSSampleTest.createPredSample()); Assert.assertEquals(.7, eval.getWordAccuracy(), .1d); Assert.assertNotSame(0, stream.toString().length()); } class DummyPOSTagger implements POSTagger { private POSSample sample; public DummyPOSTagger(POSSample sample) { this.sample = sample; } public List tag(List sentence) { return Arrays.asList(sample.getTags()); } public String[] tag(String[] sentence) { return sample.getTags(); } public String tag(String sentence) { return null; } public Sequence[] topKSequences(List sentence) { return null; } public Sequence[] topKSequences(String[] sentence) { return null; } public String[] tag(String[] sentence, Object[] additionaContext) { return tag(sentence); } public Sequence[] topKSequences(String[] sentence, Object[] additionaContext) { return topKSequences(sentence); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_postag_POSSampleE0100644 0000000 0000000 00000000161 14135770370 032502 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleEventStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleEventStreamTest.j0100664 0001750 0001750 00000003450 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; /** * Tests for the {@link POSSampleEventStream} class. */ public class POSSampleEventStreamTest { /** * Tests that the outcomes for a single sentence match the * expected outcomes. */ @Test public void testOutcomesForSingleSentence() throws Exception { String sentence = "That_DT sounds_VBZ good_JJ ._."; POSSample sample = POSSample.parse(sentence); try (ObjectStream eventStream = new POSSampleEventStream( ObjectStreamUtils.createObjectStream(sample))) { Assert.assertEquals("DT", eventStream.read().getOutcome()); Assert.assertEquals("VBZ", eventStream.read().getOutcome()); Assert.assertEquals("JJ", eventStream.read().getOutcome()); Assert.assertEquals(".", eventStream.read().getOutcome()); Assert.assertNull(eventStream.read()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_postag_WordTagSam0100644 0000000 0000000 00000000160 14135770370 032601 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/WordTagSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/WordTagSampleStreamTest.ja0100664 0001750 0001750 00000004223 14135770370 034136 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.CollectionObjectStream; /** * Tests for the {@link WordTagSampleStream} class. */ public class WordTagSampleStreamTest { @Test public void testParseSimpleSample() throws IOException { Collection sampleString = new ArrayList<>(1); sampleString.add("This_x1 is_x2 a_x3 test_x4 sentence_x5 ._x6"); try (WordTagSampleStream stream = new WordTagSampleStream(new CollectionObjectStream<>(sampleString))) { POSSample sample = stream.read(); String[] words = sample.getSentence(); Assert.assertEquals("This", words[0]); Assert.assertEquals("is", words[1]); Assert.assertEquals("a", words[2]); Assert.assertEquals("test", words[3]); Assert.assertEquals("sentence", words[4]); Assert.assertEquals(".", words[5]); String[] tags = sample.getTags(); Assert.assertEquals("x1", tags[0]); Assert.assertEquals("x2", tags[1]); Assert.assertEquals("x3", tags[2]); Assert.assertEquals("x4", tags[3]); Assert.assertEquals("x5", tags[4]); Assert.assertEquals("x6", tags[5]); Assert.assertNull(stream.read()); stream.reset(); Assert.assertNotNull(stream.read()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleTest.java0100664 0001750 0001750 00000011140 14135770370 032377 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; /** * Tests for the {@link POSSample} class. */ public class POSSampleTest { @Test public void testEquals() throws InvalidFormatException { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } public static POSSample createGoldSample() throws InvalidFormatException { String sentence = "the_DT stories_NNS about_IN well-heeled_JJ " + "communities_NNS and_CC developers_NNS"; return POSSample.parse(sentence); } public static POSSample createPredSample() throws InvalidFormatException { String sentence = "the_DT stories_NNS about_NNS well-heeled_JJ " + "communities_NNS and_CC developers_CC"; return POSSample.parse(sentence); } @Test public void testPOSSampleSerDe() throws IOException { POSSample posSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(posSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); POSSample deSerializedPOSSample = null; try { deSerializedPOSSample = (POSSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedPOSSample); Assert.assertArrayEquals(posSample.getAddictionalContext(), deSerializedPOSSample.getAddictionalContext()); Assert.assertArrayEquals(posSample.getSentence(), deSerializedPOSSample.getSentence()); Assert.assertArrayEquals(posSample.getTags(), deSerializedPOSSample.getTags()); } /** * Tests if it can parse a valid token_tag sentence. * */ @Test public void testParse() throws InvalidFormatException { String sentence = "the_DT stories_NNS about_IN well-heeled_JJ " + "communities_NNS and_CC developers_NNS"; POSSample sample = POSSample.parse(sentence); Assert.assertEquals(sentence, sample.toString()); } /** * Tests if it can parse an empty {@link String}. */ @Test public void testParseEmptyString() throws InvalidFormatException { String sentence = ""; POSSample sample = POSSample.parse(sentence); Assert.assertEquals(sample.getSentence().length, 0); Assert.assertEquals(sample.getTags().length, 0); } /** * Tests if it can parse an empty token. * */ @Test public void testParseEmtpyToken() throws InvalidFormatException { String sentence = "the_DT _NNS"; POSSample sample = POSSample.parse(sentence); Assert.assertEquals(sample.getSentence()[1], ""); } /** * Tests if it can parse an empty tag. * */ @Test public void testParseEmtpyTag() throws InvalidFormatException { String sentence = "the_DT stories_"; POSSample sample = POSSample.parse(sentence); Assert.assertEquals(sample.getTags()[1], ""); } /** * Tests if an exception is thrown if there is only a token/tag * in the sentence. */ @Test public void testParseWithError() { String sentence = "the_DT stories"; try { POSSample.parse(sentence); } catch (InvalidFormatException e) { return; } Assert.fail(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_postag_DummyPOSTa0100644 0000000 0000000 00000000156 14135770370 032540 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java0100664 0001750 0001750 00000007550 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.UncloseableInputStream; public class DummyPOSTaggerFactory extends POSTaggerFactory { private static final String DUMMY_POSDICT = "DUMMY_POSDICT"; private DummyPOSDictionary dict; public DummyPOSTaggerFactory() { } public DummyPOSTaggerFactory(DummyPOSDictionary posDictionary) { super(null, null, null); this.dict = posDictionary; } @Override public SequenceValidator getSequenceValidator() { return new DummyPOSSequenceValidator(); } @Override public DummyPOSDictionary getTagDictionary() { return (DummyPOSDictionary) artifactProvider.getArtifact(DUMMY_POSDICT); } @Override public POSContextGenerator getPOSContextGenerator() { return new DummyPOSContextGenerator(this.ngramDictionary); } @Override @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { Map serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_POSDICT, new DummyPOSDictionarySerializer()); return serializers; } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); if (this.dict != null) artifactMap.put(DUMMY_POSDICT, this.dict); return artifactMap; } static class DummyPOSContextGenerator extends DefaultPOSContextGenerator { public DummyPOSContextGenerator(Dictionary dict) { super(dict); } } public static class DummyPOSDictionarySerializer implements ArtifactSerializer { public DummyPOSDictionary create(InputStream in) throws IOException { return DummyPOSDictionary.create(new UncloseableInputStream(in)); } public void serialize(DummyPOSDictionary artifact, OutputStream out) throws IOException { artifact.serialize(out); } } static class DummyPOSSequenceValidator implements SequenceValidator { public boolean validSequence(int i, String[] inputSequence, String[] outcomesSequence, String outcome) { return true; } } static class DummyPOSDictionary extends POSDictionary { private POSDictionary dict; public DummyPOSDictionary() { } public DummyPOSDictionary(POSDictionary dict) { this.dict = dict; } public static DummyPOSDictionary create( UncloseableInputStream uncloseableInputStream) throws IOException { return new DummyPOSDictionary(POSDictionary.create(uncloseableInputStream)); } public void serialize(OutputStream out) throws IOException { dict.serialize(out); } public String[] getTags(String word) { return dict.getTags(word); } @Override public Class getArtifactSerializerClass() { return DummyPOSDictionarySerializer.class; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_postag_Configurab0100644 0000000 0000000 00000000174 14135770370 032655 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/ConfigurablePOSContextGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/ConfigurablePOSContextGene0100664 0001750 0001750 00000003773 14135770370 034157 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; import opennlp.tools.util.featuregen.TokenFeatureGenerator; public class ConfigurablePOSContextGeneratorTest { private void testContextGeneration(int cacheSize) { AdaptiveFeatureGenerator fg = new TokenFeatureGenerator(); ConfigurablePOSContextGenerator cg = new ConfigurablePOSContextGenerator(cacheSize, fg); String[] tokens = new String[] {"a", "b", "c", "d", "e"}; String[] tags = new String[] {"t_a", "t_b", "t_c", "t_d", "t_e"}; cg.getContext(0, tokens, tags, null); Assert.assertEquals(1, cg.getContext(0, tokens, tags, null).length); Assert.assertEquals("w=a", cg.getContext(0, tokens, tags, null)[0]); Assert.assertEquals("w=b", cg.getContext(1, tokens, tags, null)[0]); Assert.assertEquals("w=c", cg.getContext(2, tokens, tags, null)[0]); Assert.assertEquals("w=d", cg.getContext(3, tokens, tags, null)[0]); Assert.assertEquals("w=e", cg.getContext(4, tokens, tags, null)[0]); } @Test public void testWithoutCache() { testContextGeneration(0); } @Test public void testWithCache() { testContextGeneration(3); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_postag_DefaultPOS0100644 0000000 0000000 00000000167 14135770370 032546 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/DefaultPOSContextGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/DefaultPOSContextGenerator0100664 0001750 0001750 00000011675 14135770370 034213 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.IntStream; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.StringList; /** * * We encountered a concurrency issue in the pos tagger module in the class * DefaultPOSContextGenerator. The issue is demonstrated in DefaultPOSContextGeneratorTest.java. The test "multithreading()" consistently fails on our system with the current code if the number of threads (NUMBER_OF_THREADS) is set to 10. If the number of threads is set to 1 (effectively disabling multithreading), the test consistently passes. We resolved the issue by removing a field in DefaultPOSContextGenerator.java. * */ public class DefaultPOSContextGeneratorTest { public static final int NUMBER_OF_THREADS = 10; private static Object[] tokens; private static DefaultPOSContextGenerator defaultPOSContextGenerator; private static String[] tags; @BeforeClass public static void setUp() { final String matchingToken = "tokenC"; tokens = new Object[] {"tokenA", "tokenB", matchingToken, "tokenD"}; final StringList stringList = new StringList(new String[] {matchingToken}); Dictionary dictionary = new Dictionary(); dictionary.put(stringList); defaultPOSContextGenerator = new DefaultPOSContextGenerator(dictionary); tags = new String[] {"tagA", "tagB", "tagC", "tagD"}; } @Test public void noDictionaryMatch() { int index = 1; final String[] actual = defaultPOSContextGenerator.getContext(index, tokens, tags); final String[] expected = new String[] { "default", "w=tokenB", "suf=B", "suf=nB", "suf=enB", "suf=kenB", "pre=t", "pre=to", "pre=tok", "pre=toke", "c", "p=tokenA", "t=tagA", "pp=*SB*", "n=tokenC", "nn=tokenD" }; Assert.assertArrayEquals("Calling with not matching index at: " + index + "\nexpected \n" + Arrays.toString(expected) + " but actually was \n" + Arrays.toString(actual), expected, actual); } @Test public void dictionaryMatch() { int indexWithDictionaryMatch = 2; final String[] actual = defaultPOSContextGenerator.getContext(indexWithDictionaryMatch, tokens, tags); final String[] expected = new String[] { "default", "w=tokenC", "p=tokenB", "t=tagB", "pp=tokenA", "t2=tagA,tagB", "n=tokenD", "nn=*SE*" }; Assert.assertArrayEquals("Calling with index matching dictionary entry at: " + indexWithDictionaryMatch + "\nexpected \n" + Arrays.toString(expected) + " but actually was \n" + Arrays.toString(actual), expected, actual); } @Test public void multithreading() { Callable matching = () -> { dictionaryMatch(); return null; }; Callable notMatching = () -> { noDictionaryMatch(); return null; }; final List> callables = IntStream.range(0, 200000) .mapToObj(index -> (index % 2 == 0) ? matching : notMatching) .collect(Collectors.toList()); final ExecutorService executorService = Executors.newFixedThreadPool(NUMBER_OF_THREADS); try { final List> futures = executorService.invokeAll(callables); executorService.shutdown(); executorService.awaitTermination(30, TimeUnit.SECONDS); futures.forEach(future -> { try { future.get(); } catch (InterruptedException e) { Assert.fail("Interrupted because of: " + e.getCause().getMessage()); } catch (ExecutionException ee) { Assert.fail(ee.getCause().getMessage()); } }); } catch (final InterruptedException e) { Assert.fail("Test interrupted"); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSDictionaryTest.java0100664 0001750 0001750 00000010165 14135770370 033271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.junit.Assert; import org.junit.Test; /** * Tests for the {@link POSDictionary} class. */ public class POSDictionaryTest { private static POSDictionary loadDictionary(String name) throws IOException { return POSDictionary.create(POSDictionaryTest.class.getResourceAsStream(name)); } private static POSDictionary serializeDeserializeDict(POSDictionary dict) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { dict.serialize(out); } finally { out.close(); } POSDictionary serializedDictionary; try (InputStream in = new ByteArrayInputStream(out.toByteArray())) { serializedDictionary = POSDictionary.create(in); } return serializedDictionary; } @Test public void testSerialization() throws IOException { POSDictionary dictionary = new POSDictionary(); dictionary.put("a", "1", "2", "3"); dictionary.put("b", "4", "5", "6"); dictionary.put("c", "7", "8", "9"); dictionary.put("Always", "RB","NNP"); Assert.assertTrue(dictionary.equals(serializeDeserializeDict(dictionary))); } @Test public void testLoadingDictionaryWithoutCaseAttribute() throws IOException { POSDictionary dict = loadDictionary("TagDictionaryWithoutCaseAttribute.xml"); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("McKinsey")); Assert.assertNull(dict.getTags("Mckinsey")); } @Test public void testCaseSensitiveDictionary() throws IOException { POSDictionary dict = loadDictionary("TagDictionaryCaseSensitive.xml"); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("McKinsey")); Assert.assertNull(dict.getTags("Mckinsey")); dict = serializeDeserializeDict(dict); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("McKinsey")); Assert.assertNull(dict.getTags("Mckinsey")); } @Test public void testCaseInsensitiveDictionary() throws IOException { POSDictionary dict = loadDictionary("TagDictionaryCaseInsensitive.xml"); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("McKinsey")); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("Mckinsey")); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("MCKINSEY")); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("mckinsey")); dict = serializeDeserializeDict(dict); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("McKinsey")); Assert.assertArrayEquals(new String[]{"NNP"}, dict.getTags("Mckinsey")); } @Test public void testToString() throws IOException { POSDictionary dict = loadDictionary("TagDictionaryCaseInsensitive.xml"); Assert.assertEquals("POSDictionary{size=1, caseSensitive=false}", dict.toString()); dict = loadDictionary("TagDictionaryCaseSensitive.xml"); Assert.assertEquals("POSDictionary{size=1, caseSensitive=true}", dict.toString()); } @Test public void testEqualsAndHashCode() throws IOException { POSDictionary dictA = loadDictionary("TagDictionaryCaseInsensitive.xml"); POSDictionary dictB = loadDictionary("TagDictionaryCaseInsensitive.xml"); Assert.assertEquals(dictA, dictB); Assert.assertEquals(dictA.hashCode(), dictB.hashCode()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSModelTest.java0100664 0001750 0001750 00000003571 14135770370 032227 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Test; import opennlp.tools.util.model.ModelType; public class POSModelTest { @Test public void testPOSModelSerializationMaxent() throws IOException { POSModel posModel = POSTaggerMETest.trainPOSModel(ModelType.MAXENT); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { posModel.serialize(out); } finally { out.close(); } POSModel recreatedPosModel = new POSModel(new ByteArrayInputStream(out.toByteArray())); // TODO: add equals to pos model } @Test public void testPOSModelSerializationPerceptron() throws IOException { POSModel posModel = POSTaggerMETest.trainPOSModel(ModelType.PERCEPTRON); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { posModel.serialize(out); } finally { out.close(); } POSModel recreatedPosModel = new POSModel(new ByteArrayInputStream(out.toByteArray())); // TODO: add equals to pos model } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java0100664 0001750 0001750 00000012161 14135770370 033723 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.postag.DummyPOSTaggerFactory.DummyPOSContextGenerator; import opennlp.tools.postag.DummyPOSTaggerFactory.DummyPOSDictionary; import opennlp.tools.postag.DummyPOSTaggerFactory.DummyPOSSequenceValidator; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link POSTaggerFactory} class. */ public class POSTaggerFactoryTest { private static ObjectStream createSampleStream() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory( POSTaggerFactoryTest.class, "/opennlp/tools/postag/AnnotatedSentences.txt"); return new WordTagSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } private static POSModel trainPOSModel(POSTaggerFactory factory) throws IOException { return POSTaggerME.train("eng", createSampleStream(), TrainingParameters.defaultParams(), factory); } @Test public void testPOSTaggerWithCustomFactory() throws IOException { DummyPOSDictionary posDict = new DummyPOSDictionary( POSDictionary.create(POSDictionaryTest.class .getResourceAsStream("TagDictionaryCaseSensitive.xml"))); POSModel posModel = trainPOSModel(new DummyPOSTaggerFactory(posDict)); POSTaggerFactory factory = posModel.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof DummyPOSDictionary); Assert.assertTrue(factory.getPOSContextGenerator() instanceof DummyPOSContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DummyPOSSequenceValidator); ByteArrayOutputStream out = new ByteArrayOutputStream(); posModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); POSModel fromSerialized = new POSModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof DummyPOSDictionary); Assert.assertTrue(factory.getPOSContextGenerator() instanceof DummyPOSContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DummyPOSSequenceValidator); } @Test public void testPOSTaggerWithDefaultFactory() throws IOException { POSDictionary posDict = POSDictionary.create(POSDictionaryTest.class .getResourceAsStream("TagDictionaryCaseSensitive.xml")); POSModel posModel = trainPOSModel(new POSTaggerFactory(null, null, posDict)); POSTaggerFactory factory = posModel.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof POSDictionary); Assert.assertTrue(factory.getPOSContextGenerator() != null); Assert.assertTrue(factory.getSequenceValidator() instanceof DefaultPOSSequenceValidator); ByteArrayOutputStream out = new ByteArrayOutputStream(); posModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); POSModel fromSerialized = new POSModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof POSDictionary); Assert.assertTrue(factory.getPOSContextGenerator() != null); Assert.assertTrue(factory.getSequenceValidator() instanceof DefaultPOSSequenceValidator); } @Test(expected = InvalidFormatException.class) public void testCreateWithInvalidName() throws InvalidFormatException { BaseToolFactory.create("X", null); } @Test(expected = InvalidFormatException.class) public void testCreateWithInvalidName2() throws InvalidFormatException { POSTaggerFactory.create("X", null, null); } @Test(expected = InvalidFormatException.class) public void testCreateWithHierarchy() throws InvalidFormatException { BaseToolFactory.create(Object.class.getCanonicalName(), null); } @Test(expected = InvalidFormatException.class) public void testCreateWithHierarchy2() throws InvalidFormatException { POSTaggerFactory.create(this.getClass().getCanonicalName(), null, null); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java0100664 0001750 0001750 00000007211 14135770370 032615 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelType; /** * Tests for the {@link POSTaggerME} class. */ public class POSTaggerMETest { private static ObjectStream createSampleStream() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(POSTaggerMETest.class, "/opennlp/tools/postag/AnnotatedSentences.txt"); return new WordTagSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } /** * Trains a POSModel from the annotated test data. * * @return {@link POSModel} */ public static POSModel trainPOSModel(ModelType type) throws IOException { TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, type.toString()); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); return POSTaggerME.train("eng", createSampleStream(), params, new POSTaggerFactory()); } @Test public void testPOSTagger() throws IOException { POSModel posModel = trainPOSModel(ModelType.MAXENT); POSTagger tagger = new POSTaggerME(posModel); String[] tags = tagger.tag(new String[] { "The", "driver", "got", "badly", "injured", "."}); Assert.assertEquals(6, tags.length); Assert.assertEquals("DT", tags[0]); Assert.assertEquals("NN", tags[1]); Assert.assertEquals("VBD", tags[2]); Assert.assertEquals("RB", tags[3]); Assert.assertEquals("VBN", tags[4]); Assert.assertEquals(".", tags[5]); } @Test public void testBuildNGramDictionary() throws IOException { ObjectStream samples = createSampleStream(); POSTaggerME.buildNGramDictionary(samples, 0); } @Test(expected = InsufficientTrainingDataException.class) public void insufficientTestData() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(POSTaggerMETest.class, "/opennlp/tools/postag/AnnotatedSentencesInsufficient.txt"); ObjectStream stream = new WordTagSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, ModelType.MAXENT.name()); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); POSTaggerME.train("eng", stream, params, new POSTaggerFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000163 14135770370 032620 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorMETest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorMETest0100664 0001750 0001750 00000011062 14135770370 034133 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; public class LanguageDetectorMETest { private LanguageDetectorModel model; @Before public void init() throws Exception { this.model = trainModel(); } @Test public void testPredictLanguages() { LanguageDetector ld = new LanguageDetectorME(this.model); Language[] languages = ld.predictLanguages("estava em uma marcenaria na Rua Bruno"); Assert.assertEquals(4, languages.length); Assert.assertEquals("pob", languages[0].getLang()); Assert.assertEquals("ita", languages[1].getLang()); Assert.assertEquals("spa", languages[2].getLang()); Assert.assertEquals("fra", languages[3].getLang()); } @Test public void testProbingPredictLanguages() { LanguageDetectorME ld = new LanguageDetectorME(this.model); for (int i = 0; i < 10000; i += 1000) { StringBuilder sb = new StringBuilder(); for (int j = 0; j <= i; j++) { sb.append("estava em uma marcenaria na Rua Bruno "); } ProbingLanguageDetectionResult result = ld.probingPredictLanguages(sb.toString()); Assert.assertTrue(result.getLength() <= 600); Language[] languages = result.getLanguages(); Assert.assertEquals(4, languages.length); Assert.assertEquals("pob", languages[0].getLang()); Assert.assertEquals("ita", languages[1].getLang()); Assert.assertEquals("spa", languages[2].getLang()); Assert.assertEquals("fra", languages[3].getLang()); } } @Test public void testPredictLanguage() { LanguageDetector ld = new LanguageDetectorME(this.model); Language language = ld.predictLanguage("Dove è meglio che giochi"); Assert.assertEquals("ita", language.getLang()); } @Test public void testSupportedLanguages() { LanguageDetector ld = new LanguageDetectorME(this.model); String[] supportedLanguages = ld.getSupportedLanguages(); Assert.assertEquals(4, supportedLanguages.length); } @Test public void testLoadFromSerialized() throws IOException { byte[] serialized = serializeModel(model); LanguageDetectorModel myModel = new LanguageDetectorModel(new ByteArrayInputStream(serialized)); Assert.assertNotNull(myModel); } protected static byte[] serializeModel(LanguageDetectorModel model) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); return out.toByteArray(); } public static LanguageDetectorModel trainModel() throws Exception { return trainModel(new LanguageDetectorFactory()); } public static LanguageDetectorModel trainModel(LanguageDetectorFactory factory) throws Exception { LanguageDetectorSampleStream sampleStream = createSampleStream(); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); params.put("DataIndexer", "TwoPass"); params.put(TrainingParameters.ALGORITHM_PARAM, "NAIVEBAYES"); return LanguageDetectorME.train(sampleStream, params, factory); } public static LanguageDetectorSampleStream createSampleStream() throws IOException { ResourceAsStreamFactory streamFactory = new ResourceAsStreamFactory( LanguageDetectorMETest.class, "/opennlp/tools/doccat/DoccatSample.txt"); PlainTextByLineStream lineStream = new PlainTextByLineStream(streamFactory, StandardCharsets.UTF_8); return new LanguageDetectorSampleStream(lineStream); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageTest.java0100664 0001750 0001750 00000005722 14135770370 033145 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import org.junit.Assert; import org.junit.Test; public class LanguageTest { @Test public void emptyConfidence() throws Exception { String languageCode = "aLanguage"; Language lang = new Language(languageCode); Assert.assertEquals(languageCode, lang.getLang()); Assert.assertEquals(0, lang.getConfidence(), 0); } @Test public void nonEmptyConfidence() throws Exception { String languageCode = "aLanguage"; double confidence = 0.05; Language lang = new Language(languageCode, confidence); Assert.assertEquals(languageCode, lang.getLang()); Assert.assertEquals(confidence, lang.getConfidence(), 0); } @Test(expected = NullPointerException.class) public void emptyLanguage() throws Exception { new Language(null); } @Test(expected = NullPointerException.class) public void emptyLanguageConfidence() throws Exception { new Language(null, 0.05); } @Test public void testToString() { Language lang = new Language("aLang"); Assert.assertEquals("aLang (0.0)", lang.toString()); lang = new Language("aLang", 0.0886678); Assert.assertEquals("aLang (0.0886678)", lang.toString()); } @Test public void testHash() { int hashA = new Language("aLang").hashCode(); int hashAA = new Language("aLang").hashCode(); int hashB = new Language("BLang").hashCode(); int hashA5 = new Language("aLang", 5.0).hashCode(); int hashA6 = new Language("BLang", 6.0).hashCode(); Assert.assertEquals(hashA, hashAA); Assert.assertNotEquals(hashA, hashB); Assert.assertNotEquals(hashA, hashA5); Assert.assertNotEquals(hashB, hashA5); Assert.assertNotEquals(hashA5, hashA6); } @Test public void testEquals() { Language langA = new Language("langA"); Language langB = new Language("langB"); Language langA5 = new Language("langA5", 5.0); Language langA6 = new Language("langA5", 6.0); Assert.assertEquals(langA, langA); Assert.assertEquals(langA5, langA5); Assert.assertNotEquals(langA, langA5); Assert.assertNotEquals(langA, langB); Assert.assertEquals(langA6, langA5); Assert.assertNotEquals(langA, "something else"); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000157 14135770370 032623 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.jav0100664 0001750 0001750 00000010352 14135770370 034141 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; public class LanguageSampleTest { @Test public void testConstructor() { Language lang = new Language("aLang"); CharSequence context = "aContext"; LanguageSample sample = new LanguageSample(lang, context); Assert.assertEquals(lang, sample.getLanguage()); Assert.assertEquals(context, sample.getContext()); } @Test public void testLanguageSampleSerDe() throws IOException { Language lang = new Language("aLang"); CharSequence context = "aContext"; LanguageSample languageSample = new LanguageSample(lang, context); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(languageSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); LanguageSample deSerializedLanguageSample = null; try { deSerializedLanguageSample = (LanguageSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedLanguageSample); Assert.assertEquals(languageSample.getContext(), deSerializedLanguageSample.getContext()); Assert.assertEquals(languageSample.getLanguage(), deSerializedLanguageSample.getLanguage()); Assert.assertEquals(languageSample, deSerializedLanguageSample); } @Test(expected = NullPointerException.class) public void testNullLang() throws Exception { CharSequence context = "aContext"; new LanguageSample(null, context); } @Test(expected = NullPointerException.class) public void testNullContext() { Language lang = new Language("aLang"); new LanguageSample(lang, null); } @Test public void testToString() { Language lang = new Language("aLang"); CharSequence context = "aContext"; LanguageSample sample = new LanguageSample(lang, context); Assert.assertEquals(lang.getLang() + "\t" + context, sample.toString()); } @Test public void testHash() { int hashA = new LanguageSample(new Language("aLang"), "aContext").hashCode(); int hashB = new LanguageSample(new Language("bLang"), "aContext").hashCode(); int hashC = new LanguageSample(new Language("aLang"), "bContext").hashCode(); Assert.assertNotEquals(hashA, hashB); Assert.assertNotEquals(hashA, hashC); Assert.assertNotEquals(hashB, hashC); } @Test public void testEquals() throws Exception { LanguageSample sampleA = new LanguageSample(new Language("aLang"), "aContext"); LanguageSample sampleA1 = new LanguageSample(new Language("aLang"), "aContext"); LanguageSample sampleB = new LanguageSample(new Language("bLang"), "aContext"); LanguageSample sampleC = new LanguageSample(new Language("aLang"), "bContext"); Assert.assertEquals(sampleA, sampleA); Assert.assertEquals(sampleA, sampleA1); Assert.assertNotEquals(sampleA, sampleB); Assert.assertNotEquals(sampleA, sampleC); Assert.assertNotEquals(sampleB, sampleC); Assert.assertNotEquals(sampleA, "something else"); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000177 14135770370 032625 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorCrossValidatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorCrossV0100664 0001750 0001750 00000004354 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.TrainingParameters; public class LanguageDetectorCrossValidatorTest { @Test public void evaluate() throws Exception { TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); params.put("PrintMessages", false); final AtomicInteger correctCount = new AtomicInteger(); final AtomicInteger incorrectCount = new AtomicInteger(); LanguageDetectorCrossValidator cv = new LanguageDetectorCrossValidator(params, new LanguageDetectorFactory(), new LanguageDetectorEvaluationMonitor() { @Override public void correctlyClassified(LanguageSample reference, LanguageSample prediction) { correctCount.incrementAndGet(); } @Override public void missclassified(LanguageSample reference, LanguageSample prediction) { incorrectCount.incrementAndGet(); } }); LanguageDetectorSampleStream sampleStream = LanguageDetectorMETest.createSampleStream(); cv.evaluate(sampleStream, 2); Assert.assertEquals(99, cv.getDocumentCount()); Assert.assertEquals(0.98989898989899, cv.getDocumentAccuracy(), 0.01); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000172 14135770370 032620 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvalua0100664 0001750 0001750 00000006155 14135770370 034216 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.ByteArrayOutputStream; import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.langdetect.LanguageDetectorEvaluationErrorListener; public class LanguageDetectorEvaluatorTest { @Test public void processSample() throws Exception { LanguageDetectorModel model = LanguageDetectorMETest.trainModel(); LanguageDetectorME langdetector = new LanguageDetectorME(model); final AtomicInteger correctCount = new AtomicInteger(); final AtomicInteger incorrectCount = new AtomicInteger(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator(langdetector, new LanguageDetectorEvaluationMonitor() { @Override public void correctlyClassified(LanguageSample reference, LanguageSample prediction) { correctCount.incrementAndGet(); } @Override public void missclassified(LanguageSample reference, LanguageSample prediction) { incorrectCount.incrementAndGet(); } }, new LanguageDetectorEvaluationErrorListener(outputStream)); evaluator.evaluateSample(new LanguageSample(new Language("pob"), "escreve e faz palestras pelo mundo inteiro sobre anjos")); evaluator.evaluateSample(new LanguageSample(new Language("fra"), "escreve e faz palestras pelo mundo inteiro sobre anjos")); evaluator.evaluateSample(new LanguageSample(new Language("fra"), "escreve e faz palestras pelo mundo inteiro sobre anjos")); Assert.assertEquals(1, correctCount.get()); Assert.assertEquals(2, incorrectCount.get()); Assert.assertEquals(3, evaluator.getDocumentCount()); Assert.assertEquals(0.33, evaluator.getAccuracy(), 0.01); String report = outputStream.toString(StandardCharsets.UTF_8.name()); Assert.assertEquals("Expected\tPredicted\tContext" + System.lineSeparator() + "fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos" + System.lineSeparator() + "fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos" + System.lineSeparator(), report); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java0100664 0001750 0001750 00000005351 14135770370 033203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import opennlp.tools.ngram.NGramModel; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.util.StringList; import opennlp.tools.util.normalizer.CharSequenceNormalizer; public class DummyFactory extends LanguageDetectorFactory { public DummyFactory() { super(); } @Override public void init() { super.init(); } @Override public LanguageDetectorContextGenerator getContextGenerator() { return new DummyFactory.MyContectGenerator(2, 5, new DummyFactory.UpperCaseNormalizer()); } public class UpperCaseNormalizer implements CharSequenceNormalizer { @Override public CharSequence normalize(CharSequence text) { return text.toString().toUpperCase(); } } public class MyContectGenerator extends DefaultLanguageDetectorContextGenerator { public MyContectGenerator(int min, int max, CharSequenceNormalizer... normalizers) { super(min, max, normalizers); } @Override public String[] getContext(CharSequence document) { String[] superContext = super.getContext(document); List context = new ArrayList(Arrays.asList(superContext)); document = this.normalizer.normalize(document); SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE; String[] words = tokenizer.tokenize(document.toString()); NGramModel tokenNgramModel = new NGramModel(); if (words.length > 0) { tokenNgramModel.add(new StringList(words), 1, 3); Iterator tokenNgramIterator = tokenNgramModel.iterator(); while (tokenNgramIterator.hasNext()) { StringList tokenList = (StringList) tokenNgramIterator.next(); if (tokenList.size() > 0) { context.add("tg=" + tokenList.toString()); } } } return context.toArray(new String[context.size()]); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000170 14135770370 032616 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorFactoryTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorFactor0100664 0001750 0001750 00000006275 14135770370 034222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; public class LanguageDetectorFactoryTest { private static LanguageDetectorModel model; @BeforeClass public static void train() throws Exception { ResourceAsStreamFactory streamFactory = new ResourceAsStreamFactory( LanguageDetectorMETest.class, "/opennlp/tools/doccat/DoccatSample.txt"); PlainTextByLineStream lineStream = new PlainTextByLineStream(streamFactory, StandardCharsets.UTF_8); LanguageDetectorSampleStream sampleStream = new LanguageDetectorSampleStream(lineStream); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, "100"); params.put(TrainingParameters.CUTOFF_PARAM, "5"); params.put(TrainingParameters.ALGORITHM_PARAM, "NAIVEBAYES"); model = LanguageDetectorME.train(sampleStream, params, new DummyFactory()); } @Test public void testCorrectFactory() throws IOException { byte[] serialized = LanguageDetectorMETest.serializeModel(model); LanguageDetectorModel myModel = new LanguageDetectorModel(new ByteArrayInputStream(serialized)); Assert.assertTrue(myModel.getFactory() instanceof DummyFactory); } @Test public void testDummyFactory() throws Exception { byte[] serialized = LanguageDetectorMETest.serializeModel(model); LanguageDetectorModel myModel = new LanguageDetectorModel(new ByteArrayInputStream(serialized)); Assert.assertTrue(myModel.getFactory() instanceof DummyFactory); } @Test public void testDummyFactoryContextGenerator() throws Exception { LanguageDetectorContextGenerator cg = model.getFactory().getContextGenerator(); String[] context = cg.getContext( "a dummy text phrase to test if the context generator works!!!!!!!!!!!!"); Set set = new HashSet(Arrays.asList(context)); Assert.assertTrue(set.contains("!!!!!")); // default normalizer would remove the repeated ! Assert.assertTrue(set.contains("a dum")); Assert.assertTrue(set.contains("tg=[THE,CONTEXT,GENERATOR]")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_langdetect_Defaul0100644 0000000 0000000 00000000210 14135770370 032602 xustar000000000 0000000 136 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/langdetect/DefaultLanguageDetecto0100664 0001750 0001750 00000002741 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.util.Arrays; import java.util.Collection; import org.junit.Assert; import org.junit.Test; public class DefaultLanguageDetectorContextGeneratorTest { @Test public void extractContext() throws Exception { String doc = "abcde fghijk"; LanguageDetectorContextGenerator cg = new DefaultLanguageDetectorContextGenerator(1, 3); Collection features = Arrays.asList(cg.getContext(doc)); Assert.assertEquals(33, features.size()); Assert.assertTrue(features.contains("ab")); Assert.assertTrue(features.contains("abc")); Assert.assertTrue(features.contains("e f")); Assert.assertTrue(features.contains(" fg")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_lemmatizer_Dictio0100644 0000000 0000000 00000000165 14135770370 032665 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DictionaryLemmatizerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DictionaryLemmatizerTe0100664 0001750 0001750 00000003622 14135770370 034326 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; public class DictionaryLemmatizerTest { private static DictionaryLemmatizer dictionaryLemmatizer; @BeforeClass public static void loadDictionary() throws Exception { dictionaryLemmatizer = new DictionaryLemmatizer( DictionaryLemmatizerTest.class.getResourceAsStream("/opennlp/tools/lemmatizer/smalldictionary.dict") ); } @Test public void testForNullPointerException() { String[] sentence = new String[]{"The","dogs","were","running","and","barking","down","the","street"}; String[] sentencePOS = new String[]{"DT","NNS","VBD","VBG","CC","VBG","RP","DT","NN"}; String[] expectedLemma = new String[]{"the","dog","is","run","and","bark","down","the","street"}; String[] actualLemma = dictionaryLemmatizer.lemmatize(sentence, sentencePOS); for (int i = 0;i < sentence.length;i++) { // don't compare cases where the word is not in the dictionary... if (!actualLemma[i].equals("O")) Assert.assertEquals(expectedLemma[i], actualLemma[i]); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmaSampleTest.java0100664 0001750 0001750 00000010766 14135770370 033662 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.StringReader; import org.junit.Assert; import org.junit.Test; public class LemmaSampleTest { @Test(expected = IllegalArgumentException.class) public void testParameterValidation() { new LemmaSample(new String[] { "" }, new String[] { "" }, new String[] { "test", "one element to much" }); } private static String[] createSentence() { return new String[] { "Forecasts", "for", "the", "trade", "figures", "range", "widely", "." }; } private static String[] createTags() { return new String[] { "NNS", "IN", "DT", "NN", "NNS", "VBP", "RB", "." }; } private static String[] createLemmas() { return new String[] { "Forecast", "for", "the", "trade", "figure", "range", "widely", "." }; } @Test public void testLemmaSampleSerDe() throws IOException { LemmaSample lemmaSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(lemmaSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); LemmaSample deSerializedLemmaSample = null; try { deSerializedLemmaSample = (LemmaSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedLemmaSample); Assert.assertArrayEquals(lemmaSample.getLemmas(), deSerializedLemmaSample.getLemmas()); Assert.assertArrayEquals(lemmaSample.getTokens(), deSerializedLemmaSample.getTokens()); Assert.assertArrayEquals(lemmaSample.getTags(), deSerializedLemmaSample.getTags()); } @Test public void testRetrievingContent() { LemmaSample sample = new LemmaSample(createSentence(), createTags(), createLemmas()); Assert.assertArrayEquals(createSentence(), sample.getTokens()); Assert.assertArrayEquals(createTags(), sample.getTags()); Assert.assertArrayEquals(createLemmas(), sample.getLemmas()); } @Test public void testToString() throws IOException { LemmaSample sample = new LemmaSample(createSentence(), createTags(), createLemmas()); String[] sentence = createSentence(); String[] tags = createTags(); String[] lemmas = createLemmas(); StringReader sr = new StringReader(sample.toString()); BufferedReader reader = new BufferedReader(sr); for (int i = 0; i < sentence.length; i++) { String line = reader.readLine(); String[] parts = line.split("\t"); Assert.assertEquals(3, parts.length); Assert.assertEquals(sentence[i], parts[0]); Assert.assertEquals(tags[i], parts[1]); Assert.assertEquals(lemmas[i], parts[2]); } } @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } public static LemmaSample createGoldSample() { return new LemmaSample(createSentence(), createTags(), createLemmas()); } public static LemmaSample createPredSample() { String[] lemmas = createLemmas(); lemmas[5] = "figure"; return new LemmaSample(createSentence(), createTags(), lemmas); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmatizer.java0100664 0001750 0001750 00000004256 14135770370 033747 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.IOException; import java.util.Arrays; import java.util.List; /** * This dummy lemmatizer implementation simulates a LemmatizerME. The file has * samples of sentences, with target and predicted values. */ public class DummyLemmatizer implements Lemmatizer { private DummyLemmaSampleStream mSampleStream; public DummyLemmatizer(DummyLemmaSampleStream aSampleStream) { mSampleStream = aSampleStream; } public String[] lemmatize(String[] toks, String[] tags) { try { LemmaSample predsSample = mSampleStream.read(); // checks if the streams are sync for (int i = 0; i < toks.length; i++) { if (!toks[i].equals(predsSample.getTokens()[i]) || !tags[i].equals(predsSample.getTags()[i])) { throw new RuntimeException("The streams are not sync!" + "\n expected sentence: " + Arrays.toString(toks) + "\n expected tags: " + Arrays.toString(tags) + "\n predicted sentence: " + Arrays.toString(predsSample.getTokens()) + "\n predicted tags: " + Arrays.toString(predsSample.getTags())); } } return predsSample.getLemmas(); } catch (IOException e) { throw new RuntimeException(e); } } @Override public List> lemmatize(List toks, List tags) { return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_lemmatizer_DummyL0100644 0000000 0000000 00000000163 14135770370 032657 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DummyLemmaSampleStream0100664 0001750 0001750 00000005317 14135770370 034266 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * This dummy lemma sample stream reads a file containing forms, postags, gold * lemmas, and predicted lemmas. It can be used together with DummyLemmatizer * simulate a lemmatizer. */ public class DummyLemmaSampleStream extends FilterObjectStream { private boolean mIsPredicted; private int count = 0; // the predicted flag sets if the stream will contain the expected or the // predicted tags. public DummyLemmaSampleStream(ObjectStream samples, boolean isPredicted) { super(samples); mIsPredicted = isPredicted; } public LemmaSample read() throws IOException { List toks = new ArrayList<>(); List posTags = new ArrayList<>(); List goldLemmas = new ArrayList<>(); List predictedLemmas = new ArrayList<>(); for (String line = samples.read(); line != null && !line.equals(""); line = samples.read()) { String[] parts = line.split("\t"); if (parts.length != 4) { System.err.println("Skipping corrupt line " + count + ": " + line); } else { toks.add(parts[0]); posTags.add(parts[1]); goldLemmas.add(parts[2]); predictedLemmas.add(parts[3]); } count++; } if (toks.size() > 0) { if (mIsPredicted) { return new LemmaSample(toks.toArray(new String[toks.size()]), posTags.toArray(new String[posTags.size()]), predictedLemmas.toArray(new String[predictedLemmas.size()])); } else return new LemmaSample(toks.toArray(new String[toks.size()]), posTags.toArray(new String[posTags.size()]), goldLemmas.toArray(new String[goldLemmas.size()])); } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java0100664 0001750 0001750 00000007613 14135770370 034015 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * This is the test class for {@link LemmatizerME}. *

* A proper testing and evaluation of the name finder is only possible with a * large corpus which contains a huge amount of test sentences. *

* The scope of this test is to make sure that the name finder code can be * executed. This test can not detect mistakes which lead to incorrect feature * generation or other mistakes which decrease the tagging performance of the * name finder. *

* In this test the {@link LemmatizerME} is trained with a small amount of * training sentences and then the computed model is used to predict sentences * from the training sentences. */ public class LemmatizerMETest { private LemmatizerME lemmatizer; private static String[] tokens = { "Rockwell", "said", "the", "agreement", "calls", "for", "it", "to", "supply", "200", "additional", "so-called", "shipsets", "for", "the", "planes", "." }; private static String[] postags = { "NNP", "VBD", "DT", "NN", "VBZ", "IN", "PRP", "TO", "VB", "CD", "JJ", "JJ", "NNS", "IN", "DT", "NNS", "." }; private static String[] expect = { "rockwell", "say", "the", "agreement", "call", "for", "it", "to", "supply", "200", "additional", "so-called", "shipset", "for", "the", "plane", "." }; @Before public void startup() throws IOException { // train the lemmatizer ObjectStream sampleStream = new LemmaSampleStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/lemmatizer/trial.old.tsv")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); LemmatizerModel lemmatizerModel = LemmatizerME.train("eng", sampleStream, params, new LemmatizerFactory()); this.lemmatizer = new LemmatizerME(lemmatizerModel); } @Test public void testLemmasAsArray() throws Exception { String[] lemmas = lemmatizer.lemmatize(tokens, postags); Assert.assertArrayEquals(expect, lemmas); } @Test(expected = InsufficientTrainingDataException.class) public void testInsufficientData() throws IOException { ObjectStream sampleStream = new LemmaSampleStream( new PlainTextByLineStream(new MockInputStreamFactory( new File("opennlp/tools/lemmatizer/trial.old-insufficient.tsv")), StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 5); LemmatizerME.train("eng", sampleStream, params, new LemmatizerFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_lemmatizer_Lemmat0100644 0000000 0000000 00000000164 14135770370 032670 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerEvaluatorTes0100664 0001750 0001750 00000005274 14135770370 034353 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.lemmatizer.LemmaEvaluationErrorListener; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; /** * Tests for {@link LemmatizerEvaluator}. * * @see opennlp.tools.chunker.ChunkerEvaluator */ public class LemmatizerEvaluatorTest { private static final double DELTA = 1.0E-9d; /** * Checks the evaluator results against the results got using the conlleval, * available at http://www.cnts.ua.ac.be/conll2000/chunking/output.html but * containing lemmas instead of chunks. * * @throws IOException */ @Test public void testEvaluator() throws IOException { String inPredicted = "opennlp/tools/lemmatizer/output.txt"; String inExpected = "opennlp/tools/lemmatizer/output.txt"; String encoding = StandardCharsets.UTF_8.name(); DummyLemmaSampleStream predictedSample = new DummyLemmaSampleStream( new PlainTextByLineStream( new MockInputStreamFactory(new File(inPredicted)), encoding), true); DummyLemmaSampleStream expectedSample = new DummyLemmaSampleStream( new PlainTextByLineStream( new MockInputStreamFactory(new File(inExpected)), encoding), false); Lemmatizer dummyLemmatizer = new DummyLemmatizer(predictedSample); OutputStream stream = new ByteArrayOutputStream(); LemmatizerEvaluationMonitor listener = new LemmaEvaluationErrorListener(stream); LemmatizerEvaluator evaluator = new LemmatizerEvaluator(dummyLemmatizer, listener); evaluator.evaluate(expectedSample); Assert.assertEquals(0.9877049180327869, evaluator.getWordAccuracy(), DELTA); Assert.assertNotSame(stream.toString().length(), 0); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_lemmatizer_Dictio0100644 0000000 0000000 00000000172 14135770370 032663 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DictionaryLemmatizerMultiTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/DictionaryLemmatizerMu0100664 0001750 0001750 00000004661 14135770370 034343 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; public class DictionaryLemmatizerMultiTest { private static DictionaryLemmatizer dictionaryLemmatizer; @BeforeClass public static void loadDictionary() throws Exception { dictionaryLemmatizer = new DictionaryLemmatizer( DictionaryLemmatizerTest.class.getResourceAsStream( "/opennlp/tools/lemmatizer/smalldictionarymulti.dict") ); } @Test public void testForNullPointerException() { List sentence = Arrays.asList("The","dogs","were","running","and","barking", "down","the","street"); List sentencePOS = Arrays.asList("DT","NNS","VBD","VBG","CC","VBG","RP","DT","NN"); List> expectedLemmas = new ArrayList<>(); expectedLemmas.add(Arrays.asList("the")); expectedLemmas.add(Arrays.asList("dog")); expectedLemmas.add(Arrays.asList("is")); expectedLemmas.add(Arrays.asList("run,run")); expectedLemmas.add(Arrays.asList("and")); expectedLemmas.add(Arrays.asList("bark,bark")); expectedLemmas.add(Arrays.asList("down")); expectedLemmas.add(Arrays.asList("the")); expectedLemmas.add(Arrays.asList("street")); List> actualLemmas = dictionaryLemmatizer.lemmatize(sentence, sentencePOS); for (int i = 0; i < sentence.size(); i++) { // don't compare cases where the word is not in the dictionary... if (!actualLemmas.get(0).get(0).equals("O")) Assert.assertEquals(expectedLemmas.get(i), actualLemmas.get(i)); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/Conll02NameFinderEval.java0100664 0001750 0001750 00000055151 14135770370 033352 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.formats.Conll02NameSampleStream; import opennlp.tools.formats.Conll02NameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.TokenNameFinderEvaluator; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; /** * Evaluates the name finder against the Dutch and Spanish CONLL2002 corpus. *

* Download the tarball from the CONLL2002 shared task * site * and decompress it into this directory: $OPENNLP_DATA_DIR/conll2002. * Also decompress the training files. * * TODO: * - Files are provided in gzipped. It would be better if they would not be unpacked by the user. * - Double check the encoding which is used to open the files. Currently that is UTF-8. * - Make the Conll02 reader compatible. Currently it doesn't work with spanish data without pos tags. */ public class Conll02NameFinderEval extends AbstractEvalTest { private static File dutchTrainingFile; private static File dutchTestAFile; private static File dutchTestBFile; private static File spanishTrainingFile; private static File spanishTestAFile; private static File spanishTestBFile; private TokenNameFinderModel train(File trainFile, LANGUAGE lang, TrainingParameters params, int types) throws IOException { ObjectStream samples = new Conll02NameSampleStream( lang,new MarkableFileInputStreamFactory(trainFile), types); return NameFinderME.train(lang.toString().toLowerCase(), null, samples, params, new TokenNameFinderFactory()); } private void eval(TokenNameFinderModel model, File testData, LANGUAGE lang, int types, double expectedFMeasure) throws IOException { ObjectStream samples = new Conll02NameSampleStream( lang, new MarkableFileInputStreamFactory(testData), types); TokenNameFinderEvaluator evaluator = new TokenNameFinderEvaluator(new NameFinderME(model)); evaluator.evaluate(samples); Assert.assertEquals(expectedFMeasure, evaluator.getFMeasure().getFMeasure(), 0.0001); } @BeforeClass public static void verifyTrainingData() throws Exception { dutchTrainingFile = new File(getOpennlpDataDir(), "conll02/ner/data/ned.train"); dutchTestAFile = new File(getOpennlpDataDir(), "conll02/ner/data/ned.testa"); dutchTestBFile = new File(getOpennlpDataDir(), "conll02/ner/data/ned.testb"); spanishTrainingFile = new File(getOpennlpDataDir(), "conll02/ner/data/esp.train"); spanishTestAFile = new File(getOpennlpDataDir(), "conll02/ner/data/esp.testa"); spanishTestBFile = new File(getOpennlpDataDir(), "conll02/ner/data/esp.testb"); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.NLD, new MarkableFileInputStreamFactory(dutchTrainingFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("109687424525847313767541246922170457976")); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.NLD, new MarkableFileInputStreamFactory(dutchTestAFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("12942966701628852910737840182656846323")); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.NLD, new MarkableFileInputStreamFactory(dutchTestBFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("223206987942490952427646331013509976957")); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.SPA, new MarkableFileInputStreamFactory(spanishTrainingFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("226089384066775461905386060946810714487")); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.SPA, new MarkableFileInputStreamFactory(spanishTestAFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("313879596837181728494732341737647284762")); verifyTrainingData(new Conll02NameSampleStream( LANGUAGE.SPA, new MarkableFileInputStreamFactory(spanishTestBFile), Conll02NameSampleStream.GENERATE_PERSON_ENTITIES), new BigInteger("24037715705115461166858183817622459974")); } @Test public void evalDutchPersonPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.6238361266294227d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.744312026002167d); } @Test public void evalDutchPersonMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.5696539485359361d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.7127771911298839d); } @Test public void evalDutchPersonMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.6363636363636364d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.7482403898213319d); } @Test public void evalDutchOrganizationPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.6081871345029239d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.6502808988764045d); } @Test public void evalDutchOrganizationMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.5197969543147207d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.5753228120516498d); } @Test public void evalDutchOrganizationMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.5412748171368861d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.5764966740576497d); } @Test public void evalDutchLocationPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7978609625668449d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7880434782608695d); } @Test public void evalDutchLocationMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.5451977401129944d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.680952380952381d); } @Test public void evalDutchLocationMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.6737683089214381d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7433903576982893d); } @Test public void evalDutchMiscPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.6651198762567672d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.6748166259168704d); } @Test public void evalDutchMiscMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.5831157528285466d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.5762897914379803d); } @Test public void evalDutchMiscMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.4227642276422764d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.455294863665187d); } @Test public void evalDutchCombinedPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, combinedType); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, combinedType, 0.727808326787117d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, combinedType, 0.7388253638253639d); } @Test public void evalDutchCombinedMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, combinedType); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, combinedType, 0.6673209028459275d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, combinedType, 0.6984085910208306d); } @Test public void evalDutchCombinedMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(dutchTrainingFile, LANGUAGE.NLD, params, combinedType); eval(maxentModel, dutchTestAFile, LANGUAGE.NLD, combinedType, 0.6999800915787379d); eval(maxentModel, dutchTestBFile, LANGUAGE.NLD, combinedType, 0.7101430258496261d); } @Test public void evalSpanishPersonPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.8331210191082803d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.8419705694177864d); } @Test public void evalSpanishPersonMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.686960933536276d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.8132033008252063d); } @Test public void evalSpanishPersonMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.7454634624816087d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_PERSON_ENTITIES, 0.8215339233038348d); } @Test public void evalSpanishOrganizationPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.7478819748758399d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.7715330894579315d); } @Test public void evalSpanishOrganizationMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.6982288828337874d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.7640449438202247d); } @Test public void evalSpanishOrganizationMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.6904593639575972d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES, 0.7843601895734598d); } @Test public void evalSpanishLocationPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7018867924528303d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.6315158777711205d); } @Test public void evalSpanishLocationMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7386907929749867d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.6772777167947311d); } @Test public void evalSpanishLocationMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7544565842438182d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES, 0.7005019520356944d); } @Test public void evalSpanishMiscPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.5102880658436214d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.5842696629213483d); } @Test public void evalSpanishMiscMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.40971168437025796d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.45703124999999994d); } @Test public void evalSpanishMiscMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, Conll02NameSampleStream.GENERATE_MISC_ENTITIES); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.46467817896389324d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, Conll02NameSampleStream.GENERATE_MISC_ENTITIES, 0.5020576131687243d); } @Test public void evalSpanishCombinedPerceptron() throws IOException { TrainingParameters params = createPerceptronParams(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, combinedType); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, combinedType, 0.7476700838769804d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, combinedType, 0.7692307692307693d); } @Test public void evalSpanishCombinedMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, combinedType); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, combinedType, 0.707400023454908d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, combinedType, 0.7576868829337094d); } @Test public void evalSpanishCombinedMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); int combinedType = Conll02NameSampleStream.GENERATE_PERSON_ENTITIES | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; TokenNameFinderModel maxentModel = train(spanishTrainingFile, LANGUAGE.SPA, params, combinedType); eval(maxentModel, spanishTestAFile, LANGUAGE.SPA, combinedType, 0.7455564833591795d); eval(maxentModel, spanishTestBFile, LANGUAGE.SPA, combinedType, 0.7856735159817352d); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java0100664 0001750 0001750 00000010613 14135770370 032731 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import opennlp.tools.HighMemoryUsage; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkSampleStream; import opennlp.tools.chunker.ChunkerEvaluator; import opennlp.tools.chunker.ChunkerFactory; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; /** * Evaluates the chunker against the English CONLL2000 corpus. *

* Download the train and eval gz files from the CONLL2000 shared task * site * and decompress them into this directory: $OPENNLP_DATA_DIR/conll00. */ public class Conll00ChunkerEval extends AbstractEvalTest { private static File TEST_DATA_FILE; private static File TRAIN_DATA_FILE; private static ChunkerModel train(File trainFile, TrainingParameters params) throws IOException { ObjectStream samples = new ChunkSampleStream( new PlainTextByLineStream( new MarkableFileInputStreamFactory(trainFile), StandardCharsets.UTF_8)); return ChunkerME.train("eng", samples, params, new ChunkerFactory()); } private static void eval(ChunkerModel model, File testData, double expectedFMeasure) throws IOException { ObjectStream samples = new ChunkSampleStream( new PlainTextByLineStream(new MarkableFileInputStreamFactory(testData), StandardCharsets.UTF_8)); ChunkerEvaluator evaluator = new ChunkerEvaluator(new ChunkerME(model)); evaluator.evaluate(samples); Assert.assertEquals(expectedFMeasure, evaluator.getFMeasure().getFMeasure(), 0.0001); } @BeforeClass public static void verifyTrainingData() throws Exception { TEST_DATA_FILE = new File(getOpennlpDataDir(), "conll00/test.txt"); TRAIN_DATA_FILE = new File(getOpennlpDataDir(), "conll00/train.txt"); verifyTrainingData(new ChunkSampleStream( new PlainTextByLineStream(new MarkableFileInputStreamFactory(TEST_DATA_FILE), StandardCharsets.UTF_8)), new BigInteger("84610235226433393380477662908529306002")); verifyTrainingData(new ChunkSampleStream( new PlainTextByLineStream(new MarkableFileInputStreamFactory(TEST_DATA_FILE), StandardCharsets.UTF_8)), new BigInteger("84610235226433393380477662908529306002")); } @Test public void evalEnglishPerceptron() throws IOException { ChunkerModel maxentModel = train(TRAIN_DATA_FILE, createPerceptronParams()); eval(maxentModel, TEST_DATA_FILE, 0.9295018353434714d); } @Test public void evalEnglishMaxentGis() throws IOException { ChunkerModel maxentModel = train(TRAIN_DATA_FILE, ModelUtil.createDefaultTrainingParameters()); eval(maxentModel, TEST_DATA_FILE, 0.9239687473746113d); } // Note: Don't try to run this on your MacBook @Test @Category(HighMemoryUsage.class) public void evalEnglishMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); params.put("Threads", 4); ChunkerModel maxentModel = train(TRAIN_DATA_FILE, params); eval(maxentModel, TEST_DATA_FILE, 0.9302599230947028d); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_eval_OntoNotes4Na0100644 0000000 0000000 00000000157 14135770370 032524 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4NameFinderEval.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4NameFinderEval.jav0100664 0001750 0001750 00000013054 14135770370 034010 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Map; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.formats.ontonotes.OntoNotesNameSampleStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleTypeFilter; import opennlp.tools.namefind.TokenNameFinderCrossValidator; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class OntoNotes4NameFinderEval extends AbstractEvalTest { private static ObjectStream createNameSampleStream() throws IOException { ObjectStream documentStream = new DirectorySampleStream(new File( getOpennlpDataDir(), "ontonotes4/data/files/data/english"), file -> { if (file.isFile()) { return file.getName().endsWith(".name"); } return file.isDirectory(); }, true); return new OntoNotesNameSampleStream(new FileToStringSampleStream( documentStream, StandardCharsets.UTF_8)); } private void crossEval(TrainingParameters params, String type, double expectedScore) throws IOException { try (ObjectStream samples = createNameSampleStream()) { TokenNameFinderCrossValidator cv = new TokenNameFinderCrossValidator("eng", null, params, new TokenNameFinderFactory()); ObjectStream filteredSamples; if (type != null) { filteredSamples = new NameSampleTypeFilter(new String[] {type}, samples); } else { filteredSamples = samples; } cv.evaluate(filteredSamples, 5); Assert.assertEquals(expectedScore, cv.getFMeasure().getFMeasure(), 0.001d); } } @BeforeClass public static void verifyTrainingData() throws Exception { verifyDirectoryChecksum(new File(getOpennlpDataDir(), "ontonotes4/data/files/data/english").toPath(), ".name", new BigInteger("74675117716526375898817028829433420680")); } @Test public void evalEnglishPersonNameFinder() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); crossEval(params, "person", 0.822014580552418d); } @Test public void evalEnglishDateNameFinder() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); crossEval(params, "date", 0.8043873255040994d); } @Test public void evalAllTypesNameFinder() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); crossEval(params, null, 0.8014054850253551d); } @Test public void evalAllTypesWithPOSNameFinder() throws IOException, URISyntaxException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); // load the feature generator ByteArrayOutputStream bytes = new ByteArrayOutputStream(); try (InputStream in = this.getClass().getResourceAsStream( "ner-en_pos-features.xml")) { byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { bytes.write(buf, 0, len); } } byte[] featureGen = bytes.toByteArray(); // create a temp resource folder and copy the pos model there Path resourcesPath = Files.createTempDirectory("opennlp_resources"); Files.copy(new File(getOpennlpDataDir(), "models-sf/en-pos-perceptron.bin").toPath(), new File(resourcesPath.toFile(), "en-pos-perceptron.bin").toPath(), StandardCopyOption.REPLACE_EXISTING); Map resources = TokenNameFinderTrainerTool.loadResources(resourcesPath.toFile(), Paths.get(this.getClass().getResource("ner-en_pos-features.xml").toURI()).toFile()); try (ObjectStream samples = createNameSampleStream()) { TokenNameFinderCrossValidator cv = new TokenNameFinderCrossValidator("eng", null, params, featureGen, resources); ObjectStream filteredSamples; filteredSamples = samples; cv.evaluate(filteredSamples, 5); Assert.assertEquals(0.8070226153653437d, cv.getFMeasure().getFMeasure(), 0.001d); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_eval_OntoNotes4Po0100644 0000000 0000000 00000000156 14135770370 032543 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4PosTaggerEval.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4PosTaggerEval.java0100664 0001750 0001750 00000006002 14135770370 034027 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.formats.convert.ParseToPOSSampleStream; import opennlp.tools.formats.ontonotes.DocumentToLineStream; import opennlp.tools.formats.ontonotes.OntoNotesParseSampleStream; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerCrossValidator; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class OntoNotes4PosTaggerEval extends AbstractEvalTest { private static ObjectStream createPOSSampleStream() throws IOException { ObjectStream documentStream = new DirectorySampleStream(new File( getOpennlpDataDir(), "ontonotes4/data/files/data/english"), file -> { if (file.isFile()) { return file.getName().endsWith(".parse"); } return file.isDirectory(); }, true); return new ParseToPOSSampleStream(new OntoNotesParseSampleStream( new DocumentToLineStream( new FileToStringSampleStream(documentStream, StandardCharsets.UTF_8)))); } private void crossEval(TrainingParameters params, double expectedScore) throws IOException { try (ObjectStream samples = createPOSSampleStream()) { POSTaggerCrossValidator cv = new POSTaggerCrossValidator("eng", params, new POSTaggerFactory()); cv.evaluate(samples, 5); Assert.assertEquals(expectedScore, cv.getWordAccuracy(), 0.0001d); } } @BeforeClass public static void verifyTrainingData() throws Exception { verifyTrainingData(createPOSSampleStream(), new BigInteger("300430765214895870888056958221353356972")); } @Test public void evalEnglishMaxentTagger() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); crossEval(params, 0.969345319453096d); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java0100664 0001750 0001750 00000006746 14135770370 033407 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.formats.ontonotes.DocumentToLineStream; import opennlp.tools.formats.ontonotes.OntoNotesParseSampleStream; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserCrossValidator; import opennlp.tools.parser.ParserType; import opennlp.tools.parser.lang.en.HeadRulesTest; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class OntoNotes4ParserEval extends AbstractEvalTest { private static ObjectStream createParseSampleStream() throws IOException { ObjectStream documentStream = new DirectorySampleStream(new File( getOpennlpDataDir(), "ontonotes4/data/files/data/english"), file -> { if (file.isFile()) { return file.getName().endsWith(".parse"); } return file.isDirectory(); }, true); return new OntoNotesParseSampleStream( new DocumentToLineStream(new FileToStringSampleStream( documentStream, StandardCharsets.UTF_8))); } private void crossEval(TrainingParameters params, HeadRules rules, double expectedScore) throws IOException { try (ObjectStream samples = createParseSampleStream()) { ParserCrossValidator cv = new ParserCrossValidator("eng", params, rules, ParserType.CHUNKING); cv.evaluate(samples, 5); Assert.assertEquals(expectedScore, cv.getFMeasure().getFMeasure(), 0.0001d); } } @BeforeClass public static void verifyTrainingData() throws Exception { verifyTrainingData(createParseSampleStream(), new BigInteger("83833369887442127665956850482411800415")); } @Test public void evalEnglishMaxent() throws IOException { HeadRules headRules; try (InputStream headRulesIn = HeadRulesTest.class.getResourceAsStream("/opennlp/tools/parser/en_head_rules")) { headRules = new opennlp.tools.parser.lang.en.HeadRules( new InputStreamReader(headRulesIn, StandardCharsets.UTF_8)); } TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("build.Threads", 4); params.put("tagger.Threads", 4); params.put("chunker.Threads", 4); params.put("check.Threads", 4); crossEval(params, headRules, 0.9373673649973432d); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_eval_UniversalDep0100644 0000000 0000000 00000000160 14135770370 032624 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/UniversalDependency20Eval.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/UniversalDependency20Eval.ja0100664 0001750 0001750 00000006421 14135770370 033766 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.formats.conllu.ConlluLemmaSampleStream; import opennlp.tools.formats.conllu.ConlluStream; import opennlp.tools.formats.conllu.ConlluTagset; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerEvaluator; import opennlp.tools.lemmatizer.LemmatizerFactory; import opennlp.tools.lemmatizer.LemmatizerME; import opennlp.tools.lemmatizer.LemmatizerModel; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public class UniversalDependency20Eval extends AbstractEvalTest { private static File SPA_ANCORA_TRAIN; private static File SPA_ANCORA_DEV; @BeforeClass public static void verifyTrainingData() throws Exception { SPA_ANCORA_TRAIN = new File(getOpennlpDataDir(),"ud20/UD_Spanish-AnCora/es_ancora-ud-train.conllu"); SPA_ANCORA_DEV = new File(getOpennlpDataDir(),"ud20/UD_Spanish-AnCora/es_ancora-ud-dev.conllu"); verifyFileChecksum(SPA_ANCORA_TRAIN.toPath(), new BigInteger("224942804200733453179524127037951530195")); verifyFileChecksum(SPA_ANCORA_DEV.toPath(), new BigInteger("280996187464384493180190898172297941708")); } private double trainAndEval(String lang, File trainFile, TrainingParameters params, File evalFile) throws IOException { ConlluTagset tagset = ConlluTagset.X; ObjectStream trainSamples = new ConlluLemmaSampleStream(new ConlluStream( new MarkableFileInputStreamFactory(trainFile)), tagset); LemmatizerModel model = LemmatizerME.train(lang, trainSamples, params, new LemmatizerFactory()); LemmatizerEvaluator evaluator = new LemmatizerEvaluator(new LemmatizerME(model)); evaluator.evaluate(new ConlluLemmaSampleStream(new ConlluStream( new MarkableFileInputStreamFactory(evalFile)), tagset)); return evaluator.getWordAccuracy(); } @Test public void trainAndEvalSpanishAncora() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", "4"); double wordAccuracy = trainAndEval("spa", SPA_ANCORA_TRAIN, params, SPA_ANCORA_DEV); Assert.assertEquals(0.9057341692068787d, wordAccuracy, ACCURACY_DELTA); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/ConllXPosTaggerEval.java0100664 0001750 0001750 00000021631 14135770370 033217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; import opennlp.tools.HighMemoryUsage; import opennlp.tools.formats.ConllXPOSSampleStream; import opennlp.tools.postag.POSEvaluator; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; /** * Evaluates the POS Tagger on the CONLL-X data. The CONLL-X data includes training and evaluation data for * Danish, Dutch, Portuguese and Swedish. *

* The following files are needed in the data directory to run this test: * conllx/data/danish/ddt/train/danish_ddt_train.conll
* conllx/data/danish/ddt/test/danish_ddt_test.conll
* conllx/data/dutch/alpino/train/dutch_alpino_train.conll
* conllx/data/dutch/alpino/test/dutch_alpino_test.conll
* conllx/data/portuguese/bosque/treebank/portuguese_bosque_train.conll
* conllx/data/portuguese/bosque/test/portuguese_bosque_test.conll
* conllx/data/swedish/talbanken05/train/swedish_talbanken05_train.conll
* conllx/data/swedish/talbanken05/test/swedish_talbanken05_test.conll
*

* The structure follows the structure of the CONLL-X data distribution. There is * one package for each language, and an extra package containing the tests for all * languages. */ public class ConllXPosTaggerEval extends AbstractEvalTest { private POSModel train(File trainFile, String lang, TrainingParameters params) throws IOException { ObjectStream samples = new ConllXPOSSampleStream(new MarkableFileInputStreamFactory(trainFile), StandardCharsets.UTF_8); return POSTaggerME.train(lang, samples, params, new POSTaggerFactory()); } private void eval(POSModel model, File testData, double expectedAccuracy) throws IOException { ObjectStream samples = new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(testData), StandardCharsets.UTF_8); POSEvaluator evaluator = new POSEvaluator(new POSTaggerME(model)); evaluator.evaluate(samples); Assert.assertEquals(expectedAccuracy, evaluator.getWordAccuracy(), 0.0001); } @BeforeClass public static void verifyTrainingData() throws Exception { verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/danish/ddt/train/danish_ddt_train.conll")), StandardCharsets.UTF_8), new BigInteger("30795670444498617202001550516753630016")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/danish/ddt/test/danish_ddt_test.conll")), StandardCharsets.UTF_8), new BigInteger("314104267846430512372780024568104131337")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/train/dutch_alpino_train.conll")), StandardCharsets.UTF_8), new BigInteger("109328245573060521952850454797286933887")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/test/dutch_alpino_test.conll")), StandardCharsets.UTF_8), new BigInteger("132343141132816640849897155456916243039")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/portuguese/bosque/treebank/portuguese_bosque_train.conll")), StandardCharsets.UTF_8), new BigInteger("9504382474772307801979515927230835901")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/train/swedish_talbanken05_train.conll")), StandardCharsets.UTF_8), new BigInteger("175256039869578311901318972681191182910")); verifyTrainingData(new ConllXPOSSampleStream( new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/test/swedish_talbanken05_test.conll")), StandardCharsets.UTF_8), new BigInteger("128378790384268106811747599235147991544")); } @Test public void evalDanishMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/danish/ddt/train/danish_ddt_train.conll"), "dan", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/danish/ddt/test/danish_ddt_test.conll"), 0.9504442925495558d); } @Test public void evalDanishMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/danish/ddt/train/danish_ddt_train.conll"), "dan", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/danish/ddt/test/danish_ddt_test.conll"), 0.9564251537935748d); } @Test public void evalDutchMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/train/dutch_alpino_train.conll"), "nld", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/test/dutch_alpino_test.conll"), 0.9213965980304387d); } @Test @Category(HighMemoryUsage.class) public void evalDutchMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/train/dutch_alpino_train.conll"), "nld", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/dutch/alpino/test/dutch_alpino_test.conll"), 0.9282005371530886d); } @Test public void evalPortugueseMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/portuguese/bosque/treebank/portuguese_bosque_train.conll"), "por", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/portuguese/bosque/test/portuguese_bosque_test.conll"), 0.9671041418101244d); } @Test public void evalPortugueseMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/portuguese/bosque/treebank/portuguese_bosque_train.conll"), "por", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/portuguese/bosque/test/portuguese_bosque_test.conll"), 0.9662519175046872d); } @Test public void evalSwedishMaxentGis() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/train/swedish_talbanken05_train.conll"), "swe", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/test/swedish_talbanken05_test.conll"), 0.9248585572842999d); } @Test public void evalSwedishMaxentQn() throws IOException { TrainingParameters params = createMaxentQnParams(); POSModel maxentModel = train(new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/train/swedish_talbanken05_train.conll"), "swe", params); eval(maxentModel, new File(getOpennlpDataDir(), "conllx/data/swedish/talbanken05/test/swedish_talbanken05_test.conll"), 0.9377652050919377d); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/SourceForgeModelEval.java0100664 0001750 0001750 00000034054 14135770370 033413 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.chunker.Chunker; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.cmdline.parser.ParserTool; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.parser.Parse; import opennlp.tools.parser.Parser; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTagger; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; /** * This tests ensures that the existing SourceForge models perform * like they are expected to. *

* To run this tests external the leipzig sentences files is needed: * leipzig/eng_news_2010_300K-sentences.txt, this file can be * obtained from the leipzig corpus project.
*

* And all the SourceForge models:
* - models-sf/en-sent.bin
* - models-sf/en-token.bin
* - models-sf/en-ner-date.bin
* - models-sf/en-ner-location.binn
* - models-sf/en-ner-money.bin
* - models-sf/en-ner-organization.bin
* - models-sf/en-ner-percentage.bi
* - models-sf/en-ner-person.bin
* - models-sf/en-ner-time.bin
* - models-sf/en-chunker.bin
* - models-sf/en-pos-maxent.bin
* - models-sf/en-pos-perceptron.bin
* - models-sf/en-parser-chunking.bin.bin
*/ public class SourceForgeModelEval extends AbstractEvalTest { private static class LeipzigTestSample { private final List text; private LeipzigTestSample(String[] text) { Objects.requireNonNull(text, "text must not be null"); this.text = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(text))); } public String[] getText() { return text.toArray(new String[text.size()]); } @Override public String toString() { StringBuilder sampleString = new StringBuilder("eng"); sampleString.append('\t'); for (String s : text) { sampleString.append(s).append(' '); } if (sampleString.length() > 0) { // remove last space sampleString.setLength(sampleString.length() - 1); } return sampleString.toString(); } } private static class LeipzigTestSampleStream extends FilterObjectStream { private final int sentencePerDocument; private final Tokenizer tokenizer; private LeipzigTestSampleStream(int sentencePerDocument, Tokenizer tokenizer, InputStreamFactory in) throws IOException { super(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); this.sentencePerDocument = sentencePerDocument; this.tokenizer = tokenizer; } @Override public LeipzigTestSample read() throws IOException { int count = 0; List tokensList = new ArrayList<>(); String line; while (count < sentencePerDocument && (line = samples.read()) != null) { String[] tokens = tokenizer.tokenize(line); if (tokens.length == 0) { throw new IOException("Empty lines are not allowed!"); } // Always skip first token, that is the sentence number! tokensList.addAll(Arrays.asList(tokens).subList(1, tokens.length)); count++; } if (tokensList.size() > 0) { return new LeipzigTestSample(tokensList.toArray(new String[tokensList.size()])); } return null; } } @BeforeClass public static void verifyTrainingData() throws Exception { verifyTrainingData(new LeipzigTestSampleStream(25, SimpleTokenizer.INSTANCE, new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "leipzig/eng_news_2010_300K-sentences.txt"))), new BigInteger("172812413483919324675263268750583851712")); } @Test public void evalSentenceModel() throws Exception { SentenceModel model = new SentenceModel( new File(getOpennlpDataDir(), "models-sf/en-sent.bin")); MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); SentenceDetector sentenceDetector = new SentenceDetectorME(model); StringBuilder text = new StringBuilder(); try (ObjectStream lineBatches = new LeipzigTestSampleStream(25, SimpleTokenizer.INSTANCE, new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "leipzig/eng_news_2010_300K-sentences.txt")))) { LeipzigTestSample lineBatch; while ((lineBatch = lineBatches.read()) != null) { text.append(String.join(" ", lineBatch.getText())).append(" "); } } String[] sentences = sentenceDetector.sentDetect(text.toString()); for (String sentence : sentences) { digest.update(sentence.getBytes(StandardCharsets.UTF_8)); } Assert.assertEquals(new BigInteger("228544068397077998410949364710969159291"), new BigInteger(1, digest.digest())); } @Test public void evalTokenModel() throws Exception { // the input stream is currently tokenized, we should detokenize it again, // (or extend to pass in tokenizer, then whitespace tokenizer can be passed) // and then tokenize it here TokenizerModel model = new TokenizerModel( new File(getOpennlpDataDir(), "models-sf/en-token.bin")); MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); Tokenizer tokenizer = new TokenizerME(model); try (ObjectStream lines = new LeipzigTestSampleStream(1, WhitespaceTokenizer.INSTANCE, new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "leipzig/eng_news_2010_300K-sentences.txt")))) { LeipzigTestSample line; while ((line = lines.read()) != null) { String[] tokens = tokenizer.tokenize(String.join(" ", line.getText())); for (String token : tokens) { digest.update(token.getBytes(StandardCharsets.UTF_8)); } } } Assert.assertEquals(new BigInteger("180602607571756839321060482558626151930"), new BigInteger(1, digest.digest())); } private ObjectStream createLineWiseStream() throws IOException { return new LeipzigTestSampleStream(1, SimpleTokenizer.INSTANCE, new MarkableFileInputStreamFactory(new File(getOpennlpDataDir(), "leipzig/eng_news_2010_300K-sentences.txt"))); } private void evalNameFinder(TokenNameFinderModel model, BigInteger expectedHash) throws Exception { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); TokenNameFinder nameFinder = new NameFinderME(model); try (ObjectStream lines = createLineWiseStream()) { LeipzigTestSample line; while ((line = lines.read()) != null) { Span[] names = nameFinder.find(line.getText()); for (Span name : names) { digest.update((name.getType() + name.getStart() + name.getEnd()).getBytes(StandardCharsets.UTF_8)); } } } Assert.assertEquals(expectedHash, new BigInteger(1, digest.digest())); } @Test public void evalNerDateModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-date.bin")); evalNameFinder(personModel, new BigInteger("116570003910213570906062355532299200317")); } @Test public void evalNerLocationModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-location.bin")); evalNameFinder(personModel, new BigInteger("44810593886021404716125849669208680993")); } @Test public void evalNerMoneyModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-money.bin")); evalNameFinder(personModel, new BigInteger("65248897509365807977219790824670047287")); } @Test public void evalNerOrganizationModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-organization.bin")); evalNameFinder(personModel, new BigInteger("50454559690338630659278005157657197233")); } @Test public void evalNerPercentageModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-percentage.bin")); evalNameFinder(personModel, new BigInteger("320996882594215344113023719117249515343")); } @Test public void evalNerPersonModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-person.bin")); evalNameFinder(personModel, new BigInteger("143619582249937129618340838626447763744")); } @Test public void evalNerTimeModel() throws Exception { TokenNameFinderModel personModel = new TokenNameFinderModel( new File(getOpennlpDataDir(), "models-sf/en-ner-time.bin")); evalNameFinder(personModel, new BigInteger("282941772380683328816791801782579055940")); } @Test public void evalChunkerModel() throws Exception { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); POSTagger tagger = new POSTaggerME(new POSModel( new File(getOpennlpDataDir(), "models-sf/en-pos-perceptron.bin"))); Chunker chunker = new ChunkerME(new ChunkerModel( new File(getOpennlpDataDir(), "models-sf/en-chunker.bin"))); try (ObjectStream lines = createLineWiseStream()) { LeipzigTestSample line; while ((line = lines.read()) != null) { POSSample sentence = new POSSample(line.getText(), tagger.tag(line.getText())); String[] chunks = chunker.chunk(sentence.getSentence(), sentence.getTags()); for (String chunk : chunks) { digest.update(chunk.getBytes(StandardCharsets.UTF_8)); } } } Assert.assertEquals(new BigInteger("226003515785585284478071030961407561943"), new BigInteger(1, digest.digest())); } private void evalPosModel(POSModel model, BigInteger expectedHash) throws Exception { // break the input stream into sentences // The input stream is tokenized and can be processed here directly MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); POSTagger tagger = new POSTaggerME(model); try (ObjectStream lines = createLineWiseStream()) { LeipzigTestSample line; while ((line = lines.read()) != null) { String[] tags = tagger.tag(line.getText()); for (String tag : tags) { digest.update(tag.getBytes(StandardCharsets.UTF_8)); } } } Assert.assertEquals(expectedHash, new BigInteger(1, digest.digest())); } @Test public void evalMaxentModel() throws Exception { POSModel maxentModel = new POSModel( new File(getOpennlpDataDir(), "models-sf/en-pos-maxent.bin")); evalPosModel(maxentModel, new BigInteger("231995214522232523777090597594904492687")); } @Test public void evalPerceptronModel() throws Exception { POSModel perceptronModel = new POSModel( new File(getOpennlpDataDir(), "models-sf/en-pos-perceptron.bin")); evalPosModel(perceptronModel, new BigInteger("209440430718727101220960491543652921728")); } @Test public void evalParserModel() throws Exception { ParserModel model = new ParserModel( new File(getOpennlpDataDir(), "models-sf/en-parser-chunking.bin")); MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); Parser parser = ParserFactory.create(model); try (ObjectStream lines = createLineWiseStream()) { LeipzigTestSample line; while ((line = lines.read()) != null) { Parse[] parse = ParserTool.parseLine(String.join(" ", line.getText()), parser, 1); if (parse.length > 0) { StringBuffer sb = new StringBuffer(); parse[0].show(sb); digest.update(sb.toString().getBytes(StandardCharsets.UTF_8)); } else { digest.update("empty".getBytes(StandardCharsets.UTF_8)); } } } Assert.assertEquals(new BigInteger("68039262350771988792233880373220954061"), new BigInteger(1, digest.digest())); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java0100664 0001750 0001750 00000020005 14135770370 033256 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.chunker.ChunkerCrossValidator; import opennlp.tools.chunker.ChunkerFactory; import opennlp.tools.formats.ad.ADChunkSampleStream; import opennlp.tools.formats.ad.ADNameSampleStream; import opennlp.tools.formats.ad.ADSentenceSampleStream; import opennlp.tools.formats.convert.NameToTokenSampleStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.SDCrossValidator; import opennlp.tools.sentdetect.SentenceDetectorFactory; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.tokenize.DetokenizationDictionary; import opennlp.tools.tokenize.DictionaryDetokenizer; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerCrossValidator; import opennlp.tools.tokenize.TokenizerFactory; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; /** * Cross validation of Sentence Detector, Tokenizer and Chunker against the * Portugues corpus. *

* Download the gz files from the Floresta Sintactica project site and * decompress it into this directory: $OPENNLP_DATA_DIR/ad. *

*/ public class ArvoresDeitadasEval extends AbstractEvalTest { private static final String BOSQUE = "ad/Bosque_CF_8.0.ad.txt"; private static final String FLORESTA_VIRGEM = "ad/FlorestaVirgem_CF_3.0_ad.txt"; private static final String LANG = "por"; private static ObjectStream getLineSample(String corpus) throws IOException { return new PlainTextByLineStream(new MarkableFileInputStreamFactory( new File(getOpennlpDataDir(), corpus)), StandardCharsets.ISO_8859_1); } @BeforeClass public static void verifyTrainingData() throws Exception { verifyTrainingData(new ADSentenceSampleStream(getLineSample(BOSQUE), false), new BigInteger("140568367548727787313497336739085858596")); verifyTrainingData(new ADSentenceSampleStream(getLineSample(FLORESTA_VIRGEM), false), new BigInteger("2614161133949079191933514776652602918")); } private void sentenceCrossEval(TrainingParameters params, double expectedScore) throws IOException { ADSentenceSampleStream samples = new ADSentenceSampleStream( getLineSample(FLORESTA_VIRGEM), false); SDCrossValidator cv = new SDCrossValidator(LANG, params, new SentenceDetectorFactory(LANG, true, null, new Factory().getEOSCharacters(LANG))); cv.evaluate(samples, 10); System.out.println(cv.getFMeasure()); Assert.assertEquals(expectedScore, cv.getFMeasure().getFMeasure(), 0.0001d); } private void tokenizerCrossEval(TrainingParameters params, double expectedScore) throws IOException { ObjectStream nameSamples = new ADNameSampleStream( getLineSample(FLORESTA_VIRGEM), true); DictionaryDetokenizer detokenizer = new DictionaryDetokenizer( new DetokenizationDictionary(new File("lang/pt/tokenizer/pt-detokenizer.xml"))); ObjectStream samples = new NameToTokenSampleStream( detokenizer, nameSamples); TokenizerCrossValidator validator; TokenizerFactory tokFactory = TokenizerFactory.create(null, LANG, null, true, null); validator = new opennlp.tools.tokenize.TokenizerCrossValidator(params, tokFactory); validator.evaluate(samples, 10); System.out.println(validator.getFMeasure()); Assert.assertEquals(expectedScore, validator.getFMeasure().getFMeasure(), 0.0001d); } private void chunkerCrossEval(TrainingParameters params, double expectedScore) throws IOException { ADChunkSampleStream samples = new ADChunkSampleStream(getLineSample(BOSQUE)); ChunkerCrossValidator cv = new ChunkerCrossValidator(LANG, params, new ChunkerFactory()); cv.evaluate(samples, 10); Assert.assertEquals(expectedScore, cv.getFMeasure().getFMeasure(), 0.0001d); } @Test public void evalPortugueseSentenceDetectorPerceptron() throws IOException { sentenceCrossEval(createPerceptronParams(), 0.9892778840089301d); } @Test public void evalPortugueseSentenceDetectorGis() throws IOException { sentenceCrossEval(ModelUtil.createDefaultTrainingParameters(), 0.987270070655111d); } @Test public void evalPortugueseSentenceDetectorMaxentQn() throws IOException { sentenceCrossEval(createMaxentQnParams(), 0.9924715809679968d); } @Test public void evalPortugueseSentenceDetectorNaiveBayes() throws IOException { sentenceCrossEval(createNaiveBayesParams(), 0.9672196206048099d); } @Test public void evalPortugueseTokenizerPerceptron() throws IOException { tokenizerCrossEval(createPerceptronParams(), 0.9994887308380267d); } @Test public void evalPortugueseTokenizerGis() throws IOException { tokenizerCrossEval(ModelUtil.createDefaultTrainingParameters(), 0.9992539405481062d); } @Test public void evalPortugueseTokenizerMaxentQn() throws IOException { tokenizerCrossEval(createMaxentQnParams(), 0.9996017148748251d); } @Test public void evalPortugueseTokenizerNaiveBayes() throws IOException { tokenizerCrossEval(createNaiveBayesParams(), 0.9962358244502717d); } @Test public void evalPortugueseTokenizerMaxentQnMultipleThreads() throws IOException { TrainingParameters params = createMaxentQnParams(); params.put("Threads", 4); tokenizerCrossEval(params, 0.9996017148748251d); } @Test public void evalPortugueseChunkerPerceptron() throws IOException { chunkerCrossEval(createPerceptronParams(), 0.9638122825015589d); } @Test public void evalPortugueseChunkerGis() throws IOException { chunkerCrossEval(ModelUtil.createDefaultTrainingParameters(), 0.9573860781121228d); } @Test public void evalPortugueseChunkerGisMultipleThreads() throws IOException { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put("Threads", 4); chunkerCrossEval(params, 0.9573860781121228d); } @Test public void evalPortugueseChunkerQn() throws IOException { chunkerCrossEval(createMaxentQnParams(), 0.9648211936491359d); } @Test public void evalPortugueseChunkerQnMultipleThreads() throws IOException { TrainingParameters params = createMaxentQnParams(); params.put("Threads", 4); // NOTE: Should be the same as without multiple threads!!! chunkerCrossEval(params, 0.9649180953528779d); } @Test public void evalPortugueseChunkerNaiveBayes() throws IOException { chunkerCrossEval(createNaiveBayesParams(), 0.9041507736043933d); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/eval/AbstractEvalTest.java0100664 0001750 0001750 00000011252 14135770370 032605 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.eval; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.security.MessageDigest; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import org.junit.Assert; import opennlp.tools.ml.maxent.quasinewton.QNTrainer; import opennlp.tools.ml.naivebayes.NaiveBayesTrainer; import opennlp.tools.ml.perceptron.PerceptronTrainer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.StringUtil; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; public abstract class AbstractEvalTest { public static final double ACCURACY_DELTA = 0.0001d; public static final String HASH_ALGORITHM = "MD5"; public static void verifyTrainingData(ObjectStream samples, BigInteger checksum) throws Exception { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); Object sample; while ((sample = samples.read()) != null) { digest.update(sample.toString().getBytes(StandardCharsets.UTF_8)); } samples.close(); Assert.assertEquals(checksum, new BigInteger(1, digest.digest())); } public static void verifyFileChecksum(Path file, BigInteger checksum) throws Exception { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); try (InputStream in = Files.newInputStream(file)) { byte[] buf = new byte[65536]; int len; while ((len = in.read(buf)) > 0) { digest.update(buf, 0, len); } } Assert.assertEquals(checksum, new BigInteger(1, digest.digest())); } public static void verifyDirectoryChecksum(Path path, String extension, BigInteger checksum) throws Exception { MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM); final List paths = Files.walk(path) .filter(Files::isRegularFile) .filter(p -> p.toString().endsWith(extension)) .collect(Collectors.toList()); // Ensure the paths are in a consistent order when // verifying the file checksums. Collections.sort(paths); for (Path p : paths) { try (InputStream in = Files.newInputStream(p)) { byte[] buf = new byte[65536]; int len; while ((len = in.read(buf)) > 0) { digest.update(buf, 0, len); } } } Assert.assertEquals(checksum, new BigInteger(1, digest.digest())); } public static File getOpennlpDataDir() throws FileNotFoundException { final String dataDirectory = System.getProperty("OPENNLP_DATA_DIR"); if (StringUtil.isEmpty(dataDirectory)) { throw new IllegalArgumentException("The OPENNLP_DATA_DIR is not set."); } final File file = new File(System.getProperty("OPENNLP_DATA_DIR")); if (!file.exists()) { throw new FileNotFoundException("The OPENNLP_DATA_DIR path of " + dataDirectory + " was not found."); } return file; } public TrainingParameters createPerceptronParams() { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); params.put(TrainingParameters.CUTOFF_PARAM, 0); return params; } public TrainingParameters createMaxentQnParams() { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, QNTrainer.MAXENT_QN_VALUE); params.put(TrainingParameters.CUTOFF_PARAM, 0); return params; } public TrainingParameters createNaiveBayesParams() { TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, NaiveBayesTrainer.NAIVE_BAYES_VALUE); params.put(TrainingParameters.CUTOFF_PARAM, 5); return params; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_convert_FileToStr0100644 0000000 0000000 00000000166 14135770370 032635 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/convert/FileToStringSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/convert/FileToStringSampleStreamT0100664 0001750 0001750 00000004270 14135770370 034220 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.convert; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import java.util.Arrays; import java.util.List; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; public class FileToStringSampleStreamTest { @Rule public TemporaryFolder directory = new TemporaryFolder(); @Test public void readFileTest() throws IOException { final String sentence1 = "This is a sentence."; final String sentence2 = "This is another sentence."; List sentences = Arrays.asList(sentence1, sentence2); DirectorySampleStream directorySampleStream = new DirectorySampleStream(directory.getRoot(), null, false); File tempFile1 = directory.newFile(); FileUtils.writeStringToFile(tempFile1, sentence1); File tempFile2 = directory.newFile(); FileUtils.writeStringToFile(tempFile2, sentence2); try (FileToStringSampleStream stream = new FileToStringSampleStream(directorySampleStream, Charset.defaultCharset())) { String read = stream.read(); Assert.assertTrue(sentences.contains(read)); read = stream.read(); Assert.assertTrue(sentences.contains(read)); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_dictionary_Dictio0100644 0000000 0000000 00000000177 14135770370 032664 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryAsSetCaseInsensitiveTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryAsSetCaseIns0100664 0001750 0001750 00000011667 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.StringList; public class DictionaryAsSetCaseInsensitiveTest { private Dictionary getDict() { return new Dictionary(false); } private StringList asSL(String str) { return new StringList(str); } /** * Tests a basic lookup. */ @Test public void testLookup() { String a = "a"; String b = "b"; Dictionary dict = getDict(); dict.put(asSL(a)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertFalse(set.contains(b)); Assert.assertTrue(set.contains(a.toUpperCase())); } /** * Tests set. */ @Test public void testSet() { String a = "a"; String a1 = "a"; Dictionary dict = getDict(); dict.put(asSL(a)); dict.put(asSL(a1)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertEquals(1, set.size()); } /** * Tests set. */ @Test public void testSetDiffCase() { String a = "a"; String a1 = "A"; Dictionary dict = getDict(); dict.put(asSL(a)); dict.put(asSL(a1)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertEquals(1, set.size()); } /** * Tests for the {@link Dictionary#equals(Object)} method. */ @Test public void testEquals() { String entry1 = "1a"; String entry2 = "1b"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); dictA.put(asSL(entry2)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1)); dictB.put(asSL(entry2)); Set setB = dictB.asStringSet(); Assert.assertTrue(setA.equals(setB)); } /** * Tests for the {@link Dictionary#equals(Object)} method. */ @Test public void testEqualsDifferentCase() { Dictionary dictA = getDict(); dictA.put(asSL("1a")); dictA.put(asSL("1b")); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL("1A")); dictB.put(asSL("1B")); Set setB = dictB.asStringSet(); Assert.assertTrue(setA.equals(setB)); } /** * Tests the {@link Dictionary#hashCode()} method. */ @Test public void testHashCode() { String entry1 = "a1"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1)); Set setB = dictB.asStringSet(); Assert.assertEquals(setA.hashCode(), setB.hashCode()); } /** * Tests the {@link Dictionary#hashCode()} method. */ @Test public void testHashCodeDifferentCase() { String entry1 = "a1"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1.toUpperCase())); Set setB = dictB.asStringSet(); // TODO: should it be equal?? Assert.assertNotSame(setA.hashCode(), setB.hashCode()); } /** * Tests the lookup of tokens of different case. */ @Test public void testDifferentCaseLookup() { String entry1 = "1a"; String entry2 = "1A"; // create a case sensitive dictionary Dictionary dict = getDict(); dict.put(asSL(entry1)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(entry2)); } /** * Tests the iterator implementation */ @Test public void testIterator() { String entry1 = "1a"; String entry2 = "1b"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); dictA.put(asSL(entry2)); dictA.put(asSL(entry1.toUpperCase())); dictA.put(asSL(entry2.toUpperCase())); Iterator it = dictA.asStringSet().iterator(); List elements = new ArrayList<>(); while (it.hasNext()) { elements.add(it.next()); } Assert.assertEquals(2, elements.size()); Assert.assertTrue(elements.contains(entry1)); Assert.assertTrue(elements.contains(entry2)); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryTest.java0100664 0001750 0001750 00000013641 14135770370 033561 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.StringReader; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; /** * Tests for the {@link Dictionary} class. */ public class DictionaryTest { /** * @return a case sensitive Dictionary */ private Dictionary getCaseSensitive() { return new Dictionary(true); } /** * @return a case insensitive Dictionary */ private Dictionary getCaseInsensitive() { return new Dictionary(false); } /** * Tests a basic lookup. */ @Test public void testLookup() { StringList entry1 = new StringList("1a", "1b"); StringList entry1u = new StringList("1A", "1B"); StringList entry2 = new StringList("1A", "1C"); Dictionary dict = getCaseInsensitive(); dict.put(entry1); Assert.assertTrue(dict.contains(entry1)); Assert.assertTrue(dict.contains(entry1u)); Assert.assertTrue(!dict.contains(entry2)); } /** * Test lookup with case sensitive dictionary */ @Test public void testLookupCaseSensitive() { StringList entry1 = new StringList("1a", "1b"); StringList entry1u = new StringList("1A", "1B"); StringList entry2 = new StringList("1A", "1C"); Dictionary dict = getCaseSensitive(); dict.put(entry1); Assert.assertTrue(dict.contains(entry1)); Assert.assertTrue(!dict.contains(entry1u)); Assert.assertTrue(!dict.contains(entry2)); } /** * Tests serialization and deserailization of the {@link Dictionary}. * * @throws IOException * @throws InvalidFormatException */ @Test public void testSerialization() throws IOException { Dictionary reference = getCaseInsensitive(); String a1 = "a1"; String a2 = "a2"; String a3 = "a3"; String a5 = "a5"; reference.put(new StringList(a1, a2, a3, a5)); ByteArrayOutputStream out = new ByteArrayOutputStream(); reference.serialize(out); Dictionary recreated = new Dictionary( new ByteArrayInputStream(out.toByteArray())); Assert.assertTrue(reference.equals(recreated)); } /** * Tests for the {@link Dictionary#parseOneEntryPerLine(java.io.Reader)} * method. * * @throws IOException */ @Test public void testParseOneEntryPerLine() throws IOException { String testDictionary = "1a 1b 1c 1d \n 2a 2b 2c \n 3a \n 4a 4b "; Dictionary dictionay = Dictionary.parseOneEntryPerLine(new StringReader(testDictionary)); Assert.assertTrue(dictionay.size() == 4); Assert.assertTrue(dictionay.contains(new StringList("1a", "1b", "1c", "1d"))); Assert.assertTrue(dictionay.contains(new StringList("2a", "2b", "2c"))); Assert.assertTrue(dictionay.contains(new StringList(new String[]{"3a"}))); Assert.assertTrue(dictionay.contains(new StringList("4a", "4b"))); } /** * Tests for the {@link Dictionary#equals(Object)} method. */ @Test public void testEquals() { StringList entry1 = new StringList("1a", "1b"); StringList entry2 = new StringList("2a", "2b"); Dictionary dictA = getCaseInsensitive(); dictA.put(entry1); dictA.put(entry2); Dictionary dictB = getCaseInsensitive(); dictB.put(entry1); dictB.put(entry2); Dictionary dictC = getCaseSensitive(); dictC.put(entry1); dictC.put(entry2); Assert.assertTrue(dictA.equals(dictB)); Assert.assertTrue(dictC.equals(dictA)); Assert.assertTrue(dictB.equals(dictC)); } /** * Tests the {@link Dictionary#hashCode()} method. */ @Test public void testHashCode() { StringList entry1 = new StringList("1a", "1b"); StringList entry2 = new StringList("1A", "1B"); Dictionary dictA = getCaseInsensitive(); dictA.put(entry1); Dictionary dictB = getCaseInsensitive(); dictB.put(entry2); Dictionary dictC = getCaseSensitive(); dictC.put(entry1); Dictionary dictD = getCaseSensitive(); dictD.put(entry2); Assert.assertEquals(dictA.hashCode(), dictB.hashCode()); Assert.assertEquals(dictB.hashCode(), dictC.hashCode()); Assert.assertEquals(dictC.hashCode(), dictD.hashCode()); } /** * Tests for the {@link Dictionary#toString()} method. */ @Test public void testToString() { StringList entry1 = new StringList("1a", "1b"); Dictionary dictA = getCaseInsensitive(); dictA.toString(); dictA.put(entry1); dictA.toString(); } /** * Tests the lookup of tokens of different case. */ @Test public void testDifferentCaseLookup() { StringList entry1 = new StringList("1a", "1b"); StringList entry2 = new StringList("1A", "1B"); Dictionary dict = getCaseInsensitive(); dict.put(entry1); Assert.assertTrue(dict.contains(entry2)); } /** * Tests the lookup of tokens of different case. */ @Test public void testDifferentCaseLookupCaseSensitive() { StringList entry1 = new StringList("1a", "1b"); StringList entry2 = new StringList("1A", "1B"); Dictionary dict = getCaseSensitive(); dict.put(entry1); Assert.assertTrue(!dict.contains(entry2)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_dictionary_Dictio0100644 0000000 0000000 00000000175 14135770370 032662 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryAsSetCaseSensitiveTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/dictionary/DictionaryAsSetCaseSen0100664 0001750 0001750 00000012250 14135770370 034176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.StringList; public class DictionaryAsSetCaseSensitiveTest { private Dictionary getDict() { return new Dictionary(true); } private StringList asSL(String str) { return new StringList(str); } /** * Tests a basic lookup. */ @Test public void testLookup() { String a = "a"; String b = "b"; Dictionary dict = getDict(); dict.put(asSL(a)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertFalse(set.contains(b)); Assert.assertFalse(set.contains(a.toUpperCase())); } /** * Tests set. */ @Test public void testSet() { String a = "a"; String a1 = "a"; Dictionary dict = getDict(); dict.put(asSL(a)); dict.put(asSL(a1)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertEquals(1, set.size()); } /** * Tests set. */ @Test public void testSetDiffCase() { String a = "a"; String a1 = "A"; Dictionary dict = getDict(); dict.put(asSL(a)); dict.put(asSL(a1)); Set set = dict.asStringSet(); Assert.assertTrue(set.contains(a)); Assert.assertEquals(2, set.size()); } /** * Tests for the {@link Dictionary#equals(Object)} method. */ @Test public void testEquals() { String entry1 = "1a"; String entry2 = "1b"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); dictA.put(asSL(entry2)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1)); dictB.put(asSL(entry2)); Set setB = dictB.asStringSet(); Assert.assertTrue(setA.equals(setB)); } /** * Tests for the {@link Dictionary#equals(Object)} method. */ @Test public void testEqualsDifferentCase() { Dictionary dictA = getDict(); dictA.put(asSL("1a")); dictA.put(asSL("1b")); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL("1A")); dictB.put(asSL("1B")); Set setB = dictB.asStringSet(); // should fail in case sensitive dict Assert.assertFalse(setA.equals(setB)); } /** * Tests the {@link Dictionary#hashCode()} method. */ @Test public void testHashCode() { String entry1 = "a1"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1)); Set setB = dictB.asStringSet(); Assert.assertEquals(setA.hashCode(), setB.hashCode()); } /** * Tests the {@link Dictionary#hashCode()} method. */ @Test public void testHashCodeDifferentCase() { String entry1 = "a1"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); Set setA = dictA.asStringSet(); Dictionary dictB = getDict(); dictB.put(asSL(entry1.toUpperCase())); Set setB = dictB.asStringSet(); // TODO: should it be equal?? Assert.assertNotSame(setA.hashCode(), setB.hashCode()); } /** * Tests the lookup of tokens of different case. */ @Test public void testDifferentCaseLookup() { String entry1 = "1a"; String entry2 = "1A"; // create a case sensitive dictionary Dictionary dict = getDict(); dict.put(asSL(entry1)); Set set = dict.asStringSet(); // should return false because 1a != 1A in a case sensitive lookup Assert.assertFalse(set.contains(entry2)); } /** * Tests the iterator implementation */ @Test public void testIterator() { String entry1 = "1a"; String entry2 = "1b"; Dictionary dictA = getDict(); dictA.put(asSL(entry1)); dictA.put(asSL(entry2)); dictA.put(asSL(entry1.toUpperCase())); dictA.put(asSL(entry2.toUpperCase())); Iterator it = dictA.asStringSet().iterator(); List elements = new ArrayList<>(); while (it.hasNext()) { elements.add(it.next()); } Assert.assertEquals(4, elements.size()); Assert.assertTrue(elements.contains(entry1)); Assert.assertTrue(elements.contains(entry2)); Assert.assertTrue(elements.contains(entry1.toUpperCase())); Assert.assertTrue(elements.contains(entry2.toUpperCase())); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000162 14135770370 032555 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.0100664 0001750 0001750 00000006175 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.IOException; import java.util.Set; import java.util.SortedMap; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.TrainingParameters; public class DocumentCategorizerMETest { @Test public void testSimpleTraining() throws IOException { ObjectStream samples = ObjectStreamUtils.createObjectStream( new DocumentSample("1", new String[]{"a", "b", "c"}), new DocumentSample("1", new String[]{"a", "b", "c", "1", "2"}), new DocumentSample("1", new String[]{"a", "b", "c", "3", "4"}), new DocumentSample("0", new String[]{"x", "y", "z"}), new DocumentSample("0", new String[]{"x", "y", "z", "5", "6"}), new DocumentSample("0", new String[]{"x", "y", "z", "7", "8"})); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 0); DoccatModel model = DocumentCategorizerME.train("x-unspecified", samples, params, new DoccatFactory()); DocumentCategorizer doccat = new DocumentCategorizerME(model); double[] aProbs = doccat.categorize(new String[]{"a"}); Assert.assertEquals("1", doccat.getBestCategory(aProbs)); double[] bProbs = doccat.categorize(new String[]{"x"}); Assert.assertEquals("0", doccat.getBestCategory(bProbs)); //test to make sure sorted map's last key is cat 1 because it has the highest score. SortedMap> sortedScoreMap = doccat.sortedScoreMap(new String[]{"a"}); Set cat = sortedScoreMap.get(sortedScoreMap.lastKey()); Assert.assertEquals(1, cat.size()); } @Test(expected = InsufficientTrainingDataException.class) public void insufficientTestData() throws IOException { ObjectStream samples = ObjectStreamUtils.createObjectStream( new DocumentSample("1", new String[]{"a", "b", "c"})); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 0); DocumentCategorizerME.train("x-unspecified", samples, params, new DoccatFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_doccat_BagOfWords0100644 0000000 0000000 00000000167 14135770370 032535 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/BagOfWordsFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/BagOfWordsFeatureGenerator0100664 0001750 0001750 00000004246 14135770370 034145 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Collections; import org.junit.Assert; import org.junit.Test; public class BagOfWordsFeatureGeneratorTest { @Test public void testNull() { BagOfWordsFeatureGenerator generator = new BagOfWordsFeatureGenerator(); try { generator.extractFeatures(null, Collections.emptyMap()); Assert.fail("NullPointerException must be thrown"); } catch (NullPointerException expected) { } } @Test public void testEmpty() { BagOfWordsFeatureGenerator generator = new BagOfWordsFeatureGenerator(); Assert.assertEquals(0, generator.extractFeatures(new String[]{}, Collections.emptyMap()).size()); } @Test public void testUseAllTokens() { BagOfWordsFeatureGenerator generator = new BagOfWordsFeatureGenerator(); Assert.assertArrayEquals(new String[]{"bow=it", "bow=is", "bow=12.345", "bow=feet", "bow=long"}, generator.extractFeatures(new String[]{"it", "is", "12.345", "feet", "long"}, Collections.emptyMap()).toArray()); } @Test public void testOnlyLetterTokens() { BagOfWordsFeatureGenerator generator = new BagOfWordsFeatureGenerator(true); Assert.assertArrayEquals(new String[]{"bow=it", "bow=is", "bow=feet", "bow=long"}, generator.extractFeatures(new String[]{"it", "is", "12.345", "feet", "long"}, Collections.emptyMap()).toArray()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DoccatFactoryTest.java0100664 0001750 0001750 00000007267 14135770370 033300 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; /** * Tests for the {@link DoccatFactory} class. */ public class DoccatFactoryTest { private static ObjectStream createSampleStream() throws IOException { InputStreamFactory isf = new ResourceAsStreamFactory( DoccatFactoryTest.class, "/opennlp/tools/doccat/DoccatSample.txt"); return new DocumentSampleStream(new PlainTextByLineStream(isf, StandardCharsets.UTF_8)); } private static DoccatModel train() throws IOException { return DocumentCategorizerME.train("x-unspecified", createSampleStream(), TrainingParameters.defaultParams(), new DoccatFactory()); } private static DoccatModel train(DoccatFactory factory) throws IOException { return DocumentCategorizerME.train("x-unspecified", createSampleStream(), TrainingParameters.defaultParams(), factory); } @Test public void testDefault() throws IOException { DoccatModel model = train(); Assert.assertNotNull(model); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DoccatModel fromSerialized = new DoccatModel(in); DoccatFactory factory = fromSerialized.getFactory(); Assert.assertNotNull(factory); Assert.assertEquals(1, factory.getFeatureGenerators().length); Assert.assertEquals(BagOfWordsFeatureGenerator.class, factory.getFeatureGenerators()[0].getClass()); } @Test public void testCustom() throws IOException { FeatureGenerator[] featureGenerators = { new BagOfWordsFeatureGenerator(), new NGramFeatureGenerator(), new NGramFeatureGenerator(2,3) }; DoccatFactory factory = new DoccatFactory(featureGenerators); DoccatModel model = train(factory); Assert.assertNotNull(model); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DoccatModel fromSerialized = new DoccatModel(in); factory = fromSerialized.getFactory(); Assert.assertNotNull(factory); Assert.assertEquals(3, factory.getFeatureGenerators().length); Assert.assertEquals(BagOfWordsFeatureGenerator.class, factory.getFeatureGenerators()[0].getClass()); Assert.assertEquals(NGramFeatureGenerator.class, factory.getFeatureGenerators()[1].getClass()); Assert.assertEquals(NGramFeatureGenerator.class,factory.getFeatureGenerators()[2].getClass()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000162 14135770370 032555 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.0100664 0001750 0001750 00000005326 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.IOException; import java.util.Set; import java.util.SortedMap; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.ml.naivebayes.NaiveBayesTrainer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; import opennlp.tools.util.TrainingParameters; public class DocumentCategorizerNBTest { @Test public void testSimpleTraining() throws IOException { ObjectStream samples = ObjectStreamUtils.createObjectStream( new DocumentSample("1", new String[]{"a", "b", "c"}), new DocumentSample("1", new String[]{"a", "b", "c", "1", "2"}), new DocumentSample("1", new String[]{"a", "b", "c", "3", "4"}), new DocumentSample("0", new String[]{"x", "y", "z"}), new DocumentSample("0", new String[]{"x", "y", "z", "5", "6"}), new DocumentSample("0", new String[]{"x", "y", "z", "7", "8"})); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 100); params.put(TrainingParameters.CUTOFF_PARAM, 0); params.put(AbstractTrainer.ALGORITHM_PARAM, NaiveBayesTrainer.NAIVE_BAYES_VALUE); DoccatModel model = DocumentCategorizerME.train("x-unspecified", samples, params, new DoccatFactory()); DocumentCategorizer doccat = new DocumentCategorizerME(model); double[] aProbs = doccat.categorize(new String[]{"a"}); Assert.assertEquals("1", doccat.getBestCategory(aProbs)); double[] bProbs = doccat.categorize(new String[]{"x"}); Assert.assertEquals("0", doccat.getBestCategory(bProbs)); //test to make sure sorted map's last key is cat 1 because it has the highest score. SortedMap> sortedScoreMap = doccat.sortedScoreMap(new String[]{"a"}); Set cat = sortedScoreMap.get(sortedScoreMap.lastKey()); Assert.assertEquals(1, cat.size()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_doccat_NGramFeatu0100644 0000000 0000000 00000000162 14135770370 032524 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/NGramFeatureGeneratorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/NGramFeatureGeneratorTest.0100664 0001750 0001750 00000010103 14135770370 034057 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.InvalidFormatException; public class NGramFeatureGeneratorTest { static final String[] TOKENS = new String[]{"a", "b", "c", "d", "e", "f", "g"}; @Test public void testNull() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(); try { generator.extractFeatures(null, Collections.emptyMap()); Assert.fail("NullPointerException must be thrown"); } catch (NullPointerException expected) { } } @Test public void testEmpty() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(); Assert.assertEquals(0, generator.extractFeatures(new String[]{}, Collections.emptyMap()).size()); } @Test public void testInvalidGramSize1() { try { new NGramFeatureGenerator(0, 1); Assert.fail("InvalidFormatException must be thrown"); } catch (InvalidFormatException expected) { } } @Test public void testInvalidGramSize2() { try { new NGramFeatureGenerator(2, 1); Assert.fail("InvalidFormatException must be thrown"); } catch (InvalidFormatException expected) { } } @Test public void testUnigram() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(1, 1); Assert.assertArrayEquals( new String[]{"ng=:a", "ng=:b", "ng=:c", "ng=:d", "ng=:e", "ng=:f", "ng=:g"}, generator.extractFeatures(TOKENS, Collections.emptyMap()).toArray()); } @Test public void testBigram() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(2, 2); Assert.assertArrayEquals( new String[]{"ng=:a:b", "ng=:b:c", "ng=:c:d", "ng=:d:e", "ng=:e:f", "ng=:f:g"}, generator.extractFeatures(TOKENS, Collections.emptyMap()).toArray()); } @Test public void testTrigram() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(3, 3); Assert.assertArrayEquals( new String[]{"ng=:a:b:c", "ng=:b:c:d", "ng=:c:d:e", "ng=:d:e:f", "ng=:e:f:g"}, generator.extractFeatures(TOKENS, Collections.emptyMap()).toArray()); } @Test public void test12gram() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(1, 2); Assert.assertArrayEquals( new String[]{ "ng=:a", "ng=:a:b", "ng=:b", "ng=:b:c", "ng=:c", "ng=:c:d", "ng=:d", "ng=:d:e", "ng=:e", "ng=:e:f", "ng=:f", "ng=:f:g", "ng=:g" }, generator.extractFeatures(TOKENS, Collections.emptyMap()).toArray()); } @Test public void test13gram() throws Exception { NGramFeatureGenerator generator = new NGramFeatureGenerator(1, 3); Assert.assertArrayEquals( new String[]{ "ng=:a", "ng=:a:b", "ng=:a:b:c", "ng=:b", "ng=:b:c", "ng=:b:c:d", "ng=:c", "ng=:c:d", "ng=:c:d:e", "ng=:d", "ng=:d:e", "ng=:d:e:f", "ng=:e", "ng=:e:f", "ng=:e:f:g", "ng=:f", "ng=:f:g", "ng=:g" }, generator.extractFeatures(TOKENS, Collections.emptyMap()).toArray()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentSampleTest.java0100664 0001750 0001750 00000005271 14135770370 033464 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import org.junit.Assert; import org.junit.Test; public class DocumentSampleTest { @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } @Test public void testDocumentSampleSerDe() throws IOException { DocumentSample documentSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(documentSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); DocumentSample deSerializedDocumentSample = null; try { deSerializedDocumentSample = (DocumentSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedDocumentSample); Assert.assertEquals(documentSample.getCategory(), deSerializedDocumentSample.getCategory()); Assert.assertArrayEquals(documentSample.getText(), deSerializedDocumentSample.getText()); } public static DocumentSample createGoldSample() { return new DocumentSample("aCategory", new String[]{"a", "small", "text"}); } public static DocumentSample createPredSample() { return new DocumentSample("anotherCategory", new String[]{"a", "small", "text"}); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_chunker_ChunkSamp0100644 0000000 0000000 00000000157 14135770370 032632 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleStreamTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleStreamTest.jav0100664 0001750 0001750 00000006155 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.MockInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class ChunkSampleStreamTest { @Test public void testReadingEvents() throws IOException { String sample = "word11 tag11 pred11" + '\n' + "word12 tag12 pred12" + '\n' + "word13 tag13 pred13" + '\n' + '\n' + "word21 tag21 pred21" + '\n' + "word22 tag22 pred22" + '\n' + "word23 tag23 pred23" + '\n'; // First sample sentence // Start next sample sentence // Second sample sentence ObjectStream stringStream = new PlainTextByLineStream( new MockInputStreamFactory(sample), StandardCharsets.UTF_8); ObjectStream chunkStream = new ChunkSampleStream(stringStream); // read first sample ChunkSample firstSample = chunkStream.read(); Assert.assertEquals("word11", firstSample.getSentence()[0]); Assert.assertEquals("tag11", firstSample.getTags()[0]); Assert.assertEquals("pred11", firstSample.getPreds()[0]); Assert.assertEquals("word12", firstSample.getSentence()[1]); Assert.assertEquals("tag12", firstSample.getTags()[1]); Assert.assertEquals("pred12", firstSample.getPreds()[1]); Assert.assertEquals("word13", firstSample.getSentence()[2]); Assert.assertEquals("tag13", firstSample.getTags()[2]); Assert.assertEquals("pred13", firstSample.getPreds()[2]); // read second sample ChunkSample secondSample = chunkStream.read(); Assert.assertEquals("word21", secondSample.getSentence()[0]); Assert.assertEquals("tag21", secondSample.getTags()[0]); Assert.assertEquals("pred21", secondSample.getPreds()[0]); Assert.assertEquals("word22", secondSample.getSentence()[1]); Assert.assertEquals("tag22", secondSample.getTags()[1]); Assert.assertEquals("pred22", secondSample.getPreds()[1]); Assert.assertEquals("word23", secondSample.getSentence()[2]); Assert.assertEquals("tag23", secondSample.getTags()[2]); Assert.assertEquals("pred23", secondSample.getPreds()[2]); Assert.assertNull(chunkStream.read()); chunkStream.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunker.java0100664 0001750 0001750 00000005470 14135770370 032522 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.util.Arrays; import java.util.List; import opennlp.tools.util.Sequence; import opennlp.tools.util.Span; /** * This dummy chunker implementation reads a file formatted as described at * ] to * simulate a Chunker. The file has samples of sentences, with target and * predicted values. */ public class DummyChunker implements Chunker { private DummyChunkSampleStream mSampleStream; public DummyChunker(DummyChunkSampleStream aSampleStream) { mSampleStream = aSampleStream; } public List chunk(List toks, List tags) { return Arrays.asList(chunk(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]))); } public String[] chunk(String[] toks, String[] tags) { try { ChunkSample predsSample = mSampleStream.read(); // checks if the streams are sync for (int i = 0; i < toks.length; i++) { if (!toks[i].equals(predsSample.getSentence()[i]) || !tags[i].equals(predsSample.getTags()[i])) { throw new RuntimeException("The streams are not sync!" + "\n expected sentence: " + Arrays.toString(toks) + "\n expected tags: " + Arrays.toString(tags) + "\n predicted sentence: " + Arrays.toString(predsSample.getSentence()) + "\n predicted tags: " + Arrays.toString(predsSample.getTags())); } } return predsSample.getPreds(); } catch (IOException e) { throw new RuntimeException(e); } } public Sequence[] topKSequences(List sentence, List tags) { return null; } public Sequence[] topKSequences(String[] sentence, String[] tags, double minSequenceScore) { return null; } public Span[] chunkAsSpans(String[] toks, String[] tags) { return null; } public Sequence[] topKSequences(String[] sentence, String[] tags) { return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkerFactory.java0100664 0001750 0001750 00000003343 14135770370 034047 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.TokenTag; public class DummyChunkerFactory extends ChunkerFactory { public DummyChunkerFactory() { } @Override public ChunkerContextGenerator getContextGenerator() { return new DummyContextGenerator(); } @Override public SequenceValidator getSequenceValidator() { return new DummySequenceValidator(); } static class DummyContextGenerator extends DefaultChunkerContextGenerator { @Override public String[] getContext(int i, String[] toks, String[] tags, String[] preds) { return super.getContext(i, toks, tags, preds); } } static class DummySequenceValidator extends DefaultChunkerSequenceValidator { @Override public boolean validSequence(int i, TokenTag[] sequence, String[] s, String outcome) { return super.validSequence(i, sequence, s, outcome); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleTest.java0100664 0001750 0001750 00000023212 14135770370 033153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.StringReader; import java.nio.charset.StandardCharsets; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public class ChunkSampleTest { private static String[] createSentence() { return new String[] { "Forecasts", "for", "the", "trade", "figures", "range", "widely", ",", "Forecasts", "for", "the", "trade", "figures", "range", "widely", "." }; } private static String[] createTags() { return new String[] { "NNS", "IN", "DT", "NN", "NNS", "VBP", "RB", ",", "NNS", "IN", "DT", "NN", "NNS", "VBP", "RB", "." }; } private static String[] createChunks() { return new String[] { "B-NP", "B-PP", "B-NP", "I-NP", "I-NP", "B-VP", "B-ADVP", "O", "B-NP", "B-PP", "B-NP", "I-NP", "I-NP", "B-VP", "B-ADVP", "O" }; } public static ChunkSample createGoldSample() { return new ChunkSample(createSentence(), createTags(), createChunks()); } public static ChunkSample createPredSample() { String[] chunks = createChunks(); chunks[5] = "B-NP"; return new ChunkSample(createSentence(), createTags(), chunks); } @Test public void testChunkSampleSerDe() throws IOException { ChunkSample chunkSample = createGoldSample(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream); out.writeObject(chunkSample); out.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream); ChunkSample deSerializedChunkSample = null; try { deSerializedChunkSample = (ChunkSample) objectInput.readObject(); } catch (ClassNotFoundException e) { // do nothing } Assert.assertNotNull(deSerializedChunkSample); Assert.assertArrayEquals(chunkSample.getPhrasesAsSpanList(), deSerializedChunkSample.getPhrasesAsSpanList()); Assert.assertArrayEquals(chunkSample.getPreds(), deSerializedChunkSample.getPreds()); Assert.assertArrayEquals(chunkSample.getTags(), deSerializedChunkSample.getTags()); Assert.assertArrayEquals(chunkSample.getSentence(), deSerializedChunkSample.getSentence()); Assert.assertEquals(chunkSample, deSerializedChunkSample); } @Test(expected = IllegalArgumentException.class) public void testParameterValidation() { new ChunkSample(new String[] {""}, new String[] {""}, new String[] {"test", "one element to much"}); } @Test public void testRetrievingContent() { ChunkSample sample = new ChunkSample(createSentence(), createTags(), createChunks()); Assert.assertArrayEquals(createSentence(), sample.getSentence()); Assert.assertArrayEquals(createTags(), sample.getTags()); Assert.assertArrayEquals(createChunks(), sample.getPreds()); } @Test public void testToString() throws IOException { ChunkSample sample = new ChunkSample(createSentence(), createTags(), createChunks()); String[] sentence = createSentence(); String[] tags = createTags(); String[] chunks = createChunks(); StringReader sr = new StringReader(sample.toString()); BufferedReader reader = new BufferedReader(sr); for (int i = 0; i < sentence.length; i++) { String line = reader.readLine(); String[] parts = line.split("\\s+"); Assert.assertEquals(3, parts.length); Assert.assertEquals(sentence[i], parts[0]); Assert.assertEquals(tags[i], parts[1]); Assert.assertEquals(chunks[i], parts[2]); } } @Test public void testNicePrint() { ChunkSample sample = new ChunkSample(createSentence(), createTags(), createChunks()); Assert.assertEquals(" [NP Forecasts_NNS ] [PP for_IN ] [NP the_DT trade_NN figures_NNS ] " + "[VP range_VBP ] [ADVP widely_RB ] ,_, [NP Forecasts_NNS ] [PP for_IN ] " + "[NP the_DT trade_NN figures_NNS ] " + "[VP range_VBP ] [ADVP widely_RB ] ._.", sample.nicePrint()); } @Test public void testAsSpan() { ChunkSample sample = new ChunkSample(createSentence(), createTags(), createChunks()); Span[] spans = sample.getPhrasesAsSpanList(); Assert.assertEquals(10, spans.length); Assert.assertEquals(new Span(0, 1, "NP"), spans[0]); Assert.assertEquals(new Span(1, 2, "PP"), spans[1]); Assert.assertEquals(new Span(2, 5, "NP"), spans[2]); Assert.assertEquals(new Span(5, 6, "VP"), spans[3]); Assert.assertEquals(new Span(6, 7, "ADVP"), spans[4]); Assert.assertEquals(new Span(8, 9, "NP"), spans[5]); Assert.assertEquals(new Span(9, 10, "PP"), spans[6]); Assert.assertEquals(new Span(10, 13, "NP"), spans[7]); Assert.assertEquals(new Span(13, 14, "VP"), spans[8]); Assert.assertEquals(new Span(14, 15, "ADVP"), spans[9]); } // following are some tests to check the argument validation. Since all uses // the same validateArguments method, we do a deeper test only once @Test public void testPhraseAsSpan() { Span[] spans = ChunkSample.phrasesAsSpanList(createSentence(), createTags(), createChunks()); Assert.assertEquals(10, spans.length); Assert.assertEquals(new Span(0, 1, "NP"), spans[0]); Assert.assertEquals(new Span(1, 2, "PP"), spans[1]); Assert.assertEquals(new Span(2, 5, "NP"), spans[2]); Assert.assertEquals(new Span(5, 6, "VP"), spans[3]); Assert.assertEquals(new Span(6, 7, "ADVP"), spans[4]); Assert.assertEquals(new Span(8, 9, "NP"), spans[5]); Assert.assertEquals(new Span(9, 10, "PP"), spans[6]); Assert.assertEquals(new Span(10, 13, "NP"), spans[7]); Assert.assertEquals(new Span(13, 14, "VP"), spans[8]); Assert.assertEquals(new Span(14, 15, "ADVP"), spans[9]); } @Test public void testRegions() throws IOException { InputStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/output.txt"); DummyChunkSampleStream predictedSample = new DummyChunkSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8), false); ChunkSample cs1 = predictedSample.read(); String[] g1 = Span.spansToStrings(cs1.getPhrasesAsSpanList(), cs1.getSentence()); Assert.assertEquals(15, g1.length); ChunkSample cs2 = predictedSample.read(); String[] g2 = Span.spansToStrings(cs2.getPhrasesAsSpanList(), cs2.getSentence()); Assert.assertEquals(10, g2.length); ChunkSample cs3 = predictedSample.read(); String[] g3 = Span.spansToStrings(cs3.getPhrasesAsSpanList(), cs3.getSentence()); Assert.assertEquals(7, g3.length); Assert.assertEquals("United", g3[0]); Assert.assertEquals("'s directors", g3[1]); Assert.assertEquals("voted", g3[2]); Assert.assertEquals("themselves", g3[3]); Assert.assertEquals("their spouses", g3[4]); Assert.assertEquals("lifetime access", g3[5]); Assert.assertEquals("to", g3[6]); predictedSample.close(); } @Test(expected = IllegalArgumentException.class) public void testInvalidPhraseAsSpan1() { ChunkSample.phrasesAsSpanList(new String[2], new String[1], new String[1]); } @Test(expected = IllegalArgumentException.class) public void testInvalidPhraseAsSpan2() { ChunkSample.phrasesAsSpanList(new String[1], new String[2], new String[1]); } @Test(expected = IllegalArgumentException.class) public void testInvalidPhraseAsSpan3() { ChunkSample.phrasesAsSpanList(new String[1], new String[1], new String[2]); } @Test(expected = IllegalArgumentException.class) public void testInvalidChunkSampleArray() { new ChunkSample(new String[1], new String[1], new String[2]); } @Test(expected = IllegalArgumentException.class) public void testInvalidChunkSampleList() { new ChunkSample(Arrays.asList(new String[1]), Arrays.asList(new String[1]), Arrays.asList(new String[2])); } @Test public void testEquals() { Assert.assertFalse(createGoldSample() == createGoldSample()); Assert.assertTrue(createGoldSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(createGoldSample())); Assert.assertFalse(createPredSample().equals(new Object())); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_chunker_DummyChun0100644 0000000 0000000 00000000160 14135770370 032644 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/DummyChunkSampleStream.ja0100664 0001750 0001750 00000005724 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * This dummy chunk sample stream reads a file formatted as described at * ] and * can be used together with DummyChunker simulate a chunker. */ public class DummyChunkSampleStream extends FilterObjectStream { private boolean mIsPredicted; private int count = 0; // the predicted flag sets if the stream will contain the expected or the // predicted tags. public DummyChunkSampleStream(ObjectStream samples, boolean isPredicted) { super(samples); mIsPredicted = isPredicted; } /** * Returns a pair representing the expected and the predicted at 0: the * chunk tag according to the corpus at 1: the chunk tag predicted * * @see opennlp.tools.util.ObjectStream#read() */ public ChunkSample read() throws IOException { List toks = new ArrayList<>(); List posTags = new ArrayList<>(); List chunkTags = new ArrayList<>(); List predictedChunkTags = new ArrayList<>(); for (String line = samples.read(); line != null && !line.equals(""); line = samples .read()) { String[] parts = line.split(" "); if (parts.length != 4) { System.err.println("Skipping corrupt line " + count + ": " + line); } else { toks.add(parts[0]); posTags.add(parts[1]); chunkTags.add(parts[2]); predictedChunkTags.add(parts[3]); } count++; } if (toks.size() > 0) { if (mIsPredicted) { return new ChunkSample(toks.toArray(new String[toks.size()]), posTags.toArray(new String[posTags.size()]), predictedChunkTags .toArray(new String[predictedChunkTags.size()])); } else return new ChunkSample(toks.toArray(new String[toks.size()]), posTags.toArray(new String[posTags.size()]), chunkTags.toArray(new String[chunkTags.size()])); } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java0100664 0001750 0001750 00000013016 14135770370 032563 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Arrays; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * This is the test class for {@link NameFinderME}. *

* A proper testing and evaluation of the name finder is only possible with a * large corpus which contains a huge amount of test sentences. *

* The scope of this test is to make sure that the name finder code can be * executed. This test can not detect mistakes which lead to incorrect feature * generation or other mistakes which decrease the tagging performance of the * name finder. *

* In this test the {@link NameFinderME} is trained with a small amount of * training sentences and then the computed model is used to predict sentences * from the training sentences. */ public class ChunkerMETest { private Chunker chunker; private static String[] toks1 = { "Rockwell", "said", "the", "agreement", "calls", "for", "it", "to", "supply", "200", "additional", "so-called", "shipsets", "for", "the", "planes", "." }; private static String[] tags1 = { "NNP", "VBD", "DT", "NN", "VBZ", "IN", "PRP", "TO", "VB", "CD", "JJ", "JJ", "NNS", "IN", "DT", "NNS", "." }; private static String[] expect1 = { "B-NP", "B-VP", "B-NP", "I-NP", "B-VP", "B-SBAR", "B-NP", "B-VP", "I-VP", "B-NP", "I-NP", "I-NP", "I-NP", "B-PP", "B-NP", "I-NP", "O" }; @Before public void startup() throws IOException { // train the chunker ResourceAsStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/test.txt"); ObjectStream sampleStream = new ChunkSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); ChunkerModel chunkerModel = ChunkerME.train("eng", sampleStream, params, new ChunkerFactory()); this.chunker = new ChunkerME(chunkerModel); } @Test public void testChunkAsArray() throws Exception { String[] preds = chunker.chunk(toks1, tags1); Assert.assertArrayEquals(expect1, preds); } @Test public void testChunkAsSpan() throws Exception { Span[] preds = chunker.chunkAsSpans(toks1, tags1); System.out.println(Arrays.toString(preds)); Assert.assertEquals(10, preds.length); Assert.assertEquals(new Span(0, 1, "NP"), preds[0]); Assert.assertEquals(new Span(1, 2, "VP"), preds[1]); Assert.assertEquals(new Span(2, 4, "NP"), preds[2]); Assert.assertEquals(new Span(4, 5, "VP"), preds[3]); Assert.assertEquals(new Span(5, 6, "SBAR"), preds[4]); Assert.assertEquals(new Span(6, 7, "NP"), preds[5]); Assert.assertEquals(new Span(7, 9, "VP"), preds[6]); Assert.assertEquals(new Span(9, 13, "NP"), preds[7]); Assert.assertEquals(new Span(13, 14, "PP"), preds[8]); Assert.assertEquals(new Span(14, 16, "NP"), preds[9]); } @Test public void testTokenProbArray() throws Exception { Sequence[] preds = chunker.topKSequences(toks1, tags1); Assert.assertTrue(preds.length > 0); Assert.assertEquals(expect1.length, preds[0].getProbs().length); Assert.assertEquals(Arrays.asList(expect1), preds[0].getOutcomes()); Assert.assertNotSame(Arrays.asList(expect1), preds[1].getOutcomes()); } @Test public void testTokenProbMinScore() throws Exception { Sequence[] preds = chunker.topKSequences(toks1, tags1, -5.55); Assert.assertEquals(4, preds.length); Assert.assertEquals(expect1.length, preds[0].getProbs().length); Assert.assertEquals(Arrays.asList(expect1), preds[0].getOutcomes()); Assert.assertNotSame(Arrays.asList(expect1), preds[1].getOutcomes()); } @Test(expected = InsufficientTrainingDataException.class) public void testInsufficientData() throws IOException { ResourceAsStreamFactory in = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/test-insufficient.txt"); ObjectStream sampleStream = new ChunkSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); ChunkerME.train("eng", sampleStream, params, new ChunkerFactory()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerModelTest.java0100664 0001750 0001750 00000003563 14135770370 033330 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import org.junit.Assert; import org.junit.Test; /** * This is the test class for {@link ChunkerModel}. */ public class ChunkerModelTest { @Test public void testInvalidFactorySignature() throws Exception { ChunkerModel model = null; try { model = new ChunkerModel(this.getClass().getResourceAsStream("chunker170custom.bin")); } catch (IllegalArgumentException e) { Assert.assertTrue("Exception must state ChunkerFactory", e.getMessage().contains("ChunkerFactory")); Assert.assertTrue("Exception must mention DummyChunkerFactory", e.getMessage().contains("opennlp.tools.chunker.DummyChunkerFactory")); } Assert.assertNull(model); } @Test public void test170DefaultFactory() throws Exception { Assert.assertNotNull( new ChunkerModel(this.getClass().getResourceAsStream("chunker170default.bin"))); } @Test public void test180CustomFactory() throws Exception { Assert.assertNotNull( new ChunkerModel(this.getClass().getResourceAsStream("chunker180custom.bin"))); } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerFactoryTest.java0100664 0001750 0001750 00000007775 14135770370 033710 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelType; /** * Tests for the {@link ChunkerFactory} class. */ public class ChunkerFactoryTest { private static ObjectStream createSampleStream() throws IOException { ResourceAsStreamFactory in = new ResourceAsStreamFactory( ChunkerFactoryTest.class, "/opennlp/tools/chunker/test.txt"); return new ChunkSampleStream( new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } private static ChunkerModel trainModel(ModelType type, ChunkerFactory factory) throws IOException { return ChunkerME.train("eng", createSampleStream(), TrainingParameters.defaultParams(), factory); } @Test public void testDefaultFactory() throws IOException { ChunkerModel model = trainModel(ModelType.MAXENT, new ChunkerFactory()); ChunkerFactory factory = model.getFactory(); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultChunkerContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DefaultChunkerSequenceValidator); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); ChunkerModel fromSerialized = new ChunkerModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultChunkerContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DefaultChunkerSequenceValidator); } @Test public void testDummyFactory() throws IOException { ChunkerModel model = trainModel(ModelType.MAXENT, new DummyChunkerFactory()); DummyChunkerFactory factory = (DummyChunkerFactory) model.getFactory(); Assert.assertTrue(factory.getContextGenerator() instanceof DummyChunkerFactory.DummyContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DummyChunkerFactory.DummySequenceValidator); ByteArrayOutputStream out = new ByteArrayOutputStream(); model.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); ChunkerModel fromSerialized = new ChunkerModel(in); factory = (DummyChunkerFactory) fromSerialized.getFactory(); Assert.assertTrue(factory.getContextGenerator() instanceof DefaultChunkerContextGenerator); Assert.assertTrue(factory.getSequenceValidator() instanceof DefaultChunkerSequenceValidator); ChunkerME chunker = new ChunkerME(model); String[] toks1 = {"Rockwell", "said", "the", "agreement", "calls", "for", "it", "to", "supply", "200", "additional", "so-called", "shipsets", "for", "the", "planes", "."}; String[] tags1 = {"NNP", "VBD", "DT", "NN", "VBZ", "IN", "PRP", "TO", "VB", "CD", "JJ", "JJ", "NNS", "IN", "DT", "NNS", "."}; chunker.chunk(toks1, tags1); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_chunker_ChunkerDe0100644 0000000 0000000 00000000175 14135770370 032611 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerDetailedFMeasureListenerTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerDetailedFMeasureLi0100664 0001750 0001750 00000005323 14135770370 034134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Locale; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.chunker.ChunkerDetailedFMeasureListener; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.PlainTextByLineStream; public class ChunkerDetailedFMeasureListenerTest { @Test public void testEvaluator() throws IOException { ResourceAsStreamFactory inPredicted = new ResourceAsStreamFactory( getClass(), "/opennlp/tools/chunker/output.txt"); ResourceAsStreamFactory inExpected = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/output.txt"); ResourceAsStreamFactory detailedOutputStream = new ResourceAsStreamFactory( getClass(), "/opennlp/tools/chunker/detailedOutput.txt"); DummyChunkSampleStream predictedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inPredicted, StandardCharsets.UTF_8), true); DummyChunkSampleStream expectedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inExpected, StandardCharsets.UTF_8), false); Chunker dummyChunker = new DummyChunker(predictedSample); ChunkerDetailedFMeasureListener listener = new ChunkerDetailedFMeasureListener(); ChunkerEvaluator evaluator = new ChunkerEvaluator(dummyChunker, listener); evaluator.evaluate(expectedSample); StringBuilder expected = new StringBuilder(); BufferedReader reader = new BufferedReader( new InputStreamReader(detailedOutputStream.createInputStream(), StandardCharsets.UTF_8)); String line = reader.readLine(); while (line != null) { expected.append(line); expected.append("\n"); line = reader.readLine(); } Assert.assertEquals(expected.toString().trim(), listener.createReport(Locale.ENGLISH).trim()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_chunker_ChunkerEv0100644 0000000 0000000 00000000156 14135770370 032632 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerEvaluatorTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerEvaluatorTest.java0100664 0001750 0001750 00000007774 14135770370 034242 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import org.junit.Assert; import org.junit.Test; import opennlp.tools.cmdline.chunker.ChunkEvaluationErrorListener; import opennlp.tools.formats.ResourceAsStreamFactory; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.eval.FMeasure; /** * Tests for {@link ChunkerEvaluator}. * * @see ChunkerEvaluator */ public class ChunkerEvaluatorTest { private static final double DELTA = 1.0E-9d; /** * Checks the evaluator results against the results got using the conlleval, * available at http://www.cnts.ua.ac.be/conll2000/chunking/output.html * The output.txt file has only 3 sentences, but can be replaced by the one * available at the conll2000 site to validate using a bigger sample. * * @throws IOException */ @Test public void testEvaluator() throws IOException { ResourceAsStreamFactory inPredicted = new ResourceAsStreamFactory( getClass(), "/opennlp/tools/chunker/output.txt"); ResourceAsStreamFactory inExpected = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/output.txt"); DummyChunkSampleStream predictedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inPredicted, StandardCharsets.UTF_8), true); DummyChunkSampleStream expectedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inExpected, StandardCharsets.UTF_8), false); Chunker dummyChunker = new DummyChunker(predictedSample); OutputStream stream = new ByteArrayOutputStream(); ChunkerEvaluationMonitor listener = new ChunkEvaluationErrorListener(stream); ChunkerEvaluator evaluator = new ChunkerEvaluator(dummyChunker, listener); evaluator.evaluate(expectedSample); FMeasure fm = evaluator.getFMeasure(); Assert.assertEquals(0.8d, fm.getPrecisionScore(), DELTA); Assert.assertEquals(0.875d, fm.getRecallScore(), DELTA); Assert.assertNotSame(stream.toString().length(), 0); } @Test public void testEvaluatorNoError() throws IOException { ResourceAsStreamFactory inPredicted = new ResourceAsStreamFactory( getClass(), "/opennlp/tools/chunker/output.txt"); ResourceAsStreamFactory inExpected = new ResourceAsStreamFactory(getClass(), "/opennlp/tools/chunker/output.txt"); DummyChunkSampleStream predictedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inPredicted, StandardCharsets.UTF_8), true); DummyChunkSampleStream expectedSample = new DummyChunkSampleStream( new PlainTextByLineStream(inExpected, StandardCharsets.UTF_8), true); Chunker dummyChunker = new DummyChunker(predictedSample); OutputStream stream = new ByteArrayOutputStream(); ChunkerEvaluationMonitor listener = new ChunkEvaluationErrorListener( stream); ChunkerEvaluator evaluator = new ChunkerEvaluator(dummyChunker, listener); evaluator.evaluate(expectedSample); FMeasure fm = evaluator.getFMeasure(); Assert.assertEquals(1d, fm.getPrecisionScore(), DELTA); Assert.assertEquals(1d, fm.getRecallScore(), DELTA); Assert.assertEquals(stream.toString().length(), 0); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_languagemodel_Lan0100644 0000000 0000000 00000000173 14135770370 032616 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/LanguageModelEvaluationTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/LanguageModelEvalua0100664 0001750 0001750 00000004412 14135770370 034171 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.languagemodel; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import opennlp.tools.util.StringList; /** * Tests for evaluating accuracy of language models */ public class LanguageModelEvaluationTest { @Test public void testPerplexityComparison() throws Exception { Collection trainingVocabulary = LanguageModelTestUtils.generateRandomVocabulary(1100000); Collection testVocabulary = LanguageModelTestUtils.generateRandomVocabulary(100); NGramLanguageModel unigramLM = new NGramLanguageModel(1); for (String[] sentence : trainingVocabulary) { unigramLM.add(new StringList(sentence), 1, 1); } double unigramPerplexity = LanguageModelTestUtils.getPerplexity(unigramLM, testVocabulary, 1); NGramLanguageModel bigramLM = new NGramLanguageModel(2); for (String[] sentence : trainingVocabulary) { bigramLM.add(new StringList(sentence), 1, 2); } double bigramPerplexity = LanguageModelTestUtils.getPerplexity(bigramLM, testVocabulary, 2); Assert.assertTrue(unigramPerplexity >= bigramPerplexity); NGramLanguageModel trigramLM = new NGramLanguageModel(3); for (String[] sentence : trainingVocabulary) { trigramLM.add(new StringList(sentence), 1, 3); } double trigramPerplexity = LanguageModelTestUtils.getPerplexity(trigramLM, testVocabulary, 3); Assert.assertTrue(bigramPerplexity >= trigramPerplexity); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_languagemodel_Ngr0100644 0000000 0000000 00000000166 14135770370 032634 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/NgramLanguageModelTest.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/NgramLanguageModelT0100664 0001750 0001750 00000015167 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.languagemodel; import java.io.InputStream; import java.util.Arrays; import java.util.List; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Test; import opennlp.tools.ngram.NGramGenerator; /** * Tests for {@link opennlp.tools.languagemodel.NGramLanguageModel} */ public class NgramLanguageModelTest { @Test public void testEmptyVocabularyProbability() { NGramLanguageModel model = new NGramLanguageModel(); Assert.assertEquals("probability with an empty vocabulary is always 0", 0d, model.calculateProbability(""), 0d); Assert.assertEquals("probability with an empty vocabulary is always 0", 0d, model.calculateProbability("1", "2", "3"), 0d); } @Test public void testRandomVocabularyAndSentence() { NGramLanguageModel model = new NGramLanguageModel(); for (String[] sentence : LanguageModelTestUtils.generateRandomVocabulary(10)) { model.add(sentence); } double probability = model.calculateProbability(LanguageModelTestUtils.generateRandomSentence()); Assert.assertTrue("a probability measure should be between 0 and 1 [was " + probability + "]", probability >= 0 && probability <= 1); } @Test public void testNgramModel() { NGramLanguageModel model = new NGramLanguageModel(4); model.add("I", "saw", "the", "fox"); model.add("the", "red", "house"); model.add("I", "saw", "something", "nice"); double probability = model.calculateProbability("I", "saw", "the", "red", "house"); Assert.assertTrue("a probability measure should be between 0 and 1 [was " + probability + "]", probability >= 0 && probability <= 1); String[] tokens = model.predictNextTokens("I", "saw"); Assert.assertNotNull(tokens); Assert.assertArrayEquals(new String[] {"the", "fox"}, tokens); } @Test public void testBigramProbability() { NGramLanguageModel model = new NGramLanguageModel(2); model.add("", "I", "am", "Sam", ""); model.add("", "Sam", "I", "am", ""); model.add("", "I", "do", "not", "like", "green", "eggs", "and", "ham", ""); double probability = model.calculateProbability("", "I"); Assert.assertEquals(0.666d, probability, 0.001); probability = model.calculateProbability("Sam", ""); Assert.assertEquals(0.5d, probability, 0.001); probability = model.calculateProbability("", "Sam"); Assert.assertEquals(0.333d, probability, 0.001); probability = model.calculateProbability("am", "Sam"); Assert.assertEquals(0.5d, probability, 0.001); probability = model.calculateProbability("I", "am"); Assert.assertEquals(0.666d, probability, 0.001); probability = model.calculateProbability("I", "do"); Assert.assertEquals(0.333d, probability, 0.001); probability = model.calculateProbability("I", "am", "Sam"); Assert.assertEquals(0.333d, probability, 0.001); } @Test public void testTrigram() { NGramLanguageModel model = new NGramLanguageModel(3); model.add("I", "see", "the", "fox"); model.add("the", "red", "house"); model.add("I", "saw", "something", "nice"); double probability = model.calculateProbability("I", "saw", "the", "red", "house"); Assert.assertTrue("a probability measure should be between 0 and 1 [was " + probability + "]", probability >= 0 && probability <= 1); String[] tokens = model.predictNextTokens("I", "saw"); Assert.assertNotNull(tokens); Assert.assertArrayEquals(new String[] {"something"}, tokens); } @Test public void testBigram() { NGramLanguageModel model = new NGramLanguageModel(2); model.add("I", "see", "the", "fox"); model.add("the", "red", "house"); model.add("I", "saw", "something", "nice"); double probability = model.calculateProbability("I", "saw", "the", "red", "house"); Assert.assertTrue("a probability measure should be between 0 and 1 [was " + probability + "]", probability >= 0 && probability <= 1); String[] tokens = model.predictNextTokens("I", "saw"); Assert.assertNotNull(tokens); Assert.assertArrayEquals(new String[] {"something"}, tokens); } @Test public void testSerializedNGramLanguageModel() throws Exception { NGramLanguageModel languageModel = new NGramLanguageModel(getClass().getResourceAsStream( "/opennlp/tools/ngram/ngram-model.xml"), 3); double probability = languageModel.calculateProbability("The", "brown", "fox", "jumped"); Assert.assertTrue("a probability measure should be between 0 and 1 [was " + probability + "]", probability >= 0 && probability <= 1); String[] tokens = languageModel.predictNextTokens("the", "brown", "fox"); Assert.assertNotNull(tokens); Assert.assertArrayEquals(new String[] {"jumped"}, tokens); } @Test public void testTrigramLanguageModelCreationFromText() throws Exception { int ngramSize = 3; NGramLanguageModel languageModel = new NGramLanguageModel(ngramSize); InputStream stream = getClass().getResourceAsStream("/opennlp/tools/languagemodel/sentences.txt"); for (String line : IOUtils.readLines(stream)) { String[] array = line.split(" "); List split = Arrays.asList(array); List generatedStrings = NGramGenerator.generate(split, ngramSize, " "); for (String generatedString : generatedStrings) { String[] tokens = generatedString.split(" "); if (tokens.length > 0) { languageModel.add(tokens); } } } String[] tokens = languageModel.predictNextTokens("neural", "network", "language"); Assert.assertNotNull(tokens); Assert.assertArrayEquals(new String[] {"models"}, tokens); double p1 = languageModel.calculateProbability("neural", "network", "language", "models"); double p2 = languageModel.calculateProbability("neural", "network", "language", "model"); Assert.assertTrue(p1 > p2); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_java_opennlp_tools_languagemodel_Lan0100644 0000000 0000000 00000000166 14135770370 032620 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/LanguageModelTestUtils.java apache-opennlp-1.9.4-src/opennlp-tools/src/test/java/opennlp/tools/languagemodel/LanguageModelTestUt0100664 0001750 0001750 00000005423 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.languagemodel; import java.math.BigDecimal; import java.math.MathContext; import java.util.Collection; import java.util.LinkedList; import java.util.Random; import org.junit.Ignore; import opennlp.tools.ngram.NGramUtils; /** * Utility class for language models tests */ @Ignore public class LanguageModelTestUtils { private static final java.math.MathContext CONTEXT = MathContext.DECIMAL128; private static Random r = new Random(); private static final char[] chars = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; public static Collection generateRandomVocabulary(int size) { Collection vocabulary = new LinkedList<>(); for (int i = 0; i < size; i++) { String[] sentence = generateRandomSentence(); vocabulary.add(sentence); } return vocabulary; } public static String[] generateRandomSentence() { int dimension = r.nextInt(10) + 1; String[] sentence = new String[dimension]; for (int j = 0; j < dimension; j++) { int i = r.nextInt(10); char c = chars[i]; sentence[j] = c + "-" + c + "-" + c; } return sentence; } public static double getPerplexity(LanguageModel lm, Collection testSet, int ngramSize) throws ArithmeticException { BigDecimal perplexity = new BigDecimal(1d); for (String[] sentence : testSet) { for (String[] ngram : NGramUtils.getNGrams(sentence, ngramSize)) { double ngramProbability = lm.calculateProbability(ngram); perplexity = perplexity.multiply(new BigDecimal(1d).divide( new BigDecimal(ngramProbability), CONTEXT)); } } double p = StrictMath.log(perplexity.doubleValue()); if (Double.isInfinite(p) || Double.isNaN(p)) { return Double.POSITIVE_INFINITY; // over/underflow -> too high perplexity } else { BigDecimal log = new BigDecimal(p); return StrictMath.pow(StrictMath.E, log.divide(new BigDecimal(testSet.size()), CONTEXT).doubleValue()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/census90.sample0100664 0001750 0001750 00000001015 14135770370 033214 0ustar00jeffjeff0000000 0000000 SMITH 1.006 1.006 1 JOHNSON 0.810 1.816 2 WILLIAMS 0.699 2.515 3 JONES 0.621 3.136 4 BROWN 0.621 3.757 5 MARY 2.629 2.629 1 PATRICIA 1.073 3.702 2 LINDA 1.035 4.736 3 BARBARA 0.980 5.716 4 ELIZABETH 0.937 6.653 5 JAMES 3.318 3.318 1 JOHN 3.271 6.589 2 ROBERT 3.143 9.732 3 MICHAEL 2.629 12.361 4 WILLIAM 2.451 14.812 5 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_lets0100644 0000000 0000000 00000000166 14135770370 033015 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/letsmt/letsmt-with-words.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/letsmt/letsmt-with-w0100664 0001750 0001750 00000004670 14135770370 034332 0ustar00jeffjeff0000000 0000000 The Apache Software Foundation uses various licenses to distribute software and documentation , to accept regular contributions from individuals and corporations , and to accept larger grants of existing software products . All software produced by The Apache Software Foundation or any of its projects or subjects is licensed according to the terms of the documents listed below . apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/ad.sample0100664 0001750 0001750 00000023014 14135770370 032132 0ustar00jeffjeff0000000 0000000 SOURCE: ref="1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=-2" source="SELVA 1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=" 1001 Inicia no próximo dia 6 de outubro o Porto Poesia 2 no Shopping Total Av. Cristovão Colombo, 545 -- Porto Alegre -- RS. A1 STA:fcl =P:v-fin("iniciar" PR 3S IND VFIN) Inicia =PIV:pp ==H:prp("em" ) em ==P<:np ===>N:art("o" <-sam> DET M S) o ===>N:adj("próximo" M S) próximo ===H:n("dia" M S) dia ===N<:num("6" M P) 6 ===N<:pp ====H:prp("de" ) de ====P<:n("outubro" M S) outubro =ACC:cu ==CJT:np ===>N:art("o" DET M S) o ===H:prop("Porto_Poesia" M S) Porto_Poesia ===N<:num("2" M/F P) 2 ===N<:pp ====H:prp("em" ) em ====P<:np =====>N:art("o" <-sam> DET M S) o =====H:prop("Shopping_Total" M S) Shopping_Total ==CJT:np ===H:n("av." M S) Av. ===N<:prop("Cristovão_Colombo" M S) Cristovão_Colombo ==, ==CJT:num("545" M/F P) 545 ==-- =SUBJ:np ==H:prop("Porto_Alegre" M S) Porto_Alegre ==-- ==APP:prop("RS" M S) RS . SOURCE: ref="1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=-6" source="SELVA 1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=" 1001 Com relação à parceria com o shopping o organizador diz que: A1 STA:fcl =ADVL:pp ==H:prp("com_relação_a" ) Com_relação_a ==P<:np ===>N:art("o" <-sam> DET F S) a ===H:n("parceria" F S) parceria ===N<:pp ====H:prp("com" ) com ====P<:np =====>N:art("o" DET M S) o =====H:n("shopping" M S) shopping =SUBJ:np ==>N:art("o" DET M S) o ==H:n("organizador" M S) organizador =P:v-fin("dizer" PR 3S IND VFIN) diz SUB:conj-s("que" ) que : SOURCE: ref="1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=-11" source="SELVA 1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=" 1001 Até o momento, mais de 98 profissionais da área da cultura e poetas têm a presença confirmada, entre eles, Armindo Trevisan, Alcy Cheuiche, Donaldo Schüller, José Eduardo Degrazia, Lau Siqueira, Liana Timm, Luiz Coronel, Mário Pirata, Oliveira Silveira, Jane Tutikian, Paulo Custódio, entre outros. A1 STA:fcl =ADVL:pp ==H:prp("até" ) Até ==P<:np ===>N:art("o" DET M S) o ===H:n("momento" M S) momento =, =SUBJ:cu ==CJT:np ===>N:adjp ====>A:adv("mais_de" ) mais_de ====H:num("98" M/F P) 98 ===H:n("profissional" M/F P) profissionais ===N<:pp ====H:prp("de" ) de ====P<:np =====>N:art("o" <-sam> DET F S) a =====H:n("área" F S) área =====N<:pp ======H:prp("de" ) de ======P<:np =======>N:art("o" <-sam> DET F S) a =======H:n("cultura" F S) cultura ==CO:conj-c("e" ) e ==CJT:n("poeta" M P) poetas =P:v-fin("ter" PR 3P IND VFIN) têm =ACC:np ==>N:art("o" DET F S) a ==H:n("presença" F S) presença ==N<:v-pcp("confirmar" F S) confirmada =, =ADVL:pp ==H:prp("entre" ) entre ==P<:np ===H:pron-pers("eles" M 3P NOM/PIV) eles ===, ===APP:np ====H:prop("Armindo_Trevisan" M S) Armindo_Trevisan ====, ====APP:np =====H:prop("Alcy_Cheuiche" M/F S) Alcy_Cheuiche =====, =====APP:np ======H:prop("Donaldo_Schüller" M S) Donaldo_Schüller ======, ======APP:np =======H:prop("José_Eduardo_Degrazia" M S) José_Eduardo_Degrazia =======, =======APP:np ========H:prop("Lau_Siqueira" M/F S) Lau_Siqueira ========, ========APP:np =========H:prop("Liana_Timm" F S) Liana_Timm =========, =========APP:np ==========H:prop("Luiz_Coronel" M S) Luiz_Coronel ==========, ==========APP:np ===========H:prop("Mário_Pirata" M S) Mário_Pirata ===========, ===========APP:np ============H:prop("Oliveira_Silveira" F S) Oliveira_Silveira ============, ============APP:np =============H:prop("Jane_Tutikian" F S) Jane_Tutikian =============, =============APP:prop("Paulo_Custódio" M S) Paulo_Custódio =, =ADVL:pp ==H:prp("entre" ) entre ==P<:pron-det("outro" DET M P) outros . SOURCE: ref="1003.cultura-ameacada=removeme=-5" source="SELVA 1003.cultura-ameacada=removeme=" 1003 Casas, galpão utilizado para os festejos e até mesmo a capela em que os Arturos celebram seus rituais religiosos tiveram telhas e vidros destruídos, num episódio sem precedentes na comunidade. A1 ACC:fcl =TOP:n("casa" F P) Casas =, STA:fcl =SUBJ:cu ==CJT:np ===H:n("galpão" M S) galpão =====N<:v-pcp("utilizar" M S) utilizado =====N<:pp ======H:prp("para" ) para ======P<:np =======>N:art("o" DET M P) os =======H:n("festejo" M P) festejos ====CO:conj-c("e" ) e ===ADVL:adv("até_mesmo" ) até_mesmo ====CJT:np =====>N:art("o" DET F S) a =====H:n("capela" F S) capela ===ADVL:prp("em" ) em =SUB:conj-s("que" ) que =SUBJ:np ==>N:art("o" DET M P) os ==H:prop("Arturos" M P) Arturos =P:v-fin("celebrar" PR 3P IND VFIN) celebram =ACC:np ==>N:pron-det("seu" DET M P) seus ==H:n("ritual" M P) rituais ==N<:adj("religioso" M P) religiosos ==P:v-fin("ter" PS/MQP 3P IND VFIN) tiveram ==ACC:cu ===CJT:n("telha" F P) telhas ===CO:conj-c("e" ) e ===CJT:np ====H:n("vidro" M P) vidros ====N<:v-pcp("destruir" M P) destruídos ==, ==ADVL:pp ===H:prp("em" ) em ===P<:np ====>N:art("um" <-sam> DET M S) um ====H:n("episódio" M S) episódio ====N<:pp =====H:prp("sem" ) sem =====P<:n("precedente" M P) precedentes ==ADVL:pp ===H:prp("em" ) em ===P<:np ====>N:art("o" <-sam> DET F S) a ====H:n("comunidade" F S) comunidade . SOURCE: ref="1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=-2" source="SELVA 1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=" 1001 Em 9 fe agosto de 1831. A1 STA:fcl =ADVL:pp ==H:prp("em" ) Em ==P<:adjp() ===H:num("9" M S) 9 ===N<:pp ====H:prp("de" ) de ====P<:np() =====H:n("agosto" M S) agosto =====N<:pp ======H:prp("de" ) de ======P<:adjp =======H:num("1831" M P) 1831 . SOURCE: ref="1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=-2" source="SELVA 1001.porto-poesia=removeme=-2 a poesia toma porto-alegre=removeme=" 1001 Ivan do Maxixe ofereceu-me um café. A1 STA:fcl ===H:prop("Ivan" M S) Ivan ===N<:pp ====H:prp("de" ) de ====P<:np =====>N:art("o" <-sam> DET M S) o =====H:n("maxixe" M S) Maxixe ===P:v-fin("oferecer" PS 3S IND VFIN) ofereceu- ===DAT:pron-pers("eu" M/F 1S DAT) me ===ACC:np ====>N:pron-det("um" DET M S) um ====H:n("café" M S) café . SOURCE: ref="1002.pesquisa da usp mapeia cultura livre em são paulo-14" source="SELVA 1002.pesquisa da usp mapeia cultura livre em são paulo" 1002 Contato: A1 UTT:n("contato" M S) Contato : SOURCE: ref="1783.sim o ms tambem tem-forro=removeme=-31" source="SELVA 1783.sim o ms tambem tem-forro=removeme=" 1783 Gonzagão e aquele outro Zé apelidado Jackson. A1 STA:fcl =ACC:cu ==CJT:prop("Gonzagão" M/F S) Gonzagão ==CO:conj-c("e" ) e ==CJT:pron-det("aquele" DET M S) aquele ==CJT:np ===H:prop("Zé" M S) Zé ===N<:adj("apelidado" M S) apelidado ==CJT:prop("Jackson" M S) Jackson . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_eval0100644 0000000 0000000 00000000157 14135770370 032775 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/evalita-ner-it.sample apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/evalita-ner-it.sampl0100664 0001750 0001750 00000001533 14135770370 034224 0ustar00jeffjeff0000000 0000000 A E adige20041007_id413942 O parlare VF adige20041007_id413942 O di E adige20041007_id413942 O questi DP adige20041007_id413942 O problemi SP adige20041007_id413942 O sar VI adige20041007_id413942 O il RS adige20041007_id413942 O neonatologo SS adige20041007_id413942 O Dino SPN adige20041007_id413942 B-PER Pedrotti SPN adige20041007_id413942 I-PER . XPS adige20041007_id413942 O Sono VIY adige20041008_id414214 O assicurate VPP adige20041008_id414214 O a E adige20041008_id414214 O tutta DS adige20041008_id414214 O la RS adige20041008_id414214 O popolazione SS adige20041008_id414214 O a E adige20041008_id414214 O titolo SS adige20041008_id414214 O gratuito AS adige20041008_id414214 O e C adige20041008_id414214 O con E adige20041008_id414214 O accesso SS adige20041008_id414214 O diretto AS adige20041008_id414214 O . XPS adige20041008_id414214 O ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000164 14135770370 032774 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entities.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entiti0100664 0001750 0001750 00000002432 14135770370 034247 0ustar00jeffjeff0000000 0000000 U . S . President Barack Obama has arrived in South Korea , where he is expected to show solidarity with the country ' s president in demanding North Korea move toward ending its nuclear weapons programs . As he departed China for South Korea Wednesday , President Obama took another opportunity to urge North Korea to reach an agreement on its nuclear weapons . " North Korea has a choice . It can continue down the path of confrontation and provocation that has led to less security , less prosperity and more isolation from the global community , " President Obama said . " Or it can choose to become a full member of the international community , which will give a better life to its people by living up to international obligations and foregoing nuclear weapons . " The president landed at a U . S . air base Wednesday evening , and is to hold talks with South Korean President Lee Myung - bak Thursday here in the South Korean capital . South Korea and the United States are trying to coax the North back to six - nation talks aimed at ending its nuclear weapons . President Obama has indicated he will send an envoy to Pyongyang before the end of the year for one - on - one discussions , but only in the context of restarting the multinational process . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000200 14135770370 032763 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entities-overlapping.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entiti0100664 0001750 0001750 00000002432 14135770370 034247 0ustar00jeffjeff0000000 0000000 U . S . President Barack Obama has arrived in South Korea , where he is expected to show solidarity with the country ' s president in demanding North Korea move toward ending its nuclear weapons programs . As he departed China for South Korea Wednesday , President Obama took another opportunity to urge North Korea to reach an agreement on its nuclear weapons . " North Korea has a choice . It can continue down the path of confrontation and provocation that has led to less security , less prosperity and more isolation from the global community , " President Obama said . " Or it can choose to become a full member of the international community , which will give a better life to its people by living up to international obligations and foregoing nuclear weapons . " The president landed at a U . S . air base Wednesday evening , and is to hold talks with South Korean President Lee Myung - bak Thursday here in the South Korean capital . South Korea and the United States are trying to coax the North back to six - nation talks aimed at ending its nuclear weapons . President Obama has indicated he will send an envoy to Pyongyang before the end of the year for one - on - one discussions , but only in the context of restarting the multinational process . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000165 14135770370 032775 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-relations.ann apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-relati0100664 0001750 0001750 00000001354 14135770370 034235 0ustar00jeffjeff0000000 0000000 T1 Person 281 286 Obama T2 Person 21 33 Barack Obama T3 Location 51 62 South Korea T4 Location 151 162 North Korea T5 Location 231 236 China T6 Location 243 254 South Korea T7 Location 322 333 North Korea T8 Date 257 266 Wednesday T9 Location 386 397 North Korea T10 Person 586 591 Obama T11 Date 843 860 Wednesday evening T12 Location 889 901 South Korean T13 Person 913 928 Lee Myung - bak T14 Date 931 939 Thursday T15 Location 978 989 South Korea T16 Location 1000 1013 United States T17 Person 1121 1126 Obama T18 Location 1168 1177 Pyongyang R1 Related Arg1:T2 Arg2:T3 R2 Related Arg1:T1 Arg2:T7 R3 Related Arg1:T13 Arg2:T12 R4 Related Arg1:T17 Arg2:T18 R5 Related Arg1:T2 Arg2:T4 R6 Related Arg1:T2 Arg2:T5 R7 Related Arg1:T2 Arg2:T6 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000165 14135770370 032775 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-relations.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-relati0100664 0001750 0001750 00000002433 14135770370 034234 0ustar00jeffjeff0000000 0000000 U . S . President Barack Obama has arrived in South Korea , where he is expected to show solidarity with the country ' s president in demanding North Korea move toward ending its nuclear weapons programs . As he departed China for South Korea Wednesday , President Obama took another opportunity to urge North Korea to reach an agreement on its nuclear weapons . " North Korea has a choice . It can continue down the path of confrontation and provocation that has led to less security , less prosperity and more isolation from the global community , " President Obama said . " Or it can choose to become a full member of the international community , which will give a better life to its people by living up to international obligations and foregoing nuclear weapons . " The president landed at a U . S . air base Wednesday evening , and is to hold talks with South Korean President Lee Myung - bak Thursday here in the South Korean capital . South Korea and the United States are trying to coax the North back to six - nation talks aimed at ending its nuclear weapons . President Obama has indicated he will send an envoy to Pyongyang before the end of the year for one - on - one discussions , but only in the context of restarting the multinational process . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000164 14135770370 032774 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entities.ann apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entiti0100664 0001750 0001750 00000001235 14135770370 034247 0ustar00jeffjeff0000000 0000000 T1 Person 281 286 Obama T2 Person 21 33 Barack Obama T3 Location 51 62 South Korea T4 Location 151 162 North Korea T5 Location 231 236 China T6 Location 243 254 South Korea T7 Location 322 333 North Korea T8 Date 257 266 Wednesday T9 Location 386 397 North Korea T10 Person 586 591 Obama T11 Date 843 860 Wednesday evening T12 Location 889 901 South Korean T13 Person 913 928 Lee Myung - bak T14 Date 931 939 Thursday T15 Location 978 989 South Korea T16 Location 1000 1013 United States T17 Person 1121 1126 Obama T18 Location 1168 1177 Pyongyang #1 AnnotatorNotes T2 President Obama was the 44th U.S. president #2 AnnotatorNotes T3 The capital of South Korea is Seoul./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000200 14135770370 032763 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entities-overlapping.ann apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/voa-with-entiti0100664 0001750 0001750 00000001274 14135770370 034252 0ustar00jeffjeff0000000 0000000 T1 Person 281 286 Obama T2 Person 21 33 Barack Obama T3 Location 51 62 South Korea T4 Location 151 162 North Korea T5 Location 231 236 China T6 Location 243 254 South Korea T7 Location 322 333 North Korea T8 Date 257 266 Wednesday T9 Location 386 397 North Korea T10 Person 586 591 Obama T11 Date 843 860 Wednesday evening T12 Location 889 901 South Korean T13 Person 913 928 Lee Myung - bak T14 Date 931 939 Thursday T15 Location 978 989 South Korea T16 Location 1000 1013 United States T17 Person 1121 1126 Obama T18 Location 1168 1177 Pyongyang T19 Person 1168 1177 Pyongyang #1 AnnotatorNotes T2 President Obama was the 44th U.S. president #2 AnnotatorNotes T3 The capital of South Korea is Seoul./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000157 14135770370 032776 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/opennlp-1193.ann apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/opennlp-1193.an0100664 0001750 0001750 00000000224 14135770370 033657 0ustar00jeffjeff0000000 0000000 T1 Name 0 7;17 24;8 15 spanA_1 spanA_2 spanA_3 T2 Name 26 33;40 47 spanB_1 spanB_2 T3 Event 34 39 spanC E1 Event:T3 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_brat0100644 0000000 0000000 00000000157 14135770370 032776 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/opennlp-1193.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brat/opennlp-1193.tx0100664 0001750 0001750 00000000060 14135770370 033712 0ustar00jeffjeff0000000 0000000 spanA_1 spanA_2 spanA_3 spanB_1 spanC spanB_2 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_conl0100644 0000000 0000000 00000000167 14135770370 033002 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/pt_br-ud-sample.conllu apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/pt_br-ud-samp0100664 0001750 0001750 00000006235 14135770370 034242 0ustar00jeffjeff0000000 0000000 # sent_id = train-s2 # text = Numa reunião entre representantes da Secretaria da Criança do DF ea juíza da Vara de Execuções de Medidas Socioeducativas, Lavínia Tupi Vieira Fonseca, ficou acordado que dos 25 internos, 12 serão internados na Unidade de Planaltina e os outros 13 devem retornar para a Unidade do Recanto das Emas, antigo Ciago. 1-2 Numa _ _ _ _ _ _ _ _ 1 Em _ ADP ADP _ 3 case _ _ 2 uma _ DET DET _ 3 det _ _ 3 reunião _ NOUN NOUN _ 31 nmod _ _ 4 entre _ ADP ADP _ 5 case _ _ 5 representantes _ NOUN NOUN _ 3 nmod _ _ 6-7 da _ _ _ _ _ _ _ _ 6 de de ADP ADP _ 8 case _ _ 7 a o DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 8 det _ _ 8 Secretaria _ PROPN PNOUN _ 5 nmod _ _ 9-10 da _ _ _ _ _ _ _ _ 9 de de ADP ADP _ 11 case _ _ 10 a o DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 11 det _ _ 11 Criança _ PROPN PNOUN _ 8 nmod _ _ 12-13 do _ _ _ _ _ _ _ _ 12 de de ADP ADP _ 14 case _ _ 13 o o DET DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art 14 det _ _ 14 DF _ PROPN PNOUN _ 8 nmod _ _ 15 ea _ CCONJ CONJ _ 16 cc _ _ 16 juíza _ NOUN NOUN _ 5 conj _ _ 17-18 da _ _ _ _ _ _ _ _ 17 de de ADP ADP _ 19 case _ _ 18 a o DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 19 det _ _ 19 Vara _ PROPN PNOUN _ 16 nmod _ _ 20 de _ ADP ADP _ 21 case _ _ 21 Execuções _ PROPN PNOUN _ 19 nmod _ _ 22 de _ ADP ADP _ 23 case _ _ 23 Medidas _ PROPN PNOUN _ 21 nmod _ _ 24 Socioeducativas _ PROPN PNOUN _ 23 amod _ SpaceAfter=No 25 , _ PUNCT . _ 26 punct _ _ 26 Lavínia _ PROPN PNOUN _ 16 appos _ _ 27 Tupi _ PROPN PNOUN _ 26 flat _ _ 28 Vieira _ PROPN PNOUN _ 26 flat _ _ 29 Fonseca _ PROPN PNOUN _ 26 flat _ SpaceAfter=No 30 , _ PUNCT . _ 3 punct _ _ 31 ficou _ VERB VERB _ 0 root _ _ 32 acordado _ ADJ ADJ _ 31 xcomp:adj _ _ 33 que _ CCONJ CONJ _ 41 mark _ _ 34-35 dos _ _ _ _ _ _ _ _ 34 de de ADP ADP _ 37 case _ _ 35 os o DET DET Definite=Def|Gender=Masc|Number=Plur|PronType=Art 37 det _ _ 36 25 _ NUM NUM NumType=Card 37 nummod _ _ 37 internos _ NOUN NOUN _ 41 nmod _ SpaceAfter=No 38 , _ PUNCT . _ 37 punct _ _ 39 12 _ NUM NUM NumType=Card 41 nsubj:pass _ _ 40 serão _ AUX AUX _ 41 aux:pass _ _ 41 internados _ VERB VERB _ 31 csubj _ _ 42-43 na _ _ _ _ _ _ _ _ 42 en en ADP ADP _ 44 case _ _ 43 a o DET DET Definite=Def|Gender=Fem|Number=Sing|PronType=Art 44 det _ _ 44 Unidade _ PROPN PNOUN _ 41 nmod _ _ 45 de _ ADP ADP _ 46 case _ _ 46 Planaltina _ PROPN PNOUN _ 44 nmod _ _ 47 e _ CCONJ CONJ _ 52 cc _ _ 48 os _ DET DET _ 50 det _ _ 49 outros _ DET DET _ 50 det _ _ 50 13 _ NUM NUM NumType=Card 52 nsubj _ _ 51 devem _ AUX AUX _ 52 aux _ _ 52 retornar _ VERB VERB _ 41 conj _ _ 53 para _ ADP ADP _ 55 case _ _ 54 a _ DET DET _ 55 det _ _ 55 Unidade _ PROPN PNOUN _ 52 nmod _ _ 56-57 do _ _ _ _ _ _ _ _ 56 de de ADP ADP _ 58 case _ _ 57 o o DET DET Definite=Def|Gender=Masc|Number=Sing|PronType=Art 58 det _ _ 58 Recanto _ NOUN NOUN _ 55 nmod _ _ 59-60 das _ _ _ _ _ _ _ _ 59 de de ADP ADP _ 61 case _ _ 60 as o DET DET Definite=Def|Gender=Fem|Number=Plur|PronType=Art 61 det _ _ 61 Emas _ PROPN PNOUN _ 58 nmod _ SpaceAfter=No 62 , _ PUNCT . _ 64 punct _ _ 63 antigo _ ADJ ADJ _ 64 amod _ _ 64 Ciago _ PROPN PNOUN _ 55 appos _ SpaceAfter=No 65 . _ PUNCT . _ 31 punct _ _ ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_conl0100644 0000000 0000000 00000000172 14135770370 032776 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/de-ud-train-sample.conllu apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/de-ud-train-s0100664 0001750 0001750 00000002733 14135770370 034140 0ustar00jeffjeff0000000 0000000 # sent_id = train-s21 # text = Fachlich kompetent, sehr gute Beratung und ein freundliches Team. 1 Fachlich fachlich ADV ADJD _ 2 advmod _ _ 2 kompetent kompetent ADJ ADJD Degree=Pos 0 root _ SpaceAfter=No 3 , , PUNCT $, _ 2 punct _ _ 4 sehr sehr ADV ADV _ 5 advmod _ _ 5 gute gut ADJ ADJA Degree=Pos 6 amod _ _ 6 Beratung Beratung NOUN NN _ 2 parataxis _ _ 7 und und CCONJ KON _ 10 cc _ _ 8 ein ein DET ART Definite=Ind|PronType=Art 10 det _ _ 9 freundliches freundlich ADJ ADJA Degree=Pos 10 amod _ _ 10 Team Team NOUN NN _ 6 conj _ SpaceAfter=No 11 . . PUNCT $. _ 2 punct _ _ # sent_id = train-s22 # text = Beiden Zahnärzten verdanke ich einen neuen Biss und dadurch endlich keine Rückenschmerzen mehr. 1 Beiden beide PRON PIAT Case=Dat|Number=Plur|NumType=Card|PronType=Tot 2 det _ _ 2 Zahnärzten Zahnarzt NOUN NN Case=Dat|Number=Plur 3 iobj _ _ 3 verdanke verdanken VERB VVFIN Number=Sing|Person=1|VerbForm=Fin 0 root _ _ 4 ich ich PRON PPER Case=Nom|Number=Sing|Person=1|PronType=Prs 3 nsubj _ _ 5 einen ein DET ART Case=Acc|Definite=Ind|Number=Plur|PronType=Art 7 det _ _ 6 neuen neu ADJ ADJA Case=Acc|Degree=Pos|Number=Plur 7 amod _ _ 7 Biss Biß NOUN NN Case=Acc|Number=Plur 3 obj _ _ 8 und und CCONJ KON _ 12 cc _ _ 9 dadurch dadurch ADV PAV _ 7 advmod _ _ 10 endlich endlich ADV ADV _ 12 advmod _ _ 11 keine kein PRON PIAT PronType=Neg 12 advmod _ _ 12 Rückenschmerzen Rückenschmerz NOUN NN _ 7 conj _ _ 13 mehr mehr ADV ADV _ 12 advmod _ SpaceAfter=No 14 . . PUNCT $. _ 3 punct _ _./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_conl0100644 0000000 0000000 00000000164 14135770370 032777 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/es-ud-sample.conllu apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllu/es-ud-sample.0100664 0001750 0001750 00000007145 14135770370 034143 0ustar00jeffjeff0000000 0000000 # sent_id = es-train-001-s300 # text = Digámoslo claramente, la insurgencia se ha pronunciado mucho más claramente respecto al tema de la paz que el Estado, como lo demuestra el fragmento que Bermúdez cita de la respuesta de "Gabino" a Piedad Córdoba, en la cual no se plantea ni siquiera "esperar un mejor gobierno". 1-3 Digámoslo _ _ _ _ _ _ _ _ 1 Digám digám VERB _ VerbForm=Fin 0 root _ _ 2 os tú PRON _ Case=Acc,Dat|Number=Plur|Person=2|PrepCase=Npr|PronType=Prs 1 iobj _ _ 3 lo él PRON _ Case=Acc|Gender=Masc|Number=Sing|Person=3|PrepCase=Npr|PronType=Prs 1 obj _ _ 4 claramente claramente ADV _ _ 1 advmod _ SpaceAfter=No 5 , , PUNCT _ _ 1 punct _ _ 6 la el DET _ Definite=Def|Gender=Fem|Number=Sing|PronType=Art 7 det _ _ 7 insurgencia insurgencia NOUN _ Gender=Fem|Number=Sing 10 nsubj _ _ 8 se él PRON _ Case=Acc,Dat|Person=3|PrepCase=Npr|PronType=Prs|Reflex=Yes 10 iobj _ _ 9 ha haber AUX _ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 10 aux _ _ 10 pronunciado pronunciar VERB _ Gender=Masc|Number=Sing|Tense=Past|VerbForm=Part 1 parataxis _ _ 11 mucho mucho PRON _ NumType=Card|PronType=Ind 12 nmod _ _ 12 más más ADV _ Degree=Cmp 13 advmod _ _ 13 claramente claramente ADV _ _ 10 advmod _ _ 14 respecto respecto NOUN _ Gender=Masc|Number=Sing 17 nmod _ _ 15-16 al _ _ _ _ _ _ _ _ 15 a a ADP _ _ 14 fixed _ _ 16 el el DET _ Definite=Def|Gender=Masc|Number=Sing|PronType=Art 14 det _ _ 17 tema tema NOUN _ Gender=Masc|Number=Sing 10 obl _ _ 18 de de ADP _ _ 20 case _ _ 19 la el DET _ Definite=Def|Gender=Fem|Number=Sing|PronType=Art 20 det _ _ 20 paz paz NOUN _ Gender=Fem|Number=Sing 17 nmod _ _ 21 que que CCONJ _ _ 23 case _ _ 22 el el DET _ Definite=Def|Gender=Masc|Number=Sing|PronType=Art 23 det _ _ 23 Estado estado NOUN _ _ 12 nmod _ SpaceAfter=No 24 , , PUNCT _ _ 27 punct _ _ 25 como como SCONJ _ _ 27 mark _ _ 26 lo él PRON _ Case=Acc|Gender=Masc|Number=Sing|Person=3|PrepCase=Npr|PronType=Prs 27 obj _ _ 27 demuestra demostrar VERB _ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 10 advcl _ _ 28 el el DET _ Definite=Def|Gender=Masc|Number=Sing|PronType=Art 29 det _ _ 29 fragmento fragmento NOUN _ Gender=Masc|Number=Sing 27 nsubj _ _ 30 que que SCONJ _ _ 32 mark _ _ 31 Bermúdez bermúdez PROPN _ _ 32 nsubj _ _ 32 cita cita VERB _ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 29 acl:relcl _ _ 33 de de ADP _ _ 35 case _ _ 34 la el DET _ Definite=Def|Gender=Fem|Number=Sing|PronType=Art 35 det _ _ 35 respuesta respuesta NOUN _ Gender=Fem|Number=Sing 29 nmod _ _ 36 de de ADP _ _ 38 case _ _ 37 " " PUNCT _ _ 38 punct _ SpaceAfter=No 38 Gabino gabino PROPN _ _ 35 nmod _ SpaceAfter=No 39 " " PUNCT _ _ 38 punct _ _ 40 a a ADP _ _ 41 case _ _ 41 Piedad piedad PROPN _ _ 35 nmod _ _ 42 Córdoba córdoba PROPN _ _ 41 flat _ SpaceAfter=No 43 , , PUNCT _ _ 49 punct _ _ 44 en en ADP _ _ 46 case _ _ 45 la el DET _ Definite=Def|Gender=Fem|Number=Sing|PronType=Art 46 det _ _ 46 cual cual PRON _ Number=Sing|PronType=Int,Rel 49 mark _ _ 47 no no ADV _ Polarity=Neg 49 advmod _ _ 48 se él PRON _ Case=Acc,Dat|Person=3|PrepCase=Npr|PronType=Prs|Reflex=Yes 49 iobj _ _ 49 plantea plantear VERB _ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin 35 acl:relcl _ _ 50 ni ni CCONJ _ Polarity=Neg 53 advmod _ _ 51 siquiera siquiera ADV _ _ 50 fixed _ _ 52 " " PUNCT _ _ 53 punct _ SpaceAfter=No 53 esperar esperar VERB _ VerbForm=Inf 49 csubj _ _ 54 un uno DET _ Definite=Ind|Gender=Masc|Number=Sing|PronType=Art 56 det _ _ 55 mejor mejor ADJ _ Degree=Cmp|Number=Sing 56 amod _ _ 56 gobierno gobierno NOUN _ Gender=Masc|Number=Sing 53 obj _ SpaceAfter=No 57 " " PUNCT _ _ 53 punct _ SpaceAfter=No 58 . . PUNCT _ _ 1 punct _ _ apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig-en.sample0100664 0001750 0001750 00000001764 14135770370 033621 0ustar00jeffjeff0000000 0000000 1 A rebel statement sent to Lisbon from Jamba said 86 government soldiers and 13 guerrillas were killed in the fighting that ended Jan. 3. It said the rebel forces sill held Mavinga. 2 Authorities last week issued a vacate order for a club in Manhattan and closed another in the Bronx. 3 At the first Pan Am bankruptcy hearing, for example, at least five airlines were represented. 4 Mr. Neigum, poker-faced during the difficult task, manages a 46-second showing. 5 This, combined with the container division talks, suggests the group's bankers might be considering an orderly disposal of all assets. 6 She told the Post in an interview published Sunday that some of the money may have become "mingled" into improvements on her home that included a swimming pool, a $2,500 wide-screen television and renovations to her basement. 7 According to a study by the Marshall Institute, the average NASA employee's age in 1963 was 30; now most of its senior and middle-managers will be eligible to retire in five years. ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_fren0100644 0000000 0000000 00000000164 14135770370 032776 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/frenchtreebank/sample1.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/frenchtreebank/sampl0100664 0001750 0001750 00000014111 14135770370 034361 0ustar00jeffjeff0000000 0000000 L' autonomie de la Bundesbank , la politique de stabilité qu' elle a fait prévaloir ( avec moins de succès et de sévérité qu' on ne le dit , mais tout est relatif ) , est une pièce essentielle de la division des pouvoirs en Allemagne . apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conll2003-en.sample0100664 0001750 0001750 00000000352 14135770370 033562 0ustar00jeffjeff0000000 0000000 -DOCSTART- -X- O O EU NNP I-NP I-ORG rejects VBZ I-VP O German JJ I-NP I-MISC call NN I-NP O to TO I-VP O boycott VB I-VP O British JJ I-NP I-MISC lamb NN I-NP O . . O O Peter NNP I-NP I-PER Blackburn NNP I-NP I-PER apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conll2002-nl.sample0100664 0001750 0001750 00000001073 14135770370 033571 0ustar00jeffjeff0000000 0000000 -DOCSTART- -DOCSTART- O De Art O tekst N O van Prep O het Art O arrest N O is V O nog Adv O niet Adv O schriftelijk Adj O beschikbaar Adj O maar Conj O het Art O bericht N O werd V O alvast Adv O bekendgemaakt V O door Prep O een Art O communicatiebureau N O dat Conj O Floralux N B-ORG inhuurde V O . Punc O In Prep O '81 Num O regulariseert V O de Art O toenmalige Adj O Vlaamse Adj B-MISC regering N O de Art O toestand N O met Prep O een Art O BPA N B-MISC dat Pron O het Art O bedrijf N O op Prep O eigen Pron O kosten N O heeft V O laten V O opstellen V O . Punc O./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_muc_0100644 0000000 0000000 00000000156 14135770370 032770 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/muc/parsertest1.sgml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/muc/parsertest1.sgml0100664 0001750 0001750 00000001512 14135770370 034267 0ustar00jeffjeff0000000 0000000 para1

para2

para2apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conll2002-es.sample0100664 0001750 0001750 00000000267 14135770370 033573 0ustar00jeffjeff0000000 0000000 Abogado NC B-PER General AQ I-PER del SP I-PER Estado NC I-PER . Fp O Melbourne NP B-LOC ( Fpa O Australia NP B-LOC ) Fpt O , Fc O 25 Z O may NC O ( Fpa O EFE NC B-ORG ) Fpt O . Fp O./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_iris0100644 0000000 0000000 00000000210 14135770370 033002 xustar000000000 0000000 136 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/irishsentencebank/irishsentencebank-sample.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/irishsentencebank/ir0100664 0001750 0001750 00000002300 14135770370 034372 0ustar00jeffjeff0000000 0000000 A Dhia, ag iompar clainne! Oh my God, I'm pregnant! Gabh mo leithscéal, an ón chlochaois thú? Excuse me, are you from the stone age? ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_leip0100644 0000000 0000000 00000000173 14135770370 032775 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dan-sentences.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dan-0100664 0001750 0001750 00000000107 14135770370 034212 0ustar00jeffjeff0000000 0000000 1 Der var engang en mand. 2 Der boede i en spand. 3 Spanden var af ler../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_leip0100644 0000000 0000000 00000000204 14135770370 032770 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dontread/xxx-sentences.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/dont0100664 0001750 0001750 00000000166 14135770370 034344 0ustar00jeffjeff0000000 0000000 1 This sentence should not be read. 2 The same goes for this sentence. 3 If we got this far then something went wrong!./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_leip0100644 0000000 0000000 00000000171 14135770370 032773 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/123-skipped.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/123-0100664 0001750 0001750 00000000016 14135770370 033754 0ustar00jeffjeff0000000 0000000 skip this file./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_leip0100644 0000000 0000000 00000000173 14135770370 032775 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/eng-sentences.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/leipzig/samples/eng-0100664 0001750 0001750 00000000062 14135770370 034221 0ustar00jeffjeff0000000 0000000 1 This is a sentence. 2 This is another sentences.apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conll2003-de.sample0100664 0001750 0001750 00000000631 14135770370 033550 0ustar00jeffjeff0000000 0000000 -DOCSTART- -X- -X- -X- O Ereignis Ereignis NN I-NC O und und KON O O Erzählung Erzählung NN I-NC O oder oder KON I-NC O : : $. O O Albrecht Albrecht NE I-NC I-PER Lehmann Lehmann NE I-NC I-PER versucht versuchen VVFIN I-VC O in in APPR I-PC O seinem sein PPOSAT I-NC O Buch Buch NN I-NC I-MISC Im im APPRART I-PC I-MISC Fremden Fremde NN I-NC I-MISC ungewollt ungewollt ADJD O O zuhaus ADV O O apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/brown-cluster.txt0100664 0001750 0001750 00000024424 14135770370 033720 0ustar00jeffjeff0000000 0000000 0000 18, 1 0000 wedding 1 0000 A 1 0000 No, 1 0000 prefered 1 0000 hurry 1 0000 address? 1 0000 sounds 1 0000 any 1 0000 soon, 1 0000 in 56 0000 Worcesterstreet 1 00010 summer. 1 00010 56473 1 00010 different 1 00010 20193 1 00010 Ulm 1 00010 17818 1 00010 beautiful 1 00010 23213 1 00010 12424 1 00010 Rue-de-Grandes-Illusions 1 00010 good. 1 00010 Barmerstr. 1 00010 81737 1 00010 order 1 00010 1912 1 00010 63737 1 00010 Chesterstr. 1 00010 80333 1 00010 81234 1 00010 that's 1 00010 78181 1 00010 30291 1 00010 84630 1 00010 25334 1 00010 30303 2 00010 Leipzig. 2 00010 your 3 00010 her 10 000110 5. 1 000110 Hamburg, 1 000110 contact 1 000110 faked. 1 000110 streetname 1 000110 34. 1 000110 83939 1 000110 25. 1 000110 2. 1 000110 part-time 1 000110 help-wanted 1 000110 11 1 000110 some 1 000110 Gauting. 1 000110 address. 1 000110 parent's 1 000110 reply. 1 000110 touch 1 000110 Berlin. 5 000110 Munich. 5 000111 there, 1 000111 Schulz 1 000111 Paris 1 000111 Edinburgh, 1 000111 day 1 000111 1 1 000111 you? 1 000111 saw 1 000111 see 1 000111 house 1 000111 recently 1 000111 Don't 1 000111 back 1 000111 apartment 1 000111 12, 1 000111 Are 2 000111 Could 2 000111 did 2 000111 job 2 000111 still 3 000111 Thank 3 000111 up 3 00100 30202. 1 00100 Yesterday, 1 00100 ad 1 00100 homesick, 1 00100 Now, 1 00100 man 1 00100 help. 1 00100 area. 1 00100 "Westbad". 1 00100 or 2 00100 It's 2 00100 It 2 00100 The 7 00100 As 3 00101 Arent't 1 00101 offer. 1 00101 celebrated 1 00101 available. 1 00101 spontaneously. 1 00101 sounding 1 00101 party 2 00101 you 12 001100 last 1 001100 called, 1 001100 That 1 001100 life 1 001100 pointed 1 001100 building 1 001100 restaurant 1 001100 5, 1 001100 one 1 001100 interested 1 001100 located 1 001100 Please 1 001100 answered 1 001100 Hospital 1 001100 112, 2 001100 arrived 3 001100 lived 4 001100 lives 4 001101 Unter-den-Linden 1 001101 this 1 001101 moment. 1 001101 tip 1 001101 10th 1 001101 reckon. 1 001101 factory 1 001101 line 1 001101 Paracelsus 1 001101 Alan 1 001101 it's 2 001101 company 2 001101 who 4 001110 didn't 1 001110 postcode 1 001110 police 1 001110 building. 1 001110 concierge 1 001110 flaring 1 001110 finally 3 001110 she 7 001110 Last 4 001110 She 5 0011110 Erding, 1 0011110 Spain, 1 0011110 resident, 1 0011110 lady, 1 0011110 later 1 0011110 business 1 0011110 idea 1 0011110 Berlin 1 0011110 England, 1 0011110 Sure, 1 0011110 , 10 0011110 longer 1 0011111 is. 1 0011111 15 1 0011111 Schneider 1 0011111 Hinterhofer 1 0011111 me. 1 0011111 Our 1 0011111 Seile 1 0011111 Meier 1 0011111 Bauer 1 0011111 Sander 1 0011111 Clara 1 0011111 Schmidt 2 0011111 minutes 2 0011111 Miller 5 0100 school 1 0100 They 1 0100 8 1 0100 9 1 0100 Europe. 1 0100 those 1 0100 Baumann, 1 0100 a 38 0100 high 1 01010 About 1 01010 has 1 01010 us, 1 01010 13, 1 01010 university. 1 01010 tell 1 01010 On 2 01010 than 2 01010 An 2 01010 Alisa 2 01010 on 3 01010 with 7 01010 called 5 01010 got 5 01011 through 1 01011 shoes? 1 01011 city. 1 01011 quickly 1 01011 trauma, 1 01011 situate 1 01011 much! 1 01011 then, 1 01011 friday! 1 01011 about 1 01011 knew 2 01011 of 17 01011 him 3 011000 drove 1 011000 Yes, 1 011000 away. 1 011000 parents' 1 011000 life-threatening, 1 011000 Weilheim, 1 011000 15. 1 011000 33, 1 011000 86th 1 011000 1995. 1 011000 apartment, 1 011000 took 2 011000 where 3 011000 if 5 011000 But 7 011001 the 54 011001 Blumenweg 1 011010 problem 1 011010 country 1 011010 Her 1 011010 rumour 1 011010 middle-aged 1 011010 police. 1 011010 exhibition. 1 011010 empty 1 011010 hours 1 011010 father 1 011010 area 1 011010 staff 1 011010 Reichstag. 1 011010 "Tapasbar" 1 011010 to. 1 011010 Lenbachhaus 1 011010 complete 1 011010 owner 1 011010 1. 1 011010 11, 1 011010 15, 2 011010 street 2 011010 accident 2 011010 Ostbahnhof 2 011010 address 3 0110110 help 1 0110110 grateful 1 0110110 singer 1 0110110 new 1 0110110 moment 1 0110110 costumers 1 0110110 ancestors. 1 0110110 Schubert 1 0110110 ups 1 0110110 pedestrians. 1 0110110 hint 1 0110110 semester, 1 0110110 aunt 1 0110110 face-to-face, 1 0110110 guests 1 0110110 happy 1 0110110 number 2 0110110 6, 2 0110110 name 8 01101110 French 1 01101110 Luise 1 01101110 knowledge 1 01101110 pictures 1 01101110 them 2 01101110 away 2 01101110 out 4 01101110 years 2 01101111 pain, 1 01101111 Is 1 01101111 sign 1 01101111 home, 1 01101111 14, 1 01101111 appreciated 1 01101111 happened 1 01101111 by 1 01101111 point: 1 01101111 opened 2 01101111 near 4 01101111 instantly 3 01110 taxi 1 01110 p.m.! 1 01110 13 1 01110 barbecue. 1 01110 speed 1 01110 tree. 1 01110 tenant 1 01110 metropolis 1 01110 delivery 1 01110 family 1 01110 list 1 01110 week. 1 01110 student, 1 01110 delicious 1 01110 good 1 01110 well-payed 1 01110 student 1 01110 person! 1 01110 smaller 1 01110 small 2 01110 more 2 01110 look 2 01110 quite 2 01110 bigger 2 01110 young 2 01110 tourist 2 01110 great 3 01110 letter 3 01110 friend 4 0111100 Elenor 1 0111100 definitely 1 0111100 Gina 1 0111100 currently 1 0111100 Marie 1 0111100 McKennedy 1 0111100 ten 1 0111100 sometimes. 1 0111100 Michael 1 0111100 Michel 1 0111100 competent 1 0111100 Gerhard 1 0111100 Stefanie 2 0111100 five 2 0111100 Mike 2 0111100 Stefan 3 0111101 particulary 1 0111101 broken. 1 0111101 10 1 0111101 leather? 1 0111101 grandaunt. 1 0111101 90 1 0111101 Julie 1 0111101 badly 1 0111101 you: 1 0111101 July 1 0111101 painfully 1 0111101 founded 1 0111101 Fernandes 1 0111101 old 2 0111101 elderly 2 0111101 March 2 0111101 him. 2 0111101 2 2 0111101 an 5 0111110 6th 1 0111110 Peter 1 0111110 turbulent 1 0111110 German 1 0111110 informatics, 1 0111110 phone 1 0111110 October 1 0111110 directly 1 0111110 His 2 0111110 My 4 0111110 his 5 0111110 our 5 01111110 Oh 1 01111110 mortal 1 01111110 Natalie 1 01111110 83454 1 01111110 programming 1 01111110 she's 2 01111110 Hi 2 01111110 that 9 01111111 attention. 1 01111111 central 1 01111111 town. 1 01111111 town 1 01111111 Spanish 1 01111111 lodge 1 01111111 right 1 01111111 married 2 01111111 later, 2 01111111 from 9 01111111 local 2 1000 information. 1 1000 capital. 1 1000 officer. 1 1000 retired 1 1000 most. 1 1000 reception 1 1000 wounds 1 1000 12 1 1000 personal 1 1000 colour. 1 1000 shoes 1 1000 030/827234. 1 1000 inquiries? 1 1000 Brandenburger 1 1000 computer... 1 1000 underground 1 1000 smalltown 1 1000 city 2 1000 only 2 1000 first 4 1000 home 3 1000 woman 3 1000 famous 4 1001 multiple 1 1001 France 1 1001 care 1 1001 burnt 1 1001 birthday 1 1001 there 2 1001 they 3 1001 it 8 1001 He 4 1001 which 4 1010 Now 1 1010 off 1 1010 yes, 1 1010 too. 1 1010 and 30 1010 56, 1 10110 Euro, 1 10110 Heidelberg. 1 10110 countries, 1 10110 injured. 1 10110 widow. 1 10110 danger. 1 10110 fact 1 10110 magazine. 1 10110 12. 1 10110 anniversary. 1 10110 traditional 1 10110 up, 1 10110 that? 1 10110 Fritsch. 1 10110 amazing, 1 10110 "Twentytwo". 1 10110 am 1 10110 Ottobrunn. 1 10110 years. 1 10110 her. 1 10110 whom 2 10110 Hamburg. 4 10110 . 4 10110 So 6 10111 photo 1 10111 place. 1 10111 p.m.. 1 10111 Heidelberg's 1 10111 September, 1 10111 21, 1 10111 jacket, 1 10111 anyway, 1 10111 Therefore, 1 10111 couple, 1 10111 so 2 10111 When 2 10111 year, 3 10111 husband 2 1100 place, 1 1100 Convulsed 1 1100 Driving 1 1100 notable 1 1100 album 1 1100 meal. 1 1100 I've 2 1100 Hi, 2 1100 We 2 1100 I 37 110100 takes 1 110100 reported 1 110100 is 15 110100 wasn't 3 110101 Bye! 1 110101 He's 1 110101 bike 1 110101 can 1 110101 agency 1 110101 Highfly-Hotel 1 110101 shop 1 110101 "Daily's" 1 110101 was 15 110101 depended 1 110110 Afterwards, 1 110110 maps. 1 110110 Lenbachhaus. 1 110110 flair 1 110110 immediately 1 110110 weren't 1 110110 addresses 1 110110 desk 1 110110 station 1 110110 I'll 1 110110 Tor 1 110110 hospital 1 110110 because 2 110110 own 2 110110 into 6 110110 as 4 1101110 frequented 1 1101110 yet 1 1101110 Since 1 1101110 made 1 1101110 what 1 1101110 he 9 1101110 information 2 1101111 Italian. 1 1101111 entertainer 1 1101111 foreign 1 1101111 delighted. 1 1101111 George 3 1101111 we 7 111000 wrote 1 111000 hadnt't 1 111000 looking 1 111000 just 1 111000 realized 1 111000 their 1 111000 never 1 111000 love 1 111000 brought 2 111000 really 2 111000 heard 2 111000 Although 2 111000 like 7 1110010 live 1 1110010 don't 1 1110010 injured 1 1110010 first, 1 1110010 hope 1 1110010 want 1 1110010 didn`t 1 1110010 knows 1 1110010 merely 1 1110010 two 1 1110010 worked 2 1110010 tried 2 1110010 no 2 1110010 moved 4 1110010 best 2 1110011 need 1 1110011 always 1 1110011 alone 1 1110011 liked 1 1110011 forward 1 1110011 proposed 1 1110011 came 1 1110011 talking 1 1110011 pick 1 1110011 told 2 1110011 went 2 1110011 decided 3 1110011 wanted 3 1110011 how 3 1110011 have 4 1110100 gave 1 1110100 downs 1 1110100 appartment 1 1110100 hospital. 1 1110100 last-minute. 1 1110100 languages, 1 1110100 sights, 1 1110100 enjoyed 1 1110100 I'm 6 1110100 I'd 4 1110101 felt 1 1110101 flames 1 1110101 enjoy 1 1110101 deem 1 1110101 called? 1 1110101 hardly 1 1110101 spent 1 1110101 asked 2 1110101 had 7 1110101 found 3 1110110 Munich, 1 1110110 Scotland, 1 1110110 day, 1 1110110 study 1 1110110 friend. 1 1110110 after 1 1110110 apartments 1 1110110 show 1 1110110 there. 1 1110110 read 2 1110110 get 3 1110110 know 6 1110111 right? 1 1110111 soon 1 1110111 uni. 1 1110111 ambulance. 1 1110111 Sunday 1 1110111 before. 1 1110111 possible. 1 1110111 my 9 1110111 he'd 2 111100 you'll 1 111100 ? 1 111100 not 2 111100 to 42 111101 it. 1 111101 call 1 111101 One 1 111101 Bruno 1 111101 once 1 111101 around 1 111101 for 7 111101 at 13 1111100 Hauptbahnhof? 1 1111100 hesitant 1 1111100 visit 1 1111100 completely 1 1111100 start 1 1111100 managed 1 1111100 money 1 1111100 go 1 1111100 offered 1 1111100 possible 1 1111100 afford 1 1111100 driver 2 1111100 write 3 1111100 easy 2 1111101 relaxed 1 1111101 simply 1 1111101 sure. 1 1111101 starts 1 1111101 friendly 1 1111101 give 1 1111101 sitting 1 1111101 going 1 1111101 urgent 1 1111101 please 2 1111101 next 3 1111101 very 6 1111110 who's 1 1111110 much, 1 1111110 friday? 1 1111110 explained 1 1111110 met 1 1111110 Where 1 1111110 How 2 1111110 much 2 1111110 are 2 1111110 could 2 1111110 me 6 1111110 enough 3 1111111 seen 1 1111111 papers 1 1111111 "Mondnacht" 1 1111111 both. 1 1111111 crashed 1 1111111 studies 1 1111111 bring 1 1111111 pull 1 1111111 teacher 1 1111111 boy 1 1111111 far 1 1111111 move 1 1111111 travelling 1 1111111 Yeah 2 1111111 ring 2 1111111 meet 2 1111111 find 5 1111111 be 3./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_nkjp0100644 0000000 0000000 00000000161 14135770370 033003 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/nkjp/text_structure.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/nkjp/text_structure.0100664 0001750 0001750 00000001644 14135770370 034417 0ustar00jeffjeff0000000 0000000 Krótki tekst

To krótki tekst w formacie NKJP. Zawiera dwa zdania.

To krótkie zdanie w drugim akapicie.
./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_formats_nkjp0100644 0000000 0000000 00000000163 14135770370 033005 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/nkjp/ann_segmentation.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/nkjp/ann_segmentatio0100664 0001750 0001750 00000002325 14135770370 034405 0ustar00jeffjeff0000000 0000000

apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/formats/conllx.sample0100664 0001750 0001750 00000002566 14135770370 033056 0ustar00jeffjeff0000000 0000000 1 To _ A AC case=unmarked 2 kendte _ A AN degree=pos|gender=common/neuter|number=plur|case=unmarked|def=def/indef|transcat=unmarked 3 russiske _ A AN degree=pos|gender=common/neuter|number=plur|case=unmarked|def=def/indef|transcat=unmarked 4 historikere _ N NC gender=common|number=plur|case=unmarked|def=indef 5 Andronik _ N NP case=unmarked 6 Andronik _ N NP case=unmarked 7 og _ C CC _ 8 Igor _ N NP case=unmarked 9 Klamkin _ N NP case=unmarked 10 tror _ V VA mood=indic|tense=present|voice=active 11 ikke _ RG RG degree=unmarked 12 , _ X XP _ 13 at _ C CS _ 14 Rusland _ N NP case=unmarked 15 kan _ V VA mood=indic|tense=present|voice=active 16 udvikles _ V VA mood=infin|voice=passive 17 uden _ SP SP _ 18 en _ P PI gender=common|number=sing|case=unmarked|register=unmarked 19 " _ X XP _ 20 jernnæve _ N NC gender=common|number=sing|case=unmarked|def=indef 21 " _ X XP _ 22 . _ X XP _ 1 De _ P PP person=3|gender=common/neuter|number=plur|case=nom|reflexive=no|register=unmarked 2 hævder _ V VA mood=indic|tense=present|voice=active 3 , _ X XP _ 4 at _ C CS _ 5 Ruslands _ N NP case=gen 6 vej _ N NC gender=common|number=sing|case=unmarked|def=indef 7 til _ SP SP _ 8 demokrati _ N NC gender=neuter|number=sing|case=unmarked|def=indef 9 går _ V VA mood=indic|tense=present|voice=active 10 gennem _ SP SP _ 11 diktatur _ N NC gender=neuter|number=sing|case=unmarked|def=indef 12 . _ X XP _ ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_tokenize_tok0100644 0000000 0000000 00000000163 14135770370 033015 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/token-insufficient.train apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/token-insufficient.0100664 0001750 0001750 00000000062 14135770370 034323 0ustar00jeffjeff0000000 0000000 I tried to find out the address of an old school ../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_tokenize_lat0100644 0000000 0000000 00000000160 14135770370 032775 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/latin-detokenizer.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/latin-detokenizer.x0100664 0001750 0001750 00000003677 14135770370 034356 0ustar00jeffjeff0000000 0000000 . ? ! , ; : ) ( } { ] [ `` '' % " " - apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/tokenize/token.train0100664 0001750 0001750 00000022364 14135770370 032706 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. I just knew his name, Alan McKennedy, and I'd heard the rumour that he'd moved to Scotland, the country of his ancestors. So I called Julie, a friend who's still in contact with him. She told me that he lived in 23213 Edinburgh, Worcesterstreet 12. I wrote him a letter right away and he answered soon, sounding very happy and delighted. Last year, I wanted to write a letter to my grandaunt. Her 86th birthday was on October 6, and I no longer wanted to be hesitant to get in touch with her. I didn`t know her face-to-face, and so it wasn't easy for me to find out her address. As she had two apartments in different countries, I decided to write to both. The first was in 12424 Paris in Rue-de-Grandes-Illusions 5. But Marie Clara, as my aunt is called, prefered her apartment in Berlin. It's postcode is 30202. She lived there, in beautiful Kaiserstraße 13, particulary in summer. Hi my name is Michael Graf, how much is a taxi from Ostbahnhof to Hauptbahnhof? About 10 Euro, I reckon. That sounds good. So please call a driver to Leonardstraße 112, near the Ostbahnhof in 56473 Hamburg. I'd like to be at Silberhornstraße 12 as soon as possible. Thank you very much! Hi Mike, it's Stefanie Schmidt. I'm in Nürnberg at the moment and I've got the problem that my bike has broken. Could you please pick me up from Seidlstraße 56, I'm in the Cafe "Mondnacht" at the moment. Please hurry up, I need to be back in Ulm at 8 p.m.! My husband George and me recently celebrated our 10th wedding anniversary. We got married on March 11, 1995. Therefore, we found a photo album with pictures of our first own apartment, which was in 81234 Munich. As a young married couple, we didn't have enough money to afford a bigger lodge than this one in Blumenweg 1. But only five years later, my husband was offered a well-payed job in 17818 Hamburg, so we moved there. Since then, our guests have to ring at Veilchenstraße 11 if they want to visit us, Luise and George Bauer. I read your help-wanted ad with great attention. I'm a student of informatics, 6th semester, and I'm very interested in your part-time job offer. I have a competent knowledge of programming and foreign languages, like French and Italian. I'm looking forward to your reply. Alisa Fernandes, a tourist from Spain, went to the reception desk of the famous Highfly-Hotel in 30303 Berlin. As she felt quite homesick, she asked the staff if they knew a good Spanish restaurant in Berlin. The concierge told her to go to the "Tapasbar" in Chesterstr. 2. Alisa appreciated the hint and enjoyed a delicious traditional meal. An old friend from France is currently travelling around Europe. Yesterday, she arrived in Berlin and we met up spontaneously. She wanted me to show her some famous sights, like the Brandenburger Tor and the Reichstag. But it wasn't easy to meet up in the city because she hardly knows any streetname or building. So I proposed to meet at a quite local point: the cafe "Daily's" in Unter-den-Linden 18, 30291 Berlin. It is five minutes away from the underground station "Westbad". She found it instantly and we spent a great day in the capital. Where did you get those great shoes? They look amazing, I love the colour. Are they made of leather? No, that's faked. But anyway, I like them too. I got them from Hamburg. Don't you know the famous shop in Veilchenstraße? It's called "Twentytwo". I've never heard of that before. Could you give me the complete address? Sure, it's in Veilchenstraße 12, in 78181 Hamburg. I deem it best to write a letter to the owner if the shoes are still available. His name is Gerhard Fritsch. Hi, am I talking to the inquiries? My name is Mike Sander and I'd like to know if it is possible to get information about an address if I merely know the name and the phone number of a person! How is he or she called? His name is Stefan Miller and his number is the 030/827234. I'll have a look in the computer. I found a Stefan Miller who lives in Leipzig. Is that right? Yes, it definitely is. So Stefan Miller lives in Heinrich-Heine-Straße 112, in 20193 Leipzig. Thank you very much for the information. Bye! On July 14, the father of a family got painfully injured after he had tried to start a barbecue. The flaring flames burnt instantly through his jacket, which he managed to pull off last-minute. Although the wounds weren't life-threatening, it was urgent to bring him directly into ambulance. But the only hospital that had opened that Sunday was the Paracelsus Hospital in 83939 Weilheim, which was 2 hours away. Convulsed with pain, the man finally arrived in Stifterstraße 15, where the personal immediately took care of him. Last year, I worked as a delivery boy for a small local magazine. I worked in the area of 83454 Ottobrunn. I had a list with the home addresses of our costumers whom I brought their papers once a week. An elderly lady, who was called Elenor Meier, lived in Gärtnerweg 6, and I always drove there first, because I liked her the most. Afterwards, I went to a student, Gina Schneider, who lived still in her parent's house in Gärtnerweg 25. The last in line was the retired teacher Bruno Schulz in Dramenstraße 15. He was friendly enough to tip sometimes. Our business company was founded in 1912 by the singer and entertainer Michel Seile. He opened the first agency in Erding, a small town near Munich. Now, more than 90 years of turbulent ups and downs later, we finally decided to situate our company in a more central and frequented area. Last year, we moved into an empty factory building in 30303 Berlin. It is located in Barmerstr. 34. When George Miller, a tourist from England, came to Munich, he had no idea how to read the city maps. He depended completely on the help and information of German pedestrians. One day, he simply could not find the famous Lenbachhaus. So he asked a young woman for help. She pointed at a street sign and explained to him that he'd find the Lenbachhaus in Luisenstraße 33, which is in 80333 Munich. Miller was very grateful and could finally enjoy the exhibition. On March 15, there was an accident near Munich. The driver got badly injured. Driving alone not far from her home, the middle-aged woman crashed at high speed into a tree. A resident, who lives near the street where the accident took place, called instantly the police. He reported what had happened and gave his name and address to the officer. He's called Peter Schubert and he lives at Max-Löw-Straße 13 in 84630 Gauting. The police arrived ten minutes later and brought the woman into hospital. Although she had multiple trauma, she's out of mortal danger. Hi, how are you? Arent't you a friend of Natalie? Yeah for sure. How did you know that? I saw you sitting next to her at uni. Yeah she's my best friend. Are you going to her party next friday? Oh yes, I'd really like to. But in fact I don't know yet where it takes place. I can tell you: ring at Baumann, Meisenstraße 5, in 81737 Munich. The party starts at 9 p.m. I hope you'll find it. Thank you very much, see you next friday! My name is Michael Hinterhofer. When I was 21, I moved out from my parents' home into my first own appartment in order to study in a bigger city. My new home was in Lilienstraße 1 in 25334 Hamburg. But I realized quickly that life in a metropolis wasn't relaxed enough for me. So I decided to move into a smaller town. Now I'm a tenant with an elderly widow. We live in Bürgerstraße 2 in 63737 Heidelberg. I really like the smalltown flair and my studies at Heidelberg's notable university. The stock rose by 3.5% yesterday in heavy trading.apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/parser/en_head_rules0100664 0001750 0001750 00000001352 14135770370 032705 0ustar00jeffjeff0000000 0000000 20 ADJP 0 NNS QP NN $ ADVP JJ VBN VBG ADJP JJR NP JJS DT FW RBR RBS SBAR RB 15 ADVP 1 RB RBR RBS FW ADVP TO CD JJR JJ IN NP JJS NN 5 CONJP 1 CC RB IN 2 FRAG 1 2 INTJ 0 4 LST 1 LS : 19 NAC 0 NN NNS NNP NNPS NP NAC EX $ CD QP PRP VBG JJ JJS JJR ADJP FW 8 PP 1 IN TO VBG VBN RP FW 2 PRN 1 3 PRT 1 RP 14 QP 0 $ IN NNS NN JJ RB DT CD NCD QP JJR JJS 7 RRC 1 VP NP ADVP ADJP PP 10 S 0 TO IN VP S SBAR ADJP UCP NP 13 SBAR 0 WHNP WHPP WHADVP WHADJP IN DT S SQ SINV SBAR FRAG 7 SBARQ 0 SQ S SINV SBARQ FRAG 12 SINV 0 VBZ VBD VBP VB MD VP S SINV ADJP NP 9 SQ 0 VBZ VBD VBP VB MD VP SQ 2 UCP 1 15 VP 1 TO VBD VBN MD VBZ VB VBG VBP VP ADJP NN NNS NP 6 WHADJP 0 CC WRB JJ ADJP 4 WHADVP 1 CC WRB 8 WHNP 0 WDT WP WP$ WHADJP WHPP WHNP 5 WHPP 1 IN TO FW 2 X 1 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/parser/parser.train0100664 0001750 0001750 00000165320 14135770370 032526 0ustar00jeffjeff0000000 0000000 (TOP (S (INTJ (RB No) )(, ,) (NP-SBJ (PRP it) )(VP (VBD was) (RB n't) (NP-PRD (NNP Black) (NNP Monday) ))(. .) )) (TOP (S (CC But) (SBAR-ADV (IN while) (S (NP-SBJ (DT the) (NNP New) (NNP York) (NNP Stock) (NNP Exchange) )(VP (VBD did) (RB n't) (VP (VB fall) (ADVP-CLR (RB apart) )(NP-TMP (NNP Friday) )(SBAR-TMP (IN as) (S (NP-SBJ (DT the) (NNP Dow) (NNP Jones) (NNP Industrial) (NNP Average) )(VP (VBD plunged) (NP-EXT (NP (CD 190.58) (NNS points) )(PRN (: --) (NP (NP (JJS most) )(PP (IN of) (NP (PRP it) ))(PP-TMP (IN in) (NP (DT the) (JJ final) (NN hour) )))(: --) )))))))))(NP-SBJ-2 (PRP it) )(ADVP (RB barely) )(VP (VBD managed) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB stay) (NP-LOC-PRD (NP (DT this) (NN side) )(PP (IN of) (NP (NN chaos) )))))))(. .) )) (TOP (S-1 (NP-SBJ-2 (NP (DT Some) (`` ``) (NN circuit) (NNS breakers) ('' '') )(VP (VBN installed) (NP (-NONE- *) )(PP-TMP (IN after) (NP (DT the) (NNP October) (CD 1987) (NN crash) ))))(VP (VBD failed) (NP (PRP$ their) (JJ first) (NN test) )(PRN (, ,)(S (NP-SBJ (NNS traders) )(VP (VBP say) (SBAR (-NONE- 0) (S (-NONE- *T*-1) ))))(, ,) )(S-ADV (NP-SBJ-3 (-NONE- *-2) )(ADJP-PRD (JJ unable) (S (NP-SBJ (-NONE- *-3) )(VP (TO to) (VP (VB cool) (NP (NP (DT the) (NN selling) (NN panic) )(PP-LOC (IN in) (NP (DT both) (NNS stocks) (CC and)(NNS futures) )))))))))(. .) )) (TOP (S (NP-SBJ (NP (NP (DT The) (CD 49) (NN stock) (NN specialist) (NNS firms) )(PP-LOC (IN on) (NP (DT the) (NNP Big) (NNP Board) (NN floor) )))(: --) (NP (NP (DT the) (NNS buyers) (CC and)(NNS sellers) )(PP (IN of) (NP (JJ last) (NN resort) ))(SBAR (WHNP-2 (WP who) )(S (NP-SBJ-1 (-NONE- *T*-2) )(VP (VBD were) (VP (VBN criticized) (NP (-NONE- *-1) )(PP-TMP (IN after) (NP (DT the) (CD 1987) (NN crash) )))))))(: --) )(ADVP-TMP (RB once) (RB again) )(VP (MD could) (RB n't) (VP (VB handle) (NP (DT the) (NN selling) (NN pressure) )))(. .) )) (TOP (S (S-TPC-4 (NP-SBJ-1 (JJ Big) (NN investment) (NNS banks) )(VP (VBD refused) (S (NP-SBJ-2 (-NONE- *-1) )(VP (TO to) (VP (VB step) (ADVP-DIR (IN up) (PP (TO to) (NP (DT the) (NN plate) )))(S-PRP (NP-SBJ-3 (-NONE- *-2) )(VP (TO to) (VP (VB support) (NP (DT the) (JJ beleaguered) (NN floor) (NNS traders) )(PP-MNR (IN by) (S-NOM (NP-SBJ (-NONE- *-3) )(VP (VBG buying) (NP (NP (JJ big) (NNS blocks) )(PP (IN of) (NP (NN stock) ))))))))))))))(, ,) (NP-SBJ (NNS traders) )(VP (VBP say) (SBAR (-NONE- 0) (S (-NONE- *T*-4) )))(. .) )) (TOP (S (NP-SBJ (NP (JJ Heavy) (NN selling) )(PP (IN of) (NP (NP (NNP Standard) (CC &) (NNP Poor) (POS 's) )(JJ 500-stock) (NN index) (NNS futures) ))(PP-LOC (IN in) (NP (NNP Chicago) )))(VP (ADVP-MNR (RB relentlessly) )(VBD beat) (NP (NNS stocks) )(ADVP-DIR (RB downward) ))(. .) )) (TOP (S (NP-SBJ-1 (NP (CD Seven) (NNP Big) (NNP Board) (NNS stocks) )(: --) (NP (NP (NNP UAL) )(, ,) (NP (NNP AMR) )(, ,) (NP (NNP BankAmerica) )(, ,) (NP (NNP Walt) (NNP Disney) )(, ,) (NP (NNP Capital) (NNP Cities\/ABC) )(, ,) (NP (NNP Philip) (NNP Morris) )(CC and) (NP (NNP Pacific) (NNP Telesis) (NNP Group) ))(: --) )(VP (VP (VBD stopped) (S (NP-SBJ (-NONE- *-1) )(VP (VBG trading) )))(CC and) (VP (ADVP-TMP (RB never) )(VBD resumed) ))(. .) )) (TOP (S (NP-SBJ (DT The) (NN finger-pointing) )(VP (VBZ has) (ADVP-TMP (RB already) )(VP (VBN begun) ))(. .) )) (TOP (S (`` ``) (NP-SBJ (DT The) (NN equity) (NN market) )(VP (VBD was) (ADJP-PRD (JJ illiquid) ))(. .) )) (TOP (SINV (S-TPC-2 (ADVP-TMP (RB Once) (RB again) )(-LRB- -LCB-) (NP-SBJ-3 (DT the) (NNS specialists) )(-RRB- -RCB-) (VP (VBD were) (RB not) (ADJP-PRD (JJ able) (S (NP-SBJ (-NONE- *-3) )(VP (TO to) (VP (VB handle) (NP (NP (DT the) (NNS imbalances) )(PP-LOC (IN on) (NP (NP (DT the) (NN floor) )(PP (IN of) (NP (DT the) (NNP New) (NNP York) (NNP Stock) (NNP Exchange) )))))))))))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-2) ))(NP-SBJ (NP (NNP Christopher) (NNP Pedersen) )(, ,) (NP (NP (JJ senior) (NN vice) (NN president) )(PP-LOC (IN at) (NP (NNP Twenty-First) (NNP Securities) (NNP Corp) ))))(. .) )) (TOP (SINV (VP (VBD Countered) (SBAR (-NONE- 0) (S (-NONE- *ICH*-2) )))(NP-SBJ (NP (NNP James) (NNP Maguire) )(, ,) (NP (NP (NN chairman) )(PP (IN of) (NP (NNS specialists) (NNP Henderson) (NNP Brothers) (NNP Inc.) ))))(: :) (`` ``) (S-2 (NP-SBJ (NP (PRP It) )(S (-NONE- *EXP*-1) ))(VP (VBZ is) (ADJP-PRD (JJ easy) )(S-1 (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB say) (SBAR (-NONE- 0) (S (NP-SBJ (DT the) (NN specialist) )(VP (VBZ is) (RB n't) (VP (VBG doing) (NP (PRP$ his) (NN job) ))))))))))(. .) )) (TOP (S (SBAR-TMP (WHADVP-1 (WRB When) )(S (NP-SBJ (DT the) (NN dollar) )(VP (VBZ is) (PP-LOC-PRD (IN in) (NP (DT a) (NN free-fall) ))(ADVP-TMP (-NONE- *T*-1) ))))(, ,) (NP-SBJ (RB even) (JJ central) (NNS banks) )(VP (MD ca) (RB n't) (VP (VB stop) (NP (PRP it) )))(. .) )) (TOP (S (NP-SBJ (NNS Speculators) )(VP (VBP are) (VP (VBG calling) (PP-CLR (IN for) (NP (NP (DT a) (NN degree) )(PP (IN of) (NP (NN liquidity) ))(SBAR (WHNP-1 (WDT that) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBZ is) (RB not) (ADVP-LOC-PRD (RB there) )(PP-LOC (IN in) (NP (DT the) (NN market) )))))))))(. .) ('' '') )) (TOP (S (NP-SBJ (NP (JJ Many) (NN money) (NNS managers) )(CC and) (NP (DT some) (NNS traders) ))(VP (VBD had) (ADVP-TMP (RB already) )(VP (VBN left) (NP (PRP$ their) (NNS offices) )(NP-TMP (RB early) (NNP Friday) (NN afternoon) )(PP-TMP (IN on) (NP (DT a) (JJ warm) (NN autumn) (NN day) ))(: --) (SBAR-PRP (IN because) (S (NP-SBJ (DT the) (NN stock) (NN market) )(VP (VBD was) (ADJP-PRD (RB so) (JJ quiet) ))))))(. .) )) (TOP (S (RB Then) (PP-LOC (IN in) (NP (DT a) (NN lightning) (NN plunge) ))(, ,) (NP-SBJ-1 (DT the) (NNP Dow) (NNP Jones) (NNS industrials) )(PP-TMP (IN in) (NP (QP (RB barely) (DT an) )(NN hour) ))(VP (VBD surrendered) (NP (NP (QP (RB about) (DT a) )(JJ third) )(PP (IN of) (NP (NP (PRP$ their) (NNS gains) )(NP-TMP (DT this) (NN year) ))))(, ,) (S-ADV (NP-SBJ (-NONE- *-1) )(VP (VBG chalking) (PRT (RP up) )(NP (NP (DT a) (ADJP (ADJP (JJ 190.58-point) )(, ,) (CC or) (ADJP (CD 6.9) (NN %) )(, ,) )(NN loss) )(PP-TMP (IN on) (NP (DT the) (NN day) )))(PP-LOC (IN in) (NP (JJ gargantuan) (NN trading) (NN volume) )))))(. .) )) (TOP (S (NP-SBJ (JJ Final-hour) (NN trading) )(VP (VBD accelerated) (PP-DIR (TO to) (NP (NP (QP (CD 108.1) (CD million) )(NNS shares) )(, ,) (NP (NP (DT a) (NN record) )(PP (IN for) (NP (DT the) (NNP Big) (NNP Board) ))))))(. .) )) (TOP (S (PP-TMP (IN At) (NP (NP (DT the) (NN end) )(PP (IN of) (NP (DT the) (NN day) ))))(, ,) (NP-SBJ-1 (QP (CD 251.2) (CD million) )(NNS shares) )(VP (VBD were) (VP (VBN traded) (NP (-NONE- *-1) )))(. .) )) (TOP (S (NP-SBJ (DT The) (NNP Dow) (NNP Jones) (NNS industrials) )(VP (VBD closed) (PP-CLR (IN at) (NP (CD 2569.26) )))(. .) )) (TOP (S (NP-SBJ (NP (DT The) (NNP Dow) (POS 's) )(NN decline) )(VP (VBD was) (ADJP-PRD (JJ second) (PP (IN in) (NP (NN point) (NNS terms) ))(PP (ADVP (RB only) )(TO to) (NP (NP (DT the) (JJ 508-point) (NNP Black) (NNP Monday) (NN crash) )(SBAR (WHNP-1 (WDT that) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBD occurred) (NP-TMP (NNP Oct.) (CD 19) (, ,)(CD 1987) ))))))))(. .) )) (TOP (S (PP-LOC (IN In) (NP (NN percentage) (NNS terms) ))(, ,) (ADVP (RB however) )(, ,) (NP-SBJ (NP (DT the) (NNP Dow) (POS 's) )(NN dive) )(VP (VBD was) (NP-PRD (NP (NP (DT the) (JJ 12th-worst) )(ADVP-TMP (RB ever) ))(CC and) (NP (NP (DT the) (JJS sharpest) )(SBAR-TMP (IN since) (S (NP-SBJ (DT the) (NN market) )(VP (VBD fell) (NP-EXT (NP (CD 156.83) )(, ,) (CC or) (NP (CD 8) (NN %) ))(, ,) (PP-TMP (NP (DT a) (NN week) )(IN after) (NP (NNP Black) (NNP Monday) ))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (NNP Dow) )(VP (VBD fell) (NP-EXT (CD 22.6) (NN %) )(PP-TMP (IN on) (NP (NNP Black) (NNP Monday) )))(. .) )) (TOP (S (NP-SBJ-1 (NP (NNP Shares) )(PP (IN of) (NP (NP (NNP UAL) )(, ,) (NP (NP (DT the) (NN parent) )(PP (IN of) (NP (NNP United) (NNP Airlines) )))(, ,) )))(VP (VBD were) (ADJP-PRD (RB extremely) (JJ active) )(NP-TMP (DT all) (NN day) )(NP-TMP (NNP Friday) )(, ,) (S-ADV (NP-SBJ (-NONE- *-1) )(VP (VBG reacting) (PP-CLR (TO to) (NP (NP (NN news) (CC and)(NNS rumors) )(PP (IN about) (NP (NP (DT the) (VBN proposed) (ADJP (QP ($ $) (CD 6.79) (CD billion) )(-NONE- *U*) )(NN buy-out) )(PP (IN of) (NP (DT the) (NN airline) ))(PP (IN by) (NP (DT an) (JJ employee-management) (NN group) )))))))))(. .) )) (TOP (S (NP-SBJ (NP (NNP Wall) (NNP Street) (POS 's) )(NX (NX (JJ takeover-stock) (NNS speculators) )(, ,) (CC or) (`` ``) (NX (NN risk) (NNS arbitragers) )(, ,) ('' '') ))(VP (VBD had) (VP (VBN placed) (NP (ADJP (RB unusually) (JJ large) )(NNS bets) (SBAR (IN that) (S (S (NP-SBJ (DT a) (NN takeover) )(VP (MD would) (VP (VB succeed) )))(CC and) (S (NP-SBJ (NNP UAL) (NN stock) )(VP (MD would) (VP (VB rise) ))))))))(. .) )) (TOP (S (SINV (PP-TMP (IN At) (NP (CD 2:43) (RB p.m.) (NNP EDT) ))(, ,) (VBD came) (NP-SBJ (DT the) (JJ sickening) (NN news) ))(: :) (S (NP-SBJ (DT The) (NNP Big) (NNP Board) )(VP (VBD was) (VP (VBG halting) (NP (NP (VBG trading) )(PP-LOC (IN in) (NP (NNP UAL) )))(, ,) (`` ``) (PP-TMP (VBG pending) (NP (NN news) )))))(. .) ('' '') )) (TOP (SINV (S-TPC-1 (PP-LOC (IN On) (NP (DT the) (NN exchange) (NN floor) ))(, ,) (`` ``) (ADVP-TMP (ADVP (RB as) (RB soon) )(SBAR (IN as) (S (NP-SBJ-2 (NNP UAL) )(VP (VBD stopped) (S (NP-SBJ (-NONE- *-2) )(VP (VBG trading) ))))))(, ,) (NP-SBJ (PRP we) )(VP (VBD braced) (PP-CLR (IN for) (NP (DT a) (NN panic) ))))(, ,) ('' '') (VP (VBD said) (SBAR (-NONE- 0) (S (-NONE- *T*-1) )))(NP-SBJ (CD one) (JJ top) (NN floor) (NN trader) )(. .) )) (TOP (S (NP-SBJ-1 (JJ Several) (NNS traders) )(VP (MD could) (VP (VB be) (VP (VBN seen) (S (NP-SBJ (-NONE- *-1) )(VP (VBG shaking) (NP (PRP$ their) (NNS heads) )))(SBAR-TMP (WHADVP-2 (WRB when) )(S (NP-SBJ (DT the) (NN news) )(VP (VBD flashed) (ADVP-TMP (-NONE- *T*-2) )))))))(. .) )) (TOP (S (PP-TMP (IN For) (NP (NNS weeks) ))(, ,) (NP-SBJ (DT the) (NN market) )(VP (VBD had) (VP (VBN been) (ADJP-PRD (JJ nervous) (PP (IN about) (NP (NNS takeovers) )))(, ,) (SBAR-TMP (IN after) (S (NP-SBJ (NP (NNP Campeau) (NNP Corp.) (POS 's) )(NN cash) (NN crunch) )(VP (VBD spurred) (NP (NP (NN concern) )(PP (IN about) (NP (NP (DT the) (NNS prospects) )(PP (IN for) (NP (JJ future) (ADJP (RB highly) (JJ leveraged) )(NNS takeovers) ))))))))))(. .) )) (TOP (SINV (CC And) (PP-TMP (NP (CD 10) (NNS minutes) )(IN after) (NP (DT the) (NNP UAL) (NN trading) (NN halt) ))(VP (VBD came) )(NP-SBJ (NN news) (SBAR (IN that) (S (NP-SBJ (DT the) (NNP UAL) (NN group) )(VP (MD could) (RB n't) (VP (VB get) (NP (NP (NN financing) )(PP (IN for) (NP (PRP$ its) (NN bid) ))))))))(. .) )) (TOP (S (PP-TMP (IN At) (NP (DT this) (NN point) ))(, ,) (NP-SBJ (DT the) (NNP Dow) )(VP (VBD was) (ADVP-PRD (RB down) (NP (QP (RB about) (CD 35) )(NNS points) )))(. .) )) (TOP (S (NP-SBJ (DT The) (NN market) )(VP (VBD crumbled) )(. .) )) (TOP (S (S (NP-SBJ (NNS Arbitragers) )(VP (MD could) (RB n't) (VP (VB dump) (NP (PRP$ their) (NNP UAL) (NN stock) ))))(: --) (CC but) (S (NP-SBJ (PRP they) )(VP (VBD rid) (NP (PRP themselves) )(PP-CLR (IN of) (NP (NP (ADJP (RB nearly) (DT every) )(`` ``) (NN rumor) ('' '') (NN stock) )(SBAR (WHNP-1 (-NONE- 0) )(S (NP-SBJ (PRP they) )(VP (VBD had) (NP (-NONE- *T*-1) ))))))))(. .) )) (TOP (S (PP (IN For) (NP (NN example) ))(, ,) (NP-SBJ (PRP$ their) (NN selling) )(VP (VBD caused) (S (NP-SBJ-5 (NP (NN trading) (NNS halts) )(PP-LOC (-NONE- *ICH*-1) ))(VP (TO to) (VP (VB be) (VP (VBN declared) (NP (-NONE- *-5) )(PP-LOC-1 (IN in) (NP (NP (NP (NNP USAir) (NNP Group) )(, ,) (SBAR (WHNP-2 (WDT which) )(S (NP-SBJ (-NONE- *T*-2) )(VP (VBD closed) (ADVP-CLR (RB down) (NP (QP (CD 3) (CD 7\/8) ))(PP (TO to) (NP (QP (CD 41) (CD 1\/2) ))))))))(, ,) (NP (NP (NNP Delta) (NNP Air) (NNP Lines) )(, ,) (SBAR (WHNP-3 (WDT which) )(S (NP-SBJ (-NONE- *T*-3) )(VP (VBD fell) (NP-EXT (QP (CD 7) (CD 3\/4) ))(PP-DIR (TO to) (NP (QP (CD 69) (CD 1\/4) )))))))(, ,) (CC and)(NP (NP (NNP Philips) (NNP Industries) )(, ,) (SBAR (WHNP-4 (WDT which) )(S (NP-SBJ (-NONE- *T*-4) )(VP (VBD sank) (NP-EXT (CD 3) )(PP-DIR (TO to) (NP (QP (CD 21) (CD 1\/2) ))))))))))))))(. .) )) (TOP (S (NP-SBJ (DT These) (NNS stocks) )(ADVP-TMP (RB eventually) )(VP (VBD reopened) )(. .) )) (TOP (S (CC But) (SBAR-TMP (IN as) (S (NP-SBJ (NN panic) )(VP (VBD spread) )))(, ,) (NP-SBJ-1 (NNS speculators) )(VP (VBD began) (S (NP-SBJ-2 (-NONE- *-1) )(VP (TO to) (VP (VB sell) (NP (NP (JJ blue-chip) (NNS stocks) )(PP (JJ such) (IN as) (NP (NP (NNP Philip) (NNP Morris) )(CC and) (NP (NNP International) (NNP Business) (NNP Machines) ))))(S-PRP (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB offset) (NP (PRP$ their) (NNS losses) ))))))))(. .) )) (TOP (S (SBAR-TMP (WHADVP-2 (WRB When) )(S (NP-SBJ-1 (NP (NN trading) )(PP-LOC (-NONE- *ICH*-3) ))(VP (VBD was) (VP (VBN halted) (NP (-NONE- *-1) )(PP-LOC-3 (IN in) (NP (NNP Philip) (NNP Morris) ))(ADVP-TMP (-NONE- *T*-2) )))))(, ,) (NP-SBJ (DT the) (NN stock) )(VP (VBD was) (VP (VBG trading) (PP-CLR (IN at) (NP (CD 41) ))(, ,) (ADVP (RB down) (NP (QP (CD 3) (CD 3\/8) )))(, ,) (SBAR-ADV (IN while) (S (NP-SBJ (NNP IBM) )(VP (VBD closed) (ADVP (NP (QP (CD 5) (CD 5\/8) ))(JJR lower) )(PP-CLR (IN at) (NP (CD 102) )))))))(. .) )) (TOP (S (NP-SBJ (NN Selling) )(VP (VBD snowballed) (PP-PRP (IN because) (IN of) (NP (NP (NNS waves) )(PP (IN of) (NP (NP (JJ automatic) (`` ``) (JJ stop-loss) ('' '') (NNS orders) )(, ,) (SBAR (WHNP-2 (WDT which) )(S (NP-SBJ-1 (-NONE- *T*-2) )(VP (VBP are) (VP (VBN triggered) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NN computer) ))(SBAR-TMP (WHADVP-3 (WRB when) )(S (NP-SBJ (NNS prices) )(VP (VBP fall) (PP-DIR (TO to) (NP (JJ certain) (NNS levels) ))(ADVP-TMP (-NONE- *T*-3) )))))))))))))(. .) )) (TOP (S (NP-SBJ (NP (JJS Most) )(PP (IN of) (NP (DT the) (NN stock) (NN selling) (NN pressure) )))(VP (VBD came) (PP-DIR (IN from) (NP (NP (NNP Wall) (NNP Street) (NNS professionals) )(, ,) (PP (VBG including) (NP (JJ computer-guided) (NN program) (NNS traders) )))))(. .) )) (TOP (S (NP-SBJ (NNS Traders) )(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (NP (JJS most) )(PP (IN of) (NP (PRP$ their) (JJ major) (JJ institutional) (NNS investors) )))(, ,) (PP (IN on) (NP (DT the) (JJ other) (NN hand) ))(, ,) (VP (VBD sat) (ADVP-MNR (RB tight) )))))(. .) )) (TOP (S (ADVP-TMP (RB Now) )(, ,) (PP-TMP (IN at) (NP (CD 3:07) ))(, ,) (NP-SBJ (NP (CD one) )(PP (IN of) (NP (NP (DT the) (NN market) (POS 's) )(JJ post-crash) (`` ``) (NNS reforms) ('' '') )))(VP (VBD took) (NP (NN hold) )(SBAR-TMP (IN as) (S (NP-SBJ (DT the) (NNP S&P) (CD 500) (NNS futures) (NN contract) )(VP (VBD had) (VP (VBN plunged) (NP-EXT (NP (CD 12) (NNS points) )(, ,) (ADJP (JJ equivalent) (PP (TO to) (NP (NP (QP (IN around) (DT a) (JJ 100-point) )(NN drop) )(PP-LOC (IN in) (NP (DT the) (NNP Dow) (NNS industrials) )))))))))))(. .) )) (TOP (S (PP-LOC (IN Under) (NP (NP (DT an) (NN agreement) )(VP (VBN signed) (NP (-NONE- *) )(PP (IN by) (NP-LGS (NP (DT the) (NNP Big) (NNP Board) )(CC and) (NP (DT the) (NNP Chicago) (NNP Mercantile) (NNP Exchange) ))))))(, ,) (NP-SBJ-1 (NN trading) )(VP (VBD was) (ADVP-TMP (RB temporarily) )(VP (VBN halted) (NP (-NONE- *-1) )(PP-LOC (IN in) (NP (NNP Chicago) ))))(. .) )) (TOP (S (PP-TMP (IN After) (NP (NP (DT the) (NN trading) (NN halt) )(PP-LOC (IN in) (NP (NP (DT the) (NNP S&P) (CD 500) (NN pit) )(PP-LOC (IN in) (NP (NNP Chicago) ))))))(, ,) (S (NP-SBJ-1 (NP (NNS waves) )(PP (IN of) (NP (NN selling) )))(VP (VBD continued) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB hit) (NP (NP (NNS stocks) )(NP (PRP themselves) ))(PP-LOC (IN on) (NP (DT the) (NNP Big) (NNP Board) )))))))(, ,) (CC and)(S (NP-SBJ-2 (NNS specialists) )(VP (VBD continued) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB notch) (NP (NNS prices) )(ADVP-DIR (RP down) ))))))(. .) )) (TOP (S (PP-PRP (IN As) (NP (DT a) (NN result) ))(, ,) (NP-SBJ (NP (DT the) (NN link) )(PP (IN between) (NP (DT the) (NNS futures) (CC and)(NN stock) (NNS markets) )))(VP (VBD ripped) (ADVP-CLR (RB apart) ))(. .) )) (TOP (S (PP (IN Without) (NP (NP (DT the) (NN guidepost) )(PP (IN of) (NP (NP (JJ stock-index) (NNS futures) )(: --) (NP (NP (DT the) (NN barometer) )(PP (IN of) (SBAR-NOM (WHADVP-2 (WRB where) )(S (NP-SBJ (NNS traders) )(VP (VBP think) (SBAR (-NONE- 0) (S (NP-SBJ-1 (DT the) (JJ overall) (NN stock) (NN market) )(VP (VBZ is) (VP (VBN headed) (NP (-NONE- *-1) )(ADVP-DIR (-NONE- *T*-2) ))))))))))(: --) ))))(NP-SBJ-3 (JJ many) (NNS traders) )(VP (VBD were) (ADJP-PRD (JJ afraid) (S (NP-SBJ (-NONE- *-3) )(VP (TO to) (VP (VB trust) (NP (NP (NN stock) (NNS prices) )(VP (VBN quoted) (NP (-NONE- *) )(PP-LOC (IN on) (NP (DT the) (NNP Big) (NNP Board) )))))))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NNS futures) (NN halt) )(VP (VBD was) (ADVP (RB even) )(VP (VBN assailed) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NNP Big) (NNP Board) (NN floor) (NNS traders) ))))(. .) )) (TOP (SINV (`` ``) (S-TPC-1 (NP-SBJ (PRP It) )(VP (VBD screwed) (NP (NNS things) )(PRT (RP up) )))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-1) ))(NP-SBJ (CD one) (JJ major) (NN specialist) )(. .) )) (TOP (S (NP-SBJ (DT This) (NN confusion) )(VP (ADVP-MNR (RB effectively) )(VBD halted) (NP (NP (NP (CD one) (NN form) )(PP (IN of) (NP (NN program) (NN trading) )))(, ,) (NP (NN stock) (NN index) (NN arbitrage) )(, ,) (SBAR (WHNP-1 (WDT that) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VP (ADVP-MNR (RB closely) )(VBZ links) (NP (DT the) (NNS futures) (CC and)(NN stock) (NNS markets) ))(, ,) (CC and)(VP (VBZ has) (VP (VBN been) (VP (VBN blamed) (NP (-NONE- *T*-1) )(PP (IN by) (NP-LGS (DT some) ))(PP-CLR (IN for) (NP (NP (DT the) (NN market) (POS 's) )(JJ big) (NNS swings) ))))))))))(. .) )) (TOP (S (-LRB- -LRB-)(PP-LOC (IN In) (NP (DT a) (JJ stock-index) (NN arbitrage) (NN sell) (NN program) ))(, ,) (NP-SBJ-1 (NNS traders) )(VP (VP (VBP buy) (CC or) (VBP sell) (NP (NP (JJ big) (NNS baskets) )(PP (IN of) (NP (NNS stocks) ))))(CC and) (VP (VBP offset) (NP (NP (DT the) (NN trade) )(PP-LOC (IN in) (NP (NNS futures) )))(S-PRP (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB lock) (PRT (RP in) )(NP (DT a) (NN price) (NN difference) ))))))(. .) (-RRB- -RRB-))) (TOP (S (`` ``) (S-TPC-3 (SBAR-TMP (WHADVP-2 (WRB When) )(S (NP-SBJ (DT the) (NN airline) (NN information) )(VP (VBD came) (PRT (RP through) )(ADVP-TMP (-NONE- *T*-2) ))))(, ,) (NP-SBJ (PRP it) )(VP (VBD cracked) (NP (NP (DT every) (NN model) )(SBAR (WHNP-1 (-NONE- 0) )(S (NP-SBJ (PRP we) )(VP (VBD had) (NP (-NONE- *T*-1) ))))(PP (IN for) (NP (DT the) (NN marketplace) )))))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-3) ))(NP-SBJ (NP (DT a) (NN managing) (NN director) )(PP-LOC (IN at) (NP (NP (CD one) )(PP (IN of) (NP (DT the) (JJS largest) (NN program-trading) (NNS firms) )))))(. .) )) (TOP (S (`` ``) (NP-SBJ (PRP We) )(VP (VBD did) (RB n't) (ADVP (RB even) )(VP (VB get) (NP (DT a) (NN chance) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB do) (NP (NP (DT the) (NNS programs) )(SBAR (WHNP-2 (-NONE- 0) )(S (NP-SBJ-1 (PRP we) )(VP (VBD wanted) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB do) (NP (-NONE- *T*-2) ))))))))))))))(. .) ('' '') )) (TOP (S (CC But) (NP-SBJ-1 (NNS stocks) )(VP (VBD kept) (S (NP-SBJ (-NONE- *-1) )(VP (VBG falling) )))(. .) )) (TOP (S (NP-SBJ (DT The) (NNP Dow) (NNS industrials) )(VP (VBD were) (ADVP-PRD (RB down) (NP (CD 55) (NNS points) ))(PP-TMP (IN at) (NP (CD 3) (RB p.m.) ))(PP-TMP (IN before) (NP (DT the) (JJ futures-trading) (NN halt) )))(. .) )) (TOP (S (PP-TMP (IN At) (NP (CD 3:30) (RB p.m.) ))(, ,) (PP-TMP (IN at) (NP (NP (DT the) (NN end) )(PP (IN of) (NP (DT the) (`` ``) (VBG cooling) (RP off) ('' '') (NN period) ))))(, ,) (NP-SBJ (DT the) (NN average) )(VP (VBD was) (ADVP-PRD (RB down) (NP (CD 114.76) (NNS points) )))(. .) )) (TOP (S (ADVP-TMP (RB Meanwhile) )(, ,) (PP-TMP (IN during) (NP (DT the) (DT the) (NNP S&P) (NN trading) (NN halt) ))(, ,) (NP-SBJ-2 (NNP S&P) (NNS futures) (NN sell) (NNS orders) )(VP (VBD began) (S (NP-SBJ (-NONE- *-2) )(VP (VBG piling) (PRT (RP up) )))(, ,) (SBAR-ADV (IN while) (S (NP-SBJ-1 (NP (NNS stocks) )(PP-LOC (IN in) (NP (NNP New) (NNP York) )))(VP (VBD kept) (S (NP-SBJ (-NONE- *-1) )(VP (VBG falling) (ADVP-MNR (RB sharply) )))))))(. .) )) (TOP (S (NP-SBJ (NNP Big) (NNP Board) (NNP Chairman) (NNP John) (NNP J.) (NNP Phelan) )(VP (VBD said) (NP-TMP (NN yesterday) )(SBAR (-NONE- 0) (S (NP-SBJ (DT the) (NN circuit) (NN breaker) )(`` ``) (VP (VBD worked) (ADVP-MNR (RB well) )(ADVP-MNR (RB mechanically) )))))(. .) )) (TOP (S (NP-SBJ (PRP I) )(ADVP (RB just) )(VP (VBP think) (SBAR (-NONE- 0) (S (NP-SBJ (NP (PRP it) )(S (-NONE- *EXP*-1) ))(VP (VBZ 's) (ADJP-PRD (JJ nonproductive) )(PP-TMP (IN at) (NP (DT this) (NN point) ))(S-1 (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB get) (PP-DIR (IN into) (NP (DT a) (NN debate) (SBAR (IN if) (S (NP-SBJ (NN index) (NN arbitrage) )(VP (MD would) (VP (VB have) (VP (VBN helped) (CC or) (VBN hurt) (NP (NNS things) )))))))))))))))(. .) ('' '') )) (TOP (S (PP-LOC (IN Under) (NP (DT another) (JJ post-crash) (NN system) ))(, ,) (NP-SBJ (NNP Big) (NNP Board) (NNP President) (NNP Richard) (NNP Grasso) )(PRN (-LRB- -LRB-)(S (NP-SBJ (NNP Mr.) (NNP Phelan) )(VP (VBD was) (VP (VBG flying) (PP-DIR (TO to) (NP (NNP Bangkok) ))(SBAR-TMP (IN as) (S (NP-SBJ (DT the) (NN market) )(VP (VBD was) (VP (VBG falling) )))))))(-RRB- -RRB-) )(VP (VBD was) (VP (VBG talking) (PP-LOC (IN on) (NP (NP (DT an) (`` ``) (JJ inter-exchange) (JJ hot) (NN line) ('' '') )(PP (TO to) (NP (NP (DT the) (JJ other) (NNS exchanges) )(, ,) (NP (DT the) (NNP Securities) (CC and)(NNP Exchange) (NNP Commission) )(CC and) (NP (DT the) (NNP Federal) (NNP Reserve) (NNP Board) )))))))(. .) )) (TOP (S (NP-SBJ (PRP He) )(VP (VBD camped) (PRT (RP out) )(PP-LOC (IN at) (NP (NP (DT a) (JJ high-tech) (NN nerve) (NN center) )(PP-LOC (IN on) (NP (NP (DT the) (NN floor) )(PP (IN of) (NP (DT the) (NNP Big) (NNP Board) ))))(, ,) (SBAR (WHADVP-1 (WRB where) )(S (NP-SBJ (PRP he) )(VP (MD could) (VP (VB watch) (NP (NP (NNS updates) )(PP (IN on) (NP (NP (NNS prices) )(CC and) (NP (VBG pending) (NN stock) (NNS orders) ))))(ADVP-LOC (-NONE- *T*-1) ))))))))(. .) )) (TOP (S (S (PP-TMP (IN At) (NP (RB about) (CD 3:30) (RB p.m.) (NNP EDT) ))(, ,) (NP-SBJ-1 (NNP S&P) (NNS futures) )(VP (VBD resumed) (S (NP-SBJ (-NONE- *-1) )(VP (VBG trading) ))))(, ,) (CC and)(S (PP-TMP (IN for) (NP (DT a) (JJ brief) (NN time) ))(NP-SBJ-2 (DT the) (NNS futures) (CC and)(NN stock) (NNS markets) )(VP (VBD started) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB come) (ADVP-DIR (RB back) (PP (IN in) (NP (NN line) ))))))))(. .) )) (TOP (S (NP-SBJ (NNS Buyers) )(VP (VBD stepped) (ADVP-DIR (IN in) (PP (TO to) (NP (DT the) (NNS futures) (NN pit) ))))(. .) )) (TOP (S (S (CC But) (NP-SBJ (NP (DT the) (NN build-up) )(PP (IN of) (NP (NNP S&P) (NNS futures) (NN sell) (NNS orders) )))(VP (VBD weighed) (PP-CLR (IN on) (NP (DT the) (NN market) ))))(, ,) (CC and)(S (NP-SBJ-1 (NP (DT the) (NN link) )(PP (IN with) (NP (NNS stocks) )))(VP (VBD began) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB fray) (ADVP-TMP (RB again) ))))))(. .) )) (TOP (S (PP-TMP (IN At) (NP (RB about) (CD 3:45) ))(, ,) (S (NP-SBJ (DT the) (NNP S&P) (NN market) )(VP (VBD careened) (PP-DIR (TO to) (NP (NP (ADJP (RB still) (DT another) )(NN limit) (, ,))(PP (IN of) (NP (NP (CD 30) (NNS points) )(ADVP (RB down) )))))))(, ,) (CC and)(S (NP-SBJ-1 (NN trading) )(VP (VBD was) (VP (VBN locked) (NP (-NONE- *-1) )(ADVP-TMP (RB again) ))))(. .) )) (TOP (S (NP-SBJ (NNS Futures) (NNS traders) )(VP (VBP say) (SBAR (-NONE- 0) (S (NP-SBJ (DT the) (NNP S&P) )(VP (VBD was) (VP (VBG signaling) (SBAR (IN that) (S (NP-SBJ (DT the) (NNP Dow) )(VP (MD could) (VP (VB fall) (NP-EXT (NP (RB as) (JJ much) )(PP (IN as) (NP (CD 200) (NNS points) ))))))))))))(. .) )) (TOP (S (PP-TMP (IN During) (NP (DT this) (NN time) ))(, ,) (NP-SBJ-1 (JJ small) (NNS investors) )(VP (VBD began) (S (NP-SBJ (-NONE- *-1) )(VP (VBG ringing) (NP (PRP$ their) (NNS brokers) )))(, ,) (S-ADV (NP-SBJ (-NONE- *-1) )(VP (VBG wondering) (SBAR (IN whether) (S (NP-SBJ (DT another) (NN crash) )(VP (VBD had) (VP (VBN begun) )))))))(. .) )) (TOP (S (PP-LOC (IN At) (NP (NP (NNP Prudential-Bache) (NNP Securities) (NNP Inc.) )(, ,) (SBAR (WHNP-1 (WDT which) )(S (NP-SBJ-2 (-NONE- *T*-1) )(VP (VBZ is) (VP (VBG trying) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB cater) (PP-CLR (TO to) (NP (JJ small) (NNS investors) )))))))))(, ,) ))(NP-SBJ (DT some) (JJ demoralized) (NNS brokers) )(VP (VBD thought) (SBAR (-NONE- 0) (S (NP-SBJ (DT this) )(VP (MD would) (VP (VB be) (NP-PRD (DT the) (JJ final) (NN confidence-crusher) ))))))(. .) )) (TOP (S (NP-SBJ (DT That) )(VP (VBZ 's) (SBAR-PRD (WHADVP-2 (WRB when) )(S (NP-SBJ-1 (NP (NNP George) (NNP L.) (NNP Ball) )(, ,) (NP (NP (NN chairman) )(PP (IN of) (NP (DT the) (NAC (NNP Prudential) (NNP Insurance) (NNP Co.) (PP (IN of) (NP (NNP America) )))(NN unit) )))(, ,) )(VP (VBD took) (PP-CLR (TO to) (NP (DT the) (JJ internal) (NN intercom) (NN system) ))(S-PRP (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB declare) (SBAR (IN that) (S (NP-SBJ (DT the) (NN plunge) )(VP (VBD was) (ADJP-PRD (RB only) (`` ``) (JJ mechanical) )))))))(ADVP-TMP (-NONE- *T*-2) )))))(. .) ('' '') )) (TOP (S (`` ``) (NP-SBJ (PRP I) )(VP (VBP have) (NP (DT a) (NN hunch) (SBAR (IN that) (S (NP-SBJ (NP (DT this) (JJ particular) (NN decline) )(NP-TMP (NN today) ))(VP (VBZ is) (NP-PRD (NP (NN something) )(`` `) (NP (NP (JJR more) (NN ado) )(PP (IN about) (NP (JJR less) )))))))))(. .) ('' ') )) (TOP (S (S-TPC-2 (NP-SBJ (NP (PRP It) )(S (-NONE- *EXP*-1) ))(VP (MD would) (VP (VB be) (NP-PRD (PRP$ my) (NN inclination) )(S-1 (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB advise) (NP-3 (NNS clients) )(S (NP-SBJ (-NONE- *-3) )(VP (VP (RB not) (TO to) (VP (VB sell) ))(, ,) (VP (TO to) (VP (VB look) (PP-CLR (IN for) (NP (DT an) (NN opportunity) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB buy) )))))))))))))))(, ,) ('' '') (NP-SBJ (NNP Mr.) (NNP Ball) )(VP (VBD told) (NP (DT the) (NNS brokers) )(S (-NONE- *T*-2) ))(. .) )) (TOP (S (PP-LOC (IN At) (NP (NP (NNP Merrill) (NNP Lynch) (CC &) (NNP Co.) )(, ,) (NP (NP (DT the) (NN nation) (POS 's) )(JJS biggest) (NN brokerage) (NN firm) )))(, ,) (NP-SBJ-3 (NP (DT a) (NN news) (NN release) )(VP (-NONE- *ICH*-2) ))(VP (VBD was) (VP (VBN prepared) (NP (-NONE- *-3) )(VP-2 (VBN headlined) (S (NP-SBJ (-NONE- *) )(`` ``) (S-TTL-PRD (NP-SBJ (NNP Merrill) (NNP Lynch) )(VP (NNP Comments) (PP-CLR (IN on) (NP (NNP Market) (NNP Drop) ))))))))(. .) ('' '') )) (TOP (S (NP-SBJ (DT The) (NN release) )(VP (VBD cautioned) (SBAR (SBAR (IN that) (`` ``) (S (NP-SBJ (EX there) )(VP (VBP are) (NP-PRD (NP (JJ significant) (NNS differences) )(PP (IN between) (NP (NP (DT the) (JJ current) (NN environment) )(CC and) (NP (NP (IN that) )(PP (IN of) (NP (NNP October) (CD 1987) ))))))))('' '') )(CC and) (SBAR (IN that) (S (NP-SBJ (EX there) )(VP (VBP are) (ADVP-TMP (RB still) )(NP-PRD (`` ``) (NP (JJ attractive) (NN investment) (NNS opportunities) )('' '') (PP-LOC (IN in) (NP (DT the) (NN stock) (NN market) ))))))))(. .) )) (TOP (S (ADVP (RB However) )(, ,) (NP-SBJ (NP (NNP Jeffrey) (NNP B.) (NNP Lane) )(, ,) (NP (NP (NN president) )(PP (IN of) (NP (NNP Shearson) (NNP Lehman) (NNP Hutton) (NNP Inc.) )))(, ,) )(VP (VBD said) (SBAR (IN that) (S (NP-SBJ-1 (NP (NNP Friday) (POS 's) )(NN plunge) )(VP (VBZ is) (`` ``) (VP (VBG going) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB set) (PRT (RP back) )('' '') (NP (NP (NNS relations) )(PP (IN with) (NP (NNS customers) ))))))(, ,) (`` ``) (SBAR-PRP (IN because) (S (NP-SBJ (PRP it) )(VP (VBZ reinforces) (NP (NP (DT the) (NN concern) )(PP (IN of) (NP (NN volatility) )))))))))))(. .) )) (TOP (S (CC And) (NP-SBJ (PRP I) )(VP (VBP think) (SBAR (-NONE- 0) (S (NP-SBJ (NP (DT a) (NN lot) )(PP (IN of) (NP (NNS people) )))(VP (MD will) (VP (VB harp) (PP-CLR (IN on) (NP (NN program) (NN trading) )))))))(. .) )) (TOP (S (NP-SBJ-1 (PRP It) )(VP (VBZ 's) (VP (VBG going) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB bring) (NP (DT the) (NN debate) )(ADVP-DIR (RB right) (RB back) (PP (TO to) (NP (DT the) (NN forefront) ))))))))(. .) ('' '') )) (TOP (S (SBAR-TMP (IN As) (S (NP-SBJ (DT the) (NNP Dow) (JJ average) )(VP (NN ground) (PP-DIR (TO to) (NP (PRP$ its) (JJ final) (CD 190.58) (NN loss) ))(NP-TMP (NNP Friday) ))))(, ,) (NP-SBJ (DT the) (NNP S&P) (NN pit) )(VP (VBD stayed) (ADJP-PRD (JJ locked) (PP (IN at) (NP (PRP$ its) (JJ 30-point) (NN trading) (NN limit) ))))(. .) )) (TOP (S (NP-SBJ (NP (NNP Jeffrey) (NNP Yass) )(PP (IN of) (NP (NN program) (NN trader) (NNP Susquehanna) (NNP Investment) (NNP Group) )))(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (NP (CD 2,000) (NNP S&P) (NNS contracts) )(NP (-NONE- *ICH*-1) ))(VP (VBD were) (PP-PRD (IN for) (NP (NN sale) ))(PP-TMP (IN on) (NP (DT the) (NN close) ))(, ,) (NP-1 (NP (DT the) (NN equivalent) )(PP (IN of) (NP (NP (QP ($ $) (CD 330) (CD million) )(-NONE- *U*) )(PP (IN in) (NP (NN stock) )))))))))(. .) )) (TOP (S (CC But) (NP-SBJ (EX there) )(VP (VBD were) (NP-PRD (DT no) (NNS buyers) ))(. .) )) (TOP (S (S-TPC-1 (SBAR-ADV (IN While) (S (NP-SBJ (NP (NNP Friday) (POS 's) )(NN debacle) )(VP (VB involved) (ADVP (RB mainly) )(NP (NP (JJ professional) (NNS traders) )(PP (RB rather) (IN than) (NP (NNS investors) ))))))(, ,) (NP-SBJ (PRP it) )(VP (VBD left) (S (NP-SBJ (DT the) (NN market) )(ADJP-PRD (JJ vulnerable) (PP (TO to) (NP (JJ continued) (NN selling) )))(NP-TMP (DT this) (NN morning) ))))(, ,) (NP-SBJ (NNS traders) )(VP (VBD said) (SBAR (-NONE- 0) (S (-NONE- *T*-1) )))(. .) )) (TOP (S (NP-SBJ (JJ Stock-index) (NNS futures) (NNS contracts) )(VP (VBD settled) (PP-CLR (IN at) (NP (NP (ADJP (RB much) (JJR lower) )(NNS prices) )(PP (IN than) (NP (NP (NNS indexes) )(PP (IN of) (NP (NP (DT the) (NN stock) (NN market) )(NP (PRP itself) ))))))))(. .) )) (TOP (S (PP-LOC (IN At) (NP (DT those) (NNS levels) ))(, ,) (NP-SBJ-3 (NNS stocks) )(VP (VBP are) (VP (VBN set) (PRT (RP up) )(S (NP-SBJ-1 (-NONE- *-3) )(VP (TO to) (VP (VB be) (VP (VBN hammered) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NP (NN index) (NNS arbitragers) )(, ,) (SBAR (WHNP-2 (WP who) )(S (NP-SBJ-4 (-NONE- *T*-2) )(VP (VP (VBP lock) (PRT (RP in) )(NP (NNS profits) )(PP-MNR (IN by) (S-NOM (NP-SBJ (-NONE- *-4) )(VP (VBG buying) (NP (NNS futures) )(SBAR-TMP (WHADVP-5 (WRB when) )(S (NP-SBJ (NNS futures) (NNS prices) )(VP (VBP fall) (ADVP-TMP (-NONE- *T*-5) ))))))))(, ,) (CC and)(VP (ADVP-TMP (RB simultaneously) )(VBP sell) (PRT (RP off) )(NP (NNS stocks) )))))))))))))(. .) )) (TOP (S (CC But) (NP-SBJ (NN nobody) )(VP (VBZ knows) (SBAR (WHPP-1 (IN at) (WHNP (WP what) (NN level) ))(S (NP-SBJ (DT the) (NNS futures) (CC and)(NNS stocks) )(VP (MD will) (VP (VB open) (NP-TMP (NN today) )(PP-LOC (-NONE- *T*-1) ))))))(. .) )) (TOP (S (NP-SBJ (NP (DT The) (NN de-linkage) )(PP (IN between) (NP (DT the) (NN stock) (CC and)(NNS futures) (NNS markets) ))(NP-TMP (NNP Friday) ))(VP (MD will) (ADVP (RB undoubtedly) )(VP (NN cause) (NP (NP (JJ renewed) (NN debate) )(PP (IN about) (SBAR (IN whether) (S (NP-SBJ (NNP Wall) (NNP Street) )(VP (VBZ is) (ADJP-PRD (RB properly) (JJ prepared) (PP (IN for) (NP (DT another) (NN crash) (NN situation) ))))))))))(. .) )) (TOP (S (NP-SBJ (NP (DT The) (NNP Big) (NNP Board) (POS 's) )(NNP Mr.) (NNP Grasso) )(VP (VBD said) (, ,)(SBAR (-NONE- 0) (`` ``) (S (NP-SBJ (PRP$ Our) (JJ systemic) (NN performance) )(VP (VBD was) (ADJP-PRD (JJ good) )))))(. .) ('' '') )) (TOP (S (CC But) (NP-SBJ (DT the) (NN exchange) )(VP (MD will) (`` ``) (VP (VB look) (PP-CLR (IN at) (NP (NP (DT the) (NN performance) )(PP (IN of) (NP (DT all) (NNS specialists) ))(PP-LOC (IN in) (NP (DT all) (NNS stocks) ))))))(. .) )) (TOP (S (S-TPC-3 (ADVP (RB Obviously) )(NP-SBJ (PRP we) )(VP (MD 'll) (VP (VB take) (NP (NP (DT a) (JJ close) (NN look) )(PP (IN at) (NP (NP (DT any) (NN situation) )(SBAR (WHPP-2 (IN in) (WHNP (WDT which) ))(S (NP-SBJ (PRP we) )(VP (VBP think) (SBAR (-NONE- 0) (S (NP-SBJ-1 (DT the) (ADJP (JJ dealer-community) )(NNS obligations) )(VP (VBD were) (RB n't) (VP (VBN met) (NP (-NONE- *-1) )(PP-LOC (-NONE- *T*-2) ))))))))))))))(, ,) ('' '') (NP-SBJ (PRP he) )(VP (VBD said) (S (-NONE- *T*-3) ))(. .) )) (TOP (S (-LRB- -LRB-)(NP-SBJ (-NONE- *) )(VP (VB See) (NP (NP (JJ related) (NN story) )(: :) (NP (`` ``) (S-TTL (NP-SBJ (NNP Fed) )(ADJP-PRD (JJ Ready) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB Inject) (NP (JJ Big) (NNS Funds) ))))))('' '') (: --) (NP-LOC (NNP WSJ) )(NP-TMP (NNP Oct.) (CD 16) (, ,)(CD 1989) ))))(-RRB- -RRB-) )) (TOP (S (CC But) (NP-SBJ (NNS specialists) )(VP (VBP complain) (ADVP-MNR (RB privately) )(SBAR (IN that) (S (PP-LOC (ADVP (RB just) (IN as) )(IN in) (NP (DT the) (CD 1987) (NN crash) ))(, ,) (NP-SBJ (NP (DT the) (`` ``) (JJ upstairs) ('' '') (NNS firms) )(: --) (NP (NP (JJ big) (NN investment) (NNS banks) )(SBAR (WHNP-1 (WDT that) )(S (NP-SBJ-2 (-NONE- *T*-1) )(VP (VBP support) (NP (DT the) (NN market) )(PP-MNR (IN by) (S-NOM (NP-SBJ (-NONE- *-2) )(VP (VBG trading) (NP (NP (JJ big) (NNS blocks) )(PP (IN of) (NP (NN stock) ))))))))))(: --) )(VP (VBD stayed) (PP-LOC-CLR (IN on) (NP (DT the) (NNS sidelines) ))(PP-TMP (IN during) (NP (NP (NNP Friday) (POS 's) )(NN blood-letting) ))))))(. .) )) (TOP (S (NP-SBJ (NNP Mr.) (NNP Phelan) )(VP (VBD said) (, ,)(SBAR (-NONE- 0) (S (`` ``) (NP-SBJ (NP (PRP It) )(S (-NONE- *EXP*-2) ))(VP (MD will) (VP (VB take) (NP (DT another) (NN day) (QP (CC or) (CD two) ))('' '') (S-2 (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB analyze) (SBAR (WHNP-1 (WP who) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBD was) (VP (VBG buying) (CC and)(VBG selling) (NP-TMP (NNP Friday) )))))))))))))(. .) )) (TOP (S (PP (VBG Concerning) (NP (NP (PRP$ your) (NNP Sept.) (CD 21) (JJ page-one) (NN article) )(PP (IN on) (NP (NP (NNP Prince) (NNP Charles) )(CC and) (NP (DT the) (NNS leeches) )))))(: :) (NP-SBJ (NP (PRP It) )(SBAR (-NONE- *EXP*-1) ))(VP (VBZ 's) (NP-PRD (QP (DT a) (JJ few) (CD hundred) )(NNS years) )(SBAR-1 (IN since) (S (NP-SBJ (NNP England) )(VP (VBZ has) (VP (VBN been) (NP-PRD (DT a) (NN kingdom) ))))))(. .) )) (TOP (S (NP-SBJ (PRP It) )(VP (VBZ 's) (ADVP-TMP (RB now) )(NP-PRD (NP (NP (DT the) (NNP United) (NNP Kingdom) )(PP (IN of) (NP (NP (NNP Great) (NNP Britain) )(CC and) (NP (NNP Northern) (NNP Ireland) ))))(, ,) (PP (VBG comprising) (NP (NP (NNP Wales) )(, ,) (NP (NNP Northern) (NNP Ireland) )(, ,) (NP (NNP Scotland) )(, ,) (CC and)(: ...) (INTJ (UH oh) (UH yes) )(, ,) (NP (NNP England) )(, ,) (RB too) ))))(. .) )) (TOP (S (NP-SBJ (-NONE- *) )(ADVP (RB Just) )(VP (VBD thought) (SBAR (-NONE- 0) (S (NP-SBJ-1 (PRP you) )(VP (MD 'd) (VP (VB like) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB know) ))))))))(. .) )) (TOP (NP (NNP George) (NNP Morton) )) (TOP (S (NP-SBJ (NAC (NNP Ports) (PP (IN of) (NP (NNP Call) )))(NNP Inc.) )(VP (VBD reached) (NP (NNS agreements) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB sell) (NP (PRP$ its) (VBG remaining) (CD seven) (NN aircraft) )(PP-DTV (TO to) (NP (NP (NNS buyers) )(SBAR (WHNP-2 (WDT that) )(S (NP-SBJ-1 (-NONE- *T*-2) )(VP (VBD were) (RB n't) (VP (VBN disclosed) (NP (-NONE- *-1) ))))))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (NNS agreements) )(VP (VBP bring) (PP-DIR (TO to) (NP (NP (DT a) (NN total) )(PP (IN of) (NP (CD nine) ))))(NP (NP (DT the) (NN number) )(PP (IN of) (NP (NNS planes) ))(SBAR (WHNP-1 (-NONE- 0) )(S (NP-SBJ (DT the) (NN travel) (NN company) )(VP (VBZ has) (VP (VBN sold) (NP (-NONE- *T*-1) )(NP-TMP (DT this) (NN year) )(PP (IN as) (NP (NP (NN part) )(PP (IN of) (NP (DT a) (NN restructuring) ))))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (NN company) )(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ-1 (NP (DT a) (NN portion) )(PP (IN of) (NP (NP (DT the) (QP ($ $) (CD 32) (CD million) )(-NONE- *U*) )(VP (VBN realized) (NP (-NONE- *) )(PP-CLR (IN from) (NP (DT the) (NNS sales) ))))))(VP (MD will) (VP (VB be) (VP (VBN used) (NP-2 (-NONE- *-1) )(S-CLR (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB repay) (NP (NP (PRP$ its) (NN bank) (NN debt) )(CC and) (NP (NP (JJ other) (NNS obligations) )(VP (VBG resulting) (PP-CLR (IN from) (NP (DT the) (ADJP (RB currently) (VBN suspended) )(JJ air-charter) (NNS operations) ))))))))))))))(. .) )) (TOP (S (ADVP-TMP (RBR Earlier) )(NP-SBJ (DT the) (NN company) )(VP (VBD announced) (SBAR (-NONE- 0) (S (NP-SBJ (PRP it) )(VP (MD would) (VP (VB sell) (NP (NP (PRP$ its) (VBG aging) (NN fleet) )(PP (IN of) (NP (NNP Boeing) (NNP Co.) (NNPS 707s) )))(PP-PRP (IN because) (IN of) (NP (VBG increasing) (NN maintenance) (NNS costs) )))))))(. .) )) (TOP (S (NP-SBJ (NP (DT A) (NN consortium) )(PP (IN of) (NP (JJ private) (NNS investors) ))(VP (VBG operating) (PP-CLR (IN as) (NP (NNP LJH) (NNP Funding) (NNP Co.) ))))(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (PRP it) )(VP (VBZ has) (VP (VBN made) (NP (NP (DT a) (ADJP (QP ($ $) (CD 409) (CD million) )(-NONE- *U*) )(NN cash) (NN bid) )(PP (IN for) (NP (NP (JJS most) )(PP (IN of) (NP (NP (NNP L.J.) (NNP Hooker) (NNP Corp.) (POS 's) )(NN real-estate) (CC and)(NN shopping-center) (NNS holdings) ))))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (ADJP (QP ($ $) (CD 409) (CD million) )(-NONE- *U*) )(NN bid) )(VP (VBZ includes) (NP (NP (DT the) (NN assumption) )(PP (IN of) (NP (NP (DT an) (JJ estimated) (QP ($ $) (CD 300) (CD million) )(-NONE- *U*) )(PP (IN in) (NP (NP (JJ secured) (NNS liabilities) )(PP (IN on) (NP (DT those) (NNS properties) )))))))(, ,) (PP (VBG according) (PP (TO to) (NP (NP (DT those) )(VP (VBG making) (NP (DT the) (NN bid) ))))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NN group) )(VP (VBZ is) (VP (VBN led) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NP (NP (NNP Jay) (NNP Shidler) )(, ,) (NP (NP (JJ chief) (JJ executive) (NN officer) )(PP (IN of) (NP (NP (NNP Shidler) (NNP Investment) (NNP Corp.) )(PP-LOC (IN in) (NP (NNP Honolulu) ))))))(, ,) (CC and)(NP (NP (NNP A.) (NNP Boyd) (NNP Simpson) )(, ,) (NP (NP (JJ chief) (NN executive) )(PP (IN of) (NP (DT the) (JJ Atlanta-based) (NNP Simpson) (NNP Organization) (NNP Inc) ))))))))(. .) )) (TOP (S (S (NP-SBJ-1 (NP (NNP Mr.) (NNP Shidler) (POS 's) )(NN company) )(VP (VP (VBZ specializes) (PP-CLR (IN in) (NP (JJ commercial) (NN real-estate) (NN investment) )))(CC and) (VP (VBZ claims) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB have) (NP (NP (QP ($ $) (CD 1) (CD billion) )(-NONE- *U*) )(PP (IN in) (NP (NNS assets) )))))))))(: ;) (S (NP-SBJ (NNP Mr.) (NNP Simpson) )(VP (VBZ is) (NP-PRD (NP (DT a) (NN developer) )(CC and) (NP (NP (DT a) (JJ former) (JJ senior) (NN executive) )(PP (IN of) (NP (NNP L.J.) (NNP Hooker) ))))))(. .) )) (TOP (SINV (`` ``) (S-TPC-2 (S (NP-SBJ (DT The) (NNS assets) )(VP (VBP are) (ADJP-PRD (JJ good) )))(, ,) (CC but) (S (NP-SBJ (PRP they) )(VP (VBP require) (NP (NP (JJR more) (NN money) (CC and)(NN management) )('' '') (SBAR (IN than) (S (NP-SBJ-1 (-NONE- *) )(VP (MD can) (VP (VB be) (VP (VBN provided) (NP (-NONE- *-1) )(PP-LOC (IN in) (NP (NP (NNP L.J.) (NNP Hooker) (POS 's) )(JJ current) (NN situation) )))))))))))(, ,) (VP (VBD said) (SBAR (-NONE- 0) (S (-NONE- *T*-2) )))(NP-SBJ (NNP Mr.) (NNP Simpson) )(PP-LOC (IN in) (NP (DT an) (NN interview) ))(. .) (`` ``) )) (TOP (S (NP-SBJ (NP (NNP Hooker) (POS 's) )(NN philosophy) )(VP (VBD was) (S-PRD (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB build) (CC and)(VB sell) ))))(. .) )) (TOP (S (NP-SBJ-1 (PRP We) )(VP (VBP want) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB build) (CC and)(VB hold) ))))(. .) ('' '') )) (TOP (S (NP-SBJ (NP (NNP L.J.) (NNP Hooker) )(, ,) (VP (VBN based) (NP (-NONE- *) )(PP-LOC-CLR (IN in) (NP (NNP Atlanta) )))(, ,) )(VP (VBZ is) (VP (VBG operating) (PP (IN with) (NP (NP (NN protection) )(PP (IN from) (NP (PRP$ its) (NNS creditors) ))(PP-LOC (IN under) (NP (NP (NNP Chapter) (CD 11) )(PP (IN of) (NP (DT the) (NNP U.S.) (NNP Bankruptcy) (NNP Code) ))))))))(. .) )) (TOP (S (NP-SBJ-1 (NP (PRP$ Its) (NN parent) (NN company) )(, ,) (NP (NP (NNP Hooker) (NNP Corp.) )(PP (IN of) (NP (NP (NNP Sydney) )(, ,) (NP (NNP Australia) ))))(, ,) )(VP (VBZ is) (ADVP-TMP (RB currently) )(VP (VBG being) (VP (VBN managed) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (DT a) (JJ court-appointed) (JJ provisional) (NN liquidator) )))))(. .) )) (TOP (S (NP-SBJ (NP (NNP Sanford) (NNP Sigoloff) )(, ,) (NP (NP (JJ chief) (NN executive) )(PP (IN of) (NP (NNP L.J.) (NNP Hooker) )))(, ,) )(VP (VBD said) (NP-TMP (NN yesterday) )(PP-LOC (IN in) (NP (DT a) (NN statement) ))(SBAR (SBAR (IN that) (S (NP-SBJ (PRP he) )(VP (VBZ has) (RB not) (ADVP-TMP (RB yet) )(VP (VBN seen) (NP (DT the) (NN bid) )))))(CC but) (SBAR (IN that) (S (NP-SBJ (PRP he) )(VP (MD would) (VP (VP (VB review) (NP (PRP it) ))(CC and) (VP (VB bring) (NP (PRP it) )(PP-DIR (TO to) (NP (NP (DT the) (NN attention) )(PP (IN of) (NP (DT the) (NNS creditors) (NN committee) )))))))))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (ADJP (QP ($ $) (CD 409) (CD million) )(-NONE- *U*) )(NN bid) )(VP (VBZ is) (VP (VBN estimated) (NP-2 (-NONE- *-1) )(PP (IN by) (NP-LGS (NNP Mr.) (NNP Simpson) ))(PP-CLR (IN as) (S-NOM (NP-SBJ (-NONE- *-2) )(VP (VBG representing) (NP (NP (CD 75) (NN %) )(PP (IN of) (NP (NP (DT the) (NN value) )(PP (IN of) (NP (NP (DT all) (NNP Hooker) (NN real-estate) (NNS holdings) )(PP-LOC (IN in) (NP (DT the) (NNP U.S.) ))))))))))))(. .) )) (TOP (SINV (VP-TPC-1 (RB Not) (VBN included) (NP (-NONE- *) )(PP-CLR (IN in) (NP (DT the) (NN bid) )))(VP (VBP are) (VP (-NONE- *T*-1) ))(NP-SBJ (NP (NP (NNP Bonwit) (NNP Teller) )(CC or) (NP (NNP B.) (NNP Altman) (CC &) (NNP Co.) ))(, ,) (NP (NP (NNP L.J.) (NNP Hooker) (POS 's) )(NN department-store) (NNS chains) ))(. .) )) (TOP (S (NP-SBJ (DT The) (NN offer) )(VP (VBZ covers) (NP (NP (NP (DT the) (JJ massive) (CD 1.8) (JJ million-square-foot) (NNP Forest) (NNP Fair) (NNP Mall) )(PP-LOC (IN in) (NP (NNP Cincinnati) )))(, ,) (NP (NP (DT the) (CD 800,000) (JJ square-foot) (NNP Richland) (NNP Fashion) (NNP Mall) )(PP-LOC (IN in) (NP (NP (NNP Columbia) )(, ,) (NP (NNP S.C.) ))))(, ,) (CC and)(NP (NP (DT the) (CD 700,000) (JJ square-foot) (NNP Thornton) (NNP Town) (NNP Center) (NN mall) )(PP-LOC (IN in) (NP (NP (NNP Thornton) )(, ,) (NP (NNP Colo) ))))))(. .) )) (TOP (S (S (NP-SBJ (DT The) (NNP Thornton) (NN mall) )(VP (VBD opened) (NP-TMP (NNP Sept.) (CD 19) )(PP (IN with) (NP (NP (DT a) (NP (NNP Bigg) (POS 's) )(NN hypermarket) )(PP (IN as) (NP (PRP$ its) (NN anchor) ))))))(: ;) (S (NP-SBJ-1 (DT the) (NNP Columbia) (NN mall) )(VP (VBZ is) (VP (VBN expected) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB open) (NP-TMP (NNP Nov.) (CD 15) )))))))(. .) )) (TOP (S (NP-SBJ (NP (JJ Other) (NNP Hooker) (NNS properties) )(VP (VBN included) (NP (-NONE- *) )))(VP (VBP are) (NP-PRD (NP (NP (NP (DT a) (JJ 20-story) (NN office) (NN tower) )(PP-LOC (IN in) (NP (JJ midtown) (NNP Atlanta) )))(, ,) (VP (VBN expected) (S (NP-SBJ-1 (-NONE- *) )(VP (TO to) (VP (VB be) (VP (VBN completed) (NP (-NONE- *-1) )(NP-TMP (IN next) (NNP February) )))))))(: ;) (NP (NP (JJ vacant) (NN land) (NNS sites) )(PP-LOC (IN in) (NP (NNP Florida) (CC and)(NNP Ohio) )))(: ;) (NP (NP (NNP L.J.) (NNP Hooker) (NNP International) )(, ,) (NP (NP (DT the) (JJ commercial) (NN real-estate) (NN brokerage) (NN company) )(SBAR (WHNP-2 (WDT that) )(S (NP-SBJ (-NONE- *T*-2) )(ADVP-TMP (RB once) )(VP (VBD did) (NP (NN business) )(PP (IN as) (NP (NNP Merrill) (NNP Lynch) (NNP Commercial) (NNP Real) (NNP Estate) )))))))(, ,) (CC plus) (NP (JJ other) (NN shopping) (NNS centers) )))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NN consortium) )(VP (VBD was) (VP (VBN put) (NP (-NONE- *-1) )(ADVP-CLR (RB together) )(PP (IN by) (NP-LGS (NP (NNP Hoare) (NNP Govett) )(, ,) (NP (NP (DT the) (JJ London-based) (NN investment) (NN banking) (NN company) )(SBAR (WHNP-2 (WDT that) )(S (NP-SBJ (-NONE- *T*-2) )(VP (VBZ is) (NP-PRD (NP (DT a) (NN subsidiary) )(PP (IN of) (NP (NNP Security) (NNP Pacific) (NNP Corp) )))))))))))(. .) )) (TOP (SINV (`` ``) (S-TPC (NP-SBJ (PRP We) )(VP (VBP do) (RB n't) (VP (VB anticipate) (NP (NP (DT any) (NNS problems) )(PP-LOC (IN in) (S-NOM (NP-SBJ (-NONE- *) )(VP (VBG raising) (NP (NP (DT the) (NN funding) )(PP (IN for) (NP (DT the) (NN bid) ))))))))))(, ,) ('' '') (VP (VBD said) )(NP-SBJ (NP (NNP Allan) (NNP Campbell) )(, ,) (NP (NP (DT the) (NN head) )(PP (IN of) (NP (NNS mergers) (CC and)(NNS acquisitions) ))(PP-LOC (IN at) (NP (NNP Hoare) (NNP Govett) ))))(, ,) (PP-LOC (IN in) (NP (DT an) (NN interview) ))(. .) )) (TOP (S (NP-SBJ (NNP Hoare) (NNP Govett) )(VP (VBZ is) (VP (VBG acting) (PP-CLR (IN as) (NP (NP (DT the) (NN consortium) (POS 's) )(NN investment) (NNS bankers) ))))(. .) )) (TOP (S (PP (VBG According) (PP (TO to) (NP (NP (NNS people) )(ADJP (JJ familiar) (PP (IN with) (NP (DT the) (NN consortium) ))))))(, ,) (NP-SBJ-2 (DT the) (NN bid) )(VP (VBD was) (VP (JJ code-named) (S (NP-SBJ (-NONE- *-2) )(NP-PRD (NP (NNP Project) (NNP Klute) )(, ,) (NP (NP (DT a) (NN reference) )(PP (TO to) (NP (NP (DT the) (NN film) (`` ``) (NX-TTL (NNP Klute) )('' '') )(SBAR (WHPP-3 (IN in) (WHNP (WDT which) ))(S (NP-SBJ-1 (NP (DT a) (NN prostitute) )(VP (VBN played) (NP (-NONE- *) )(PP (IN by) (NP-LGS (NN actress) (NNP Jane) (NNP Fonda) ))))(VP (VBZ is) (VP (VBN saved) (NP (-NONE- *-1) )(PP-CLR (IN from) (NP (DT a) (JJ psychotic) (NN businessman) ))(PP (IN by) (NP-LGS (NP (DT a) (NN police) (NN officer) )(VP (VBN named) (S (NP-SBJ (-NONE- *) )(NP-PRD (NNP John) (NNP Klute) )))))(PP-LOC (-NONE- *T*-3) ))))))))))))(. .) )) (TOP (S (NP-SBJ (NNP L.J.) (NNP Hooker) )(VP (VBD was) (NP-PRD (NP (DT a) (JJ small) (JJ home-building) (NN company) )(VP (VBN based) (NP (-NONE- *) )(PP-LOC-CLR (IN in) (NP (NNP Atlanta) ))))(PP-TMP (IN in) (NP (NP (CD 1979) )(SBAR (WHADVP-3 (WRB when) )(S (NP-SBJ-1 (NNP Mr.) (NNP Simpson) )(VP (VBD was) (VP (VBN hired) (NP-2 (-NONE- *-1) )(S-PRP (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB push) (NP (PRP it) )(PP-DIR (IN into) (NP (JJ commercial) (NN development) )))))(ADVP-TMP (-NONE- *T*-3) ))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (NN company) )(VP (VBD grew) (ADVP-MNR (RB modestly) )(PP-TMP (IN until) (NP (NP (CD 1986) )(, ,) (SBAR (WHADVP-2 (WRB when) )(S (NP-SBJ-1 (NP (DT a) (NN majority) (NN position) )(PP-LOC (IN in) (NP (NNP Hooker) (NNP Corp.) )))(VP (VBD was) (VP (VBN acquired) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NP (JJ Australian) (NN developer) (NNP George) (NNP Herscu) )(, ,) (ADVP-TMP (RB currently) )(NP (NP (NNP Hooker) (POS 's) )(NN chairman) )))(ADVP-TMP (-NONE- *T*-2) ))))))))(. .) )) (TOP (S (NP-SBJ-2 (NNP Mr.) (NNP Herscu) )(VP (VBD proceeded) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB launch) (NP (NP (DT an) (ADJP (JJ ambitious) (, ,)(CC but) (JJ ill-fated) (, ,))(ADJP (QP ($ $) (CD 1) (CD billion) )(-NONE- *U*) )(NN acquisition) (NN binge) )(SBAR (WHNP-1 (WDT that) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBD included) (NP (NP (NP (NNP Bonwit) (NNP Teller) )(CC and) (NP (NNP B.) (NNP Altman) (CC &) (NNP Co.) ))(, ,) (CONJP (RB as) (RB well) (IN as) )(NP (NP (NN majority) (NNS positions) )(PP-LOC (IN in) (NP (NP (NP (NNP Merksamer) (NNP Jewelers) )(, ,) (NP (DT a) (NNP Sacramento) (NN chain) ))(: ;) (NP (NP (NNP Sakowitz) (NNP Inc.) )(, ,) (NP (DT the) (JJ Houston-based) (NN retailer) ))(, ,) (CC and)(NP (NP (NNP Parisian) (NNP Inc.) )(, ,) (NP (DT the) (NNP Southeast) (NN department-store) (NN chain) ))))))))))))))(. .) )) (TOP (S (ADVP-TMP (RB Eventually) )(S (NP-SBJ (NP (NNP Mr.) (NNP Simpson) )(CC and) (NP (NNP Mr.) (NNP Herscu) ))(VP (VBD had) (NP (DT a) (NN falling) (RP out) )(PP (IN over) (NP (NP (DT the) (NN direction) )(PP (IN of) (NP (DT the) (NN company) ))))))(, ,) (CC and)(S (NP-SBJ (NNP Mr.) (NNP Simpson) )(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (PRP he) )(VP (VBD resigned) (PP-TMP (IN in) (NP (CD 1988) )))))))(. .) )) (TOP (S (PP-TMP (IN Since) (NP (RB then) ))(, ,) (NP-SBJ-1 (NNP Hooker) (NNP Corp.) )(VP (VP (VBZ has) (VP (VBN sold) (NP (NP (PRP$ its) (NN interest) )(PP-LOC (IN in) (NP (DT the) (JJ Parisian) (NN chain) )))(ADVP-CLR (RB back) (PP (TO to) (NP (NP (JJ Parisian) (POS 's) )(NN management) )))))(CC and) (VP (VBZ is) (ADVP-TMP (RB currently) )(VP (VBG attempting) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB sell) (NP (DT the) (NNP B.) (NNP Altman) (CC &) (NNP Co.) (NN chain) )))))))(. .) )) (TOP (S (PP (IN In) (NP (NN addition) ))(, ,) (NP-SBJ (NP (NNP Robert) (NNP Sakowitz) )(, ,) (NP (NP (JJ chief) (NN executive) )(PP (IN of) (NP (DT the) (NNP Sakowitz) (NN chain) )))(, ,) )(VP (VBZ is) (VP (VBG seeking) (NP (NP (NNS funds) )(SBAR (WHNP-1 (-NONE- 0) )(S (NP-SBJ (-NONE- *T*-1) )(VP (TO to) (VP (VB buy) (PRT (RP out) )(NP (NP (DT the) (NNP Hooker) (NN interest) )(PP-LOC (IN in) (NP (PRP$ his) (NN company) ))))))))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NNP Merksamer) (NN chain) )(VP (VBZ is) (ADVP-TMP (RB currently) )(VP (VBG being) (VP (VBN offered) (NP (-NONE- *-1) )(PP-CLR (IN for) (NP (NN sale) ))(PP (IN by) (NP-LGS (NNP First) (NNP Boston) (NNP Corp) )))))(. .) )) (TOP (S (S-ADV (NP-SBJ-1 (-NONE- *-2) )(VP (VBN Reached) (NP (-NONE- *-1) )(PP-LOC (IN in) (NP (NNP Honolulu) ))))(, ,) (NP-SBJ-2 (NNP Mr.) (NNP Shidler) )(VP (VBD said) (SBAR (IN that) (S (NP-SBJ (PRP he) )(VP (VBZ believes) (SBAR (-NONE- 0) (S (NP-SBJ (DT the) (JJ various) (NNP Hooker) (NNS malls) )(VP (MD can) (VP (VB become) (ADJP-PRD (JJ profitable) )(PP (IN with) (NP (JJ new) (NN management) ))))))))))(. .) )) (TOP (SINV (`` ``) (S-TPC-2 (S (NP-SBJ (DT These) )(VP (VBP are) (RB n't) (NP-PRD (JJ mature) (NNS assets) )))(, ,) (CC but) (S (NP-SBJ (PRP they) )(VP (VBP have) (NP (NP (DT the) (NN potential) )(SBAR (WHADVP-1 (-NONE- 0) )(S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB be) (ADVP-PRD (RB so) )(ADVP (-NONE- *T*-1) )))))))))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-2) ))(NP-SBJ (NNP Mr.) (NNP Shidler) )(. .) )) (TOP (S (`` ``) (S-ADV (NP-SBJ-2 (-NONE- *-1) )(VP (VBN Managed) (NP (-NONE- *-2) )(UCP (ADVP-MNR (RB properly) )(, ,) (CC and)(PP (IN with) (NP (DT a) (JJ long-term) (NN outlook) )))))(, ,) (NP-SBJ-1 (DT these) )(VP (MD can) (VP (VB become) (NP-PRD (JJ investment-grade) (NN quality) (NNS properties) )))(. .) )) (TOP (S (S-TPC-1 (NP-SBJ (JJ Canadian) (NN steel-ingot) (NN production) )(VP (VBD totaled) (NP (CD 291,890) (JJ metric) (NNS tons) )(PP-TMP (IN in) (NP (NP (DT the) (NN week) )(VP (VBN ended) (NP-TMP (NNP Oct.) (CD 7) ))))(, ,) (ADVP (RB up) (NP (CD 14.8) (NN %) )(PP (IN from) (NP (NP (NP (DT the) (JJ preceding) (NN week) (POS 's) )(NN total) )(PP (IN of) (NP (CD 254,280) (NNS tons) )))))))(, ,) (NP-SBJ (NP (NNP Statistics) (NNP Canada) )(, ,) (NP (DT a) (JJ federal) (NN agency) )(, ,) )(VP (VBD said) (SBAR (-NONE- 0) (S (-NONE- *T*-1) )))(. .) )) (TOP (S (NP-SBJ (NP (DT The) (NN week) (POS 's) )(NN total) )(VP (VBD was) (ADVP-PRD (RB up) (NP (CD 6.2) (NN %) )(PP (IN from) (NP (CD 274,963) (NNS tons) )(ADVP-TMP (NP (DT a) (NN year) )(RBR earlier) ))))(. .) )) (TOP (S (NP-SBJ (DT The) (JJ year-to-date) (NN total) )(VP (VBD was) (NP-PRD (CD 12,006,883) (NNS tons) )(, ,) (ADVP (RB up) (NP (CD 7.8) (NN %) )(PP (IN from) (NP (CD 11,141,711) (NNS tons) )(ADVP-TMP (NP (DT a) (NN year) )(RBR earlier) ))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NNP Treasury) )(VP (NNS plans) (S (NP-SBJ-2 (-NONE- *-1) )(VP (TO to) (VP (VB raise) (NP (NP (QP ($ $) (CD 175) (CD million) )(-NONE- *U*) )(PP (IN in) (NP (JJ new) (NN cash) )))(NP-TMP (NNP Thursday) )(PP-MNR (IN by) (S-NOM (NP-SBJ (-NONE- *-2) )(VP (VP (VBG selling) (NP (NP (QP (RB about) ($ $) (CD 9.75) (CD billion) )(-NONE- *U*) )(PP (IN of) (NP (JJ 52-week) (NNS bills) ))))(CC and) (VP (VBG redeeming) (NP (NP ($ $) (CD 9.58) (CD billion) (-NONE- *U*) )(PP (IN of) (NP (VBG maturing) (NNS bills) )))))))))))(. .) )) (TOP (S (NP-SBJ-1 (DT The) (NNS bills) )(VP (VP (MD will) (VP (VB be) (VP (VBN dated) (S (NP-SBJ (-NONE- *-1) )(NP-PRD (NNP Oct.) (CD 26) )))))(CC and) (VP (MD will) (VP (VB mature) (NP-TMP (NNP Oct.) (CD 25) (, ,)(CD 1990) ))))(. .) )) (TOP (S (NP-SBJ (PRP They) )(VP (MD will) (VP (VB be) (ADJP-PRD (JJ available) (PP (IN in) (NP (NP (JJ minimum) (NNS denominations) )(PP (IN of) (NP ($ $) (CD 10,000) (-NONE- *U*) )))))))(. .) )) (TOP (S (NP-SBJ-1 (NNS Bids) )(VP (MD must) (VP (VB be) (VP (VBN received) (NP (-NONE- *-1) )(PP-TMP (IN by) (NP (CD 1) (RB p.m.) (NNP EDT) ))(NP-TMP (NNP Thursday) )(PP-LOC (PP (IN at) (NP (DT the) (NNP Treasury) ))(CC or) (PP (IN at) (NP (NNP Federal) (NNP Reserve) (NNS banks) (CC or) (NNS branches) ))))))(. .) )) (TOP (S (SBAR-TMP (IN As) (S (NP-SBJ (JJ small) (NNS investors) )(VP (VBD peppered) (NP (PRP$ their) (JJ mutual) (NNS funds) )(PP-CLR (IN with) (NP (NN phone) (NNS calls) ))(PP-TMP (IN over) (NP (DT the) (NN weekend) )))))(, ,) (NP-SBJ (JJ big) (NN fund) (NNS managers) )(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (PRP they) )(VP (VBP have) (NP (NP (NP (DT a) (JJ strong) (NN defense) )(PP (IN against) (NP (NP (DT any) (NN wave) )(PP (IN of) (NP (NNS withdrawals) )))))(: :) (NP (NN cash) ))))))(. .) )) (TOP (S (PP (IN Unlike) (NP (NP (DT the) (NN weekend) )(PP-TMP (IN before) (NP (NNP Black) (NNP Monday) ))))(, ,) (NP-SBJ-1 (DT the) (NNS funds) )(VP (VBD were) (RB n't) (VP (VBN swamped) (NP (-NONE- *-1) )(PP-CLR (IN with) (NP (JJ heavy) (NN withdrawal) (NNS requests) ))))(. .) )) (TOP (S (CC And) (NP-SBJ (JJ many) (NN fund) (NNS managers) )(VP (VP (VBP have) (VP (VBN built) (PRT (RP up) )(NP (NN cash) (NNS levels) )))(CC and) (VP (VBP say) (SBAR (-NONE- 0) (S (NP-SBJ (PRP they) )(VP (MD will) (VP (VB be) (VP (VBG buying) (NP (NN stock) )(NP-TMP (DT this) (NN week) ))))))))(. .) )) (TOP (S (PP-LOC (IN At) (NP (NP (NNP Fidelity) (NNP Investments) )(, ,) (NP (NP (DT the) (NN nation) (POS 's) )(JJS largest) (NN fund) (NN company) )(, ,) ))(S (NP-SBJ (NN telephone) (NN volume) )(VP (VBD was) (ADVP-PRD (RB up) (RB sharply) )))(, ,) (CC but) (S (NP-SBJ (PRP it) )(VP (VBD was) (ADVP-TMP (RB still) )(PP-LOC-PRD (IN at) (NP (NP (QP (RB just) (PDT half) )(DT the) (NN level) )(PP (IN of) (NP (NP (DT the) (NN weekend) )(VP (VBG preceding) (NP (NNP Black) (NNP Monday) ))(PP-TMP (IN in) (NP (CD 1987) ))))))))(. .) )) (TOP (S (NP-SBJ (DT The) (NNP Boston) (NN firm) )(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (NN stock-fund) (NNS redemptions) )(VP (VBD were) (VP (VBG running) (PP-LOC-CLR (IN at) (NP (NP (QP (JJR less) (IN than) (NN one-third) )(DT the) (NN level) )(ADVP-TMP (NP (CD two) (NNS years) )(RB ago) ))))))))(. .) )) (TOP (S (PP-TMP (IN As) (PP (IN of) (NP (NN yesterday) (NN afternoon) )))(, ,) (NP-SBJ (DT the) (NNS redemptions) )(VP (VBD represented) (NP (NP (NP (QP (JJR less) (IN than) (CD 15) )(NN %) )(PP (IN of) (NP (NP (DT the) (JJ total) (NN cash) (NN position) )(PP (IN of) (NP (QP (RB about) ($ $) (CD 2) (CD billion) )(-NONE- *U*) ))(PP (IN of) (NP (NP (NNP Fidelity) (POS 's) )(NN stock) (NNS funds) )))))))(. .) )) (TOP (SINV (`` ``) (S-TPC-2 (ADVP-TMP (NP (CD Two) (NNS years) )(RB ago) )(NP-SBJ (EX there) )(VP (VBD were) (NP-PRD (NP (NP (JJ massive) (NN redemption) (NNS levels) )(PP-TPC (IN over) (NP (DT the) (NN weekend) )))(CC and) (NP (NP (DT a) (NN lot) )(PP (IN of) (NP (NN fear) ))(ADVP-LOC (RB around) )))))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-2) ))(NP-SBJ (NP (NNP C.) (NNP Bruce) (NNP Johnstone) )(, ,) (SBAR (WHNP-1 (WP who) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBZ runs) (NP (NP (NNP Fidelity) (NNP Investments) (POS ') )(ADJP (QP ($ $) (CD 5) (CD billion) )(-NONE- *U*) )(NNP Equity-Income) (NNP Fund) )))))(. .) )) (TOP (S (`` ``) (NP-SBJ (DT This) )(VP (VBZ feels) (PP-CLR (ADVP (RBR more) )(IN like) (NP (DT a) (JJ one-shot) (NN deal) )))(. .) )) (TOP (S (NP-SBJ (NNS People) )(VP (VBP are) (RB n't) (VP (VBG panicking) ))(. .) ('' '') )) (TOP (S (NP-SBJ (DT The) (NN test) )(VP (MD may) (VP (VB come) (NP-TMP (NN today) )))(. .) )) (TOP (S (NP-SBJ (NP (NNP Friday) (POS 's) )(NN stock) (NN market) (NN sell-off) )(VP (VBD came) (ADVP-TMP (RB too) (RB late) (SBAR (IN for) (S (NP-SBJ (JJ many) (NNS investors) )(VP (TO to) (VP (VB act) ))))))(. .) )) (TOP (S (NP-SBJ (DT Some) (NNS shareholders) )(VP (VBP have) (VP (VBN held) (PRT (RP off) )(PP-TMP (IN until) (NP (NN today) ))(SBAR-PRP (IN because) (S (NP-SBJ (NP (DT any) (NN fund) (NNS exchanges) )(VP (VBN made) (NP (-NONE- *) )(PP-TMP (IN after) (NP (NP (NNP Friday) (POS 's) )(NN close) ))))(VP (MD would) (VP (VB take) (NP (NN place) )(PP (IN at) (NP (NP (NN today) (POS 's) )(NN closing) (NNS prices) ))))))))(. .) )) (TOP (S (NP-SBJ-1 (NN Stock) (NN fund) (NNS redemptions) )(PP-TMP (IN during) (NP (DT the) (CD 1987) (NN debacle) ))(VP (VBD did) (RB n't) (VP (VB begin) (S (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB snowball) )))(PP-TMP (IN until) (SBAR (IN after) (S (NP-SBJ (DT the) (NN market) )(VP (VBD opened) (PP-TMP (IN on) (NP (NNP Black) (NNP Monday) ))))))))(. .) )) (TOP (S (CC But) (NP-SBJ (NN fund) (NNS managers) )(VP (VBP say) (SBAR (-NONE- 0) (S (NP-SBJ (PRP they) )(VP (VBP 're) (ADJP-PRD (JJ ready) )))))(. .) )) (TOP (S (NP-SBJ (JJ Many) )(VP (VBP have) (VP (VBN raised) (NP (NP (NN cash) (NNS levels) )(, ,) (SBAR (WHNP-1 (WDT which) )(S (NP-SBJ (-NONE- *T*-1) )(VP (VBP act) (PP-CLR (IN as) (NP (DT a) (NN buffer) ))(PP (IN against) (NP (JJ steep) (NN market) (NNS declines) ))))))))(. .) )) (TOP (S (NP-SBJ (NNP Mario) (NNP Gabelli) )(, ,) (PP (IN for) (NP (NN instance) ))(, ,) (VP (VBZ holds) (NP (NP (NN cash) (NNS positions) )(PP-LOC (ADVP (RB well) )(IN above) (NP (CD 20) (NN %) )))(PP-LOC (IN in) (NP (NP (JJ several) )(PP (IN of) (NP (PRP$ his) (NNS funds) )))))(. .) )) (TOP (S (NP-SBJ (NP (NP (NNP Windsor) (NNP Fund) (POS 's) )(NNP John) (NNP Neff) )(CC and) (NP (NP (NNP Mutual) (NNP Series) (POS ') )(NNP Michael) (NNP Price) ))(VP (VBD said) (SBAR (-NONE- 0) (S (NP-SBJ (PRP they) )(VP (VBD had) (VP (VBN raised) (NP (PRP$ their) (NN cash) (NNS levels) )(PP-DIR (TO to) (NP (QP (JJR more) (IN than) (CD 20) (NN %) (CC and)(CD 30) (NN %) )(-NONE- *U*) (, ,)(RB respectively) ))(, ,) (NP-TMP (DT this) (NN year) ))))))(. .) )) (TOP (S (NP-SBJ (NP (RB Even) (NNP Peter) (NNP Lynch) )(, ,) (NP (NP (NN manager) )(PP (IN of) (NP (NP (NP (NNP Fidelity) (POS 's) )(ADJP (QP ($ $) (CD 12.7) (CD billion) )(-NONE- *U*) )(NNP Magellan) (NNP Fund) )(, ,) (NP (NP (DT the) (NN nation) (POS 's) )(JJS largest) (NN stock) (NN fund) )))))(, ,) (VP (VBD built) (PRT (RP up) )(NP (NN cash) )(PP-DIR (TO to) (NP (NP (CD 7) (NN %) )(CC or) (NP (QP ($ $) (CD 850) (CD million) )(-NONE- *U*) ))))(. .) )) (TOP (S (NP-SBJ (CD One) (NN reason) )(VP (VBZ is) (SBAR-PRD (DT that) (S (PP-TMP (IN after) (NP (NP (CD two) (NNS years) )(PP (IN of) (NP (JJ monthly) (JJ net) (NNS redemptions) ))))(, ,) (NP-SBJ (DT the) (NN fund) )(VP (VBD posted) (NP (NP (JJ net) (NNS inflows) )(PP (IN of) (NP (NN money) ))(PP (IN from) (NP (NNS investors) )))(PP-TMP (IN in) (NP (NNP August) (CC and)(NNP September) ))))))(. .) )) (TOP (S (`` ``) (S-TPC-1 (NP-SBJ (PRP I) )(VP (VBP 've) (VP (VBD let) (S (NP-SBJ (DT the) (NN money) )(VP (VB build) (PRT (RP up) ))))))(, ,) ('' '') (NP-SBJ (NP (NNP Mr.) (NNP Lynch) )(SBAR (-NONE- *ICH*-2) ))(VP (VBD said) (S (-NONE- *T*-1) )(, ,) (SBAR-2 (WHNP-4 (WP who) )(S (NP-SBJ (-NONE- *T*-4) )(VP (VBD added) (SBAR (IN that) (S (NP-SBJ-5 (PRP he) )(VP (VBZ has) (VP (VBN had) (NP-CLR (NN trouble) )(S-CLR (NP-SBJ (-NONE- *-5) )(VP (VBG finding) (NP (NP (NNS stocks) )(SBAR (WHNP-3 (-NONE- 0) )(S (NP-SBJ (PRP he) )(VP (VBZ likes) (NP (-NONE- *T*-3) )))))))))))))))(. .) )) (TOP (S (NP-SBJ (ADJP (RB Not) (DT all) )(NNS funds) )(VP (VBP have) (VP (VBN raised) (NP (NN cash) (NNS levels) )(, ,) (PP (IN of) (NP (NN course) ))))(. .) )) (TOP (S (PP (IN As) (NP (DT a) (NN group) ))(, ,) (NP-SBJ (NN stock) (NNS funds) )(VP (VBD held) (NP (NP (CD 10.2) (NN %) )(PP (IN of) (NP (NNS assets) ))(NP (-NONE- *ICH*-1) ))(PP-CLR (IN in) (NP (NN cash) ))(PP-TMP (IN as) (PP (IN of) (NP (NNP August) )))(, ,) (NP-1 (NP (DT the) (JJS latest) (NNS figures) )(ADJP (JJ available) (PP (IN from) (NP (DT the) (NNP Investment) (NNP Company) (NNP Institute) )))))(. .) )) (TOP (S (NP-SBJ (DT That) )(VP (VBD was) (ADJP-PRD (ADJP (RB modestly) (JJR higher) )(PP (IN than) (NP (NP (DT the) (ADJP (QP (CD 8.8) (NN %) (CC and)(CD 9.2) (JJ %) )(-NONE- *U*) )(NNS levels) )(PP-TMP (IN in) (NP (NP (NNP August) (CC and)(NNP September) )(PP (IN of) (NP (CD 1987) ))))))))(. .) )) (TOP (S (ADVP (RB Also) )(, ,) (NP-SBJ (JJ persistent) (NNS redemptions) )(VP (MD would) (VP (VB force) (S (NP-SBJ-1 (DT some) (NN fund) (NNS managers) )(VP (TO to) (VP (VB dump) (NP (NNS stocks) )(S-PRP (NP-SBJ (-NONE- *-1) )(VP (TO to) (VP (VB raise) (NP (NN cash) )))))))))(. .) ))apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/parser/test.parse0100664 0001750 0001750 00000004063 14135770370 032202 0ustar00jeffjeff0000000 0000000 (TOP (S (PP-TMP (IN At) (NP (PRP$ your) (NN age) ))(, ,) (NP-VOC (NNP Jackie) )(, ,) (NP-SBJ-2 (PRP you) )(VP (MD ought) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB know) (SBAR (IN that) (S (NP-SBJ-1 (PRP you) )(VP (MD ca) (RB n't) (VP (VB make) (NP (NN soup) )(PP (IN without) (S-NOM (NP-SBJ (-NONE- *-1) )(VP (VBG turning) (PRT (RP up) )(NP (DT the) (NN flame) ))))))))))))(. .) )) (TOP (S (ADVP-TMP (NP (DT A) (JJ few) (NNS hours) )(RB later) )(, ,) (NP-SBJ (DT the) (NN stock) (NN market) )(VP (VBD dropped) (NP-EXT (CD 190) (NNS points) ))(. .) )) (TOP (S (NP-SBJ (PRP He) )(VP (VBZ argues) (SBAR (IN that) (S (NP-SBJ-1 (NNS efforts) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB firm) (PRT (RP up) )(NP (NNS prices) )))))(VP (MD will) (VP (VB be) (VP (VBN undermined) (NP (-NONE- *-1) )(PP (IN by) (NP-LGS (NP (NNS producers) (POS ') )(NNS plans) (S (NP-SBJ (-NONE- *) )(VP (TO to) (VP (VB expand) (NP (NN production) (NN capacity) ))))))))))))(. .) )) (TOP (SINV (`` ``) (S-TPC-6 (NP-SBJ (EX There) )(VP (VBZ is) (NP-PRD (NP (DT an) (JJ underlying) (NN concern) (SBAR (-NONE- *ICH*-5) ))(PP (IN on) (NP (NP (DT the) (NN part) )(PP (IN of) (NP (DT the) (JJ American) (NNS people) ))))(PRN (: --) (CC and)(S (NP-SBJ (RB there) )(VP (MD should) (VP (VB be) (NP-PRD (-NONE- *?*) ))))(: -) )(SBAR-5 (SBAR (IN that) (S (NP-SBJ-1 (DT the) (NN administration) )(VP (VBZ has) (RB not) (VP (VBN gone) (ADVP-CLR (RB far) (RB enough) )(PP (IN in) (S-NOM (NP-SBJ (-NONE- *-1) )(VP (VBG cutting) (NP (DT this) (NN deficit) ))))))))(CC and) (SBAR (IN that) (S (NP-SBJ-2 (NNP Congress) )(VP (VBZ has) (VP (VBN been) (ADJP-PRD (JJ unwilling) (S (NP-SBJ (-NONE- *-2) )(VP (TO to) (VP (VB cut) (SBAR-NOM (WHNP-3 (WP what) )(S (NP-SBJ (DT the) (NN administration) )(VP (VBD asked) (NP-4 (PRP us) )(S (NP-SBJ (-NONE- *-4) )(VP (TO to) (VP (VB cut) (NP (-NONE- *T*-3) )))))))))))))))))))(, ,) ('' '') (VP (VBD said) (S (-NONE- *T*-6) ))(NP-SBJ (NP (NNP Senate) (NNP Finance) (NNP Committee) (NNP Chairman) (NNP Lloyd) (NNP Bentsen) )(PRN (-LRB- -LRB-)(NP (NNP D.) )(, ,) (NP-LOC (NNP Texas) )(-RRB- -RRB-) ))(. .) ))./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000200 14135770370 032770 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestFeatureGeneratorConfig.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestFeatureG0100664 0001750 0001750 00000002046 14135770370 034261 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000227 14135770370 033001 xustar000000000 0000000 151 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestDictionarySerializerMappingExtraction_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestDictiona0100664 0001750 0001750 00000001514 14135770370 034310 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000237 14135770370 033002 xustar000000000 0000000 159 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestNotAutomaticallyInsertAggregatedFeatureGeneratorCache.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestNotAutom0100664 0001750 0001750 00000001712 14135770370 034324 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000172 14135770370 033000 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestParametersConfig.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestParamete0100664 0001750 0001750 00000002340 14135770370 034312 0ustar00jeffjeff0000000 0000000 123 45 67890 123456.789 true HELLO ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000227 14135770370 033001 xustar000000000 0000000 151 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestAutomaticallyInsertAggregatedFeatureGenerator.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestAutomati0100664 0001750 0001750 00000002153 14135770370 034341 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000200 14135770370 032770 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/CustomClassLoading_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/CustomClassL0100664 0001750 0001750 00000001555 14135770370 034277 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000232 14135770370 032775 xustar000000000 0000000 154 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestNotAutomaticallyInsertAggregatedFeatureGenerator.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestNotAutom0100664 0001750 0001750 00000001675 14135770370 034334 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000217 14135770370 033000 xustar000000000 0000000 143 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestDictionarySerializerMappingExtraction.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestDictiona0100664 0001750 0001750 00000001720 14135770370 034307 0ustar00jeffjeff0000000 0000000 test.dictionary ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000217 14135770370 033000 xustar000000000 0000000 143 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/CustomClassLoadingWithSerializers_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/CustomClassL0100664 0001750 0001750 00000001567 14135770370 034302 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000215 14135770370 032776 xustar000000000 0000000 141 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/FeatureGeneratorConfigWithUnkownElement.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/FeatureGener0100664 0001750 0001750 00000001560 14135770370 034273 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000225 14135770370 032777 xustar000000000 0000000 149 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/FeatureGeneratorConfigWithUnkownElement_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/FeatureGener0100664 0001750 0001750 00000001561 14135770370 034274 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000212 14135770370 032773 xustar000000000 0000000 138 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenCla0100664 0001750 0001750 00000002142 14135770370 034254 0ustar00jeffjeff0000000 0000000 true ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000234 14135770370 032777 xustar000000000 0000000 156 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestAutomaticallyInsertAggregatedFeatureGeneratorCache.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestAutomati0100664 0001750 0001750 00000002170 14135770370 034340 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000210 14135770370 032771 xustar000000000 0000000 136 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestFeatureGeneratorConfig_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestFeatureG0100664 0001750 0001750 00000001536 14135770370 034264 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000206 14135770370 032776 xustar000000000 0000000 134 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestInsertCachedFeatureGenerator.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestInsertCa0100664 0001750 0001750 00000002170 14135770370 034265 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_util_feature0100644 0000000 0000000 00000000222 14135770370 032774 xustar000000000 0000000 146 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenCla0100664 0001750 0001750 00000001561 14135770370 034260 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Ann0100644 0000000 0000000 00000000175 14135770370 032670 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentencesInsufficient.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentencesI0100664 0001750 0001750 00000000732 14135770370 034274 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. I just knew his name , Alan McKennedy , and I'd heard the rumour that he'd moved to Scotland, the country of his ancestors. So I called Julie , a friend who's still in contact with him. She told me that he lived in 23213 Edinburgh, Worcesterstreet 12. I wrote him a letter right away and he answered soon, sounding very happy and delighted../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Onl0100644 0000000 0000000 00000000167 14135770370 032705 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithNamesWithTypes.train apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithNamesWithTy0100664 0001750 0001750 00000000443 14135770370 034307 0ustar00jeffjeff0000000 0000000 Neil Abercrombie Anibal Acevedo-Vila Gary Ackerman Robert Aderholt Daniel Akaka Todd Akin Lamar Alexander Rodney Alexander ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Ann0100644 0000000 0000000 00000000161 14135770370 032663 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentences.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentences.0100664 0001750 0001750 00000017544 14135770370 034252 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. I just knew his name , Alan McKennedy , and I'd heard the rumour that he'd moved to Scotland, the country of his ancestors. So I called Julie , a friend who's still in contact with him. She told me that he lived in 23213 Edinburgh, Worcesterstreet 12. I wrote him a letter right away and he answered soon, sounding very happy and delighted. Last year, I wanted to write a letter to my grandaunt. Her 86th birthday was on October 6, and I no longer wanted to be hesitant to get in touch with her. I didn`t know her face-to-face, and so it wasn't easy for me to find out her address. As she had two apartments in different countries, I decided to write to both. The first was in 12424 Paris in Rue-de-Grandes-Illusions 5. But Marie Clara , as my aunt is called, prefered her apartment in Berlin. It's postcode is 30202. She lived there, in beautiful Kaiserstrae 13, particulary in summer. Hi my name is Stefanie Schmidt , how much is a taxi from Ostbahnhof to Hauptbahnhof? About 10 Euro, I reckon. That sounds good. So please call a driver to Leonardstrae 112, near the Ostbahnhof in 56473 Hamburg. I'd like to be at Silberhornstrae 12 as soon as possible. Thank you very much! Hi Mike , it's Stefanie Schmidt . I'm in Nrnberg at the moment and I've got the problem that my bike has broken. Could you please pick me up from Seidlstrae 56, I'm in the Caf "Mondnacht" at the moment. Please hurry up, I need to be back in Ulm at 8 p.m.! My husband George and me recently celebrated our 10th wedding anniversary. We got married on March 11, 1995. Therefore, we found a photo album with pictures of our first own apartment, which was in 81234 Munich. As a young married couple, we didn't have enough money to afford a bigger lodge than this one in Blumenweg 1. But only five years later, my husband was offered a well-payed job in 17818 Hamburg, so we moved there. Since then, our guests have to ring at Veilchenstrae 11 if they want to visit us, Luise and George Bauer . I read your help-wanted ad with great attention. I'm a student of informatics, 6th semester, and I'm very interested in your part-time job offer. I have a competent knowledge of programming and foreign languages, like French and Italian. I'm looking forward to your reply. Alisa Fernandes , a tourist from Spain, went to the reception desk of the famous Highfly-Hotel in 30303 Berlin. As she felt quite homesick, she asked the staff if they knew a good Spanish restaurant in Berlin. The concierge told her to go to the "Tapasbar" in Chesterstr. 2. Alisa appreciated the hint and enjoyed a delicious traditional meal. An old friend from France is currently travelling around Europe. Yesterday, she arrived in Berlin and we met up spontaneously. She wanted me to show her some famous sights, like the Brandenburger Tor and the Reichstag. But it wasn't easy to meet up in the city because she hardly knows any streetname or building. So I proposed to meet at a quite local point: the caf "Daily's" in Unter-den-Linden 18, 30291 Berlin. It is five minutes away from the underground station "Westbad". She found it instantly and we spent a great day in the capital. Where did you get those great shoes? They look amazing, I love the colour. Are they made of leather? No, that's faked. But anyway, I like them too. I got them from Hamburg. Don't you know the famous shop in Veilchenstrae? It's called "Twentytwo". I've never heard of that before. Could you give me the complete address? Sure, it's in Veilchenstrae 12, in 78181 Hamburg. I deem it best to write a letter to the owner if the shoes are still available. His name is Gerhard Fritsch. Hi, am I talking to the inquiries? My name is Mike Sander and I'd like to know if it is possible to get information about an address if I merely know the name and the phone number of a person! How is he or she called? His name is Stefan Miller and his number is the 030/827234. I'll have a look in the computer... I found a Stefan Miller who lives in Leipzig. Is that right? Yes, it definitely is. So Stefan Miller lives in Heinrich-Heine-Strae 112, in 20193 Leipzig. Thank you very much for the information. Bye! On July 14, the father of a family got painfully injured after he had tried to start a barbecue. The flaring flames burnt instantly through his jacket, which he managed to pull off last-minute. Although the wounds weren't life-threatening, it was urgent to bring him directly into ambulance. But the only hospital that had opened that Sunday was the Paracelsus Hospital in 83939 Weilheim, which was 2 hours away. Convulsed with pain, the man finally arrived in Stifterstrae 15, where the personal immediately took care of him. Last year, I worked as a delivery boy for a small local magazine. I worked in the area of 83454 Ottobrunn. I had a list with the home addresses of our costumers whom I brought their papers once a week. An elderly lady, who was called Elenor Meier , lived in Grtnerweg 6, and I always drove there first, because I liked her the most. Afterwards, I went to a student, Gina Schneider , who lived still in her parent's house in Grtnerweg 25. The last in line was the retired teacher Bruno Schulz in Dramenstrae 15. He was friendly enough to tip sometimes. Our business company was founded in 1912 by the singer and entertainer Michel Seile . He opened the first agency in Erding, a small town near Munich. Now, more than 90 years of turbulent ups and downs later, we finally decided to situate our company in a more central and frequented area. Last year, we moved into an empty factory building in 30303 Berlin. It is located in Barmerstr. 34. When George Miller , a tourist from England, came to Munich, he had no idea how to read the city maps. He depended completely on the help and information of German pedestrians. One day, he simply could not find the famous Lenbachhaus. So he asked a young woman for help. She pointed at a street sign and explained to him that he'd find the Lenbachhaus in Luisenstrae 33, which is in 80333 Munich. Miller was very grateful and could finally enjoy the exhibition. On March 15, there was an accident near Munich. The driver got badly injured. Driving alone not far from her home, the middle-aged woman crashed at high speed into a tree. A resident, who lives near the street where the accident took place, called instantly the police. He reported what had happened and gave his name and address to the officer. He's called Peter Schubert and he lives at Max-Lw-Strae 13 in 84630 Gauting. The police arrived ten minutes later and brought the woman into hospital. Although she had multiple trauma, she's out of mortal danger. Hi, how are you? Arent't you a friend of Natalie ? Yeah for sure. How did you know that? I saw you sitting next to her at uni. Yeah she's my best friend. Are you going to her party next friday? Oh yes, I'd really like to. But in fact I don't know yet where it takes place. I can tell you: ring at Baumann, Meisenstrae 5, in 81737 Munich. The party starts at 9 p.m.. I hope you'll find it. Thank you very much, see you next friday! My name is Michael Hinterhofer . When I was 21, I moved out from my parents' home into my first own appartment in order to study in a bigger city. My new home was in Lilienstrae 1 in 25334 Hamburg. But I realized quickly that life in a metropolis wasn't relaxed enough for me. So I decided to move into a smaller town. Now I'm a tenant with an elderly widow. We live in Brgerstrae 2 in 63737 Heidelberg. I really like the smalltown flair and my studies at Heidelberg's notable university../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Ann0100644 0000000 0000000 00000000172 14135770370 032665 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentencesWithTypes.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/AnnotatedSentencesW0100664 0001750 0001750 00000020047 14135770370 034313 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. I just knew his name , Alan McKennedy , and I'd heard the rumour that he'd moved to Scotland, the country of his ancestors. So I called Julie , a friend who's still in contact with him. She told me that he lived in 23213 Edinburgh, Worcesterstreet 12. I wrote him a letter right away and he answered soon, sounding very happy and delighted. Last year, I wanted to write a letter to my grandaunt. Her 86th birthday was on October 6, and I no longer wanted to be hesitant to get in touch with her. I didn`t know her face-to-face, and so it wasn't easy for me to find out her address. As she had two apartments in different countries, I decided to write to both. The first was in 12424 Paris in Rue-de-Grandes-Illusions 5. But Marie Clara , as my aunt is called, prefered her apartment in Berlin. It's postcode is 30202. She lived there, in beautiful Kaiserstraße 13, particulary in summer. Hi my name is Stefanie Schmidt , how much is a taxi from Ostbahnhof to Hauptbahnhof? About 10 Euro, I reckon. That sounds good. So please call a driver to Leonardstraße 112, near the Ostbahnhof in 56473 Hamburg. I'd like to be at Silberhornstraße 12 as soon as possible. Thank you very much! Hi Mike , it's Stefanie Schmidt . I'm in Nürnberg at the moment and I've got the problem that my bike has broken. Could you please pick me up from Seidlstraße 56, I'm in the Cafe "Mondnacht" at the moment. Please hurry up, I need to be back in Ulm at 8 p.m.! My husband George and me recently celebrated our 10th wedding anniversary. We got married on March 11, 1995. Therefore, we found a photo album with pictures of our first own apartment, which was in 81234 Munich. As a young married couple, we didn't have enough money to afford a bigger lodge than this one in Blumenweg 1. But only five years later, my husband was offered a well-payed job in 17818 Hamburg, so we moved there. Since then, our guests have to ring at Veilchenstraße 11 if they want to visit us, Luise and George Bauer . I read your help-wanted ad with great attention. I'm a student of informatics, 6th semester, and I'm very interested in your part-time job offer. I have a competent knowledge of programming and foreign languages, like French and Italian. I'm looking forward to your reply. Alisa Fernandes , a tourist from Spain, went to the reception desk of the famous Highfly-Hotel in 30303 Berlin. As she felt quite homesick, she asked the staff if they knew a good Spanish restaurant in Berlin. The concierge told her to go to the "Tapasbar" in Chesterstr. 2. Alisa appreciated the hint and enjoyed a delicious traditional meal. An old friend from France is currently travelling around Europe. Yesterday, she arrived in Berlin and we met up spontaneously. She wanted me to show her some famous sights, like the Brandenburger Tor and the Reichstag. But it wasn't easy to meet up in the city because she hardly knows any streetname or building. So I proposed to meet at a quite local point: the cafe "Daily's" in Unter-den-Linden 18, 30291 Berlin. It is five minutes away from the underground station "Westbad". She found it instantly and we spent a great day in the capital. Where did you get those great shoes? They look amazing, I love the colour. Are they made of leather? No, that's faked. But anyway, I like them too. I got them from Hamburg. Don't you know the famous shop in Veilchenstraße? It's called "Twentytwo". I've never heard of that before. Could you give me the complete address? Sure, it's in Veilchenstraße 12, in 78181 Hamburg. I deem it best to write a letter to the owner if the shoes are still available. His name is Gerhard Fritsch. Hi, am I talking to the inquiries? My name is Mike Sander and I'd like to know if it is possible to get information about an address if I merely know the name and the phone number of a person! How is he or she called? His name is Stefan Miller and his number is the 030/827234. I'll have a look in the computer... I found a Stefan Miller who lives in Leipzig. Is that right? Yes, it definitely is. So Stefan Miller lives in Heinrich-Heine-Straße 112, in 20193 Leipzig. Thank you very much for the information. Bye! On July 14, the father of a family got painfully injured after he had tried to start a barbecue. The flaring flames burnt instantly through his jacket, which he managed to pull off last-minute. Although the wounds weren't life-threatening, it was urgent to bring him directly into ambulance. But the only hospital that had opened that Sunday was the Paracelsus Hospital in 83939 Weilheim, which was 2 hours away. Convulsed with pain, the man finally arrived in Stifterstraße 15, where the personal immediately took care of him. Last year, I worked as a delivery boy for a small local magazine. I worked in the area of 83454 Ottobrunn. I had a list with the home addresses of our costumers whom I brought their papers once a week. An elderly lady, who was called Elenor Meier , lived in Gärtnerweg 6, and I always drove there first, because I liked her the most. Afterwards, I went to a student, Gina Schneider , who lived still in her parent's house in Gärtnerweg 25. The last in line was the retired teacher Bruno Schulz in Dramenstraße 15. He was friendly enough to tip sometimes. Our business company was founded in 1912 by the singer and entertainer Michel Seile . He opened the first agency in Erding, a small town near Munich. Now, more than 90 years of turbulent ups and downs later, we finally decided to situate our company in a more central and frequented area. Last year, we moved into an empty factory building in 30303 Berlin. It is located in Barmerstr. 34. When George Miller , a tourist from England, came to Munich, he had no idea how to read the city maps. He depended completely on the help and information of German pedestrians. One day, he simply could not find the famous Lenbachhaus. So he asked a young woman for help. She pointed at a street sign and explained to him that he'd find the Lenbachhaus in Luisenstraße 33, which is in 80333 Munich. Miller was very grateful and could finally enjoy the exhibition. On March 15, there was an accident near Munich. The driver got badly injured. Driving alone not far from her home, the middle-aged woman crashed at high speed into a tree. A resident, who lives near the street where the accident took place, called instantly the police. He reported what had happened and gave his name and address to the officer. He's called Peter Schubert and he lives at Max-Löw-Straße 13 in 84630 Gauting. The police arrived ten minutes later and brought the woman into hospital. Although she had multiple trauma, she's out of mortal danger. Hi, how are you? Arent't you a friend of Natalie ? Yeah for sure. How did you know that? I saw you sitting next to her at uni. Yeah she's my best friend. Are you going to her party next friday? Oh yes, I'd really like to. But in fact I don't know yet where it takes place. I can tell you: ring at Baumann, Meisenstraße 5, in 81737 Munich. The party starts at 9 p.m.. I hope you'll find it. Thank you very much, see you next friday! My name is Michael Hinterhofer . When I was 21, I moved out from my parents' home into my first own appartment in order to study in a bigger city. My new home was in Lilienstraße 1 in 25334 Hamburg. But I realized quickly that life in a metropolis wasn't relaxed enough for me. So I decided to move into a smaller town. Now I'm a tenant with an elderly widow. We live in Bürgerstraße 2 in 63737 Heidelberg. I really like the smalltown flair and my studies at Heidelberg's notable university. apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/html1.train0100664 0001750 0001750 00000000325 14135770370 032535 0ustar00jeffjeff0000000 0000000
  • Advanced Integrated Pest Management
  • Bay Cities Produce Co., Inc.
apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/voa2.train0100664 0001750 0001750 00000007550 14135770370 032366 0ustar00jeffjeff0000000 0000000 The NATO secretary - general says he is confident the United States and other NATO allies will send more troops to Afghanistan , where insurgent attacks have surged in recent months . He spoke at the NATO Parliamentary Assembly Meeting in Edinburgh , where Britain ' s foreign secretary outlined the strategy his nation would support . NATO Secretary - General Anders Fogh Rasmussen made clear that despite an intensifying insurgency and uncertainty over whether U . S . President Barack Obama will send more troops , NATO will remain in Afghanistan . " Do not make any mistake , we will stay in Afghanistan as long as it takes to finish our job . But that is of course not forever , " he said . Mr . Rasmussen said he is confident there will soon be substantially more troops and with that , new momentum for the mission . " Our mission in Afghanistan ends when the Afghans are capable to secure and run their country themselves . The way forward is to hand over lead responsibility for security to the Afghan security forces , district by district , province by province , as their own capacity develops , " he said . The British prime minister would like some of the handover to begin in 2010 . He has offered to host a summit in London early next year to discuss how the international community should proceed . Speaking to the NATO Parliamentary Assembly , British Foreign Minister David Miliband said Afghanistan needs to be built from the grass - roots level . " A winning political strategy would select and train , empower and equip , mentor and monitor those responsible for governing the provinces and districts of Afghanistan , " he said . Mr . Miliband says local leaders will then be able to distribute money that would create jobs and rebuild Afghanistan ' s infrastructure . He said because much of the nation is at war , it is inevitable that governments are focusing on troop levels , but he said there needs to be a coordinated effort . " Success must be based on aligning our military and civilian resources under a clear political strategy , " said Miliband . " A strategy that reassures and mobilizes ordinary Afghans to resist the Taliban , that divides the insurgency by reintegrating and reconciling those is search of money , status or power . not ideology and that builds a new relationship between Afghanistan and its neighbors , " he added . Britain has promised to send an additional 500 troops to Afghanistan , bringing its force total to 9 , 500 , second only to the United States . But it will do so only if other NATO nations follow suit , the Afghan government pledges to fight corruption , and its forces have adequate equipment . Later this week , Hamid Karzai will be sworn in to his second term as Afghan president . His government is seen as riddled with corruption and his election is considered deeply flawed . Mr . Karzai pledged his government will spend the next five years fighting corruption . U . S . President Barack Obama is considering sending additional American forces to Afghanistan . His top general there has reportedly asked for up to 40 , 000 troops . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_ner0100644 0000000 0000000 00000000167 14135770370 032741 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/ner-pos-features_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/ner-pos-features_cl0100664 0001750 0001750 00000002373 14135770370 034256 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Onl0100644 0000000 0000000 00000000172 14135770370 032701 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithEntitiesWithTypes.train apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithEntitiesWit0100664 0001750 0001750 00000000644 14135770370 034346 0ustar00jeffjeff0000000 0000000 NATO United States NATO Parliamentary Assembly Edinburgh Britain Anders Fogh Rasmussen U . S . Barack Obama Afghanistan Rasmussen Afghanistan 2010 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_ner0100644 0000000 0000000 00000000157 14135770370 032740 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/ner-pos-features.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/ner-pos-features.xm0100664 0001750 0001750 00000004144 14135770370 034221 0ustar00jeffjeff0000000 0000000 2 2 2 2 2 2 pos-model.bin true false ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_namefind_Onl0100644 0000000 0000000 00000000156 14135770370 032703 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithNames.train apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/OnlyWithNames.train0100664 0001750 0001750 00000000353 14135770370 034252 0ustar00jeffjeff0000000 0000000 Neil Abercrombie Anibal Acevedo-Vila Gary Ackerman Robert Aderholt Daniel Akaka Todd Akin Lamar Alexander Rodney Alexander apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/namefind/voa1.train0100664 0001750 0001750 00000006133 14135770370 032361 0ustar00jeffjeff0000000 0000000 U . S . President Barack Obama has arrived in South Korea , where he is expected to show solidarity with the country ' s president in demanding North Korea move toward ending its nuclear weapons programs . As he departed China for South Korea Wednesday , President Obama took another opportunity to urge North Korea to reach an agreement on its nuclear weapons . " North Korea has a choice . It can continue down the path of confrontation and provocation that has led to less security , less prosperity and more isolation from the global community , " President Obama said . " Or it can choose to become a full member of the international community , which will give a better life to its people by living up to international obligations and foregoing nuclear weapons . " The president landed at a U . S . air base Wednesday evening , and is to hold talks with South Korean President Lee Myung - bak Thursday here in the South Korean capital . South Korea and the United States are trying to coax the North back to six - nation talks aimed at ending its nuclear weapons . President Obama has indicated he will send an envoy to Pyongyang before the end of the year for one - on - one discussions , but only in the context of restarting the multinational process . Apart from the nuclear issue , Mr . Obama ' s visit is seen as fairly routine . Scott Snyder is the director of the Center for U . S . Korea Policy . " Frankly , the relationship is in pretty good health right now , so there aren ' t necessarily any real burning issues , " Snyder said . " They ' ll coordinate on North Korea , they ' ll talk about other issues in the alliance . President Obama will thank South Korea for its contributions to Afghanistan . " The run - up to President Obama ' s arrival here in Seoul has been relatively free of protests . However , a group of North Korean human rights advocates called on Mr . Obama Wednesday to speak out more forcefully against the North ' s abuses . Tim Peters , a leader of the demonstration , says Mr . Obama has spoken too softly on North Korean human rights while focusing on security and economic matters . " Mr . President , your voice is desperately needed ! " Peters said . Human rights activists want more U . S . pressure on China to stop sending North Korean refugees home against their will , where they may face severe punishment or execution . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_sentdetect_S0100644 0000000 0000000 00000000166 14135770370 032737 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/sentdetect/SentencesInsufficient.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/sentdetect/SentencesInsuffic0100664 0001750 0001750 00000000152 14135770370 034371 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/sentdetect/Sentences.txt0100664 0001750 0001750 00000017060 14135770370 033526 0ustar00jeffjeff0000000 0000000 Last September, I tried to find out the address of an old school friend whom I hadnt't seen for 15 years. I just knew his name, Alan McKennedy, and I'd heard the rumour that he'd moved to Scotland, the country of his ancestors. So I called Julie, a friend who's still in contact with him. She told me that he lived in 23213 Edinburgh, Worcesterstreet 12. I wrote him a letter right away and he answered soon, sounding very happy and delighted. Last year, I wanted to write a letter to my grandaunt. Her 86th birthday was on October 6, and I no longer wanted to be hesitant to get in touch with her. I didn`t know her face-to-face, and so it wasn't easy for me to find out her address. As she had two apartments in different countries, I decided to write to both. The first was in 12424 Paris in Rue-de-Grandes-Illusions 5. But Marie Clara, as my aunt is called, prefered her apartment in Berlin. It's postcode is 30202. She lived there, in beautiful Kaiserstrae 13, particulary in summer. Hi my name is Michael Graf, how much is a taxi from Ostbahnhof to Hauptbahnhof? About 10 Euro, I reckon. That sounds good. So please call a driver to Leonardstrae 112, near the Ostbahnhof in 56473 Hamburg. I'd like to be at Silberhornstrae 12 as soon as possible. Thank you very much! Hi Mike, it's Stefanie Schmidt. I'm in Nrnberg at the moment and I've got the problem that my bike has broken. Could you please pick me up from Seidlstrae 56, I'm in the Caf "Mondnacht" at the moment. Please hurry up, I need to be back in Ulm at 8 p.m.! My husband George and me recently celebrated our 10th wedding anniversary. We got married on March 11, 1995. Therefore, we found a photo album with pictures of our first own apartment, which was in 81234 Munich. As a young married couple, we didn't have enough money to afford a bigger lodge than this one in Blumenweg 1. But only five years later, my husband was offered a well-payed job in 17818 Hamburg, so we moved there. Since then, our guests have to ring at Veilchenstrae 11 if they want to visit us, Luise and George Bauer. I read your help-wanted ad with great attention. I'm a student of informatics, 6th semester, and I'm very interested in your part-time job offer. I have a competent knowledge of programming and foreign languages, like French and Italian. I'm looking forward to your reply. Alisa Fernandes, a tourist from Spain, went to the reception desk of the famous Highfly-Hotel in 30303 Berlin. As she felt quite homesick, she asked the staff if they knew a good Spanish restaurant in Berlin. The concierge told her to go to the "Tapasbar" in Chesterstr. 2. Alisa appreciated the hint and enjoyed a delicious traditional meal. An old friend from France is currently travelling around Europe. Yesterday, she arrived in Berlin and we met up spontaneously. She wanted me to show her some famous sights, like the Brandenburger Tor and the Reichstag. But it wasn't easy to meet up in the city because she hardly knows any streetname or building. So I proposed to meet at a quite local point: the caf "Daily's" in Unter-den-Linden 18, 30291 Berlin. It is five minutes away from the underground station "Westbad". She found it instantly and we spent a great day in the capital. Where did you get those great shoes? They look amazing, I love the colour. Are they made of leather? No, that's faked. But anyway, I like them too. I got them from Hamburg. Don't you know the famous shop in Veilchenstrae? It's called "Twentytwo". I've never heard of that before. Could you give me the complete address? Sure, it's in Veilchenstrae 12, in 78181 Hamburg. I deem it best to write a letter to the owner if the shoes are still available. His name is Gerhard Fritsch. Hi, am I talking to the inquiries? My name is Mike Sander and I'd like to know if it is possible to get information about an address if I merely know the name and the phone number of a person! How is he or she called? His name is Stefan Miller and his number is the 030/827234. I'll have a look in the computer. I found a Stefan Miller who lives in Leipzig. Is that right? Yes, it definitely is. So Stefan Miller lives in Heinrich-Heine-Strae 112, in 20193 Leipzig. Thank you very much for the information. Bye! On July 14, the father of a family got painfully injured after he had tried to start a barbecue. The flaring flames burnt instantly through his jacket, which he managed to pull off last-minute. Although the wounds weren't life-threatening, it was urgent to bring him directly into ambulance. But the only hospital that had opened that Sunday was the Paracelsus Hospital in 83939 Weilheim, which was 2 hours away. Convulsed with pain, the man finally arrived in Stifterstrae 15, where the personal immediately took care of him. Last year, I worked as a delivery boy for a small local magazine. I worked in the area of 83454 Ottobrunn. I had a list with the home addresses of our costumers whom I brought their papers once a week. An elderly lady, who was called Elenor Meier, lived in Grtnerweg 6, and I always drove there first, because I liked her the most. Afterwards, I went to a student, Gina Schneider, who lived still in her parent's house in Grtnerweg 25. The last in line was the retired teacher Bruno Schulz in Dramenstrae 15. He was friendly enough to tip sometimes. Our business company was founded in 1912 by the singer and entertainer Michel Seile. He opened the first agency in Erding, a small town near Munich. Now, more than 90 years of turbulent ups and downs later, we finally decided to situate our company in a more central and frequented area. Last year, we moved into an empty factory building in 30303 Berlin. It is located in Barmerstr. 34. When George Miller, a tourist from England, came to Munich, he had no idea how to read the city maps. He depended completely on the help and information of German pedestrians. One day, he simply could not find the famous Lenbachhaus. So he asked a young woman for help. She pointed at a street sign and explained to him that he'd find the Lenbachhaus in Luisenstrae 33, which is in 80333 Munich. Miller was very grateful and could finally enjoy the exhibition. On March 15, there was an accident near Munich. The driver got badly injured. Driving alone not far from her home, the middle-aged woman crashed at high speed into a tree. A resident, who lives near the street where the accident took place, called instantly the police. He reported what had happened and gave his name and address to the officer. He's called Peter Schubert and he lives at Max-Lw-Strae 13 in 84630 Gauting. The police arrived ten minutes later and brought the woman into hospital. Although she had multiple trauma, she's out of mortal danger. Hi, how are you? Arent't you a friend of Natalie? Yeah for sure. How did you know that? I saw you sitting next to her at uni. Yeah she's my best friend. Are you going to her party next friday? Oh yes, I'd really like to. But in fact I don't know yet where it takes place. I can tell you: ring at Baumann, Meisenstrae 5, in 81737 Munich. The party starts at 9 p.m. I hope you'll find it. Thank you very much, see you next friday! My name is Michael Hinterhofer. When I was 21, I moved out from my parents' home into my first own appartment in order to study in a bigger city. My new home was in Lilienstrae 1 in 25334 Hamburg. But I realized quickly that life in a metropolis wasn't relaxed enough for me. So I decided to move into a smaller town. Now I'm a tenant with an elderly widow. We live in Brgerstrae 2 in 63737 Heidelberg. I really like the smalltown flair and my studies at Heidelberg's notable university. The stock rose by 3.5% yesterday in heavy trading.apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/sentdetect/abb.xml0100664 0001750 0001750 00000001763 14135770370 032307 0ustar00jeffjeff0000000 0000000 tel. Mr. Mrs. ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_ngram_ngram-0100644 0000000 0000000 00000000160 14135770370 032652 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/ngram-model-no-count.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/ngram-model-no-count.x0100664 0001750 0001750 00000001646 14135770370 034136 0ustar00jeffjeff0000000 0000000 brown fox ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_ngram_ngram-0100644 0000000 0000000 00000000164 14135770370 032656 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/ngram-model-not-a-number.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/ngram-model-not-a-numb0100664 0001750 0001750 00000001663 14135770370 034102 0ustar00jeffjeff0000000 0000000 brown fox apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ngram/ngram-model.xml0100664 0001750 0001750 00000004067 14135770370 032727 0ustar00jeffjeff0000000 0000000 brown fox fox brown fox jumped the the brown fox the brown Fox jumped brown brown Fox jumped Fox fox jumped the brown brown Fox Fox jumped apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/ml/maxent/football.dat0100664 0001750 0001750 00000004660 14135770370 033076 0ustar00jeffjeff0000000 0000000 home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_lost_previous man_united_won_previous arsenal home=man_united Beckham=true Scholes=false Neville=true Henry=false Kanu=true Parlour=false Ferguson=tense Wengler=confident arsenal_won_previous man_united_lost_previous man_united home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=tense Wengler=tense arsenal_lost_previous man_united_won_previous tie home=man_united Beckham=true Scholes=true Neville=false Henry=true Kanu=false Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous tie home=man_united Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal home=man_united Beckham=false Scholes=true Neville=true Henry=false Kanu=true Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united home=man_united Beckham=true Scholes=true Neville=false Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous man_united home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_lost_previous man_united_won_previous arsenal home=arsenal Beckham=true Scholes=false Neville=true Henry=false Kanu=true Parlour=false Ferguson=tense Wengler=confident arsenal_won_previous man_united_lost_previous arsenal home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=tense Wengler=tense arsenal_lost_previous man_united_won_previous tie home=arsenal Beckham=true Scholes=true Neville=false Henry=true Kanu=false Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united home=arsenal Beckham=false Scholes=true Neville=true Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal home=arsenal Beckham=false Scholes=true Neville=true Henry=false Kanu=true Parlour=false Ferguson=confident Wengler=confident arsenal_won_previous man_united_won_previous man_united home=arsenal Beckham=true Scholes=true Neville=false Henry=true Kanu=true Parlour=false Ferguson=confident Wengler=tense arsenal_won_previous man_united_won_previous arsenal ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_postag_Annot0100644 0000000 0000000 00000000173 14135770370 032745 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/AnnotatedSentencesInsufficient.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/AnnotatedSentencesIns0100664 0001750 0001750 00000000017 14135770370 034345 0ustar00jeffjeff0000000 0000000 Find_VB out_RP../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_postag_TagDi0100644 0000000 0000000 00000000167 14135770370 032661 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryCaseSensitive.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryCaseSens0100664 0001750 0001750 00000001614 14135770370 034300 0ustar00jeffjeff0000000 0000000 McKinsey ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_postag_TagDi0100644 0000000 0000000 00000000176 14135770370 032661 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryWithoutCaseAttribute.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryWithoutC0100664 0001750 0001750 00000001566 14135770370 034350 0ustar00jeffjeff0000000 0000000 McKinsey ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_postag_Annot0100644 0000000 0000000 00000000157 14135770370 032747 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/AnnotatedSentences.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/AnnotatedSentences.tx0100664 0001750 0001750 00000031454 14135770370 034336 0ustar00jeffjeff0000000 0000000 Last_JJ September_NNP ,_, I_PRP tried_VBD to_TO find_VB out_RP the_DT address_NN of_IN an_DT old_JJ school_NN friend_NN whom_WP I_PRP had_VBD not_RB seen_VBN for_IN 15_CD years_NNS ._. I_PRP just_RB knew_VBD his_PRP$ name_NN ,_, Alan_NNP McKennedy_NNP ,_, and_CC I_PRP 'd_MD heard_VBD the_DT rumour_NN that_IN he_PRP 'd_MD moved_VBD to_TO Scotland_NNP ,_, the_DT country_NN of_IN his_PRP$ ancestors_NNS ._. So_IN I_PRP called_VBD Julie_NNP ,_, a_DT friend_NN who's_WDT still_RB in_IN contact_NN with_IN him_PRP ._. She_PRP told_VBD me_PRP that_IN he_PRP lived_VBD in_IN 23213_CD Edinburgh_NNP ,_, Worcesterstreet_NNP 12_CD ._. I_PRP wrote_VBD him_PRP a_DT letter_NN right_RB away_RB and_CC he_PRP answered_VBD soon_RB ,_, sounding_VBG very_RB happy_JJ and_CC delighted_JJ ._. Last_JJ year_NN ,_, I_PRP wanted_VBD to_TO write_VB a_DT letter_NN to_TO my_PRP$ grandaunt_NN ._. Her_PRP$ 86_CD th_NN birthday_NN was_VBD on_IN October_NNP 6_CD ,_, and_CC I_PRP no_RB longer_RB wanted_VBD to_TO be_VB hesitant_JJ to_TO get_VB in_IN touch_NN with_IN her_PRP ._. I_PRP did_VBD not_RB know_VB her_PRP face-to-face_RB ,_, and_CC so_RB it_PRP was_VBD not_RB easy_JJ for_IN me_PRP to_TO find_VB out_RP her_PRP$ address_NN ._. As_IN she_PRP had_VBD two_CD apartments_NNS in_IN different_JJ countries_NNS ,_, I_PRP decided_VBD to_TO write_VB to_TO both_DT ._. The_DT first_JJ was_VBD in_IN 12424_CD Paris_NNP in_IN Rue-de-Grandes-Illusions_NNP 5_CD ._. But_CC Marie_NNP Clara_NNP ,_, as_IN my_PRP$ aunt_NN is_VBZ called_VBN ,_, prefered_VBN her_PRP$ apartment_NN in_IN Berlin_NNP ._. It_PRP 's_VBZ postcode_JJ is_VBZ 30202_CD ._. She_PRP lived_VBD there_RB ,_, in_IN beautiful_JJ Kaiserstrae_NNP 13_CD ,_, particulary_NN in_IN summer_NN ._. Hi_UH my_PRP$ name_NN is_VBZ Stefanie_NNP Schmidt_NNP ,_, how_WRB much_RB is_VBZ a_DT taxi_NN from_IN Ostbahnhof_NNP to_TO Hauptbahnhof_NNP ?_. About_IN 10_CD Euro_NNP ,_, I_PRP reckon_VBP ._. That_DT sounds_VBZ good_JJ ._. So_RB please_VB call_VB a_DT driver_NN to_TO Leonardstrae_NNP 112_CD ,_, near_IN the_DT Ostbahnhof_NNP in_IN 56473_CD Hamburg_NNP ._. I_PRP 'd_MD like_VB to_TO be_VB at_IN Silberhornstrae_NNP 12_CD as_RB soon_RB as_IN possible_JJ ._. Thank_VB you_PRP very_RB much_RB !_. Hi_NNP Mike_NNP ,_, it_PRP 's_VBZ Stefanie_NNP Schmidt_NNP ._. I_PRP 'm_VBP in_IN Nrnberg_NNP at_IN the_DT moment_NN and_CC I_PRP 've_VBP got_VBD the_DT problem_NN that_IN my_PRP$ bike_NN has_VBZ broken_VBN ._. Could_MD you_PRP please_VB pick_VB me_PRP up_RP from_IN Seidlstrae_NNP 56_CD ,_, I_PRP 'm_VBP in_IN the_DT Caf_NNP "Mondnacht"_NNP at_IN the_DT moment_NN ._. Please_VB hurry_VB up_RB ,_, I_PRP need_VBP to_TO be_VB back_RB in_IN Ulm_NNP at_IN 8_CD p.m._NN !_. My_PRP$ husband_NN George_NNP and_CC me_PRP recently_RB celebrated_VBD our_PRP$ 10_CD th_JJ wedding_NN anniversary_NN ._. We_PRP got_VBD married_VBN on_IN March_NNP 11_CD ,_, 1995_CD ._. Therefore_RB ,_, we_PRP found_VBD a_DT photo_NN album_NN with_IN pictures_NNS of_IN our_PRP$ first_JJ own_JJ apartment_NN ,_, which_WDT was_VBD in_IN 81234_CD Munich_NNP ._. As_IN a_DT young_JJ married_JJ couple_NN ,_, we_PRP did_VBD not_RB have_VB enough_JJ money_NN to_TO afford_VB a_DT bigger_JJR lodge_NN than_IN this_DT one_CD in_IN Blumenweg_NNP 1_CD ._. But_CC only_RB five_CD years_NNS later_RB ,_, my_PRP$ husband_NN was_VBD offered_VBN a_DT well-payed_JJ job_NN in_IN 17818_CD Hamburg_NNP ,_, so_IN we_PRP moved_VBD there_RB ._. Since_IN then_RB ,_, our_PRP$ guests_NNS have_VBP to_TO ring_VB at_IN Veilchenstrae_NNP 11_CD if_IN they_PRP want_VBP to_TO visit_VB us_PRP ,_, Luise_NNP and_CC George_NNP Bauer_NNP ._. I_PRP read_VBD your_PRP$ help-wanted_JJ ad_NN with_IN great_JJ attention_NN ._. I_PRP 'm_VBP a_DT student_NN of_IN informatics_NNS ,_, 6th_JJ semester,_NN and_CC I_PRP 'm_VBP very_RB interested_VBN in_IN your_PRP$ part-time_JJ job_NN offer_NN ._. I_PRP have_VBP a_DT competent_JJ knowledge_NN of_IN programming_NN and_CC foreign_JJ languages_NNS ,_, like_IN French_JJ and_CC Italian_JJ ._. I_PRP 'm_VBP looking_VBG forward_RB to_TO your_PRP$ reply_NN ._. Alisa_NNP Fernandes_NNP ,_, a_DT tourist_NN from_IN Spain_NNP ,_, went_VBD to_TO the_DT reception_NN desk_NN of_IN the_DT famous_JJ Highfly-Hotel_NNP in_IN 30303_CD Berlin_NNP ._. As_IN she_PRP felt_VBD quite_RB homesick_JJ ,_, she_PRP asked_VBD the_DT staff_NN if_IN they_PRP knew_VBD a_DT good_JJ Spanish_JJ restaurant_NN in_IN Berlin_NNP ._. The_DT concierge_NN told_VBD her_PRP to_TO go_VB to_TO the_DT "Tapasbar"_NN in_IN Chesterstr._NNP 2_CD ._. Alisa_NNP appreciated_VBD the_DT hint_NN and_CC enjoyed_VBD a_DT delicious_JJ traditional_JJ meal_NN ._. An_DT old_JJ friend_NN from_IN France_NNP is_VBZ currently_RB travelling_VBG around_IN Europe_NNP ._. Yesterday_NN ,_, she_PRP arrived_VBD in_IN Berlin_NNP and_CC we_PRP met_VBD up_RP spontaneously_RB ._. She_PRP wanted_VBD me_PRP to_TO show_VB her_PRP some_DT famous_JJ sights_NNS ,_, like_IN the_DT Brandenburger_NNP Tor_NNP and_CC the_DT Reichstag_NNP ._. But_CC it_PRP was_VBD not_RB easy_JJ to_TO meet_VB up_RP in_IN the_DT city_NN because_IN she_PRP hardly_RB knows_VBZ any_DT streetname_NN or_CC building_NN ._. So_IN I_PRP proposed_VBD to_TO meet_VB at_IN a_DT quite_RB local_JJ point:_NN the_DT caf_NN "Daily's"_NN in_IN Unter-den-Linden_NNP 18,_CD 30291_CD Berlin_NNP ._. It_PRP is_VBZ five_CD minutes_NNS away_RB from_IN the_DT underground_JJ station_NN "Westbad"_NN ._. She_PRP found_VBD it_PRP instantly_RB and_CC we_PRP spent_VBD a_DT great_JJ day_NN in_IN the_DT capital_NN ._. Where_WRB did_VBD you_PRP get_VB those_DT great_JJ shoes_NNS ?_. They_PRP look_VBP amazing_JJ ,_, I_PRP love_VBP the_DT colour_NN ._. Are_VBP they_PRP made_VBN of_IN leather_NN ?_. No,_NNP that_DT 's_VBZ faked_VBN ._. But_CC anyway_RB ,_, I_PRP like_VBP them_PRP too_RB ._. I_PRP got_VBD them_PRP from_IN Hamburg._NNP Do_VBP not_RB you_PRP know_VB the_DT famous_JJ shop_NN in_IN Veilchenstrae_NNP ?_. It_PRP 's_VBZ called_VBN "Twentytwo"_NNP ._. I_PRP 've_VBP never_RB heard_VBN of_IN that_DT before_RB ._. Could_MD you_PRP give_VB me_PRP the_DT complete_JJ address_NN ?_. Sure_JJ ,_, it_PRP 's_VBZ in_IN Veilchenstrae_NNP 12_CD ,_, in_IN 78181_CD Hamburg_NNP ._. I_PRP deem_VBP it_PRP best_RB to_TO write_VB a_DT letter_NN to_TO the_DT owner_NN if_IN the_DT shoes_NNS are_VBP still_RB available_JJ ._. His_PRP$ name_NN is_VBZ Gerhard_NNP Fritsch_NNP ._. Hi_UH ,_, am_VBP I_PRP talking_VBG to_TO the_DT inquiries_NNS ?_. My_PRP$ name_NN is_VBZ Mike_NNP Sander_NNP and_CC I_PRP 'd_MD like_VB to_TO know_VB if_IN it_PRP is_VBZ possible_JJ to_TO get_VB information_NN about_IN an_DT address_NN if_IN I_PRP merely_RB know_VBP the_DT name_NN and_CC the_DT phone_NN number_NN of_IN a_DT person_NN !_. How_WRB is_VBZ he_PRP or_CC she_PRP called_VBD ?_. His_PRP$ name_NN is_VBZ Stefan_NNP Miller_NNP and_CC his_PRP$ number_NN is_VBZ the_DT 030/827234_CD ._. I'll_NNP have_VBP a_DT look_NN in_IN the_DT computer..._NN I_PRP found_VBD a_DT Stefan_NNP Miller_NNP who_WP lives_VBZ in_IN Leipzig._NNP Is_VBZ that_DT right_NN ?_. Yes_UH ,_, it_PRP definitely_RB is_VBZ ._. So_RB Stefan_NNP Miller_NNP lives_VBZ in_IN Heinrich-Heine-Strae_NNP 112_CD ,_, in_IN 20193_CD Leipzig_NNP ._. Thank_VB you_PRP very_RB much_RB for_IN the_DT information_NN ._. Bye_NNP !_. On_IN July_NNP 14_CD ,_, the_DT father_NN of_IN a_DT family_NN got_VBD painfully_RB injured_VBN after_IN he_PRP had_VBD tried_VBN to_TO start_VB a_DT barbecue_NN ._. The_DT flaring_VBG flames_NNS burnt_VBP instantly_RB through_IN his_PRP$ jacket_NN ,_, which_WDT he_PRP managed_VBD to_TO pull_VB off_RP last-minute_JJ ._. Although_IN the_DT wounds_NNS were_VBD n't_RB life-threatening_JJ ,_, it_PRP was_VBD urgent_JJ to_TO bring_VB him_PRP directly_RB into_IN ambulance_NN ._. But_CC the_DT only_JJ hospital_NN that_WDT had_VBD opened_VBN that_IN Sunday_NNP was_VBD the_DT Paracelsus_NNP Hospital_NNP in_IN 83939_CD Weilheim_NNP ,_, which_WDT was_VBD 2_CD hours_NNS away_RB ._. Convulsed_JJ with_IN pain_NN ,_, the_DT man_NN finally_RB arrived_VBD in_IN Stifterstrae_NNP 15_CD ,_, where_WRB the_DT personal_NN immediately_RB took_VBD care_NN of_IN him_PRP ._. Last_JJ year_NN ,_, I_PRP worked_VBD as_IN a_DT delivery_NN boy_NN for_IN a_DT small_JJ local_JJ magazine_NN ._. I_PRP worked_VBD in_IN the_DT area_NN of_IN 83454_CD Ottobrunn_NNP ._. I_PRP had_VBD a_DT list_NN with_IN the_DT home_NN addresses_NNS of_IN our_PRP$ costumers_NNS whom_WP I_PRP brought_VBD their_PRP$ papers_NNS once_RB a_DT week_NN ._. An_DT elderly_JJ lady_NN ,_, who_WP was_VBD called_VBN Elenor_NNP Meier_NNP ,_, lived_VBD in_IN Grtnerweg_NNP 6_CD ,_, and_CC I_PRP always_RB drove_VBD there_RB first_RB ,_, because_IN I_PRP liked_VBD her_PRP the_DT most_JJS ._. Afterwards_RB ,_, I_PRP went_VBD to_TO a_DT student_NN ,_, Gina_NNP Schneider_NNP ,_, who_WP lived_VBD still_RB in_IN her_PRP$ parent's_NNS house_NN in_IN Grtnerweg_NNP 25_CD ._. The_DT last_JJ in_IN line_NN was_VBD the_DT retired_JJ teacher_NN Bruno_NNP Schulz_NNP in_IN Dramenstrae_NNP 15_CD ._. He_PRP was_VBD friendly_JJ enough_RB to_TO tip_VB sometimes_RB ._. Our_PRP$ business_NN company_NN was_VBD founded_VBN in_IN 1912_CD by_IN the_DT singer_NN and_CC entertainer_NN Michel_NNP Seile_NNP ._. He_PRP opened_VBD the_DT first_JJ agency_NN in_IN Erding_NNP ,_, a_DT small_JJ town_NN near_IN Munich_NNP ._. Now_RB ,_, more_JJR than_IN 90_CD years_NNS of_IN turbulent_JJ ups_NNS and_CC downs_NNS later_RB ,_, we_PRP finally_RB decided_VBD to_TO situate_VB our_PRP$ company_NN in_IN a_DT more_JJR central_JJ and_CC frequented_JJ area_NN ._. Last_JJ year_NN ,_, we_PRP moved_VBD into_IN an_DT empty_JJ factory_NN building_NN in_IN 30303_CD Berlin_NNP ._. It_PRP is_VBZ located_VBN in_IN Barmerstr._NNP 34_CD ._. When_WRB George_NNP Miller_NNP ,_, a_DT tourist_NN from_IN England_NNP ,_, came_VBD to_TO Munich_NNP ,_, he_PRP had_VBD no_DT idea_NN how_WRB to_TO read_VB the_DT city_NN maps_NNS ._. He_PRP depended_VBD completely_RB on_IN the_DT help_NN and_CC information_NN of_IN German_JJ pedestrians_NNS ._. One_CD day_NN ,_, he_PRP simply_RB could_MD not_RB find_VB the_DT famous_JJ Lenbachhaus_NNP ._. So_RB he_PRP asked_VBD a_DT young_JJ woman_NN for_IN help_NN ._. She_PRP pointed_VBD at_IN a_DT street_NN sign_NN and_CC explained_VBD to_TO him_PRP that_IN he_PRP 'd_MD find_VB the_DT Lenbachhaus_NNP in_IN Luisenstrae_NNP 33_CD ,_, which_WDT is_VBZ in_IN 80333_CD Munich_NNP ._. Miller_NNP was_VBD very_RB grateful_JJ and_CC could_MD finally_RB enjoy_VB the_DT exhibition_NN ._. On_IN March_NNP 15_CD ,_, there_EX was_VBD an_DT accident_NN near_IN Munich_NNP ._. The_DT driver_NN got_VBD badly_RB injured_VBN ._. Driving_VBG alone_RB not_RB far_RB from_IN her_PRP$ home_NN ,_, the_DT middle-aged_JJ woman_NN crashed_VBD at_IN high_JJ speed_NN into_IN a_DT tree_NN ._. A_DT resident_NN ,_, who_WP lives_VBZ near_IN the_DT street_NN where_WRB the_DT accident_NN took_VBD place_NN ,_, called_VBN instantly_RB the_DT police_NN ._. He_PRP reported_VBD what_WP had_VBD happened_VBN and_CC gave_VBD his_PRP$ name_NN and_CC address_NN to_TO the_DT officer_NN ._. He_PRP 's_VBZ called_VBN Peter_NNP Schubert_NNP and_CC he_PRP lives_VBZ at_IN Max-Lw-Strae_NNP 13_CD in_IN 84630_CD Gauting_NNP ._. The_DT police_NN arrived_VBD ten_CD minutes_NNS later_RB and_CC brought_VBD the_DT woman_NN into_IN hospital_NN ._. Although_IN she_PRP had_VBD multiple_JJ trauma_NN ,_, she_PRP 's_VBZ out_IN of_IN mortal_JJ danger_NN ._. Hi_NNP ,_, how_WRB are_VBP you_PRP ?_. Are_VBP nt't_RB you_PRP a_DT friend_NN of_IN Natalie_NNP ?_. Yeah_UH for_IN sure_JJ ._. How_WRB did_VBD you_PRP know_VB that_DT ?_. I_PRP saw_VBD you_PRP sitting_VBG next_JJ to_TO her_PRP at_IN uni_JJ ._. Yeah_NNP she_PRP 's_VBZ my_PRP$ best_JJS friend_NN ._. Are_VBP you_PRP going_VBG to_TO her_PRP party_NN next_JJ friday_NN ?_. Oh_UH yes_UH ,_, I_PRP 'd_MD really_RB like_VB to_TO ._. But_CC in_IN fact_NN I_PRP do_VBP n't_RB know_VB yet_RB where_WRB it_PRP takes_VBZ place_NN ._. I_PRP can_MD tell_VB you_PRP :_: ring_NN at_IN Baumann,_NNP Meisenstrae_NNP 5_CD ,_, in_IN 81737_CD Munich_NNP ._. The_DT party_NN starts_VBZ at_IN 9_CD p.m._NN ._. I_PRP hope_VBP you_PRP 'll_MD find_VB it_PRP ._. Thank_VB you_PRP very_RB much_RB ,_, see_VBP you_PRP next_JJ friday_NN !_. My_PRP$ name_NN is_VBZ Michael_NNP Hinterhofer_NNP ._. When_WRB I_PRP was_VBD 21_CD ,_, I_PRP moved_VBD out_RP from_IN my_PRP$ parents_NNS home_NN into_IN my_PRP$ first_JJ own_JJ appartment_NN in_IN order_NN to_TO study_VB in_IN a_DT bigger_JJR city_NN ._. My_PRP$ new_JJ home_NN was_VBD in_IN Lilienstrae_NNP 1_CD in_IN 25334_CD Hamburg_NNP ._. But_CC I_PRP realized_VBD quickly_RB that_IN life_NN in_IN a_DT metropolis_NN was_VBD n't_RB relaxed_VBN enough_RB for_IN me_PRP ._. So_IN I_PRP decided_VBD to_TO move_VB into_IN a_DT smaller_JJR town_NN ._. Now_RB I_PRP 'm_VBP a_DT tenant_NN with_IN an_DT elderly_JJ widow_NN ._. We_PRP live_VBP in_IN Brgerstrae_NNP 2_CD in_IN 63737_CD Heidelberg_NNP ._. I_PRP really_RB like_IN the_DT smalltown_JJ flair_NN and_CC my_PRP$ studies_NNS at_IN Heidelberg_NNP 's_POS notable_JJ university_NN ._../PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_postag_TagDi0100644 0000000 0000000 00000000171 14135770370 032654 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryCaseInsensitive.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/postag/TagDictionaryCaseInse0100664 0001750 0001750 00000001615 14135770370 034267 0ustar00jeffjeff0000000 0000000 McKinsey apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/output.txt0100664 0001750 0001750 00000021607 14135770370 033150 0ustar00jeffjeff0000000 0000000 The DT the the economy NN economy economy 's POS 's 's temperature NN temperature temperature will MD will will be VB be be taken VBN take take from IN from from several DT several several vantage NN vantage vantage points NNS point point this DT this this week NN week week , , , , with IN with with readings NNS reading read on IN on on trade NN trade trade , , , , output NN output output , , , , housing NN housing housing and CC and and inflation NN inflation inflation . . . . The DT the the most RBS most most troublesome JJ troublesome troublesome report NN report report may MD may may be VB be be the DT the the August NNP august august merchandise NN merchandise merchandise trade NN trade trade deficit NN deficit deficit due JJ due due out IN out out tomorrow NN tomorrow tomorrow . . . . The DT the the trade NN trade trade gap NN gap gap is VBZ be be expected VBN expect expect to TO to to widen VB widen widen to TO to to about IN about about $ $ $ $ 9 CD 9 9 billion CD billion billion from IN from from July NNP july july 's POS 's 's $ $ $ $ 7.6 CD 7.6 7.6 billion CD billion billion , , , , according VBG accord accord to TO to to a DT a a survey NN survey survey by IN by by MMS NNS mm mm International NNP international international , , , , a DT a a unit NN unit unit of IN of of McGraw NNP mcgraw mcgraw - HYPH - - Hill NNP hill hill Inc. NNP inc. inc. , , , , New NNP new new York NNP york york . . . . Thursday NNP thursday thursday 's POS 's 's report NN report report on IN on on the DT the the September NNP september september consumer NN consumer consumer price NN price price index NN index index is VBZ be be expected VBN expect expect to TO to to rise VB rise rise , , , , although IN although although not RB not not as IN as as sharply RB sharply sharply as IN as as the DT the the 0.9 CD 0.9 0.9 % NN % % gain NN gain gain reported VBN report reported Friday NNP friday friday in IN in in the DT the the producer NN producer producer price NN price price index NN index index . . . . That DT that that gain NN gain gain was VBD be be being VBG be be cited VBD cite cite as IN as as a DT a a reason NN reason reason the DT the the stock NN stock stock market NN market market was VBD be be down IN down down early RB early early in IN in in Friday NNP friday friday 's POS 's 's session NN session session , , , , before IN before before it PRP it it got VBD get get started VBN start start on IN on on its PRP$ its its reckless JJ reckless reckless 190 CD 190 190 - HYPH - - point NN point point plunge NN plunge plunge . . . . Economists NNS economist economist are VBP be be divided VBN divide divide as IN as as to TO to to how WRB how how much JJ much much manufacturing VBG manufacture manufacturing strength NN strength strength they PRP they they expect VBP expect expect to TO to to see VB see see in IN in in September NNP september september reports NNS report report on IN on on industrial JJ industrial industrial production NN production production and CC and and capacity NN capacity capacity utilization NN utilization utilization , , , , also RB also also due JJ due due tomorrow NN tomorrow tomorrow . . . . Meanwhile RB meanwhile meanwhile , , , , September NNP september september housing NN housing housing starts NNS start start , , , , due JJ due due Wednesday NNP wednesday wednesday , , , , are VBP be be thought VBN think think to TO to to have VB have have inched VBN inch inch upward RB upward upward . . . . `` `` `` `` There EX there there 's VBZ be be a DT a a possibility NN possibility possibility of IN of of a DT a a surprise NN surprise surprise '' '' '' '' in IN in in the DT the the trade NN trade trade report NN report report , , , , said VBD say say Michael NNP michael michael Englund NNP englund england , , , , director NN director director of IN of of research NN research research at IN at at MMS NNS mm mm . . . . A DT a a widening NN widening widening of IN of of the DT the the deficit NN deficit deficit , , , , if IN if if it PRP it it were VBD be be combined VBN combine combine with IN with with a DT a a stubbornly RB stubbornly stubbornly strong JJ strong strong dollar NN dollar dollar , , , , would MD would would exacerbate VB exacerbate exacerbate trade NN trade trade problems NNS problem problem -- : -- -- but CC but but the DT the the dollar NN dollar dollar weakened VBD weaken weaken Friday NNP friday friday as IN as as stocks NNS stocks stock plummeted VBD plummet plummet . . . . In IN in in any DT any any event NN event event , , , , Mr. NNP mr. mr. Englund NNP englund englund and CC and and many DT many many others NNS others others say VBP say say that IN that that the DT the the easy JJ easy easy gains NNS gain gain in IN in in narrowing VBG narrow narrow the DT the the trade NN trade trade gap NN gap gap have VBP have have already RB already already been VBN be be made VBN make make . . . . `` `` `` `` Trade NN trade trade is VBZ be be definitely RB definitely definitely going VBG go go to TO to to be VB be be more RBR more more politically RB politically politically sensitive JJ sensitive sensitive over IN over over the DT the the next JJ next next six CD six six or CC or or seven CD seven seven months NNS month month as IN as as improvement NN improvement improvement begins VBZ begin begin to TO to to slow VB slow slow , , , , '' '' '' '' he PRP he he said VBD say say . . . . Exports NNS export export are VBP be be thought VBN think think to TO to to have VB have have risen VBN rise rise strongly RB strongly strongly in IN in in August NNP august august , , , , but CC but but probably RB probably probably not RB not not enough RB enough enough to TO to to offset VB offset offset the DT the the jump NN jump jump in IN in in imports NNS import import , , , , economists NNS economist economist said VBD say say . . . . Views NNS view view on IN on on manufacturing VBG manufacture manufacture strength NN strength strength are VBP be be split VBN split split between IN between between economists NNS economist economist who WP who who read VBP read read September NNP september september 's POS 's 's low JJ low low level NN level level of IN of of factory NN factory factory job NN job job growth NN growth growth as IN as as a DT a a sign NN sign sign of IN of of a DT a a slowdown NN slowdown slowdown and CC and and those DT those those who WP who who use VBP use use the DT the the somewhat RB somewhat somewhat more DT more more comforting VBG comfort comfort total JJ total total employment NN employment employment figures NNS figure figure in IN in in their PRP$ their their calculations NNS calculation calculation . . . . The DT the the wide JJ wide wide range NN range range of IN of of estimates NNS estimate estimate for IN for for the DT the the industrial JJ industrial industrial output NN output output number NN number number underscores VBZ underscore underscore the DT the the differences NNS difference difference : : : : The DT the the forecasts NNS forecast forecast run VBD run run from IN from from a DT a a drop NN drop drop of IN of of 0.5 CD 0.5 0.5 % NN % % to TO to to an DT an an increase NN increase increase of IN of of 0.4 CD 0.4 0.4 % NN % % , , , , according VBG accord according to TO to to MMS NNS mm mm . . . . A DT a a rebound NN rebound rebound in IN in in energy NN energy energy prices NNS price price , , , , which WDT which which helped VBD help help push VB push push up RP up up the DT the the producer NN producer producer price NN price price index NN index index , , , , is VBZ be be expected VBN expect expect to TO to to do VB do do the DT the the same JJ same same in IN in in the DT the the consumer NN consumer consumer price NN price price report NN report report . . . . The DT the the consensus NN consensus consensus view NN view view expects VBZ expect expect a DT a a 0.4 CD 0.4 0.4 % NN % % increase NN increase increase in IN in in the DT the the September NNP september september CPI NNP cpi cpi after IN after after a DT a a flat JJ flat flat reading NN reading reading in IN in in August NNP august august . . . . Robert NNP robert robert H. NNP h. h. Chandross NNP chandross chandross , , , , an DT an an economist NN economist economist for IN for for Lloyd NNP lloyd lloyd 's POS 's 's Bank NNP bank bank in IN in in New NNP new new York NNP york york , , , , is VBZ be be among IN among among those DT those those expecting VBG expect expect a DT a a more RBR more more moderate JJ moderate moderate gain NN gain gain in IN in in the DT the the CPI NNP cpi cpi than IN than than in IN in in prices NNS price price at IN at at the DT the the producer NN producer producer level NN level level . . . . `` `` `` `` Auto NN auto auto prices NNS price price had VBD have have a DT a a big JJ big big effect NN effect effect in IN in in the DT the the PPI NNP ppi ppi , , , , and CC and and at IN at at the DT the the CPI NNP cpi cpi level NN level level they PRP they they wo MD wo wo n't RB not not , , , , '' '' '' '' he PRP he he said VBD say say . . . . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_lemmatizer_s0100644 0000000 0000000 00000000161 14135770370 033001 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/smalldictionary.dict apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/smalldictionary.d0100664 0001750 0001750 00000000113 14135770370 034377 0ustar00jeffjeff0000000 0000000 barking VBG bark dogs NNS dog running VBG run down RP down street NN street./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_lemmatizer_s0100644 0000000 0000000 00000000166 14135770370 033006 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/smalldictionarymulti.dict apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/smalldictionarymu0100664 0001750 0001750 00000000124 14135770370 034521 0ustar00jeffjeff0000000 0000000 barking VBG bark#bark dogs NNS dog running VBG run#run down RP down street NN streetapache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/trial.old.tsv0100664 0001750 0001750 00000014715 14135770370 033477 0ustar00jeffjeff0000000 0000000 The DT the economy NN economy 's POS 's temperature NN temperature will MD will be VB be taken VBN take from IN from several DT several vantage NN vantage points NNS point this DT this week NN week , , , with IN with readings NNS reading on IN on trade NN trade , , , output NN output , , , housing NN housing and CC and inflation NN inflation . . . The DT the most RBS most troublesome JJ troublesome report NN report may MD may be VB be the DT the August NNP august merchandise NN merchandise trade NN trade deficit NN deficit due JJ due out IN out tomorrow NN tomorrow . . . The DT the trade NN trade gap NN gap is VBZ be expected VBN expect to TO to widen VB widen to TO to about IN about $ $ $ 9 CD 9 billion CD billion from IN from July NNP july 's POS 's $ $ $ 7.6 CD 7.6 billion CD billion , , , according VBG accord to TO to a DT a survey NN survey by IN by MMS NNS mm International NNP international , , , a DT a unit NN unit of IN of McGraw NNP mcgraw - HYPH - Hill NNP hill Inc. NNP inc. , , , New NNP new York NNP york . . . Thursday NNP thursday 's POS 's report NN report on IN on the DT the September NNP september consumer NN consumer price NN price index NN index is VBZ be expected VBN expect to TO to rise VB rise , , , although IN although not RB not as IN as sharply RB sharply as IN as the DT the 0.9 CD 0.9 % NN % gain NN gain reported VBN report Friday NNP friday in IN in the DT the producer NN producer price NN price index NN index . . . That DT that gain NN gain was VBD be being VBG be cited VBD cite as IN as a DT a reason NN reason the DT the stock NN stock market NN market was VBD be down IN down early RB early in IN in Friday NNP friday 's POS 's session NN session , , , before IN before it PRP it got VBD get started VBN start on IN on its PRP$ its reckless JJ reckless 190 CD 190 - HYPH - point NN point plunge NN plunge . . . Economists NNS economist are VBP be divided VBN divide as IN as to TO to how WRB how much JJ much manufacturing VBG manufacture strength NN strength they PRP they expect VBP expect to TO to see VB see in IN in September NNP september reports NNS report on IN on industrial JJ industrial production NN production and CC and capacity NN capacity utilization NN utilization , , , also RB also due JJ due tomorrow NN tomorrow . . . Meanwhile RB meanwhile , , , September NNP september housing NN housing starts NNS start , , , due JJ due Wednesday NNP wednesday , , , are VBP be thought VBN think to TO to have VB have inched VBN inch upward RB upward . . . `` `` `` There EX there 's VBZ be a DT a possibility NN possibility of IN of a DT a surprise NN surprise '' '' '' in IN in the DT the trade NN trade report NN report , , , said VBD say Michael NNP michael Englund NNP englund , , , director NN director of IN of research NN research at IN at MMS NNS mm . . . A DT a widening NN widening of IN of the DT the deficit NN deficit , , , if IN if it PRP it were VBD be combined VBN combine with IN with a DT a stubbornly RB stubbornly strong JJ strong dollar NN dollar , , , would MD would exacerbate VB exacerbate trade NN trade problems NNS problem -- : -- but CC but the DT the dollar NN dollar weakened VBD weaken Friday NNP friday as IN as stocks NNS stocks plummeted VBD plummet . . . In IN in any DT any event NN event , , , Mr. NNP mr. Englund NNP englund and CC and many DT many others NNS others say VBP say that IN that the DT the easy JJ easy gains NNS gain in IN in narrowing VBG narrow the DT the trade NN trade gap NN gap have VBP have already RB already been VBN be made VBN make . . . `` `` `` Trade NN trade is VBZ be definitely RB definitely going VBG go to TO to be VB be more RBR more politically RB politically sensitive JJ sensitive over IN over the DT the next JJ next six CD six or CC or seven CD seven months NNS month as IN as improvement NN improvement begins VBZ begin to TO to slow VB slow , , , '' '' '' he PRP he said VBD say . . . Exports NNS export are VBP be thought VBN think to TO to have VB have risen VBN rise strongly RB strongly in IN in August NNP august , , , but CC but probably RB probably not RB not enough RB enough to TO to offset VB offset the DT the jump NN jump in IN in imports NNS import , , , economists NNS economist said VBD say . . . Views NNS view on IN on manufacturing VBG manufacture strength NN strength are VBP be split VBN split between IN between economists NNS economist who WP who read VBP read September NNP september 's POS 's low JJ low level NN level of IN of factory NN factory job NN job growth NN growth as IN as a DT a sign NN sign of IN of a DT a slowdown NN slowdown and CC and those DT those who WP who use VBP use the DT the somewhat RB somewhat more DT more comforting VBG comfort total JJ total employment NN employment figures NNS figure in IN in their PRP$ their calculations NNS calculation . . . The DT the wide JJ wide range NN range of IN of estimates NNS estimate for IN for the DT the industrial JJ industrial output NN output number NN number underscores VBZ underscore the DT the differences NNS difference : : : The DT the forecasts NNS forecast run VBD run from IN from a DT a drop NN drop of IN of 0.5 CD 0.5 % NN % to TO to an DT an increase NN increase of IN of 0.4 CD 0.4 % NN % , , , according VBG accord to TO to MMS NNS mm . . . A DT a rebound NN rebound in IN in energy NN energy prices NNS price , , , which WDT which helped VBD help push VB push up RP up the DT the producer NN producer price NN price index NN index , , , is VBZ be expected VBN expect to TO to do VB do the DT the same JJ same in IN in the DT the consumer NN consumer price NN price report NN report . . . The DT the consensus NN consensus view NN view expects VBZ expect a DT a 0.4 CD 0.4 % NN % increase NN increase in IN in the DT the September NNP september CPI NNP cpi after IN after a DT a flat JJ flat reading NN reading in IN in August NNP august . . . Robert NNP robert H. NNP h. Chandross NNP chandross , , , an DT an economist NN economist for IN for Lloyd NNP lloyd 's POS 's Bank NNP bank in IN in New NNP new York NNP york , , , is VBZ be among IN among those DT those expecting VBG expect a DT a more RBR more moderate JJ moderate gain NN gain in IN in the DT the CPI NNP cpi than IN than in IN in prices NNS price at IN at the DT the producer NN producer level NN level . . . `` `` `` Auto NN auto prices NNS price had VBD have a DT a big JJ big effect NN effect in IN in the DT the PPI NNP ppi , , , and CC and at IN at the DT the CPI NNP cpi level NN level they PRP they wo MD wo n't RB not , , , '' '' '' he PRP he said VBD say . . . ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_lemmatizer_t0100644 0000000 0000000 00000000167 14135770370 033010 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/trial.old-insufficient.tsv apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/lemmatizer/trial.old-insuffi0100664 0001750 0001750 00000000012 14135770370 034306 0ustar00jeffjeff0000000 0000000 The DT the./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_eval_ner-en_0100644 0000000 0000000 00000000156 14135770370 032644 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/eval/ner-en_pos-features.xml apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/eval/ner-en_pos-features.xml0100664 0001750 0001750 00000003721 14135770370 034225 0ustar00jeffjeff0000000 0000000 2 2 2 2 true false en-pos-perceptron.bin apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/doccat/DoccatSample.txt0100664 0001750 0001750 00000774416 14135770370 033250 0ustar00jeffjeff0000000 0000000 pob Desde 1960 ela escreve e faz palestras pelo mundo inteiro sobre anjos , profecias , reencarnação , almas gêmeas , alquimia , cabala , psicologia espiritual e religiões . Adamo afirma a Francesca que vai levá - la para o Brasil se sua família resolver não voltar . São novidades boas , numa visão imediatista . A ADSB fica na Galeria Mário Heins , na Rua Dona Margarida , 405 , sala 27 , centro . Para o Secretário de Meio Ambiente , Alcebíades Terra , o plantio desta espécie na véspera do dia da árvore foi um marco , já que a mesma está em extinção na região . O terceiro crime aconteceu na Rua Professor Loureiro às 22 h 25 de sábado , próximo ao Beco do Guarany . Cobria de um simples atropelamento a uma greve ou crise . Seus olhos vendados representam sua imparcialidade em relação às aparências e aos bens materiais . Se sim , o que te impulsionou a ser candidata e qual será a prioridade em seu plano de governo ? O treinador deve fazer somente uma mudança em relação ao time que perdeu para o Botafogo , por 4 a 0 , no sábado passado . A maior surpresa pode ficar no ataque , já que Dodô não vem agradando e corre o risco de perder a posição para Artur . Esta instituição tem know - how e competência comprovados . Correu três anos seguidos a Maratona de Nova York . No último domingo , a cidade decretou estado de calamidade pública . É indispensável ainda que o candidato compareça para doar bem alimentado e , em se tratando das gestantes e lactantes , não é permitida a doação . " Essas pessoas estão nos grupo de risco por apresentarem o sistema imunológico mais fragilizado " , diz Eline . A minha natalidade veio com o caimento das folhas , no outono de 1969 . Sei como foi difícil encontrar patrocinadores que apostassem num grupo que estava começando . O melhor a fazer é evitar a introdução e isolar os animais doentes , sob boas condições de higiene e alimentação ; emprego de vacinação , utilizando apenas as de eficiência comprovada . 2010 - Espírita Família espiritual Afonso Moreira Júnior 30 . 10 . spa Pero está bien , los dirigentes justicialistas jamás ubicaron en el gobierno a un pariente . “ Gracias y adiós ” son las palabras con las que el diario sensacionalista británico News of the World se despidió de sus lectores tras 168 años de historia y 8674 ediciones . Los hombres de 32 , 34 , 19 ańos y el menor de 17 , todos de Río Tercero , fueron detenidos y alojados en la Comisaría local . Aguero agregó además que existe malestar de los médicos con el director del hospital Alberto García por sus actitudes hacia algunos profesionales , entre ellos el médico Luís Kaen , quien se desempeña como jefe de dos servicios en este nosocomio . Mientras Carlos Rovira se sacaba fotos con la Presidenta , su tropa rechazaba en la Legislatura cualquier intento de la oposición de avanzar con sus proyectos . El tribunal absolvió además a Enrique de la Torre ( exdirector de seguridad Internacional de la Cancillería argentina ) , Mauricio Musí ( exdirector de coordinación empresaria de la Cancillería ) , y María Teresa Cueto , exverificadora de la Aduana argentina . La conversación entre Julie y Marianne prosigue mientras tanto : @ * ¿ Sabes si lo han atrapado ya ? No viajar en ningún coche o automóvil con ningún hombre excepto su hermano o su padre . Los niveles de histamina permitidos en los productos pesqueros varían . El jefe comunal recordó numerosas figuras que pasaron por el Macció . " Esa información me causó risa " , comentó el mandatario y señaló que no eran más de 20 jóvenes los que protestaban . Durante el foro , Richardson aseguró que el asunto del contratista estadounidense se ha convertido en " el más peliagudo " que impide el acercamiento de ambos países en estos momentos y pidió su liberación " por motivos humanitarios " para seguir avanzando . Puerta vidrio repartido vaivén mas un paño . El directivo indicó que los usuarios de Facebook sabrán qué ven sus amigos en un momento dado . Las acciones del Grupo C comenzarán el jueves próximo en Arequipa , con el choque entre las selecciones de Paraguay y Costa Rica , seguido del partido estelar entre Brasil y Chile . Las mujeres tendrán nueva número 1 en el tenis La danesa avanzó a los cuartos de final del torneo de Beijing y desde el lunes estará en lo más alto del ranking , desplazando a la estadounidense Serena Williams . Al planeta esa guerra le costó millones de muertos . Sin embargo , la fórmula ahora empleada ya se ha usado antes . El envío de un oficial de enlace israelí al Comando de la OTAN en Nápoles es una indicación más de la vitalidad de nuestra cooperación , como lo fue la demostración de un avión AWACS de la OTAN en Israel . Del Sel afirmó que lo “ acompaña ” el “ peronismo no kirchnerista ” y sostuvo que “ han sido una definición muy clara ” en su apoyo los recientes dichos de Reutemann , respecto de que no tiene “ nada que ver ” con el oficialismo nacional . fra Le volume d ' affaires de l ' assureur bâlois a pour sa part augmenté de 24 , 3 % par rapport à 2008 pour s ' inscrire à 9 , 77 milliards . C ´ est à ce titre que l ´ épouse du président de la HAT va distribuer des jouets à tous les enfants de la grande Île . Le Prix Michel Houyvet clôturera les " belles " épreuves de l ' après - midi . Dans ces conditions , " pourquoi ne pas travailler jusqu ' à 70 ans , avec le droit de s ' arrêter plusieurs fois durant les 45 ans de carrière s ' interroge - t - il . Le jeune espoir belge Daan Van Gijseghem ( 21 ans , 16 matches , un but ) , libre , devrait être la première recrue des Dogues . A la soixantaine passée , Michel Pradier se donne encore un an ou deux à vivre aux États - Unis avant de rentrer en France . D ´ ici à 2050 , l ´ ONU estime que la consommation mondiale de viande et de produits laitiers devrait doubler . D ' autres ont été vus siphonnant de l ' essence d ' un camion - citerne abandonné . En cause : la gestion des données privées des utilisateurs , qui a déjà conduit Google à faire évoluer son service . Lire aussi : Areva et EDF peuvent - ils s ' accorder sur le nucléaire français ? 19 e CR 9 lui aussi tente de provoquer le penalty mais le Madrilène est contré à la régulière par Piqué . Le quatuor précité est encore en vacances et seul Antar Yahia s ’ entraîne , mais sans garantie d ’ être transféré dans un club à la limite de ses exigences . Le site internet du Wall Street Journal a annoncé mardi 3 août que le groupe français était entré en négociations serrées avec l ' Américain , qu ' il proposerait de racheter pour plus de 18 milliards de dollars . En cas de nul , il faudrait alors attendre le résultat de la confrontation entre le Paraguay et la Nouvelle - Zélande . Peau de jaguar , plumes de flamants roses ou encore carapace de tatou sont ainsi " recyclées " . Pour certains , ce fut là un coup de chance inespéré pour les Montréalais . Pour paramétrer ce moteur de décision , l & rsquo ; utilisateur métier joue sur deux tableaux . Au bout de deux années , jai décroché mon BTS Communication des Entreprises . Pour la patronne de ce salon de beauté londonien cest naturel et bio en fait . Des exposés sur les activités des commissions permanentes de l ' APN seront présentés lors de cette réunion » , indique un communiqué de presse rendu public , jeudi , par la chambre basse du Parlement . ita La Champions è importante perchè dà subito l ' opportunità per dimostrare sul campo che non siamo la squadra che abbiamo visto in queste due giornate " . Al tempo stesso è stata approvata una manovra correttiva da 25 miliardi per il 2011 - 2012 per riportare il deficit sotto il 3 % del Pil ed evitare che il debito sovrano italiano entri nell ' occhio del ciclone della speculazione dopo quello greco . Nube , Ue vuole unificare gli spazi aerei nazionali - Yahoo ! Le sinergie della joint - venture " consentiranno ai due operatori di rafforzare la presenza sul mercato e offrire ai clienti una gamma di prodotti e servizi sempre più ampia " . Cerco solo di far capire ai miei ragazzi quello che voglio vedere in campo " . Disagi limitati per aerei e treni . Del resto è cosa nota che se il corpo umano necessita di un apporto nutritivo di due milioni di calorie quotidiane , quello di un esperto di opere multimediali iperattive abbisogna invece di dodici milioni . Jacopo , che nel frattempo si è stabilito a Villa Castelli , intuisce che la presenza di Kempes ha qualcosa di losco . Su proposta del neo leader è stata votata anche la nuova segreteria che assegna due membri alla mozione Rinaldini - Moccia ( vittoriosa a Brescia , ma in minoranza a livello nazionale ) e altrettanti alla mozione Epifani . Allora , concludendo , oggi si dovrebbe parlare piuttosto di una battaglia per la libertà di disinformazione . Lo stop - and - go cittadino è una delle principali cause del consumo di carburante , tanto che è praticamente obbligatorio spegnere il motore in caso di sosta prolungata : in un tragitto cittadino si tagliano i consumi anche del 30 % . Con lei una ventina di altri passeggeri e pochissime donne . Lo annuncia la soprintendente al Polo Museale Rossella Vodret , che sottolinea come il successo sia andato anche oltre le piu ' rosee aspettative . " Abbiamo voluto abbinare alla magnificenza del Palazzo Reale la delicatezza della grande tradizione poetica e musicale italiana , in un omaggio alla donna paragonata alla meraviglie dei giardini reali " , ha spiegato Longhini . Francis era il coach di Johnson ai tempi delle Olimpiadi di Seul 1988 , dove l ’ atleta fu privato della medaglia d ’ oro dei 100 e del record del mondo dopo essere risultato positivo agli steroidi . Al buon Nicola Lapi , invece , il compito di selezionare la squadra dei politici . La Toscana , il Piemonte e la Liguria andranno in piazza il prossimo 2 luglio , tranne che a La Spezia dove lo sciopero Cgil è in corso . Nuova riunione di redazione aperta e visita , dalle 10 . 30 , dei ragazzi delle scuole medie e delle superiori . Un vero minestrone . Sanofi : opa su Genzyme costerebbe 21 mld - Yahoo ! ita Su questo punta Berlino che , populisticamente , dice : interverremo solo all ' ultimo minuto , per evitare che la mano tesa troppo presto possa essere la scusa che Atene sfrutta per allentare la presa sui problemi di bilancio . Continua Carpineta : " La verita ' , anche oggi , apparira ' meno roboante ma e ' altra da quanto annunciato , almeno nella parte che doverosamente completa la notizia . Si preoccupò molto , non per gli effetti della nube che rishiava di atterrare gli aerei di quasi tutta Europa , ma per il nuovo fieno nella cascina della fama di jettatore che lo accompagnava fin dal suo primo mandato presidenziale . A una settimana dall & rsquo ; impresa in terra canadese , Razzoli ammette che " sto realizzando sempre di più quello che ho combinato ma ho ancora un & rsquo ; ultima gara e oggi non posso festeggiare tanto . Il primo e ' che la Fiat e ' un valore per l ' Italia . « Naomi me li mostrò e si lamentò perché non erano abbastanza lucenti » , ha detto White . La conferma à ¨ arrivata alla presentazione dell ' accordo Piaggio - Enel per mettere a punto una comune strategia sulla mobilità elettrica . " Sono naturalmente contento di correre a Laguna , una pista che per me è assolutamente speciale , dura ma bellissima , dove ho vinto il mio primo GP " , ha detto il pilota americano , che ha vinto sul circuito californiano nel 2005 e nel 2006 . Interrogativi che lo stesso Real si sta ponendo da giorni , soprattutto dopo la sconfitta per 1 - 0 sul campo del Lione nell ' andata degli ottavi di finale di Champions League . Ne ha dato notizia Al Jazeera . E il fatto di averlo sfiorato a tal punto da vederlo svanire sulla linea di arrivo non consola , anzi , aggiunge sale sulla ferita . Sono emozioni profonde , che rimarranno per sempre » . I miei assistiti , però , non chiedono mai di andarsene . Ma l ’ incantesimo si è rotto con la Sampdoria . ' Il peggio della tempesta ' e ' passato , davanti ' abbiamo giorni piu ' splendenti ' , ha aggiunto . Informazioni più precise sulle modalità di effettuazione degli abbruciamenti sono contenute nel Regolamento forestale e proprio in questi giorni sono entrate in vigore alcune modifiche che riguardano questi ambiti . I due candidati alla presidenza dell ' Abi sono Giuseppe Mussari , presidente della banca Mps , e , appunto , Corrado Faissola , attuale presidente dei banchieri , che potrebbe pero ' svolgere ancora un mandato di due anni . Una sorta di " vendetta " di Lotito . Se c ' è una vittima certa , nell ' esperienza della Deepwater , è proprio quella norma che limita la responsabilità civile delle compagnie petrolifere alla ridicola cifra di 75 milioni di euro . Secondo le prime informazioni diffuse dal Segretariato per la difesa nazionale ( Sedena ) , la caduta del Bell 412 è avvenuta nella notte tra venerdì e sabato nei pressi della località di San Miguel del Alto , nello stato di Durango . fra Si initialement l ' équipe sera bâtie pour le plaisir de jouer au water - polo , Christophe Jomphe ne cache pas ses ambitions . Il avait d ' ailleurs effacé le tatouage le rattachant à ce gang pour le remplacer par une croix . À l ' issue des qualifications , les deux premiers de chaque groupe seront qualifiés pour les quarts de finale . D ' aprà ¨ s la police , la petite fille portait des traces de coups de couteau au sternum et aux yeux . " La fillette serait morte six heures auparavant " , a prà © cisà © le responsable de l ' enquête au quotidien Le Parisien . Risque Tout , auteur de brillantes victoires sur des parcours plus longs , pourrait vaincre sur le tracé des 2 175 mètres . La Commission européenne a annoncé mardi son intention de déclencher une procédure d ' infraction en justice contre la France pour violation du droit européen dans l ' affaire des renvois de roms bulgares et roumains chez eux . Finalement , c⠀ ™ est le mollet droit de William Gallas qui pourrait poser problà ¨ me . Facebook , lieu public ou lieu privé ? Il est tombé 139 millimètres de pluie en août , alors que la moyenne est de 83 millimètres » , a indiqué lundi René Héroux , météorologue chez Environnement Canada . Vous pourrez y goûter de délicieux plats confectionnés avec des produits issus de l ´ agriculture biologique et provenant , en majorité , des jardins de la hacienda . Ces mots anglais utilisés tous les jours n & rsquo ; avaient jusqu & rsquo ; à présent pas d & rsquo ; équivalents en français . Il lance un avertissement contre toute attaque future et insiste sur la nécessité de sen tenir aux accords darmistice . RFF estime d ' ailleurs que les péages pourraient baisser si l ' entretien des voies était moins onéreux . Et évidemment , si les réformes au Maroc saccélèrent , lUnion doit être au rendez - vous , et notre appui européen à la hauteur du défi . Jeremy Morlock , originaire de Wasilla ( Alaska , nord - ouest ) est le premier d ' un groupe de cinq soldats à être présenté devant la justice . Devant la faible quantité de produit interdit retrouvé dans les urines de Contador , et puisque l ' UCI a choisi de ne pas trancher définitivement son cas pour le moment , personne ne se mouille . La région Laval - Laurentides mène pour le nombre de préavis avec 233 . Corey Pavin et Lanny Wadkins viennent d ’ ajouter leur nom à la liste déjà impressionnante des golfeurs ayant confirmé leur participation au premier Championnat de Montréal , du 2 au 4 juillet prochain , au club Fontainebleau de Blainville . Novlangue 1984 Haliburton et donc Dick Cheyney ont du acheter " short " . TAM était depuis 2003 le leader aérien du Brésil , la plus grosse économie d ' Amérique latine , avec une part de marché de 43 % et 44 destinations intérieures . pob O Cardeal confessa que nos últimos anos , muitas vezes foi obrigado a encerrar mais cedo visitas às paroquias localizadas em regiões de risco na cidade . Também estamos organizando com o dr . Resta agora ao atual vice - campeão tentar reverter a desvantagem na segunda partida do " mata - mata " , no próximo final de semana . Local : Teatro Municipal Sessão de cinema e vídeo Beijos Roubados ( BAISERS VOLÉS ) ( França , 1968 , 90 min ) Antoine Doinel procura um emprego e um amor em Paris . Aparentemente , você não está pagando nenhum centavo de juros , mas de fato existe uma taxa de juros , nesta simples operação , de 1 , 96 % ao mês , ou 26 , 27 % ao ano . Se vocês encontrarem o Pelé me tragam . A assistência financeira a que se refere este Manual não poderá ser considerada no cômputo dos vinte e cinco por cento de impostos e transferências devidos à manutenção e ao desenvolvimento do ensino , por força do disposto no art . As prefeituras dos dois municípios já solicitaram recursos aos governos estadual e federal , mas as obras ainda não têm data para começar . De acordo com o presidente do Sindicato dos Bancários de Piracicaba e Região , José Antonio Fernandes Paiva , a rodada está marcada para as 15 horas , em São Paulo , em local a ser definido . Os jogadores titulares realizaram uma corrida nos arredores do gramado , mas subiram para seus quartos e não participaram dos trabalhos . ” Do líder dos camelôs da 25 de Março , Francisco Pereira da Silva , sobre a insistência da Prefeitura em proibir o comércio da rua no local Jornal da Tarde , 05 . 08 . A invencibilidade na Libertadores estava assegurada . Vosso blog de comida Gastronomia , dicas e notícias , por Jussara Voss ' Semana Mesa São Paulo ' 11 novembro , 2010 por Jussara Voss Um argentino de origem italiana que mora na França . Ele é tão preguiçoso que mandou nós alunos roçar a estrada para ele desviar da lama e nos roçamos e agora ele disse que nao passa mais nenhuma vaz este ano . Thiago começou no judô muito cedo , aos 5 anos em Tupã , interior de São Paulo , onde nasceu , mais tarde foi aprimorar a técnica no Projeto Futuro - um programa de excelência no esporte mantido pelo governo paulista . 000 , 00 ; 14 - Veiculo HONDA / FIT , Ano 2006 , valor atual , R $ 29 . E o que dizer das goleiras que ainda se ajoelham como as colegiais do handebol ? .. Não quero me incomodar com as dores de cabeça da nossa dupla , que briga hoje para ver quem dá mais vexames . Participei de uma Missão Técnica efetivada pelo Sebrae Barra do Garças . Se nós cobrarmos o cumprimento do código federal , inviabilizamos essas propriedades . pob O ditador Micheletti costuma falar que Chavez está por trás de tudo que há de ruim em Honduras . Na minha opinião essa lei atual nem poderia ser exigida .. Protegei , ó Senhor , os motoristas que conduzem os modernos meios de transportes . O Riograndense de Imigrante ficou com 11 pontos na classificatória e tem 440 negativos na disciplina . Falava e abraçava seu pescoço , alisando as crinas e acariciando as orelhas do cavalo , com “ tapinhas de amor ” no costado e na barriga do seu melhor amigo . “ A fumaça não chegou na aldeia , mas escureceu o tempo ” , conta . Foi muito positiva . Essa é uma parceria que tem que existir sempre . “ Esse é outro exemplo de desinformação , é um kit com cinco vídeos que inclui manual para os professores , um material didático que foi discutido três anos com uma equipe multi - disciplinar e com especialistas em sexualidade ” , explica Toni Reis . Não podemos retroceder ” , enfatiza . Gaspar diz que Ivete é egoísta e que acabou com a sua vida . “ Maddog ” ( cachorro louco , em inglês ) , como prefere ser chamado , admite que é uma tarefa difícil , já que empresas como a Microsoft dominam o mercado . " Essa integração entre jovens e ' jovens com mais de 50 anos ' será benéfica para todos . Nesta época , para muitos , parece que o mundo vai acabar . Terá de enfrentar um período significativo em tratamento de saúde mental até que a condição sua condição de saúde melhore , quando terá uma nova avaliação de seu caso pela Justiça . É difícil ver e aceitar tantas situações indigestas como a disputa por cargos , arranjos de todos os lados , vaidades e egos que são um deboche aos eleitores que ainda acreditam nos partidos . Esse dinheiro sagrado serve também para financiar as campanhas de nossos deputados no Congresso . E eu aceitei " , garantiu . Talvez os deuses do futebol preferissem esperar pelos 45 minutos finais . Santa Catarina , sozinha , colabora com 10 % da produção de arroz do Brasil . fra M . Ellis s ' était également rendu à deux reprises au restaurant où travaillait Ji - Hye Kim , des visites qui n ' étaient pas innocentes , avait statué la juge Thea Herman . Elle a vécu pendant cinq ans à San Francisco avant de s ' établir dans une jolie maison à l ' anglaise du secteur appelé le " village Monkland " , précisément parce qu ' il offrait la possibilité de vivre " sans dépendre de la voiture " . Il nous prend en otage » , dit - il . L ' offensive judiciaire du gouvernement iranien à l ' encontre de la communauté religieuse des bahaïs pourrait se préciser cette semaine . Les Suds programment des musiques venues dailleurs et très peu présentes dans les autres festivals . Il est le frère de l ’ actrice Taylor Thomson et du pilote Peter Thomson . Avait - il besoin d ´ agir ainsi avec nous ? En Saskatchewan , il a amassé 3 , 9 verges par course . Un successeur de Mgr Genoud sera ensuite désigné par le Pape . La commission des Affaires sociales de l ' Assemblée nationale examine à huis clos , depuis mardi 20 juillet , le projet de réforme des retraites . Les demandes de compensations de la part des soldats se multiplient . Concernant l ' Equilibre vie privée - vie professionnelle , mis en & oelig ; uvre immédiatement , l ' accord offre aux managers " des marges d ' autonomie permettant de prendre en compte les situations personnelles des salariés pour aménager leurs horaires " . Par ailleurs , le groupe Panasonic n ' a pas l ' intention de relâcher ses efforts dans ses autres domaines d ' activité , plus connus du grand - public , comme l ' électronique audiovisuelle et l ' électroménager . Revenant sur le terrain du local , Élisa Martin , la tête de liste régionale du mouvement , a affirmé de son côté ne pas vouloir du Modem dans l ' alliance de second tour , espérant une gourverance PS - Verts - Front de Gauche . Deux ans après son accession en finale , Stanislas Wawrinka ( ATP excelle à nouveau à Rome . La participation s ' annonce plus forte qu ' au premier tour . Qui pour un couteau " , a - t - il expliqué , lundi , au lendemain dun conclave des instances des Forces nouvelles , tenu dans leur fief à Bouaké , au centre du pays . Seine - Saint - Denis : trois policiers blessés lors d ' un contrôle d ' identité - Yahoo ! Ce qui fait qu ’ il faut les prendre en charge en matière d ’ eau , de nourriture , les transporter dans les villages . Ils ont défilé sous la pluie depuis la Manufacture des tabacs jusqu ' à la place Bellecour , puis se sont dispersés peu après 12 h 30 . spa Hasta el 20 de noviembre de 1975 , los pocos científicos que habían brillado en nuestro país , lo habían hecho en el extranjero . Encalada admitió que debe esta cantidad de dinero a Kerly y ofreció pagar la deuda . Dudo que alguna editorial se atreviera a publicarlo . Estamos apenas en las primeras horas de la erupción ; no podemos decir aún si tendrá un efecto en el tráfico aéreo como el que tuvo el Eyjafjoell , " dijo Magnusson . Son 106 viviendas y 459 subsidios de vivienda , de los cuales 59 serán para población desplazada . Los de Kudelka igualaron 1 - 1 ante Racing , en el estadio 15 de abril . También en la delegación istmeña están Ronald Herrera como quinesiólogo ; Manuel Polanco y Samuel Rivera como médicos ; y Luis Vergara como asistente administrativo . Este aporte fue un compromiso asumido por el Gobierno de la Provincia para afrontar costos de la reestructuración del Estadio Leonardo Gutiérrez . Es un ' matao ' que se aburre como un hongo . Son capacitaciones importantísimas que estamos desarrollando ” , expuso Ramírez . El estudio del Centro Aralma tiene más datos del fenómeno : El 90 de los chicos usa la computadora en su casa el 37 , además , lo hace en un ciber . El clima de violencia que vive México ha dejado más de 30 mil muertos en cuatro años , y los custodios de Cristo han decidido tomar la iniciativa . Lo incluyó en su discurso ante los legisladores el 1 de marzo . Ese establecimiento de chacra , que así figura en la escritura , se componía de 26 cuadras cuadradas . La embajada y su sección consular anunciaron que darán seguimiento al caso , a fin de vigilar que el detenido cuente con el debido proceso frente a los delitos que se le imputan . Asimismo recalcó que se trata de una decisión del BNS " bajo su entera y única responsabilidad " . Pues la Iglesia obra en armonía tanto con el Espíritu que la anima cuanto con la Cabeza que mueve el Cuerpo ( cfr . Y por supuesto esto ayuda al Uruguay a fortalecer y multiplicar sus posibilidades de inserción internacional . El burgomaestre sostuvo que se ha realizado préstamos a una entidad financiera , sin embargo sostuvo que su compromiso es subsanar todo tipo de créditos y no dejar adeudada a la Municipalidad Provincial de Cutervo . Ella se encuentra en la ciudad de Concepción , en Chile , donde hay mucha gente enferma y el cadáver milagrosamente conservado de un sacerdote al que acuden en busca de un milagro . ita Otorino Larocca aveva 32 anni , e adesso fa il presidente , Giuseppe Natale , che di anni ne aveva 20 , adesso fa l ' amministratore delegato . Aveva perso troppo sangue e morì in ospedale » . Non sarà facile , perché ancora una volta si è vista una Red Bull molto competitiva ed una McLaren che sembra mantenere i favori del pronostico " . La dimostrazione che diceva sul serio , Venter l ' ha data ieri . Lo faccio perché mi sembra moralmente giusto . " Ce lo dovevano dire : come si fa a stare a Madrid la notte senza un posto dove dormire ? " , si è domandato Sergio Orlandi , arrivato da Lecce insieme a sua figlia . Un dettaglio da abbinare con il trucco o con l ' abbigliamento a portata di tutti . Colori che dominano anche sulla french manicure . Domande che Berlusconi ha liquidato , come di consueto , con un & rsquo ; alzata di spalle e una battuta : " Dell & rsquo ; umidità & ndash ; ha scherzato il premier & ndash ; parliamo un & rsquo ; altra volta " . Per questi ultimi uno dei fattori di stress da aggiungere alla già dura giornata di lavoro è il traffico , un appuntamento - più o meno fisso - che si ripresenta al mattino e alla sera . I membri virtuali degli equipaggi così definiti potranno successivamente accordarsi sulle modalità operative . Il crollo della fiducia dei consumatori Usa manda in rosso Piazza Affari - 2 - - Yahoo ! L ' agente Fedele : " Siamo arrivati vicini allo scontro con De Laurentiis per qualche dichiarazione avventata del presidente , poi ci siamo chiariti " . Poi c ’ è la Donna impudica , l ’ altorilievo da Porta Tosa dell ’ inizio del XIII secolo : è una prostituta che si rade il pube . I lavori di ripristino sono resi più difficili sia dalla gravità dei danni che dai problemi di accessibilità alle aree interessate . Alla Fincantieri ben mille dei 9 mila dipendenti sono in cassa integrazione straordinaria a causa della crisi della cantieristica . " Non è un libro romanzato . Bellaria Igea Marina , come detto , fu teatro di molti degli avvistamenti " romagnoli " , che trovano spazio nel reportage e dei quali uno venne addirittura immortalato dalla macchina fotografica di Elia Faccin ( immagine in allegato ) . Così parla Barack Obama passeggiando sulla spiaggia di Port Fourchon , nel sud della Lousiana , mentre raccoglie palline di catrame . Rivede lo scudetto e lavora al futuro nerazzurro . Magari sarebbe stato contento " . spa Cuando llegaron los manifestantes , la escuela estaba cerrada , por lo que protagonizaron un forcejeo para poder ingresar . Experto Comisión Mundial de Áreas Protegidas – WCPA – de la UICN . Ya habían pasado tres años de la condena y seguía detenida a disposición del Poder Ejecutivo . “ Buscamos la adhesión porque todos tenemos una responsabilidad y todos vamos a tener un rol por lo que hay que hacer lo que hay que hacer , respetando la constitución y los espacios públicos democratizando las protestas ” , afirmó el dirigente . La aplicación del Plan con los alumnos se realizará durante el 2007 . " Si queremos representar bien a nuestro país , tenemos que llevar lo mejor que tengamos . El viernes , el Ejecutivo respondería la segunda iniciativa presentada por los técnicos de los gremios . Ellos buscaban vivir en un país democrático . En su discurso Chávez aseveró que los críticos de la cooperación bilateral deberían antes preguntarse el valor de Barrio Adentro para el pueblo venezolano , el cual carece de precedentes . De dicho al hecho hay un largo trecho . Desde el punto de vista social , quienes tenemos acceso a Internet hemos visto en poco tiempo la caída de muchas barreras fronterizas . Y desde que lanzó su guerra contra el terror , los Estados Unidos han adoptado la práctica de Israel , que se remonta a décadas atrás , de llevar a cabo los asesinatos lejos del teatro de guerra . En cualquier caso , debería haber una pérdida pareja y generalizada de poder . Creo que es hora de cambiar y todos tenemos una parte de responsabilidad en la necesidad de ese cambio . En países ricos , como España , la cosa puede ser peor . " Un presupuesto es parte de la estructura del éxito porque les ayudará a establecer metas financieras " , indicó el experto . 16 de enero de 2009 09 : 41 , por Andrés Matías , ¿ sos tan ingenuo como para pensar que Carámbula no está en la lucha por el poder ? Antes , en 1972 las Fuerzas Armadas tomaron el control de la lucha contra el MLN . Vamos a ir por todo el mundo y quiero estar en todas partes ” , expresó Justin en su Twitter . Así lo revela el trabajo de la Sociedad de Estudios Laborales ( SEL ) que dirige el sociólogo Ernesto Kritz , en el que se detalla que el salario del sector privado registrado le gana en 2 , 5 por ciento a la inflación de este año . spa Indicó que es importante que empresas de renombre internacional del ramo del entretenimiento vean en Mérida un nicho de mercado , pues además de generar fuentes de empleos , también brindan a los meridanos más sitios de esparcimientos . Rolando García Quiñones , representante auxiliar del Fondo de Población de las Naciones Unidas en Cuba , señaló que la Isla llegó a este nuevo Día Mundial de la Población con resultados relevantes . Pero los dirigentes estudiantiles , especialmente los ‘ pingüinos ’ , tienen una expectativa de vida muy baja como dirigentes . Reciba bien lo que aparezca y encontrará más fácil hacer ajustes . Desde la tarde del viernes , cuando las autoridades decidieron el corte de suministro de GNC para grandes comercios y estaciones de servicio , las prestaciones de muchas empresas marplatense se vieron perjudicadas . Sólo 150 tienen la marca Sofitel y únicamente 10 tienen la categoría de “ hotel leyenda ” . Los polos de algodón fueron los principales productos demandados por este mercado . Esta obra fue todo un éxito , el que no pudo ser posible sin los conocimientos , buen gusto y sensibilidad del realizador . Hacer ejercicio de una mayoría que se obtuvo electoralmente , por ejemplo , no significa necesariamente ejercer un comportamiento antirrepublicano . La policía pide colaboración a la población para dar con su paradero . De lo contrario , el lugar donde se encontraran se habría convertido en centro de peregrinación para los fascistas que hay por todas partes , lamentablemente también en Rusia ” , dijo . Si se establecen los cálculos correspondientes , por día sólo obtienen entre 50 y 60 pesos , sin contabilizar gastos . Siempre el primer lugar es para los que ellos traen o recomiendan . 5 años de rumores , 7 años de duro trabajo ( según Steve Jobs ) , miles de patentes , 2 horas de Keynote para presentarlo , 2 meses de espera , más de 200 . 000 reservas … . Noticias Populares » Venezuela Blogs Líderes de ASA sellaron planes para ampliar integración Sur - Sur Caracas . Amantes de la Harley Davidson nos cuentan que se siente ser “ motoquero ” .. En entrevista , destacó que nadie puede acusar de injerencia , " yo creo que en este caso el secretario del Trabajo ( Javier Lozano ) lo que está haciendo es uso de una atribución que la ley le da y , yo diría que en este caso le obliga " . Tierno o duro se lo va engullir . Ultimamente asistimos a polémicas por las medidas de salvaguarda que la Argentina adoptó en su comercio con Brasil . Primero Gámez le rompió el palo , cuando quedaba un puñado de segundos para el final . ita ROMA , 1 aprile 2010 - Non sarà la sua prima volta da avversario , è vero . Tra l ' altro , il Napoli è la squadra con meno infortuni muscolari : " Tre nel corso della stagione . ZENIT è per me un esempio di diffusione della verità partendo dalla fede e dalla tolleranza , con vera dedizione ed intelligenza . " E ' inspiegabile - dice il presidente della commissione Giustizia del Senato , Filippo Berselli - la disparita ' di trattamento tra il Capo dello Stato da un lato , ed il presidente del Consiglio ed i ministri dall ' altra ' . Primo Major della stagione , il Masters è il solo che si ripete , ogni anno , sul percorso dell & rsquo ; Augusta National Golf Club nello stato della Georgia . Non si puo ’ discutere di riforme e insieme di processo breve . Nessuna convocazione ufficiale , ma , riferiscono fonti sindacali , e ' comunque arrivata in tal senso una comunicazione da Palazzo Chigi . In realtà , già la cosiddetta ' finestra mobile ' prevista nella manovra di quest ' anno allontana la pensione per coloro che hanno maturato i 40 anni di contributi . Per una persona e ' confermato il decesso '' , afferma Frattini . Ior : sequestrati 23 milioni , indagato presidente - Yahoo ! La copertura finanziaria è garantita dalla norma che prevede il versamento , da parte dei cittadini , entro il 2010 di tutti gli arretrati . Non lo si dice e non certo per scaramanzia , pratica forse più vicina al pensiero latino in Ticino , ma tale prudenza è figlia di un pragmatismo che noi italiani , loro vicini , conosciamo e gli riconosciamo . Al " Cantinone " andavano anche le soubrettine delle grandi riviste di allora ( Macario , Dapporto , Chiari ) che al termine dello spettacolo al teatro Augustus , si infilavano nella bettolaccia , molto suggestiva in verità . Dopo averla sdraiata a bordo piscina , le ha praticato con successo un massaggio cardiaco riuscendo a rianimarla . Chi , invece , e ' diretto a Gazzada , puo ' uscire allo svincolo di Buguggiate . Nel complesso - ha concluso Zingaretti - si tratta di una manovra iniqua perché colpisce le fasce più deboli . Suo marito , da due anni direttore dell ' Istituto Commercio Estero a Bangkok , è rimasto in Thailandia . Il Q 1 ( qui la recensione ) faceva parte della categoria degli UMPC , soluzioni portatili che non hanno mai avuto successo ( forse i tempi non erano maturi ) , anche per colpa del prezzo e delle funzionalità limitate . Lo ha reso noto la missione antipirateria europea Navfor . L ' inglese il suo dovere lo fa e mette a referto un cross per Borriello , girato al volo di sinistro e parato da Colombo , e un tiro dal limite fuori misura . fra « On ignore la part de responsabilité du travail a précisé Christian Pigeon ( Sud - PTT ) . Enfin pour les éleveurs , il va bientôt falloir anticiper les mutations des herbus . Malgré sa baisse de régime , les " Jaune et Noir " demeurent lune des meilleures équipes du championnat féminin . ROUND 2 : Bute travaille avec son jab et encaisse sans broncher . La durée actuelle de 35 ans est jugée trop longue . Cet ancien directeur de cabinet de la ministre de l ' Economie , Christine Lagarde , entré chez France Télécom en 2009 , doit devenir directeur général de l ' opérateur le 1 er mars . Soulignons que la pièce Window Seat se retrouve sur lalbum New Amerykah Part Two : Return of the Ankh lancé ce mois - ci . La compagnie ajoute que " les engagements pour les mois à venir sont bien orientés " . Et il donne son avis sur les staffs médicaux français . Nous recevons des visiteurs de tous âges , toutes conditions , tous niveaux culturels et cette diversité est une formidable expérience , rare dans le monde , que nous préservons par la gratuité . Les pluies importantes amènent souvent les serpents à se diriger vers les secteurs résidentiels . Elle reste souvent confinée à quelques spécialistes parlementaires , administratifs ou se voit déléguée à des acteurs publics ou privés . Manchester City n ' est toujours qu ' à deux longueurs de Tottenham , qui avait battu Portsmouth ( 2 - 0 ) samedi . Il est vrai que depuis louverture de léconomie nationale à la concurrence , le monde de luniversité a beaucoup évolué , mais beaucoup plus sur le plan quantitatif . En fait , elle est encore à la merci des coups de boutoir d ’ une mer en furie . A égalité de points le 14 novembre lors de la 14 e journée , l ' OL accuse à la 19 e un retard de 13 points sur Bordeaux pour n ' avoir pris que deux points sur 15 possibles , là ou le leader a quasiment fait carton plein ( 13 sur 15 ) . Et en plus , j ' ai bien servi " , a expliqué Dubois . En Lituanie , armez - vous dun masque et dun tuba pour découvrir lart du pays . Jusqu ' à ce que Komano envoi son penalty sur la barre , laissant à Cardozo loccasion denvoyer le Paraguay pour la première fois de son histoire en quart de finale de la Coupe du monde . Cela a dà » vous redonner le sourireRà © gis Brouard : On à © tait menà © , donc j⠀ ™ ai apprà © cià © la rà © action de mes gars . pob É o que garante o deputado estadual Gilmar Fabris ( DEM ) que afirma que nunca houve oposição ao governo do Estado . Veja que muita indústria automobilística no Brasil tem o fornecedor trabalhando em suas dependências ou imediações . No Rio Grande do Sul , são 330 caixas automáticos com esses dispositivos biométricos , a maioria deles em Porto Alegre . Foi assim com Luiz Carlos Santos , conhecido como Neguinho , morador da Estação da Lapa há sete anos . Eram em geral netos lutando orgulhos em defesa da memória dos seus avós republicanos , socialistas , comunistas e autonomistas . O Jornal dos Amigos também aguarda oportunidade para virar edição impressa . Aí confunde alhos com bugalhos ! Diogo Galvão cobrou e empatou : 1 a 1 , aos 24 minutos . “ Entra no carro , não vou deixar você aqui , vamos ” , entraram no carro e voltaram para a cidade . Em tom de brincadeira , o camisa 12 questionou o excesso de mimos que tem recebido do Palmeiras nos últimos anos . Educação financeira vai ser ensinada nas escolas Criado : Sex , 06 de Agosto de 2010 09 : 45 A partir deste mês , mais de 4 mil alunos do Ensino Médio , de 120 escolas do Estado , receberão noções sobre consumo , poupança e investimento consciente . " Não nasci vereador . Em Bauru , a multa , prevista em lei de 2005 , é de 5 % da fatura de água do mês anterior , e de 10 % em caso de reincidência . O humor do seu texto é algo estrategicamente bem pensado ou sai naturalmente ao contar histórias ? Apesar da reza fazer bem a todos , só um milagre para manter o governista no cargo por mais quatro anos . Na ocasião , quatro tabletes de maconha prensada e uma muca da erva prontos para serem comercializados foram apreendidos . Martha foi também romancista - e casada com um grande escritor : ela foi a terceira mulher de Ernest Hemingway , entre 1940 e 1945 . JV - Onde a senhora estudou ? Xavier falou sobre a satisfação em ver a queda nos índices publicada na imprensa . Usuários da OI ouvidos pelo cotiatododia disseram que em muitos lugares da cidade o sinal desaparece . sauf de ses fidèles ; ceux qui lui ont toujours voué une fidélité à toute épreuve . Ajoutez aux coups de barre du physique des passages à vide du mental tel que celui d ´ hier soir où Hamilton a été interpelé par la police , et vous obtenez une nouvelle hypothèse pouvant expliquer la chute brutale de performance de l ´ Anglais . Je suis sûr que cest le système anti - sismique qui nous a permis de résister . Les 227 passagers embarquaient dans l ' après - midi à bord de deux autres vols pour Zurich . Il n⠀ ™ y a qu⠀ ™ à voir sa dà © termination dans le jeu au prà ¨ s et sa disponibilità © incessante dà ¨ s qu⠀ ™ il s⠀ ™ agit d⠀ ™ avancer balle en main . Il est arrivé en tête au 1 er tour avec 36 , 31 % des voix en Bourgogne . NetworkManager largement amélioré , avec une meilleure prise en charge des réseaux mobiles ( la force du signal est maintenant affichée ) , du Bluetooth et de nouvelles capacités en lignes de commandes . Un peu partout sur la planète , les effets positifs des politiques budgétaires très expansionnistes mises en place dans l ' urgence début 2009 , commencent à s ' éroder . Seuls 9 millions ont à © tà © retrouvà © s . La semaine dernière , les manifestants avaient demandé le déploiement d ' une force de maintien de l ' ONU , qui s ' était contentée d ' appeler les parties au " dialogue " . POLITIQUE - Rencontre au sommet pour Piñera . ita Dove è meglio che giochi ? " La Lega - aferma Maroni - è il partito che più di altri ha combattuto contro Craxi , il Caf e la prima Repubblica . Un evento sismico e ' stato avvertito questo pomeriggio dalla popolazione nella provincia di Ascoli Piceno . Nel 1960 - ha detto fra l ´ altro Moni Ovadia - divenni consapevolmente antifascista e capii che il fascismo agiva sottotraccia , il Paese non era defascistizzato e si tentava di riportarlo indietro . Roma , 22 feb - '' E ' grave che proprio il sottosegretario all ' interno , Alfredo Mantovano , attacchi l ' Italia dei Valori per aver candidato il magistrato Nicastro . La Telltale però individua il punto debole della strategia , ovvero l ' indispensabile frequenza di produzione dei vari capitoli , e vi pone abilmente rimedio : nulla ferma la pubblicazione dei sei episodi che compongono la “ prima stagione ” di Sam & Max . Maledetti infortuni , compagni di viaggio di un calciatore che ha classe pura e probabilmente rimane uno dei pià ¹ talentuosi visti passare dal Picco . Dicevo : non posso respirare , tutto questo non ha senso " . Ed finita con i vigili del fuoco pronti a liberarli a colpi di ascia . Non è più il tempo delle decisioni imposte dall ' alto , nè delle alchimie politiche delle segreterie del Partito . Le società calcistiche , il Coni , la Figc e tutti gli addetti ai lavori facciano in modo di isolare e denunciare questi soggetti che inquinano il mondo delle tifoserie " . Gentile Direttore , anch ' io , come il sig . Adesso devo dimenticare la gara di oggi e continuare a credere in me stesso " , specie in vista della gara dei 1 . 500 in programma il 20 gennaio , quando dovrà difendere l ' oro di Torino . Le tre navi giapponesi , Kashima , Yamagiri e Sawayuki , sono usate per le esercitazioni di navigazione della Marina e rientreranno a Tokyo il prossimo 28 ottobre . LeBron però fa capire di essere in grado di segnare senza grossi problemi anche dalla lunga distanza , firmando tre canestri pesanti negli ultimi 58 ’’ della frazione . Quello che è successo è frutto del mio modo di vivere la vita . Gli analisti finanziari sono scettici , sia per la complessità tecnica dell ' operazione , sia per le difficoltà politiche nella sua realizzazione . Ogni giocatore ambisce ad andare in un club europeo , soprattutto nella massima serie italiana " . Una nuova iniziativa che raccoglie directory , link e indirizzi di tutti i siti della PA , per mettere in relazione cittadini e imprese con il settore pubblico . Abbiamo ripreso il controllo di Kabul . Elezioni / Caserta : Landolfi ( Pdl ) , Alleanza Di Alto Profilo o Mi Candido - Yahoo ! ita E sono molto contento di comunicare con loro " . Josè Mourinho detta le linea in questo inizio di stagione per il suo nuovo club , il Real Madrid . Magari anche l ´ Udc , con il quale sarebbe interessante aprire un laboratorio politico anche a San Benedetto , qualora ci fosse l ´ accordo a livello regionale con il Pd » . Ha arbitatro anche ai Giochi Olimpici di Atlanta ' 96 e Atene 2004 ( e ' lui ad arbitrare la semifinale tra Argentina e Italia ) . La nuova tecnologia Intel TXT invece offre una maggiore sicurezza per i dati in transito su Internet e negli ambienti cloud , oltre a proteggere le applicazioni che vengono trasferite tra server virtualizzati . Gennaio 11 : 04 T & T batte il Fortitudo TeramoNel Palazzetto di Martinsicuro i locali mantengono sui teramani un notevole vantaggio per tutto l ´ incontro , con una flessione come al solito nell ´ ultimo quarto , stavolta però non decisiva ai fini del risultato . Gary Goetzman lo ha subito accreditato come il miglior prodotto televisivo di sempre . Parla di finanziamenti europei per le aziende agricole il presidente della Toscana nel corso del consueto briefing settimanale con i giornalisti . Champions o Europa League ? Omrcen ( 4 punti iniziali ) dà la sveglia ad una Lube che prende le misure a Dennis e va a conquistare agevolmente il set dell 1 - 1 . Ti posso solo dire che sono capace di aprire una traccia cioè quella che apro di solito per sentire un Synth virtuale . Non possono dunque esistere operazioni bancarie direttamente o indirettamente a me riconducibili , ovvero a persone a me collegate '' . Francesco Totti ( 35 ) torna sull ' infuocato dopo derby e sul gesto del pollice verso che ha suscitato non poche polemiche tra i biancocelesti . Qualcuna ha trovato il gesto simpatico . Sempre per tre anni , Google si impegna a comunicare ai proprietari di siti , che vendono spazi pubblicitari utilizzando l & rsquo ; azienda web come intermediario , la percentuale di introiti a loro spettante . Maltempo : Dalla Serata Di Ieri Nevica Al Nord , Autostrade Sempre Percorribili - Yahoo ! In gara anche l ' olimpionico Gelindo Bordin , lo start affidato a Fiona May . Da non sottovalutare inoltre il miglioramento sotto l ' aspetto igienico sanitario . Per fortuna dei bianconeri le tre concorrenti devono ancora confrontarsi e probabilmente si toglieranno punti a vicenda negli scontri diretti : Palermo - Sampdoria si giocherà tra due giornate , mentre Sampdoria - Napoli chiuderà la stagione . " In Italia e ' stata proiettata nelle sale Multiplex del circuito Warner e nelle oltre 70 sale cinematografiche digitali di Microcinema , ma non a Palermo . fra Le président de l ' OM , Jean - Claude Dassier , y confirme à son homologue toulousain , Olivier Sadran , " l ' intérêt de l ' Olympique de Marseille à faire venir le joueur André - Pierre Gignac " . Il a signé jeudi à l ' issue du programme libre une encourageante 12 e place . Club du 4 e chapeau , la Chorale aura sans doute du boulot face à Berlin , Khimki ou Kazan , ses adversaires potentiels du premier tour . L ' Espagnol Pau Gasol , crédité de 22 points et 15 rebonds , et Andrew Bynum ( 17 points et 14 rebonds malgré un genou douloureux ) , ont eux aussi été déterminants dans le succès des joueurs locaux . Manuel Osborne - Paradis ne croit pas qu ’ il a été victime de la pression et des attentes qui pesaient sur lui . Meilleur joueur et buteur du tournoi en Egypte , Adiyiah a quitté depuis son club norvégien pour signer au Milan et deviendra peut - être le buteur qui manque tant à la sélection . L ' électricien public EDF , qui s ' intéresse à Desertec , est prié de ne pas y adhérer tant que le projet français n ' est pas sur les rails . Il est arrt aprs un jet de tracts , des leaders politiques et des tudiants sont torturs et emprisonns . Une déclaration aux journalistes locaux , toujours , marque un grand tournant de son parcours politique . Le ministre de l ' Education nationale a ainsi fait savoir quil trouvait " particulièrement inappropriés certains passages " de ce pré - rapport , déplorant " une maladresse inacceptable " . Saint - Raphaël s ' est qualifié samedi à Nantes pour la finale de la Coupe de la Ligue en dominant Dunkerque aux jets de sept mètres ( 4 - 2 ) alors que les équipes étaient encore à égalité après prolongation ( 31 - 31 ) . Moore , qui a été acquis des Panthers de la Floride tout juste avant la pause des Jeux olympiques , apporte de la profondeur à l ' attaque du CH . Il avait jusqu ' au 18 juillet pour s ' annoncer , faute de quoi le pactole serait retourné dans les caisses de Swisslos . Cette affaire a connu plusieurs rebondissements . Cette province est une pionnière de cette question . Le parquet de l ' Union belge a proposé une suspension de quatre matchs à l ' attaquant camerounais du Club de Bruges Dorge Kouemaha suite à sa carte rouge reçue dans le derby . Russie : la réponse aux incendies n ' a pas été assez rapide , selon un ministre - Yahoo ! Il commence à être appliquée , et les « faux - professionnels » ont eu la possibilité de devenir des vrais en adoptant le statut d ' autoentrepreneur . Transformé mais aussi parfois un peu figé par le maquillage , André Dussolier campe avec brio un homme qui , sous des airs volontiers débonnaires , cache une volonté de fer et une quête de puissance absolue frôlant la démence . Eiffage a annoncé un repli de 35 , 1 % , à 190 millions deuros , de son bénéfice net lan dernier . ita Con lui ho dimestichezza nel parlare , nel fare battute , ma non nel minacciare '' . Non così la legge - tampone , il salvacondotto che nel frattempo esige Berlusconi . Non è a questo livello che vanno cercate le responsabilità ma più a monte " . Al contrario c ' à ¨ chi lo apprezza , tant ' à ¨ che nell ' elenco di gradimento risulta al 42 esimo posto . Una corazza che vorrebbe proteggere ulteriormente il bar , quando dietro il bancone non c ' è nessuno . E martedì si gioca a Mosca per conquistare la qualificazione alla semifinale di Champions . Il Gruppo Regionale ed il Commissario hanno chiesto al Capogruppo di procedere nei tempi più rapidi al completamento degli organismi del Gruppo stesso , consultando , ovviamente , i Consiglieri Regionali del PD . « Mi hanno dato una grande mano . Il dato relativo al mese di aprile si attesta dunque a + 0 , 3 % dal + 1 , 7 % della precedente , evidenziando un rallentamento nella crescita economica dopo il boom del primo trimestre . E & rsquo ; certamente un grandissimo talento ma ne deve fare ancora di strada per arrivare al livello del capitano della Roma che ha vinto scudetto ed è campione del mondo . Mercoledì 3 , alle ore 21 , presso la sede degli Amici della Bicicletta , in via dei Colli 108 , l ' Arch . « Noi siamo gli unici a pagare le tasse , mentre loro evadono » , dicono . So quanti sforzi fanno i fratelli Della Valle per tenere ad alti livelli la loro squadra e so che cosa vuol dire andare avanti in Champions . Personalmente resto convinta del principio per cui se si è in grado di votare si è anche in grado di essere votati " ; . Manca ancora poco , ma l ' accordo con il Palermo per il prestito con diritto di riscatto è la classica conferma che avevano tutti fretta . « Vogliamo scoraggiare ogni strumentalizzazione del nostro movimento » ha spiegato Giusi Pitari , fra i promotori dell ’ iniziativa . Una bischerata satirica sparge la confusione su Wikipedia e ne evidenzia il limite fondamentale . Proprio a riguardo di ciò si è espressa recentemente comScore , discutendo dei criteri da utilizzare per stilare le classifiche mensili . Richieste sottoscritte da Alvaro Perin , consigliere della Provincia di Treviso . Alla faccia della riappacificazione con Casini , il suo portavoce e deputato Roberto Rao avverte : " Le parole di Berlusconi non sono un buon inizio , ma quel che conta sarà il risultato finale " . fra Le maire de Duisbourg Adolf Sauerland , très critiqué et qui a dû être placé sous protection policière , a déjà indiqué qu ' il n ' y assisterait pas . Renault ne vend pas de véhicules aux Etats - Unis ni en Chine actuellement , mais Nissan a une part de marché de 8 % et de 6 % dans ces pays , respectivement , indique le dirigeant . Avis avait déclaré quelques jours plus tard qu ' il ferait une offre plus élevée , mais n ' a pas fait de proposition jusqu ' ici . Johannes Mehserle , 28 ans , un officier de police de l ' Agence des transports de la baie de San Francisco ( BART ) , avait tué par balles le jeune Oscar Grant , alors âgé de 22 ans , le 1 er janvier 2009 dans une station de métro d ' Oakland . Le fait n ' est pas en soi nouveau . A la veille de la reprise du championnat , les cadors sont déjà prêts à en découdre malgré le retour tardif des internationaux . La bonne fréquence : Une session de 10 séances ( une par semaine ) est parfaite pour une détox de fond . Artistiquement les jeux Ubi démontent méchamment la tête je dois le reconnaitre . L ' indice composite du marché Nasdaq cède 0 , 5 % à 2 . 109 , 15 points . En 2008 , nous recrutions beaucoup car notre charge de travail était très importante . Cette mise à jour vous proposera alors une alternative dans le choix des commandes . « Le PLC a déjà été un parti de grandes idées , mais il perd son âme » . Laccord passé à ce propos en mars 2008 , valable jusquen 2017 , prévoit des répercussions directes dès que la réserve bénéficiaire , de 19 milliards de francs actuellement , est dans le rouge à hauteur de 5 milliards de francs . ARCELOR MITTAL : Alpha Value passe à l ' achat , vise 41 , 5 E . Dans l ’ hémicycle régional , des écoliers flamands ont chanté en français et des écoliers francophones en néerlandais , sous les applaudissements des élus . Cette année encore , l ´ Association multiethnique pour l ´ intégration des personnes handicapées ( AMEIPH ) était conviée à l ´ événement « La fierté d ´ apprendre » pour exposer certaines oeuvres dans la grande salle de réception . Lui - même , par exemple , selon ce que m ' en rapporte son éditeur , avoue voyager de plus en plus , mais de moins en moins loin , c ' est - à - dire qu ' il ne prend plus l ' avion . Goldman retarde son annonce afin de donner aux quelque 65 à 70 employés de la branche le temps de trouver de nouveaux emplois , selon les sources de l ' agence de presse . Aux journalistes réunis à Beyrouth , le cheikh Nasrallah a montré des images aériennes . Insuffisamment surveillées , ces dernières ont augmenté de 6 , 2 % en 2008 , un rythme supérieur à l ' objectif de 4 , 8 % qui figurait dans la loi de finances initiale . pob A disputa pela casa , financiada com recursos federais , pode vir a ser um problema grave , explica Índia Mara . Eles ficam enganchados sobre as orelhas . Na noite do dia 28 de março , ao mesmo tempo em que o assassino desferia 22 tiros ( efetuados com no mínimo duas pistolas 380 ) em suas vítimas , Toninho Pavão acompanhava os disparos bala a bala . Ai no Brasil professor e policiais ganham salarios de fome . Jô creio isso e aquilo . Lula não só pavimentou , como duplicou , sinalizou e ampliou , direcionando - a para um futuro promissor ! Neste espaço , os vinhos e os espumantes serão comercializados em taças ou garrafas , juntamente com petiscos e pratos da alta gastronomia , servidos por garçons . Além disto , sofrerá multa de R $ 5 mil , além de ter de pagar a taxa de R $ 2 mil quando quiser voltar às atividades . Cariocas surpreendem Mas foi o Botafogo , aos 31 minutos , em uma das raras jogadas de ataque no primeiro tempo , que abriu o placar . Eles levaram dinheiro , cartão telefônico e um celular . “ Todos os alemães foram às ruas comemorar com os ingleses , com os franceses , com os brasileiros , com todos os países . Araçá ataca Alex , mas Luciano surge para defendê - lo . O custo de campanha é muito grande . Estamos comprando a unidade a R $ 1 , 50 e infelizmente temos que repassar esse valor para o consumidor . “ O lago , que até então era limpo , passou a receber uma grande quantidade de esgoto . Acreditava ele , como muitos mais , naqueles anos de entusiasmo pela figura de Che Guevara , que era possível repetir a façanha cubana . No Superior Tribunal de Justiça , a situação é pior . Assim , somente o aroma da bebida continua na comida . E quais nossas crenças coincidentes com as de Voltaire / Candide ? Já os PM ' s baleados prestaram depoimento e estão ajudando nas investigações " , explicou ela , acrescentando que o inquérito será presidido pelo delegado da Deic Paulo Cerqueira . pob Além deles , faltam ser ouvidas mais sete testemunhas de defesa . Debaixo de um forte sol , os esportistas não desanimaram e fizeram bonito durante todo o percurso da prova . Anunciar no rádio é muito caro e ficamos no boca a boca mesmo ” , relatou . A animação fica por conta das bandas Amigos do Samba , Boca de Forno e Samba Rock Club . Tão lindo como as estrelas e as constelações que contemplamos em muitas noites . Dentro das dimensões do trabalho existe também a face do servir com gratuidade . Para o coordenador do PELC / Pronasci , Alexandro Lima , o skate é um esporte de inclusão social assim como os demais oferecidos pelo programa . Se vou ou não jogar , isso fica em segundo plano " , afirmou , semana passada , ao " Globo Esporte Minas " , da Rede Globo . Também não se trata de se contrapor a nada , e sim de apoiar a diversidade e ampliar a base de leitores no país . Até as 20 h a população poderá buscar o medicamento direto na farmácia e , a partir desse horário , o atendimento será direcionado para a recepção . Continuamos a receber o mesmo valor . Neste caso , utilizaram um vírus para " desligar " as subunidades α 5 nAChR na habênula medial . Cale - se , Senador , nem mais uma palavra ! Capitão do time , destaque de conquistas recentes do clube , apontado por muitos como capaz de servir a Seleção Brasileira , passou a ter o nome estampado nas manchetes policiais . Chegamos muito perto " , lamentou o dirigente do país que sediou a Copa de 1994 . O número de técnicos e monitores para a abordagem também é insuficiente e não atende a regulamentação do modo do Sistema Único de Assistência Social , o Suas . Em sua terceira edição , o grande retiro religioso permanece com o objetivo de transformar a cidade na Capital da Fé durante as festas momescas . Pouco antes de ser removido , explicou à reportagem do Fantástico qual era seu objetivo : matar a criança . Já o tricolor , deve seguir o mesmo caminho , pois precisa reverter o quadro desfavorável construído em Pituaçu . Tem só de observar jogos , não sei como eu me sentiria nisso , pois gosto de ficar no dia - a - dia . pob Ele denunciou os dois por homicídio doloso – quando há intenção de matar - triplamente qualificado ( meio cruel , impossibilidade de defesa da vítima e para ocultar outro crime ) . Ouvi tudo calado e imaginei num espaço curto de alguns segundos tudo o que aquele senhor havia me falado . O Prefeito não tem condições de manter esse Secretário que aí está . Você sente que pode prestar ajuda a quem lhe pede sinceramente , sem se sentir sugado ou injustamente usado . Vem a caminho as bombas deles . Existem variáveis , bem piores , decorrentes do avarento , do desonesto , da covardia , do falso ou do desequilibrado . Com a maturidade , eles se veem capazes de brincar com a tal onda chique . Ehud Olmert poderá continuar no poder durante semanas ou meses até que seja formada uma nova equipe . Não conseguiu fazer o time jogar e passou um dos maiores vexames da história com o time . O padre Marcelo Rossi foi o campeão de vendas de CDs em 2006 , informa a Associação Brasileira de Produtores de Discos . No Galeão , dos 87 voos , 46 atrasaram ( 52 , 9 % ) e dois foram cancelados ( 2 , 3 % ) . Se o ônibus estivesse cheio , teria acontecido uma tragédia " , disse Mendes . Pra quem tá se afogando , jacaré é tronco ” . O STF julgou inconstitucional a contribuição previdenciária paga pelo empregador rural pessoa física sobre a receita bruta proveniente da comercialização da produção rural . Combustível ' limpo ' vira caso de polícia no Sul Do colunista Cláudio Humberto : O engenheiro Thomas Fendel pode ir ao Supremo Tribunal Federal contra a apreensão absurda , em Santa Catarina , esta semana , de um de seus “ carros limpos ” . Garotinho sabe que pelas críticas , pelo que está passando no Tribunal Superior Eleitoral . A companhia deixou de instalar postes de madeira há alguns anos , por questões ambientais . Temos muitas defensorias que são referências na prestação de trabalho à população carente e tenho certeza que este sucesso se dá porque o perfil ideológico desses gestores comunga com o espírito de existência dessas instituições . A Arara Azul garantiu o tricampeonato com a pontuação de 116 , 9 . Elas vivem em áreas que foram classificadas num estudo feito pelo IPT ( Instituto de Pesquisas Tecnológicas ) com risco geológico maior de deslizamentos . pob “ O raleio pode ser dividido em dois tipos : raleio de cacho e raleio de bagas . Não satisfeito , passou a subtrair o dinheiro das maquinas registradoras . Cerimônia encerra formação de turma do 1 º semestre Uma cerimônia marcou ontem a formação da turma do 1 º semestre de 2009 da Guarda Mirim . Hoje você se perceberá mais intuitivo e aberto a novas experiências , pois a presença da Lua em sua nona casa amplia sua percepção frente a vários assuntos . Mas os engenheiros acreditam que , até a conclusão , pelo menos 200 pessoas estarão trabalhando na construção do prédio . Mas ITR poderia significar outra coisa . Mas , se acontecer rapidamente , pode destruir o patrimônio genético de uma espécie . Os interessados devem comparecer para cadastro das 8 h às 17 h . Uma dessas secretárias me disse que tem três cursos superiores . O líder da bancada da oposição , Heraldo Rocha ( DEM ) condiciona um acordo à derrubada do veto do governador Jaques Wagner ( PT ) a um artigo de projeto do Judiciário , que incorpora gratificações dos serventuários retroativas . O Rubro - negro agora enfrentará o ganhador do duelo entre Universidad de Chile e Alianza Lima , que fazem o jogo de volta nesta quinta - no primeiro confronto , os chilenos ganharam no Peru por 1 a 0 . Ronaldo teve uma atuação boa . Até a tarde de quarta , o abaixo - assinado , que está no endereço www . petitiononline . com , reunia mais de 5 mil adeptos . " Acho que mudaram e não avisaram o prefeito , pois ele disse que eu continuo como líder " , disse o petebista . " Sempre fomos acostumados a ficar em locais mais tranquilos , e nos últimos anos , a rua onde fica a casa ficou muito agitada . Quer mudar de poder . Tivemos oportunidades , mas não fizemos . Ela pedia brinquedos gratuitos nas praças , com balanços e escorregadores . Falta - lhe o mínimo de vergonha . Meningite - Mário Rodrigues ( PSB ) solicitou da Comissão de Saúde da Casa que seja feita uma averiguação mais aprofundada no caso da morte de uma criança que faleceu supostamente com suspeita de meningite . “ Ali é realmente o nascer de Três Lagoas , um marco para a cidade . pob Eu acredito que se o Hitler tivesse que nomear um sucessor o Hartung seria seu chefe de propaganda nazista , porque ele soube mascarar tão bem lá , como está acontecendo aqui também . OE - Há como inserir as cidades do interior nos programas relacionados à Copa ? Citou , por exemplo , no caso do ICMS que o fator gerador deste ano será repassado ao município daqui dois anos , portanto , o que Santa Bárbara está recebendo agora o fator gerador é de 2007 . Segundo eles , o sucesso sexual deve ser redefinido como “ qualquer coisa que faz você se sentir bem consigo mesmo e com o seu parceiro ” e como “ algo que melhora o seu relacionamento ” . Expandir Reduzir + comentar joão orlando dos santos em 06 . 07 . A familia dele esta correndo atras para saber quem fez isso com ele , vai assionar o ministerio publico da região para poder investigar quem foi as pessoas que perseguiram ele , o mataram e queimaram . Apura isso , Karla Sandoval e SD ; Século Diário , mediador ( Vitoria / ES ) Ao senhor Adilson Carlos Francisco de Souza Caro leitor , não publiquei o seu comentário porque o senhor faz acusações sem provas documentais . Na terceira , o paulista afirma que , quando vier , estará " incomparavelmente acomodado na amizade de vocês . Estudar , passear e participar do grupo de danças e de suas atividades . Cena horrível , por que todos estão vendo . '' A volta da qualidade vocal está sendo muito mais lenta do que foi há dez anos , por questões de anatomia . ' Sem a integração , você pode estar atendendo ao mesmo público alvo várias vezes , enquanto outro não está sendo atendido ' , analisou . Logo no minuto seguinte , Diego cobrou escanteio pela esquerda e Fabiano , em sua primeira jogada , ganhou de Clemer e empatou , com um gol de cabeça . Questionada sobre a legitimidade do material apresentado , já que na imagem usada em sua campanha ela aparece muito mais bonita e magra , Katarzyna não escondeu a manipulação e disse que é preciso fazer uso das novas tecnologias . Transito é + q caótico , metro ñ presta . O caso foi levado ao Fórum de Mogi em dezembro de 1987 . Levou para a administração de Brasília antigas ( e bota antigas ) amigas prá assessorá - la . No ano passado , o prefeito José Antônio se dedicou de corpo e alma na construção das lagoas de decantação . No ano seguinte , não passou do Goiás . Mais uma vez desejo - lhe sucesso . spa El Ministerio de Trabajo decidió suspender las labores en Bay Star , después del accidente . Se ha trabajado muy duro , y acá estamos como siempre , contentos y decimos que esto fue una prueba de Dios para templarnos más en este lugar hermoso que tenemos para vivir ” . En cuanto a las consolas ' de piso ' , ya no son tan grandes y pesadas como antaño , ni obligan al reguero de cables a través de la habitación . Hay circunstancias que voy aevaluar . El sargento Eric Bravo dijo que su tatuaje lo llevó a acusarlo , pues “ es muy difícil confundirlo ” . Si uno le dedicara el tiempo suficiente a leer la letra chica de esos contratos , seguramente , habría menos afectados por esta crisis . Absolutamente , pero esto es una interpretación personal . Es tiempo de reflexión y de unión . La tragedia de Antuco demuestra que la tropa carece de prendas mínimas para afrontar la nevazón cordillerana . Con la probable baja en el precio de los productos agrícolas y traspasos cada vez más insignificantes , los ingresos tal vez suban modestamente lo que suba la inflación . Home » Especial Gastronomía » Tecnología Cuando arrancó el nuevo siglo , Google era una novata de apenas un año y tres meses de la que pocos sabían . La vamos a filmar en Puebla y el D . F . ” . -- ¿ Y tienes mirada hacia el Norte , hacia Hollywood ? La denuncia fue radicada en la comisaría Primera , con intervención del Fiscal Marcelo Martini . El Deportivo Tuyango no podrá estar en la próxima temporada del la Liga de Paraná Campaña . Cómo introducir su utilización en la educación secundaria . Acepta un tratamiento psicológico por intercambiar pornografía infantil tratamiento : El ministerio fiscal pedía una pena de siete años de prisión por un delito de intercambio de fotos sexuales de menores . Afirmó que la inseguridad afecta a todos los venez « anterior 1 . ” ) y los ciudadanos caemos en la pendiente que exige cada vez menos argumentos y contempla el conjunto , cada vez más , como si todo fuera apenas un espectáculo ( ¿ viste lo que le dijo ? Cite este artículo en su sitio Tevez : " pido el respeto que me gane " Para crear un link a este artículo en su sitio , copie y pegue el código de abajo . Además , mañana los imputados podrían ampliar su declaración indagatoria ante los instructores de la causa , en la Justicia de Morón . fra Son numéro de téléphone nous a été communiqué par l ´ un de ses clients réguliers . " Dans les deux derniers jours , les forces du ministère ont réussi à ne laisser s ' embraser aucune maison , et à éviter les pertes humaines " , a encore souligné cette responsable . La responsabilité de représenter un continent , une région et surtout un pays qui ne vivent que pour le football met davantage de pression sur le dos et les épaules des hommes de Saâdane . Dans le secteur privé , le PIB par habitant de lex - Allemagne de lEst se languit à 66 % du niveau de lOuest , selon Hans - Werner Sinn , de lInstitut IFO . L ' histoire se répète encore une fois : une des personnalités jadis proches du cercle du pouvoir , petit - fils du fondateur de la République islamique est conspué , humilié . Toyota présente ses excuses pour ses voitures défectueuses - Yahoo ! L ’ heure est à l ’ hésitation pour beaucoup d ’ actionnaires comme le démontre les légères oscillations des cours autour de la moyenne mobile à 20 semaines . L ’ Italie ( - 17 , 4 % ) et l ’ Espagne ( - 14 , 3 % ) , en revanche , restent à des niveaux de baisse alarmants . StarCraft II : Wings of Liberty est censé sortir au courant de la première moitié de 2010 sur PC et Mac mais vous commencez à le savoir , avec Blibli on est jamais sûr de rien . Les videurs préfèrent appeler la police au - lieu de séparer les 2 jeunes femmes . Ils se sont apparemment fait des amis parmi les hauts fonctionnaires d ' Hydro - Québec , qu ' ils ont ensuite récompensés largement de leurs bons offices . Au premier tour , linstitut crédite la liste de Jean - Noël Guérini de 40 % des intentions de vote , contre 36 % à celle de Jean - Claude Gaudin . Outre les traditionnelles perturbations au Gothard , les automobilistes devaient compter avec une circulation ralentie à l ' approche des douanes , au niveau des à © changeurs des axes nord - sud et est - ouest et autour des grandes villes . Mais le tribunal de Bayonne leur avait accordé un délai jusqu ' à lundi matin pour évacuer le stade . Il me suit partout , du nord de la ville au Plateau , dans les rues d ' Hochelaga , dans le métro , dans mon sac , en pension chez le voisin , tout seul et fier dans l ' entrée de ma maison , avec mon café le matin un sublime moment de ma journée . Selon les informations de dernière minute , un nouveau doyen a été élu . Après quatre ans de bons et loyaux services à Wolfsburg , l ´ attaquant de la Bosnie - Herzégovine pensait avoir obtenu son bon de sortie définitif . Vous développez les supports de communication et définissez la stratégie d ’ accès au marché , aidant ainsi les Ventes à comprendre le positionnement des produits , leurs avantages clés et les cibles clients . Je veux tourner la page " , déclaré Dominique de Vlippein jeudi 28 janvier à la sortie de l ' audience du tribunal correctionnel de Paris où il a été relaxé dans l ' affaire Clearstream . Ils viennent d ' aligner trois défaites consécutives dans trois compétitions différentes et la blessure de Fernando affaiblit un peu plus leur effectif . spa Oye , ¿ cómo se llama la virgen negra que es la patrona de Cataluña ? Los consumidores salieron satisfechos con los buenos productos y los buenos precios . Los grupales se hacen los días martes y están formados por 20 a 25 personas y duran tres meses y tiene un seguimiento de un año , dado que los resultados no son inmediatos . Es el equipo que mas admiración vi generar en mi vida , merecido lo tienen . El 14 de marzo , día de las elecciones de Congreso , más de 2 . 500 . ' Dos Mundos : Evolución ' es una fusión perfecta del pop con la música mexicana . Y , además , ratificó la realización de las elecciones en la fecha originaria : el domingo 28 de agosto de 2011 . Rahola : Se pueden dar las manitas . Ahí en cambio brilló su compañera de equipo , Samantha Viteri , quien consiguió el oro en + de 90 kg . También quedó establecido el día de entrega de la tradicional Perla deportiva , donde se .. Según algunas agencias noticiosas , un funcionario anónimo del Estado Mayor de la Armada tampoco descarta la posibilidad de un error humano , o sea , la culpa del piloto . Luego del entrenamiento del viernes , el plantel completo , quedará concentrado en lugar a determinar . Les recordamos a nuestros usuarios , como siempre , que para todo tipo de reclamos e inconvenientes pueden llamar sin cargo a nuestro Servicio de Atención Telefónica Integral ( S . Como se acordó en la última reunión con el Ejecutivo municipal , se reliquidaron los sueldos de enero y febrero , de esta manera , ayer , ya cobraron la diferencia , por lo tanto levantaron las medidas de fuerza y se reactivan las actividades . Panamá , sábado 10 de septiembre de 2011 Por fallas sanitarias , Municipio de Dolega cierra su matadero CHIRIQUÍ . Pocos minutos después de quedarse con las ganas de alzar la estatuilla , Sofía Vergara pudo celebrar : la serie que protagoniza , ‘ Modern Family ’ , obtuvo el SAG a la ‘ Mejor Comedia ’ del 2011 . La recomendación del organismo a México es cuidar el agua ( de la que se desperdicia más del 60 por ciento en la agricultura ) con sistemas eficientes de riego y preservar el germoplasma propio de cada región . En estos momentos se encuentra muy feliz , en paz y entusiasta por este nuevo proyecto en su carrera , señaló Edith . " Antiguamente los falsos testimonio los instruía el propio juez " , sentenció . Los jubilados de la Provincia que perciben hasta 710 pesos podrán cobrar hoy sus haberes . fra Surtout quaprès larrestation de hauts responsables militaires et le projet de marginalisation de larmée au profit de la CTS , les officiers se sentaient menacés et le renversement du régime devenait pour eux une nécessité de survie . Etats - Unis : la fusée Falcon 9 réussit son premier vol d ' essaiLa société américaine SpaceX a lancé vendredi avec succès de Floride sa fusée Falcon 9 pour un premier vol d ' essai . Simplement car il s ' agit des deux meilleures formations de l ' année . Alors que Karim Aït - Fana , blessé aux ischio - jambiers , sera absent pendant au moins deux semaines , Geoffrey Dernis , touché à l ' adducteur gauche , a été contraint d ' écourter sa séance d ' entraînement . Miguel Montero a frappé un circuit en solo pour les Diamondbacks , qui occupent le dernier rang de leur section et qui ont maintenant perdu sept matchs de suite . Mersen : bien orienté après un CA dynamique . Ensuite , BlackBerry a mis en place un nouveau service qui permet de générer des revenus par l ´ intégration de publicités dans les applications ( et notamment les applications gratuites ) . Natixis souffrait également ( - 1 , 34 % à 3 , 54 euros ) , après avoir annoncé une exposition à la Grèce de 900 millions d ' euros . On na plus de communication directe avec les autorités iraniennes , déplore Jean - François Julliard , secrétaire général de Reporters sans frontières . Mais , après un match nul ( 0 - 0 ) contre la Côte d ' Ivoire en entrée , le Portugal doit absolument croquer avec appétit dans ce plat de résistance nord - coréen afin de faire passer plus facilement le Brésil en dessert . En outre , la marque Droid appartient à Verizon Communications , qui commercialise également un Droid de HTC . Cette première injonction , qui avait été obtenue par le syndicat des employés de la raffinerie , arrivait à échéance le vendredi 16 juillet . Cet appel au marché aura pour objet de financer la transformation de Transgene en une société biopharmaceutique intégrée et profitable à l ' horizon 2015 " , lit - on dans le communiqué de la société . Ensuite , en juillet 2009 le FBI détermine l ´ origine française des attaques sur le site de Twitter . En France , le coût moyen des obsèques varie de 2 . 500 à 4 . 000 euros , selon des chiffres communiqués fin 2009 par le secrétariat d ' Etat à la Famille . Ici les prostituées , de plus en plus nombreuses , sont calfeutrées sous leur tchador ; dans le Nord , elles ont la mèche beaucoup plus rebelle . Ils ont senti cela comme une insulte » , a transmis le président de l ' instance locale , André Vaillancourt . Le chef sort chez Harmonia Mundi une Flûte enchantée qui promet de faire date , et donne Cosi fan tutte en version de concert . Il est surprenant qu ' aucune référence ne soit faite à ces travaux dans l ' étude présentée par l ' Institut Pasteur . Nos confrères de Les Numériques viennent de se pencher sur deux netbooks qui exploitent la nouvelle plateforme Pinetrail d ' Intel : le N 210 de Samsung et le U 135 de MSI . pob Mas o importante é bom desempenho do Brasil e dos nossos políticos . Até porque nossos “ grandes líderes ” naufragam em tempos de chuva e são reduzidos a pó em tempos de seca . ” Antonio Palocci Filho , ministro da Fazenda , sobre o governo ter desistido de elevar em 0 , 6 ponto percentual a contribuição previdenciária dos patrões Folha de S . Paulo , 22 . 07 . Neymar : Estrela santista mostrou que tem força . O tucano - que no primeiro turno achava que os debates seriam sua salvação - agora deve estar perdido Leitura - Péssima essa idéia de colocar Lula para ler respostas com números de seu governo . Numa idade dessa , seu amigo tá ficando doido ! 05 . “ Na dúvida , prefiro atiçar o senhor . Depois as brilhantes gestões de Jesus na prefeitura . Primeiro porque conseguiram surpreender uma equipe grande , considerada da elite do futebol brasileiro , apesar de todas as dificuldades . A informação vai ao encontro das declarações do general Ricardo Sanchez , comandante das forças norte - americanas no Iraque , que revelou que o ex - presidente se encontra em um local seguro . Este impacto pode ser positivo ( mais empregos , por exemplo ) ou negativo ( aumento da violência e de outros problemas ) , dependendo do projeto e da articulação do poder público com os demais setores da sociedade . A reunião não apresentou resultados positivos . Esta cidade é ainda considerada um pólo cultural da região Sudoeste da Bahia ( com a primeira Escola Normal do sertão baiano ) . Foi uma experiência que me ajudou muito politicamente , afinal sai da figura de secretário para ser parlamentar , situação bem distinta , mas que somei em minha carreira e pude estabelecer uma relação com a minha antiga função de secretário . Em terceiro lugar , que o governo seja competente para fazer os brasileiros acreditarem e terem orgulho do Brasil . É bem mais sério - e triste . Ao invés de construir cinco escolas , será edificada apenas uma . Deixa os filhos Ana Cláudia e Luciano . Os iraquianos também expressaram sentimentos diversos . Em meio ao manguezal , a jangada desliza suavemente em direção ao santuário da preservação do Peixe Boi , o dócil mamífero ameaçado de extinção . pob Como de costume coloco o brinquedo para funcionar na frente do cliente , a criança ficou toda contente . Os programas de financiamento beneficiaram 1 , 6 milhão de pessoas com acesso à casa própria e geraram de 665 mil empregos na construção civil . O ritmo do grupo era uma mistura de MPB , rock , samba , reggae e new wave . Isso é importante nessa fase de transição para o time recuperar a confiança . O carro também conta com a avançada tecnologia VSA ( Vehicle Stability Assist ) , que assegura estabilidade ao sedã médio mais vendido do país . Por exemplo : você retirou dinheiro da sua conta bancária para colocar na sua carteira . Porém , sobre a pergunta , especificamente , cabe dizer que , além de meus compromissos com o Estado , também sou professor dos Cursos de Medicina e Administração Pública da Faculdade São Lucas de Porto Velho . Para o casal , a expectativa é que a perícia chegue esta manhã . É porque não gosto de trabalhar à noite mesmo . Alguém mais duvida de que possa fazer de tudo para sua querida esposa ser a vice ? As duas equipes vivem situações semelhantes na competição , brigando para se livrar do rebaixamento . O Palmeiras marcou o terceiro gol ainda no primeiro tempo . “ Estamos trabalhando para colocar à disposição dos sergipanos uma das unidades de pronto - socorro mais modernas do Norte e Nordeste do país ” , declara . Larissa vai até o quarto de Nicolau para conversar com ele . Salientou que o texto da cláusula que permite a Ecco - Salva deixar de prestar serviços sem justificativa , é vedada não somente pelo CDC , mas também da Constituição Federal e do Código Civil . A reinauguração será realizada no dia 25 / 05 , no jogo contra o time de futsal de Umuarama , pela 11 ª rodada da Chave Ouro do Campeonato Paranaense . Disse que estes congressos sempre são feitos na Europa e América do Norte , e agora houve uma consulta perguntando se há interesse em Porto Alegre sediar este congresso em 2003 . 29 a 32 ) Linha de Frente - Wálter Fanganiello Maierovitch - O STF virou trampolim - Como até a torcida do Flamengo já notou . “ Foi uma modificação que a equipe rendeu bem ” , resumiu o treinador . Para as existentes , a gente vai ver o que se vai fazer nessa matéria . pob Tenho que me controlar para não sair berrando que aquele homem silencioso e solitário em seu camarim no intervalo do show mereceria um tratamento à altura da sua imensa grandeza artística . Na terça - feira ( 12 ) , o serviço não funciona . Estas são apenas algumas das mensagens colocadas na última semana em dois dos mais populares websites de anúncios da Indonésia , os portais " Gratisiklan " e " Iklanoke " . 2005 - 08 : 12 Deixe o seu comentário Comentário ( requerido ) Quantidade de caracteres restantes : Deseja que seu comentário seja PUBLICADO ? Um conselho , formado por integrantes do governo federal e de representantes da sociedade civil vai coordenar a implementação da campanha no país . Ricardo e Rodolfo conversam sobre a tristeza de sinhá Moça ao ver Rafael preso na senzala . Se o Brasil fosse um país sério e justo , o causador desse acidente que para mim deveria se chamar homicídio , seria punido com muitos anos de cadeia . A polca , das pernas de canelas tão finas ! O restante dos rendimentos do jogador seriam conseguidos na negociação dos dois espaços do uniforme do Corinthians . A aprovação do mandato de Maia Neto , mesmo oito anos depois , supera a 90 % . Hoje pela manhã aconteceu uma importante reunião com a presença da Primeira dama Sônia Chaves ; Secretária da Cultura Guida Maia , além de outros setores da Prefeitura . É a época das grandes amplitudes térmicas . Segundo ele , a economia pode crescer mais de 5 , 7 % em 2010 . Se o índice de umidade ficar abaixo de 12 % , caracterizando estado de alerta máximo , um Plano de Contingência será colocado em prática . Corpos identificados À medida que os corpos são reconhecidos , os nomes são divulgados pela prefeitura de Angra dos Reis e pelo Instituto Médico Legal do Rio . A Corregedoria Nacional de Justiça ganhou o reforço de mais uma juíza . A expansão desse mercado começa a atrair a atenção de grupos estrangeiros , que ainda encontram dificuldades para se instalar no país . Eu mesmo posso acrescentar mais alguns nomes a esses já relatados . Não passa de mais um político enganador . O cerco se fechou . spa Estos objetivos productivos en las principales cadenas se lograrán en la medida en que se incorporen nuevas tecnologías . En otras épocas el hombre se sentía culpable por gozar , ahora se siente culpable o culpa a los otros por no hacerlo en dosis suficientes . Ernesto Sotolongo , Gerente General de la Territorial Habana de Artex , aseguró que además de las ofertas gastronómicas habituales del salón , se brindarán opciones en moneda nacional . Los integrantes de la comisión reconocieron que ese Gobierno debe ser acordado entre Zelaya y Micheletti , pero aseguraron que el acuerdo solo establece que para el jueves deben estar elegidos sus ministros y viceministros , pero no quién lo dirigirá . No es solo abuso es corrupcion tambien , el informe tambien informa corrupcion . Sea como sea , ésta es la segunda vez en poco más de un año que el Senado se está mostrando como una instancia racional en medio de tantos desvaríos . El imputado fue declarado culpable de " homicidio calificado por promesa remunerativa , uso de arma de fuego y la participación de un menor " de edad . Cierta sensibilidad te aborda este día , tienes que poner suavidad en tu espíritu para que puedas aceptar las cosas que no puedes cambiar . Por ejemplo hoy , ningún candidato se anima a pararse en un cajón de tomates en una esquina para decir que acá hay que privatizar . Una última cosa , tampoco entiendo la justicia norteamericana , si la denunciante tiene credibilidad se detiene a quien sea y si no la tiene le puede pasar cualquier cosa que no le hacen caso . Ferrer se une a Ferrero en octavos Ferrer : El tenista de Jávea derrota a Florian Mayer por ( 6 - 1 , 6 - 2 , 7 - 6 ( 2 )) . Se ve que la memoria no te anda del todo bien . Si empata , puede tener un desempate con Olimpo o River o formar parte de un triangular si ganan sus dos adversarios de la pelea . En este sentido , sostuvo que el largo proceso que puede instalarse en la Justicia provoca que los inversores se desalienten . Para la reducción se acude a la fusión , que consiste , como es sabido , en la creación de una sola empresa a partir de dos o más preexistentes con disolución de todas ellas o perviviendo una sola de ellas , caso de la fusión por absorción . En Rosario , el mismo día , a las 10 , está prevista una clase pública en laplaza Pringles . Comenzaron los preparativos de la nueva producción musical de ‘ El Mono ’ Zabaleta , quien visitó las instalaciones de Vanguardia Valledupar para agradecer al público por la gran aceptación que ha tenido . En que estaría yo pensando .. Justamente , el Indio encabezó un trencito electrizante y trajo a cuesta hasta la décima vuelta a Beitia , Litwiñiuk , Luciano y Nilsson . En Zamora se han dejado improductivas muchas tierras de cultivo , y en buena parte es porque sus propietarios las tienen ociosas como una forma de presionar para que se les otorgue el cambio de uso de suelo y urbanizarlas . pob 2010 - Fórum comunitário discute presente e futuro de Vieques 15 . 04 . A ação foi movida visando à reparação dos danos sofridos por indígenas Tupinambá quando , em junho do ano passado , foram violentados e torturados por agentes da PF . Mas para a vida das pessoas , é um rendimento fundamental e que elas sentem no seu cotidiano . " A campanha informa de maneira transparente , clara , direta . As evidências apareceram na reta final do campeonato e se acentuaram no returno , a partir do empate com o Camboriú , em pleno Domingos Gonzales . Também haverá painéis sobre desenvolvimento local e regional e uma oficina a respeito do planejamento dos cem primeiros dias de administração municipal . Por outro lado , entre as musas da Inconfidência esteve Bárbara Heliodora , mineira de sangue paulista , pois descendente da família Amador Bueno . Na ação , o Brasil rebateu a sentença de Bates , afirmando que a decisão contraria a Convenção de Palermo . Para isso deverá pagar a metade da tarifa ( R $ 0 , 90 ) . Uma hora e meia é tempo suficiente para fazer o estrago . Os cães estirados ao sol . Já os gastos de estrangeiros no Brasil , nos três primeiros meses do ano , ficou em US $ 1 , 655 bilhão , contra US $ 1 , 422 bilhão observado no mesmo período de 2009 . Parafraseando os versos da canção do velho cancioneiro , pergunto : Se a Cabocla Maringá , a histórica morena de uma beleza estonteante , esteve em Pombal , de corpo e alma , ora , ninguém sabe , ninguém viu . Pelos dados da ANP , o consumo próprio ficou em 7 , 209 milhões de metros cúbicos diários em janeiro , com queda de 13 , 04 % em relação a janeiro do ano passado . No entanto , o goleiro Bruno , um dos poucos titulares que deve ser aproveitado por Celso Roth , rejeita a hipótese de desprezo à competição internacional . Ele é tão inocente quanto o Dr Roger abddelmassih tbem estuplador de pacientes , q tbem era casado que soltem os coitados dos Nardones o inesquecível maníaco do parque . A média de salários dos clubes norte - americanos é de US $ 10 mil . Aos 33 anos , Sissi , considerada a melhor jogadora do Brasil , está se transferindo para o São Francisco , onde terá Cátia como companheira . Seu amigo errou em estrear o tênis no dia da prova , e no caso dele , correr descalço acabou o atrapalhando porque ele não tinha o costume de correr dessa forma , e por isso acabou por atrapalhar seu desempenho . O risco é grande , como estamos percebendo durante todos estes últimos 30 anos , em que a atenção maior se volta para a questão ecológica . Nesta segunda - feira ( 16 / 11 ) , a direção do clube apresentou seis dos oito reforços contratados para o estadual .fra Le rappel à la décence par le Président , réagissant comme un père - fouettard , cède à ce pittoresque vaudevillesque qui se répète périodiquement , avec l ' effet que l ' on sait . De nombreux appels en ce sens avaient été lancés depuis le boycott de l ' entraînement de dimanche . Un décès a été recensé et le couvre - feu demeure . Cet argent destiné à la réalisation des œ uvres de petite envergure , est victime de la liberté de gestion accordée aux élus du peuple . Au lieu de cela , on laisse naître et s ' installer un débat sur la crédibilité des tests . Les troupes de l ' OTAN et du gouvernement afghan ont causé 223 morts civiles au premier semestre 2010 , contre 310 au premier semestre 2009 . Leur part de responsabilité est passée de 31 % des décès l ' an dernier à 18 % cette année . Les assureurs pourraient reprendre la formule dAlbert Camus , " il faut imaginer Sisyphe heureux " . La mère de l ' enfant s ' était portée partie civile dans l ' affaire . Luc Chatel , qui est également le ministre de l ' Education nationale , s ' exprimait lors d ' un point presse avec des journalistes spécialisés dans l ' Education . Enfin , dans cette cuisine électorale où les candidats se disputent dabord le bout de gras , gardons le meilleur pour la fin : les tractations entre le PS et lAlliance pour un rassemblement des forces de progrès au deuxième tour . Je ne sais pas quoi dire , c ' est un moment historique et nous ne savons pas si cela se reproduira un jour dans nos vies . L ' hebdomadaire " le 10 sport " numéro 213 paru ce vendredi ( 17 / 9 / 10 ) titre en une : " Edel les preuves accablantes " et revient sur l ' affaire Edel ( nom du gardien camerounais du PSG ) dans ses trois premières pages . Tête de liste de la majorité en Pays de la Loire , pour les élections régionales de mars . Le porte - parole de l ' armée , Sunsern Kaewkumnerd , a pour sa part indiqué que l ' armée " contiendrait " les manifestants . Il ne ventait pratiquement pas , dans le secteur de la marina d ' Aylmer , lors de la présentation des dernières courses . Les Sénateurs signaient un quatrième gain d ' affilée face aux Canadiens , un cinquième en six affrontements cette saison . La compagnie d ' embouteillage d ' eau Aquablue International , qui devait s ' installer dans l ' ancienne usine de Hershey , éprouve des problèmes financiers . Notre mot d ' ordre , c ' est une république solidaire " , a - t - il lancé , en fixant " trois priorités " : emploi , innovation , réduction des déficits . Les ambulanciers ont tenté des man œ uvres de réanimation , avant de transporter l ' homme dans un centre hospitalier de Trois - Rivières , où son décès a été constaté . ‘ Il faut leur inculquer une bonne éducation islamique qui puisse les protéger contre les courants de pensées allant à l ’ encontre des principes de notre religion ’ , renseigne le khalife général des mourides . ita La più attesa tra tutte è stata quella di Mauro Biani . L ' ordigno , che ha annerito l ' androne ed il portone , è stato accompagnato dalla scritta " game over " sul muro adiacente . La manovra che abbiamo già annunciato , consistente e significativa , sarà anche superiore alle esigenze che chiedono i parametri " ; . Si parte alle 19 con l ’ aperitivo swing e le selezioni anni Cinquanta di dj Lalla Hop . E per l ' Europa sarebbe una sconfitta politica gravissima . Questa la semplice chiave di Pep Guardiola per approdare alla finale di Madrid . Sarà una gara difficile dove l ' importante è fare funzionare bene le gomme " , conclude il brasiliano . Vienna , 7 gen . - ( Adnkronos / Dpa ) - Il prezzo del petrolio della Organizzazione dei Paesi Esportatori di Petrolio ( Opec ) e ' salito a 79 , 64 dollari a meta ' settimana . Trovare un ' intesa tra Camera e Senato sull ' esame delle proposte di modifica della legge elettorale , in modo da procedere " in modo ordinato " . Quasi impraticabile '' : '' Occorrono i puntelli , subito - e ' la conclusione - . Ma i puntelli non bastano . La prima del genere , in Gran Bretagna : destinata a fare storia e probabilmente a mettere un freno a un certo tipo di azioni legali non troppo meditate da parte dei titolari di copyright . Spero che sia di quest ' anno ' . È stato proprio dal secondo mezzo della stessa azienda che trasportava altri giovani , che è scattato l ' allarme . Il programma proseguirà per i sette martedì successivi con riunioni alle 20 , 30 nella sede della Croce Bianca . L ' uomo ha ignorato le regole elementari del codice stradale con un mezzo potente , per puro desiderio di velocità » , ha argomentato il tribunale locale . Schiavone , testa di serie n . 17 , ha superato 0 / 6 7 / 5 6 / 0 la francese Alize Cornet e ora incontrera ' un ' altra francese , Julie Coin . Durante la conferenza è previsto anche un minuto di silenzio , che probabimente coinvolgerà tutto il Salone nei suoi cinque padiglioni , in segno di lutto per i due militari della Brigata taurinense morti in Afghanistan . Trichet : la Grecia non può lasciare l ' Area Euro - Yahoo ! " Le priorità del Paese sono altre - aggiunge - I cittadini ci chiedono di contrastare la crisi economica e realizzare le riforme a cominciare dalla completa attuazione del federalismo fiscale . 117 della Costituzione ( che definisce le potesta ' legislative di Stato e Regioni ) anche sotto il profilo del principio della '' leale cooperazione '' . fra Les petites entreprises ont elles aussi été durement frappées , notamment les éleveurs d ' huîtres de la région de la l ' Ile de Ré . Ceux qui n ' ont pas souscrit d ' assurance " pertes d ' exploitation " sont très inquiets . La TVA réduite dans la restauration : le 1 er juillet 2009 , la TVA est passée de 19 , 6 % à 5 , 5 % dans la restauration . Ils ont tous les deux mis en avant larticle 406 qui parle en même temps dincendie criminel volontairement provoqué . Notre confiance en a pris un coup après la défaite face à l ' Egypte . Au Maroc , une Association AMEM , est créée pour aider la femme marocaine à traverser cette étape avec le moins de risque . " Le fini - parti , c ' est un faux problème " , assure Patrick Rué , secrétaire général adjoint de FO . Tout le quartier Hors - Château est de nouveau rouvert à la circulation . En 1962 , il est condamné par défaut à 7 ans de prison pour " trahison " . En revanche , il va falloir à Eric Woerth trouver une défense plus solide pour convaincre qu ' il ne s ' est pas immiscé dans les relations entre Patrice de Maistre et son épouse . Aprà ¨ s une succession d ' incertitudes entourant la bonne tenue du procà ¨ s du convoyeur le plus cà © là ¨ bre de France , la foule de journalistes venue assister aux dà © bats ne se sera finalement pas dà © placà © e pour rien . Carlos Queiroz a communiquà © sa liste des joueurs retenus pour la Coupe du Monde . AFP - La semaine sociale sera marquée par un appel à la grève et à des manifestations chez les fonctionnaires jeudi , ainsi que par les voeux à la presse des leaders des confédérations FO , CFDT et CFE / CGC . Autant d ' actions qui visent à diversifier nos menus maison , à innover , mais aussi à faire beaucoup avec peu ( de temps , d ' argent , de ressources ) . Jen parlais hier sous forme dinterrogation : le Panathinaikos , champion dEurope en titre , est éliminé de lEuroleague au stade du Top 16 . Le FC Barcelone sest chargé de son exécution en prenant le dessus sur des Grecs ( 70 - 67 ) pourtant bien préparés . Il faudrait que le gouvernement prenne des initiatives plus probantes comme celle de tout faire pour relancer l ' emploi " . Trois jeunes supporters allemands , en fait des Sud - Africains d ' ascendance germanique , entrent revêtus du maillot de la Mannschaft , qui vient de se qualifier en battant le Ghana . Lors de son dernier passage , en janvier dernier , il était déjà question d ' un retour à Saguenay pour la présentation de spectacle La Nouba ou du spectacle Dralion . L ’ une des raisons de ce comportement pourrait être une forme d ’ altruisme . Comme chacun sait , le sport n ' a rien à voir avec la politique . Dans la matinée , le CAC 40 évolue autour de l ' équilibre , en légère hausse de 0 , 07 % à 4 . 053 , 37 points . fra Ce faible taux est dû , selon M . Touré , aux reformes qui ont été introduites cette année dans lexamen du DEF . Militaire de carrière , forcément intouchable en raison de son statut , Ousmane Conté a toujours eu une réputation sulfureuse . Sous oublier la couleur du ciel , c ' est le paradis pour volcanologue et photographe . Mais les habitants de Bopope nétaient pas informés de tous ces détails . Nul doute qu ' il en sera de même pour l ' actuelle réforme à l ' étude au moment où la principale préoccupation du gouvernement est de restreindre tous les budgets . Dans ce dernier trimestre , l ’ Anglaise a mis de côté 32 , 2 milliards de dollars en vue de faire face à la marée noire du golfe du Mexique qui plombe littéralement l ’ entreprise depuis plusieurs mois . Il a annoncé mardi être en négociation avancée pour prendre une participation majoritaire dans Boostec , une PME des Hautes - Pyrénées . Le conseil de fabrique de la paroisse de Saint - Donat aura de l ' aide pour redresser sa situation financière . La publication des résultats de ce trimestre devrait avoir lieu mi - octobre . Fabrice Larue en est un , a expliqué Hervé Chabalier , 64 ans , qui reste président de la société et de ses cinq filiales : Capa presse , Capa Drama , Capa Entreprise , Capa production et Capa Cinéma ( au total 130 salariés et 250 emplois ) . Des religieux parfois de bonne foi , souvent aux pratiques sectaires . Aux HUG de Genève , le service est disponible pour tous . Elle accepta de conduire Macky le Lynx sur les lieux , mais il se trouvait que la police du troisième arrondissement avait déjà amené le bébé à la Pouponnière . Laissez vos propositions dans le cadre de commentaires ci - dessous . Il faut créer une nouvelle société adaptée à son temps qui fournira des services au public et pas d ' emmerdes . MADRID - Jose Mourinho , l ' entraîneur portugais du Real Madrid , a déclaré vendredi souhaiter que l ' Espagnol Luis Aragones soit le nouveau sélectionneur du Portugal après le limogeage de Carlos Queiroz . Et les pamphlets en dialecte local dénoncent les aberrations du monde . Le conflit a fait 300 000 morts selon les estimations de lONU , 10 000 daprès Khartoum , et 2 , 7 millions de déplacés . Pinot gris , riesling et gewürztraminer donnent aussi quelques vins dignes de mention . Les révélations semblent d ' ores et déjà explosives : " A première vue , il semble y avoir matière à étayer des crimes de guerre " a - t - il déclaré . pob Centenas de servidores lotam as galerias da Casa e faixas foram erguidas para pressionar os deputados a não apreciarem a proposta de elevação da carga horária e criação da gratificação por Condições Especiais de Trabalho ( CET ) para todos os funcionários . A primeira vítima disso foi o Atlético - MG , que teve um empréstimo , teoricamente aprovado , negado após o estouro da crise . “ Depende muito da utilização do veículo . A mãe , Katherine , o pai , Joe , e os filhos foram ao ar no programa nesta segunda - feira ( 7 ) , nos Estados Unidos . A partir desta data , dependendo do dia em que os partidos políticos ou coligações escolherem seus candidatos , é vedado às emissoras de rádio e de televisão transmitirem programa apresentado ou comentado por postulante a cargo público . " Essa proximidade do estudante com a comunidade carente é muiro enriquecedora . Ele é parte de nossa história . Os paises tem necessidade de gerar alimentos para poder dar de comer a seu povo . Ela cobra mil reais para trazer o marido de Nilza de volta . Com as novas regras , o ALE passa a ser integralmente levado para a inatividade . No próximo ano , tem mais ! Faz bem à saúde mental dos gaúchos receberem essa boa nova . É claro que não existe uma tradução para isto , mas bem que seria interessante começar a ver pessoas na rua com estas quatro letras estampadas nas costas lembrando que os políticos devem estar onde o povo está . " será que vamos conseguir vencer . Mário Cardoso : Olá , Aldo . Todos reclamam de decepções e dificuldades . " É importante achar a solução específica para cada área " , destacou Sukhdev . Abandonar o hábito deixa seu corpo começar a cura , ressaltou Benjamin . Euriza Cavalcante , conta que na sua rua , os vizinhos se juntam para comprar a água . Abortamos a iniciativa e , naquele momento , só tínhamos uma opção : voltar para Sabratha , controlada por Kadafi . spa Manifestó que " para el FIDA , lo más importante es examinar cómo se puede canalizar este dinero para contribuir a la prosperidad de las zonas rurales " . Con 17 mil toneladas en el 2007 , 32 mil en el 2008 y 50 mil para este año , volumen do 9 nde casi la mitad está sustentado en el arroz popular . El encargado de abrir este ciclo fue nada menos que Yo - Yo Ma , el más extraordinario chelista de las últimas décadas y uno de los artistas más sublimes del panorama de la música académica internacional . Cattaneo hará lo propio desde su residencia en Yerba Buena . Ronaldinho Gaúcho fue convocado de nuevo a la selección de fútbol Brasil para el amistoso del lunes contra Ghana en Londres . Yo no podía quedarme sentado si faltan carreteras e infraestructura . Incluso la gente de las fronteras viene a realizar sus compras en la ciudad ” , señaló Carlos Palombo , quien dijo que las ventas no pasan en este caso sólo por un evento en particular como la Copa América . Fabián ( Ríos ) conoce a los productores y encontró la forma de ayudarlos con la Subsecretaría . Senado votó 16 venias para entes Comparta esta noticia en su red social favorita ! En fin , ¡¡ que demócratas que tenemos en nuestras instituciones ! Quisimos administrar el 1 - 0 , pero debimos hacer hecho el segundo gol ” señaló . Al grupo Uno de Vila y Manzano , por ejemplo , no le interesa el periodismo sino usar al periodismo , yo los conozco . PPT critica falta de espacios para discutir en el oficialismo Caracas . Los partidos tuvieron su tiempo y su oportunidad para argumentar y para hacer de la política un tiempo de consenso y acuerdo , pero ya se ve que si el de enfrente no acepta mi verdad , no habrá acuerdo posible . Por su parte , el asesor técnico de las cooperativas , arquitecto Gustavo Urquijo , al brindar mayores de talles sobre el servicio que realizarán los cooperativistas , explicó que “ son dos grupos de 3 Cooperativas de 48 integrantes en total . Hubo una correcta capacidad de análisis . En el avión , el Papa hizo referencia a los abusos sexuales a menores por parte de miembros de la Iglesia , diciendo a los periodistas : “ La Iglesia ha sido herida por nuestros pecados ” . El PRI pierde por primera vez la Presidencia de la República . “ Sería importante conocer que marranito tronaron para poder realizar un evento así en el zócalo capitalino , por lo tanto se debe informar de donde salió dicho recurso ” , sentenció Gómez del Campo . En la acción del Manzano , en los prolegómenos de la Campaña de Lima , se empleó el Cazadores del Rímac , que bien pudo haber concurrido a la Campaña de Tacna . fra Huit ans après avoir quitté Amsterdam , Ahmed Hossam Mido va à nouveau porter les couleurs de l ' Ajax . Positive au dessus de 3500 PTS avec comme objectif 3640 PTS . Paradoxalement , l ' Irlande espère que ces annonces fracassantes aideront à calmer durablement les inquiétudes sur sa solvabilité à long terme , et les craintes récurrentes d ' un appel à l ' aide de l ' Union européenne ou du FMI . Ce geste doit aussi être réalisé à plusieurs reprises au cours de la préparation des repas : à chaque fois en fait que vous passez d ´ un aliment à l ´ autre . La forte hausse des prix des produits de base agricoles et des denrées alimentaires intervenues en 2007 et au premier semestre 2008 , a provoqué un « choc » dans le monde entier . Retour au premier plan pour Red Bull avec la victoire finale de Sebastian Vettel lors du Grand Prix d⠀ ™ Europe à Valence . Elle bénéficie du statut juridique et fiscal le plus favorable qui existe en France . Le délai est maintenant d ' une à deux semaines . Par contre , le hic , c ' est que Kovalchuk pourra , s ' il le décide , choisir lui - même une équipe , celle qui lui présentera les meilleures conditions de travail . Les réalisations de Pandev ( 6 e ) , Samuel ( 20 e ) et Milito ( 47 e ) n ' ont laissé aucune chance aux Sardes . Différents exposants de sport connexes au nautisme seront aussi présents . Ce serait malhonnête cependant dincriminer tout le parti pour ce beau gâchis , car la médiatisation de la crise est du seul fait de Koniba Sidibé . Avant cette rencontre , M . Webb était pourtant présenté comme l ' un des meilleurs arbitres européens , si ce n ' est le meilleur . Jétais peu attirée par la recherche et par lenseignement , pensant que mes capacités se trouvaient plutôt dans la création et le spectacle . Or , l ' île ne compte aujourd ' hui qu ' une seule exploitation agricole , de surcroît bio . Le randonneur a pu compter sur une commandite des Vêtements Chlorophylle en prévision de ce voyage sur la route de Compostelle . En revanche , la droite s ’ est montrée divisée sur le sujet . Il n ´ y a pas ( encore ) de hiérarchie réelle en multicoques comme il y en a en monocoques ( domination des Anglo - saxons et des Néo - Zélandais ) et beaucoup vont probablement tenter leur chance dans ce monde encore méconnu . Habituellement , les collisions avec les chevreuils et les orignaux surviennent à l ' automne ou au printemps . Le maire de la commune de Saint - Jouin - Bruneval , François Auber , s ' est engagé sur la liste du PS . ita Se quello era il compito di Moreno a lui non si puo ' dire niente , la colpa e ' stata della Fifa " . Grazie all ' Italia è stato ricostruito un apparato giudiziario che ha superato quello rapido e brutale dei Taliban . Una sentenza che non tiene però conto dello stato di affezione dell ` animale , che pur essendo intestato al marito ha sempre vissuto con la signora Vittoria . 5 . La medicina omeopatica ha un largo seguito tra persone di cultura medio - alta . Un venerdi ' nero interrompe bruscamente una serie positiva che si protraeva da sei sedute consecutive . In merito alla prima frase si tratta di censura o di omissione , per essere leggeri , sicuramente dettata da fini di necessaria brevità per motivi redazionali . Non è cambiato niente , dice Rosella . Deboli le indicazioni che arrivano dall ' opposta sponda dell ' Atlantico dove si dovrebbe assistere ad un avvio cedente . In sostanza il gap da recuperare è minore ma l ' avversario è più forteLa variabile incalcolabile è la fame che Valentino a 31 anni ha ancora : è la sua linfa vitale , se fosse rimasto in Yamaha le avrebbe prese , ecco perchè è passato in Ducati . Barone : E va bene , che cazzo me ne frega . stacco un assegno mio di 500 euro intestato a chi ? Secondo gli investigatori , nonostante negli stessi incendi sia stato utilizzato uno pneumatico come mezzo per appiccare il fuoco , non ci sarebbe nessun legame tra i due casi . Che non è solo amare l ’ ambiente selvaggio e rispettarlo , ma prendere coscienza che la natura allo stato primordiale è indispensabile a tutti . Gli elettori che si recheranno a votare sono 1 . 087 . 085 ; potranno votare anche coloro i quali non hanno votato al primo turno . La Fiom ritiene impossibile firmarlo perché " contiene profili di illegittimità " . Con me gli attaccanti si sono sempre esaltati : vedi Amoruso , Bianchi , Bellucci , ma a me non interessa chi sta nell ' area ma devono essercene almeno tre . Un operaio è morto e altri quattro sono rimasti gravemente feriti nello scoppio verificatosi in una cisterna dello stabilimento farmaceutico Sanofi - Aventis , nell ' area industriale di Brindisi . Tempestivo l ' intervento dei carabinieri della Stazione , guidati dal maresciallo Davide Marcucci , che dopo aver rassicurato il malcapitato , ancora atterrito , hanno verificato la messa a soqquadro dello studio della guardia medica . La storiella del bottino nascosto è stata spifferata dal compagno di cella di Bernie al New York Post , il tabloid di Rupert Murdoch informatissimo sulle sue avventure . Senza Argentina e Uruguay , con la Germania hitleriana che aveva assorbito l ' Austria ( ma perse con la Svizzera ) . E gli unici a gioirne saranno i numismatici . pob Serão disputadas quatro fases . Depois podem usar de papel de rascunho - – ou até queimar . O painel , em policarbonato leitoso , precisa ocultar a visão dos caixas . Aparece regional , estadual e nacionalmente por ser explícito ! Movimento onde a leitura foi mais importante do que a escritura . Astral de grande sintonia com a pessoa amada e amigos . " Mais cedo , ao chegar ao Congresso , o presidente do Senado , Garibaldi Alves ( PMDB - RN ) , reafirmou seu otimismo em relação à chegada da matéria em plenário , já nesta quarta - feira , para votação . São ao todo 236 funcionários . Para os membros daComissão Especial , as ações de criminalização e identificaçãode integrantes de movimentos sociais são um atentado ao EstadoDemocrático de Direito . Os intérpretes de " Violas e canções " , " Viola quebrada " , " Luar do sertão " e " Pingo d ' água " , entre outras , fizeram apresentações nos Estados Unidos . Segundo ele , o Judiciário , o Ministério Público e os advogados não podem deixar que essa eleição se torne um campo de batalha . Filho de pequenos agricultores estudou na Escola Municipal José Bonifácio e trabalhou com a família até os 24 anos . Serão construídos 28 laboratórios , além de três salas técnicas . Três minutos depois , Fred aproveitou rebote do goleiro são - paulino e ampliou a vantagem carioca . ” Estudante chega à Unilago : calor favorece uso de trajes curtos Calor favorece trajes curtos Com temperatura média de 30 graus em Rio Preto , o calor é apontado pelas universitárias como o principal motivo do uso dos decotes e roupas curtas . Os anúncios de lançamentos imobiliários procuravam ressaltar que os condomínios residenciais eram locais seguros , com áreas de lazer próprias e sistemas avançados de segurança que poderiam garantir tranquilidade ao morador . Esta mudança de comportamento está mais evidente a cada campeonato . Conforme Clóvis , a categoria foi precipitada . Libra - Bom dia pra sentar na mesa de negociações com sócios , clientes e parceiros e cobrar dívidas e pendências , promessas que lhe foram feitas , mas até agora não foram cumpridas . Mesmo se as legendas não coligarem , o pedetista promete ficar na disputa . ita Lo stesso ruolo della donna ha un risvolto completamente diverso nel mondo del lavoro e nell & rsquo ; utilizzo del tempo libero . Paradossalmente è vero , ma si chiama stato di polizia , è come tagliarsi le balle per non far godere la moglie tro a .. Era la voce della Madonna . Nel Paese è ancora vivo il ricordo delle alluvioni di primavera , quando morirono una ventina di persone . Ma la notizia , in questo caso scritta con un collage di mail dei lettori , ci sta tutta , poiché Haiti non è dietro l & rsquo ; angolo , non è a tre , sei o due ore di macchina , e quel paese spaventa per le immagini che vengono trasmesse . In compenso , in Africa del nord , in particolare Marocco , Egitto e Algeria , il virus " resta attivo " , secondo l ' Oms . " Questo è sicuramente vero " commenta Paolucci che aggiunge : " un grande maestro del restauro , Giovanni Urbani , diceva che tra l ' arte antica e l ' arte moderna esiste di sicuro una grande discontinuità , una frattura . I dati sono stati elaborati dallo " Studio Giovanelli Partners " di Trento su incarico dell ´ Assessorato provinciale al commercio . Il 14 luglio 2009 muore il primo caporal maggiore Alessandro Di Lisio , 25 anni , originario di Campobasso , in conseguenza della deflagrazione di un ordigno posizionato lungo la strada a 50 km a nord est di Farah . Usa : Obama , disoccupazione e ' un problema enorme - Yahoo ! La campagna Alberto Guardiani Sport à ¨ pianificata direttamente dall⠀ ™ azienda . Roma , 5 nov . ( Apcom ) - Umberto Veronesi è il nuovo presidente del consiglio direttivo dell ' Agenzia per la sicurezza nucleare . Il dato emerge da una ricerca Wincor Nixdorf , realizzata in collaborazione con Doxa . « I punti oscuri di questa vicenda - chiosa il legale di Speziale - sono rimasti tali » . Inoltre è prevista anche una & lsquo ; pedalata tricolore ' ( è consigliata una tenuta rosso - bianca - verde ) alle 14 , 15 al parco urbano di Forlì . I corsi , dopo un nuovo minimo a ridosso delle 21480 , invertono rotta e ritornano verso le 21900 . L ' autore del volume , il banchiere cattolico Bazoli , ha aggiunto che " la Chiesa accettando il capitalismo non ha rinunciato a criticare le ingiustizie e gli squilibri " . – ha aggiunto il Direttore della Coldiretti di Savona – Gli agricoltori sono pagati troppo poco mentre i loro prodotti sono venduti ad un prezzo maggiorato in media di cinque volte il prezzo originale ” . Quali le azioni che le istituzioni devono attuare , per favorirne l ' utilizzo e la crescita e lo sviluppo delle imprese sociali ? Il primo tempo ha visto le due squadre cercare costantemente la soluzione che avrebbe potuto portare al punto del vantaggio , ma sovente invano . spa Esto es el derech CLATRD ( ARR OB A ) HOTMAIL ( PUN TO ) COM ( E S PI E ) ( C ELU L AR ) ( V EN TA ) ( CL AVE S ) puede ser muy provechosa para quien lo apoya . “ Estoy muy feliz , sobre todo después de haberme enterado que su carrera viene creciendo y que en Argentina , Uruguay y Paraguay ya es un territorio MR . Su hermana Arlene , en cambio , es tímida , lo que no impide que antes de los veinte ya brille desnudándose sobre el escenario como Raquel Evans . El candidato subrayó en su encuentro con el obispo Alonso Garza Treviño s que está en contra de las adopciones de parejas del mismo sexo , además de estar en contra del aborto . El rock convocó a decenas de jóvenes , como Mauricio Montero , de 23 años , y su hermana Marilyn , de 9 años . " Existe un acuerdo entre los jueces de izquierdas para dar la vuelta a los resultados de las elecciones , quieren eliminar a quien ha sido elegido y esto es como una losa sobre nuestro sistema democrático " , dice . Por los Cardenales , los dominicanos Furcal de 5 - 1 con una anotada , Pujols de 5 - 1 con una anotada y una impulsada . No hay un capítulo de propiedad intelectual , pero no necesitamos abundar sobre los graves conflictos que se han presentado no sólo en el tema del pisco , sino también en el caso de las paltas , aceitunas , orégano , chirimoya , la papa . Y esos hechos fueron el sábado por la noche , pero hasta ayer , al filo de las 10 de la mañana , cuando presentaron la denuncia , levantando la investigación 69 Ixhua / 2010 , por lo que esta quincena no podrán cobrar los empleados .. Binner hizo hincapié en el campo , prometió el 82 % móvil y habló de inseguridad . No soy uno del 15 M , pero esto está llegando a unos límites que mi condición de ser humano me está diciendo que no se puede aguantar . “ Para la cultura no hay presupuesto . Lo dejan solo en una sala llena de bancos . Por los anfitriones , las conversaciones estarán presididas por el ministro de Relaciones Exteriores , S . M . Krishna . Fuentes de la Casa Blanca adelantaron este domingo a la cadena de televisión ABC que se espera que la demanda sea interpuesta en los próximos días . Zelaya fue recibido en el aeropuerto internacional " José Martí " de La Habana por el canciller cubano , Felipe Pérez Roque . " The cove " , en cambio , es una exigencia para los que conservan algo de humanidad . La droga ha sido comparada con el LSD y puede producir alucinaciones , paranoia severa , convulsiones , agresividad , aumento de la presión arterial e insuficiencia renal . Distintas alternativas de cierre de ventas . Además confió que por ese entonces se le hacía difícil escapar a la tentación de compartir momentos y mesas con amigos . fra On a beaucoup rappelé dans les médias le fait que le RLQ naisse cinq ans après la parution du Manifeste pour un Québec lucide . Certains affirment que la présidente par intérim " a été remplacée par le syndicaliste Lonsény Camara " . L ' exercice 2010 - 2011 débute sur une tendance toujours positive , a indiqué Laurent - Perrier . Les marchés d ' actions asiatiques sont pour la plupart en territoire négatif jeudi , les incertitudes économiques évoquées par le président de la Fed ayant alarmé les investisseurs . Pour cette édition , trois filles , au lieu de quatre annoncées initialement , défendront les couleurs algériennes . Berets rouge , moustache , chant de supporters de foot , grossièreté , tout y est . Le document comporte la photo dudit « Robi » , qui est désormais en Suisse pour aider la police . Un accès avec empreinte digitale et une chambre « pour les gardes du corps » vient agrémenter l ' opulence du lieu qui , en juillet , a été occupée tous les jours ! « Par ailleurs , le rythme des vacances pousse plutôt les gens à se parer de senteurs exotiques , de fruits tropicaux , vanille , coco , etc . , relève - t - elle . En effet , Maria Riesch avait 165 points de retard sur Lindsey Vonn alors qu⠀ ™ il restait deux courses . Ce serait prendre trop de risques " , a indiqué le coach des Rouge et Noir . Je ne crains rien du tout ! Jean - Bernard Bapst n ' a pas souvenir d ' une telle recommandation . « Ils m ’ ont dit que j ’ étais noté comme vendeur de drogue sur ma plaque » , avance - t - il . Il a fallu quun top model frôle le ridicule en boîtant lors de la Semaine de la mode à Londres pour lancer une amorce de débat dans le milieu de la mode . Le Wild a effacé un déficit de 3 - 1 en troisième période grâce à Martin Havlat et Andrew Brunette . Elle ne fait pas confiance aux gens . Sur ce tracé de haies assez coulant , Diamant de Beaufai semble en mesure de prendre une part active à l ' arrivée . Laspect social réside en un networking entre les institutions et associations diverses . On se calme encore un peu plus . spa Marcia si lo toma en serio y sale disparada a decírselo a Fernando . Por eso junto a Fidel , Raúl , la patria y el Socialismo , cada moronense coronado de victorias tiene en mente empeños aun mayores , caminos abruptos por recorrer y logros que cosechar en medio del esfuerzo y la decisión siempre de vencer . “ Queríamos hacer esto más terrenal , hacer que estas mujeres se sintieran reales , darles un pasado . El viaje a Sudáfrica ronda los 8 . 000 dólares . La señora esperó unas horas a un pariente , pues no tuvo valor para hacer el reconocimiento . Luego tuvo su primer programa de entrevistas - antes de cumplir los 18 años - con la producción “ Estelarísimo ” , espacio en el que interrogaba con gran efectividad a los protagonistas del mundo de la farándula , tanto de Puerto Rico como del exterior . Tras el desvanecimiento en el campo , las atenciones médicas y la intervención de una ambulancia no pudieron ayudarle . “ Al hombre lo golpearon hasta darle muerte . Era lo que correspondía hacer para responder a una designación que me privilegiaba y me honraba . De ese modo , se ubica a favor de quienes hasta ahora estaban enfrentados . El objetivo fue pedir la restitución a su trabajo del chofer del taxi 39 interno 23 , Guillermo Musicco , que desde hace 5 años trabaja en el ámbito de la empresa . Esto porque a unos días de que se emita la convocatoria , no hay claridad en cuanto a las reglas y pedirán que éstas no estén hechas para favorecer a un candidato . Ya no quedaban muchas agencias , además de que debido a su edad ya era difícil encontrar empleo y en el colmo de la desesperación recordó sus juegos infantiles . No podemos cometer ningún error . Lo mismo garantizó Chávez “ El único pacto que tengo es con el pueblo venezolano . Tambien queria hacer un pedido , ya estubieron trabajando en el barrio peruzzotti , de Pilar pero han dejado sin realizar varias calles de la zona , que harian falta que le den una solución . Equipos de rescate fueron enviados a la zona del incidente , dijo a CNN la rama regional del Ministerio de Emergencia de Rusia . Con el partido 3 – 2 a favor de Cuevas , el uruguayo levantó dos break point que tuvo Almagro para confirmar su servicio . “ Me causó asombro y perplejidad total , no entiendo lo que quiso decir , fue confuso . Blake Lively , estrella de la serie Gossip Girl Antes de su publicación se divulgó la próxima portada de la edición estadunidense de Vogue dedicada a las mejores vestidas de 2010 , siendo la ganadora de su conteo Blake Lively . ita Marco Giampaolo recita invece il mea culpa : " La partita l ' abbiamo un pò sottovalutata non prima del match ma durante . " Ho dichiarato pubblicamente , nella mia qualità di leader politico responsabile quindi di fronte agli elettori , che di questa All Iberian non conosco neppure l ' esistenza . " Ci hanno detto : ' ripartirete domani con questo aereo dopo che sarà stato riparato . Una sconfitta difficile da mandare giù per gli azzurri , che per oltre un ' ora hanno giocato alla pari , se non addirittura meglio della più blasonata formazione inglese . Dal monitoraggio di quotidianoenergia . it risulta che Api - Ip hanno tagliato di 0 , 3 centesimi la verde , a 1 , 401 euro al litro e di 0 , 5 centesimi il diesel a 1 , 264 euro al litro . COMO - Attimi di paura nel primo pomeriggio in via Milano davanti alla chiesa di San Bartolomeo dove , pochi minuti prima delle 15 , un ' autovettura si è ribaltata dopo un tamponamento con una Jeep svizzera . Ecco quanto evidenziato da Tutto Napoli . net : Trezeguet : Poco spazio per il transalpino nella Juventus , giocatore di qualità non cè che dire , ma sono un po scettico perché non credo rientrerebbe nei piani di De Laurentiis . Il Mondiale è alle spalle e Lionel Messi ha voglia di riscatto ed è pronto a ricominciare . L ’ intervento di Bernanke ha nuovamente spedito Wall Street in territorio negativo , con il Dow che in questo momento perde lo 0 , 25 % , lo S & P lo 0 , 91 % ed il Nasdaq è in rosso di 1 punto percentuale . SALERNO ( Reuters ) - Il presidente della Repubblica Giorgio Napolitano ha richiamato l ' attenzione sull ' importanza dello spessore morale e culturale dei politici , mezzo principale per trovare soluzioni condivise e non dettate da interessi personali . " Illesi i militari a bordo dell ` unico Lince colpito che ha resistito all ` onda d ` urto , riportando solo danni alla parte inferiore " , si legge nel comunicato diramato dal portavoce del contingente italiano . Ma soprattutto , il fallimento della seconda Repubblica è certificato dalle parole di Berlusconi , che dopo quasi 10 anni da presidente del Consiglio si dichiara impossibilitato a governare per colpa delle istituzioni che non è stato capace di riformare . Hanno già il taglio dei celebri reportage a fumetti che realizzerà anni dopo ( Palestina e Goradze , area protetta ) , le prime prove a fumetti in stile underground di Joe Sacco . Nel pomeriggio poi a Contrada Fabiana di Rosarno un uomo minaccia con la pistola una quindicina di extracomunitari . Le due figlie si vanno dunque ad aggiungere al primogenito , Ronald , nato nel 2000 dal matrimonio con Milene Domingues e legato alla nuova sorella da una curiosa coincidenza . Roma , 9 ago . ( Apcom ) - " Mentre il governo è impegnato a tutelare la privacy dei mafiosi con la legge bavaglio , il ministro Gelmini viola la privacy dei minori istituendo l ' Anagrafe nazionale degli studenti per combattere l ' abbandono scolastico . Anche se per il 95 % del lavoro informatico non sono necessario grosse competenze matematiche , è però necessario avere un testa matematica .. ossia è necessaria una certa capacità nella logica e nel ragionamento astratto . Tra i nomi che circolano , per la poltrona , ci sono quelli di Sergio Schena e di Marco Vicentini , già candidato alle elezioni europee . L ' ex caporale era arrivato in Cile nel 1960 dove , con almeno 300 famiglie di origine tedesca , fondà ² due anni pià ¹ tardi la Colonia Dignidad , nota anche come " Villa Baviera " nella quale impose una rigorosa disciplina . Che consente di avere una sola postazione ovunque , una sincronizzazione completa tra le postazioni , una serie di applicazioni da installare ed una esperienza completamente ritagliata attorno all ’ utente utilizzatore . spa Las efectuadas por el defensor del Pueblo de la Nación y la Unión de Usuarios y Consumidores podrían evitar que el aumento siga vigente . La primera indicación de ello vino de informes procedentes de Ginebra , de que el Director General de la OMC elaboraría él mismo el borrador del texto , que llevaría a Hong Kong " bajo su propia responsabilidad " . El presentador del programa , Óscar López , entrevista al escritor , dramaturgo y músico italiano Alessandro Baricco que presenta su nuevo libro " Emaús " . La última vez , en 2004 , España se impuso en Las Palmas de Gran Canaria por 3 - 2 con dos tantos de Raúl Tamudo y uno de Fernando Morientes . 4 . Si tiene que calentar la comida , incluya una lata de " sterno '' . La obra es dirigida por Jerónimo F . Montivero y cuenta con la actuación del mismo Montivero y Patricia Maldonado . Sus soldados comenzaron a rendirse y sumarse a nuestro avance . En el sector Vivienda hay muy mala atención al público ¿ Qué es lo más preocupante para este sector ? El corte no incluirá la bocacalle de Juan B Justo y España por lo que habrá normal circulación por esta ultima arteria . Así mismo , destacó el triunfo de Morales como “ presidente de toda Bolivia ” a quien felicitó por haberle hecho “ un baile ” a toda la oligarquía al ganar con el 63 % de respaldo los comicios en la nación andina . Hospital de Jalapa no tiene sala de cuidados intensivos . Gran parte de la clase media , alta y empresarios rechaza el constante intervencionismo estatal de Chávez , el crecimiento del aparato de Gobierno y las masivas nacionalizaciones . DE MOMENTO La Tasa de Seguridad no afectará a la clase media ni baja , “ ni siquiera el combustible lo van a tocar por el momento ” , declaró el diputado , Mauricio Oliva . El resultado podría haber sido para cualquiera de los dos . Señalan que fue alrededor de las cuatro de la mañana cuando a - gentes atendieron el reporte de Sandra Gutierrez , de 32 años , y encargada de admisión en el área de urgencias del citado hospital . Los propios policías son víctimas de la inseguridad que va ganando terreno en los últimos tiempos . “ No lo esperábamos , nos sorprendió . El 70 % de las reclusas sufren adicciones El Censo Nacional de Reclusas reveló que hay 624 presas en todo el país : el 40 . 35 % ingresó por venta de estupefacientes . “ Por ende , si una persona de 29 años que está casada y tiene dos hijos años entra acá , tiene que pensar que va a mantener a su familia con 18 . 000 pesos ” , señaló . “ Hemos tenido una respuesta abrumadora con información de calidad que ha llegado a los detectives y los ha mantenido muy ocupados ” , dijo Parker . ita Altrimenti i ragazzi a casa si interrogano , in qualche caso cercando informazioni senza il filtro degli educatori » . Brillano anche A 2 a ( + 4 % ) , Enel ( + 3 , 9 % ) e Telecom ( + 3 , 6 % ) . Davanti Fabbro e Meloni , visto che Cipriani non è ancora a posto fisicamente ; mancherà anche capitan Zamboni , alle prese con problemi muscolari . Gli operai Fiom - Cgil lasciano il sindacato per chiedere aiuto al PDL in una vertenza contro il ‘ padrone ’ che non paga gli arretrati e trattiene il TFR . Pesa invece sulle borse asiatiche l ' incertezza politica nipponica . In Italia manca un piano nazionale per la manutenzione e la prevenzione del dissesto , così come richiesto dall ´ Associazione nazionale bonifiche e irrigazione ( Anbi ) . Stoccarda , 25 gen . - ( Adnkronos ) - '' Abbiamo un obiettivo chiaro . Partito il 6 ottobre 2009 da Pesaro all & rsquo ; insegna del tutto esaurito , è in corso la seconda tranche del tour che vede il Blasco protagonista sui palchi dei palazzetti italiani ed europei . L ' Ausl di Forlì ha , infatti , predisposto un apposito programma per facilitare l ' accesso alle prestazioni specialistiche e ridurre , così , i tempi di attesa , puntando ai 30 giorni per le visite programmabili richiesti dalla Regione . Presentato nel novembre scorso , Chrome Os e ' incentrato su internet . Il perno dell ’ inchiesta è un impianto - messo sotto sequestro lo scorso febbraio - aperto a Chieri ( To ) alcuni anni fa . Dieci tappe individuano , per ogni decennio , gli aspetti più caratteristici del trasporto pubblico di Parma . Stando alla consueta rilevazione della ' Staffetta Quotidiana ' , tutte le compagnie hanno ritoccato i listini al rialzo seguendo la mossa di ieri di Eni : si registrano aumenti tra 0 , 5 e 3 centesimi sulla benzina e tra 0 , 5 e 2 , 5 centesimi sul gasolio . Campionamenti positivi quest ' anno per il Trasimeno , per il quale la quinta Goletta dei laghi - Cigno Azzurro di Legambiente non ha evidenziato alcuna criticità . Roma , 7 ago . ( Apcom ) - " Fini e Casini possono essere più o meno simpatici ma in questo momento sono essenziali per liberarci a casa Berlusconi " . La pronuncia 137 / 1 / 10 della commissione tributaria di Mantova ha decretato la nullità dell ' avviso di accertamento emesso dall ' agenzia delle Entrate basato su segnalazioni provenienti dall ' estero . I romeni hanno accorciato le distanze al 33 ' con Rada . San Francesco d ´ Assisi invitava a contemplare il grande Disegno di DIO inciso sul grande Tappeto dell ´ Universo riccamente impreziosito con le vite di ogni singola persona . Zonda contro Lambo : ladri contro polizia ? L ' ondata di gelo che sta flagellando l ' Inghilterra ha imposto il rinvio di cinque gare in Premier League : Hull City - Chelsea , Burnley - Stoke , Fulham - Portsmouth , Sunderland - Bolton e il posticipo domenicale tra Liverpool e Tottenham ad Anfield . ita Il nemico maggiore questa volta sarà rappresentato dal perfido Yaz ( JemaineClement ) che vuole a tutti i costi uccidere Kay . Ciao Ballero sarà in edicola a partire da sabato 20 febbraio per un mese a ⠂ ¬ 9 . 90 oltre al prezzo del quotidiano . Con IE 9 ancora in beta release , è facile supporre la possibilità di vedere il nuovo Bing in approssimativa concomitanza con lapprodo alla versione ufficiale del browser . Quindi , le ho intestato diverse case quando c ' è stato il fallimento del Perugia " . Basata sulla versione a passo lungo ( non ancora presente nei nostri listini ) , monta il motore a benzina base 5 . 0 V 8 da 385 CV abbinato ad un cambio automatico a sei rapporti . Kerbala , 8 nov . ( Apcom ) - Tra le vittime dell ' attentato ci sono anche pellegrini iraniani , hanno indicato fonti mediche locali . A meno che non si voglia mettere il tram su un ascensore e calarlo nel sottosuolo nella zona della stazione di S . M . Novella " , ironizza . I finanziamenti governativi per progetti ecologici sono troppo frammentati e quindi dispersivi , secondo Wigley : « L ' obiettivo della Green investment bank è migliorare l ' efficienza con cui il denaro viene investito » . Il tecnico per la prossima stagione dovrà infatti avere carattere e esperienza , ma soprattutto contenere l ' irrequietezza di alcuni . Al raggiungimento della soglia di 500 MB , prevista dai piani , potrai continuare a navigare gratuitamente alla velocità massima di 64 kbps . Manuela Camagni , collaboratrice del Papa , era una delle " Memores Domini " dell ' appartamento pontificio ed è morta all ' alba di ieri mercoledì 24 novembre , a Roma , in seguito alle gravissime ferite riportate in un incidente stradale . Le principali aziende interessate alle altre parti del progetto devono " in principio " essere designate prima dell ' estate , secondo una fonte . ' Maroni si prepara a respingere i meridionali ? ' . Non sono preoccu pato . " Capisco che si tratta di un ' atto di Dio ' - ha detto un anziano viaggiatore in attesa di volare a Dublino - ma questo mi ha tolto dieci anni di vita " . Il farmaco va assunto entro i 49 giorni dall ' ultima mestruazione . Dei 71 feriti , 51 hanno già lasciato l ' ospedale di Fes . Lino Lardo , sta già ridiscutendo l ' estensione del contratto con la Virtus ? Come siamo caduti in bassoma la Di Pietro riuscirà mai a fare una gara decente ? Altri sbocchi non se ne vedono ancorchè a fronte degli impegni finanziari da sostenere subito o sino al prossimo giugno . spa Otras restricciones pueden aplicar también . La Semana de la Juventud es una serie de actividades que culminarán el 20 de agosto con la “ Carrera 5 K INJU – Ser joven no es delito ” . La ratificación del protocolo beneficiará el servicio postal en China bajo los cambios globales de la economía y la tecnología , y promoverá la cooperación entre China y otros países y organizaciones , agrega el comunicado . Ricky Martin Elite a todas partes con Ricky ! Asimismo , el mundo en desarrollo necesita energías renovables . Más tarde , ambos , con sus respectivas esposas , comerán en privado en la capital del estado y de ahí , si el tiempo cronológico y el tiempo climático lo permiten , irán a tomar un café al puerto de Veracruz . Nuevo modelo con Android de Google y con soporte para Flash , algo que todavía el iPhone carece . " La Fiesta del Chamamé y los carnavales significan la migración de gente de otras provincias y países , como también la cantidad de correntinos que viajan a las zonas donde hay dengue ” , explicó . Como dije en mi muro de facebook , ya cargo con este apellido que confunde como " alsogarísta " . Esta vez la reconocida frase fue dirigida hacia la animadora Vivi Kreutzberger en el programa " A tu día le falta Aldo " , conducido por Aldo Schiappacasse . La transacción , realizada completamente en acciones , llevó a Genco a cambiar su nombre por New Silvermex . Sin embargo , la mayoría sabía exactamente el significado de la palabra y admitía que el cantinflear es algo inevitable . La intención es que no prospere la constitución de una fundación ( una figura de carácter privada ) que escapará a los controles de la Ley de contabilidad 2 . 303 . Si yo jugara hoy no podría ni tocar la pelota . En el documento se dan pautas para el acercamiento a la probable víctima de secuestro , la captura , la retirada , el cautiverio , las negociaciones , el cobro y la liberación . Suficiente para que Maradona hiciera saber su bronca y , luego de dos horas , saliera de la cumbre con cara de pocos amigos . El iPad se convirtió en todo un éxito , creando la categoría de los Tablet PC y desatando una oleada de productos similares que están empezando a llegar al mercado . Pero el lugar de la oposición global no está hoy a izquierda sino a la derecha del Gobierno . Al menos , en la denuncia que realizó en la Oficina Fiscal Nº 9 no consta que los ladrones huyeron en moto . Este jueves se desarrolló en Nueve de Julio .. ita " Ora questa squadra può fare il salto di qualità " . Il kaiser di Kerpen , che dovrebbe tornare in pista mercoledì per la terza e ultima giornata , si è concesso un " turno di riposo " , girando per il paddock e andando anche a mangiare con i suoi vecchi meccanici della Ferrari un buon piatto di pasta . Lo rivela ‘ Chi ’ nel numero in edicola domani . Ovvero , le applicazioni che determinano la posizione geografica del giocatore e permettono di interagire con il mondo reale . Maxi operazione antimafia della Squadra Mobile di Palermo che ha eseguito 19 ordinanze di custodia cautelare in carcere , per persone accusate a vario titolo di associazione mafiosa , estorsione , riciclaggio ed interposizione fittizia di beni . SPB 510 : chiusura totale alla circolazione dei veicoli dal km 8 + 800 ( svincolo Passirano , località Bettole ) fino all ' innesto della SP 71 , a partire da un ' ora prima del passaggio del primo ciclista secondo la media più veloce della cronotabella . Chiunque è in grado di leggere e verificare " . Schierato in GP 2 Series nel 2005 e nel 2006 nell ' ambito del programma di Development Renault , il promettente " Pechito " è stato tester della squadra francese in F 1 per il 2006 . Negli ultimi due anni ha vinto a mani basse il campionato Turismo 2000 . I rappresentanti dei lavoratori , che per il 2010 percepiranno un sussidio minimo di 400 euro mensili , hanno sollecitato un & rsquo ; integrazione al reddito e misure di reinserimento occupazionale . Vittoria del Deportivo La Coruna sullo Xerez , Maiorca - Siviglia è in corso dalle 22 . " Il problema - ha sottolineato - non è un contratto , non sarà mai un contratto . ROMA - Una festa di compleanno tra romeni si e ' trasformata in una violenta rissa finche ' la situazione non e ' degenerata ed uno dei partecipanti ha estratto il coltello ferendo il rivale ed uccidendolo . Posso pagare il numero arretrato con carta di credito ? John Bellinger III , consigliere legale dell ' ex segretario di Stato Condoleeza Rice ha bollato come « sfortunato » lo spot dell ' associazione . Un settore in enorme crescita che ha garantito nel 2009 un fatturato di 34 miliardi di euro , distribuiti principalmente tra agroenergie ( 34 , 2 energia solare ( 41 , 6 % ) ed energia eolica ( 18 , 9 % ) . Sabato 11 il percorso è praticabile dalle 8 , 30 alle 17 e domenica 12 dalle 9 alle 17 . Il costo dell ' ingresso è fissato in 6 euro per gli adulti , 3 euro per i ragazzi fino a 13 anni . Secondo il consulente Sidney Jones dell ' International Crisis Group per il sudest asiatico , accorpare tre diverse organizzazioni potrebbe costituire un problema . Dalle specifiche tecniche diffuse si apprende che la soluzione AMD avrà processore AMD Athlon Neo K 125 o AMD Athlon Neo X 2 K 325 in abbinamento a chipset AMD RS 880 MN . L ’ obiettivo è di allungare la lista delle istituzioni che aderiscono al progetto : si calcola che , entro la prossima settimana , i 34 aderenti potranno già essere diventati una quarantina . Continua a leggere questa notizia ( ASCA ) - Roma , 30 set - '' La Edizioni Ciarrapico srl e ' onorata di poter diffondere in omaggio da domani i titoli dalla stessa pubblicati a favore della storia d ' Israele e della causa ebraica . spa Por otra parte , Rodríguez aseveró que los concejales " quedaron de acuerdo porque es necesario endurecer las penas , para así lograr que dejen andar los truchos " . En realidad no es para siete pasajeros ya que la última fila es algo reducida y aunque seis personas podrán hacer viajes largos sin problemas , para aprovechar lo mejor que tiene esta camioneta hay que sacrificar por completo la tercera fila . Fue sentido con una intensidad de grado VIII en la escala de Mercalli , y afectó los asentamientos de la isla y varias localidades más al norte , como la capital de la Provincia de Santa Cruz , Río Gallegos . El modelo Rubin - Magistrados no tiene cambios en este sentido . Si hubiera que calificar por los intentos de seducción , el promedio de edad de los pasajeros parisinos que se encandilan en el metro va de los dieciocho a los veinticinco años . Le repito la otra pregunta que no me ha contestado : Si aceptas el proyecto de unidad nacional imperial de los paisos catalans , fundamentado en la lengua , es decir : un idioma : una nación . Para eso , para acaparar las miradas en el viejo continente , Boca deberá imitar y tomar como ejemplo la primera gira que hizo el club , allá por 1925 , en lo que fue la primera travesía de un equipo argentino en Europa . Pues lo mismo con la discriminación positiva de genero , solo se trata de que asumáis ideológicamente lo que sois , aunque solo sea para clarificar el debate . Harán cortes de rutas y de avenidades de manera simbólica . Es muy respetable , yo lo admiró cada vez más , es un artista completísimo y no tengo más que decir " . También expresó su honda preocupación por los desmanes que ocurrieron durante esta semana en diversas escuelas públicas del país , motivados por pleitos entre pandillas . Sin mencionar las regulaciones ambientales que plantea la legislación sancionada la semana pasada en el Legislativo , Chicaiza señaló que están en peligro las fuentes de agua del país . Para eliminar la grasa de los glúteos hace ejercicios aeróbicos y para reafirmar añade ejercicios de musculatura . Panagulis fue asesinado en Atenas en 1976 , y Fallaci le dedicó su libro " Un hombre " . A Grecia la están empujando a salir del euro y si eso sucede el efecto dominó puede ser inmediato . Para Brines ( Oliva , Valencia , 1932 ) superviviente de la llamada generación española de los 50 , junto con Rafael Caballero Bonald , la obra de Lorca que más le ha conmocionado es el “ Llanto por Ignacio Sánchez Mejías ” . La mujer , de acuerdo con lo informado por el Servicio Médico Forense , tenía entre 20 y 25 años de edad y medía 1 . 60 metros de estatura . Belasteguin y Díaz se anotaron el tie break de la segunda entrega y escribieron el principio del fin para Lima y Mieres , que notaron el tremendo golpe anímico y en el set que cerró el duelo apenas pudieron plantar batalla . Por lo pronto , la revaluación reduce las tensiones crecientes contra China y la amenaza de sanciones . Como diría el intendente Pulti en otro de sus actos proselitistas , “ el aplauso es fácil cuando son todos amigos ” y esos gestos no faltaron a todo momento de las alocuciones . spa Jesús conoce el rostro de cada uno de los peregrinos y peregrinas que estamos aquí , buscando , con San Cayetano , justicia , pan y trabajo . Con la sanción de la Ley 26 . 061 se plantea la necesidad de efectuar un análisis acerca de las funciones posee el Defensor de Menores e Incapaces , en el actual diseño que presenta la Ley Orgánica del Ministerio Público . La caravana , compuesta por cientos de vehículos en muy mal estado , avanza lentamente por el desierto . La edición especial de cinco discos incluye comentarios de audio de los actores , guionistas y directores . La visita salió rápido de contragolpe y Daniel Montenegro habilitó a Danilo Gerlo , quien se había desenganchado por la derecha a toda velocidad y al ingresar al área sacó el tiro cruzado que se transformó en el 3 - 1 . Durante el transcurso de la madrugada , especialistas del Hospital Universitario , extrajeron la bala de la cabeza de la pequeña Alejandra del Ángel del Ángel , quien es reportada grave y se mantiene en el área de cuidados intensivos del nosocomio . Portman también protagoniza la próxima comedia romántica de Iván Reitman , " No Strings Attached " . La asociación califica la situación como la peor desde ( . Al lugar asisten camiones hidrantes del destacamento de Bomberos Zapadores de la ciudad y otras unidades de localidades vecinas . Cuando se terminó la botella estaba reunido con mi familia , gozando y dando gracias a Dios con la mujer de mi juventud , brindando por el nuevo año que comienza , deseándonos todos . Además de los extranjeros Sergio Romo ( serpentinero , nacido en Brawley , California ) , y los guardabosques Elliot Johnson , Derrick White y Jason Dubois . Y ha recibido una serie de honores oficiales . Eso es parte de lo que hemos sostenido , no es violencia contra violencia , es la justicia que sí resuelve la violencia ” , expresó Narro . Ratificó el interés cubano en una solución pacífica y soberana , sin injerencia extranjera y respetando la unidad de la nación libia . El segundo partido de la primera jornada divisional de la Liga Americana lo protagonizan los Yanquis con los Tigres de Detroit , en la ciudad de los rascacielos . Un dato curioso es que Navarro es ex - esposo de la conejita y sex symbol , Carmen Electra , con quien también protagonizó el exitoso reality " Newlyweds " de la cadena MTV . Creo que son unos profesionales como la copa de un pino , pero discrepo absolutamente de la dirección política de TVE . Detienen a presunto homicida 18 años después del asesinato Domingo 21 de Agosto de 2011 09 : 50 México . Fuentes policiales aseguraron que el procedimiento fue realizado en una casa y en un galpón deshabitado de la calle Kiernan 992 , donde los vecinos aseguraron que vieron movimientos sospechosos durante el último fin de semana . Además , según supo Ultimas Noticias , se le ofrecerá un almuerzo en manifestación de agradecimiento por la visita . spa En una noche del mes de mayo sucesivo , salió desde Siauliai una procesión clandestina : muchachos y muchachas , rezando el rosario , llevaron a espaldas una cruz gigantesca . Sucedió en el contexto de una cena ritual con la que se conmemoraba el acontecimiento fundamental del pueblo de Israel : la liberación de la esclavitud de Egipto . Sería el principio de los ajustes de cuentas de Calderón con los ultras . Poco después creó su primera compañía de espectáculos y promociones , Showstoppers , y promocionó actos de R & B como James Brown , Aretha Franklin , Gladys Knight & the Pips , los Stylistics y los Chi - lites . La economía está en uno de sus mejores momentos y casi nadie quiere pensar ahora en cómo será la situación cuando no haya Es por eso que tampoco surgen preocupaciones por el futuro del acueducto Los Barreales . El ' eje del mal ' definido por Bush se completa con Irán y Corea del Norte . Desde hace cinco años crece sostenidamente la demanda de expertos TICs de las empresas nacionales y de las internacionales que eligen a la Argentina como subsede de sus actividades . La rubia está en pareja desde hace ocho meses con el empresaio Claudio Contardi , a quien conoce desde hace cinco años . Pero en todos los casos queda el rencor y la amargura de la gente que se siente humillada y maltratada . Por otra parte , Javier Ledesma también acordó su vinculación con la entidad paranaense . Las principales operaciones están ahora centradas en México y Argentina . Ya puedes volver a ver el último episodio de ' Sin tetas no hay paraíso ' . Nunca he aprendido a dibujar . Esta situación de crisis se presentó esta semana con el brote de fiebre aftosa en un establecimiento ganadero de Sargento Loma , en el departamento de San Pedro . Carbonell , dueño de una chacra en el paraje Ombucito , está acusado como cómplice primario en el secuestro de Christian . El Día de las Brujas trajo a Carlinhos Brown para la reapertura del Teatro de Verano , show que reunió a 3 . 500 personas , según datos oficiales . Un nuevo test desarrollado en Teherán revelará a las mujeres el límite de edad a partir del cual no podrán quedarse embarazadas , detalló el diario The Sunday Times . El suelo , por ejemplo . A las 11 , está previsto el inicio del acto central , con un desfile cívico militar que se desarrollará frente al edificio municipal , ubicado en Moreno y bulevar Lehman . Más » Damnificados tendrán que esperar por días los alimentos de la CNE La Comisión Nacional de Emergencias ( CNE ) , afirma que en los próximos días abastecerá totalmente los alberges con alimentos . spa El plantel dirigido por Almeyda arribó ayer a las 11 al aeropuerto internacional El Plumerillo luego de que el vuelo de Aerolíneas Argentinas sufriera una demora de 40 minutos en el Aeroparque . ¿ Tiene el mejor equipo de sonido , la última tecnología , pero aún así ni sabe usarlo ? Finalmente , entre los alojamientos presentarán su oferta : el Hotel Castillo Gorraiz Golf & Spa ; NH Hoteles ; Hoteles Hospederia Nuestra Señora del Villar ; Ruralsuite Tudela Resort . En la misma se informará sobre pagos de planes forestales , entre otros temas de interés para el sector . Sólo a finales del siglo XIX se generalizó el uso de lentes cilíndricos para la corrección del astigmatismo . 73 kilogramos de peso ( unas 145 libras ) , Marcelo el “ nuevo Roberto Carlos ” en su país se parece en contextura física al hombre que ha ocupado la banda lateral izquierda en Real Madrid en la última década . La División Roca de la Superintendencia de Seguridad Ferroviaria está en la mira por el caso . Lo fuerte del libro del periodista británico es la descripción del problema , los datos , especialmente los cualitativos . Al ser preguntado sobre si el conglomerado de medios que dirige se planteaba comprar Twitter , Murdoch respondió “ No ” , advirtiendo de que había que tener “ cuidado con invertir aquí ” . Otros galardones correspondieron a los periódicos El Imparcial ( Hermosillo ) , A . M . ( León ) , Ovaciones ( DF ) , y Mural ( Guadalajara ) , así como Televisa Chihuahua , TV UNAM y la revista Emeequis . `` Esta es la primera prueba de un nacimiento vivo en un plesiosauro , un hallazgo emocionante '' , afirmó la profesora de geología Judy Massare , de la Universidad Estatal de Nueva York en Brockport , que no formó parte del equipo de investigación . Si es panista o perredista pasa lo mismo . Ni aun así se le gana a la voluntad de vida y de justicia que las organizaciones populares seguimos reactivando y que vamos a seguir haciendo crecer : La lucha por otro mundo sigue viva . Durante las protestas , no siempre pacíficas , al menos murieron 302 víctimas mortales , según los datos preliminares de una investigación a cargo de la ONG Human Rights Watch . Hasta el momento , la empresa contratista ha preservado la obra ejecutada en condiciones idóneas para la continuidad , ya sea del proyecto original o de los alternativos . La Samsung Galaxy Tabs 10 . 1 tiene un peso de 599 gramos y un grosor de unos 10 , 9 milímetros . Nosotros estábamos en La Plata , una ciudad de mucho gorilismo , muy radical . Dicho esto , admitió que el reto que afrontan sus homólogos europeos es enorme , porque deben resolver " muchos problemas a la vez " . Mientras la realidad de violencia no cambie , y el gobierno federal ya se ha comprometido a que lo hará en el corto plazo , la propaganda seguirá siendo ola que choque diariamente con el acantilado de la realidad . La prensa venezolana publica el anuncio del presidente , Hugo Chávez Frías , de realizar el referéndum que permita su reelección indefinida para el próximo mes de enero de 2009 . ita Un titolo che i Lugano Tigers avevano conquistato nel 2005 / 2006 ( nella storia questo è il settimo ) , giungendo poi secondi nei due anni successivi , e che premia una stagione ricca di emozioni e una squadra forte e compatta . Dopo che la societa ' aveva giudicato gravi le dichiarazioni di Kaladze , il georgiano si e ' scusato parlando di uno sfogo dettato dal nervosismo . Ha mai pensato di non arrivare in tempo ? Ma non è l ' unica ricerca su cui si sta concentrando la società . " Mai visto né conosciuto " . MILANO , 29 LUG - I due giganti delle scommesse on - line PartyGaming e Bwin si fondono per creare il piu ' grande operatore del gioco on - line al mondo . Euro in recupero in apertura di contrattazioni sul mercato europeo . Gli esperti del telefono amico hanno esaminato 394 casi e offerto consigli ad altre 91 persone nel periodo dal 29 marzo al primo aprile . Non importa se sia personaggio o meno . 31 della legge urbanistica n . 1150 del 1942 come sostituito dall ' art . Se la vostra carta di credito o password iTunes è stata rubata e usata vi raccomandiamo di contattare il vostro istituto di credito e chiedere di cancellare la carta e richiedere un rimborso per transazioni non autorizzate . L & rsquo ; approvazione da parte del Consiglio comunale della nostra proposta di rendere il servizio autobus urbani gratuito . Questa mattina il sostituto procuratore Maria Chiara Paolucci ha nominato il perito che dovrà svolgere gli accertamenti tecnici del caso sui velivoli . Ero molto giovane e per coinvolgere il pubblico avevamo affisso dei volantini sulle porte delle sale " ricorda Soldini . Intelligente e provocatoria , audace , recidiva ma sempre elegante . Polvere di Stelle " : un titolo magico per una serata che si preannuncia davvero suggestiva . Rialzi anche per LOTTOMATICA ( + 0 , 9 % ) e PRYSMIAN ( Milano : PRY . MI - notizie ) ( + 0 , 3 % ) in attesa dei risultati di bilancio . Il tema della libertà nell ' informazione e nella letteratura sarà discusso considerando come punto di riferimento la Dichiarazione Universale dei Diritti dell ' Uomo . Furto da 10 centesimi , giudici sono al lavoro da 5 anni - Yahoo ! Seconto l ' avvocata dei due uiguri , se la Svizzera li respinge , la sola alternativa sarebbe una prigione di massima sicurezza dell ' Illinois . spa Colombia abandonó ayer reunión de Cidh de la OEA . La comisión de socios del Banco Credicoop comenzó a reunirse para unificar criterios y avanzar en el proyecto que se realizará entre el 2 y el 7 de Agosto , en la ciudad . El tiempo ha probado - al menos en lo que a Fitzgerald respecta y contradiciéndolo - que sí hay segundos actos en las vidas norteamericanas . En declaraciones a la prensa en el final del encuentro que ocurrió en el Ministerio de la Defensa Nacional , Cándido Van - Dúnem afirmó que Angola debe repartir informaciones en condición de miembro de la comisión . Indicó que es más preocupante aún que algunos empresarios que ya habían pagado el año de impuesto , ahora desean que se les devuelva el dinero . Ya saben la respuesta verdad ? Los precios de las casas tuvieron un descenso anual de 18 , 9 por ciento en diciembre , siendo el mayor descenso desde que iniciaron los registros en 1983 . Lo importante es que en el país todo marcha y marchará perfectamente bien . Ya iniciada la segunda parte , Johnson volvió a aparecer para volver a poner en ventaja al Toronto , que tuvo a un Joao Plata como su jugador más destacado . “ Si el campamento solamente fuera entrenar y entrenar sin enfrentamiento , no tiene sentido , tiene que haber ese choque y así será útil el viaje . Sin embargo , Edinson Cavani , nueve minutos después , decretó el empate para Uruguay . 28 de enero de 2010 , por Redacción 180 Como cada año , se espera una asistencia de 70 . 000 personas . También se vio la jodita Aquí Calafate con Melina Pitra y la Tota Santillán estuvo con Los Taxi Boys . Puede haber una relación estrictamente sexual , y esto no quiere decir que haya realmente un orden amoroso en esa pareja . Pero bueno , aunque es todavía pronto , puedo decir que daré a luz en primavera " , dijo Carey , quien está casada con el cantante , comediante y actor Nick Cannon . Se conmemorará el Día Mundial de la Diversidad Cultural con actividades artísticas , conferencias y mesas de diálogo Morelia , Mich . , 18 de mayo del 2011 . Entre el público había personas vestidas con la zamarra argentina , mientras que otros llevaban pósters y carteles con frases de bienvenida en inglés , hindi , bengalí y español . Los pasajeros de la camioneta eran comerciantes y habían pasado el día en Manta , Manabí donde vendieron algunos electrodomésticos . El plan económico incluía el aumento en el precio del pasaje del transporte público y la gasolina . Frente a este hecho , la Argentina pide el retorno de las salvaguardas . ita Questo porta alla comparsa di rughe sottili ai lati degli occhi e della bocca , può rendere visibili i capillari sul naso e sugli zigomi , favorisce lentiggini e macchie . Sono polemiche senza precedenti . Dal punto di vista dell ’ autonomia , questo modello è provvisto di una generosa batteria agli ioni di litio con capacità di 750 mAh la quale garantisce un ’ operatività di 580 ore in standby o 8 ore in conversazione . C ' è chi è riuscito a cancellare dalla propria mano l ' inchiostro " indelebile " che marchiava chi aveva già votato e ha provato a moltiplicare la propria preferenza . Probabilmente avrebbe vinto comunque , ma non era la solita Serena . Niente paura andra ' avanti all ' estero ! " Noi non intendiamo offendere o difendere - ha aggiunto - alcuna lobby ma tutelare la riservatezza dei cittadini " . Lo scrive il medico legale Francesco Introna nella perizia medica redatta a seguito dell ' autopsia effettuata sui resti di Elisa Claps . Regista dello spot , prodotto da Altamarea Film , à ¨ Luca Robecchi . Il programma & # 8220 ; Resistere al parco & # 8221 ; , organizzato dalla Circoscrizione 3 e dall & # 8217 ; associazione Zero in condotta , animerà i giovedì sera al parco della Resistenza per tutto il mese di luglio . " Abbiamo ancora molto da fare durante la notte per migliorare le cose per il warm - up , ma sono fiducioso che potremo effettuare una buona gara . " Seconda fila per Helio Castroneves e Marco Andretti . Il passaggio del testimone non ha però ancora avuto luogo : la tradizionale lista dei 500 colossi del mondo della computazione , stilata ogni 6 mesi da Jack Dongarra , è ancora in fase di elaborazione . Papandreou parlerà al Paese in diretta tv . Tutto il resto è una perdita di tempo » . Ricordiamo - continua Paolucci - che il mandato dell ' amministratore e ' quello di attenersi alla gestione dell ' ordinario ( amministrazione e finanza ) e quello di tutelare i lavoratori , facendo rispettare da tutti il protocollo sottoscritto . Ad una situazione già disordinata , in cui alla mobilità si pensa solo dopo aver costruito , questo impianto aggiungerebbe il tocco finale , quello della dannosissima commistione tra impianti industriali e aree residenziali . E ' vero che mia moglie ha contratti con la Rai per diversi milioni , in quanto titolare di una societa ' che produce fiction , vendendole anche alla Tv pubblica . Nel maggio 2007 , Ehrlich si era candidato a sindaco alle elezioni comunali per conto della lista Crescere insieme . Si può quindi comodamente caricare i file in modalità wireless da computer oppure tramite collegamento Ethernet . Zigoni : A Verona come il papà ? fra Il faut bien reconnaître que les débats télévisés ont fortement contribué à valoriser la personnalité des candidats , au détriment du débat d ' idées . En 1958 et en 1994 , le Brésil était la seule équipe non - européenne en quarts de finale et cela ne l ' avait pas empêché de remporter la Coupe du monde . En France , la Première Guerre mondiale , c ' est d ' abord Verdun . Guy Lacombe à © tait naturellement satisfait aprà ¨ s la qualification de Monaco face à Lens ( 1 - 0 ) . Le personnel est jeune , dans le ton . Mais une fois encore , c ' est la vie . Le mari en est venu aux mains avec sa femme . Je fais partie des 90 donc je n⠀ ™ ai pas relà ¢ chà © la pression et je continue à m⠀ ™ entraà ® ner dans l⠀ ™ optique d⠀ ™ y figurer . Comme Chilipoker , le troisième opérateur en France de casinos terrestres sest appuyé sur les logiciels de PlayTech pour créer sa salle de poker en ligne . Parallèlement , une application gratuite pour iPhone a été lancée en mai . Deux apéros géants interdits à Annecy et Chambéry - Yahoo ! Les syndicats estimaient à 220 le nombre de postes d ' hôtesses et stewards menacés sur le réseau moyen courrier par la mise en place du projet Neo . Nicolas Sarkozy s ' est engagé jeudi à ne pas abandonner le secteur agricole . ⠀ œ Les migrants sont constamment harcelà © s par la police , c⠀ ™ est dà © sormais le problà ¨ me numà © ro un⠀ � ? , explique Và © ronique Devise , du Secours catholique . Un policier a par ailleurs été tué dans l ' explosion d ' une bombe dans un bureau de vote de Mahmoudiya , à une trentaine de kilomètres au sud de Bagdad , selon le colonel d ' armée Abdul Hussein . C ’ était un vendredi soir , il devait être environ 18 heures . Il faut retrouver la sérénité , en ayant le couteau entre les dents , et montrer une grosse force de caractère . Moscou a ainsi prolongé en novembre son moratoire sur le sujet , adopté en 1999 . En Asie , aucune exécution n ' a eu lieu en Afghanistan , en Indonésie , en Mongolie ou au Pakistan . Elles confirment la très grande diversité génétique des Africains , encore peu explorée . Je naurais pas pris la peine dy répondre si cette affaire nétait pas emblématique des difficultés que rencontre un ambassadeur qui veut agir conformément à quelques principes moraux et protéger les deniers publics . fra La commission scolaire cherche des solutions pour trois écoles primaires concernées par le phénomène . " Trop fatigué " , a commenté le vainqueur du Tour des Flandres et de Paris - Roubaix . Son petit garçon de dix ans lui manque . Le joueur voit les choses autrement . « Pourtant , je me rends compte que c ´ est une thématique qui revient dans ma musique , de mes premiers enregistrements que j ´ avais intitulés Chansons françaises à France Culture . Le SG 07 était en démonstration à Las Vegas au mois de janvier dernier ( cf . Considérées comme des organismes génétiquement modifiés ( OGM ) , ces semences ont été symboliquement brûlées pour exiger le refus par le gouvernement de 400 tonnes d ' engrais de Monsanto non encore livrés . Il y aura bien un écran géant sur la Place Bellecour mardi prochain pour le match retour de Ligue des Champions opposant Lyon au Bayern de munich . Ainsi pouvait - on lire récemment que M . de Villepin a déclaré gagner 29 euros par mois en qualité d ´ avocat - conseil ( notamment , était - il précisé , pour Veolia ou le gouvernement bulgare ) , et en faisant des conférences ( 1 ) . Exposition Le Tirailleur : Traces de mémoire de Philippe Guioni du 10 au 27 mai 2010 à la galerie Le Pilori , à Niort ( Deux - Sèvres ) . Le cours du pétrole brut a perdu 1 , 53 $ US à 70 , 08 $ US le baril à la Bourse des matières premières de New York . L ' année 2009 a été particulièrement éprouvante pour les agriculteurs , marquée par une très forte chute de leurs revenus de 34 % " après " une baisse déjà significative , en 2008 , de 20 écrit M . Ayrault dans un courrier dont l ' AFP a eu copie . L & rsquo ; Olympiakos , ce n & rsquo ; est quand même pas le Real Madrid . Un nouveau flop donnerait raison à ses pourfendeurs de plus en plus nombreux . A terme , Univers Freebox espère ouvrir d ' autres espaces du même genre dans d ' autres villes . L ' indicateur résumé est en nette augmentation par rapport au niveau historiquement bas atteint à la fin 2008 , mais reste inférieur au niveau moyen de ces quinze dernières années " , note l ' Insee dans un communiqué . Ce lanceur sera destiné aux missions habitées au - delà de l ' orbite terrestre , comme l ' orbite lunaire , des astéroïdes et Mars . Les premières soldes de lannée commencent aujourdhui . Effectivement » , a répondu le président du Syndicat des agents de la paix en milieu carcéral du Québec , Stéphane Lemaire . À qui appartient le David de Michel Ange ? pob Murilo desconfia que algo estranho aconteceu com Raj . Três equipes caem para a segundona e quatro equipes se classificam para a semifinal que será disputada em dois jogos com vantagem de dois resultados iguais para a primeira e segunda colocada , que enfrentam terceiro e quarto respectivamente . Em razão disso , conclamo os irmãos policiais para de uma vez por todas deixarmos de lado as diferenças pessoais e pensarmos em nossa classe ( POLICIAL ) como um todo . Segundo Wenceslau Jr . , presidente da Acomac , este é um convênio que já existia . Foi aí que alguém resolveu juntar leite condensado e chocolate em pó , criando um doce que não tem ovos . GDF libera R $ 54 , 9 milhões para ciclovias Os brasilienses receberam mais um incentivo para utilizar bicicletas como meio de transporte seguro . Eliana argumente que se ele vender eles não tem mais nada . Era bem intencionado , mas tímido , ignorante e pouco inteligente . Na internet , as inscrições para a prova podem ser feitas pelo site www . meiamaratonafazum 21 . com . br até o dia 8 de setembro . Os consumidores estão em busca de preço melhor . Para Euclides , esses primeiros atos já bastavam para enobrecer - lhe . “ Já estou enfrentando problemas bem parecidos com os da gestão dele . Segundo o tenente coronel Maurício Augusto dos Santos , foram destacados quarenta e cinco homens e três viaturas , além da cavalaria para trabalhar no local . Olhamos com leve indiferença a troca dos números dos anos . O Palmas poderia ter diminuído aos 15 . Mas a maior chance de gol foi aos 33 minutos . Vou até as últimas consequências legais para responsabilizar este Vereador . “ Estar bem , alegre e bem vestido fazem parte da característica do Rei Momo . “ Se tivesse , teria visto a Favela Maravilha ” . Nós erramos e jamais vai acontecer em outra oportunidade . Deus nos faz fortes quando reconhecemos que somos fracos ! spa Efectivamente que nos paguen ya pero se equivoca en lo de la lista en septiembre porque lo importante además de que te admitan es que te paguen a tiempo porque con dos mellizos de año y medio lo estoy notando en mi bolsillo de que manera . Yo creo que me equivoqué de clavo . Recibió la invitación de los hermanos Atayde para montar un espectáculo circense con elefantes y , como era característico en él , aceptó el reto tal como aceptaba siempre todos los proyectos que se le presentaban . Miembro destacado de la Organización , estaba abocado a la lucha por la recuperación de la democracia en nuestro país . El magistrado presidente del Tribunal Electoral , Gerardo Solís , dijo estar sorprendido por la participación de la mujer en estos comicios , además de que podría ser la primera vez que una mujer se convierta en Cacique General . Casi la tercera parte de ellos ( 76 , 587 personas ) es analfabeta . Se olvidan los zurdosos que esto es lo que decían cuando algún gobierno que no fuera kirchnerista llevaba a cabo un acto represor . Cuando hayan concluido ( su trabajo ) , sabremos más " , declaró . Y la soja para entrega en noviembre saltó 55 centavos a 9 , 71 dólares . Panamá , sábado 10 de septiembre de 2011 Real Madrid y Barcelona pelean por el liderato tras ' virus FIFA ' El Real Madrid y el Barcelona se enfrentan mañana , sábado , 10 de septiembre . Sin embargo , en más de una ocasión , hemos visto cómo estas instituciones que se suponían ciudadanas han sido secuestradas por el poder mismo para responder a sus intereses partidistas . A tal punto se trató de un encuentro especial que siendo las 19 : 00 muchos allegados a la colectividad todavía permanecían en el lugar , contándose anécdotas de tantos años sin verse . “ No es mucho el dinero que se junta con el reciclaje ” , aclararon desde el club y detallaron que la empresa Recicladora del Sur les paga 60 centavos por kilo de botellas . Esto es rock ' n roll , nena , tú puedes hacer lo que quieres " . Es más , en los edificios de culto y en los monasterios coptos habría prisioneros cristianos convertidos al Islam . Con el tal Carlos Ariel se cumple el " Aqui estoy y aqui me quedo " porque el cumple con el " tu me eliges , yo elijo a los tuyos " . Por su parte , Sandra Quispe destacó la función que viene cumpliendo el Ministerio de Desarrollo Social con respecto a este tema brindando oportunidades concretas a los más necesitados . Son unos cinco kilómetros de trayecto , que se iniciarán en la Font Jordana de Agullent y llegará hasta la Plaza de la Coronación de Ontinyent . Las tarjetas para dicho evento ya se encuentran en venta . “ Las ambiciones son grandes en el parque 9 de julio en materia comercial ” , añadió el funcionario . pob “ Já passou dessa fase . O mérito é todo do pai , mas quer compartilhá - lo com o filho . Irritado com as intervenções de Chávez ao discurso do presidente espanhol José Luiz Zapatero , o rei perde a paciência , grita e sai da sala . E como esse , outros exemplos existem para alegria dos historiadores que muito têm a contar na formação sócio , política e cultural , com relação à história política dos estados . Mas logo pensei no pior e imediatamente rabisquei num quadro mental as probabilidades de contágio : Gripe aviária , dermatite , criptococose , histoplasmose , ornitose , salmonelose .. " O PV é um partido muito presente na web . Com a prorrogação do reinício das aulas após as férias de inverno muitos planos terão que ser refeitos . Gozam de boa saúde e têm mãos para cura . Expandir Reduzir + comentar Luiz Dirceu Sanson em 21 . 01 . 139 . 88 Que falta faz a pena de morte no Brasil . Acompanhado pelos soldados Patrão e Duque , o sargento seguiu até a BR - 040 . Temos de ir com o pensamento de líder e se impor fora de casa também " , declarou Muricy Ramalho ao " Sportv " na tarde desta segunda - feira . O mesmo se pode dizer da exigência legal da documentação para votar . Os votos , acórdãos e demais atos processuais podem ser registrados em arquivo eletrônico inviolável e assinados eletronicamente , na forma da lei , devendo ser impressos para juntada aos autos do processo quando este não for eletrônico . " Eu ainda vou criar o Dia da Hipocrisia " , discursou na inauguração do hospital . Para ser o grande e temido Bahia , de uma torcida tão gigante . 2 – O governo do Estado continua confundindo educação e capacitação profissional para garantir números altos e confusos no desgastado ensino médio . Depois projetaram uma linha do Rio a São Paulo sem prever paradas intermediárias . 4 . Pós - teste Após a veiculação da campanha ao grande público , deve ser realizada avaliação para que seja possível examinar se os objetivos foram alcançados ou não . Num movimento rápido , ele descarrega o tambor , e as seis balas caem em fileira sobre sua mão . pob Um prejuízo , enfim , que não é só dele , mas também da imagem de Sinop . Mesmo temerosa , a brasileira disse que se sente segura no Japão . O livro é uma bomba . Exagerado demais , a meu ver – é um trabalhador , gente – mas não por isso menos emocionante . Temos um aluno especial com 48 anos ” . Bragato ainda sublinhou a necessidade de ouvir Hess em função das provas apresentadas pela Polícia Federal . Para quem ainda está na faculdade , é importante procurar estágios , pois , hoje em dia , é inadmissível alguém sair da faculdade sem nenhuma experiência profissional . Começou em 2006 , com o Fernandão , com o Iarley . As pessoas desta cidade que dirigem o futebol devem repensar seus atos e métodos de administrar nosso futebol . Em relação ao mesmo período de 2009 , o aumento foi de 7 , 3 % . Acompanhado de Eduardo Campos e alguns ministros , ele sobrevoou toda área atingida pelas chuvas em Pernambuco e Alagoas . Essas foram as palav .. Prefira as boas conversas e os carinhos contidos . A cobrança pode inibir a migração para a caderneta . Se ele tivesse feito uma boa administração , teria ganhado as eleições e não precisava mentir que eu comprei votos para tirar o meu mandato . 40 a 42 ) - Drama na Volks - Montadora vai reduzir exportações , deve fechar fábrica e promover a demissão de 5 , 7 mil empregados . No entanto , o filho de Ted Kennedy , o congressista Patrick Kennedy , havia reconhecido recentemente que o senador superou as expectativas dadas pelos médicos . A das classes ricas costuma ser inconformada e sempre questionadora , entendendo que Deus bem poderia melhorar suas idéias em relação aos problemas humanos . Pendurou a rede , organizou suas coisas debaixo dela e relaxou , enquanto se afastavam do porto de Manaus . Debatedor : Marco Aurélio Lagonegro , arquiteto , urbanista , professor , conferencista e tradutor . pob Ah , que é isso , elas estão descontroladas ! kkkk Neto conseguiu deixar as meninas zangadas . Zk – Já que tocamos no assunto . A biblioteca está fechada , o RU também . O Bahia sentiu o gol e tinha dificuldades em se reorganizar em campo . Entre eles , bóias meteorológicas . Sempre é trollado quem pode muito bem se defender . Ele foi um factoide criado para que vocês fiquem perguntando ” , declarou , na segunda - feira 11 . No dia seguinte , ameaças veladas feitas pelo ex - arrecadador em entrevista ao jornal Folha de S . Paulo foram capazes de refrescar a memória de Serra . Na Bahia , no entanto , cresce o índice de cidades que tiveram apagões com duração além do limite previsto pela Aneel . A direção do IC ficará a cargo do perito criminal Carlos do Valle Fontinhas , enquanto que o posto de diretor do IML será ocupado pelo médico legista Roberto de Souza Camargo . No ano passado , a fiscalização apreendeu cerca de mil sacos contendo cerol e lacrou um comércio . Que venham novos trens - balas ! Elas já estavam conosco há sete anos , foi difícil decidir , porém chegamos à conclusão de que elas mereciam ter mais tranquilidade na “ terceira idade ” .. 8 - Quanto a denúncia de rompimento de adutora , trata - se de desconhecimento técnico sobre uma obra desse porte , que universaliza o abastecimento de água tratada na Capital do Estado para , pelo menos , os próximos 20 anos . Os dois se beijam , quando de repente Marcelo imobiliza Samira e diz que ela não é Maria . Porém , o desembaraço dos veículos necessita de DI . O governo estava desenhando um projeto que , através de um cartão eletrônico , as famílias menos favorecidas receberiam uma carga mensal em reais e esse cartão só poderia ser descarregado em uma revenda de gás autorizada . A Razão ligou para dois dirigentes da PRT na cidade . Nos anos 70 e 80 os mesmos questionamentos sobre qualidade recaíam sobre as marcas japonesas . Mas , com raras oportunidades para finalizar , a seleção do técnico Pawel Janas foi um adversário que se limitou a tentar destruir as jogadas de ataque dos alemães . Mas saiba que o supremo amor que criou e sustenta o universo deseja apenas que você ame e respeite a vida , nada mais . spa Y debe ser el Estado quien garantice el tratamiento gratuito de los adictos ” dijo Izaguirre . Aseguran también que se trata del primer navegador que alberga en la nube una parte fundamental de su operación . Y cuando tú descubres de dónde salen los recursos emocionales para poder ayudarnos , recuperas la esperanza humana de que todo es distinto cuando compartes un dolor o una alegría . En todo momento se le vio tranquilo y agradable con los empresarios del hotel , quienes le manifestaron el objetivo del comercial que se distribuirá en España , Estados Unidos y Europa , principalmente . Jueves 29 de Septiembre de 2011 Hija del presidente Kirchner será operada de amigdalitis La joven de 16 aós se encuentra internada en el hospital Argerich . Nuestros 155 000 hombres no bastan . El Muni Joven continuará en la pista de patinaje sobre hielo Carlos “ Tachuela ” Oyarzún con actividades de bochas sobre hielo y patín . El informe fue elaborado por el economista Wilson Romero Alvarado , y el evento es patrocinado por el Programa de Naciones Unidas para el Desarrollo ( PNUD ) . La película del legendario arquero de Sherwood cuenta en el reparto con figuras de la talla de Cate Blanchett , Vanessa Redgrave , Mark Strong , Oscar Issac , Léa Seydoux y William Hurt , entre otros . Personajes que se parecen y que llegan a confundirse con los verdaderos dueños del éxito pero que a pesar de trabajar de dobles llegan a emocionar con sus actuaciones . Sin embargo , en las costas de Hawái ( EE . Posteriormente hubo actuaciones musicales , lecturas dedicadas al militante , y luego el tradicional corte de cintas . Acto seguido se realizó la adoración de los magos al Niños Jesús en su pesebre . Jacques Foccart trata de eliminarlo varias veces . Vito se ve muy bien en sus dos trajes militares , exclusivos y muy completos . Mónica Koppel , conocedora y referencia en México de la práctica del Feng Shui publicó un nuevo libro : ' El gran libro del Feng Shui ' , en el que , explicó , se condensa información de varias de otras de sus más de 20 publicaciones sobre el tema . CK : Mire , las personas que están trabajando en eso , están trabajando , no mostrándose .. " Es necesario poner los resultados en perspectiva " , aseguró . Cerca de las 1 . 30 la joven afirmó que se durmió y que al despertar , alrededor de las 4 , dos desconocidos la estaban manoseando . También fueron testigos de la firma de otros acuerdos de cooperación entre ambas naciones . ita La norma , oltre a dare maggiori elementi di valutazione agli elettori , avrà anche l ' effetto di attribuire i risultati realizzati ai diversi amministratori , evitando polemiche e scaricabarile sulla responsabilità della gestione . Ma non sarà tuttavia possibile conoscere la lista delle opere custodite nei caveau zurighesi , perché le sorelle Hoffe , che hanno ereditato l ' archivio , hanno chiesto alla giustizia israeliana di imporre il silenzio stampa sull ' esito del controllo . Lunico inconveniente è che cè sempre un pò da aspettare per il tavolo perchè è così buono ed economico che ci vanno tutti ! Nell⠀ ™ ufficio tecnico del comune lavorano 4 architetti e un ingegnere ma il sindaco decide per un esterno il quale à ¨ anche vicesindaco di un altro comune . Il nord della Germania sarà la destinazione di migliaia di tifosi del Fulham dopo che la squadra di Roy Hodgson è riuscita a raggiungere mete finora inesplorate . FAIDO - Sono ingenti i danni provocati dall ' incendio scoppiato oggi , verso le 18 . 30 sulla strada che da Faido porta a Carì , in una rimessa per mezzi agricoli e attrezzature . Secondo Rescue Media nessuno è rimasto ferito . Succede sempre così : quando una persona sta bene non si pone nemmeno il problema . In campo però i giocatori non deludono le attese , pur pagando in avvio un po ' della normale tensione , con falli ai limiti e l ' arbitro che fatica a tenere sotto controllo la situazione . Le risposte ottenute fino ad ora non hanno sortito alcun effetto dal lato pratico . La Borsa è fatta così . Ragazzi e ragazze vivono in universi separati , frequentano scuole diverse , non hanno luoghi di incontro comuni e non possono parlarsi . E così , come spiega il Guardian , il governo sta pensando di imporre alle aziende produttrici di tabacco delle confezioni semplici e di color marrone : obiettivo , togliere fascino alle ' bionde ' . In pratica sono giunte al tetto prima le case che l ` allacciamento dell ` energia elettrica . In Italia ad oggi esistono soltanto tre moschee , oltre a quella di Roma c ' è la piccola moschea di Segrate e l ' ultima nata a Colle Val D ' Elsa , ancora da inaugurare . è per voi di particolare tristezza , nel ricordo di vicende conclusesi tragicamente ” . Il gene codifica una proteina coinvolta nella percezione dei livelli di ossigeno e si sospetta bilanci il metabolismo anaerobico e aerobico . La trasmissione Contesto ( probabilmente anche a causa del suo format ) in merito alla varietà dei suoi ospiti fa un po⠀ ™ meglio ( 200 ospiti da gennaio a novembre contro il centinaio delle trasmissioni di Teleticino ) . Valiani torna sulla gara del Manuzzi : " Il punto di Cesena è un passo in avanti , si poteva addirittura vincere se ci credevamo di più " . A ridosso del podio il quattro senza gialloverde di Sergio Canciani , Andrea Tranquilli , Romano Battisti , e Francesco Fossi : da segnalare l ' impiego Tranquilli in luogo di Marco Resemini a causa di un lieve stato febbrile accompagnato da dolori addominali . Una decisione per dire basta alle polemiche che riempiono la ' Domenica Sportiva ' . fra Les actions en nom collectif class actions » ) contre des sociétés non américaines seront désormais nettement plus difficiles aux Etats - Unis . Lewiston est une bonne équipe offensive . Cette première partie était celle de la voix vibrante et forte d & rsquo ; un homme témoignant de la souffrance du monde , avec un orchestre de 54 musiciens pour en accentuer ou en dénuder le propos . Le fait que le plan ( d ' aide ) soit davantage clarifié est bienvenu parce qu ' il y avait des interrogations persistantes , parce qu ' il était encore assez mal ficelé jusqu ' à dimanche . En 2011 , vous ne serez pas réélue par la droite . On investit 800 000 dollars par année pour ces programmes » , a - t - elle précisé . L ' organe commun de contrôle des banques et des assurances , l ' Autorité de contrôle prudentiel ( ACP ) , a été installé ce lundi . A 17 h 15 , ils ont prononcé leurs voeux , non sans émotion . Elle se pose aujourd ' hui avec acuité au Yémen , après l ' attentat manqué contre le vol Amsterdam - Detroit du 25 décembre 2009 .  « Je pense que nos pilotes seront bien prà © parà © s pour 2011 , c ' est donc pourquoi nous avons dà © cidà © de les confirmer . La chanteuse de 26 ans est fait régulièrement la une des tabloïds britanniques en raison de ses démêlés réguliers avec la justice ou de ses problèmes de drogue et d ' alcool . Et , selon les prévisions , les pluies de mousson devraient continuer à se déverser sur la région . Ceux - ci passent volontiers pour des emmerdeurs . Si ce nest la couleur de la peau ou le nom de la personne , on arrive difficilement à faire la différenciation . Les deux autres sont économiques . Ariane met des articles , vidéos , photos ou liens à chaque jour , vous êtes donc certains de trouver de nouvelles informations quotidiennement . Carlos Lee a frappé la longue balle pour les Astros , qui ont perdu leurs trois derniers matchs après avoir aligné quatre gain , leur meilleure séquence de la saison . Monique Mas a quand même essayé de la poser . Durant ces trois jours , le député de Loire - Atlantique livrera à ABP son regard sur le mouvement écologiste , la réforme territoriale , l ' aéroport Notre - Dame - des - Landes , la réunification bretonne et ses ses relations avec Jean - Marc Ayrault .. Une fondation qui lutte contre les discriminations en matière de santé , déducation et de sport . pob Todos justificaram a recusa ao salário alegando que estavam cumprindo " dever cívico " . Jobim ameaça sair com Gaudenzi Do colunista Cláudio Humberto : O processo de demissão do presidente da Infraero , Sérgio Gaudenzi , parece ter sido suspenso pela forte reação do ministro Nelson Jobim ( Defesa ) à notícia de sua iminente substituição . Desta vez , por falta de pró - atividade . Wilma exibe orgulhosa depoimentos registrados em seu “ Livro de Ouro ” , onde é possível encontrar recados e assinaturas de diversas personalidades como Geraldo Vandré e Emerson Fittipaldi ( que desenhou um carro de fórmula um ) . D ecat revelou que , desde janeiro deste ano , técnicos da empresa estão realizando uma série de serviços , com a troca e substituição de reatores , transformadores e alimentadores de energia , bem como a colocação de novos equipamentos . A Assembleia Legislativa viveu , nestes dois últimos dias , momento de grande movimentação . A proposta inicial é que restaurantes , pizzarias e lanchonetes fiquem abertos até as 2 horas . A etapa complementar começou com um susto para a torcida alemã . Parabéns FORTALEZA BELA ! , nós merecemos . Os dados se referem ao ano de 2009 . Art . 14 . A chefia técnica imediata analisará a procedência da justificativa e submeterá , no prazo de 5 ( cinco ) dias úteis contados do seu recebimento , relatório conclusivo à chefia superior , usando o formulário constante do Anexo II . Nesse momento , a Suíça adiantou o posicionamento , marcando a saída chilena e passou a ter mais posse de bola no meio - campo Os europeus começaram a ameaçar mais , especialmente com cruzamentos para a área chilena . Desta maneira , foi construída uma parceria que vem caminhando de forma madura , através de um diálogo franco , objetivando uma verdadeira política pública para a cultura do município . Sobre os presos políticos , não abriu o bico . A conseqüência foi uma super overdose que quase lhe tirou a vida . Segundo o órgão estadual , Marabá é banhada pelos rios Tocantins e Itacaiúnas . É a primeira plataforma de ensaios clínicos com tecnologia completamente gratuita o que possibilita que qualquer pesquisador acesse a nova ferramenta , aumentando o potencial de utilização . Para um dia andar com as próprias pernas todos precisamos dos cuidados do convívio familiar . Abriram a caixa de pandora , agora abram a caixa da farra das passagen , a caixa do mensalão do PT , a dos juros altos pagos aos banqueiros do Brasil Quem acabou com a PCDF se chama ALIRIO NETO antes existia um diretor que tinha moral é honesto . No último sábado , dia 26 de julho , foi finalmente regularizada a situação , com a entrega das primeiras escrituras . fra Après sêtre octroyé 2 , 7 % lundi , le titre du fabricant de pneumatiques gagne 2 , 05 % à 56 , 14 euros . Par Abdou B . Chaque jour apporte des nouvelles contrastées , parfois contradictoires pour un même sujet , un secteur ou une simple décision administrative . Après la rencontre , José Mourinho pouvait afficher un large sentiment de fierté . Mais comme " une majorité de salariés a déjà exprimé son désaccord dans les sondages , dans la rue , dans les grèves " , cest désormais au sommet de lEtat dapporter une réponse , selon Frédérique Dupont de la CGT . " Il faut tous les virer " , s ' est exclamé vendredi le député gaulliste Nicolas Dupont - Aignan , président de Debout la République ( DLR ) . Depuis lannonce de la liste des 30 , les médecins du FC Bâle ont multiplié les séances pour remettre sur pied le jeune attaquant de 19 ans . Le premier a été émis le 4 mars 2009 pour crimes de guerre , crimes contre lhumanité et le second le 12 juillet . dernier pour génocide au Darfour , région de louest du Soudan en proie à une guerre civile depuis 2003 . Cette décision aurait été prise ce matin d ' après la radio française et devrait être officiellement annoncée la semaine prochiane . En génisses , la vente est plus aisée ainsi qu ' en taureaux suivant la race . Les petites cuves que nous utilisons ne permettraient pas à de grandes entreprises de s ' en sortir économiquement . Nokia Siemens Networks ( NSN ) a profité du salon Mobile World Congress de Barcelone , qui ouvre ses portes ce matin , pour rendre officiel les négociations exclusives avec Free Mobile . Washington Le " Washington Post " a battu lundi le " New York Times " en remportant quatre prix Pulitzer contre trois au journal new - yorkais . Il était devenu le symbole du fiasco anglais pour son exclusion lors du quart de finale perdu contre le Portugal . Parmi les six à © quipes , chaque semaine celle qui prend trois points prend une option supplà © mentaire . Le riz a été une nourriture de base depuis des siècles dans les pays asiatiques " , notent les auteurs dont l ' étude est parue dans les Archives of Internal Medicine lundi . Après la vie quotidienne des stormtroopers , voici les stormtroopers à la neige . A len croire , « même les clients aisés ne veulent pas investir à la marina et préfèrent aller vers Hay Mohammadi où le mètre carré est à 9 000 DH » . A Knysna , Domenech doit aujourd ' hui se sentir bien seul . Dans cette France régionale rose et dans ce contexte économique et social morose , Nicolas Sarkozy a besoin des jeunes gagnants qui incarnent le renouveau et la positive attitude . Quatrième à Istanbul , Sébastien Ogier revient lui à deux unités de Jari - Matti Latvala , huitième seulement après être parti à la faute . fra Quelques chaînes proposent de plus des jeux en ligne , le plus souvent dérivés de programmes à succès , ou sont présents sur des activités sans lien avec leur métier de base , comme les comparateurs de prix . Plusieurs volets de cette hausse des tarifs interpellent quelques jours seulement après le débat sur la démocratisation des grandes écoles . Jean Charest a mis sur pied cette semaine une commission d ' enquête , présidée par l ' ancien juge de la Cour suprême Michel Bastarache , pour enquêter sur les allégations de Bellemare . Après avoir obligé les autorités à renvoyer le nouveau code des personnes et de la famille à une seconde lecture à lAssemblée nationale , les leaders religieux ne soufflent plus aujourdhui dans la même trompette . Bains de Mer : résultat net annuel en fort recul . Cette ligne d ' une maturité de 5 ans se compose d ' une tranche amortissable de 600 millions d ' euros et d ' une tranche « revolver » de 800 millions d ' euros . 300 points de charge seront installés dans les parkings et sur les voies publiques de la capitale alsacienne Ces voitures seront destinées aux administrations strasbourgeoises , ainsi qu ' au grand public par le biais de l ' auto partage . Déjà candidat malheureux en 2002 , Issa Hayatou , le controversé président de la CAF , pourrait prendre position face à Sepp Blatter lorsque le bail du Suisse à la tête de la FIFA prend fin lannée prochaine . Il est vrai toutefois que ma conception du foot est proche de ce qui se faisait avant à Nantes . Le groupe souligne aussi que sa restructuration pourrait le conduire à modifier de manière importante la structure de son capital . Alors que ce sont des prestations quasiment toujours incluses dans les contrats des assureurs habituels . Le versement est rétabli " lorsque lassiduité de l ' enfant a pu être constatée pendant une période dun mois " . Une justice de far west , c ' est la police toute seule , Une justice démocratique , c ' est une justice indépendante du pouvoir et qui prend le temps et la distance nécessaires . Accroissement des craintes pour la liberté d ’ informationOn pouvait déjà avoir des craintes mais deux événements récents poussent le curseur vers la plus d ’ inquiétude . Tôt en première période , il est parvenu à briser le mystère Michael Leighton . Quel bilan tirez - vous de cette 18 e édition ? Mickaël Ciani ( Bordeaux ) et Benoit Cheyrou ( Marseille ) feront leur apparition chez les Bleus pour la première fois . Jean - François Aurokiom est le nouveau champion de France du lancer du disque ( 60 , 09 m ) . M . Ban recommande le renouvellement du mandat de la Mission de l ' ONU en RDC ( MONUC ) pour un an , avec un début du retrait des troupes en juin . On n ' acceptera pas le moindre centime , et je parle au nom de tout le groupe . ita Ibra : " Guardiola piccolo allenatore " " In un paese dove c ' e ' un governo che sta facendo le riforme noi vorremmo ci fosse un ' opposizione che dice non sono d ' accordo ma propongo . Il saluzzese Claudio Pautasso , di 35 anni , agente di commercio , è stato nominato nuovo Segretario della Sezione di Saluzzo e valli saluzzesi de La Destra . " Tiger ha vinto due volte qua , nonostante tutto resta tra i favoriti " . Roma , 23 feb - '' Le questioni che pone il presidente della Camera , on . " E ' la fine di un incubo " , ha commentato ieri Gino Strada , ma è anche la prova " dell ' assurdità " di quanto accaduto . Ma per la legge italiana è un & rsquo ; arma . Un nuovo set di istruzioni a 256 bit accelera le applicazioni a uso intensivo di istruzioni in virgola mobile , ad esempio editing di foto e creazione di contenuti " . In ballo per raggiungerla una tra Barrese e lo stesso Atiesse ( alla formazione di Quartu S ’ Elena basterà un pari nel prossimo turno ) . Gli elettori chiamati complessivamente al voto sono 341 . 174 ( di cui 174 . 167 donne ) . I cristiani respingono le accuse , ricordando che “ più volte in passato la Chiesa ha cercato di intavolare con governo un negoziato per dirimere la questione , ma il dialogo è stato sempre rinviato o negato . Brevi è la prima scelta della nuova proprietà , è lui il tecnico che il Como vuole anche per la prossima stagione . Grazie agli incentivi Suzuki per la rottamazione è possibile acquistare una Swift 1 . 2 VVT a partire da 9 . 490 euro . Ai tempi i super ricchi guidavano tutti la Mercedes . Gb : ragazzo minaccia Obama , mai piu ' in America - Yahoo ! Il trenino funicolare viaggia in quota e ha 4 vetture per convoglio , con una capienza massima di 200 persone ( 50 per ogni vagone ) per ciascun senso di marcia . La pena richiesta tiene conto della riduzione di un terzo previsto dal rito abbreviato . " Certo , potrei mettere tutti d ' accordo . La soluzione che propone Di Pietro e ' '' attendere serenamente la sentenza del Tar . Governo : Berlusconi , Non Si Puo ' Cancellare Volonta ' Popolare - Yahoo ! ita Le Borse europee tornano a perdere terreno sui timori che il piano europeo da 750 miliardi di euro non riuscirà ad arginare la crisi del debito . Tra le giornate del 3 e del 6 giugno si sono tenuti sul campo federale fipsas di Coltano in provincia di Pisa , i Campionati Italiani di Long Casting . Ebbene , " normalmente " quel nastro viene usato per fabbricare bombe . La misurazione dei conti delle regioni dovrebbe arrivare con il decreto sui « costi standard » che introdurrà strumenti di verifica soprattutto in campo sanitario . Tutte le soluzioni tecniche , dalla sella agli pneumatici , dallinterasse alle sospensioni , sono state quindi indirizzate al miglioramento della comodità di guida . '' Per questo ad essere irresponsabile - continua Borghesi - non e ' certamente Di Pietro , ma solo questo governo che continua a proporre tagli indiscriminati che andranno a pesare solo sui cittadini onesti che hanno sempre pagato le tasse . Mi auguro che quando i riflettori dei mondiali si saranno spenti , non si spenga invece la solidarietà nei confronti dei bambini colpiti dall & rsquo ; AIDS " ; . Perché tra mostri , avventure e sventure insegna che ogni viaggio è bugia e ogni verità possibile » . Non è da escludere che possa diventare cittadino italiano in tempi brevi . L & rsquo ; episodio , parte della settimana stagione del programma , andrà in onda negli Stati Uniti il prossimo 7 novembre , mentre in Italia seguirà programmazione prevista da SKY Uno . Oggi , per esempio , lo Stato qui si limita a pagare solo gli stipendi agli insegnanti . Oltre ai centinaia di titoli proposti , da gustare en plein air , il valore aggiunto sarà , ancora più degli anni precedenti , il dibattito , in stile vecchio cineforum . E - mail : Centro di gestione mail unificata con funzione conversazione per i messaggi di posta elettronica ricevuti e inviati . " La nostra sfida è fidelizzare i donatori saltuari , e rendere prestatori i donatori " continua Morganti . " Anche se si andasse a votare , ma io non lo credo , abbiamo qualche motivo in più per fare capire a Berlusconi che lui le elezioni non le vince " , avrebbe aggiunto Fini , facendo riferimento all ' unità di intenti delle forze del terzo polo . La diocesi di Xiamen coltiva da tempo rapporti con la Chiesa di Taiwan . È un sogno e Balotelli , sì , l ' ho chiesto all ' Inter quando c ' era burrasca ma adesso filano tutti d ' amore e d ' accordo . L & rsquo ; ultimo episodio grave è di un anno fa . Riflettori puntanti sabato sulla trasferta di USC in casa dei Golden Bears e sulla Civil War di domenica tra Oregon ed Oregon State . Le aree interessate , sottolinea in un comunicato Autostrade per l ' Italia , sono in Piemonte , Liguria , Lombardia , Emilia Romagna , Toscana , Umbria . fra Me Catherine Roberge , la procureure de Keven Lavoie , a bien tenté de convaincre le juge que son client pouvait être bien encadré par sa famille et qu ' il avait fait le ménage dans sa vie depuis un an . Et l ' Elysée envisage désormais d ' inciter les bénéficiaires à investir les sommes reversées par l ' Etat dans les petites et moyennes entreprises . Cette plainte , datée du 29 janvier , vise le Flec - Pm ( Forces de libération de lEtat du Cabinda - Position militaire ) qui avait revendiqué le mitraillage du bus transportant léquipe togolaise , a indiqué jeudi une source judiciaire . J ' ai toujours reconnu la qualité et la force de ton action de bâtisseur à Montpellier et à la région Languedoc - Roussillon " , le député PS du Pas - de - Calais dans une lettre ouverte à Georges Frêche . A Berlin , le porte - parole de Mme Merkel a indiqué que " le gouvernement Reding " , qui a dressé un parallèle entre les expulsions de Roms et la déportation durant la seconde guerre mondiale . Il devra répondre de faits remontant aux années 2002 à 2006 analogues à ceux pour lesquels il a été condamné en 2008 , notamment pour violation de la loi sur les stupéfiants . La défaite est cruelle pour les Auxerrois , battus 1 - 0 sur leur pelouse du satde de l ' Abbé - Deschamps . La dotation royale a été un peu rabotée cette année - une grande première - mais elle reste confortable . Ce qui , en retour , nous aide à enrichir nos discussions avec nos professeurs et avec nos condisciples " , explique - t - il . Le journaliste conclut que « le cas relève de la psychanalyse » , nul doute qu ´ il aura donné envie à un grand nombre de sportifs de se pencher sur la gestion des émotions ! Cette question désormais politique , basée sur une ségrégation linguistique et ethnique , est exacerbée dans les années 1980 avec lédiction dune réforme foncière mettant fin à la propriété collective . Pour ce faire , il va changer la loi 6 . 2 de la constitution actuelle qui limite les mandats présidentiels . Une dà © cision rendue par le jury de la course . Il pourrait aussi manquer ls quart de finale de la Coupe Davis du Chili face à la République tchèque ( 9 - 11 juillet ) . Les phénomènes de délinquance accompagnent les mouvements de population vers le sable fin . Les perturbations étaient toutefois toujours en cours à 17 H 00 . La bibliothèque ambulante est fin prête . Ce procédé sera utilisé jusqu ' à la fin septembre sur les terres de la Couronne . C ' est une honte , et c ' est inacceptable " , indique l ' AIE dans un rapport rendu public au sommet de l ' ONU sur les objectifs du millénaire pour le développement ( OMD ) . Si ils devaient créer un jeu utilisant ce mode de contrôle , il serait spécifique à la baguette magique de Sony , ce qui est une très bonne chose . spa Ninguno de los dos plebiscitos logró el 50 % más uno de los votos , por lo que no se aprobaron . Según advirtió Ruiz , “ si la ley del Pami se respetara sería fabuloso , si la obra social estuviera manejada por gente idónea y con deseos de lograr que los afiliados sean atendidos como corresponde . Benítez contó que , aunque aportó siempre a la seguridad social cuando estaba en actividad , cobraba apenas la jubilación mínima , que es lo mismo que perciben en la actualidad otros dos millones de retirados sin haber hecho esas contribuciones . Como si algo faltara en la novela política de Puerto Iguazú , ayer se conoció una presentación radicada en la Policía por parte del secretario de concejales del bloque de la UCR , Kevin Florentín , contra el intendente Claudio Filippa . Este dato que no había salido a la luz pública , lo confirmó el delegado de la Secretaría de Agricultura Ganadería Desarrollo Rural Pesca y Alimentación ( Sagarpa ) , Carlos Alberto Hernández Sánchez . Al narco le importa todo , hasta el que ve lo que no puede ver o el que sabe lo que no debe saber . Por otra parte , Speranza pidió la construcción de reductores de velocidad en la Ruta Nacional A 009 , sobre todo frente a escuelas y puntos conflictivos . Nada de compromisos formales , al contrario . Cambiar leyes obsoletas que estancan al Perú · Peruanos en el mundo : Celebraciones del Inti Raymi en Nueva York A . Actualidad : ÚLTIMO MINUTO : de 103 a 149 cifra de muertos en México . En una ocasión , un cliente le pidió a Hinzpeter que negociara para comprar un restaurante . Aprovecho la oportunidad para felicitarlo por su boletín . Según esa tradición , el hijo hará todo lo posible por evitar avergonzar a sus padres . Sus pronósticos para el próximo ejercicio no son alentadores . Se conoce como el " Presagio de Hindenburg " y es un vaticinio sobre el colapso del mercado bursátil en Estados Unidos en setiembre . El hombre que dirigió ese proceso fue Baruch Vega , un informante de la DEA que le resolvió el problema judicial a cambio de 2 millones de dólares para no pisar una prisión norteamericana . Tiene ciento ochenta y nueve años . Las madres y abuelas solas , las familias reconstruidas y los padres divorciados no generan hijos huérfanos . Enviarme una copia del correo miércoles , 19 de mayo de 2010 a las 08 : 35 Quién dijo que en otros lados no pasa nada ? Quizàs se salve alguno de los que entraron hace dos años porque la construciòn està en quiebra y ahì ya no se puede robar . Sucedió , sin embargo , que el material fue enviado a otra empresa de digitalización y presumen que allí un empleado infiel , al ver lo que estaba viendo , tomó una copia sobre la cual se perdió el control . ita " E ' come le avesse imprigionato l ' anima " , ha detto la madre di Lina sulle colonne del New York Post . Ritardi , scrive Garimberti nella lettera di risposta a Saviano per ' Via con me ' che sarà pubblicata domani su Repubblica , il cui andazzo " non mi piace per niente " . La Commissione europea sta monitorando la situazione della ' Milck Wercjager ' . Bisogna rendersi conto - ha aggiunto Alemanno - che per aiutare Roma ad uscire dalla crisi ci vuole un grande sforzo unanime . Abbiamo appreso la notizia dal tg della sera . Garzelli , da grande che cosa farà ? Il cavallo di battaglia ssoluto di Novitec è comunque la Ferrari California Rosso . Poi ci saranno le verifiche : se a quanto detto seguiranno i fatti , nessun problema " . Il gusto , l ' orgoglio di vedere la propria azienda prosperare , acquistare credito , ispirare fiducia a clientele sempre più vaste , ampliare gli impianti , costituiscono una molla di progresso altrettanto potente che il guadagno . Morale : oggi molte di queste realtà sono coperte di debiti . Ma soprattutto un centrocampista dai piedi buoni " . Dopo linvio online della domanda di disoccupazione , il richiedente potrà stampare il modello e la ricevuta . Mi ha detto che era un guardiacoste libico , se mi avesse detto che era italiano avrei subito fermato le macchine " . Resta un fatto : il rosso diretto fa probabilmente calare il sipario sulla possibile convocazione di Totti in nazionale per i mondiali in Sudafrica . Derby e primato conservato per il Real Madrid . Per tutta la durata dell ' intervista , andata in onda in lingua azera e sottotitolata in farsi , il volto dell ' iraniana è stato oscurato . Non è solo tea ­ tro , è anche un mix di cinema e di televisione , un incontro tra i miti del rock e il mondo roman ­ tico di Shakespeare . Avvocato uccisa , un delitto preparato - Yahoo ! I TRISTE COLORE ROSASi formano , all ' alba degli anni zero , dall ' incontro tra Francesco ( cantante e side guitar ) , Giuseppe ( lead guitar ) , Mauro ( batteria ) e Francesco ( basso ) . L ' Udc fa meretricio , si offre al miglior offerente " dice il leader Idv . fra Dans la partie dure du col , j ' ai vu Samuel Sanchez se lever mais il n ' a pas insisté . LAGOS DE COVADONGA , Espagne ( Reuters ) - L ' Espagnol Carlos Barredo a remporté dimanche la 15 e étape de la Vuelta , dont l ' Italien Vincenzo Nibali a conservé le maillot rouge sans forcer . Des couleurs fluorescentes au fond de l ’ océan : les nudibranches , mollusques à l ’ aspect exceptionnel , en images - Yahoo ! Le Circuit Het Nieuwsblad a permis à Juan Antonio Flecha de fausser compagnie à Phillipe Gilbert dans les 20 derniers kilomètres avant de s ' imposer en solitaire . La Société générale doit publier ses résultats définitifs pour le quatrième trimestre et pour l ' ensemble de 2009 le 18 février . Ottawa estime plutôt que celles - ci relèvent de l ' article 91 . 2 , qui mentionne la " réglementation du trafic et du commerce " . L ' attaquant chilien Juan Gonzalo Lorca , 25 ans vendredi , qui appartenait au club de Colo - Colo , a signé un contrat de trois ans et demi avec Boulogne , actuel 19 e de la L 1 , a annoncé le club boulonnais dans un communiqué , jeudi . C ' est cette femme de tête - là qui , le 21 juin , a enduré l ' humiliation d ' entendre son mari annoncer sa démission à elle ! Même si ce sont les Violets qui sont repartis avec les trois points , Pancho ne sen fait pas : VA donne tout , la victoire va donc revenir dici peu . Avant que cela n ' arrive et parce que " les deux dernières nuits ont été dangereuses " , Ladda Monokalchamvat , 46 ans , a décidé de partir avec sa fille : " Je quitte mon appartement . A la demande du syndic , le tribunal a également déclaré l ' extension de la liquidation à la société « Trimedia » et l ' ouverture de la procédure de liquidation à l ' encontre des dirigeants de la société « Media Trust » , poursuit la même source . A propos du cinéaste iranien Jafar Panahi , emprisonné en Iran , " Jafar , je pense à vous " . Quant au deuxième , il doit mener à mettre plus de gens au travail , a souligné Wouter Beke . Tout cela « n ´ est pas instantané » , a - t - elle noté . Il suffit parfois simplement d ' une aide ponctuelle pour restaurer un dialogue constructif et lever le mal - être de l ' adolescent . La loi entre immédiatement en application et les opérateurs privés et étrangers sont donc désormais autorisés à proposer des paris hippiques , des paris sportifs et le poker en ligne aux joueurs français . Cette décision est considére en revanche comme une victoire pour la NRA , le plus puissant lobby des armes à feu qui prône une libéralisation complète des armes . Pour sen sortir , le club mobilise toutes ses troupes . Lidée est que les banques financent elles mêmes un fond qui leur viendrait en aide en cas de problème . Emilie Kohler hésite avant de répondre . ita Al quarto d ' ora un combattivo Paghera serve a Defendi la palla del possibile raddoppio ma il doppio tentativo dell ' attaccante viene sventato in angolo da Piccolo . Fuori dalle mura , la chiesa più importante : S . Maria di Betlem . Inolte Lunardini ha spiegato che il Comune non potra ' sostenere economicamente le bidelle non essendo dipendeti dell ' Ente , anche se saranno vagliate altre soluzioni tra cui chiedere aiuto alla regione Toscana . La banda - sotttolinea la polizia - è stata individuata grazie alle indagini degli uomini delle squadre mobili di Trento , Brescia , Milano e del commissariato di Rho , e alla preziosa collaborazione di alcune vittime trentine . Berlusconi : " Colpa degli arbitri di sinistra " . Dopo collaborazioni con altre prestigiose case di moda e brand , la maison Damiani produrra ' una linea di alta gioielleria per Galliano . La 22 / a edizione degli Efa si terra ' a Tallinn ( Estonia ) il 4 dicembre . E ' quanto emerge dalla rilevazione della Staffetta Quotidiana . Roma , 19 dic . ( Apcom ) - Renzo Gattegna è stato confermato Presidente dell ' Unione delle Comunità Ebraiche Italiane . L ' esplosione ha ferito 13 funzionari di polizia e 13 civili . Se Niccolò Ghedini parla di " accuse incredibili " , il coordinatore del Pdl , Sandro Bondi , è più netto : " Così muore il senso della giustizia " . '' Le cronache di questi giorni sul caso della Grecia - ha riferito la Glendon - hanno offerto ulteriori spunti di analisi . " Ognuno decide di morire come vuole " . L ’ Amia , l ’ azienda che gestisce il servizio di raccolta , è sull ’ orlo della crisi economica , nonostante l ’ aiuto finanziario ricevuto dallo Stato . Ma certamente questo governo e ' in respirazione artificiale . Non abbiamo mai perso di lucidità , siamo rimasti bene in campo dopo il 2 - 0 , pressando e costruendo i presupposti per la rimonta . Ha le potenzialità ma deve maturare . Una quattordicenne viene violentata e uccisa , da questo momento in poi si troverà in una sorta di Paradiso dal quale osserverà la sua famiglia che cerca di andare avanti superando il dolore per la sua perdita . La testa di serie numero uno sarà la giocatrice della Polonia Anna Korzenoak , vincitrice lo scorso anno . In Ducati dal 2000 , l ' Ing Lozej ha occupato negli ultimi anni il ruolo di responsabile del team sviluppo MotoGP . spa En los días previos a la decisión , la “ unidad ” parecía que se rompía y el ambiente se tensaba , “ rumores ” y “ fuego amigo ” se daban bajo la mesa . La organización da en seguida el tono destilando dos mentiras en una sola frase . “ Todavía es necesario hacer educación con médicos de guardia y personal de la salud sobre el abordaje de la anafilaxia . La Provincia la otorgaría a mediados de año Denuncian saqueos en más de veinte tumbas durante el Viernes Santo En algunos casos , hicieron destrozos y se llevaron elementos del interior de los panteones . Los disparos en el pecho segaron la vida de Guerra de inmediato . Justamente Migue , que tampoco sabe de la existencia de su sobrina , es el que no tendría un buen trato con Jéssica y ambos estarían manteniendo un fuerte enfrentamiento por cuestiones legales . La apertura estaba dirigida a fomentar el turismo multidestino en el programa Playa - Maya , que mostraría las costas de Cuba y las ruinas milenarias en Guatemala . Cuando alguien se descuida y deja un estudio de grabación abierto el tipo se mete y graba un disco . '' Son muy malos tiempos , han pasado demasiadas cosas malas ; creo que el mundo debería dar los pasos correctos para corregir esto '' , reflexiona Hassan . Provoca aparatoso choque Un conductor fue señalado como culpable por parte de un conductor y no supo cómo excusarse tras mandar a una persona lesionada al hospital . La ocasión nos sirvió para ver a dos de los varones más atractivos de Santa Justa posando así de estupendos cual efebos griegos . La mayoría de los sellos sacan un disco , difunden uno o dos temas un tiempo y después lo dejan morir . Los policías de esa repartición recibieron información de que en una finca situada en la calle Maciel se estaban comercializando estupefacientes . La movilización , comenzó en la mañana de este miércoles en Reconquista .. Reiteran , asimismo , que la selección del sucesor de Strauss - Kahn , quien renunció el jueves en medio de un escándalo sexual , debe estar basada en un proceso " verdaderamente abierto , basado en los méritos y competitivo " . Fue el primogénito de Conrad Adams y Jane Adams , los cuales aumentarían la familia posteriormente con un nuevo hijo llamado Bruce . Existía una organización puertorriqueña , llamada Borínquen Kennel Club , que se dedicaba a organizar competencias , pero no registraba perros ” . También este mismo año , Patricia es elegida para ser la imagen de la cadena más grnade de gimnasios en Estados Unidos " Bally Total Fitness " . Texto a buscar : trabajadores del % La búsqueda ha devuelto 54 resultados . “ No les van a hacer nada , dejen al oso adulto o la osa que se vaya con sus oseznos y nunca separen a uno de sus oseznos de la madre porque son los que se van a quedar aquí , cuando lo ideal es que estén en su hábitat natural ” , indicó . pob A Cidade dos Meninos é uma das melhores instituição que existe eu sou prova viva disso meu filho ficou na creche dos 10 meses até 5 anos e foi super bem tratado durante esse período todos estão de parabéns e merecem todas as premiações que lhe dão . Agora me estranha os comentário do cidadão que é Presidente do PTC - Jair Montes que já demonstrou interesse empressarial nesse assunto , se torna suspeito . Elas são peritos em sacanagens desse estilo . O relatório registra ainda que “ este acelerado avanço significa um melhoramento importante das perspectivas de redução da pobreza , e incrementa significativamente a facilidade de cumprir a primeira meta do milênio ” . Anísio prega a união de todos e disse que não haverá regalias para ninguém e todos vereadores serão tratados de forma idêntica . Com um ingrediente a mais : Clayton foi eleito com apenas um voto de vantagem sobre o adversário . O próprio Lula recorreu a Curado para enfrentar o candidato Geraldo Alck - min no último debate da TV Globo durante o segundo turno de 2006 . Por quê ansiar pela sua renúncia , quando podemos e devemos confiar sua vida à sábia providência de Deus , a quem devemos agradecer pela dignidade da pessoa que hoje ocupa o lugar de Pedro , o primeiro Papa ? Mande alguém contar quantas vezes ouviremos esta frase dos destruidores das nossas florestas . Com a compra do laboratório , a dívida líquida da Hypermarcas subiu de R $ 980 milhões para algo entre R $ 1 , 6 bilhão e R $ 1 , 7 bilhão . A doação chegou há dois meses . A distribuição é para toda comunidade , independentemente de classe social , frisou a enfermeira . No apartamento das meninas , João diz a Flávia que quer dormir em casa para conversar com Pepeu . O empate garantiu o Garotos de Arujá no mata - mata , mas a vitória do Oliviense não foi suficiente para garantir a equipe na briga pelo título . Se a nova lei for aprovada , o motorista só poderá tomar refrigerante , pois uma dose de pinga já deixa o que bebeu com o hálito alterado , popularmente chamado de “ bafo de jibóia ” . As tradicionais rodas raiadas e cromadas combinam com o disco de freio , de alta performance . Telê lança ondas mentais em Fredo e ele desmaia . Cuidem bem destas casas . Contemplo , através das lentes amigas , o cenário da vida . Ela é impedida porque não pode legislar . spa Hay en el hecho , aunque nada formalizado , una reticencia en personas que estaban muy determinadas a impulsarla y que a poco andar parecen estar abandonándola . La noticia salta justo cuando T 5 está a punto de estrenar la nueva edición de su reality más popular el próximo domingo . 6 . La paz del mundo depende , en cierto modo , del mejor conocimiento que los hombres y las sociedades tienen de sí mismos . Así quedó Cotilde , por eso todos me dicen Coty . Conocido el fallo del Tribunal Electoral , desde el Movimiento Proyecto Sur aclararon a Diario UNO que se utilizará la vía judicial para defender la banca de Carlos Del Frade . Tanto Schiavi como Bernardi se acercaron , alambrado de por medio , a conversar con algunos representantes de la hinchada rojinegra , con lo que el aparente clima de tensión fue diluyéndose de a poco . Apuntó que los miembros de la iniciativa privada también han sido los más preocupados e interesados porque en Durango haya más lugares turísticos , por lo que ellos también serán los involucrados en realizar proyectos en pro del turismo . En el Lago de Xochimilco , al sur de la ciudad de México , se encuentra la Isla de las Muñecas , un sitio terrorífico para algunos . En los backs el fuerte está en las variantes a la hora para atacar , porque si tenes la pelota y no sabes que hacer , no sirve de nada . Incluso , volvió a ponerse el polémico vestido que usó en la tapa de la revista Vogue - edición japonesa - , que incluye trozos de carne cruda . Toda la organización se pasó ” , destacó el atleta peruano de 30 años , quien se perdió la posibilidad de correr en la maratón de Lima . Al analizar el ambiente de negocios Davos nos compara a nivel nacional con Ucrania y Colombia . En la misma se presentará un plan de salida de la crisis . Sí , leyó bien “ cero ” , de dificultad para contratar . Y la fiesta de disparates la completó don Timerman , desde Toronto , sumándole algo que , como tantas veces durante el kirchnerismo , me permitió recuperar mi capacidad de asombro : habló de la seriedad de la diplomacia de este Gobierno , y de la suya propia . 10 Dimite la directora general de TV - 3 Rosa Cullell se marcha por diferencias con el nuevo presidente de la Corporació Catalana de Mitjans Audiovisuals 14 . 07 . El poeta la mira y le da las gracias . En agosto de 2011 , los informes de esa agencia indicaron dónde se hallaba el organizador de los ataques del 11 de septiembre de 2011 . La discusión es sobre la capacidad jurídica de las personas con discapacidad , es decir , el reconocimiento de la ley para que puedan celebrar contratos y representarse jurídicamente ellos mismos , sin necesidad de un tutor . No sólo en el ámbito musical , porque me interesan muchas otras cosas , me interesan las acciones artísticas de otra gente … Que me pagaran para inventar cosas , ese sería . ita Checkpoint Systems è stata scelta da Kentron per la protezione alla fonte degli innovativi lettori Kentron E - Book , dispositivi elettronici dedicati alla lettura di libri e documenti in formato digitale . L ' imprenditore Luca Cieri racconta così la lite scoppiata domenica sera in un popolare ristorante romane tra il famoso architetto e il capo della Protezione CivileGuido Bertolaso . Per me è una grande emozione rivivere le stesse cose a distanza di tanti anni . Si inizia il 9 luglio con la Swing Big Band l ’ orchestra giovanile della Scuola Civica di musica di Novellara . Annullarlo , sostenne Leanza , avrebbe comportato la restituzione di circa 2 , 5 milioni al ministero del Lavoro . L ' Enac continua comunque il monitoraggio dello spostamento e dell ' evoluzione della nube in coordinamento con le autorità aeronautiche comunitarie . Utilizzando camion , elicotteri , perfino muli per trasportare il cibo e per raggiungere quanti erano tagliati fuori dagli aiuti , abbiamo fornito razioni di cibo per un mese a circa un milione di persone . Per la tentata scalata Unipol - Bpl nel settembre del 2009 sono state rinviate a giudizio 28 persone , tra cui lo stesso Consorte e l ' ex governatore della Banca d ' Italia Antonio Fazio . A Tartaglia è stata concessa la libertà vigilata per un anno , durante il quale continuerà a stare nella struttura dove è attualmente accolto , con l ' obbligo di conformarsi alle regole del direttore della comunità terapeutica . Dopo l ' avvio positivo della borsa di Wall Street , gli investitori italiani hanno continuato ad acquistare . Borsa Milano in rialzo con Unipol e Mediaset , giù Fiat - Yahoo ! La stessa cosa che accadde agli inizi di maggio di un anno fa , quando l ' ex first lady annunciò pubblicamente l ' intenzione di divorziare da Silvio Berlusconi . Non dico che la direzione dell ' istituto stesse facendo niente di male , ma per tenere sotto controllo così tanti bambini era tutto rigidamente strutturato . L ' importante comunque è essere qualificati . Se già Lola correva a fatica , Drei è uno sprint bruciato in partenza : ginnastica per sesso , stretching per stile , anoressia per poetica . Se l ' oggetto o il pezzo di cibo ingeriti bloccano le vie respiratorie bastano 2 - 3 minuti provocare la morte . I suoi idoli per quanto riguarda lo spettacolo sono : Lady Gaga per la canzone , Barbara DUrso per la televisione e John Travolta per il cinema . Un professionista con anni di esperienza e successi che per l ' ennesima volta si è distinto in una competizione piazzandosi sul gradino più alto del podio . Un macchinista di 53 anni , Giuseppe Carbone , è morto , ieri sera , investito da un locomotore nella stazione ferroviaria di Catania durante una manovra di aggancio di alcune carrozze prima della partenza del treno 854 diretto a Milano . Ma ad avere la peggio sembrerebbe essere stato proprio il condominio di Mons . pob " Sir Robert Scott Caywood " Fazer um vinho bom é uma habilidade . Qualificação para o trabalho A candidata Karla Daumásio , 31 , se espelhou no exemplo de uma prima para definir o curso em que se escreveria . Só pratica o que não presta e ainda é metido a bosta . “ Os alunos usam uma quadra da comunidade para praticar atividade física , a da escola é inviável ” , relata Herval . Ruth diz para Rosana que começou a espionar os trabalhos da Dr . O curso foi ministrado pelo 2 º sargento do Corpo de Bombeiros , Jairo Garcia , que não cobrou nada da associação e prometeu para os próximos dias mais um módulo desse curso , atendendo a pedidos dos participantes . O PT tem a vantagem de , junto com o PMDB , ter feito uma bela maioria no Congresso . Informações podem ser obtidas pelo telefone ( 11 ) 2692 - 1866 . De tanto ler as leis do jogo , passou a se interessar mais profundamente pelo assunto . Luiz Balbino disse : 18 de outubro de 2010 às 16 : 02 É Serrinha , nada como um dia após o outro … 18 de outubro de 2010 às 16 : 00 Olha só quem fala de calúnia ! Quatro ministros devem votar contra ao recurso apresentado por Roriz no STF . A batalha de Gettysburg durou três dias e foi uma das mais sangrentas da história americana , com cerca de 50 mil soldados mortos no conflito . Com todos participando poderemos abreviar a paralisação . São muitos gastos , como lavadeira e transferência de atletas ” , revelou o mandatário do Cachoeirinha . 9 ) Possibilidade de o município exercer , paralelo ao órgão regulador , a fiscalização dos serviços prestados à população , investimentos e ampliações . Explico : atualmente , o Estatuto da OAB determina a necessidade de , além de preencher uma série de requisitos , ser aprovado em Exame de Ordem , para , só então , o bacharel em Direito poder ser considerado Advogado . Em muitos casos não é suficiente ouvir aquele que pede ? A primeira fase da obra entregue pela CPTM faz o percurso de 14 quilômetros entre as estações de trem da Vila Olímpia e Jurubatuba , na Zona Sul , com todo o traçado acompanhando o leito do Rio Pinheiros . Revelaram ainda que ele estava em companhia de um elemento conhecido por Richardson . O sucesso do coveiro de Guaçui ( região do Caparaó ) , Valdir da Colimpi ( PPS ) , que virou sensação na cidade , depois de espalhar o bordão “ agora é nóis ( sic ) ” , se confirmou nas urnas . fra Guy Lacombe ( entraîneur de Monaco ) : " Sur l ' ensemble du match , la victoire est méritée . Ces images sont , en effet , le fruit d ' une très grande imagination du reporter - photographe et aussi d ' un effort de toute l ' équipe rédactionnelle . Le service clientèle de la SNCB a traité , en 2009 , 19 129 demandes de compensation . Bernard Ourghanlian : La sémantique et la syntaxe du JavaScript ne permet pas de faire du vrai parallélisme et de tirer parti des ordinateurs multicoeurs . Harmony : tente de déborder les 7 , 22 E . Le Comité militaire de défense nationale ( CMDN ) conduit par son président le général de division Ranto Rabarison a déposé ses propositions auprès du Conseil consultatif constitutionnel ( CCC ) ce mercredi 2 juin . Il refuse toutefois de remplir un formulaire pour donner aux enquêteurs un exemple de son écriture . Le jeu se décline sous la forme d ' une enquête , dans laquelle le personnage Raphaël Cassagne rencontre les différents protagonistes de la série à travers Marseille , cela pour résoudre le mystère . L ' APM , quant à elle , récompense Azzouzi pour son engagement notamment en faveur pour le développement de la culture , de l ' éducation et de la paix entre les peuples en Méditerranée . Un stop de protection pourra être placé sous les 58 . 25 EUR . Euh je ne pige pas , le même jour on coupe les émetteurs hertzien pour mettre en marche ceux de la TNT ? Dans le Prix de Périgueux , Roura de Kacy s ' est imposée avec autorité sur la fin au prix d ' une bonne accélération devant la courageuse Rafale du Roumois . Le profil de l ' étape : La Rioja - Fiambala ( 394 km dont 203 de spéciale ) Compte tenu de l ' arrivée très tardive de nombreux concurrents la veille , le profil de l ' étape a été modifié . A leur plus grande joie , 14 élèves du primaire peuvent être ainsi pris en charge pour un trajet de 2 km . Un retour aux années 60 avec un État plus endetté que les collectivités " . L ' Adresse - Musée de La Poste se transforme en coffre - fort le temps d ' une exposition de raretés philatéliques mondiales , d ' un montant de près de 5 millions d ' euros . Ailleurs , on parle de maison numérique où tout est branché sur internet , du four micro - onde au réfrigérateur , en passant par les caméras de surveillance , la télévision et le portail . Le Centre de prévention du suicide procède à environ 15 000 interventions téléphoniques annuellement . Trente - neuf autres sont toujours portés disparus . Tab Candy pourrait également se coupler à des extensions tierces , par exemple à un système de recommandation de sites selon le contenu de vos groupes . spa Al término del acto , Álvarez fue ovacionado y aplaudido con gran entusiasmo cuando concluyó instando a todos a " continuar trabajando por la ciudad de Avellaneda " . Escrito por Zulariam Pérez Martí Jueves , 31 de Diciembre de 2009 01 : 00 31 de diciembre , 11 : 58 de la noche .. Nadie , ni siquiera los animales se salvan de la seguridad democrática . Lacalle les prometió ayer a varios sindicatos policiales que , de ser presidente , permitirá su sindicalización , para lo que propondrá una reglamentación estricta que impida la huelga . Con todo respeto pero esta chica lo que debe de aprovechar en inglaterra es que la encierren en un hospital psiquiatrico , tiene serios problemas de personalidad , eso seria mejor y no que vaya a ver al los parasitos de la monarquia . No asi la de Peñarol , quien se preocupa unicamente por su cuadro . Finalizó , simultáneamente , sus estudios humanísticos y musicales , para cursar la carrera de medicina sin abandonar su pasión artística . Hi Matic , París ( Francia ) : Ubicado en la zona de La Bastilla , fue creado , diagramado y pensado por la diseñadora industrial Matali Crasset . El problema es cuando el discurso entra en el terreno de las formas esencialistas o de valores morales innegociables , como el de Carrió . Cathie Jorrie , la encargada de elaborar el contrato entre Murray y Jackson por 150 mil dólares , detalló el contenido de éste en donde quedaban establecidos los acuerdos de lo que percibiría el médico y lo que nunca recibió por el deceso . En poco más de dos minutos , el edificio estaba en llamas y las columnas de humo negro habían copado la escena . Nos de ­ mo ­ ra ­ mos mu ­ cho en apro ­ bar ­ la , pe ­ ro se ­ rá una obra muy im ­ por ­ tan ­ te pa ­ ra Cór ­ do ­ ba ” , ase ­ ve ­ ró a la pren ­ sa Gia ­ co ­ mi ­ no . García dijo que de 400 litros de agua que consumen diariamente las personas ( hervida para consumo , limpieza del hogar , aseo personal , lavado de ropa , riego , entre otros ) , sólo 0 , 02 litros ( 200 mililitros ) se envasan para ser consumida . José Mujica dijo estar arrepentido de los hechos de violencia protagonizados por los tupamaros antes de la dictadura y retrucó las críticas de la oposición con cuestionamientos por " clientelismo " . Vuélvase más inteligente con nuevas tomas de escenas La función Smart AUTO de Canon cuenta ahora con 28 tomas de escenas que ayudan automáticamente a ajustarse a diferentes niveles de iluminación o de movimiento para obtener la mejor imagen posible . Primero , les hemos dado muchas facilidades a los extranjeros que han estudiado aquí para que se queden en Alemania . El alza de las tarifas en varios servicios , la reducción del empleo en los sectores intensivos en capital y la generación de muy bajos ingresos para el Estado . Arpaio informó que su oficina recibió una denuncia sobre los trabajadores ilegales de los restaurantes hace cinco meses y afirmó que fue la 53 ra redada para castigar a empleadores que lleva a cabo su oficina . Poco le duró la felicidad a Costa Rica , pues en la siguiente jugada Julián De Guzman recibió de Stalteri dentro del área y picó el balón por encima de Porras . Viluco ( AG - Energy ) pertenece al grupo tucumano Citrusvil , el cual es dirigido por los hermanos Pablo y Daniel Lucci . spa Al respecto dijo que , “ fue un fin de semana sumamente tranquilo , debe ser por el frío ya que solo hubo una clausura y pocos llamados por ruidos molestos ” . En los mecanismo de facturación pública el cargo fijo es bajo y el consumo es alto . Como las pérdidas fueron casi totales los vecinos se solidarizaron rápidamente , el presidente municipal visitó el lugar y se comprometió en enviar ayuda desde el municipio para tratar de dejar en condiciones nuevamente la vivienda . En Argentina todo es posible . Gerardo García Oro , integrante del organismo , en diálogo con Cadena 3 señaló que de 101 mil personas que van en busca de trabajo por año , sólo 5 mil lo consiguen . Los organizadores del III Encuentro Mundial de Músicas de Acordeón rindieron tributo a la dinastía musical de Los Romero por su aporte al folclor colombiano . Congratulaciones también a nuestra Zenia Gutiérrez . Desde las ocho de la mañana las dos casillas colocadas en cada comunidad se abrieron para recibir los votos de los militantes del sol azteca . Aquí hay que hacer una primera parada , ya que no es lo mismo instalar una red para dos computadoras que para tres . Ochenta años de la Estación “ Tomás Jofré ” Martes , 09 de Agosto de 2011 00 : 20 El último 3 de agosto se recordó un nuevo aniversario de la imposición del nuevo nombre a la estación de tren de Jorge Born . Rápidamente se derrumbaron las versiones de que Joseph Ratzinger proclamará beato a su predecesor cuando se cumplan cinco años de su muerte en abril o mayo de 2010 , que habían florecido en las últimas semanas . El efecto neto , por tanto es de 3 . 925 millones de dólares . Ningún periodista puede catalogarse de objetivo . Mantenla funcionando en tiempo presente para que logres de ella el máximo beneficio . El Festival Internacional de Cine de Toronto , que concluye el domingo , marca junto a Telluride y Venecia el comienzo de la temporada de festivales , en la que los estudios ponen a luchar a sus propuestas en los meses previos al escándalo de los Oscar . " Ninguno de ellos sale a la calle a explicar qué significa la tarjeta unitaria y el que abra la boca lo van a callar . Ganaron 9 , 24 % de poder de compra en ese lapso . Matías Bravo rechazó con la mano una pelota que tenía destino de red . El mismo contará con la presencia del Intendente de la Capital , Hugo Orlando Infante , acompañado por su gabinete de funcionarios , donde en primera instancia hará uso de la palabra la Subsecretaria de Educación , Cultura y Turismo , Lic . Adriana Vaulet . Acto seguido Carlos tomó sus cosas y se fue de su hogar . spa El Supermotard Argentino es una categoría que manifiesta en forma constante su dinamismo . Los médicos estiman que recuperará la plena funcionalidad en la mano derecha dentro de un año . Esperemos que sea lo mejor " , dijo Olmedo , en declaraciones publicadas por el diario Uno de Mendoza . Para ser donante de sangre no hacen falta grandes requisitos : solo tener entre 18 y 65 años , pesar más de 50 Kg . y gozar de una salud normal . Además se trabaja con el apoyo de instituciones científicas que son sostenidas por fondos públicos . De acuerdo con las investigaciones que sigue la Procuraduría General de Justicia del Distrito Federal ( PGJDF ) , Arleth Terán pudo haber tenido alguna relación sentimental con el futbolista y eso molestó a Edgar Valdés Villarreal , alias " La Barbie " . El ex DT de la Selección Argentina confesó el dolor de la familia por estas horas : " Lamentablemente está vulnerable , estamos todos sufriendo porque no nos imaginábamos verla así " . Conflictos aumentaron 49 % en marzo La conflictividad global de marzo creció 49 % con respecto al mes anterior y se multiplicó por seis respecto al año pasado , perdiéndose 33 . 820 jornadas laborales . Escrito por eduardomedrano @ televicentro . hn . Continúa la preocupación por parte de las autoridades sanitarias , por enfermedades crónicas que afectan a la población hondureña . Sigan disfrutando de las dulzuras de la vida , aunque necesariamente no aporten calorias . Ríos – Crocianelli la fórmula del PSP La gobernadora Fabiana Ríos en conferencia de prensa presentó la lista de candidatos del PSP ( Partido Social Patagónico ) . Maquinaria y personal municipal se encuentra nivelando las calles para luego proceder a la compactación y colocación del material asfáltico . El proyecto se tratará mañana con funcionarios policiales y de la provincia . Central no podía y se quedaba fuera de la lucha por jugar la promoción . Para el siquiatra infantil Alvaro Franco hay una serie de etapas que aunque no son iguales en todos los niños , sí reflejan aspectos generales del desarrollo del juego en los humanos . " Será de vital importancia para el ambiente económico general si la consolidación fiscal en el capítulo de gasto avanza incluso más de lo ya planeado y logra reducir el déficit este año en más del 5 por ciento " , dijo . En tanto , sólo un 17 % de los usuarios sigue sin usar casilla de correo , muy probablemente por falta de interés . Como ejemplo concreto , citó la presentación que el Papa hace de la oración sacerdotal de Jesús , " que en él alcanza una dimensión totalmente nueva gracias a su interpretación iluminada de la tradición judía del Yom Kippur " . Por esa razón de fuerza mayor , el Gobierno Venezolano , previa consulta con los Gobiernos de la región , tomó la decisión de postergar la realización de la III Cumbre sobre Integración y Desarrollo . La verdad es que me quedé en Babia . pob Segundo informações da polícia , A . P . S estava em uma marcenaria na Rua Bruno Garcia esquina com a Rua Duque de Caxias no Centro quando M . C . R de 18 anos e um adolescentes de 14 anos filho de sua amásia tentou roubá - lo . Piloto bom eles tem e se chama Kubica . É devida pensão ante a perda parcial da capacidade laborativa da vítima até a sua convalescença . As primas não eram feias , mas caladas demais . Na ocorrência do roubo , a quadrilha fortemente armada rendeu nove vítimas e levaram o Corsa Maxx com placas NLB - 1664 de Rio Claro com aparelho de TV de 32 polegadas . Vamos aprender com por que do profeta Isaías dizer que como a águia , nós vamos renovar nossas forças . Aproveitou para anunciar que o Brasil está fazendo gestões junto ao governo japonês para vender álcool combustível , aproveitando o dispositivo do Protocolo de Kyoto que determina a adição de certa porcentagem de álcool à gasolina . O advogado tem a proteção legal , constitucional , de independência , de liberdade . Na contramão , estão cana - de - açúcar ( de 4 , 32 % para - 2 , 05 % ) , café em grão ( de 5 , 68 % para 0 , 34 % ) e algodão em caroço ( de 5 , 67 % para - 2 , 39 % ) . " Aprendi a jogar usando laranjas " , diz , resumindo a origem pobre . Assim como também se enfrentam União Arujaense e Parma . Ele foi escolhido pela inteligência , pelos intelectuais paulistas , para representar o " bode exultório " . Acho que tem que começar agora , na atual legislatura e se depender de mim , será ” , afirmou . E também com outras universidades em outras partes do mundo . Estamos as vésperas do início de uma colheita extraordinária no estado , e isso vem a contribuir muito para os negócios acontecerem . Ressalta também que as peças ficarão expostas até o dia 15 de setembro . “ Nós fizemos com que o beneficiário ( assentado ) participasse do processo . " As crianças serem lembradas é muito importante e fundamental para a formação " , disse . Em sua avaliação , a participação popular no trio elétrico foi bem maior na terça - feira , quando o caminhão de som animou os moradores do bairro Hilda Mandarino . Reinou de forma autárquica pelo terror . fra La direction de l ' entreprise n ' était pas disponible pour une prise de position . La perspective d ' un accord qui permettrait au groupe d ' assurance de se renforcer en Asie s ' est éloignée , mais n ' a pas disparu . Au contraire , ils ont oublié de mettre des dispositifs favorables à l ' instauration d ' un climat d ' apaisemenent » , a - t - il avancé en rappelant , entre autres , l ' idée d ' indemnisation des victimes des évènements de 2009 . On débattait des orientations budgétaires pour lannée 2010 , hier soir au conseil municipal . Les Mondiaux en salle d ' athlétisme ont débuté ce vendredi à Doha , au Qatar . Les francais feraient mieux de s ' occuper de leurs retraites plutôt que de donner encore de l ' importance à tous ces crétins , eux ils s ' en foutent de nos retraites . A lâge de 16 ans , jai décidé de prendre des cours de chant chez Jean - Daniel Vitalis , jai alors eu un déclic et su que je voulais en faire mon métier . Contrairement à leur précédente rencontre , en avril 2009 , lors du G 20 à Londres , qui s ' était déroulée dans une ambiance tendue , cette visite d ' Etat a été l ' occasion pour les deux responsables d ' échanges " approfondis " et " sans tabous " . Aaton 35 mm , deux perforations par image . Les demandes d ´ accréditation ont afflué des quatre coins du pays et des magazines peoples , à la recherche d ´ un scoop de plus . Il a fait allusion à de « faux témoins » qui ont « détruit les relations entre la Syrie et le Liban et politisé l ' assassinat » , ajoutant qu ' une « nouvelle page a été ouverte dans ces relations depuis la formation du gouvernement libanais » . L ' Espagne , le Portugal , l ' Italie , et peut - être un jour la France , risquent à leur tour de vivre le scénario grec et d ' être menacés d ' insolvabilité pour leur gestion calamiteuse des finances publiques . Multiples des plus attrayants si on les compare au reste du marchà © . Il est vrai qu ' en 2009 , les investisseurs se sont remis à acheter des titres cycliques et les ont poussà © s à des niveaux assez à © levà © s . Les psychologues proposent alors dancrer le changement climatique dans notre quotidien , notre proximité immédiate , et non dans un futur éloigné et hypothétique . Ils amènent à des tâches plus variées , les défis changent régulièrement » , a - t - elle fait remarquer . Au cours des trois dernières années , le colloque a généré des retombées . « J ' ai appris le français à l ' école , explique Markus . Au final , les Zurichoises n ' auront eu besoin que de 69 minutes pour se défaire d ' un adversaire qu ' elle retrouveront dès la semaine prochaine en demi - finale des play - off de LNA . Dossena quitte les Reds pour NaplesLe défenseur italien met fin à son aventure anglaise contrastée avec Liverpool . Il a insisté sur la nécessité d ´ une " République irréprochable " qui se fait vraiment attendre . Alou Diarra a , lui , joué un match plutôt transparent contre Nancy . fra Hier dans les rues de Bruxelles 75 % d ' Africains . Ces affiches publicitaires du ministère de la Santé ont pour but d ' encourager le port du condom chez les jeunes . Pour être franc , je ne me souviens plus de ma réaction ensuite . Le réseau d ' Hydro - Québec il fonctionne sur une base très ouverte , qui donne un accès non discriminatoire à tous " , a déclaré M . Vandal en marge de l ' annonce d ' un essai de véhicules électriques , au Salon de l ' auto de Montréal . Les élus républicains seront interrogés par Obama sur la méthode qu ' ils préconisent pour réduire les coûts du système de santé et développer la couverture de l ' assurance . Ils pouvaient tout gagner , ils sont en passe de tout perdre . Le casque HS 1 devrait être disponible à la vente dans quelques jours , et son prix devrait tourner autour de 129 euros . Il s ’ agit de démarches personnelles menées en solitaire par M . Olympio en totale contradiction avec les orientations du Parti maintes fois exprimées par le National , notamment celles de ne pas participer à un tel gouvernement . C ’ est là que le livre de la Genèse ( XXXII , 23 - 33 ) situe le combat singulier entre le patriarche Jacob et un ange mystérieux . Après la descente , le Wydad s ' est retrouvé seul fra Encore faut - il que le devoir écologique se conjugue avec un intérêt économique . À part quelques travaux de finition , les nouveaux locaux de l ’ ambassade des États - Unis sont quasiment prêts à accueillir les quelque 300 occupants . Construit en Belgique , le véhicule de 42 mètres , qui est arrivé jeudi matin au Bachet , a transité par la Hollande et l ' Allemagne avant d ' arriver au Bachet de Pesay . La réussite de cette observation est le fruit d ' un joli concours de circonstances : un matériel très performant dans un observatoire situé sur la trajectoire terrestre de l ' occultation , le phénomène se produisant pendant une nuit claire . ArcelorMittal recule ainsi de 2 , 5 % à 31 , 93 euros . Le week - end a réuni plus de 80 participants pendant 48 heures , qui ont contribué à la création de 7 applications innovantes pour liPhone et liPad . Hermès , qui publiera ses résultats semestriels complets le 31 août , table aussi sur une amélioration d ' au moins un point de sa marge opérationnelle courante , exprimée en pourcentage des ventes , sur l ' ensemble de l ' exercice . Les Verts militent pour un train qui ferait le tour de lîle et provoquerait une révolution des transports grâce à sa gratuité . Le directeur de cabinet de Nicolas Sarkozy salue la diminution des frais engendrés pour les sondages et les frais personnels du Président pour le budget 2009 . Il était discret , mais reconnaissant " , se souvient Martin . En général , es hémorroïdes ne sont qu ' un problème passager qui devrait se résorber en moins de 10 jours . En fin de classement , Bordeaux ( 0 point ) , essayera d ' imiter l ' OM et l ' OL dimanche soir en clôture de cette journée pour s ' extirper de la zone rouge , partagée avec les promus Brest et Arles - Avignon . La SNCF a reconnu que ce problème ne se posait que sur les rames non encore rénovées . La Nouvelle - Zà © lande est une monarchie constitutionnelle , dont le chef de l ' Etat , aux fonctions essentiellement honorifiques , est la reine d ' Angleterre Elizabeth II reprà © sentà © e à Wellington par un gouverneur gà © nà © ral . Hillary Clinton devait par la suite être reçue par l ' émir du Qatar , cheikh Hamad Ben Khalifa Al - Thani , avant de prononcer un discours devant la septième édition du Forum mondial Islam / Etats - Unis réuni à Doha . Mais pour Kim Källström , les Gones auraient mérité de terminer la rencontre avec les trois points de la victoire en poche . Au Letzigrund , Aarau a enregistrà © son premier succà ¨ s en dà © placement depuis un an , soit le 18 avril 2009 . Le but dà © cisif a à © tà © l ' oeuvre de Mustafi à la 62 e . Aux yeux de Brière , le CH mise également sur un agitateur de première classe pour allumer le feu en Maxim Lapierre . Y perdent la vie deux des preneurs d ´ otages et le skipper , mari et père . Pour l ' ANEL , il s ' agit plutôt de " faciliter la commission de violations en ligne et d ' encadrer le contournement des mesures techniques de protection des oeuvres " . ita Dovrà consolidare la situazione di equilibrio economico - finanziario della gestione aziendale . Non sarà così semplice come sembra , ma Napoli comunque è più che favorito a 1 , 50 BetClic / Bwin / Matchpoint . Al raggiungimento del numero richiesto , potranno recarsi presso gli stand adibiti al concorso e consegnare la cartolina . SACHSENRING - Passo indietro per Marco Melandri al Sachsenring . La seconda vittima è un indigente , che stava molto vicino a un passaggio a livello collassato . Penso che la società non abbia mai avuto la volontà di cedermi " . Dunque , Maroni vuole vederci chiaro e nei prossimi giorni ascolterà il prefetto di Lecce per capire le motivazioni che hanno portato a questa scelta . I carabinieri hanno arrestato i giovani duellanti maggiorenni , tradotti presso la casa Circondariale « Ucciardone » , e denunciato il minore . In compenso e ' rivisto al rialzo il dato di novembre che registra + 4 mila unita ' , contro le - 11 mila unita ' inizialmente stimate . Alcune attività vengono svolte anche nel resto dell ’ anno , ma non in tutti i villaggi e per tutte le lingue . Il Consiglio di sicurezza delle Nazioni Unite affronterà oggi ( 3 agosto ) , in una riunione a porte chiuse , la questione degli scontri verificatisi stamane tra forze israeliane e libanesi alla frontiera tra i due paesi . L ' annuncio dei talebani segue di poco quello della polizia afgana , che trova i dieci corpi trucidati nella provincia nord - orientale del Badakhshan . La tedesca , già oro nella supercombinata , è stata la più veloce sul tracciato reso ancora più complicato dalla nebbia che avvolge Whistler Mountain . Questa Germania che sta ritrovando se stessa , ormai tornata un Paese normale , crea naturalmente problemi ai vicini . " E ' un acquisto importante , è molto probabile che acquisiremo la metà del cartellino , definiremo nelle prossime ore " . In questo senso lo stesso Sacconi ha parlato di una '' piu ' ampia iniziativa di contrasto del lavoro nero in agricoltura che interessa non solo la Regione Calabria ma anche le Regioni Campania e Puglia . Noi pero '' abbiamo voglia di riscattarci e di tornare a vincere . Sono gesti di inciviltà che non devono rimanere impuniti " . Il primo passo è in Chromium 5 . 0 . 360 . 4 per Windows e Mac ( 5 . 0 . 360 . 5 per Linux ) , ove oltre all ' inclusione di Flash Player è stato aggiunto anche un semplice plugin manager con cui gestire i vari plugin da abilitare o disabilitare all ' occorrenza . Nessuno vuole tornare ai manicomi - premette Palumbo - ma vogliamo migliorare l ' assistenza ai malati e alle famiglie " . ita Il gran rifiuto di Napolitano suscitò vivaci reazioni , di consenso e di dissenso . L ' opera venne commissionata sotto al presidenza Mitterrand , all ' epoca dei grandi lavori , a metà degli anni Ottanta e voleva rappresentare la " nuova Francia " , dinamica , che emerge attraverso la superficie dell ' antica capitale francese . Monsieur Henri era una spia particolarmente preparata . In relazione alle erogazioni effettuate alle Onlus , di fatto le più diffuse , la deducibilità massima è alternativamente di 2 . 065 , 83 euro o del 2 % del reddito d ' impresa . BERLINO ( Reuters ) - Il cancelliere tedesco Angela Merkel ha chiesto oggi " verità e chiarezza " per lo scandalo degli abusi commessi su bambini da esponenti della Chiesa Cattolica . Gara fotocopia per Alex Zanotti , alle prese con il porta roadbook che girava male nella prima speciale . Si tratta di Walter Barbero , di 56 anni , residente a San Pietro Val Lemina , nel pinerolese . Può darsi che nei prossimi giorni qualche altro deputato entri nel nostro gruppo " . Per il Pd scende in campo lo stesso Bersani . Un gesto simile lo compiranno anche l ' arcivescovo di Vienna , card . Con loro ha visitato la nave e ha potuto verificare sul campo quanta attenzione viene data in questo impianto ad aspetti fondamentali come la sicurezza e l ' ambiente . I Forti , infatti , vennero realizzati fuori della cintura delle Mura Aureliane a fini difensivi e oggi sono una parte integrante del tessuto urbano che attende di essere riconsegnato alla vita della città » . Roma , 24 mar . - ( Adnkronos ) - " Dobbiamo dire ai giovani che questa scoperta straordinaria di internet e ' uno strumento che va usato per divertirsi , per studiare , per lavorare , ma nasconde delle insidie . Egli , infatti , sostiene che i buchi neri evaporano , si dissolvono con il tempo , perché fornendo l ' energia ai fotoni che se ne vanno in continuazione questa , ad un certo punto , si esaurisce e del « mostro » , alla fine , non resta più nulla . E poi , bisogna creare un account ? Insomma , Cina e Africa hanno tanto da guadagnare . Lo dice il bollettino medico del prof . Martinelli , primario dell ' Unita ' di rianimazione dell ' Azienda ospedaliera San Salvatore di Pesaro . A Napoli si vive in maniera straordinaria , ci sono situazioni eduardiane e mi riferisco a quelle raccontate da De Filippo " . Ma su console gira come nel video o ci saranno restrizioni ? Poi aggiunge una riflessione : " Il percorso politico non s ' intraprende solo per gli appuntamenti elettorali . pob Então se fosse um evento financiado pela Secretaria Estadual de Educação nós teriamos o prazer de receber a Seleção . Juliana Nogueira , gerente de Turismo da Sematur , aproveita para destacar que o Centro de Informações Turísticas , na entrada da cidade para quem vem de Castro pela PR - 340 , fica aberto mesmo no feriado para oferecer auxílio aos turistas . No início dos anos 50 , John Herbert conheceu Eva , a Vivinha , que estava ensaiando numa sala do Teatro Municipal de São Paulo com um grupo de balé , ao qual participava . Como se não bastasse , ameaça também a sua família … Qualquer semelhança não é mera coincidência . Tem alguma coisa errada Um homem despencou do telhado da rodoviária de Balneário Camboriú esta manhã , quando fazia reparos numa caixa d ` água . No Brasil foram confirmados 757 casos da doença até o momento , com um registro de óbito no Rio Grande do Sul . Deu no Jornal Circuito Mato Grosso impresso : Ele quer ser o novo Blairo Maggi Adriana Nascimento - Redação Jornal Circuito Mato Grosso . Começa uma gritaria histérica . Há muito tempo que um governo não se lembra que existe em Sergipe uma cidade chamada Divina Pastora . O valor estimando para a campanha do Partido Verde nas eleições 2010 é superior ao valor da campanha de Lula em 2006 . O jogo perdeu velocidade e passou a ser disputada essencialmente no meio - campo . É contra quem acha impostos em cascatas perversos para a economia , que onera a todos , inclusive os que produzem e consomem , independentemente da renda . A Lei nº 11 . 924 , de 17 de abril de 2009 , acrescenta um parágrafo à Lei dos Registros Públicos , autorizando o enteado a adotar o nome de família do padrasto ou madrasta . É de responsabilidade do interessado a escolha da categoria de inscrição , não sendo exigido nenhum tipo de comprovação . A prefeitura aguarda um laudo técnico para tomar as devidas providências . O também parlamentar Percival Muniz desfalca o PPS na briga por cadeira na Assembleia . Clique aqui ( 1 e 2 ) para ver os documentos . Por captar a energia solar , o branco é vibrante e estimula os sentidos . O ex - vereador perdeu o mandato por ter sido condenado , em 2008 , por porte ilegal de arma . A chuvarada trouxe problemas para você ? fra C ' est leur faute s ' ils amènent leurs enfants sur le champ de bataille commente un des membres de l ' équipage . Moins de 1 % des détenus y sont inscrits . La nouvelle convention collective a été présentée mardi par l ' Association des joueurs et les dirigeants de la LCF . Le club a vocation à examiner toutes les pistes intéressantes pour lui . Le pêcheur indigà ¨ ne qui s ' à © tait trimballà © le poisson - une belle bête de 90 livres - depuis l ' autre cà ´ tà © de l ' à ® le leur rà © và © la en effet que les gens du coin connaissaient l ' existence du cÅ “ lacanthe depuis belle lurette ! Le chef à © toilà © dit vouloir continuer à transmettre sa passion pour la cuisine mais n ' a pas encore de projets dà © finis . Grâce aux Japonais et aux pêcheurs d ´ Islande et d ´ ailleurs , il n ´ en restera bientôt plus . Ceci permettrait d ' « ensemencer et de blanchir des champs de nuages » , pour accentuer leur pouvoir de réflection des rayons du soleil et diminuer ainsi la température de la Terre . Quelque 45 millions d ' auditeurs sont abonnés au système qu ' il a créé . Je sais que l ’ attaque des Argos n ’ est pas aussi menaçante que celle des Riders et que le test qui nous attend sera plus corsé , mais c ’ est le fun de revoir la Saskatchewan à ce stade - ci de la saison . La manifestation a bà © nà © ficià © d ' un " và © ritable engouement populaire " . Nous avons donné des instructions précises aux officiers pour qu ' ils ne provoquent pas d ' affrontements ni n ' utilisent la force de façon excessive " , a précisé de son côté le porte - parole du gouvernement , Panitan Wattanayagorn . Guillon utilise dans son humour noir des méthodes totalement inacceptables qui pourraient être facilement retournées contre lui . Un choc particulièrement violent , survenu dans une zone inaccessible par la route , ce qui complique les opérations de secours . Toujours au chapitre des recommandations , Goldman Sachs conseille désormais de vendre l ' action de Boston Scientific après qu ' il a suspendu ce lundi la vente et l ' utilisation de certains défibrillateurs . Après que Brandon Morrow eut accordé les cinq points des Red Sox en seulement quatre manches au monticule , la relève des Jays a fait le travail , limitant les Bostonniens à trois coups sûrs au cours des cinq dernières manches . Cet établissement avait participé au sauvetage de la première banque helvétique en lui accordant un prêt obligatoirement convertible de 11 milliards de francs , le 10 décembre 2007 . Ce dernier a reçu 19 , 7 % des voix . Ma saison est remplie . Barré à la Juventus , le milieu récupérateur portugais est à la cherche de temps de jeu en vue de la Coupe du monde . ita Quando sarà il momento lo diremo " , annuncia ai microfoni di Centro Suono Sport . Alcuni indagati , inoltre , avevano la passione di trasformare armi giocattolo in pistole vere modificandole con canne attraverso tondini di acciaio rubati nello stabilimento del Petrolchimico Eni . Dove è finito il prosperoso decollete ? Mi attendo che la Ferrari abbia un grande fine settimana , preparandoci bene per la gara , trovando il giusto set - up , facendo lavorare bene gli pneumatici " . BOLZANO , 8 GIU - Il tipico tessuto tirolese chiamato Loden e ' diventato ignifugo grazie a una idea del lanificio altoatesino Moessmer . " Quagliarella è un nostro punto di forza , l ' ho voluto io insistendo fortemente con il presidente dell ' Udinese , Pozzo , affinché cedesse il suo cartellino " , ha spesso ricordato De Laurentiis . Il governo ecuadoriano ha poi confermato di voler andare avanti con il progetto . I funerali si terranno domani nella chiesa dell ' ospedale Grassi di Ostia , dove e ' avvenuto il decesso . Da stasera su Canale 5 va in onda la fiction in sei puntate Fratelli Benvenuti con Massimo Boldi , Barbara De Rossi ed Enzo Salvi . Il senatore leghista Vallardi ha presentato un emendamento alla legge in discussione , ribattezzato emendamento grappino . L ' hanno capito tutti , anche i finiani " . Tuttavia la rivolta del popolo iraniano va avanti con lo slogan : morte alla dittatura - viva la libertà . Già certo del primo posto della poule invece il Bancole che renderà visita proprio al Messana sabato 20 marzo , in una gara ininfluente per il suo piazzamento finale . Incontri , dibattiti , convegni e ricordi in tutta Europa per le barbarie commesse nel tempo . Un ' idea può cambiare la vita , magari mettendosi in proprio . " Questo - ha spiegato - è un principio di chiarezza e di etica politica . " Lo scenario è uno solo , un governo di responsabilità nazionale , che lasci decantare la fase di barbarie politica , riscriva la legge elettorale e affronti le nuove scadenze europee di cui nessuno parla . Le operazioni di bonifica dallinquinamento si susseguono , insieme a quelle di messa in sicurezza del pozzo . Poi il numero uno del gruppo californiano ha ricordato l ' esperienza della casa di Cupertino nel campo dei pc . Al momento non c ' e ' un sostituto specifico per sostituire Dossena . pob Esse aspecto é importante , pois diferencia os Karajá de inúmeros grupos indígenas e de outros povos . Desde então vivemos e lidamos com o ideal democrático . Blairo foi pressionado por um grupo reduzido de políticos que o queria candidato ao Paiaguás . Além disso , ele quebrou o recorde olímpico da prova e foi bronze nos 100 m livre . Constava no prontuário que o detento estava com o problema desde março deste ano . A funcionária de uma loja de informática também relatou à reportagem a ação do assaltante . Serra leva ' bandeirada ' durante tumulto O que era para ser uma passeata em busca de votos no calçadão de Campo Grande , na zona oeste do Rio .. O levantamento abrange 24 bairros do município . O governador fez um movimento de eleger os seus candidatos até por autodefesa . O prefeito Evilásio está com a corda toda . Disse que a direção Executiva já deu iniciativa a uma avaliação da programação . Em entrevista à Redação do jornal PONTO FINAL , o profissional em Educação Física , Marco Aurélio trás esclarecimentos sobre os malefícios dos exageros e os benefícios de atividades físicas monitoradas para o bem da saúde . A organização da Marcha para Jesus estima em 5 milhões o número de pessoas que participam do evento nesta quinta - feira ( 3 ) . Será que é pouca ? .. Permaneceu no kart por 9 anos e obteve dois vice - campeonatos : paulista e brasileiro . A administradora financeira Salete Alves , 42 anos , não aprovou a antecipação de horário . Quando o Padre Ricardo White veio foi que levantou o catolicismo em Búzios . Outro resultado inédito apontado pelos autores foi o efeito da droga sitagliptina , indicada para diabéticos tipo 2 , em dois dos pacientes que voltaram a precisar da insulina . É muito elogiada por uma infinidade de artistas brasileiros e estrangeiros . Não há outra fórmula de ensinar que não seja por vínculo afetivo . apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/output.txt0100664 0001750 0001750 00000002130 14135770370 032424 0ustar00jeffjeff0000000 0000000 Rockwell NNP B-NP I-NP International NNP I-NP I-NP Corp. NNP I-NP I-NP 's POS B-NP B-NP Tulsa NNP I-NP I-NP unit NN I-NP I-NP said VBD B-VP B-VP it PRP B-NP B-NP signed VBD B-VP B-VP a DT B-NP B-NP tentative JJ I-NP I-NP agreement NN I-NP I-NP extending VBG B-VP B-VP its PRP$ B-NP B-NP contract NN I-NP I-NP with IN B-PP B-PP Boeing NNP B-NP I-NP Co. NNP I-NP I-NP to TO B-VP B-PP provide VB I-VP I-VP structural JJ B-NP I-NP parts NNS I-NP I-NP for IN B-PP B-PP Boeing NNP B-NP I-NP 's POS B-NP B-NP 747 CD I-NP I-NP jetliners NNS I-NP I-NP . . O O Rockwell NNP B-NP I-NP said VBD B-VP B-VP the DT B-NP B-NP agreement NN I-NP I-NP calls VBZ B-VP B-VP for IN B-SBAR B-PP it PRP B-NP B-NP to TO B-VP B-PP supply VB I-VP I-VP 200 CD B-NP I-NP additional JJ I-NP B-NP so-called JJ I-NP I-NP shipsets NNS I-NP I-NP for IN B-PP B-PP the DT B-NP B-NP planes NNS I-NP I-NP . . O O United NNP B-NP I-NP 's POS B-NP B-NP directors NNS I-NP I-NP voted VBD B-VP B-VP themselves PRP B-NP B-NP , , O O and CC O O their PRP$ B-NP B-NP spouses NNS I-NP I-NP , , O O lifetime NN B-NP I-NP access NN I-NP I-NP to TO B-PP B-PP ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_chunker_test0100644 0000000 0000000 00000000157 14135770370 033011 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/test-insufficient.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/test-insufficient.tx0100664 0001750 0001750 00000000021 14135770370 034340 0ustar00jeffjeff0000000 0000000 Rockwell NNP B-NP./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_opennlp_tools_chunker_chun0100644 0000000 0000000 00000000157 14135770370 032767 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/chunker170default.bin apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/chunker/chunker170default.bi0100664 0001750 0001750 00000052247 14135770370 034111 0ustar00jeffjeff0000000 0000000 PK iJ._R  chunker.modelUT VXXux }w|EM77(MĘa!!B$H.D( UTPiMJ ]ݙ9gnaؽSNsff=Mx<<_YK ={_:߱}{d=ݥu۩sٞlu'G_6u'O,h]7:{sE'ՈVgdώGtggk@YߝGh#fwQoti czWgO=..wYNz#[#FotGtÍdk]DĬs?vWٗw~xSGkNf'>N]ŕ~'3OtŘ'{adzyՅhz&undB1 lVb>ְo,+ (1ɱ0K5%cHYG\a_\^>sF1OـTR.xqR#Kp=B{R,f(ss=UVЌ7f(*g2=}jQe}@ <16yK&Zfq.PУݹ tS'3(Zde9~|I0lu(4BђJ;ۢ4*1 %!O<ӧ#4Mj A!}En)KEXkN>e2SRөM++Lk⟊JH"UpLΫ|ʫ$7m7"nMh8H"#hr4\f L&,1<֤-q>⊒X> %7'N"&R+KTroEY qsmg {[q7ݒFLcd1 -MMh^I$]**M]UQ&ӈ\A{Lr;hC8xiR\}Z%䉡1+|(Ü 5;q!%XDQcw:f/ (-8HDX2%+ B>qZѫa Nx(ՂW K dbn*>t|x!sFQ N2ܶ%7N9X XOA7,4U3YFD1\B%p,Bd?[ !zh?'uD hq|P֔W)12eJ\P& w+@m),X. հ&MQb إr=f( MR4ID(d D%4=hZR)|K=[ Wę@2^O@/s^ЦG*L͉\Ō22/H\[ei|jV21 8@H1-TCN:+&zLGJC)%2Z"PBh|@ػWI6dMUx71Mk™"L]-X+9ҝ1ʋ"HFcH&|pZuw&R( ֣Gw!q|>bŕɶ3Ŝl=F̬rSAڡ)2CsIOQGmij@#(L5.*VOEVR)m!3Nu2u(Z8%b*S%R< .{4jڼj- Y*& f,Iv4 0f4STD(^ρ(It)\:V#Q6 :f \q9X8B}KP䏩Pe?zjV4JL`L`͓s<2W 3=)jԊ ^%a+iu!vRjB4ؘX&`Lҫ+VSЏ:QA\*14HǨ_I(4 j(>R>Ӕo~bP"Kr} %@̷ $E}h!P,5ʁ0ޒ_%jBh Ĩɫ(A(\vP= O#9\~%h3>Z2U'( Id$ Md\bDRvFxVzphHRZat=U?p@N+ZٕtP1=ŽCBJ 4ؑyxHɘ!U"Cd~XcۜR;FA|*JGZNW9{&4GZqdJo b,7(EW\.xIXN&cc |""I>prIB'%(˨mƛԕS@өXG :`%$\e(qv&R(6jbq>B&XйHeIvLL( Ik0&p1D0!$Z3)4Mk.1UK\Eԙ[;Z0Ge,D‚=/044hPiTU%bӷX +Ok T&L z3r\Eyjl+$W*%9EZE= d?`0`IW+!8*b7_@`{N@mt‚5xE#Z#_[Hv T?i;u,-УzљKu^ViZa "Q 1V|8Tu&DdhGDf6xfuQm]V₟4vCC@j:k⧤X\t%T¬YQQcnIK8R/LZ!B,|&j>_ [&VgeV> h"!\Y_A'Ռk{3.͸s ( AJ"'Z 9Hȫyvf!p1'Ƈ̕q0,.2kLVC®Jz6Y>V "3**6t2Z# 瑐HNE- |\@X () )ԅZ$#BX9$G4ݜWa"e(߭J9wsaȔMYbrz\zl %phrʅ8Qԕ%Aَrܐ$@+ꕙV;ѭ8P*G[Fpf6#mt<*#qń9A eKRdWH3qbM~FC7V'EW_c]n{PĐ(7~T1x( ۉqWႋ-C 5M7TN+dJ6bn9I2˰KZaLRRRxĢ/(x۶0@bT˵u֯EbMsYF*/vgǓ'LFR*WjZ +BI*oE#!Ӭ8F6ةVa%ڶWiARz #0i (΁ 4@ڛ2I }jOf},lPW{W;*%$A{`/P@"] ܢ@ҜlJ. ydbhO"ʡKfFܗ|< i R԰ΞhKkIN Nt" J;1!%1')TN@ykp vmVA^3v"xS2?Cvc+.FRJ\TDiѬؙ,rv^·Jʧa;-gOS{8C3Nrx]Kۍ)|jK6 >K]hnRxXeӟ,2(iL,`=^88 Q)Y, JS:F2:eY L!\; J6h!)U$OrZQIGܯ2B*!?hjH#}5K,G _Dp/ GC60Loӱ+]SioJNqhj\%@B/:}4u Qq`n.W4S bZ*f쪐c1$ ͐2K-*Ds3z(+Zcv=X) H>ځNbe.Za*mVft*E$)Id uKQ'i]DiPj,F9R2Q85NeLVhA s P2(4=zot쉔]`-=D DDK3ԅF>lX4_iFd  .„uK+RS;ꋜ vdbZBSCH 4=rk)ŗA9w>_eu9T͈X(hZ>\!e'B$) _[4H-)IaWUΙ7U%m>%qf,[v|LeLy?"rJK:Bc)W"yd(qDj~nř0}\KkXiHKJ+GI.)c 0F+Rc &I eM.7hZ*|]&VVIfN-%dI1v[EE[ ۜ@L 0Ւ:uVzɍk@U euh_L0>iF,z7QpWuh˅U&B&Vl-#3kj!\壥 OJ# M4iN3 NRE i[LrhQ-J- =F[[ErD*ꣃHsP6Řy禢bGҁc^A\+lIr|]u5AY"a]S:2RuC m\A!PL"s$wNZi=7ɩ8b_DϞ|(;,Zfv24/mjJ\AZeE3ɭ'b2y"QeM yIы lbFBX9r$R  $yFgDzczLaiz`dH=5+ӶنMNK*NZ1S$VµSn Ɯ`; fa(w&]*:FZHd r$ϱHCk z*`f -\HkDetO# Yc=ti,@iO&$lP1)QFGE (r,6fC˨c!܈Eϯ;SXkrj_N-(PZE_iFVJ&ʑk>L0.7H2U<cc/ن TCǷDGXEgoX2cHVōZZ"zԯ5fsQZQk0||{ƪT_;G:S7an/`_ò>Zk:0._1VB^KVXsC0AVx}pib2oĐ~\=BG$^qj9ϜDGqu.*p8K{Op9`uq(+#<-2F-y&.{P(0N  FZ y( 'Wp@rʱ}B! EkyPqr`$D(Q5 4k+居bىkQɯq\&C}1mD!D>*1 .lOp1MAs9sxΕ@#$Bs1mFi$6(NurR u INқg.I'VF=VG O'*ODc 'R2eqLEZfiVD{x$Odj`~MAb5U'^_֭JaZ T$5M%E}J{cF :tcuR7L.R p[TKeP^;jk#$MVc0> P[eNZ۩UD*ٕ"|y#m=rbu-fU& \` ;bq)\ˡ%*~ xeOnExFbp@5֐34!ïUP:h9PhMǘO@ rUEz bVbCԁ39VpMo» ysuf""ӖF$@$hx8:3ķn]yqfOJr{΀|H\xbHe=*@Πͯ.^Wqѧ~JJD@[B* f3M4+?p PG?4'GD-B7dd2/%<Ƀ L0b=A]e̝٤|O8  px#/3md|af!ShlIM}=!TUWx3S4XڔcP]OG?^+I(\7ȚHqc9ϥE}ZBp"Z ie1L`*@qzObWO/]CM.˰r.JŅ&HQIx= OQ +"\]‚E j ;|ޓo4.Qw -K>[Q}UX!@Pv(~ӚTC̢!xD0!#W/) 7 u\sy4C1ZLp=/FV(A .p:Hp hѼCNx Gq&obEjP~ -@ ARWnf7nqS< k(] *tz#2*3tXyY(9Mڦ+<ap]y̪~Z`)}}vWʐ%֯0S"YZfti!{d!X™ >+w#EN"koy<'?GXs?hvu:\[y`ɹdP$bE#r;r9l֘vN0<> /Pt@ovV yછl*xD䄛I;w@ԼeqJʈ1:$O ۹8u'l)&"ޡAĩ'#tJuN3ŅP>zL)ssqYɃIePU*Of*R.*A>> wVJ28e6:je)єzNI.6_Oۈɭ}V=@T,04N& F w(cp%4(6q(<9X4'?a VςZrC%ܢxJ#^%B+A֡ѕQ#@T=!>BXc5yU-w~M$b5Rtwtt5˩g zI_!ό̐hQ!GX >ZN6uhq[Bޟ 2B!of}(j]f f"2t{ h'7tKBZ b3$mho\1\+Ѱ؊@ڂҴɼlCG|/~U)$p, isiW{Hvl-lʺQEQhBHV}$6K6 /=ʹ&фp.+V RH VWP'(s̎wa[[h߈iZ.HOom`ޥۍ`+QqUv/E\dP@CCqrwAE+0L^?CK噆ߡ7u&cu$, T$H 1zT.A'h;8lТF_|*qTU"1y .H_#ZX 蘒;MLښ5 #ɀ>V CLH6b\0F@R&}☇n G)gC d ċ4H\rڼE %6F~NMqNpiʥ"[oaqO -ŢM Y\B2O{i'Yu6/.eТxb؞qvћWӞ2q1c3|]]wp` kHtէ~ezzױG7ڿu|蒷ޞ&v}jӆs^a|K:ߟv^Ȯ%nH 2CQ-oal=:[mY6ZV4_S䊿U_7m"xgCw,]vEI?ua/_yppφnٌ sLwu_["==߶wjl3 Gخ?(/w'uOELUt@0?ȅl!`$=at%G~v [WkoP;8oþ=A#?ڙ^~9q~Kz}?]Z_>=tzzɓz!D{ I>|F90( H>r |.|_N>ø@7SopU?\կKT=8kR)rk |\g/Pv@?A`\Ǻ_ʮH:>wA:xshQM\x p Y:L(7(g`!G!`wgޡ?:vyrҸM^_hAnAOa8/CҎ> LC>vp_in~Hyz!V~r7Gm74@rix1 qҼ~ k}A ͘/hƿknذekwSCnP?x^=SS / =Kczbiδ%]_<_y \g,#Gw~F|cY3893* @@\"  X~}ŋ0?7 ôWM`ߌ'O^heʎ]8Ľ` ܋!CVQ\#ރx،[%}l/=@}58a 'v3۲/@na\ {tA}3ӎ \YzEߴ`g ;Nxay נ]3qQ#Qs=> A94>`*&= =Dg3ig%ޓt~qA?=y5֚~,v)yJǰ٣u\v0?ulYog5-4VڨXn>j:enDRmO`{-/`ۓ; خmFG]vije>.*eۺ-In;6^f?LlǙOIŇjڌlX՜8{MXO/E>vvf1 nd;[}=1~ʦ=5eRVaA׻Vr뚌jVOfϭ#d9O oޜ_6oEf;F߳jӗ?~ţdX7bLזs?Wazj{/Myo¶8q߳]-;jlW))jڲὗXɪv͏W\&ۚ3g5} YxwzUS_fV4վ}*KdB]9fOݢCÞ?^)fpr׌?n7b۞t4lͫ7?:U߱}sc}Ƴڧn;d[tbȶtO쮊ŷҪτ>zՈ[cn|RVmlS'JzpY>3Ƿ`;j .g5GRdy,|lӐkz8{wۜ)y~Ck2٦g6z7毟0l[C-NMW3َ&aʮEMaU%}F76.iƈg.zOZ8tyWvX{[<5lcԻObfvPx/&n~)Ӟ8ɦ5mOຶ;~mΎ>u}o:g拞ΪOqFo"\M ^ުUN N㖿g{=5[U+Wf{mSY~?u&՟^uӮ'z?W캟mm}S>o}s,-\sg{{dpcz~4m _`sWTWEZO5oqͺVulRrn6}Fg~͞^ƕ &w/a̮f5{&O -v>]wT["=]n5{^>mtsCo{<'*ցmz'Ju>ևpXeĠ o:UbKsYZY{߻崇mpѳS"czc{Ve>;3saxEݓݓq^{ߊeGXeۯSlǫ iѼA5wã?L&yel7}lwغ?/ =~Kl}~- OgV۞`E5W7|4:h3Wv}m8o/#5w݉$VxfA\`Uk(ϲc5vSӃYe;K>>-lĺ>Cxea/o,j6d_ݷ= g^Q؎]>U^)?ͷ]dՖ,;_&{.7vO asfyUe>Tg7% 69}s볍>QKf%6LC^aIc0XU v /ߕ|tS,<]"{]2[kީw3{骎C.yd 'GP,0*.{|oWV]qDZIן&_4}j{+ؼ_δ7~#ak[m*Xpf{XU=mmy\]O}xJvS,9N9<Ϭ*mg5CӟXeh8g&U'dT zռ7=ՏmsҒ>63ٖ[6w>~V6_[{O/JY͈6ŪΌ$WOvjӞO?j֦nηCnKjދm~3Nbu"Т[N.-y?ضh;wO3}v o˜1u?QW{\5_Ggٮ{״gmleП5$]2UU.yhUW7f+-?p-9~GkuO_'k:rI斵3Ͼx5ئ>]5ՏXٷkgUeu_?nov잧Ty.{E%dRʧ&vm¶oElΕ}cf;3&ۖpĶV߼lun<8p{~+۾h_vyYd>aˬ#F]/%+LͻKY,u<|7:kǏNR}-γ!7wݛvkxKVcRƧG'l:c #sNjH-ߘ:! t<»n.Vt[Pu3.߆qLڔZ\_e 缰8K(y$]L]58x~ĞU=|껶(|~a\Hxz \x. o_zKH7xa\}^4 | .h k"pa{eWR.M\vNr~0.?@М&`0:a_.o]?Ioî=Fc0߆SNQ?5#yf3M\൤+ϛtn|@/[嗏{ +}RxG :쌜' 1sTCH`O@w| hhPq;95>u*voT?$rk 3// ^ 7~y559y1kn`lN]!džU X%}9ŀ ׀;y}{_hrz6h%r@[_@n x?$C/CRN0>| }4p o(\=W&=/ACOj1O8[&Nc/ ]?AOWtSvo{?#>}ʳK`^Ѱ&n@<]>K<}E{)t2pi?EO(y=vĩ/=gLvU ymqqyO%c[SxNʋ=//8u~  .:6Jpȃh?פzlGb;`G6kq]Gm9ą?#ok }@.}SC^GzH|J2V??zvvayw巓~C_%"q)>K1(wPø| ;GǮ q?FצpOcO;.?ơ<^;Ao|s-&=˼C ѿJdY5f8Kh쑑OBy !}0W'`A5퇴/G2|3Y2lhdo`A[@ V!?@ k7致&GkޑxJ> pw)==n猼g ?y4rîѿ[tfw$ݐ`?#_g0 .3q8|1%3@>Jy?#/f_ß?j pQϹle;35.ןyAax (RnM\n ګ|gb'Y}훧kuVty SXGC+ڮ_GgXMrⅯNW櫟^ۖ\feW?̶޺lksZ8Ox9YͰgObtxx^6Գ?UZ=/KYJ?f5xos>m}ά6)/q̯{.a[b-#+Xuǁ}U=srwE)7tژۿgu~vۿg8گdO^fun}uuLxbs! und5S6a)َGD~ZY?YMgنm%}լTռڟ[;klnnX;RNf[yҼ6wm_^Xls J6;y735_M%?>+C?t{)z5ﱆ/o1z~cU ?~%d岪_e5k8eu{2Ǫ{xڈ{]Ӣ˳6/㺳b xqE'a?~yCVlp{l?m׎izE4#x6 kgr={րl[Ʀ&[nƶPkZVt_j3z0v<~܂h;]i^݊լ}Yն%}gQ{ƭ-%9 M0~Ox \o|2܌w}Rgϧ6=pz>!S]`{܇>~>`F?pײxe+\ }lƿW+ږxAI9N: 7F?Ǡ7Czt4ۃq OFA>MtB>ϙ|sg\7Fg/~Ç޿=OyW}Sq}C9y131mӤSϪvٯCf;&]nI=2힩}N~91~88O84Ig=5֏ٟ?H/S}rws_:+]5S7[oErb5얤9I]/ކu];wK׳#Qww?~s&kxK-'7eU9߅{x6-idU{Fl-3}. | K쎘~ Yli7 ?7rP?7wjjLف|6-;8PՓ\M/9`jW~ЄzM5zoQ&7$z9~wӰc*؁kmفV]n\jx/tU]lTUnk@)bjZ*MPŶX0@%E&HhM QSCo`hM]O +PcEj MU|{f9s_l;x)xCȋVy /['mͫ ի{kCg#g+ֺbg+=Q2o=;Q8cI L_K免m/u.CKzWgX]iTW|9yB>՝Y&Xg/s}9OtFu\>)xU?͡Od> <Ձwœ=Ҽzgơ͑KG&R1fɤ 'pr3Ӷ>^e/#>`"{sF}",޲s릻2yO2w6N_ߝ8׌﯏[NȬpOTގKth 5&~ ]֙q-۟גk}+{1T0؟ӽw_dܧO4ظ|o\+ϿxDg/@ >|0?X ^|fiq6M穚(-yDe[U5癞DCmy:mmS8oz3NSTv/zej9g֭7}{زlۓ;u%V.N`_}5_l|֪2>gᅺLU. p5|g{qѼR'''=}3W=:y >>.sꔅ>W>_|RGAXC_To>*0^,|}W<8[s+o@]%^7g{99O~A~h~{//c/Op߬~`Oc@׀М?9gi__gԍ91xpPKˬiJҥl;manifest.propertiesUT ~XXux M=k0Ew Af_Z)NK+?̓-= ..s=VCN]ŕ~'3OtŘ'{adzyՅhz&undB1 lVb>ְo,+ (1ɱ0K5%cHYG\a_\^>sF1OـTR.xqR#Kp=B{R,f(ss=UVЌ7f(*g2=}jQe}@ <16yK&Zfq.PУݹ tS'3(Zde9~|I0lu(4BђJ;ۢ4*1 %!O<ӧ#4Mj A!}En)KEXkN>e2SRөM++Lk⟊JH"UpLΫ|ʫ$7m7"nMh8H"#hr4\f L&,1<֤-q>⊒X> %7'N"&R+KTroEY qsmg {[q7ݒFLcd1 -MMh^I$]**M]UQ&ӈ\A{Lr;hC8xiR\}Z%䉡1+|(Ü 5;q!%XDQcw:f/ (-8HDX2%+ B>qZѫa Nx(ՂW K dbn*>t|x!sFQ N2ܶ%7N9X XOA7,4U3YFD1\B%p,Bd?[ !zh?'uD hq|P֔W)12eJ\P& w+@m),X. հ&MQb إr=f( MR4ID(d D%4=hZR)|K=[ Wę@2^O@/s^ЦG*L͉\Ō22/H\[ei|jV21 8@H1-TCN:+&zLGJC)%2Z"PBh|@ػWI6dMUx71Mk™"L]-X+9ҝ1ʋ"HFcH&|pZuw&R( ֣Gw!q|>bŕɶ3Ŝl=F̬rSAڡ)2CsIOQGmij@#(L5.*VOEVR)m!3Nu2u(Z8%b*S%R< .{4jڼj- Y*& f,Iv4 0f4STD(^ρ(It)\:V#Q6 :f \q9X8B}KP䏩Pe?zjV4JL`L`͓s<2W 3=)jԊ ^%a+iu!vRjB4ؘX&`Lҫ+VSЏ:QA\*14HǨ_I(4 j(>R>Ӕo~bP"Kr} %@̷ $E}h!P,5ʁ0ޒ_%jBh Ĩɫ(A(\vP= O#9\~%h3>Z2U'( Id$ Md\bDRvFxVzphHRZat=U?p@N+ZٕtP1=ŽCBJ 4ؑyxHɘ!U"Cd~XcۜR;FA|*JGZNW9{&4GZqdJo b,7(EW\.xIXN&cc |""I>prIB'%(˨mƛԕS@өXG :`%$\e(qv&R(6jbq>B&XйHeIvLL( Ik0&p1D0!$Z3)4Mk.1UK\Eԙ[;Z0Ge,D‚=/044hPiTU%bӷX +Ok T&L z3r\Eyjl+$W*%9EZE= d?`0`IW+!8*b7_@`{N@mt‚5xE#Z#_[Hv T?i;u,-УzљKu^ViZa "Q 1V|8Tu&DdhGDf6xfuQm]V₟4vCC@j:k⧤X\t%T¬YQQcnIK8R/LZ!B,|&j>_ [&VgeV> h"!\Y_A'Ռk{3.͸s ( AJ"'Z 9Hȫyvf!p1'Ƈ̕q0,.2kLVC®Jz6Y>V "3**6t2Z# 瑐HNE- |\@X () )ԅZ$#BX9$G4ݜWa"e(߭J9wsaȔMYbrz\zl %phrʅ8Qԕ%Aَrܐ$@+ꕙV;ѭ8P*G[Fpf6#mt<*#qń9A eKRdWH3qbM~FC7V'EW_c]n{PĐ(7~T1x( ۉqWႋ-C 5M7TN+dJ6bn9I2˰KZaLRRRxĢ/(x۶0@bT˵u֯EbMsYF*/vgǓ'LFR*WjZ +BI*oE#!Ӭ8F6ةVa%ڶWiARz #0i (΁ 4@ڛ2I }jOf},lPW{W;*%$A{`/P@"] ܢ@ҜlJ. ydbhO"ʡKfFܗ|< i R԰ΞhKkIN Nt" J;1!%1')TN@ykp vmVA^3v"xS2?Cvc+.FRJ\TDiѬؙ,rv^·Jʧa;-gOS{8C3Nrx]Kۍ)|jK6 >K]hnRxXeӟ,2(iL,`=^88 Q)Y, JS:F2:eY L!\; J6h!)U$OrZQIGܯ2B*!?hjH#}5K,G _Dp/ GC60Loӱ+]SioJNqhj\%@B/:}4u Qq`n.W4S bZ*f쪐c1$ ͐2K-*Ds3z(+Zcv=X) H>ځNbe.Za*mVft*E$)Id uKQ'i]DiPj,F9R2Q85NeLVhA s P2(4=zot쉔]`-=D DDK3ԅF>lX4_iFd  .„uK+RS;ꋜ vdbZBSCH 4=rk)ŗA9w>_eu9T͈X(hZ>\!e'B$) _[4H-)IaWUΙ7U%m>%qf,[v|LeLy?"rJK:Bc)W"yd(qDj~nř0}\KkXiHKJ+GI.)c 0F+Rc &I eM.7hZ*|]&VVIfN-%dI1v[EE[ ۜ@L 0Ւ:uVzɍk@U euh_L0>iF,z7QpWuh˅U&B&Vl-#3kj!\壥 OJ# M4iN3 NRE i[LrhQ-J- =F[[ErD*ꣃHsP6Řy禢bGҁc^A\+lIr|]u5AY"a]S:2RuC m\A!PL"s$wNZi=7ɩ8b_DϞ|(;,Zfv24/mjJ\AZeE3ɭ'b2y"QeM yIы lbFBX9r$R  $yFgDzczLaiz`dH=5+ӶنMNK*NZ1S$VµSn Ɯ`; fa(w&]*:FZHd r$ϱHCk z*`f -\HkDetO# Yc=ti,@iO&$lP1)QFGE (r,6fC˨c!܈Eϯ;SXkrj_N-(PZE_iFVJ&ʑk>L0.7H2U<cc/ن TCǷDGXEgoX2cHVōZZ"zԯ5fsQZQk0||{ƪT_;G:S7an/`_ò>Zk:0._1VB^KVXsC0AVx}pib2oĐ~\=BG$^qj9ϜDGqu.*p8K{Op9`uq(+#<-2F-y&.{P(0N  FZ y( 'Wp@rʱ}B! EkyPqr`$D(Q5 4k+居bىkQɯq\&C}1mD!D>*1 .lOp1MAs9sxΕ@#$Bs1mFi$6(NurR u INқg.I'VF=VG O'*ODc 'R2eqLEZfiVD{x$Odj`~MAb5U'^_֭JaZ T$5M%E}J{cF :tcuR7L.R p[TKeP^;jk#$MVc0> P[eNZ۩UD*ٕ"|y#m=rbu-fU& \` ;bq)\ˡ%*~ xeOnExFbp@5֐34!ïUP:h9PhMǘO@ rUEz bVbCԁ39VpMo» ysuf""ӖF$@$hx8:3ķn]yqfOJr{΀|H\xbHe=*@Πͯ.^Wqѧ~JJD@[B* f3M4+?p PG?4'GD-B7dd2/%<Ƀ L0b=A]e̝٤|O8  px#/3md|af!ShlIM}=!TUWx3S4XڔcP]OG?^+I(\7ȚHqc9ϥE}ZBp"Z ie1L`*@qzObWO/]CM.˰r.JŅ&HQIx= OQ +"\]‚E j ;|ޓo4.Qw -K>[Q}UX!@Pv(~ӚTC̢!xD0!#W/) 7 u\sy4C1ZLp=/FV(A .p:Hp hѼCNx Gq&obEjP~ -@ ARWnf7nqS< k(] *tz#2*3tXyY(9Mڦ+<ap]y̪~Z`)}}vWʐ%֯0S"YZfti!{d!X™ >+w#EN"koy<'?GXs?hvu:\[y`ɹdP$bE#r;r9l֘vN0<> /Pt@ovV yછl*xD䄛I;w@ԼeqJʈ1:$O ۹8u'l)&"ޡAĩ'#tJuN3ŅP>zL)ssqYɃIePU*Of*R.*A>> wVJ28e6:je)єzNI.6_Oۈɭ}V=@T,04N& F w(cp%4(6q(<9X4'?a VςZrC%ܢxJ#^%B+A֡ѕQ#@T=!>BXc5yU-w~M$b5Rtwtt5˩g zI_!ό̐hQ!GX >ZN6uhq[Bޟ 2B!of}(j]f f"2t{ h'7tKBZ b3$mho\1\+Ѱ؊@ڂҴɼlCG|/~U)$p, isiW{Hvl-lʺQEQhBHV}$6K6 /=ʹ&фp.+V RH VWP'(s̎wa[[h߈iZ.HOom`ޥۍ`+QqUv/E\dP@CCqrwAE+0L^?CK噆ߡ7u&cu$, T$H 1zT.A'h;8lТF_|*qTU"1y .H_#ZX 蘒;MLښ5 #ɀ>V CLH6b\0F@R&}☇n G)gC d ċ4H\rڼE %6F~NMqNpiʥ"[oaqO -ŢM Y\B2O{i'Yu6/.eТxb؞qvћWӞ2q1c3|]]wp` kHtէ~ezzױG7ڿu|蒷ޞ&v}jӆs^a|K:ߟv^Ȯ%nH 2CQ-oal=:[mY6ZV4_S䊿U_7m"xgCw,]vEI?ua/_yppφnٌ sLwu_["==߶wjl3 Gخ?(/w'uOELUt@0?ȅl!`$=at%G~v [WkoP;8oþ=A#?ڙ^~9q~Kz}?]Z_>=tzzɓz!D{ I>|F90( H>r |.|_N>ø@7SopU?\կKT=8kR)rk |\g/Pv@?A`\Ǻ_ʮH:>wA:xshQM\x p Y:L(7(g`!G!`wgޡ?:vyrҸM^_hAnAOa8/CҎ> LC>vp_in~Hyz!V~r7Gm74@rix1 qҼ~ k}A ͘/hƿknذekwSCnP?x^=SS / =Kczbiδ%]_<_y \g,#Gw~F|cY3893* @@\"  X~}ŋ0?7 ôWM`ߌ'O^heʎ]8Ľ` ܋!CVQ\#ރx،[%}l/=@}58a 'v3۲/@na\ {tA}3ӎ \YzEߴ`g ;Nxay נ]3qQ#Qs=> A94>`*&= =Dg3ig%ޓt~qA?=y5֚~,v)yJǰ٣u\v0?ulYog5-4VڨXn>j:enDRmO`{-/`ۓ; خmFG]vije>.*eۺ-In;6^f?LlǙOIŇjڌlX՜8{MXO/E>vvf1 nd;[}=1~ʦ=5eRVaA׻Vr뚌jVOfϭ#d9O oޜ_6oEf;F߳jӗ?~ţdX7bLזs?Wazj{/Myo¶8q߳]-;jlW))jڲὗXɪv͏W\&ۚ3g5} YxwzUS_fV4վ}*KdB]9fOݢCÞ?^)fpr׌?n7b۞t4lͫ7?:U߱}sc}Ƴڧn;d[tbȶtO쮊ŷҪτ>zՈ[cn|RVmlS'JzpY>3Ƿ`;j .g5GRdy,|lӐkz8{wۜ)y~Ck2٦g6z7毟0l[C-NMW3َ&aʮEMaU%}F76.iƈg.zOZ8tyWvX{[<5lcԻObfvPx/&n~)Ӟ8ɦ5mOຶ;~mΎ>u}o:g拞ΪOqFo"\M ^ުUN N㖿g{=5[U+Wf{mSY~?u&՟^uӮ'z?W캟mm}S>o}s,-\sg{{dpcz~4m _`sWTWEZO5oqͺVulRrn6}Fg~͞^ƕ &w/a̮f5{&O -v>]wT["=]n5{^>mtsCo{<'*ցmz'Ju>ևpXeĠ o:UbKsYZY{߻崇mpѳS"czc{Ve>;3saxEݓݓq^{ߊeGXeۯSlǫ iѼA5wã?L&yel7}lwغ?/ =~Kl}~- OgV۞`E5W7|4:h3Wv}m8o/#5w݉$VxfA\`Uk(ϲc5vSӃYe;K>>-lĺ>Cxea/o,j6d_ݷ= g^Q؎]>U^)?ͷ]dՖ,;_&{.7vO asfyUe>Tg7% 69}s볍>QKf%6LC^aIc0XU v /ߕ|tS,<]"{]2[kީw3{骎C.yd 'GP,0*.{|oWV]qDZIן&_4}j{+ؼ_δ7~#ak[m*Xpf{XU=mmy\]O}xJvS,9N9<Ϭ*mg5CӟXeh8g&U'dT zռ7=ՏmsҒ>63ٖ[6w>~V6_[{O/JY͈6ŪΌ$WOvjӞO?j֦nηCnKjދm~3Nbu"Т[N.-y?ضh;wO3}v o˜1u?QW{\5_Ggٮ{״gmleП5$]2UU.yhUW7f+-?p-9~GkuO_'k:rI斵3Ͼx5ئ>]5ՏXٷkgUeu_?nov잧Ty.{E%dRʧ&vm¶oElΕ}cf;3&ۖpĶV߼lun<8p{~+۾h_vyYd>aˬ#F]/%+LͻKY,u<|7:kǏNR}-γ!7wݛvkxKVcRƧG'l:c #sNjH-ߘ:! t<»n.Vt[Pu3.߆qLڔZ\_e 缰8K(y$]L]58x~ĞU=|껶(|~a\Hxz \x. o_zKH7xa\}^4 | .h k"pa{eWR.M\vNr~0.?@М&`0:a_.o]?Ioî=Fc0߆SNQ?5#yf3M\൤+ϛtn|@/[嗏{ +}RxG :쌜' 1sTCH`O@w| hhPq;95>u*voT?$rk 3// ^ 7~y559y1kn`lN]!džU X%}9ŀ ׀;y}{_hrz6h%r@[_@n x?$C/CRN0>| }4p o(\=W&=/ACOj1O8[&Nc/ ]?AOWtSvo{?#>}ʳK`^Ѱ&n@<]>K<}E{)t2pi?EO(y=vĩ/=gLvU ymqqyO%c[SxNʋ=//8u~  .:6Jpȃh?פzlGb;`G6kq]Gm9ą?#ok }@.}SC^GzH|J2V??zvvayw巓~C_%"q)>K1(wPø| ;GǮ q?FצpOcO;.?ơ<^;Ao|s-&=˼C ѿJdY5f8Kh쑑OBy !}0W'`A5퇴/G2|3Y2lhdo`A[@ V!?@ k7致&GkޑxJ> pw)==n猼g ?y4rîѿ[tfw$ݐ`?#_g0 .3q8|1%3@>Jy?#/f_ß?j pQϹle;35.ןyAax (RnM\n ګ|gb'Y}훧kuVty SXGC+ڮ_GgXMrⅯNW櫟^ۖ\feW?̶޺lksZ8Ox9YͰgObtxx^6Գ?UZ=/KYJ?f5xos>m}ά6)/q̯{.a[b-#+Xuǁ}U=srwE)7tژۿgu~vۿg8گdO^fun}uuLxbs! und5S6a)َGD~ZY?YMgنm%}լTռڟ[;klnnX;RNf[yҼ6wm_^Xls J6;y735_M%?>+C?t{)z5ﱆ/o1z~cU ?~%d岪_e5k8eu{2Ǫ{xڈ{]Ӣ˳6/㺳b xqE'a?~yCVlp{l?m׎izE4#x6 kgr={րl[Ʀ&[nƶPkZVt_j3z0v<~܂h;]i^݊լ}Yն%}gQ{ƭ-%9 M0~Ox \o|2܌w}Rgϧ6=pz>!S]`{܇>~>`F?pײxe+\ }lƿW+ږxAI9N: 7F?Ǡ7Czt4ۃq OFA>MtB>ϙ|sg\7Fg/~Ç޿=OyW}Sq}C9y131mӤSϪvٯCf;&]nI=2힩}N~91~88O84Ig=5֏ٟ?H/S}rws_:+]5S7[oErb5얤9I]/ކu];wK׳#Qww?~s&kxK-'7eU9߅{x6-idU{Fl-3}. | K쎘~ Yli7 ?7rP?7wjjLف|6-;8PՓ\M/9`jW~ЄzM5zoQ&7$z9~wӰc*؁kmفV]n\jx/tU]lTUnk@)bjZ*MPŶX0@%E&HhM QSCo`hM]O +PcEj MU|{f9s_l;x)xCȋVy /['mͫ ի{kCg#g+ֺbg+=Q2o=;Q8cI L_K免m/u.CKzWgX]iTW|9yB>՝Y&Xg/s}9OtFu\>)xU?͡Od> <Ձwœ=Ҽzgơ͑KG&R1fɤ 'pr3Ӷ>^e/#>`"{sF}",޲s릻2yO2w6N_ߝ8׌﯏[NȬpOTގKth 5&~ ]֙q-۟גk}+{1T0؟ӽw_dܧO4ظ|o\+ϿxDg/@ >|0?X ^|fiq6M穚(-yDe[U5癞DCmy:mmS8oz3NSTv/zej9g֭7}{زlۓ;u%V.N`_}5_l|֪2>gᅺLU. p5|g{qѼR'''=}3W=:y >>.sꔅ>W>_|RGAXC_To>*0^,|}W<8[s+o@]%^7g{99O~A~h~{//c/Op߬~`Oc@׀М?9gi__gԍ91xpPKiJN7 manifest.propertiesUT XXux Mj0D A6_$MVqZZ\٢ѕ5u]ءBN]ŕ~'3OtŘ'{adzyՅhz&undB1 lVb>ְo,+ (1ɱ0K5%cHYG\a_\^>sF1OـTR.xqR#Kp=B{R,f(ss=UVЌ7f(*g2=}jQe}@ <16yK&Zfq.PУݹ tS'3(Zde9~|I0lu(4BђJ;ۢ4*1 %!O<ӧ#4Mj A!}En)KEXkN>e2SRөM++Lk⟊JH"UpLΫ|ʫ$7m7"nMh8H"#hr4\f L&,1<֤-q>⊒X> %7'N"&R+KTroEY qsmg {[q7ݒFLcd1 -MMh^I$]**M]UQ&ӈ\A{Lr;hC8xiR\}Z%䉡1+|(Ü 5;q!%XDQcw:f/ (-8HDX2%+ B>qZѫa Nx(ՂW K dbn*>t|x!sFQ N2ܶ%7N9X XOA7,4U3YFD1\B%p,Bd?[ !zh?'uD hq|P֔W)12eJ\P& w+@m),X. հ&MQb إr=f( MR4ID(d D%4=hZR)|K=[ Wę@2^O@/s^ЦG*L͉\Ō22/H\[ei|jV21 8@H1-TCN:+&zLGJC)%2Z"PBh|@ػWI6dMUx71Mk™"L]-X+9ҝ1ʋ"HFcH&|pZuw&R( ֣Gw!q|>bŕɶ3Ŝl=F̬rSAڡ)2CsIOQGmij@#(L5.*VOEVR)m!3Nu2u(Z8%b*S%R< .{4jڼj- Y*& f,Iv4 0f4STD(^ρ(It)\:V#Q6 :f \q9X8B}KP䏩Pe?zjV4JL`L`͓s<2W 3=)jԊ ^%a+iu!vRjB4ؘX&`Lҫ+VSЏ:QA\*14HǨ_I(4 j(>R>Ӕo~bP"Kr} %@̷ $E}h!P,5ʁ0ޒ_%jBh Ĩɫ(A(\vP= O#9\~%h3>Z2U'( Id$ Md\bDRvFxVzphHRZat=U?p@N+ZٕtP1=ŽCBJ 4ؑyxHɘ!U"Cd~XcۜR;FA|*JGZNW9{&4GZqdJo b,7(EW\.xIXN&cc |""I>prIB'%(˨mƛԕS@өXG :`%$\e(qv&R(6jbq>B&XйHeIvLL( Ik0&p1D0!$Z3)4Mk.1UK\Eԙ[;Z0Ge,D‚=/044hPiTU%bӷX +Ok T&L z3r\Eyjl+$W*%9EZE= d?`0`IW+!8*b7_@`{N@mt‚5xE#Z#_[Hv T?i;u,-УzљKu^ViZa "Q 1V|8Tu&DdhGDf6xfuQm]V₟4vCC@j:k⧤X\t%T¬YQQcnIK8R/LZ!B,|&j>_ [&VgeV> h"!\Y_A'Ռk{3.͸s ( AJ"'Z 9Hȫyvf!p1'Ƈ̕q0,.2kLVC®Jz6Y>V "3**6t2Z# 瑐HNE- |\@X () )ԅZ$#BX9$G4ݜWa"e(߭J9wsaȔMYbrz\zl %phrʅ8Qԕ%Aَrܐ$@+ꕙV;ѭ8P*G[Fpf6#mt<*#qń9A eKRdWH3qbM~FC7V'EW_c]n{PĐ(7~T1x( ۉqWႋ-C 5M7TN+dJ6bn9I2˰KZaLRRRxĢ/(x۶0@bT˵u֯EbMsYF*/vgǓ'LFR*WjZ +BI*oE#!Ӭ8F6ةVa%ڶWiARz #0i (΁ 4@ڛ2I }jOf},lPW{W;*%$A{`/P@"] ܢ@ҜlJ. ydbhO"ʡKfFܗ|< i R԰ΞhKkIN Nt" J;1!%1')TN@ykp vmVA^3v"xS2?Cvc+.FRJ\TDiѬؙ,rv^·Jʧa;-gOS{8C3Nrx]Kۍ)|jK6 >K]hnRxXeӟ,2(iL,`=^88 Q)Y, JS:F2:eY L!\; J6h!)U$OrZQIGܯ2B*!?hjH#}5K,G _Dp/ GC60Loӱ+]SioJNqhj\%@B/:}4u Qq`n.W4S bZ*f쪐c1$ ͐2K-*Ds3z(+Zcv=X) H>ځNbe.Za*mVft*E$)Id uKQ'i]DiPj,F9R2Q85NeLVhA s P2(4=zot쉔]`-=D DDK3ԅF>lX4_iFd  .„uK+RS;ꋜ vdbZBSCH 4=rk)ŗA9w>_eu9T͈X(hZ>\!e'B$) _[4H-)IaWUΙ7U%m>%qf,[v|LeLy?"rJK:Bc)W"yd(qDj~nř0}\KkXiHKJ+GI.)c 0F+Rc &I eM.7hZ*|]&VVIfN-%dI1v[EE[ ۜ@L 0Ւ:uVzɍk@U euh_L0>iF,z7QpWuh˅U&B&Vl-#3kj!\壥 OJ# M4iN3 NRE i[LrhQ-J- =F[[ErD*ꣃHsP6Řy禢bGҁc^A\+lIr|]u5AY"a]S:2RuC m\A!PL"s$wNZi=7ɩ8b_DϞ|(;,Zfv24/mjJ\AZeE3ɭ'b2y"QeM yIы lbFBX9r$R  $yFgDzczLaiz`dH=5+ӶنMNK*NZ1S$VµSn Ɯ`; fa(w&]*:FZHd r$ϱHCk z*`f -\HkDetO# Yc=ti,@iO&$lP1)QFGE (r,6fC˨c!܈Eϯ;SXkrj_N-(PZE_iFVJ&ʑk>L0.7H2U<cc/ن TCǷDGXEgoX2cHVōZZ"zԯ5fsQZQk0||{ƪT_;G:S7an/`_ò>Zk:0._1VB^KVXsC0AVx}pib2oĐ~\=BG$^qj9ϜDGqu.*p8K{Op9`uq(+#<-2F-y&.{P(0N  FZ y( 'Wp@rʱ}B! EkyPqr`$D(Q5 4k+居bىkQɯq\&C}1mD!D>*1 .lOp1MAs9sxΕ@#$Bs1mFi$6(NurR u INқg.I'VF=VG O'*ODc 'R2eqLEZfiVD{x$Odj`~MAb5U'^_֭JaZ T$5M%E}J{cF :tcuR7L.R p[TKeP^;jk#$MVc0> P[eNZ۩UD*ٕ"|y#m=rbu-fU& \` ;bq)\ˡ%*~ xeOnExFbp@5֐34!ïUP:h9PhMǘO@ rUEz bVbCԁ39VpMo» ysuf""ӖF$@$hx8:3ķn]yqfOJr{΀|H\xbHe=*@Πͯ.^Wqѧ~JJD@[B* f3M4+?p PG?4'GD-B7dd2/%<Ƀ L0b=A]e̝٤|O8  px#/3md|af!ShlIM}=!TUWx3S4XڔcP]OG?^+I(\7ȚHqc9ϥE}ZBp"Z ie1L`*@qzObWO/]CM.˰r.JŅ&HQIx= OQ +"\]‚E j ;|ޓo4.Qw -K>[Q}UX!@Pv(~ӚTC̢!xD0!#W/) 7 u\sy4C1ZLp=/FV(A .p:Hp hѼCNx Gq&obEjP~ -@ ARWnf7nqS< k(] *tz#2*3tXyY(9Mڦ+<ap]y̪~Z`)}}vWʐ%֯0S"YZfti!{d!X™ >+w#EN"koy<'?GXs?hvu:\[y`ɹdP$bE#r;r9l֘vN0<> /Pt@ovV yછl*xD䄛I;w@ԼeqJʈ1:$O ۹8u'l)&"ޡAĩ'#tJuN3ŅP>zL)ssqYɃIePU*Of*R.*A>> wVJ28e6:je)єzNI.6_Oۈɭ}V=@T,04N& F w(cp%4(6q(<9X4'?a VςZrC%ܢxJ#^%B+A֡ѕQ#@T=!>BXc5yU-w~M$b5Rtwtt5˩g zI_!ό̐hQ!GX >ZN6uhq[Bޟ 2B!of}(j]f f"2t{ h'7tKBZ b3$mho\1\+Ѱ؊@ڂҴɼlCG|/~U)$p, isiW{Hvl-lʺQEQhBHV}$6K6 /=ʹ&фp.+V RH VWP'(s̎wa[[h߈iZ.HOom`ޥۍ`+QqUv/E\dP@CCqrwAE+0L^?CK噆ߡ7u&cu$, T$H 1zT.A'h;8lТF_|*qTU"1y .H_#ZX 蘒;MLښ5 #ɀ>V CLH6b\0F@R&}☇n G)gC d ċ4H\rڼE %6F~NMqNpiʥ"[oaqO -ŢM Y\B2O{i'Yu6/.eТxb؞qvћWӞ2q1c3|]]wp` kHtէ~ezzױG7ڿu|蒷ޞ&v}jӆs^a|K:ߟv^Ȯ%nH 2CQ-oal=:[mY6ZV4_S䊿U_7m"xgCw,]vEI?ua/_yppφnٌ sLwu_["==߶wjl3 Gخ?(/w'uOELUt@0?ȅl!`$=at%G~v [WkoP;8oþ=A#?ڙ^~9q~Kz}?]Z_>=tzzɓz!D{ I>|F90( H>r |.|_N>ø@7SopU?\կKT=8kR)rk |\g/Pv@?A`\Ǻ_ʮH:>wA:xshQM\x p Y:L(7(g`!G!`wgޡ?:vyrҸM^_hAnAOa8/CҎ> LC>vp_in~Hyz!V~r7Gm74@rix1 qҼ~ k}A ͘/hƿknذekwSCnP?x^=SS / =Kczbiδ%]_<_y \g,#Gw~F|cY3893* @@\"  X~}ŋ0?7 ôWM`ߌ'O^heʎ]8Ľ` ܋!CVQ\#ރx،[%}l/=@}58a 'v3۲/@na\ {tA}3ӎ \YzEߴ`g ;Nxay נ]3qQ#Qs=> A94>`*&= =Dg3ig%ޓt~qA?=y5֚~,v)yJǰ٣u\v0?ulYog5-4VڨXn>j:enDRmO`{-/`ۓ; خmFG]vije>.*eۺ-In;6^f?LlǙOIŇjڌlX՜8{MXO/E>vvf1 nd;[}=1~ʦ=5eRVaA׻Vr뚌jVOfϭ#d9O oޜ_6oEf;F߳jӗ?~ţdX7bLזs?Wazj{/Myo¶8q߳]-;jlW))jڲὗXɪv͏W\&ۚ3g5} YxwzUS_fV4վ}*KdB]9fOݢCÞ?^)fpr׌?n7b۞t4lͫ7?:U߱}sc}Ƴڧn;d[tbȶtO쮊ŷҪτ>zՈ[cn|RVmlS'JzpY>3Ƿ`;j .g5GRdy,|lӐkz8{wۜ)y~Ck2٦g6z7毟0l[C-NMW3َ&aʮEMaU%}F76.iƈg.zOZ8tyWvX{[<5lcԻObfvPx/&n~)Ӟ8ɦ5mOຶ;~mΎ>u}o:g拞ΪOqFo"\M ^ުUN N㖿g{=5[U+Wf{mSY~?u&՟^uӮ'z?W캟mm}S>o}s,-\sg{{dpcz~4m _`sWTWEZO5oqͺVulRrn6}Fg~͞^ƕ &w/a̮f5{&O -v>]wT["=]n5{^>mtsCo{<'*ցmz'Ju>ևpXeĠ o:UbKsYZY{߻崇mpѳS"czc{Ve>;3saxEݓݓq^{ߊeGXeۯSlǫ iѼA5wã?L&yel7}lwغ?/ =~Kl}~- OgV۞`E5W7|4:h3Wv}m8o/#5w݉$VxfA\`Uk(ϲc5vSӃYe;K>>-lĺ>Cxea/o,j6d_ݷ= g^Q؎]>U^)?ͷ]dՖ,;_&{.7vO asfyUe>Tg7% 69}s볍>QKf%6LC^aIc0XU v /ߕ|tS,<]"{]2[kީw3{骎C.yd 'GP,0*.{|oWV]qDZIן&_4}j{+ؼ_δ7~#ak[m*Xpf{XU=mmy\]O}xJvS,9N9<Ϭ*mg5CӟXeh8g&U'dT zռ7=ՏmsҒ>63ٖ[6w>~V6_[{O/JY͈6ŪΌ$WOvjӞO?j֦nηCnKjދm~3Nbu"Т[N.-y?ضh;wO3}v o˜1u?QW{\5_Ggٮ{״gmleП5$]2UU.yhUW7f+-?p-9~GkuO_'k:rI斵3Ͼx5ئ>]5ՏXٷkgUeu_?nov잧Ty.{E%dRʧ&vm¶oElΕ}cf;3&ۖpĶV߼lun<8p{~+۾h_vyYd>aˬ#F]/%+LͻKY,u<|7:kǏNR}-γ!7wݛvkxKVcRƧG'l:c #sNjH-ߘ:! t<»n.Vt[Pu3.߆qLڔZ\_e 缰8K(y$]L]58x~ĞU=|껶(|~a\Hxz \x. o_zKH7xa\}^4 | .h k"pa{eWR.M\vNr~0.?@М&`0:a_.o]?Ioî=Fc0߆SNQ?5#yf3M\൤+ϛtn|@/[嗏{ +}RxG :쌜' 1sTCH`O@w| hhPq;95>u*voT?$rk 3// ^ 7~y559y1kn`lN]!džU X%}9ŀ ׀;y}{_hrz6h%r@[_@n x?$C/CRN0>| }4p o(\=W&=/ACOj1O8[&Nc/ ]?AOWtSvo{?#>}ʳK`^Ѱ&n@<]>K<}E{)t2pi?EO(y=vĩ/=gLvU ymqqyO%c[SxNʋ=//8u~  .:6Jpȃh?פzlGb;`G6kq]Gm9ą?#ok }@.}SC^GzH|J2V??zvvayw巓~C_%"q)>K1(wPø| ;GǮ q?FצpOcO;.?ơ<^;Ao|s-&=˼C ѿJdY5f8Kh쑑OBy !}0W'`A5퇴/G2|3Y2lhdo`A[@ V!?@ k7致&GkޑxJ> pw)==n猼g ?y4rîѿ[tfw$ݐ`?#_g0 .3q8|1%3@>Jy?#/f_ß?j pQϹle;35.ןyAax (RnM\n ګ|gb'Y}훧kuVty SXGC+ڮ_GgXMrⅯNW櫟^ۖ\feW?̶޺lksZ8Ox9YͰgObtxx^6Գ?UZ=/KYJ?f5xos>m}ά6)/q̯{.a[b-#+Xuǁ}U=srwE)7tژۿgu~vۿg8گdO^fun}uuLxbs! und5S6a)َGD~ZY?YMgنm%}լTռڟ[;klnnX;RNf[yҼ6wm_^Xls J6;y735_M%?>+C?t{)z5ﱆ/o1z~cU ?~%d岪_e5k8eu{2Ǫ{xڈ{]Ӣ˳6/㺳b xqE'a?~yCVlp{l?m׎izE4#x6 kgr={րl[Ʀ&[nƶPkZVt_j3z0v<~܂h;]i^݊լ}Yն%}gQ{ƭ-%9 M0~Ox \o|2܌w}Rgϧ6=pz>!S]`{܇>~>`F?pײxe+\ }lƿW+ږxAI9N: 7F?Ǡ7Czt4ۃq OFA>MtB>ϙ|sg\7Fg/~Ç޿=OyW}Sq}C9y131mӤSϪvٯCf;&]nI=2힩}N~91~88O84Ig=5֏ٟ?H/S}rws_:+]5S7[oErb5얤9I]/ކu];wK׳#Qww?~s&kxK-'7eU9߅{x6-idU{Fl-3}. | K쎘~ Yli7 ?7rP?7wjjLف|6-;8PՓ\M/9`jW~ЄzM5zoQ&7$z9~wӰc*؁kmفV]n\jx/tU]lTUnk@)bjZ*MPŶX0@%E&HhM QSCo`hM]O +PcEj MU|{f9s_l;x)xCȋVy /['mͫ ի{kCg#g+ֺbg+=Q2o=;Q8cI L_K免m/u.CKzWgX]iTW|9yB>՝Y&Xg/s}9OtFu\>)xU?͡Od> <Ձwœ=Ҽzgơ͑KG&R1fɤ 'pr3Ӷ>^e/#>`"{sF}",޲s릻2yO2w6N_ߝ8׌﯏[NȬpOTގKth 5&~ ]֙q-۟גk}+{1T0؟ӽw_dܧO4ظ|o\+ϿxDg/@ >|0?X ^|fiq6M穚(-yDe[U5癞DCmy:mmS8oz3NSTv/zej9g֭7}{زlۓ;u%V.N`_}5_l|֪2>gᅺLU. p5|g{qѼR'''=}3W=:y >>.sꔅ>W>_|RGAXC_To>*0^,|}W<8[s+o@]%^7g{99O~A~h~{//c/Op߬~`Oc@׀М?9gi__gԍ91xpPKiJDu manifest.propertiesUT XXux Mj0D C6_$MVqZZ\٢ѕ5u] KBLx(c^$w\Hf"8rԧ'<4B JUge#Rv@4'HP@YWF$zcʺa/zu'FoojsF-83oG-J^6%g@0uD{PK iJ._R  chunker.modelUTVXux PKiJDu Rmanifest.propertiesUTXux PKSapache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/opennlp/tools/languagemodel/sentences.txt0100664 0001750 0001750 00000016777 14135770370 034246 0ustar00jeffjeff0000000 0000000 The word2vec software of Tomas Mikolov and colleagues has gained a lot of traction lately and provides state-of-the-art word embeddings The learning models behind the software are described in two research papers We found the description of the models in these papers to be somewhat cryptic and hard to follow While the motivations and presentation may be obvious to the neural-networks language-mofdeling crowd we had to struggle quite a bit to figure out the rationale behind the equations This note is an attempt to explain the negative sampling equation in Distributed Representations of Words and Phrases and their Compositionality by Tomas Mikolov Ilya Sutskever Kai Chen Greg Corrado and Jeffrey Dean The departure point of the paper is the skip-gram model In this model we are given a corpus of words w and their contexts c We consider the conditional probabilities p(c|w) and given a corpus Text the goal is to set the parameters θ of p(c|w;θ) so as to maximize the corpus probability The recently introduced continuous Skip-gram model is an efficient method for learning high-quality distributed vector representations that capture a large number of precise syntactic and semantic word relationships In this paper we present several extensions that improve both the quality of the vectors and the training speed By subsampling of the frequent words we obtain significant speedup and also learn more regular word representations We also describe a simple alternative to the hierarchical softmax called negative sampling An inherent limitation of word representations is their indifference to word order and their inability to represent idiomatic phrases For example the meanings of Canada and Air cannot be easily combined to obtain Air Canada Motivated by this example we present a simple method for finding phrases in text and show that learning good vector representations for millions of phrases is possible The similarity metrics used for nearest neighbor evaluations produce a single scalar that quantifies the relatedness of two words This simplicity can be problematic since two given words almost always exhibit more intricate relationships than can be captured by a single number For example man may be regarded as similar to woman in that both words describe human beings on the other hand the two words are often considered opposites since they highlight a primary axis along which humans differ from one another In order to capture in a quantitative way the nuance necessary to distinguish man from woman it is necessary for a model to associate more than a single number to the word pair A natural and simple candidate for an enlarged set of discriminative numbers is the vector difference between the two word vectors GloVe is designed in order that such vector differences capture as much as possible the meaning specified by the juxtaposition of two words Unsupervised word representations are very useful in NLP tasks both as inputs to learning algorithms and as extra word features in NLP systems However most of these models are built with only local context and one representation per word This is problematic because words are often polysemous and global context can also provide useful information for learning word meanings We present a new neural network architecture which 1) learns word embeddings that better capture the semantics of words by incorporating both local and global document context and 2) accounts for homonymy and polysemy by learning multiple embeddings per word We introduce a new dataset with human judgments on pairs of words in sentential context and evaluate our model on it showing that our model outperforms competitive baselines and other neural language models Information Retrieval (IR) models need to deal with two difficult issues vocabulary mismatch and term dependencies Vocabulary mismatch corresponds to the difficulty of retrieving relevant documents that do not contain exact query terms but semantically related terms Term dependencies refers to the need of considering the relationship between the words of the query when estimating the relevance of a document A multitude of solutions has been proposed to solve each of these two problems but no principled model solve both In parallel in the last few years language models based on neural networks have been used to cope with complex natural language processing tasks like emotion and paraphrase detection Although they present good abilities to cope with both term dependencies and vocabulary mismatch problems thanks to the distributed representation of words they are based upon such models could not be used readily in IR where the estimation of one language model per document (or query) is required This is both computationally unfeasible and prone to over-fitting Based on a recent work that proposed to learn a generic language model that can be modified through a set of document-specific parameters we explore use of new neural network models that are adapted to ad-hoc IR tasks Within the language model IR framework we propose and study the use of a generic language model as well as a document-specific language model Both can be used as a smoothing component but the latter is more adapted to the document at hand and has the potential of being used as a full document language model We experiment with such models and analyze their results on TREC-1 to 8 datasets The word2vec model and application by Mikolov et al have attracted a great amount of attention in recent two years The vector representations of words learned by word2vec models have been proven to be able to carry semantic meanings and are useful in various NLP tasks As an increasing number of researchers would like to experiment with word2vec I notice that there lacks a material that comprehensively explains the parameter learning process of word2vec in details thus preventing many people with less neural network experience from understanding how exactly word2vec works This note provides detailed derivations and explanations of the parameter update equations for the word2vec models including the original continuous bag-of-word (CBOW) and skip-gram models as well as advanced tricks hierarchical soft-max and negative sampling In the appendix a review is given on the basics of neuron network models and backpropagation To avoid the inaccuracy caused by classifying the example into several categories given by TREC manually we take the word2vec to represent all attractions and user contexts in the continuous vector space learnt by neural network language models The base of NNML is using neural networks for the probability function The model learns simultaneously a distributed representation for each word along with the probability function for word sequences expressed in terms of these representations Training such large models we propose continuous bag of words as our framework and soft-max as the active function So we use the word2vec to train wikitravel corpus and got the word vector To avoid the curse of dimensionality by learning a distributed representation for words as our word vector we define a test set that compare different dimensionality of vectors for our task using the same training data and using the same model architecture We extend the word2vec framework to capture meaning across languages The input consists of a source text and a word-aligned parallel text in a second language The joint word2vec tool then represents words in both languages within a common “semantic” vector space The result can be used to enrich lexicons of under-resourced languages to identify ambiguities and to perform clustering and classification./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_data_opennlp_maxent_real-v0100644 0000000 0000000 00000000175 14135770370 032626 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/real-valued-weights-tr0100664 0001750 0001750 00000001356 14135770370 034161 0ustar00jeffjeff0000000 0000000 A feature1=4.0 feature3=10.0 feature4=2.0 A feature1=2.0 feature2=4.0 feature4=3.0 A feature2=5.0 feature3=12.0 feature4=4.0 A feature1=1.0 feature3=11.0 feature4=3.0 A feature1=4.0 feature2=5.0 feature4=2.0 A feature1=3.0 feature2=4.0 feature3=9.0 A feature2=3.0 feature3=11.0 feature4=2.0 A feature1=1.0 feature3=12.0 A feature2=6.0 feature3=12.0 feature4=3.0 A feature1=3.0 feature2=7.0 feature3=11.0 B feature5=4.0 feature2=1.0 feature4=10.0 B feature2=1.0 feature3=11.0 B feature5=3.0 feature4=12.0 B feature2=1.0 feature3=11.0 B feature5=4.0 feature4=10.0 B feature2=1.0 feature3=9.0 B feature5=2.0 feature4=11.0 B feature2=1.0 feature3=12.0 B feature5=4.0 feature4=12.0 B feature2=1.0 feature3=11.0 feature4=4.0 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_data_opennlp_maxent_io_rvf0100644 0000000 0000000 00000000164 14135770370 032722 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-broken.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-brok0100664 0001750 0001750 00000000032 14135770370 034024 0ustar00jeffjeff0000000 0000000 C goodbye=1.0 C goodbye ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_data_opennlp_maxent_io_rvf0100644 0000000 0000000 00000000160 14135770370 032716 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-ok.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-ok.t0100664 0001750 0001750 00000000032 14135770370 033742 0ustar00jeffjeff0000000 0000000 C goodbye C goodbye=1.0 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_test_resources_data_opennlp_maxent_repeat0100644 0000000 0000000 00000000172 14135770370 032715 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/repeat-weighting-training-data.txt apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/opennlp/maxent/repeat-weighting-train0100664 0001750 0001750 00000005233 14135770370 034241 0ustar00jeffjeff0000000 0000000 A feature1 feature1 feature1 feature1 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 A feature1 feature1 feature2 feature2 feature2 feature2 feature4 feature4 feature4 A feature2 feature2 feature2 feature2 feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 feature4 feature4 A feature1 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 feature4 A feature1 feature1 feature1 feature1 feature2 feature2 feature2 feature2 feature2 feature4 feature4 A feature1 feature1 feature1 feature2 feature2 feature2 feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 A feature2 feature2 feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 A feature1 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 A feature2 feature2 feature2 feature2 feature2 feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 feature4 A feature1 feature1 feature1 feature2 feature2 feature2 feature2 feature2 feature2 feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 B feature5 feature5 feature5 feature5 feature2 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 B feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 B feature5 feature5 feature5 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 B feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 B feature5 feature5 feature5 feature5 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 B feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 B feature5 feature5 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 B feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 B feature5 feature5 feature5 feature5 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 feature4 B feature2 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature3 feature4 feature4 feature4 feature4 apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/test0100664 0001750 0001750 00000307332 14135770370 026460 0ustar00jeffjeff0000000 0000000 48000 prepare dinner for family V 48004 shipped crabs from province V 48005 ran broadcast on way N 48006 is apartment with floors N 48010 tending meters during shift V 48011 are prospects for mobility N 48017 leaves wife in front V 48020 is end of life N 48021 walks upstairs to library V 48025 Inspects Operation of Furnace N 48032 sing birthday to you N 48040 carry fight against imperialists N 48051 including all of engineers N 48053 teaches him at home V 48058 have knowledge for example N 48059 repeats theme of class N 48059 harangues visitor about sanctions V 48060 have warmth for each V 48063 know any of that N 48066 provides care to workers V 48070 leads visitor into ward V 48071 given birth to girl V 48077 receiving number of approaches N 48079 expect interest from banks N 48081 boost presence to development V 48082 fetch price of profit N 48086 gave comfort to markets V 48089 was sign to markets N 48089 easing grip on credit N 48090 inject amounts of money N 48090 inject amounts into system V 48093 view action as hand V 48094 provide money to system V 48095 deliver speech to convention V 48096 say something about policies N 48098 beginning text of speech N 48100 coordinating activities with officials V 48101 signal change of policy N 48104 nudge rate to 8 V 48105 was coordination among agencies V 48110 drop 60 to points N 48116 left chairmanship of the N 48116 view volatility as fact V 48117 regard amount of decline N 48118 expect volatility of magnitude N 48121 expressed concern about pauses N 48124 plans hearings on bill N 48124 subject the to control V 48127 given chance of passing N 48127 is cause for anxiety N 48129 drive dollar through interventions V 48131 put the on board V 48132 have role with audited V 48134 want dollar for gains V 48136 thumb nose at the V 48138 take case to people V 48145 sows seeds for stagnation N 48148 applied controls in 1971 V 48152 yielded benefits to interests N 48152 yielded benefits at expense V 48159 killed inflation at cost V 48164 become victims of policies N 48179 buy % for 10 V 48185 produce ounces of gold N 48185 produce ounces in year V 48187 produce ounce of gold N 48187 produce ounce at mines V 48188 is stake in mine N 48192 credited story in the N 48193 holds stake in concern N 48193 been subject of speculation N 48197 Put it in letters V 48203 answer questions about remarks N 48209 described decline in beginning N 48209 described decline as shock V 48211 is lot of nervousness N 48211 is lot in market V 48213 was one of factors N 48220 had lot of froth N 48220 had lot in weeks V 48227 warned firms over weekend V 48230 paying attention to markets V 48232 is chance of increase N 48233 raised rate to % V 48246 closed books at end V 48247 citing reason for strength N 48250 exacerbate declines in markets N 48254 treating market with caution V 48255 plummeted % to 2093 V 48257 decreased exposure to market N 48258 was lots of optimism N 48263 closed exchange for days V 48263 shook confidence in market N 48266 planned vigil on developments N 48267 sitting night at home V 48270 play note of crisis N 48271 's reason for fall N 48274 facing uncertainty because worries V 48280 staged rally against dollar N 48280 staged rally after news V 48286 sells shares in hope V 48286 buying them at profit V 48287 cool appetite for buy-outs N 48288 are trends on markets N 48298 buy something for price V 48304 Put it in letters V 48306 slipped 1 in slump V 48307 tracks holdings for firm V 48308 sold shares in months V 48319 culminated battle for maker N 48320 put company on block V 48321 held talks with parties V 48322 buy shares through subsidiary V 48325 committed million in loan V 48327 become player in industry N 48334 dropped points in minutes V 48336 mirror 1987 with dive V 48338 include differences in market N 48341 be plus for stocks V 48349 leaving millions of dollars N 48351 sell stock in order V 48351 meet demands from customers N 48352 sold hundreds of millions N 48355 be positive for stocks N 48356 have bearing on market N 48357 get financing for deal V 48358 took minutes from announcement V 48358 drop equivalent of points N 48366 making markets in stocks N 48367 balance orders in stocks N 48369 handle imbalances on floor N 48374 faced likelihood of calls N 48374 put cash for positions N 48376 were sellers than buyers N 48377 dumping positions in race V 48379 plunged 6.625 to 56.625 V 48380 put itself for sale V 48380 nosedived 21.50 to 85 V 48391 executing trades for client V 48393 using stake as club V 48393 left him with loss V 48395 been seller of stocks N 48396 take advantage of differentials N 48401 reinforce perception of investors N 48402 turn upsets into calamities V 48405 threatening drop in dollar N 48406 keep dollar within range V 48407 threatening crackdown on takeovers N 48408 eliminate deductibility of interest N 48409 voicing concern about buy-outs N 48409 force changes in deal N 48411 are points than level N 48414 was 14 at peak V 48420 dominating thinking of analysts N 48420 is plight of market N 48421 focused attention on market V 48422 owe part to perception V 48422 be subject of buy-out N 48423 buy company at premium V 48423 sell piece by piece N 48424 lost million in value N 48424 reflect end of period N 48425 selling divisions to fool V 48426 buy companies around world N 48428 warned clients of danger N 48428 warned clients before crash V 48429 compares drop-off to corrections V 48432 hit level of 2791.41 N 48435 tumble points in event V 48436 bracing themselves for selling V 48436 detect panic over weekend N 48437 have reserves as cushion V 48438 sell million of stocks N 48438 sell million in crash V 48438 quadrupled level of fund N 48443 inject amounts of money N 48443 inject amounts into system V 48444 turned problems among firms V 48445 named chairman of supplier N 48449 reached conclusion about unraveling N 48454 like looks of deal N 48456 made total on buy-out V 48456 put million of funds N 48456 put million into deal V 48458 take nature of industry N 48459 's one of proposals N 48460 has history of ties N 48460 stretched guidelines in hopes V 48462 was job of chief N 48462 put face on news V 48472 caught group off guard V 48484 including representatives of counsel N 48485 pitched proposal to banks V 48489 provided share of financing N 48502 made views in conversations V 48503 seek increases in round V 48509 citing degree of risk N 48514 assume type of recession N 48514 assume type in future V 48515 increase % over years V 48516 increase average of % N 48516 increase average despite downs V 48519 include profit for lenders N 48519 means cash for shareholders N 48520 has flop on hands V 48522 paid fees of million N 48522 paid fees for commitments V 48524 includes refinancing of debt N 48525 expressed interest in transaction N 48525 attended meeting with representatives N 48527 were lot of indications N 48527 were lot before both V 48529 was effort among banks N 48530 was deal for lenders N 48534 lose money in quarter V 48534 get money for buy-out N 48536 paid % to % N 48539 lending amounts of money N 48552 diminish appeal to speculators N 48563 raising price of imports N 48564 telegraph distaste for securities N 48564 signal confidence in system N 48565 sell dollars for currencies V 48567 reduce demand for dollars N 48568 increase demand for currency N 48573 taking currency with it V 48576 was function of dragging N 48582 be sense of coming N 48583 stem impact of declines N 48588 be flight to quality N 48594 increase pressure on dollar N 48596 called counterparts in the N 48597 gone home in the V 48599 be signal of point N 48600 trigger liquidation with fundamentals V 48603 shifting funds for differences V 48609 increase demand for dollars N 48613 Barring catastrophe in market N 48618 take advantage of differences N 48619 buying stocks in companies N 48620 take advantage of discrepancies N 48623 put collateral for securities V 48625 sell stock at price V 48626 buy stock at price V 48630 buying contract at price V 48630 take delivery of 500 N 48632 sell contract at price V 48633 sell contract at price V 48645 transferring all of accounts N 48646 making transfers as result V 48648 underscored need for exchanges N 48648 hasten clearing of contracts N 48650 done harm than good N 48656 triggering round of selling N 48659 hitting limit of points N 48662 imposed halt in contract N 48662 imposed halt after drop V 48663 caused consternation among traders V 48664 halted trading in contract N 48668 driven prices in pit V 48669 hedging risks in markets N 48670 deluged pit with orders V 48671 sell contracts at limit V 48672 killed chance of rally N 48672 drove prices to limit V 48674 touched limit of points N 48676 doubled requirements for futures N 48676 doubled requirements to 8,000 V 48679 begun cross-margining of accounts N 48679 processes trades for exchanges V 48681 face requirements on each V 48682 facing calls for positions N 48682 led studies of markets N 48685 making failure in history N 48691 needed help in battle N 48692 made contributions to each V 48695 pressed subversion of process N 48700 invested 359,100 in partnership V 48701 solicited 850,000 in contributions N 48702 solicited 200,000 in contributions N 48705 cost taxpayers with accounting V 48707 obscures seriousness of allegations N 48710 selling million in debentures N 48710 selling million near communities V 48717 were part of job N 48717 second-guess personality of legislator N 48718 reaches conclusion in case V 48721 cool panic in both N 48728 handle imbalances on floor N 48732 left offices on day V 48733 surrendered a of gains N 48733 chalking loss on day N 48733 chalking loss in volume V 48745 spurred concern about prospects N 48746 get financing for bid N 48749 rid themselves of stock V 48759 hit stocks on the V 48765 buy baskets of stocks N 48765 offset trade in futures N 48775 watch updates on prices N 48787 are differences between environment N 48787 are opportunities in market N 48788 set relations with customers N 48788 reinforces concern of volatility N 48801 take look at situation N 48805 Concerning article on leeches N 48809 sell aircraft to buyers V 48812 sell fleet of 707s N 48814 includes assumption of million N 48816 have billion in assets N 48822 bring it to attention V 48823 representing % of value N 48832 totaled tons in week V 48835 raise million in cash N 48839 peppered funds with calls V 48850 take place at prices V 48856 built cash to % V 48857 posted inflows of money N 48864 scaled purchases of funds N 48872 croak stocks like that N 48877 infuriated investors in 1987 V 48878 opened centers across country N 48881 increased staff of representatives N 48882 moved money from funds V 48885 calm investors with recordings V 48887 had recording for investors V 48890 averaged gain of % N 48895 talk them of it V 48901 report earnings of cents N 48903 reported income of million N 48904 receiving aircraft from maker V 48905 caused turmoil in scheduling N 48912 put pressure on company V 48916 miss one at all V 48918 has set for delivery N 48918 has set at end V 48918 have plane on time V 48920 deliver a on time V 48921 take delivery of another N 48921 anticipating changes in timetable N 48923 finish aircraft at plant N 48933 expect resolution to anything N 48934 represents contract of any N 48940 represents workers at unit N 48940 extend contract on basis V 48949 allow competition in generation N 48949 allow competition as part V 48956 raise billion from sale V 48959 had revenue of billion N 48960 be move around world N 48960 deregulate generation of electricity N 48961 is thrust on side N 48961 mulling projects in countries N 48964 building plants in the N 48964 producing megawatts of power N 48964 building plants at cost V 48965 report earnings of million N 48966 had income of 326,000 N 48966 had income on revenue V 48972 is operator with interest N 48975 is venture with trust N 48978 get approvals for development N 48978 buy land at prices V 48979 buy properties in state N 48979 buy properties for cash V 48980 is the of kind N 48983 putting % of capital N 48984 is one of ways N 48984 assure pipeline of land N 48984 fuel growth at risk V 48986 increased reliance on plastics N 48991 lost quarter of value N 48991 lost quarter since 1 V 48999 took job in 1986 V 49001 make bags among items N 49008 cover half of needs N 49010 putting orders for polyethylene N 49015 announced increases of cents N 49015 take effect in weeks V 49025 described payout at time V 49025 share bonanza with holders V 49026 saw payment as effort V 49027 become topic of speculation N 49027 deflected questions in meeting V 49028 viewed response as nothing V 49031 confronts disaster at plant N 49035 adds dimension to change V 49037 introduce imponderable into future V 49042 resume operation by end V 49045 strengthen sway in business N 49047 tightening grip on business N 49049 is distributor in the N 49053 expand business in the V 49055 moving 11 of employees N 49057 discussing plans with firms V 49058 do job at cost V 49059 spending million on time V 49061 moved it to headquarters V 49062 moved employees of group N 49063 hired buyers for unit V 49063 wooing them from jobs V 49067 allocating share of market N 49067 allocating share to countries V 49068 negotiated cut in quota N 49068 made increase to allotment V 49069 negotiate share of market N 49070 completed talks with the N 49071 supplied % of tons N 49072 allocate % to suppliers V 49073 have quotas with the V 49075 extend quotas until 31 V 49077 termed plan despite fact V 49078 was one of countries N 49078 conclude talks with the N 49078 doubled quota to % V 49079 had % under quotas V 49079 get increase to % N 49081 increase allowance from share V 49082 filling quotas to extent V 49083 supplying % of market N 49084 total % of market N 49087 cut quota to % N 49087 cut quota from % V 49088 provide % of steel N 49088 provide % under program V 49090 had % of market N 49092 have % of market N 49093 give leverage with suppliers N 49093 withdraw subsidies from industries V 49095 had income of 272,000 N 49095 had income in quarter V 49097 be cents on revenue N 49098 reflect decline in sales N 49099 expects line of business N 49101 place machines in hotels V 49103 realize minimum of 10 N 49104 make use of system N 49105 provide system for telephone V 49106 producing line of telephones N 49107 produce 5 of earnings N 49107 produce 5 for machine V 49109 purchase shares of stock N 49111 purchase stock at discount V 49113 require spoonfuls per washload V 49114 had success with soapsuds V 49115 bring superconcentrates to the V 49116 won stake in markets N 49120 study results from market N 49123 hit shelves in 1987 V 49125 embraced convenience of products N 49125 gained prominence over powders N 49126 market product under name V 49127 dump detergent into machine V 49127 takes cup of powder N 49128 launch detergent under name V 49130 hook consumers on combinations V 49137 introduces product in the V 49138 taking share from the V 49138 has % of market N 49144 expected barrage of demands N 49144 reduce surplus with the N 49146 had tone from visit V 49149 get action by summer V 49149 have blueprint for action V 49152 offered theories for difference N 49154 saw it as tactic V 49157 have strategy in administration V 49160 have list of statutes N 49164 met press for time V 49164 reiterated need for progress N 49164 removing barriers to trade N 49166 promote importance of trade N 49168 summed sense of relief N 49169 drawing chuckles from colleagues V 49177 report loss for quarter N 49178 seeking increases in lines N 49179 estimate amount of loss N 49179 show profit for year N 49180 reported income of million N 49182 was million on revenue N 49183 file report with the V 49184 resolving accounting of settlement N 49185 settle objections to practices N 49185 provide refunds to customers V 49186 correct deficiencies in system N 49191 completed sale of subsidiary N 49194 operates total of stores N 49195 operates stores in the N 49202 post drop in earnings N 49214 pushed prices in period V 49218 be element of earnings N 49232 supplied technology to Soviets V 49234 governing exports of tools N 49236 supplied the with devices V 49236 build parts for aircraft N 49237 cited report as source V 49237 exported million in systems N 49237 exported million to industry V 49239 discussing allegations with government V 49241 called attention to matter V 49243 support position of hawks N 49245 sent signals about policies N 49245 reflecting divisions among agencies N 49246 moved administration in direction V 49246 allow exceptions to embargo N 49247 liberalize exports of computers N 49250 issue warrants on shares N 49252 buy share at price V 49253 carry premium to price V 49256 issued warrants on shares N 49259 is one of handful N 49260 filed suit against speculator V 49263 serving term for violations V 49265 seeks million in damages N 49268 visited it in 1983 V 49269 signed letter of intent N 49269 acquire stake in company N 49271 purchased bonds in transactions V 49271 realized million in losses N 49273 combining stake with stake V 49274 given % of company N 49276 own % of company N 49277 represent % of company N 49281 stay way for months V 49282 support prices into 1990 V 49284 place orders over months V 49286 be level since 1970s N 49287 were bushels on 31 V 49289 boost production by bushels V 49290 estimates production for year N 49290 estimates production at bushels V 49299 reduce yield from crop V 49302 given indication of plans N 49302 place orders for wheat N 49302 place orders in months V 49305 been a of estimate N 49307 cut price of concentrate N 49307 cut price to 1.34 V 49311 stimulate demand for product N 49315 Barring snap in areas N 49318 capped week of prices N 49322 reach 21.50 on the N 49325 having difficulties with exports N 49326 foresee tightening of supplies N 49329 been subject of speculation N 49329 been subject for weeks V 49331 lead buy-out of company N 49333 recommend it to shareholders V 49336 is part of board N 49339 analyzed appointment of executive N 49339 becomes member of board N 49340 has reputation as manager V 49341 pave way for buy-out N 49343 have affect on them V 49344 had impact on us N 49345 have problem with announcement N 49351 awarded account to office V 49353 ended relationship with office N 49354 billed million in 1988 V 49356 win account in 1981 V 49366 have effect on revenue V 49367 been source of revenue N 49368 store data for computers V 49371 elected director of provider N 49371 increasing board to members V 49373 filed part of report N 49373 filed part with the V 49374 provide statements by end V 49377 named chairman of processor N 49378 resigning post after dispute V 49380 named 57 as director V 49387 earned million on sales V 49388 concerns one of defenses N 49389 considering all in light N 49398 offset weakness in linage N 49400 posted gain in income N 49401 reported increase in revenue N 49402 was demand for linage N 49406 gained % to billion V 49409 included gain of million N 49411 reflected softness in advertising N 49414 reported net of million N 49414 reported net for quarter V 49417 expect increase for rest V 49418 ease damage from linage N 49421 report earnings for quarter N 49429 angered officials in the N 49430 signed notices for plants N 49430 cast doubt on futures V 49432 using % of capacity N 49434 stepping pace of consolidation N 49435 is competition from plants N 49436 want provisions in contract V 49437 get strategy in place V 49439 became head of department N 49439 blasting insensitivity toward members N 49441 told workers of moves V 49446 build generation of cars N 49447 build the at plant V 49449 have product after 1993 V 49450 build types of products N 49450 build types on notice V 49455 taken beating as result V 49456 used plant as symbol V 49457 raised obstacle to acquisition N 49463 marked time in history N 49464 reached conclusions about attempts N 49465 is change in policy N 49471 be settlement of dispute N 49472 citing concerns about amount N 49474 contain guarantees on levels N 49478 canceled plans for swap N 49478 resume payment of dividends N 49479 offer number of shares N 49479 offer number in exchange V 49482 resume payments of dividends N 49483 suspended payment in 1985 V 49491 face competition from drugs N 49493 having impact on company V 49501 generate sales of million N 49506 lowering costs in years V 49506 shedding companies with margins N 49507 allowed sales from drug N 49510 be % above million N 49510 was result of sales N 49514 earned million in period V 49515 has problems with estimate N 49516 achieve increase in earnings N 49524 restricting prescriptions of medicines N 49528 expects loss for quarter N 49529 expecting profit for period N 49531 reported income of million N 49531 reported income in period V 49534 accepted resignation of president N 49539 earned million on sales V 49540 has garden of course N 49543 remembers playground by eccentrics N 49544 has sense of recall N 49545 transforms her into the V 49547 owing inspiration to cultures V 49549 calls herself in book V 49551 reinvented man as hero V 49552 remembered her as figure V 49555 analyzed families by arrangements V 49557 have bedrooms at all V 49561 rhymed river with liver V 49561 carried change of clothing N 49561 carried change in envelope V 49563 excised heads of relatives N 49563 excised heads from album V 49564 loses momentum toward end V 49568 resuscitate protagonist of work N 49570 take psychiatrist on date V 49576 pay million as part V 49576 regarding cleanup of smelter N 49577 was part-owner of smelter N 49579 make unit of concern N 49579 exempting it from liability V 49580 made undertakings with respect N 49581 issued statement on agreement N 49583 recover contribution from others N 49583 recover contribution for amount V 49584 issuing dividends on stock V 49589 hold meeting for shareholders N 49590 saluted plunge as comeuppance V 49591 prove harbinger of news N 49592 is reaction to valuations N 49595 do something about buy-outs N 49595 do something about takeovers N 49598 lopped billions of dollars N 49598 lopped billions off value V 49601 been change in economy N 49603 applaud setbacks of speculators N 49607 projected periods of decline N 49608 pushing price of housing N 49611 is amount of space N 49612 are stores for rent N 49621 follows decline in months N 49622 limiting demand for space N 49627 exacerbates problem for landlords V 49628 is comfort to landlords N 49630 bemoaning loss of businesses N 49632 been jump from rates N 49635 command rents of 500 N 49636 offers rents of 100 N 49643 representing shares with symbol V 49645 listed shares of companies N 49650 listed shares of company N 49652 marks start of year N 49653 finds influence in dissent V 49655 assume role after years V 49656 accept role in ways V 49658 are newcomers to dissent N 49658 joining forces in decade V 49662 cast votes in cases N 49663 cast votes in decisions N 49664 defending importance of dissents N 49664 defending importance in speech V 49667 was dissenter from opinions N 49669 sweep it under rug V 49671 is flavor to dissents V 49675 curtail right to abortion N 49680 be liberal of four N 49680 enjoys challenge than others V 49681 is one in history N 49683 sold deposits of institutions N 49683 sold deposits in wave V 49683 prevented sale of a N 49686 bought thrift in transaction V 49688 leave bulk with government V 49690 paid premiums for systems V 49691 been case with deals N 49694 been one of payers N 49695 targeted thrifts for sales V 49695 spend cash by deadlines V 49698 continued foray into markets N 49699 had assets of billion N 49700 pay premium of million N 49700 pay the for billion V 49702 had assets of million N 49703 pay premium of million N 49703 pay the for billion V 49704 acquire million of assets N 49704 acquire million from the V 49704 require million in assistance N 49705 had billion in assets N 49706 pay premium of million N 49706 assume billion in deposits N 49707 purchase million of assets N 49708 had million in assets N 49709 assume million in deposits N 49710 purchase million in assets N 49710 receive million in assistance N 49710 receive million from the V 49717 lowering guarantee to advertisers N 49717 lowering guarantee for year V 49718 de-emphasize use of giveaways N 49718 cut circulation by 300,000 V 49718 increase cost of rate N 49718 increase cost by 4 V 49719 increase rates in 1990 V 49720 be % per subscriber V 49722 hold rates for advertisers V 49723 become forms in world V 49724 wean itself from gimmicks V 49725 selling magazine with radio V 49727 takes focus off magazine V 49728 paint cut as show V 49731 cut circulation from million V 49736 's show of weakness N 49736 improving quality of circulation N 49740 announce levels for 1990 N 49740 announce levels within month V 49741 called the for briefing V 49743 considered laughingstock of news N 49745 draws audiences around world N 49751 reposition itself as channel V 49753 held job in journalism N 49754 is the in number N 49756 paying salaries after years V 49757 break stories with team V 49758 use us as point V 49758 become point of reference N 49767 spend average of minutes N 49769 put it at disadvantage V 49773 filled schedule with newscasts V 49775 create programs with identity V 49776 adding show in morning N 49779 featured show during period V 49786 produce segments with eye V 49787 generate excitement for programs N 49787 generate excitement in way V 49788 's departure from past N 49789 spend money on production V 49793 make investment in people N 49794 fear tinkering with format N 49795 market cable-TV on opportunities V 49797 Backs View in Case N 49803 leave realm of reporting N 49803 enter orbit of speculation N 49805 leaving transaction in limbo V 49806 withdrew application from the V 49807 lend money in amounts N 49808 included million in deposits N 49809 save million in costs N 49810 seek buyer for branches N 49813 posted loss of million N 49815 trying tack in efforts N 49816 numbering 700 to 1,000 N 49817 have ring to it N 49818 renewed arguments in states V 49823 justify dismissal of actions N 49824 lacked information about the N 49824 sent cases to court V 49825 exceeded assets by billion V 49825 closed it in 1988 V 49827 dismisses arguments as defense V 49828 including reversal of foreclosure N 49829 asking court for number V 49830 take the as prize V 49831 named president of company N 49835 brandishing flags of the N 49835 gave activists upon return V 49836 spent years in prison V 49839 considered leader of the N 49841 ease shortages across nation N 49843 be room for flexibility N 49843 allow funding of abortions N 49843 are vicitims of rape N 49844 reiterated opposition to funding N 49844 expressed hope of compromise N 49845 renewed call for ouster N 49846 have right to abortion N 49849 seize fugitives without permission V 49851 following postponement of flight N 49853 dispatch probe on mission V 49855 facing calls for reduction N 49856 purge party of elements N 49864 made remarks to gathering V 49866 presented proposals for timetable N 49867 increases power for Moslems V 49870 oppose control of chain N 49871 is move in battle N 49875 announced formation of association N 49875 preserve integrity of system N 49876 cause damage to system N 49878 seeking approval for withholdings N 49882 trigger drop in the N 49882 play role in decline N 49883 viewed data as evidence V 49885 is demand in economy N 49886 be easing of policy N 49892 measures changes in producers N 49896 is rise than increase N 49898 leaving pace of inflation N 49903 being advance in prices N 49914 report loss of million N 49919 provide million for losses V 49922 mark portfolio of bonds N 49922 mark portfolio to market V 49922 divest themselves of bonds V 49924 shed operations outside markets N 49924 taking charge for operations N 49927 suspend payments on classes N 49932 have concerns about health V 49935 had loss of million N 49936 holds one of portfolios N 49937 pared holdings to million V 49941 provide values for holdings N 49943 divest themselves of bonds N 49947 added million to reserves V 49948 sell 63 of branches N 49948 sell 63 to unit V 49949 is centerpiece of strategy N 49949 transform itself into S&L V 49950 expected decision on transaction N 49951 interpret delay as indication V 49953 reduce assets to billion V 49954 give capital of million N 49955 reduce amount of will N 49955 reduce amount by million V 49958 place some of them N 49958 place some in affiliate V 49959 name any of cheeses N 49959 name any after nibble V 49961 wins slot in ratings N 49962 impose quotas against invaders N 49969 seeking classmates for reunions V 49972 won bet with host N 49972 identify dialects over telephone V 49973 pile 150 on coin V 49974 selling weight in pancakes N 49979 featuring songs from each N 49980 make fools of themselves N 49983 make part of time N 49991 chronicles fight of investigator N 49999 is bane of television N 50004 authorized channels for time V 50004 allow television alongside channels V 50005 is appetite for programming N 50009 caught end of series N 50011 expanding collaboration between contractors N 50012 have sales of billion N 50015 strengthen ties between companies N 50015 make force in contracting N 50016 reshaped world of manufacture N 50019 stirring controversy in industry N 50022 join fight as part V 50023 had talks about bid V 50025 included million in contracts N 50026 is competitor on contracts N 50026 heighten worries about concentration N 50028 is name of game N 50031 is response to environment N 50034 building cooperation with Europeans N 50037 justify ownership of venture N 50039 include family of missiles N 50044 shift emphasis to gas V 50046 been swing of pendulum N 50049 is output of crude N 50050 transports % of all N 50054 intensify reliance on oil N 50057 increase dependence on crude N 50058 add barrels of capacity N 50058 add barrels to system V 50059 has capacity of barrels N 50061 had income on sales N 50062 reduced shipments by tons V 50065 see improvements in segments N 50067 had net of million N 50068 Predicting results of firms N 50071 taking this as sign V 50073 expects revenue for quarter N 50075 is example of difficulty N 50081 show earnings for period N 50085 expects earnings of 14 N 50086 shape industry in year V 50089 had lock on market N 50090 carry seller with them V 50093 improving quality of material N 50094 receiving calls about product N 50095 control functions of computer N 50095 spells trouble for firms N 50098 report earnings of cents N 50101 is highway within computer N 50106 tighten hold on business N 50111 report loss of cents N 50122 following declines throughout 1980s N 50125 is news for state N 50126 was state in the N 50129 lost % of population N 50129 lost % during 1970s V 50138 aged 65 to 74 N 50150 place success above family V 50152 spend time with families V 50153 are priorities for group N 50157 represent % of population N 50157 control one-third of income N 50163 give 2,500 to charity V 50165 hold jobs in management N 50166 make % of officials N 50169 was 16,489 in 1988 N 50171 are students in college N 50175 warned citizens against game V 50179 is blow to sport N 50184 admit patrons in jeans N 50187 open can of worms N 50188 is stranger to cans N 50189 gave favors to friends N 50193 taken care in Man V 50198 wear flowers in hair N 50198 wear them behind ear V 50199 have quality of color N 50202 be tension between blacks N 50204 's inheritor of tradition N 50204 's man in water N 50205 was spokesman for campaign N 50211 called shvartze with mustache N 50212 articulate analysis of behavior N 50214 is form of racism N 50218 is humor of underdog N 50219 cut both to ribbons V 50220 is form of mischief N 50222 facilitating co-existence of groups N 50223 taboo mention of differences N 50229 courting mother against wishes V 50234 made theme of courtship N 50234 lost suit on grounds V 50238 is tendency of sitcoms N 50239 enlighten us about stereotypes V 50240 quits job as salesman N 50240 quits job in order V 50241 is incompatibility between preachiness N 50244 putting episodes about topics N 50246 interrupt shtik with line V 50246 sound shmaltzy on lips V 50249 signal change in condition N 50256 elected president of maker N 50259 been executive since 14 V 50261 approve bill without cut N 50264 putting bill in category V 50270 keep cut in version V 50271 need this as way V 50273 make approval of cut N 50286 resisting bill without vote N 50287 win issue on floor V 50290 give benefits to executives N 50294 boost funding in areas V 50297 required sacrifice by senator N 50300 make tax on calls N 50302 pay benefits for retirees N 50303 raised million in 1990 N 50309 acquire securities for an N 50312 Speed collection of tax N 50314 Withhold taxes from paychecks V 50315 Change collection of taxes N 50316 Restrict ability of owners N 50317 impose tax on departures V 50319 curbing increases in reimbursements N 50320 impose freeze on fees N 50321 reducing deficit by billion V 50325 collect million from users V 50326 Raising million by increasing V 50326 establishing fees for operators N 50330 found cutbacks in companies N 50332 bothered me about piece V 50333 showing number of months N 50333 captioned graph as Time V 50335 was one of periods N 50340 reduced rating on million N 50340 citing turmoil in market N 50341 reduced rating on debt N 50341 keep debt under review V 50342 is holder of bonds N 50343 divest themselves of securities N 50343 divest themselves over period V 50346 was reason for downgrade N 50348 was a on part N 50349 suffered attack of nerves N 50358 see support until 2200 N 50362 take money before crash V 50364 was massacre like those N 50373 marks start of market N 50375 was combination in 1987 V 50377 was enthusiasm for funds N 50378 protect investor against losses V 50386 carry the to 2000 V 50390 's case at all V 50391 sees this as time V 50401 do buying on behalf V 50403 is manifestation of capacity N 50404 see this as reaction V 50405 lodged lot of securities N 50405 lodged lot in hands V 50405 are objects of takeovers N 50405 loaded corporations with amounts V 50408 is resiliency in economy N 50411 buy companies around world N 50416 are opportunity for guys N 50418 sees problems with possibility N 50426 depend deal on the V 50430 drew criticism from clients V 50431 keeping money in equivalents V 50435 supported rights of witnesses N 50438 repeat platitudes as indication V 50440 heaping scorn on witnesses V 50441 sandwiched praise of meat N 50441 sandwiched praise between loaves V 50453 seeks information for change V 50456 obtaining information from officials V 50458 identify sources of waste N 50464 is player on stage N 50464 enhance itself into body V 50473 draw inference against officials V 50473 assert privilege against self-incrimination N 50473 assert privilege in hearings V 50474 be witness against himself N 50475 precludes drawing of inference N 50476 take stand as witness V 50477 protect defendant in matters V 50480 permit drawing of inference N 50481 take the in matter V 50481 subject him to prosecution V 50482 take the in matter V 50482 harms him in matter V 50484 asserted the in proceeding V 50484 receiving advice from counsel N 50485 convict him of crime N 50486 Drawing inference in hearing V 50486 offend shield against self-incrimination N 50494 took falls on you-know-what V 50495 be plus for stocks N 50496 be days for prices N 50499 played part in activity N 50510 was lot of volume N 50510 makes markets in thousands V 50512 handle volume of calls N 50513 is one for companies N 50513 following complaints from investors N 50514 was hour of trading N 50518 do thing at time V 50519 executed order by close V 50520 take call at time N 50521 keep supplies of stock N 50521 keep supplies on hand V 50522 buy shares from sellers V 50524 exacerbating slide in prices N 50526 kept stockpiles on hand V 50548 selling stock throughout week V 50550 put shares on shelf V 50552 sent waves through market V 50556 has handful of stocks N 50559 lost % to 40 V 50560 dropped 1 to 107 V 50566 dropped 1 to 33 V 50566 lost 1 to 19 V 50566 dropped 1 to 66 V 50568 are guide to levels N 50598 scooping stocks during rout V 50601 put checkbooks in hurry V 50604 manages billion of stocks N 50605 spent half for stocks V 50607 shaved million from value V 50609 spent million in half-hour V 50612 is justification on level N 50614 attracting trillion from funds V 50616 added billion to portfolio V 50618 see changes in portfolios N 50621 have year in market N 50627 soften blow of prices N 50630 converted % of pool N 50630 take stock off hands V 50631 make bids on anything N 50634 brought reprieve for managers N 50634 put them at odds N 50636 replacing them at price V 50637 shown losses of % N 50641 turned evidence in investigation N 50641 turned evidence to office V 50643 market version of medicine N 50643 substituted product in tests V 50646 recall strengths of version N 50647 began recall of versions N 50650 challenge legality of defense N 50651 become landmark in law N 50651 challenge practice of companies N 50651 issuing shares to trusts V 50651 dilute power of stockholders N 50653 uphold validity of type N 50654 issue stock to trust V 50654 dilute power of shareholders N 50659 had words for policy-making V 50660 be subject of initiatives N 50664 finger each for blame V 50667 order billion of cuts N 50668 reach agreement on bill N 50672 is warfare between the N 50673 sent signals about response N 50682 brought administration to table V 50683 barring drops in market N 50684 force sides to table V 50688 survive it without problem V 50690 be plenty of blame N 50691 is concern on part N 50694 is prospect of deal N 50696 exclude gains from legislation V 50697 strip gains from legislation V 50700 follow lead of the N 50700 drop variety of measures N 50701 strip bill of provisions V 50702 cut shortfall by billion V 50706 attributing drop in prices N 50706 attributing drop to decision V 50706 postpone action on gains N 50707 holding assets in anticipation V 50708 is more than any N 50711 refinancing billion in debt N 50736 matched brethren in anxiety V 50736 riding storm in market N 50737 losing faith in market N 50743 flee market in 1987 V 50745 lost one-third of value N 50747 representing clubs from the N 50749 welcomed drop in prices N 50750 take advantage of it N 50751 has stocks in mind V 50752 provide financing for buy-out N 50753 is one of number N 50754 's distaste for leverage N 50757 's foundation to it N 50759 quit job as assistant N 50773 win confidence of investor N 50786 extends trend toward downsizing N 50790 carry memory than anything N 50793 takes exception to name N 50807 Consider growth of portables N 50807 comprise % of sales N 50811 precluded use of microprocessors N 50818 take place between players V 50819 considered threat to firms N 50823 taking aim at share N 50831 include drive in words N 50834 hit the by end V 50834 established itself as one V 50837 develop circuits for use N 50840 received contract for sets N 50842 received contract for engines N 50843 pushing rate of inflation N 50843 pushing rate to % V 50845 registered 156.8 at end V 50851 hit highs during trading V 50859 braved market in day V 50861 acquired % of shares N 50863 raise objection to acquisition V 50865 discussed possibility of venture N 50872 expect problems as result N 50874 buying stock on margin V 50875 expect problems with calls N 50877 learned lesson in 1987 N 50879 renew contracts with unit N 50879 renew contracts at end V 50881 put cost of all N 50881 put cost at million V 50888 drop agreements at end V 50896 was setback for program N 50896 is entry into format N 50896 is entry since 1972 V 50897 is way to it N 50897 named president of entertainment N 50898 raise level of show N 50903 post earnings for quarter V 50905 reflect improvement in business N 50906 reported income of million N 50907 report results for quarter N 50912 bring it into competition V 50914 are million to million N 50915 wrest slice of business N 50915 wrest slice from leader V 50920 give discounts to users V 50923 faces variety of challenges N 50924 are replacements for mainframes N 50927 be news for economy N 50929 ease grip on credit N 50934 following plunge in history N 50937 presage shifts in economy N 50948 pour money into economy V 50949 mean change in policies N 50950 bring rates in effort V 50951 lowered rate to % V 50952 charge each for loans V 50953 sustained manufacturers for years V 50956 was case in 1987 N 50956 producing panic among investors N 50956 diminishing flow of capital N 50959 grew % in quarter V 50967 had years of accumulation N 50970 pump credit into economy V 50973 's outbreak of inflation N 50985 taking comfort from success V 50989 seen cutting by buyers N 50991 be quarter with comparisons N 50994 has stake in polyethylene N 50995 was million on sales N 50997 pulling profit for companies N 50997 pulling profit by % V 51002 had growth in pigments V 51006 earned million on sales V 51010 post profit for all N 51012 posted profit of million N 51016 keep pressure on prices V 51019 was million on sales N 51020 faces prices for product N 51020 develop uses for polypropylene N 51025 earned million on sales V 51026 earned million on sales V 51046 pay principal from securities V 51057 's possibility of surprise N 51061 offset jump in imports N 51064 do the in report V 51065 expects increase in the N 51066 expecting gain in the N 51071 quicken bit from pace V 51072 signaled increase in starts N 51077 seeing concept of both N 51081 follows fortunes of team N 51082 anticipate market by fraction V 51084 is depiction of lives N 51087 pulled million before lunch V 51089 keep secret from world N 51089 ordering lunch over phone V 51093 anticipating market by fraction V 51103 takes man until episode V 51109 takes wash to laundromat V 51113 create incentive for producers N 51116 put finger on problem V 51119 bear resemblances to personalities N 51121 searching office for bonds V 51123 covering face with microchips V 51126 is correspondent in bureau N 51127 gave details of plans N 51128 is part of attempt N 51128 is parent of Farmers N 51129 appease concern over acquisition N 51130 invest billion in Investments V 51132 obtained assurances from group N 51132 provide portion of financing N 51134 pay debt from acquisition N 51135 include pieces of Farmers N 51137 be owner of Farmers N 51138 needs approval of commissioners N 51142 take % of earnings N 51142 take % as dividends V 51143 have implications for holders N 51144 pare it to concern V 51145 dragged market below levels V 51149 fall % from level N 51152 adopted incentives on models N 51155 see impact on sales N 51159 reports sales at month-end V 51161 had program in place N 51169 rise average of % N 51177 named + of subsidiary N 51178 been consultant to operations N 51181 has interests in electronics N 51183 opened bureau in capital V 51185 is victory for radio N 51195 peddle newspapers of stripe N 51199 bought stakes in newspapers N 51203 are source of news N 51204 shows depth of some N 51209 's cry from treatment N 51209 filed reports to network N 51209 filed reports by phone V 51218 saves broadcasts for midnight V 51219 entered the with program V 51220 is show with leaders N 51223 cover happenings in towns N 51224 has show with news N 51225 's host of programs N 51226 find tidbits of news N 51228 intersperses the in groups N 51231 know everything about world N 51232 depress resistance of body N 51234 combat strains of idea N 51238 get youth into uniform V 51239 curing inequities of draft N 51240 is aim of backers N 51244 require form of service N 51244 require form from recipient V 51247 attract support among students V 51257 throwing leftovers into kettle V 51259 reflect view of cooks N 51264 contribute average of hours N 51267 provide credit for students N 51269 staff jobs in hospitals N 51269 overpay graduates as workers N 51269 cause resentment among workers N 51272 show support for concept N 51273 organizing roll of associations N 51274 substitute any of omnibus N 51274 substitute any for proposal V 51274 endow foundation with million V 51274 inform citizens of ages N 51274 exhort them to volunteerism V 51276 's need for concessions N 51278 performing works of content N 51279 is fellow at the N 51281 named officer of chain N 51284 purchased % of Services N 51284 purchased % for million V 51285 replaced representatives on board N 51286 provides variety of services N 51287 provides services to clinics N 51288 had loss of million N 51291 leave growth for all N 51291 leave growth at % V 51293 yield investors in year V 51296 has dollars of bonds N 51297 redeemed time at value V 51300 made prerequisite to graduation N 51302 restricted subsidies to students V 51308 pay dues to society N 51311 are uses of money N 51312 question value of work N 51314 see service as cover V 51314 fear regimentation of youth N 51317 recognizing source of confusion N 51331 answers none of them N 51334 Ignore service in the N 51340 is rationale for bills N 51341 exceed income of graduates N 51346 throw refusers in jail V 51347 encourages kinds of behavior N 51348 encourage service by classes N 51349 undercut tradition of volunteering N 51354 involve stipends to participants N 51376 take control of lives N 51377 is service to nation N 51380 is co-author of Books N 51381 laid plans through weekend N 51383 analyzed data on plunge N 51385 avoiding actions over weekend V 51386 reinforce sense of crisis N 51387 pour cash into system V 51389 were portrayals of plan N 51390 providing money to markets V 51391 provides money to system V 51391 buying securities from institutions V 51398 signal change in condition N 51400 carried chance of declines N 51411 have knowledge in markets V 51417 had consultations with chairman N 51418 avoid sense of panic N 51434 's advice of professionals N 51442 see plunge as chance V 51443 been lot of selling N 51446 expect market in months V 51459 take advantage of panics N 51465 has one of records N 51470 lagged market on side V 51475 used contracts in account N 51481 recommends securities of maturity N 51482 is sign to investors N 51484 sell stock for price V 51492 is % to % N 51493 Paying % for insurance N 51495 sold million of stock N 51495 sold million to employees V 51498 borrows money from lenders V 51498 award employees over time V 51498 fork cash for stock N 51501 create incentives for employees N 51502 have stake in success N 51503 pay dividend on stock N 51504 establish house for transactions N 51505 sell shares to parties V 51505 have right to refusal N 51508 named nominees for board N 51510 be pause at the V 51511 stays points from close N 51512 ease opening of the N 51513 is one of number N 51514 handle surges in volume N 51518 resurrect debate over host N 51520 setting requirements for markets N 51522 expressed satisfaction with results N 51523 buy contracts at prices V 51525 separate trades from trades V 51525 resolve imbalances in stocks N 51526 compared action in pit N 51526 compared action to fire V 51535 be cause of crash N 51542 strip markets of products V 51543 was criticism of system N 51545 raised possibility of breakdown N 51547 held recommendations at length V 51550 dismissed mechanisms as sops V 51560 halts trading for hours V 51563 Establish regulator for markets N 51567 Require reports of trades N 51568 monitor risk-taking by affiliates N 51571 review state of the N 51573 be freedom of choice N 51573 be freedom for both V 51577 include members of league N 51580 offering increase in category N 51580 demanded increase in wage N 51584 prevent trade in wildlife N 51586 total billion of business N 51587 build frigate for 1990s V 51588 commit themselves to spending V 51588 show signs of success N 51592 gets pence for every V 51593 carries rate on balance N 51600 celebrate anniversary of patriarchate N 51602 is brainchild of director N 51602 need kind of symbol N 51603 identified himself as customer V 51603 got word on players N 51606 carried prices below % N 51611 keep line off market V 51611 accusing upstart of infringement N 51612 changed lot for owner V 51614 's thing in life N 51615 losing % of sales N 51616 faces might of a N 51617 turned tables on business V 51626 blocking sale of products N 51627 turned request for such N 51634 shares office with teddy V 51635 changed buttons on line N 51635 created line for children N 51638 left plenty of room N 51639 resemble them in size V 51643 threatening action against customers V 51644 take matter to the V 51648 answered threat with suit V 51651 including use of detective N 51653 using colors on goods V 51660 purchased shares of common N 51662 are targets of tender N 51663 extended offers to 4 V 51665 announced offer for control N 51667 acquire % of capital N 51667 acquire % for francs V 51668 put value of francs N 51668 put value on shareholding V 51669 controls % of shareholding N 51670 sold block of shares N 51670 sold block to companies V 51671 bought shares on 11 V 51672 hold stake of shares N 51675 bought operator of chain N 51675 bought operator for million V 51676 becomes shareholder in Sports N 51677 posted revenue of million N 51681 purchase any of stock N 51681 extended agreement through 31 V 51684 increased stake to % V 51686 terminated negotiations for purchase N 51686 operates service under contract V 51689 valued fleet at million V 51690 become the in blend N 51691 increase stake in company N 51691 increase stake above % V 51692 regarding companies with interests N 51694 increase stake in future N 51695 was foundation to rumors N 51696 propose generation of trainers N 51697 buy trainers with value N 51697 buy trainers between 2004 V 51701 perform assembly of trainer N 51703 ended occupation of shop N 51705 voting 589 to 193 N 51707 pose challenge to government N 51711 mark quotations on holdings N 51712 buy securities for fund V 51714 produced dive in the N 51715 trigger rally in market N 51715 move capital into securities V 51717 plummeted % to cents V 51718 make market in securities V 51727 withdrew junk of bonds N 51728 dump some of holdings N 51728 pay redemptions by investors N 51729 tracks values of funds N 51730 climbed 25 than points N 51730 climbed 25 to 103 V 51730 climbed gain of year N 51732 plummeted point to % V 51732 plummeted decline since 1982 N 51733 was drop in the N 51734 get flight to quality N 51736 marks shift in outlook N 51737 be lift for bonds N 51738 manages billion of bonds N 51738 is rationale for rout N 51742 is flight to quality N 51746 receive billion of payments N 51747 is undercurrent of business N 51748 were billion of orders N 51750 is plenty of money N 51756 creating hell of opportunity N 51762 covering some of billion N 51765 pay interest on total N 51767 is the since 1982 N 51770 is damage to businesses N 51772 is readjustment of values N 51775 quoted p.m. at 103 V 51777 followed fall in market N 51780 eying action of the N 51780 repeat injection of amounts N 51783 yield % to assumption V 51794 write value of business N 51795 leads us to piece V 51798 leaving it with billion V 51800 decide issues on merits V 51804 are instance of fingers N 51808 put bill on speed V 51820 see stocks as today V 51823 posted loss of million N 51824 absorb losses on loans N 51825 brings reserve to level V 51825 equaling % of loans N 51826 reduced loans to nations N 51826 reduced loans to billion V 51828 realized gain of million N 51829 dipped % against quarter N 51829 dipped % to million V 51830 rose % to million V 51833 see modicum of normalcy N 51834 gave mandate to party V 51838 was mop-up of corruption N 51844 herald assertions as proof V 51845 deposit million in bank V 51849 monitored conversations of figures N 51854 served victory on a N 51854 condemning affair as hunt V 51857 buttress credibility with the N 51863 revamp pieces of legislation N 51863 revamp pieces in preparation V 51867 is extradition of terrorist N 51868 awaits approval from minister N 51873 frustrating procedures for election N 51874 linked prospects to reaction V 51877 is one of slingers N 51879 following plunge in prices N 51880 inject amounts of money N 51880 inject amounts into system V 51883 skidded 190.58 to 2569.26 V 51890 followed months of declines N 51898 received a from group V 51904 give share to nations V 51906 prevented sale of a N 51913 revealed information about flaws N 51914 misled investors about success V 51926 received attention as statements N 51929 establishes rule of immunity N 51929 say anything without fear V 51930 pay million in fees N 51934 upheld award of fees N 51936 reimburse it for fees V 51937 get 260,000 for costs V 51944 be arrangement among firms N 51945 refer work to each V 51946 conduct seminars on topics N 51948 develop ties with firm N 51949 SIGNAL turnaround for manufacturers N 51950 sought million in damages N 51950 posed risk to students N 51953 join 500-lawyer as partner V 51954 develop practice of group N 51958 spent years at unit V 51960 split time between offices V 51964 offering trial of computers N 51964 offering trial to consumers V 51966 hold % of venture N 51972 forecast sales for venture N 51972 forecast sales for year V 51982 is mix of analysis N 51983 had offers from magazines N 51986 soared % to francs V 51989 reflecting billings for contracts N 51990 had profit of francs N 51991 released figures for half N 51991 made forecast of earnings N 51993 report income of million N 51994 reported loss for loss N 51996 signal turnaround for maker V 52000 report income of milion N 52001 had loss of million N 52003 produce tons of rods N 52004 exceeded ability of operation N 52005 expanding operation at cost V 52006 expanded force to people V 52006 expand sales from portion V 52009 continue strategy for brand V 52016 affect volumes under contracts N 52020 pull piece of tape N 52026 use proceeds from sale N 52028 restructure billion in debt N 52033 eliminates uncertainty with respect N 52038 has reserve against million N 52039 represents phase of program N 52039 reduce exposure through sales V 52041 mean end of mega-mergers N 52041 marks start of game N 52044 is sign for market N 52047 increasing position to % V 52052 was the in series N 52053 taking view of requests N 52054 buy parent of Airlines N 52054 buy parent for 300 V 52060 traded shares at prices V 52062 commit billions of dollars N 52066 sell million of bonds N 52068 arrange million in loans N 52069 arrange billion of loans N 52070 offering 125 for shares V 52070 combine operations with business V 52073 see silver for business V 52076 become hunters in market N 52076 become hunters in market N 52080 retained confidence in buyers N 52084 are sanguine about companies N 52085 Given weakness in both N 52090 accept price from group V 52091 offering 26.50 for shares V 52094 soliciting bids for sale N 52096 signified unwillingness among banks N 52096 provide credit for takeovers N 52098 consider sale of company N 52101 keeping % of portfolio N 52104 are term than purchase N 52105 take advantage of opportunities N 52106 evaluate market in location N 52106 evaluate market from perspective V 52107 take advantage of opportunities N 52151 create opportunities for corporations N 52157 reduced volume at operations N 52160 investigate million in gifts N 52161 is subject of lawsuit N 52162 buy influence with lawmakers N 52163 based this on statement V 52171 filed suit against others V 52175 returned 76,000 in contributions N 52175 gathered money for him V 52179 donated 112,000 to campaigns V 52180 broke friendship in 1987 V 52181 told number of people N 52182 gave 850,000 in funds N 52182 gave 850,000 to organizations V 52183 received 47,000 in donations N 52184 disclosed 200,000 in donations N 52190 made disclosure of role N 52192 volunteered help to the V 52192 portrayed role in 1987 N 52196 estimated value of pact N 52197 begin delivery of cars N 52199 opened doors to investors V 52204 cite uncertainty about policies N 52205 have all in basket V 52211 is source of toys N 52212 illustrate reliance on factories N 52213 fell % from 1987 N 52213 fell % to billion V 52214 jumped % to billion V 52215 fell % to billion V 52215 rose % to billion V 52224 regards year as period V 52225 excite sales in the N 52228 placing warriors among toys V 52229 make year for Playmates N 52230 improve year from 1988 V 52231 cite dominance of market N 52234 provided days in months V 52241 have right to abortion N 52242 recognizing right to abortion N 52245 filed brief in appeal V 52247 garnered votes of three N 52248 is standard than test N 52251 dropped % to million V 52253 rose % to billion V 52256 affected line by million V 52259 rose points to % V 52260 is period for them V 52261 buffing impact of decline N 52274 take interest in program-maker N 52276 aggravate rift between studios N 52277 sit month for meeting V 52280 get shows in lineups V 52289 wants part of mess N 52310 grabbing chunk of riches N 52317 including study of series N 52322 has lots of clout N 52334 starts study of findings. N 52340 were part of company N 52350 pursue lifting of suspension N 52352 had net of 72 N 52354 included charge of 35 N 52365 reported net of 268.3 N 52376 see spirit of people N 52380 formed core of the N 52380 is unbanning of movement N 52384 stopping tide of night N 52389 create climate of peace N 52454 have appreciation of history N 52479 expect installations of lines N 52481 show signs of weakening N 52491 post gain of cents N 52493 reported income of 12.9 N 52499 obtain services of executives N 52504 have agreeement with executives V 52507 become executives of studio N 52516 induce breach of contracts N 52536 signaled end of search N 52540 deferred compensation of 50 N 52542 determining extent of damages N 52544 had change in earnings V 52572 watching value of dollar N 52574 is one of better-than-expected N 52576 hurt reporting of earnings N 52586 arranged syndication of a N 52591 following shooting of bystanders N 52596 assemble group of banks N 52597 had relationship in years V 52598 syndicate loan of name N 52614 calculate rate of option N 52618 polls managers of manufacturing N 52622 subtracting percentage of managers N 52632 measuring costs of making N 52646 had profit of 58.7 N 52654 have impact on results V 52655 include sale of banks N 52664 staunch flow of ink N 52665 recording quarters of profitability N 52671 prevent takeover of country N 52672 attending assembly of the N 52674 got word of atrocity N 52680 been target of courage N 52718 was head of management N 52721 sell % of shares N 52724 involving sale of shares N 52730 is part of plan N 52755 have time to shop V 52763 become one of activities N 52786 spend lot of money N 52787 boycotted stores of way N 52805 do job of making N 52817 cut price of couch N 52821 is example of kind N 52841 examined opinions of 550 N 52848 looks % of executives N 52853 consider level of taxes N 52854 had opinion on taxes V 52855 was cost of employees N 52867 increased number of employees N 52868 increase number of employees N 52873 is officer of unit N 52878 gets title of director N 52879 inherits bits of positions N 52897 represented % of production N 52902 report loss of deteriorating N 52909 enjoying honeymoon of production N 52948 Solved Riddle of Disease N 52953 alleviate suffering of others N 52955 appreciate value of such N 52956 further work of resolving N 52960 is measure of quality N 52971 have sense of values N 52974 had profit before items V 52981 had profit from continuing V 52981 continuing operations of 57 N 53013 say manipulation of such N 53016 are representatives of people N 53020 stand chance of losing N 53036 circulated photo of leader N 53048 replaced head of division N 53051 managing director of division N 53064 called part of integration N 53071 address surfeit of reserves N 53086 following gains of % N 53088 continue strategy of combating N 53089 are party of devaluation N 53103 completed offering of shares N 53122 dump some of shares N 53124 risen average of % N 53125 have effect on environment V 53138 attracted investors of growing N 53154 showed signs of weakness N 53160 approved acquisition of stores N 53171 take lumps from prices V 53172 excluding gain from sale N 53173 report gains of % N 53174 extract themselves from war V 53174 steal share from each V 53176 become owners of businesses N 53179 given size of industry N 53180 predicting reaction to prices N 53181 misjudged resistance to prices N 53181 were % on average V 53182 Blaming prices in part V 53184 dropped plans for promotion N 53193 reflecting dilution for acquisitions N 53195 report earnings between cents N 53196 increase % to % N 53197 declines % to % N 53203 is hoard on view N 53204 offers glimpses of achievement N 53205 began career as dancer N 53205 began career during days V 53214 became curator of collection N 53220 include designs by the N 53221 shed light on role V 53222 extend knowledge of ambiance N 53225 dominated the through dancing V 53231 began career as revolutionary V 53234 has point beyond fact V 53236 's achievement for gallery N 53236 present kind of material N 53236 present kind in ways V 53239 document lot of material N 53241 's stopgap for endeavor N 53246 retain management of unit N 53246 selling computers as part V 53247 is part of plan N 53247 grow company into member V 53249 had loss of francs N 53250 posting profit for year V 53250 make it into black V 53253 posted profit in 1988 N 53261 are ingredients in plans N 53261 remains one of companies N 53262 planting itself in the V 53263 derive % of revenue N 53263 derive % from the V 53263 spends % of budget N 53263 spends % in the V 53273 is crusader for software N 53275 Counting sales of equipment N 53279 manage problem of service N 53281 be market in world N 53284 represents % of market N 53284 's % of world N 53289 leave problem in form V 53290 giving somebody for bill V 53292 increases number of shares N 53294 reflect number of shares N 53294 assuming changes at company N 53304 create demand for stock N 53306 has impact on price N 53307 done research on this N 53308 take advantage of them N 53315 mean expense for investors V 53318 trade shares of stock N 53319 trade shares of stock N 53324 closed yesterday on the V 53330 Underscoring feelings on subject N 53330 sent greeting to friend V 53331 like splits as tool V 53332 is exercise in cosmetics N 53333 improve marketability of stock N 53346 extinguish fire at sea V 53346 built the of steel N 53347 meet fate of the N 53353 mistake diary with scholarship V 53357 issue shares in placement V 53358 broaden research of products N 53359 handled closing of transactions N 53364 's one Of whims N 53371 receive 20.83 for share V 53372 using terms like syndrome N 53373 make additions to reserves N 53374 get news behind them V 53375 announcing addition to reserves N 53376 post loss for year N 53378 reported loss for quarter N 53378 following addition to reserves N 53380 use spate of reserve-building N 53380 use spate as opportunity V 53381 follow lead of Manufacturers N 53381 follow lead with boost V 53384 rise % from figure N 53386 is difference in rates N 53390 are some of concerns N 53392 finance purchase of unit N 53393 requires approval by both N 53393 receive nine-tenths of share N 53394 represents sweetening from share N 53396 makes products for skin N 53396 acquire unit for million V 53398 provide financing for purchase V 53403 overshadows sales of million N 53407 add devices to plants V 53409 contained level of fat N 53411 is line of Germans N 53419 describing the until years V 53427 run company outside industry N 53428 becomes officer of consultants N 53429 gave presidency of maker N 53429 gave presidency in 1988 V 53431 following completion of marriage N 53432 eliminate post as chairman N 53437 's part of shakeout N 53440 been member of company N 53441 integrating business with business V 53444 see resignation as indication V 53447 devise plans by end V 53450 been resignations among managers V 53453 selling both of businesses N 53454 increase value in light V 53456 been interest in company N 53460 explore sale of businesses N 53461 including spinoff of division N 53462 sold all of shares N 53465 held % of company N 53465 sold shares at premium V 53467 posted income of million N 53468 included gain of million N 53472 exceeded % to goal N 53475 showed increase of % N 53478 attributed results to times V 53481 rose % in quarter V 53483 increased % for months V 53484 be the in symphony N 53486 reported loss versus income N 53487 include gain from operations N 53490 take provisions for months V 53492 demonstrate improvement for quarter V 53495 chalked deficit to problems V 53495 manufacturing wings on plane N 53495 are candidates for write-downs N 53496 bring system into production V 53497 are changes along way V 53498 putting it on supplier V 53500 taken adjustments on programs V 53500 seen the of that N 53501 reflect problems on the N 53501 having troubles with jet V 53501 booking profit on contract V 53503 shows predictions for contractors V 53505 expect some of these N 53507 indicated lot of sympathy N 53509 keep executives in uproar V 53511 passed programs in 1988 V 53512 feel impact of contracts N 53512 feel impact for number V 53513 exploit advantage from situation V 53514 take hit against income N 53514 take hit in bit V 53515 delivered jets during period V 53516 anticipates line of 1.15 N 53516 expects dollar versus cents N 53518 show gain during walkout N 53521 told group of bankers N 53521 excluding gain from sale N 53523 offering rebates on vehicles V 53527 highlight vulnerability of maker N 53528 boost sales during quarter V 53529 cut production during quarter V 53530 pushed operations of each N 53530 pushed operations into red V 53531 offset losses in operations N 53535 have days of inventory N 53538 break news of disappointment N 53539 make statement like this N 53541 get clarification from officials V 53541 made announcement to traders V 53543 cut estimates for profit N 53544 earned billion in 1988 V 53546 had 4.35 for year V 53548 introduced bill in the V 53548 increasing amount of programming N 53549 offer choice of programming N 53550 provide incentives to networks V 53550 use material than quota N 53553 give preference to programming V 53555 pushing exports to the N 53558 seem a for market V 53559 has plans for translation N 53562 credit variety of translators N 53565 put it in the V 53566 selling chips to Soviets V 53569 put this in terms V 53574 cites translations as example V 53575 be violation of rights N 53576 takes us into world V 53582 eating sawdust without butter V 53583 eaten amount of sawdust N 53583 places law in contexts V 53584 determines failure of policies N 53584 determines failure through programs V 53585 perverted concept of rights N 53587 show injury to himself N 53588 assert views of rights N 53592 shifts segments of policy-making N 53595 ensure balance in schools N 53596 was step beyond ban N 53600 provides understanding of policies N 53603 seeking services for children V 53604 diverting all of efforts N 53604 diverting all from problem V 53606 assigns blame to culture V 53610 touching cornerstone of government N 53611 is scholar in studies N 53612 filed suit against group V 53613 sets clash between claims N 53614 telling public in series V 53615 sponsoring bashes over weekend V 53616 included entertainment by groups N 53616 raised money for the V 53617 drew criticism from groups V 53622 founded group in 1977 V 53626 denied request for order N 53626 saw sales as form V 53629 followed movement of Treasurys N 53630 fell point to % V 53631 charge each on loans V 53633 taking action because indications N 53634 's continuation of position N 53635 burned times in months V 53635 buy bonds on expectation V 53636 was indication from officials N 53639 turning ear to statements V 53645 was ado about nothing N 53646 make move toward ease N 53646 make move in view V 53651 is division of agency N 53654 took some of sentiment N 53655 put pressure on market V 53663 was % for yield N 53663 had rate of % N 53663 had rate for yield V 53671 tapped market with issue V 53672 price billion in securities N 53672 price billion next week V 53674 following accord with the N 53674 borrowing term from bank V 53677 gained 2 to point N 53677 gained 2 after trading V 53681 rose 9 to 97 V 53682 noted demand for securities N 53682 noted demand in sessions V 53683 yielding % to assumption V 53685 kept floor under municipals V 53687 had bid for issue N 53691 accepting orders from market V 53692 be sellers of tax-exempts N 53692 be sellers in near-term V 53704 fell point to 97.65 V 53706 rose 5 to 110 V 53706 fell 1 to 98 V 53711 refinance loan for buy-out N 53712 was one of victims N 53712 was one in wake V 53716 describing matter as dispute V 53718 were part of pattern N 53719 raising fund of million N 53723 totaling billion in value N 53724 paid price for companies V 53725 invested million for stake V 53725 lost part of investment N 53726 recover some of money N 53730 keeps % of profits N 53730 charges fee of % N 53732 assumes control of company N 53733 coordinate handling of emergencies N 53737 coordinate flow of information N 53738 had versions of information N 53738 had versions at points V 53743 represent move toward system N 53744 making decisions in gatherings V 53746 ensure backup under him V 53748 is deputy on staff N 53749 coordinate handling of emergencies N 53753 made decisions during crisis V 53755 turn strongman to the V 53760 make bet on contest N 53763 rekindling animosity between cities N 53767 called the of the N 53771 had problems from beginning V 53774 became sort of annex N 53775 became home of one N 53776 forced trustee on district V 53777 view place as zone V 53778 billing itself as metropolis V 53779 see themselves as crowd V 53787 is the in country N 53793 save room for development N 53795 belie the of myth N 53796 're terrors of the N 53798 burn souvenirs of opponents N 53798 burn souvenirs in stands V 53800 has standing in baseball V 53801 became head of security N 53803 keeps list of offenders N 53808 applaud plays by opposition N 53813 asked one of them N 53820 served time in jail V 53822 detailed differences between fans N 53826 blame rowdiness on weather V 53834 civilize fans with dogs V 53835 is section for fans V 53839 leave hearts without a V 53840 hit people over head V 53843 blame the for personality V 53844 searching shelves for goods V 53846 hate you for that V 53847 throwing politicians in jail V 53848 dispatched troops to shores V 53848 augmenting forces in place N 53850 give answer to problems N 53859 hastened decline of economy N 53860 Isolating forces from contacts V 53864 be result than democracy N 53872 do anything with troops V 53874 begin series of exercises N 53876 practiced operation from compound N 53877 seemed part of practice N 53883 relied year on bridge V 53885 stop reporters on street V 53886 criticized concept of intervention N 53887 allowed reporter into room V 53888 allowed pathway between seas N 53893 give it to cronies V 53911 nurture freedom around world V 53911 fight match against president V 53916 celebrate years of democracy N 53918 won a for plan V 53919 has parts from parties V 53919 funding association with ties N 53920 spent 434,000 on projects V 53920 sapped virility of nation N 53921 is candidate in election V 53922 was one for the V 53924 got wind of funding N 53926 encourage institutions around world V 53930 gives each of branches N 53931 establish relations with institutions V 53932 calls ham in sandwich N 53933 needs protection from nations N 53939 facilitate emergence of democracy N 53942 show ties between the N 53951 characterize them as aberration V 53954 makes transition to democracy N 53955 write this as part V 53956 found indications of damage N 53956 found indications among workers V 53956 control pests in industry V 53958 control weevils in elevators V 53961 be cancer of system N 53961 be cancer in industry V 53962 establish link between damage N 53965 applying fumigant in area V 53965 suffered damage than those N 53966 placing workers without respirators N 53966 placing workers at risk V 53968 linked use to hazards V 53974 fear pain of cuts N 53975 finished work on bills N 53975 cut deficit to billion V 53977 finishes work on budget N 53980 juggle books for two V 53987 leaves billion of cuts N 53995 know zip about sequestration V 53997 forced fees on loans N 53997 increase 1 by maximum V 54002 finishes work on bills N 54005 getting increases in neighborhood N 54007 prefer cuts to alternative V 54011 formed venture with the N 54014 boosted estimates of crops N 54016 raised estimate of crop N 54016 raised estimate of crop N 54016 raised estimate to bushels V 54017 be % above crop N 54019 increased estimate of crop N 54019 increased estimate to tons V 54019 citing yields in areas N 54020 reduced estimate of imports N 54020 reduced estimate to tons V 54023 exceeded average of estimates N 54023 exceeded average by bushels V 54024 exceeding figure by bushels V 54026 fell bushels from estimates V 54029 total boxes because frost V 54032 predicted increase in production N 54033 postponing vote on split N 54033 postponing vote until meeting V 54035 give reason for postponement N 54037 shift co-founder from responsibilities V 54038 lead buy-out of giant N 54039 join 1 as officer V 54045 approached brother on 24 V 54049 tell him about restructuring V 54050 remind you of conversation N 54059 brought series of outsiders N 54059 brought series to positions V 54059 was executive of business N 54060 have influence on strategy V 54061 lacked direction since 1986 V 54066 bought it for billion V 54071 have say than outsiders N 54073 become members of board N 54076 struck me as club V 54076 become part of club N 54080 repairing reputation among investors N 54080 tell them of change N 54081 prompt departure of executives N 54083 command % of business N 54087 declined 13.52 to 2759.84 V 54092 charge each for loans V 54098 was acknowledgment of possibility N 54100 drew support from rates V 54104 lost ground in volume V 54105 changed hands on the V 54105 outnumbered gainers by 907 V 54115 beat S&P-down from % V 54122 match performance of market N 54123 be news for segment V 54125 keep cash on hand V 54129 match stock before expenses V 54130 guarantee success for investors N 54132 loading portfolios with stocks V 54135 surpassed gain of 500 N 54135 surpassed gain over years V 54138 hold stocks of companies N 54140 underperformed ones in years V 54144 giving weight to funds V 54145 giving weight to funds V 54147 misrepresents return to investor N 54148 save magazine from folding V 54148 publishing magazine without advertising V 54149 fit tastes of advertisers N 54151 purchasing magazines with help V 54155 take control of magazine N 54162 make vehicle for advertisers N 54164 pay lot of money N 54164 pay lot for point V 54165 making magazine with point N 54165 putting celebrities on cover V 54166 build circulation by methods V 54167 boost circulation above level V 54169 pulled schedules after cover V 54170 carried headline in letters V 54172 is one of the N 54174 make statement to advertisers V 54187 handing million to account N 54193 hospitalized summer with ailment V 54193 been subject of speculation N 54200 reflects state of affairs N 54204 been suggestions of a N 54206 kept hammerlock on power N 54211 feeling pressure from allies N 54217 expect moves toward reform N 54218 developing proposals for congress V 54223 carrying inventories for time V 54224 making markets in stocks V 54224 keep shares of stocks N 54224 keep shares on hand V 54225 are buyers of stock N 54229 climbed 1 to 20 V 54231 reiterated recommendations on stock N 54232 rose 1 to 12 V 54233 exchanged million at 12 V 54234 was issue with volume V 54235 terminated pact with suitor N 54236 be partner in buy-out N 54236 lure MGM to table V 54238 is 43%-owned by firm N 54238 jumped 1 to 5 V 54239 is party to agreement N 54240 added 3 to 10 V 54241 gained 5 to 45 V 54243 priced 3,450,000 of shares N 54243 priced 3,450,000 for sale V 54244 fell 1 to 15 V 54246 added 1 to 43 V 54248 reduce likelihood of upgrade N 54250 revised offer for shares N 54250 revised offer to 125 V 54251 pay 110 for % V 54252 gained 1 to 31 V 54252 lost 1 to 20 V 54252 rose 1 to 33 V 54253 received bid from group V 54254 owns % of shares N 54263 is one of producers N 54265 had sales of billion N 54266 pending news of bid N 54270 reject offer as being V 54272 is growth in capacity N 54277 be house above clay V 54281 hitches leg in way V 54289 save boy with abscess N 54291 are kind of things N 54296 makes report to the N 54297 has money for region V 54297 rival those of countries N 54301 had years of poverty N 54305 epitomizes extremes of poverty N 54311 building fence around school V 54317 is paychecks from poverty N 54319 land town on Minutes V 54322 get lady for 5 V 54323 sold herself for cents V 54329 got dose than either N 54338 exceeded 25 per 1,000 N 54338 exceeded 25 per 1,000 N 54347 been one of the N 54349 determine boundaries of world N 54354 prowled fields like beasts V 54355 uprooted tens of thousands N 54355 propelled them into cities V 54357 tethered sharecropper with lines V 54358 has jobs of kind N 54362 made creation of commission N 54366 create window in time N 54375 is piece of pie N 54379 operating plants at levels V 54380 boosted shipments by % V 54381 permit shipments into half V 54382 report profit because disruptions V 54383 earned million in quarter V 54383 including gain of million N 54386 depressed profit in period V 54388 complete reorganization by mid-1989 V 54389 require training at plants N 54393 reducing costs in parts V 54398 reported loss of million N 54399 had loss from operations V 54400 covering sale of million N 54401 report profit for period V 54402 is period for industry V 54403 take time during summer V 54404 were a than quarter N 54404 be quarter of year N 54405 earned 208,992 on revenue V 54410 estimates net at cents V 54411 experienced orders during quarters V 54416 postponed number of programs N 54416 whacked totals in months V 54417 lose share to plants V 54419 have appetite for offerings N 54422 have lives of years N 54424 prompted flurry of lawsuits N 54424 caused difficulties at two V 54425 are vehicle at moment V 54426 been news on partnerships N 54427 is resurgence of placements N 54429 getting couple on placements V 54431 is return of capital N 54435 buy them in quarter V 54438 following completion of merger N 54439 become officer in years V 54440 have shot at spot N 54443 struck me as guy V 54444 named officer in 1988 V 54453 had one in mind V 54454 runs side of business N 54456 were 26 after merger N 54456 had plans at present V 54459 was element in machinery N 54462 altering genetics of plants N 54463 has rights to patents N 54464 formed venture with company V 54466 excite atoms of hydrogen N 54466 excite atoms to levels V 54467 ticks time with accuracy V 54471 dictates production by cell N 54474 get message to reaches V 54475 carries message to factories V 54476 bring materials for protein N 54478 interrupted words by stretches V 54480 carried reactions in matter N 54484 form sentence for making N 54494 citing profit in all N 54494 rose % on increase V 54497 was billion at end V 54498 were billion at end V 54503 develop version of missile N 54503 be contractor on version N 54505 had sales of refrigerators N 54506 disclose details of performance N 54509 pack bulk to retailers V 54510 siphoned billions of dollars N 54510 siphoned billions from industry V 54511 continue thanks to belt N 54511 continue thanks amid stretch V 54515 earned million on million V 54517 offset sales at unit N 54517 taken beating from games V 54521 reported profit of million N 54523 report improvements in earnings N 54524 thrust company into black V 54525 report earnings of cents N 54526 had income of million N 54528 report gains in sales N 54530 puts sales at million V 54533 report profit for quarter N 54534 post earnings of 1 N 54536 shipped million of games N 54540 suffered drain at facilities V 54541 change identities with addition V 54543 had income of million N 54547 offer week of 23 N 54547 pending approval by the N 54548 buy basket of stocks N 54548 buy basket as unit V 54549 use it as way V 54550 meet competition from the N 54550 launch version of product N 54550 launch version in future V 54551 is one of number N 54552 awarded contract by the V 54557 is study in politics N 54558 becomes engine in drive N 54564 's issue with public V 54566 made portion of proposal N 54571 imposes rules on states N 54577 raised issues in way V 54581 lost votes in row N 54582 won debate about policy N 54585 contains seeds of expansion N 54586 shrink supply of providers N 54588 subsidizes class of provider N 54589 become constituency for subsidy N 54590 accomplishes goal of lobby N 54592 earning income of 32,000 N 54594 be subsidy in code N 54595 eliminated subsidy for couples V 54595 wants something for readers N 54596 do sort of thing N 54596 called welfare for the N 54599 retain it as part V 54608 were revelation of troubles N 54608 use techniques in heart V 54614 triples bonuses for attendance V 54614 limiting number of absences N 54615 receive pay for absences V 54616 receive pay for absences V 54617 were negotiators in talks N 54620 developed relationship with people V 54622 win benefits for workers V 54623 take posture toward makers N 54625 handle bulk of responsibilities N 54627 averages % to % N 54627 averages % to % N 54633 was manager of operations N 54636 be one of casinos N 54643 been friends since boyhood V 54651 Heading delegation to the N 54652 received license in weeks V 54653 designated leader of operations N 54655 needs someone with style N 54656 had love for gesture N 54656 drew thousands to the V 54661 named president of unit N 54664 becomes chairman of the N 54665 devote time to publishing V 54666 establish exchange as power V 54671 do trading within hour N 54672 surpassed the in year V 54672 surpassed shares to billion N 54676 measures performance of stocks N 54679 run operations as president V 54679 's overlap between skills V 54681 including stint as chairman N 54682 take office as chairman V 54684 was future for the V 54686 neglects importance as exchange N 54687 visited traders on floor N 54687 visited traders after conference V 54689 is head of operations N 54691 had companies in 1976 V 54693 traded average of shares N 54693 traded average in year V 54694 see average of million N 54700 paying lot of attention N 54700 paying lot to markets V 54704 meaning years in lifetime N 54705 use stock of capital N 54706 helping the toward independence V 54712 transform population into minority V 54716 teaches economics at the V 54719 provide support for pound V 54720 are answers to problems N 54721 avoided mention of timing N 54721 take pound into mechanism V 54723 outline moves in speech V 54727 had experience in areas V 54729 lose hundreds of thousands N 54740 overcome obstacles in society N 54742 leading charge for passage N 54743 is one of pieces N 54744 's model of vagueness N 54746 limits one of activities N 54749 make modifications in procedures N 54751 puts burden of proof N 54751 puts burden on you V 54752 constitutes discrimination under bill V 54756 makes it past screens V 54763 creating incentives for litigation N 54764 limit suits for damages N 54765 permits suits for pay V 54767 enforce them in courts V 54768 turning society to governance V 54770 shift jurisdiction over decree N 54770 shift jurisdiction from court V 54771 enter businesses as pages N 54774 lift restrictions on businesses N 54777 build support for effort N 54780 complete proposal by end V 54782 eliminating restrictions on publishing N 54784 considered forum for Bells N 54786 adds weight to arguments V 54786 hobbles them in race V 54787 free Bells from jurisdiction V 54791 have support in the N 54792 taking lead on push N 54793 ordered review of issues N 54796 debating bill for 1990 N 54796 debating bill with asserting V 54798 send it to conference V 54799 complete work on bill N 54799 complete work in time V 54801 Keeping reduction off bill V 54801 be victory for leaders N 54802 represent setback for Republicans V 54805 be boon to the V 54809 is part of bill N 54810 approved week by the V 54811 is expansion of deduction N 54812 has chance of enactment N 54812 given endorsement of concept N 54815 including repeal of law N 54815 provide benefits to both V 54817 provide deduction for contributions V 54817 permit withdrawals for purchases N 54819 reduce spending in 1990 V 54819 curbing reimbursements to physicians N 54820 impose limit on payments N 54820 impose limit in way V 54821 take the out the V 54822 recommend veto of bill N 54823 raise spending in areas V 54827 impose tax on chemicals N 54830 encourage projects by businesses N 54831 assist construction of housing N 54831 provide incentives for spending V 54837 raising million in 1990 V 54839 raise million in 1990 V 54842 granted interviews for month V 54844 seen event of magnitude N 54844 seen event in lifetime V 54853 stirring controversy within industry V 54855 sold copies of software N 54856 pitch products to users V 54857 Following publicity about the N 54858 employing practices unlike salesman V 54860 certify skills of professionals N 54862 's lot of profiteering N 54863 solve questions about integrity N 54866 entered field as sideline V 54868 sold copies of software N 54868 sold copies during 1988 V 54870 introduced software in 1985 V 54870 shipped copies at 35 V 54870 presented virus to community V 54871 adding program to line V 54872 was success within week V 54873 pay dollars per computer N 54873 use software at sites V 54874 spent penny on advertising V 54881 making it without doubt V 54883 connects pursuit of self-interest N 54883 connects pursuit to interest V 54884 seeking power through regulation V 54885 entertain departures from marketplace N 54887 convert inconveniences of shortage N 54887 convert inconveniences into miseries V 54890 liberate something from dungeons V 54891 producing cut in rate N 54892 stood step from melee V 54893 firing veto at package V 54894 exercising authority over proposal V 54895 kill item in bill N 54896 counter arsenal of vetoes N 54902 vetoes possibility of vote N 54902 take credit for cut N 54906 was hostage to deficit N 54908 considering proposal under discussion N 54909 be schedules for assets N 54910 establish rate of % N 54910 establish rate with descending V 54910 reaches rate of % N 54912 sanctify kind over another V 54913 reintroduces notions of progressivity N 54915 reinvest them in venture V 54916 recognize arguments in favor N 54921 running cut up flagpole V 54924 represents value of options N 54926 won options for planes N 54926 won options in part V 54928 take stake in subsidiary N 54932 take management of million N 54933 is tops among funds V 54934 approve transfer of assets N 54937 is something of lack N 54942 lay reputation on line V 54944 poses test for the N 54946 advise the of dangers V 54954 ease rates in response V 54956 puts pressure on them V 54960 grows impatient with efforts N 54960 develop attack on deficit N 54962 protecting officials against accusations V 54962 violated ban on assassinations N 54965 pressed producers of movie N 54968 provides opening for groups N 54970 held dinner in hotel V 54971 spurring moves for regulation N 54974 passed drugs as version V 54976 remove drugs from market V 54978 considers rewrite of 1938 N 54981 leaves seat at hearing V 54982 get copies of the N 54983 assails buy-outs of airlines N 54983 assails buy-outs as vampirism V 54987 overseeing mergers of thrifts N 54987 filed suit against family V 54988 filed suit against regulators V 54988 alleging seizure of property N 54993 issue subpoenas to chairman V 54996 makes decision about appearance N 54999 name chairman of committee N 55002 have responsibility for studio N 55006 purchased it for billion V 55008 have members from company N 55011 continuing negotiations in attempt V 55011 extricate producers from contract V 55015 taking stance on contract N 55015 file suit against both V 55018 devour computer near you N 55021 been sightings of virus N 55025 treat them like threats V 55027 wipe data on disk N 55030 adds 1,168 to file V 55032 check size of files N 55032 check size against size V 55033 is one of numbers N 55042 lends itself to metaphor V 55043 be scares around date V 55044 is thing as virus N 55048 advanced date on computer V 55048 advanced day at time N 55049 receive data from any V 55051 penetrated dozen of computers N 55052 heightened awareness of problem N 55054 making copies of disks N 55054 setting clocks to 15 V 55055 containing files of origin N 55056 run clocks on computers V 55059 acquire position in bid V 55060 acquire % from partners V 55060 bringing stake in company N 55060 bringing stake to % V 55063 is presence in industry N 55063 put supply from variety V 55063 meet demand for gas N 55064 reduce size of project N 55064 cutting capacity to feet V 55065 faces pressure from leadership N 55065 relax opposition to legislation N 55065 renewing support for abortions N 55065 are victims of incest N 55070 permits support in cases V 55074 is plea to president N 55075 be part of effort N 55079 deny right to choice N 55081 represents heart of commitment N 55083 win support on grounds N 55085 changed year beyond expectations V 55088 held possibility of amendment N 55091 taken line in letters V 55092 opposes funding for abortions N 55092 backed aid for women N 55092 are victims of crimes N 55093 win backing for nomination V 55094 upholding restrictions on abortion N 55095 supported exemption for incest N 55097 adopted position on abortion N 55099 named director of company N 55099 expanding board to 13 V 55106 float points above the N 55133 buy shares at premium V 55135 Fixing coupon at par V 55139 rejected challenge by attorneys N 55141 made showing in letter V 55141 are subject of indictment N 55143 alleging fraud in connection N 55144 fight case in court V 55146 meet deadline for indictment N 55149 pay 500,000 to state V 55151 create crisis in insurance N 55153 leaves companies as defendants V 55157 been attorney for the N 55159 been partner at firm N 55163 negotiate agreements with head V 55165 began career in 1976 V 55166 join firm as partner V 55170 join office as partner V 55171 joining investigation of scandal N 55171 joining investigation in 1987 V 55171 served years as attorney V 55175 spent 800 in days V 55185 concerning feelings about shopping N 55188 are any than people N 55193 's substitute for love N 55195 dropped 1,500 on hat V 55199 is man in life V 55200 get high from shopping V 55204 draw distinction between shoppers N 55205 see shopping as symptom V 55207 gives sense of security N 55211 have sense of egos N 55212 reflects sense of identity N 55213 Knowing place in world N 55214 has one of egos N 55217 is exploration of position N 55221 'm one of the N 55228 been part of culture N 55236 paid 250 for pair V 55240 Spending dollars on a V 55241 purchased perfume on way V 55247 paid 650 for outfits V 55257 learned art of shopping N 55257 learned art from mothers V 55261 reported results for quarter N 55264 attributed performance to rates V 55265 bucked trend in the N 55269 Following lead of banks N 55269 boosted reserves for losses N 55269 boosted reserves by million V 55270 increase coverage for loans N 55270 increase coverage to billion V 55271 been % of exposure N 55272 reflects pressures on market N 55276 raise million through issue V 55280 brings coverage for loans N 55280 brings coverage to million V 55281 added million to reserves V 55289 experiencing pressure on margins N 55292 were problem for banks N 55294 cited addition to provisions N 55296 buck trend of margins N 55296 buck trend with improvement V 55299 dropped cents to 37.125 V 55301 showed growth on basis V 55301 fell points from quarter V 55303 mirroring drop in the N 55304 pay rates for funds N 55304 pay rates in quarter V 55305 rose points from quarter V 55307 fell cents to 44 V 55313 fell cents to 33.75 V 55318 reflecting sale of assets N 55324 take dispute to mediation V 55325 represents employees of company N 55325 seeking agreement on party N 55328 shift costs to employees V 55335 increase reserves by % V 55338 has interests in mining V 55338 transfer million of related N 55339 apply pools against income V 55339 reflects value of pools N 55342 have access to details N 55343 had problem with concept V 55347 have impact on flow N 55352 increased % to billion V 55352 rose % to billion V 55354 rose % to billion V 55354 rose % to billion V 55359 kept growth of imports N 55359 kept growth at level V 55363 dropped % in terms V 55363 rose % in volume V 55364 rose % in value V 55364 jumped % in volume V 55370 fell % to billion V 55370 fell % to billion V 55373 breaching duties as employees N 55382 executed series of loans N 55385 sell interest in business N 55387 post gain on transaction N 55389 shift focus of relations N 55393 give message to public V 55396 be position of the N 55396 be position as leader V 55397 see changes in nations V 55398 bear expense of presence N 55406 remove headquarters of the N 55406 remove headquarters from downtown V 55409 opening market to services V 55412 takes anger at surplus N 55412 takes anger on nations V 55414 had surplus for years V 55416 discussing allegations by organizations N 55416 arresting dissidents for beliefs V 55417 made progress toward elections N 55417 made progress for example V 55419 indicted leader for infraction V 55431 fell 1.60 to 355.39 V 55431 dropped 0.83 to 196.98 V 55433 await release of report N 55433 await release before opening V 55435 bring increase in the N 55438 are expectations for disappointment N 55439 took comfort in indications V 55443 dropped 5 to 24 V 55445 report profit of cents N 55445 cited overspending on programs N 55445 cited overspending as factor V 55448 fell 2 to 36 V 55449 captured spots on list N 55449 fell 1 to 40 V 55451 fell 3 to 66 V 55451 dropped 1 to 49 V 55451 lost 1 to 45 V 55453 has billion in debt N 55453 issue billion in notes N 55453 issue billion within weeks V 55454 added 5 to 98 V 55456 rose 3 to 20 V 55457 become partner in takeover N 55458 rose 3 to 24 V 55460 added 7 to 61 V 55462 fell 1 to 55 V 55462 provide engines for planes V 55463 reported loss of cents N 55464 anticipated loss for period V 55465 fell 1 to 19 V 55466 posted loss from operations N 55468 rose 1 to 10 V 55470 fell 0.67 to 395.01 V 55472 lost 3 to 17 V 55473 conducting investigation of company N 55474 been target of probe N 55475 added 3 to 5 V 55477 buy units for 4.50 V 55483 inspired battle between brewers N 55485 tear some of signs N 55485 dominated landscape in years V 55488 's product in country N 55489 pump hundreds of millions N 55489 pump hundreds into expansion V 55493 expect number of manufacturers N 55495 pump pesos into facilities V 55496 report kinds of projects N 55505 jumped year after shortage V 55506 imposed tax on commodity N 55508 presents target for criticism N 55510 reinforce belief among Filipinos N 55514 was one of countries N 55518 followed assassination in 1983 N 55520 took advantage of upturn N 55527 survey household in the N 55529 introduce errors into findings V 55530 reported gains for quarter N 55531 cited prices for gains V 55532 blamed demand for products N 55532 blamed demand for decrease V 55533 fell % in quarter V 55537 posted drop in income N 55541 was rate of months N 55542 reported income of million N 55544 reported income of million N 55546 risen % in half V 55551 fell cents to 42.875 V 55554 retain seat on board N 55557 buy shares in steelmaker N 55567 owns shares to million N 55574 made improvements over three V 55577 closed lot of capacity N 55578 done things with vengeance V 55584 taken profits in stock N 55584 taken profits at prices V 55585 earn 7 to 8 N 55585 earn 7 in year V 55592 has billion in benefits N 55597 makes 3 next year N 55609 put investor in control V 55615 has worth of million N 55622 swapping bonds for notes V 55632 sending messages by code V 55632 sending voice over wire V 55632 replace telegraph for communication V 55633 sold rights to company V 55634 become corporation in world N 55634 become corporation before break-up V 55635 sending messages by wire V 55641 be competitor in business N 55642 have access to funds N 55644 had chairmen in months V 55647 forcing company into proceedings V 55656 buy business for million V 55659 put amount for stake V 55659 gives rights to shares N 55660 granted options on million N 55660 granted group for cents V 55661 paid million in expenses N 55663 put him on board V 55664 get % of bondholders N 55664 pay sweetener of million N 55665 sweetened pot for constituencies V 55668 sell bonds to clients V 55668 be reset by bankers N 55669 collected million in commissions N 55670 gain cooperation of officers N 55670 totaling 850,000 in salaries N 55672 is dean of school N 55679 fell % from 1987 V 55680 write million in will N 55685 replacing % of management N 55685 cutting million in costs N 55686 omitted payments on securities V 55687 caused interest on bonds N 55687 increasing payments by million V 55688 give value of % N 55692 repurchasing bonds in chunks V 55700 end year with million V 55700 exceed flow by million V 55701 expects decline in revenue N 55701 expects decline with hitting V 55701 hitting bottom in quarter V 55703 moves billion through network V 55704 entrust company with cash V 55705 collects bills for utilities V 55713 block cut in tax N 55713 's break for the N 55718 writing bills for people V 55725 surpass million in 1994 V 55726 reduce revenue from tax N 55732 expressed concerns about effect N 55733 is tax on grandchildren N 55736 calling break for the N 55746 were part of estate N 55756 is area of concern N 55760 called amendment after family V 55762 leaves estate to grandchildren V 55765 are country of nobility N 55765 built fortune in business V 55768 Offer Option For Plans N 55774 's part of idea N 55778 were catalyst to action N 55781 cause damage to lines N 55782 provides benefits to company V 55787 report results with tests N 55787 determine effectiveness of drugs N 55790 rule use of drugs N 55791 save thousands of dollars N 55791 avoid effects for patients V 55796 be way of life N 55796 be way in years V 55800 cover patients with disease N 55807 Put Computers in Wards V 55809 extended systems into wards V 55813 reflecting growth in number N 55817 cited gains in systems N 55830 signed memorandum of understanding N 55830 signed memorandum with group V 55832 made announcement at stage V 55833 ended months of speculation N 55833 been cornerstone of complex N 55834 total million for years V 55835 began operations in 1923 V 55836 turned profit for time V 55837 sell unit to entity V 55841 represents workers at plant N 55842 selling facility to firm V 55846 do it in way V 55851 purchase tons of steel N 55851 purchase tons from entity V 55853 cut production in future V 55856 remain consultant to company N 55857 totaled dollars in year V 55865 governed country in coalition V 55865 sell dollars of assets N 55866 equal rate of % N 55868 call election in half V 55869 attract number of votes N 55870 made millions of dollars N 55871 reinvested some of returns N 55873 was supplier of steroids N 55877 demanding increase in wage N 55880 mention concern about case N 55882 make one of nations N 55884 involves aid to industry N 55886 clearing way for settlement V 55887 open negotiations on grievances N 55889 limit exports to the N 55889 limit exports for years V 55890 include agreement by the N 55892 is pretext for protectionism N 55892 posting profits in market V 55893 extend quotas after 1992 V 55894 owed it at end V 55897 has interest in proposal N 55902 flies planes to cities V 55903 operates planes to cities V 55903 posted income of 372,949 N 55903 posted income for months V 55904 disclose terms of merger N 55905 make offer for rest V 55906 consider offer for stock N 55907 pay 900,000 to government V 55909 submitted data to negotiators V 55910 concealed existence of document N 55912 represented doubling of damages N 55913 implement procedures at facility V 55914 climbed % to francs V 55916 recorded items in half V 55917 posted gain for period V 55918 had profit of francs N 55918 had profit on revenue V 55919 reached settlement in suits V 55919 enhances whiteness of balls N 55920 follows ruling by judge N 55920 adds distance to shots V 55923 become leader in business N 55923 become leader with help V 55929 increase earnings by cents V 55930 reduce estimate on company N 55931 injected capital into unit V 55932 misstated capitalization in edition V 55935 cited investments in maintenance N 55937 has case for increase N 55940 repurchase shares of stock N 55943 signed letter of intent N 55947 pay million plus expenses N 55954 sold % of subsidiaries N 55954 sold % to company V 55954 pulling cash from sale V 55968 predict growth on bills V 55968 foresee growth on bills N 55969 offering owners of imported N 55969 offering owners of imported N 55972 choose rates of rebate V 55974 had supply of cars N 55974 had supply at end V 55976 formed venture with firm V 55979 allow expansion into market N 55981 develops systems for customers V 55982 named president of finance N 55983 has interests in broadcasting N 55984 assume responsibility for all N 55986 been manager of finance N apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/NOTICE0100664 0001750 0001750 00000000423 14135770370 026451 0ustar00jeffjeff0000000 0000000 This folder contains Prepositional Phrase Attachment Dataset from Ratnaparkhi, Reynar, & Roukos, "A Maximum Entropy Model for Prepositional Phrase Attachment". ARPA HLT 1994. The data is licensed under the AL 2.0. Please cite the above paper when the data is redistributed.apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/training0100664 0001750 0001750 00002460622 14135770370 027320 0ustar00jeffjeff0000000 0000000 0 join board as director V 1 is chairman of N.V. N 2 named director of conglomerate N 3 caused percentage of deaths N 5 using crocidolite in filters V 6 bring attention to problem V 9 is asbestos in products N 12 led team of researchers N 13 making paper for filters N 16 including three with cancer N 18 is finding among those N 22 is one of nations N 22 have standard of regulation N 24 imposed ban on uses N 26 made paper for filters N 28 dumped sacks of material N 28 dumped sacks into bin V 28 mixed fibers in process V 32 has bearing on force N 33 expect declines in rates N 34 eased fraction of point N 37 retain rates for period V 38 considered sign of rising N 42 pour cash into funds V 46 had yield during week N 50 holds interest in company N 52 holds three of seats N 53 approved acquisition by Ltd. N 55 completed sale of Operations N 56 is company with interests N 58 has revenue of million N 59 suspended sales of bonds N 59 lifted ceiling on debt N 60 issue obligations of kind N 63 raise ceiling to trillion V 67 was manager of division N 68 been executive with Chrysler N 68 been executive for years V 82 registered deficit of million N 82 registered deficit in October V 83 casting cloud on economy V 87 recorded surplus of million N 90 keep pace with magazine N 90 announced rates for 1990 N 90 introduce plan for advertisers N 92 give discounts for maintaining N 92 become fixtures at weeklies N 92 underscore competition between Newsweek N 95 lowered base for 1990 N 95 be % per subscriber N 97 awards credits to advertisers V 99 shore decline in pages N 101 gaining circulation in years V 103 had circulation of 4,393,237 N 107 leaves Co. as bidders V 107 proposed plan in proceedings N 108 acquire PS of Hampshire N 109 values plan at billion V 114 owns PS of Hampshire N 116 was one of factors N 118 proposed - against boosts N 120 seeking approval of purchase N 121 complete purchase by summer V 123 elected directors of chain N 124 succeed Rexinger on board V 125 refund million to ratepayers V 127 make refunds of 45 N 127 make refunds to customers V 127 received service since 1986 V 128 block order by Edison V 129 held hostage through round V 132 slash earnings by 1.55 V 133 reported earnings of million N 137 raise rates by million V 138 upheld challenge by groups N 142 added million to calculations V 143 set rate on refund N 143 set rate at % V 144 faces refund on collections N 145 set precedent for case N 146 seeking million in increases N 148 refund million for performance V 150 followed increases of % N 155 opened plant in Korea V 156 meet demand for products N 162 been orders for Cray-3 N 163 announced spinoff in May V 165 is designer of Cray-3 N 167 needing million in financing N 170 link note to presence V 170 complicate valuation of company N 175 describe chips as being V 177 face competition from Research N 177 has % of market N 177 roll machine in 1991 V 180 receive share for they N 184 calculate value at 4.75 V 185 been drain on earnings N 187 report profit of million N 187 report profit for half V 190 paid 600,000 at Research V 194 expects force of 450 N 194 expects force by end V 197 was president of company N 198 named president of company N 199 was president of unit N 200 succeed Hatch as president V 201 was president of Edison N 202 named president of Utilities N 204 claiming success in diplomacy N 204 removed Korea from list V 206 improve protection of property N 207 made progress on issue V 208 is realization around world V 212 improved standing with U.S. N 212 protect producers from showings V 213 compel number of parlors N 217 pose problems for owners N 220 be one of countries N 223 issue review of performance N 223 issue review by 30 V 224 merit investigation under provision N 228 reach reduction of % N 234 CHANGED face of computing N 237 use sets as screens V 237 stored data on audiocassettes V 238 was advance from I N 240 triggered development in models N 242 store pages of data N 242 store pages in memories V 245 developed system for PCs N 245 adapted one of versions N 246 developed drives for PCs N 247 were co-developers of modems N 247 share data via telephone V 250 acquired Inc. for million V 251 sells products under label V 252 owns % of stock N 253 increase interest to % V 258 has reserves of barrels N 261 make barrels from fields N 261 make barrels from fields N 262 completed sale of subsidiary N 263 Following acquisition of Scherer N 264 is part of program N 265 approved treatment for imports N 268 requested treatment for types V 269 grant status for categories V 269 turned treatment for types V 270 is seller of watches N 271 be beneficiaries of action N 276 left Magna with capacity V 277 reported declines in profit N 278 cut dividend in half V 280 seek seat in Parliament N 282 cut costs throughout organization V 285 pursue career with Magna N 286 named director of company N 288 show interest of investors N 295 eliminate risk of prepayment N 295 redeploy money at rates V 296 channel payments into payments V 296 reducing burden on investors N 298 boosted investment in securities N 299 become purchasers of debt N 299 buying billion in bonds N 300 named director of concern N 300 expanding board to members V 302 giving protection from lawsuits N 303 began offer for shares N 305 owns % of shares N 309 reflects intensity of intervention N 310 follows decline in reserves N 315 kicked issue at Board V 317 mirrors mania of 1920s N 320 brings number of funds N 326 hold smattering of securities N 328 get taste of stocks N 337 paying premium for funds V 342 reflect marketing of funds N 346 buy receipts on stocks N 346 buy receipts in funds V 350 holding talks about repayment N 356 extend credit to countries V 356 are members of Fund N 358 settled debts with countries V 359 stressed debts as key V 360 settle hundreds of millions N 366 booked billion in orders N 370 remove effects of patterns N 379 cite lack of imbalances N 379 provide signals of downturn N 382 had news on front N 389 fell % to billion V 391 rose % in September V 394 boost spending on homes N 396 rose % to billion V 398 ran % above level N 400 reported increase in contracts N 404 considered forecast of recession N 415 gauges difference between number N 415 reporting improvement in area N 416 polled members on imports V 421 reported shortage of milk N 424 are figures for spending N 426 have lot in common V 432 is society of lore N 433 perpetuate notion of Japanese N 434 carries message for relations N 438 mark her as anything V 442 is one of writers N 443 carry dashes of Americana N 444 give way to baseball V 445 is mirror of virtues N 446 is Japanese for spirit N 446 have miles of it N 448 named star as symbol V 449 return balls to ushers V 449 sidestep shame of defeat N 453 's complaint of American N 454 invades aspects of lives N 458 took lesson from books V 465 bans smoking in restaurants V 466 launched Week at Institute V 469 opened market to cigarettes V 469 restricts advertising to places V 470 are the in markets N 474 build center for meeting N 475 draw 20,000 to Bangkok V 478 renewed application in August V 479 win membership in Organization N 480 get AIDS through sex V 484 including relations with men N 485 increased charges by % V 486 bring charges into line V 487 establishing ties with Poland N 487 announced million in loans N 490 modify agreement with Czechoslovakia N 492 seek billion from Hungary V 498 issue dollars of debentures N 499 buy amount of debentures N 499 buy amount at par V 503 complete issue by end V 504 is inheritor of spirit N 505 laid claim to that N 508 revived Artist in movie V 512 playing bass in ensembles V 517 selling copies of Cosmopolitan N 521 including skirmishes with artist N 523 returning waif to mother V 525 gives sense of purpose N 525 alerts him to inadequacy V 526 tuck girl into one V 528 had presence in front N 530 makes it with deal V 532 managed kind of achievement N 540 brought lover into home V 541 called Latour in film V 545 has Peck in portrayal V 546 take look at Lights N 547 discussing plans with three V 547 build version of twin-jet N 549 build sections of 767 N 551 hit market in mid-1990s V 553 getting boost in campaign V 554 leading contests of 1989 N 554 reached levels of hostility N 556 became form in 1988 V 560 Take look at commercials V 560 set tone for elections V 563 file taxes for years V 565 hid links to company N 565 paid kidnapper through organization V 567 prosecute case of corruption N 569 shows photos of politicians N 570 Compare candidates for mayor N 572 opposed ban on bullets N 578 's situation of ads N 580 made secret of it N 581 pay 95,142 in funds N 582 blamed problems on errors V 587 had reservations about language N 589 opened battle with Coleman N 589 opened battle with commercial V 591 give it to politicians V 592 take right of abortion N 593 launch series of advertisements N 593 shake support among women N 594 featured close-up of woman N 600 propelling region toward integration V 602 sparking fears of domination N 604 tripled commitments in Asia N 604 tripled commitments to billion V 605 approved million of investment N 605 approved million in 1988 V 605 approved million of investment N 606 includes increases in trade N 607 pumping capital into region V 608 seek sites for production V 612 share burdens in region V 615 is part of evolution N 617 turn themselves into multinationals V 620 turn Asia into region V 622 spur integration of sectors N 623 make tubes in Japan V 623 assemble sets in Malaysia V 623 export them to Indonesia V 625 consider framework for ties N 628 offered plan for cooperation N 628 offered plan in speech V 629 playing role in region V 631 play role in designing V 633 outstrips U.S. in flows V 633 outranks it in trade V 633 remains partner for all V 634 pumping assistance into region V 635 voice optimism about role V 635 convey undertone of caution N 636 's understanding on part N 636 expand functions in Asia V 637 approach it with attitude V 637 be gain for everyone V 640 regard presence as counterweight V 642 step investments in decade V 645 giving Test of Skills N 645 giving Test to graders V 647 is example of profession N 650 matched answers on section V 651 had answers to all V 652 surrendered notes without protest V 653 use notes on test V 654 be one of the N 655 given questions to classes V 656 display questions on projector V 659 was days in jail V 660 is one of downfall N 662 became something of martyr N 663 casts light on side V 664 enforce provisions of laws N 665 win bonus under 1984 V 667 is pressure on teachers N 673 suspects responsibility for erasures N 673 changed answers to ones V 680 force districts into interventions V 683 posts score of the N 683 use SAT as examination V 684 paying price by stressing V 685 rates one of states N 686 is way for administrators N 686 take it at all V 688 keeping track of booklets N 693 was enrollment in honors N 694 becoming principal in years V 698 clean deadwood in faculty N 699 ushered spirit for betterment N 706 taught students in program N 706 consider teaching as career V 707 won money for school V 708 had Yeargin in year V 709 gave ambitions in architecture N 713 polish furniture in classroom N 715 correcting homework in stands V 717 defended her to colleagues V 721 earn points in program V 722 was improvement on tests N 724 Winning bonus for year V 728 attending seminar in Washington V 729 copied questions in the V 729 gave answers to students V 731 help kids in situation V 734 lift scores near bottom N 742 is president of School N 745 have sympathy for her V 749 taking law into hands V 753 said something like want N 755 turned knife in me V 758 decried testing on show V 759 give particulars of offense N 763 recommend Yeargin for offenders V 763 expunged charges from record V 764 cranked investigation of case N 768 carried logo on front V 771 did lot of harm N 772 cast aspersions on all V 773 casts doubt on wisdom V 773 evaluating schools by using V 774 opened can of worms N 780 find answer in worksheets V 780 give them in weeks V 784 is difference between test V 789 took booklets into classroom V 791 give questions to students V 804 rate closeness of preparatives N 812 was publication of House N 814 represented form of CAT N 817 completed acquisition of Sacramento N 817 completed acquisition for million V 818 has offices in California V 818 had assets of billion N 818 had assets at end V 821 extend moratorium on funding N 827 oppose funding for abortion V 828 implant tissue into brain V 829 placed moratorium on research V 829 pending review of issues N 831 fill posts at helm V 832 withdrawn names from consideration V 832 asked them for views V 834 is director of Institute N 835 imposing tests for posts V 838 be role for make V 838 make judgments about applications V 840 is one of institutions N 840 conducting research on transplants V 842 provide incentive for one N 845 spends million on research V 847 added 1.01 to 456.64 V 848 was beginning for November N 851 gained 1.39 to 446.62 V 852 gaining 1.28 to 449.04 V 853 jumped 3.23 to 436.01 V 854 permit banks from regions N 858 bid shares of banks N 858 bid shares on news V 860 surged 3 to 69 V 865 rose 7 to 18 V 867 rise 3 to 18 V 868 added 5 to 8 V 871 gained 1 to 4 V 871 reporting loss of million N 874 assuming fluctuation in rates N 874 achieve earnings in 1990 V 875 surged 3 to 55 V 876 begin offer for all V 877 rose 1 to 13 V 879 acquiring Radio in swap V 879 tumbled 4 to 14 V 880 owns % of Radio N 880 paying shareholders with shares V 881 lost 3 to 21 V 882 issued Monday under rights V 883 resolve disputes with company V 884 had stake in Rally V 884 seek majority of seats N 884 seek majority on board V 885 slipped 7 to 10 V 886 post loss for quarter V 887 had income of million N 887 had income on revenue V 888 threatened sanctions against lawyers V 888 report information about clients V 893 provide information about clients V 894 returned forms to IRS V 896 become witness against client N 897 red-flag problem to government V 897 received letters in days V 901 Filling forms about individuals V 901 spark action against clients V 903 passed resolution in 1985 V 904 disclosing information about client V 904 prevent client from committing V 905 bring actions against taxpayers V 907 opposed stance on matter N 911 had knowledge of actions N 911 had knowledge in week V 912 provide information about clients V 913 obtain returns of individual N 914 obtained forms without permission V 921 pass me in three V 921 ask them for loan V 922 increased pay by % V 928 discuss salary in detail V 930 suing Guild of East N 930 suing Guild for million V 933 began strike against industry V 934 honor strike against company V 940 preventing guild from punishing V 942 prohibits use of funds N 942 assist woman in obtaining V 943 prohibits funding for activities V 944 are source of funding N 944 are source for services V 945 violate freedom of speech N 945 violate rights of women N 946 CLEARS JUDGE of bias N 946 CLEARS JUDGE in comments V 947 sparked calls for inquiry N 947 sparked calls with remarks V 947 sentencing defendant to years V 947 killing men in park V 949 breach standards of fairness N 949 violate code by commenting V 954 began arguments in courtroom V 955 charged GAF with attempting V 955 manipulate stock of Corp. N 958 joined firm of Mayer N 959 became partner in Washington V 962 reached agreement in principle V 962 buy buildings in Albany V 967 bid equivalent on contracts V 968 offered yen for contract V 970 bid yen in auctions V 971 lost contract to Fujitsu V 973 summoned executives from companies N 973 understood concern about practices N 975 investigating bids for violations V 979 had reputation for sacrificing V 980 accepting gifts from businessmen V 982 been complaints about issue V 985 have access to procurement V 990 win contract in prefecture V 991 design system for library V 991 plan telecommunications for prefecture V 992 withdraw bids in Hiroshima V 1002 completed sale of four N 1002 retaining stake in concern V 1004 owns chain of stores N 1004 rose % to 32.8 V 1005 rose % to 29.3 V 1007 made purchase in order V 1008 bought plant in Heidelberg V 1016 reflects slowdown in demand V 1018 take a for period V 1018 cover restructuring of operations N 1018 citing weakness as decision N 1019 been slowing in rate V 1021 make reductions in expenses V 1023 had loss of million N 1024 had profit of million N 1025 rose % to million V 1026 reflects switch from wafers V 1027 converting Clara to facility V 1034 elected director of maker N 1034 increasing membership to 10 V 1035 posted gains against currencies V 1036 underpin dollar against yen V 1036 kept currency from plunging V 1038 posted gains against yen V 1039 is force in market V 1044 traced performance against yen N 1044 traced performance to purchases V 1046 cites deal as the N 1046 cites deal as evidence V 1047 prompted speculation in market V 1049 spurred dollar by institutions V 1050 lock returns on debt N 1051 showed interest in evidence V 1052 following release of report V 1053 measures health of sector N 1054 boosted expectations in day V 1059 turned ratings at NBC N 1059 turned ratings since debut V 1059 keeps millions of viewers N 1059 keeps millions on network V 1060 bought reruns for prices V 1063 losing Cosby to competitor V 1064 make commitments to World N 1068 take Cosby across street V 1071 is point in week V 1074 been disappointment to us V 1075 been return for dollar V 1079 opened office in Taipei V 1081 is part of Group N 1082 offering pages of space N 1083 thumbing nose at advertisers V 1085 made debut with promise V 1085 give scoop on crisis N 1087 dumped energy into rampage V 1089 be some of folks N 1090 raised ire of others N 1092 ran diagram of product N 1097 is one of products N 1097 is one in terms V 1100 need Soups of world N 1100 make run of it N 1101 have base of spenders N 1102 featured ads from handful N 1102 support magazine over haul V 1108 sold copies of issue N 1109 has orders for subscriptions N 1115 makes supplier of programming N 1116 providing programming in return V 1117 sell time to clients V 1118 named Spiro as agency V 1120 awarded account for line N 1120 awarded account to Mather V 1125 completed acquisition of Associates N 1128 increase price of plan N 1128 made offer for Containers N 1129 sell billion of assets N 1129 use some of proceeds N 1129 buy % of shares N 1129 buy % for 70 V 1130 ward attempt by concerns N 1131 offered 50 for Containers V 1132 sweetened offer to 63 V 1136 increase price above level V 1139 characterizing it as device V 1140 receiving 36 in cash V 1141 place shares in market V 1148 requiring roofs for minivans V 1149 equip minivans with belts V 1151 represents milestone in program N 1151 promote safety in minivans N 1151 promote safety through extension V 1153 impose standards on vans V 1154 including members of Congress N 1154 urging department for years V 1154 extend requirements to vans V 1155 carry people than cargo N 1155 have features as cars V 1156 have luck during administration V 1161 require equipment in minivans V 1163 withstand force of weight N 1165 has belts in trucks V 1165 phasing them by end V 1167 meet standard for cars N 1168 met standards for resistance V 1169 installing belts in trucks V 1175 joins board of company N 1175 joins board on 1 V 1177 held talks with partners V 1178 dropped opposition to bills N 1179 allow banking by banks V 1180 allow banking within England V 1182 had conversations with people N 1185 drop opposition to legislation N 1186 declining % to million V 1187 lay % of force N 1189 cut dividend to cents V 1190 is 2 to stock N 1192 reported income of million N 1194 become chairman in May V 1196 issued Monday in plan V 1197 receive 1 of cent N 1197 receive 1 as payment V 1198 resolve disputes with company N 1199 hold stake in Rally N 1199 seek majority of seats N 1200 announced tag for Cabernet N 1201 is peak of experience N 1201 introduced wine at dinner V 1203 is high for Sauvignon V 1204 weighed fall with price V 1205 is category of superpremiums N 1206 included stable of classics N 1210 boast share of bottles N 1215 was Blanc de Blancs N 1220 steal march on Burgundy N 1223 offered Corton-Charlemagne for 155 V 1229 exhausted supply of wines N 1229 seen decrease in demand N 1231 Take Cabernet from Creek N 1232 yielded cases in 1987 V 1233 sell it for 60 V 1234 Offering wine at 65 V 1234 sent merchants around country N 1234 check one of answers N 1236 are people with opinions V 1239 wins ratings from critics V 1240 add it to collection V 1241 's sort of thing N 1241 's sort with people V 1248 increased prices on wines N 1248 see resistance to Burgundies N 1250 keep Cristal in stock V 1250 lowering price from 115 V 1251 's question of quality N 1251 have ideas about value V 1253 buy Tache at moment N 1256 is writer in York V 1257 increasing pressure on Reserve N 1260 see slowing in quarter V 1261 is cause for concern N 1265 cut rate by point V 1265 shown sign of movement N 1268 noted orders for types V 1275 is chance of recession N 1275 put percentage on it V 1276 mailing materials to shareholders V 1277 receive one for shares V 1278 buy 100 of bonds N 1278 buy shares at cents V 1281 owns % of Integra N 1282 rejected contract on Tuesday V 1286 continue shipments during stoppage V 1287 sell billion in bonds N 1287 sell billion next week V 1289 raise money in markets V 1289 pay billion in bills N 1292 cause disruption in schedule N 1294 raise billion in cash V 1294 redeem billion in notes N 1299 sell billion in bills N 1299 sell billion on Thursday V 1301 approves increase in ceiling N 1301 clearing way for offering N 1302 raise billion in quarter V 1302 end December with balance V 1303 raise total of billion N 1306 acquired Inc. in transaction V 1308 has sales of million N 1309 took advantage of rally N 1316 buy shares of targets N 1318 had effect on markets V 1329 posted rise in profit N 1329 posted rise in half V 1331 sold unit to company V 1333 supplies services to industry V 1335 acquire Corp. for 50 V 1335 stepping pressure on concern N 1336 follows proposal by NL N 1337 rebuffed offer in September V 1338 made proposals to shareholders V 1345 own stake in Gulf N 1346 owns % of Inc. N 1348 rose cents to 15 V 1351 put dollars in equity N 1351 finance remainder with debt V 1353 answer offer by Tuesday V 1356 followed offers with offer V 1358 gain millions of dollars N 1361 representing University of Pennsylvania N 1361 added Johnson to lawsuit V 1361 challenging member over rights V 1363 filed suit in court V 1363 developed Retin-A in 1960s V 1364 licensed Retin-A to division V 1371 focusing attention on differences V 1371 's one of subjects N 1372 see rhetoric as signal V 1372 discussing negotiations with leaders V 1374 have opportunity at investment N 1376 devoted all of briefing N 1376 devoted all to subject V 1382 gain influence at company V 1383 grant seats on board N 1384 made hay with troubles V 1385 use experience in talks V 1385 seek access to markets N 1386 get share of attention N 1388 has litany of recommendations N 1388 has litany for the V 1390 need action across range V 1390 need it by spring V 1400 have sheaf of documents N 1404 increasing stake in business N 1405 improves access to technology N 1406 provides source of capital N 1407 Take deal with Corp. N 1407 set sights on Japan V 1409 guided Candela through maze V 1410 secured approval for products V 1411 sold million of devices N 1411 sold million in Japan V 1412 gave access to product N 1413 view this as area V 1415 bankroll companies with ideas V 1415 putting money behind projects V 1416 financed firms for years V 1417 invested million in positions V 1417 invested rise from figure N 1418 tracks investments in businesses N 1419 involved purchase of firms N 1420 parallels acceleration of giving N 1420 giving control of corporations N 1421 acquired stake in Group N 1423 improve access to knowledge N 1423 feed anxieties in area N 1426 bought interest in company N 1426 bought interest in venture V 1427 give window on industry N 1428 's investment in company N 1429 see market from inside V 1433 got start in period V 1435 using term for the N 1441 's problem of businessman N 1443 has relation to business V 1445 get return on investment N 1446 double number of affiliates N 1446 double number in 1990 V 1452 provides maintenance to airports V 1452 reported loss for year V 1452 omitted dividend on shares N 1453 been president since 1984 V 1459 put 15,000 in certificate V 1460 deserve something for loyalty V 1461 took business to Atlanta V 1471 use it for services V 1472 aiming packages at the V 1474 targets sub-segments within market N 1476 add benefits to package V 1479 included checks for fee V 1480 begot slew of copycats N 1484 analyze customers by geography V 1486 opened field for products V 1488 extend battles into towns V 1492 spread accounts over institutions V 1492 runs firm in Charlotte V 1500 introduce line in 1986 V 1503 have package for them V 1505 has packages for groups V 1506 split those into 30 V 1512 markets accessories for computers N 1513 Send child to university V 1513 Make difference in life N 1513 Make difference through Plan V 1514 spend 15,000 like change V 1517 helping S&L in areas V 1527 send support to institution V 1528 keep Institution off deficit V 1529 is lawyer in York N 1530 become Parent to loan V 1533 send information about institution N 1535 told meeting in Washington N 1535 support halts of trading N 1536 reinstating collar on trading V 1537 take effect in pit V 1540 following review of the N 1541 fell total of points N 1544 knocked contract to limit V 1547 provides respite during sell-offs V 1547 become limit for contract N 1551 banned trades through computer V 1553 expressed concern about volatility N 1558 done this in public V 1559 writing report to panel V 1562 been studies of issue N 1562 was time for action N 1563 carry legislation in months V 1564 expressed concern about problems V 1568 is one of the N 1568 calling faithful to evensong V 1571 is note in Aslacton V 1571 enjoying peal of bells N 1575 drive Sunday from church V 1578 diminish ranks of group N 1582 playing tunes on bells V 1587 have names like Major V 1589 gives idea of work N 1594 swap places with another V 1597 become bit of obsession N 1600 leaving worship for others V 1603 set line in protest V 1604 treated tower as sort V 1605 are members of congregation N 1607 following dust-up over attendance N 1612 draw people into church V 1614 improve relations with vicars N 1615 entitled Bells in Care N 1616 have priority in experience N 1624 is source of ringers N 1625 surfaced summer in series V 1626 signing letter as male V 1626 making tea at meetings V 1630 take comfort in arrival V 1632 signal trouble for prices V 1634 be trap for investors N 1635 kill them after mating N 1637 give way to environments V 1641 fell % in 1977 V 1643 rose % in 1988 V 1645 kept pace with advances V 1648 keeping watch on yield V 1650 pushes yield below % V 1661 paying percentage of flow N 1661 paying percentage in form V 1663 buy some of shares N 1664 factors that into yield V 1664 get yield of % N 1665 is tad below average V 1667 reflecting weakening in economy N 1668 forecasting growth in dividends N 1673 is tally from Poor N 1674 raised dividends in October V 1676 measure magnitude of changes N 1676 be harbinger of growth N 1678 deliver return to % N 1678 deliver return over months V 1679 expects growth in dividends N 1679 expects growth next year V 1680 is element in outlook N 1684 start Co. in Boston V 1684 had subsidiary in York V 1684 called Co. of York N 1688 registered days before application N 1688 dropped basis for plight N 1691 reported losses for quarters V 1695 build business over year V 1698 servicing base of systems N 1698 provide maintenance for manufacturers V 1698 using some of applications N 1700 pay dividends on stock V 1702 set rapprochement between Beijing N 1705 took aim at interference V 1709 forgiven leaders for assault V 1709 killed hundreds of demonstrators N 1710 including friends of China N 1713 expressed regret for killings N 1715 reprove China for it V 1719 imposed series of sanctions N 1719 including suspension of talks N 1720 is envoy for administration N 1722 brief president at end V 1724 raised number of issues N 1724 raised number in hours V 1726 restore participation in Program N 1728 is part of community N 1728 welcome infusion of ideas N 1729 told group of Americans N 1729 told group at Embassy V 1730 are signs of China N 1732 encounter guards with guns N 1732 encounter guards during visit V 1734 discarded arms for time V 1736 filed protests with Ministry V 1737 pointed rifles at children V 1743 passing buck to people V 1749 visited lot of manufacturers N 1750 spending lot of money N 1750 spending lot on advertising V 1753 Earns Ratings Than President N 1753 define blacks by negatives V 1753 have views of her N 1754 speaks language than husband N 1756 have view of spouse N 1762 disciplined number of individuals N 1762 disciplined number for violations V 1767 had listing for party N 1772 selling securities at prices V 1778 return call to office N 1783 received suspension in capacity N 1789 described situation as problem V 1790 transacting trades for days V 1791 sold securities to public V 1792 sold securities at prices V 1810 had clients at all V 1814 resist onslaught of trading N 1814 shrug furor over activities N 1818 exploit differences between prices N 1819 took place in markets V 1824 forgotten leap in prices N 1824 drove stocks in the V 1825 suspend trading in futures N 1825 suspend trading at time V 1827 tightened controls on purchases N 1829 reaped chunk of earnings N 1829 reaped chunk from arbitrage V 1830 joined list of firms N 1830 doing arbitrage for accounts V 1831 heads Salomon in Tokyo V 1831 ascribe part of success N 1831 ascribe part to ability V 1831 offer strategies to clients V 1837 is cause for concern N 1837 is cause at moment V 1843 manages billion in funds N 1847 gained following since crash V 1850 was % of size N 1851 is times as market N 1852 boost wage for time V 1852 casting vote for measure N 1854 cost thousands of jobs N 1855 bend bit from resistance V 1856 raising wage to 3.35 V 1859 are smiles about bill N 1862 praised acceptance of wage N 1867 pay subminimum for days V 1867 uses program for workers N 1870 lift floor in stages V 1871 received contract for services N 1872 won contract for aircraft N 1873 given contract for equipment N 1874 got contract for handling N 1875 made acquisitions in mode V 1877 leading bid for Corp N 1879 entice Nekoosa into negotiating V 1880 pursue completion of transaction N 1881 opens possibility of war N 1886 make bid for Nekoosa N 1887 picked approach to management N 1887 picked approach as president V 1888 Assuming post at age V 1888 is rule in universities N 1888 researching book on Hahn N 1892 make transition to world N 1895 spending years in college N 1896 earned doctorate in physics N 1899 engineered turnaround of Georgia-Pacific N 1903 building segment of company N 1904 buffet products from cycles V 1908 attributes gains to philosophy V 1912 be concern in world N 1912 be concern with combined V 1916 approved portions of package N 1916 approved portions in hopes V 1917 approved million in guarantees N 1917 approved million under program V 1919 provoked threats by House N 1920 are factor in shaping N 1921 reallocate million from Pentagon N 1924 receive portion of appropriations N 1925 fund series of initiatives N 1927 received quota of tons N 1927 received quota over period V 1928 are target for growers N 1929 began bidding by proposing V 1930 broadened list by including V 1931 has ties to industry N 1931 insert claim by Philippines N 1932 gave approval to billion V 1933 carries ban on flights N 1934 move measure to House V 1934 bounce bills to House V 1936 losing night with Committee N 1937 Takes Backseat To Safety N 1937 Takes Backseat on Bridges V 1944 replace openings on Bridge N 1945 blocks view of park N 1949 keep railings on Bridge N 1953 replace trays at stands N 1957 takes space than carriers N 1962 's place for food N 1964 promises change on sides N 1966 runs gamut from blender N 1967 swap teachers at Carnegie-Mellon N 1969 get exposure to system N 1970 making products for Soviets N 1971 renew sense of purpose N 1975 IT'S BIRDS with deal N 1977 seeking solutions to shortage N 1978 contain cells with point N 1980 compared them to pyramids V 1982 house inmates at cost V 1982 building prison in York V 1984 cited Corp. for violations V 1985 proposed fines of million N 1985 was record for proposed N 1986 cited violations of requirements N 1987 proposed million in fines N 1991 record injuries at works N 2001 contest penalties before Commission V 2002 was million for alleged N 2011 emphasized prevalance of alcoholism N 2012 had multitude of disorders N 2014 lack necessities of nutrition N 2015 predispose person to homelessness V 2015 be consequence of it N 2021 exhibits combination of problems N 2024 quote director of a N 2030 played role in number N 2034 cite groups as Association N 2034 got support from groups V 2038 including someone from staff N 2038 put them on streets N 2041 raise million through placement V 2045 discuss terms of issue N 2050 approved legislation on buy-outs N 2052 put brakes on acquisitions N 2052 load carrier with debt V 2055 block acquisition of airline N 2059 called amendment by supporters V 2059 preventing Chairman from attempting V 2060 drop Voice of offices N 2063 print text of broadcasts N 2072 are propaganda of sorts N 2073 make mind on issue V 2077 broadcasts news in languages V 2080 barred dissemination of material N 2081 read texts of material N 2081 read texts at headquarters V 2081 barred them from copying V 2085 print it in newspaper V 2087 sounded lot like censorship N 2088 lost case in court V 2092 changed position on points N 2095 declared right of everyone N 2095 disseminate materials in States V 2096 preclude plaintiffs from disseminating V 2098 allowed access to materials N 2098 allowed access notwithstanding designations V 2098 check credentials of person N 2103 proscribes government from passing V 2103 abridging right to speech N 2104 prescribe duty upon government V 2104 assure access to information N 2105 read Voice of scripts N 2105 visiting office during hours V 2107 copy material on machine V 2111 get words for examination N 2115 get answers to questions N 2117 was director of the N 2124 run Campbell as team V 2125 including executives with experience N 2134 is a in market N 2134 paid times for PLC V 2138 have rapport with employees N 2138 have responsibility for operations N 2139 joined Campbell in 1986 V 2139 take charge of operations N 2141 boost performance to level V 2142 controlled % of stock N 2144 took charge against earnings N 2147 discuss circumstances of departure N 2150 reached age of 65 N 2150 reached age in 1991 V 2151 withdrawn name as candidate V 2152 received salary of 877,663 N 2153 owns shares of stock N 2159 convince board of worthiness N 2161 give duo until year V 2162 take look at businesses N 2163 applaud performance of U.S.A. N 2163 posted growth for 1989 V 2197 announced resignation from house N 2206 handled growth of company N 2209 integrated acquisitions in years V 2212 been president of House N 2216 run side in combination V 2217 be publisher of books N 2223 signals attempt under pretext N 2226 gives veto over action N 2226 gives Congress through ability V 2228 swallow principle of separation N 2230 discussed clause at Convention V 2232 needed executive with resources N 2233 placing president on leash V 2234 contained attempts by Congress N 2234 rewrite Constitution under pretext V 2235 sign bills into law V 2235 declaring intrusions on power N 2236 strip president of powers N 2238 make appointments without approval V 2238 fill Vacancies by granting V 2239 approve nomination of said N 2240 make appointments under II V 2241 imposes conditions on ability V 2241 nominate candidates of choosing N 2243 avoid restriction by choosing V 2243 prohibits service to government N 2244 contain number of provisions N 2244 violate clause in II N 2246 make recommendations to Congress V 2246 select matter of recommendations N 2247 proposing alternatives to regulations N 2248 prevents Office of Budget N 2248 subjecting orders to scrutiny V 2250 illustrates attempt than 609 V 2253 contain kinds of conditions N 2254 invite Congress for remainder V 2254 rewrite II of Constitution N 2255 becomes custom in administration V 2257 discussing control in Moscow V 2257 direct president through rider V 2258 leave part of branch N 2258 sign bills into law V 2258 assert power of excision N 2264 be power of applicability N 2265 is assertion of veto N 2265 is assertion at all V 2265 exerting power of excision N 2265 violate separation of powers N 2266 asserts right of excision N 2268 takes dispute to Court V 2269 is vindication of right N 2273 take provisions in bills N 2275 realize fear in 48 N 2275 extending sphere of activity N 2275 drawing powers into vortex V 2279 was billion in 1987 V 2280 deducting expenses from income V 2283 saved farmers from year V 2283 reclaim quantities of grain N 2284 sell commodities at profit V 2287 attributed increases to package V 2288 confirms rebound from depression N 2289 explain reluctance of lobbies N 2289 make changes in program N 2290 curtailed production with programs V 2294 led nation with billion V 2295 log decline in income N 2296 was setback for 10,000 N 2300 boosted production of corn N 2304 turns city into town V 2306 faces competition in County N 2306 faces competition in Valley V 2308 put paper on block V 2309 asking million for operation V 2313 buy space in the V 2313 target area with one V 2315 provide alternative to the N 2317 joins News-American as cornerstones V 2319 built castle at Simeon N 2320 kept apartment in building N 2321 represent condition of industry N 2322 was survivor from age N 2324 cut circulation in half V 2327 restored respect for product N 2328 beat rival on disclosures V 2331 provide employees with service V 2331 pay them for days V 2339 filling box with edition V 2342 make payment on million V 2343 obtain capital from lenders V 2344 make payment by 1 V 2345 seeking offers for stations N 2346 leave home without card V 2348 joining forces in promotion V 2348 encouraging use of card N 2349 giving vacations for two N 2349 giving vacations to buyers V 2349 charge part of payments N 2349 charge part on card V 2350 sending letters to holders V 2352 approached Express about promotion V 2354 restore reputation as car N 2357 is part of effort N 2357 broaden use of card N 2359 is company with maker N 2359 promote card as card V 2361 charge all of purchase N 2361 charge all on card V 2362 finance part of purchase N 2362 finance part through Corp V 2362 put payment on card V 2364 joining forces with them V 2365 is nameplate among holders V 2366 asked members in mailing V 2366 get information for purchases V 2368 screened list for holders V 2370 get point off rates N 2371 increase use of cards N 2371 have plans for tie-in N 2380 offered tickets on Airlines N 2380 offered tickets to buyers V 2382 declared variety of deals N 2384 set precedent for municipalities V 2387 retraced some of losses N 2388 lost millions of pounds N 2388 lost millions from deals V 2391 make payments on debt N 2391 making payments with another V 2392 make payments to banks V 2396 set precedent for transactions N 2397 representing one of banks N 2400 exhaust avenues of appeal N 2401 recover payments to authorities N 2401 recover payments in instances V 2401 made payments to councils N 2403 file appeal against ruling N 2411 cause fall on 13 N 2413 are proponents of trading N 2414 make markets in stocks V 2416 announced addition of layer N 2416 slow traders during market V 2416 approve restrictions on trading N 2417 turning market into crapshoot V 2417 abandoned arbitrage for accounts V 2418 do trades for clients V 2420 stop racket on Street N 2421 telephone executives of companies N 2422 rallying CEOs to cause V 2427 gained control over chunk N 2427 wedded them to ability V 2431 wrote letter to Chairman N 2434 pitting employee against employee V 2444 made shambles of system V 2444 turning market into den V 2446 portray pickers as Neanderthals V 2448 beg regulators for protection V 2450 take advantage of discrepancies N 2452 place orders via computers V 2452 sell them in market V 2452 lock difference in price N 2452 lock difference as profit V 2453 involve sale of millions N 2454 earns profit of 25,000 N 2458 is reason for gyrations N 2459 seen iota of evidence N 2459 support restrictions on trading N 2463 halted trading in futures N 2464 ignoring role as source V 2469 keep returns of benchmarks N 2470 losing clients to funds V 2471 charge pennies per 100 V 2473 make dinosaurs of firms N 2474 earned returns of % N 2474 earned returns on capital V 2474 making markets in stocks N 2475 see step to trading N 2475 see step as knell V 2477 keep funds from taking V 2477 taking business to markets V 2483 stacking deck against them V 2483 scaring them to death V 2487 buy stocks in 500 N 2490 doing % of volume N 2498 minted dozens of millionaires N 2499 trade worth of futures N 2501 getting thunder from Congress V 2503 put system in jeopardy V 2505 put genie in bottle V 2507 stop idea of trading N 2507 trading basket of stocks N 2510 is increase in requirement N 2514 chase dozens of traders N 2516 prevents sale of stock N 2519 destroy efficiency of markets N 2522 suspend trading during swings V 2524 is form of trading N 2525 takes advantage of concept N 2527 owns widget in York N 2527 replace it with widget V 2528 beat return of index N 2534 executing order in stocks V 2535 is evidence of desires N 2535 make transactions of numbers N 2536 taking advantage of inefficiencies N 2536 evoking curses of observers N 2539 is difference between markets N 2541 causes difference in prices N 2541 initiating sell in Chicago N 2543 transfers pressure from Chicago V 2544 decrease ownership in widgets N 2546 get execution of trade N 2549 is subtraction to market N 2552 become ticket of future N 2555 encourage type of investor N 2555 encourage type over another V 2556 attract investor to he V 2562 using trading as boy V 2562 gain ground in wooing N 2562 wooing investors for products V 2563 bringing interference from markets V 2567 is one for abolishing N 2570 amass record with fees N 2573 offering it to investors V 2582 inviting liquidity with ways V 2582 transfer capital among participants V 2583 executes trades for institutions V 2585 affect operations of Department N 2586 cut request for enforcement N 2587 make filings to regulators N 2593 requested amount for enforcement N 2593 requested amount for 1990 V 2596 charges nothing for filings V 2598 is increase of million N 2604 noticed surge in filings N 2605 set record for elections N 2608 represent the in any N 2612 cites efforts in Oklahoma N 2614 Taking cue from California V 2619 reflect development of structure N 2621 is sort of sense N 2621 is sort in market V 2625 fetching deal of money N 2626 brings number of services N 2628 costs caller from cents V 2630 noting interest in use N 2631 eyeing registration through service N 2632 face barriers to raising N 2635 improving rates of patients N 2635 improving rates at Hospital V 2639 send light to dozens V 2641 including emphasis on medicine N 2648 gotten inquiries from people V 2650 limited growth at Services N 2651 spurring move to cloth N 2651 eliminate need for pins N 2653 bearing likeness of Freud N 2659 have advantage because quantity V 2660 blames trading for some V 2661 cites troubles in bonds N 2665 's virtue in it V 2671 does anything for market V 2675 runs agency in York N 2678 plays options for account V 2678 factoring volatility into decisions V 2679 increases liquidity in market N 2685 is part of markets N 2689 bring market after plunge V 2691 get rhythm of trading N 2691 take advantage of it N 2695 sell all by quarter V 2696 sell stocks in trust N 2699 took advantage of prices N 2705 receive 3,500 at closing V 2706 approved transaction by written V 2707 raised capacity of crystals N 2707 raised capacity by factor V 2708 created changes in structures N 2709 made advance with superconductors V 2711 marks step in research N 2712 obtained capacity in films V 2713 conduct electricity without resistance V 2719 created changes by process V 2719 bombarding samples with neutrons V 2719 creates radioactivity in samples V 2720 breathed sigh of relief N 2720 breathed sigh about finding V 2721 involves motion of fields N 2722 pins fields in place V 2725 combine process with growth V 2726 raise capacity of samples N 2727 named officer of Corp. N 2730 succeeded Taylor as chairman V 2731 posted loss of million N 2732 had impact of million N 2754 is million of bonds N 2758 expect rating from Moody V 2759 indicating coupon at par N 2760 buy shares at premium V 2767 is Monday from 1989 N 2771 is Tuesday from 1989 N 2776 have home for them V 2777 is fan of proposition N 2777 build replacement for Park N 2778 sink million into stadium V 2783 be moneymakers for city N 2785 brought money into city V 2786 redistribute wealth within community V 2787 sink dollars into mega-stadium V 2790 spent 100,000 on promotion V 2791 rejected % to % N 2793 built Park for Giants V 2795 playing games with voters V 2798 built coliseum with funds V 2807 slipped % to million V 2808 fell % to million V 2809 were losses in period N 2809 was gain of million N 2810 was profit from discontinued V 2810 contributed million before tax V 2811 fell % to million V 2811 rose pence to pence V 2812 paying dividend of pence N 2813 fell % to million V 2817 sent shivers through community V 2820 retain ratings on paper N 2821 reduce margins on borrowings N 2821 signal trouble for firms V 2825 shoring standing in months V 2826 taking risks with capital V 2827 's departure from practice N 2827 transferring risks to investors V 2829 raised flag for industry N 2829 raised flag in April V 2833 acquires company in transaction V 2834 create prospects for profitability N 2837 arranged billion of financings N 2837 arranged billion for units V 2839 represent portion of equity N 2842 been participant in business N 2844 includes billion of goodwill N 2845 has million of capital N 2847 had Shearson under review V 2850 taken toll on Drexel N 2852 cutting workforce in half V 2853 circulated statement among firms V 2853 diminished year from years V 2857 is plus in view V 2858 been firm on Street N 2860 been president of engineering N 2862 sought involvement of suppliers N 2865 change perception of cars N 2866 holding variety of positions N 2867 hear appeal from case N 2868 offer kind of aid N 2868 offer kind to those V 2870 becomes precedent for cases N 2873 reported cases among daughters N 2881 expanded approach for time V 2881 pay share of damages N 2882 sold all in California V 2883 are issues of process N 2886 chilled introduction of drugs N 2887 rejected liability for drugs N 2888 favors marketing of drugs N 2889 forced drug off market V 2890 suffer injuries from drugs N 2896 replaced lawsuits over vaccines N 2896 replaced lawsuits with fund V 2898 trash law in cases N 2900 completed purchase of chain N 2901 operates stores in Northeast N 2901 reported revenue of billion N 2902 runs stores as Taylor N 2905 had guilders of charges N 2905 had guilders in quarter V 2905 reflect losses in connection N 2907 had guilders of charges N 2908 cut spending by half V 2914 send million in aid N 2914 send million to Poland V 2916 harmed farmers in Salvador N 2919 need market for products N 2920 expects income in year N 2924 fell 1.125 to 13.625 V 2925 fell % to % V 2927 earned million on revenue V 2928 attributed downturn in earnings N 2928 attributed downturn to costs V 2930 carry it through period V 2931 edged Wednesday in trading V 2933 added points to 35564.43 V 2934 fell points to 35500.64 V 2936 outnumbered 454 to 451 N 2937 reflecting uncertainty about commitments N 2938 sparked buying in issues V 2939 is liquidity despite trend V 2945 regarding direction of market N 2950 advanced yen to 1,460 V 2951 gained 20 to 1,570 V 2951 rose 50 to 1,500 V 2952 fell yen to 692 V 2952 added 15 to 960 V 2954 advanced 11 to 890 V 2955 affecting demand for stocks N 2956 closed points at 2160.1 V 2957 posting intraday of 2141.7 N 2957 posting intraday in minutes V 2958 ended day near session V 2963 settled points at 1738.1 V 2965 hugging sidelines on fears V 2966 cited volatility as factors V 2968 tender bid for control N 2969 waive share in maker N 2969 raised prospects of war N 2970 gain acceptance of bid N 2971 sparked expectations of bid N 2972 rose 9 to 753 V 2973 eased highs in dealings V 2974 gained 15 to 397 V 2974 reporting drop in profit N 2977 cover requirements in shares N 2977 climbed 32 to 778 V 2979 gained 18 to 666 V 2980 advanced 23 to 14.13 V 2986 are trends on markets N 3001 alleging violations in facility N 3002 stored materials in containers V 3004 held hearings on allegations N 3004 returned plant to inspection V 3005 expects vindication in court N 3008 had effect on consumers V 3010 was 116.4 in October V 3011 was 116.9 in 1988 V 3012 uses base of 100 N 3022 providing sense of security N 3022 kept power of paycheck N 3024 buy homes in months V 3030 buy appliances in months V 3037 ranked offering as sale V 3039 paid attention to reports N 3039 provided view of economy N 3043 blurred picture of economy N 3046 reported declines in activity N 3049 enhances importance of data N 3050 caused swings in prices N 3052 forecast rise in rate N 3054 create one for refunding V 3055 raise billion in cash N 3056 issue billion of bonds N 3056 increasing size of bond N 3058 gauge demand for securities N 3059 is contingent upon passage N 3060 issue debt of kind N 3067 dominated activity in market N 3069 posted return of % N 3069 showed return of % N 3074 outdistanced return from bonds N 3078 trailed gains in market N 3080 yielding % to life V 3085 including lack of interest N 3091 was interest in bonds N 3097 fell 14 to 111 V 3098 fell 9 to 103 V 3099 lowered rating on million N 3100 exceeds profit by margin V 3100 noted loss of million N 3102 including gains of million N 3105 fell % in quarter V 3105 lost million in business V 3106 posted earnings of million N 3108 included charge in quarter V 3109 ordered investigation of impact N 3110 referred takeover to Commission V 3111 sold business to Ltd. V 3112 is unit of S.A N 3114 has branches throughout U.K. V 3114 had profit of million N 3118 throws work on legislation N 3119 has control over legislation N 3120 guarantee cut in emissions N 3122 abandon proposal for cap N 3124 junk system for credits N 3125 subsidize costs for utilities N 3125 sparing customers from jumps V 3127 present alternative to members V 3128 pose challenge to plan N 3129 win support of utilities N 3130 representing some of utilities N 3132 have agreement with company V 3133 acquired % of City N 3133 acquire % from Co. V 3136 coordinate markets in times V 3138 routes trades into file V 3140 fall points from close V 3141 halt trading for hour V 3141 slides points on day V 3144 zip orders into exchange V 3144 handles % of orders N 3145 buy quantity of instrument N 3145 buy quantity at price V 3148 swapping stocks for futures V 3149 involving sale of stocks N 3152 selling baskets of stocks N 3152 executing trades in options V 3153 capture discrepancies between stocks N 3155 buy value of index N 3155 buy value by date V 3156 multiplying number by amount V 3158 buy amount of investment N 3158 buy amount by date V 3162 seek control of airline N 3163 make bid by himself V 3165 boost value of holdings N 3168 position himself as investor V 3170 sold stock at profit V 3170 making filing before collapse V 3171 acquired stake at cost V 3171 reduced stake to % V 3171 accepted bid at prices V 3172 boost value of stock N 3174 adds twist to speculation V 3180 boost value of any N 3183 land job with UAL V 3184 reach kind of accord N 3184 reach kind with employees V 3186 owned % of Williams N 3186 pay shares for rest V 3187 pay share for share V 3192 acquired assets of agency N 3194 bought shares of stock N 3194 bought shares for 3.625 V 3195 boosts stake to % V 3196 oust Edelman as chairman V 3197 including sale of company N 3202 extended offer for stock N 3202 extended offer until 9 V 3204 owns million of shares N 3209 reported earnings for quarter V 3216 rose % to billion V 3217 cited showing by segment N 3218 soared % to million V 3219 had revenue for months V 3220 muscling aerospace for time V 3221 jump % to million V 3225 took hits in quarters V 3226 posted net of million N 3227 Excluding additions to profit N 3227 were 2.47 from 2.30 V 3228 rose % to billion V 3229 cut prices by % V 3230 include reduction on computer N 3235 buy quantity of sugar N 3240 rose limit of cent N 3240 rose limit to cents V 3241 export sugar during season V 3241 produce alcohol for fuel V 3244 is producer of sugar N 3247 total tons in contrast V 3252 been switch in decade V 3256 have contacts with industry N 3259 fuel portion of fleet N 3261 had problems in years V 3262 buy sugar on market V 3270 showed decline in inventories N 3274 buys grains in quantity V 3274 buy tons of wheat N 3275 receiving status from U.S V 3277 running purchases of bushels N 3277 running purchases in October V 3279 advanced cents to 1.1650 V 3283 extend state of emergency N 3283 extend state in Island V 3285 find buyer for chain V 3285 sell stake in chain N 3285 sell stake to management V 3285 reduce investment in retailing N 3286 seeking buyer for chain V 3288 rang sales in 1988 V 3289 operates stores in Iowa N 3290 buy interest in chain N 3290 buy interest in January V 3291 reduce stake in Younkers N 3292 changing offer for company N 3292 changing offer to 13.65 V 3293 pay cash with preference V 3295 accrue dividends at rate V 3297 gave reason for offer N 3298 submit offer to committee V 3300 been manager for months V 3301 followed tenure as editor N 3304 is reason for departure V 3307 choosing people of tomorrow N 3308 reflects change in strategy N 3311 rose pence to pence V 3312 representing shares in market V 3314 becomes director of affairs N 3315 becomes director of programs N 3316 extended offer for shares N 3318 launched suit in court V 3318 seeking withdrawal of rights N 3320 hold % of shares N 3321 set 10 as deadline V 3325 reported loss of million N 3326 had loss of million N 3328 declined % to million V 3329 cited softening in demand N 3330 report loss of million N 3332 write million in costs N 3333 cited amortization of goodwill N 3333 cited amortization as factors V 3336 bearing brunt of selling N 3338 added 0.84 to 341.20 V 3339 gained 0.99 to 319.75 V 3339 went 0.60 to 188.84 V 3340 led decliners on Exchange V 3343 stood month at % V 3348 offset impact of profit-taking N 3349 awaits release of data N 3349 awaits release with hope V 3350 stick necks in way V 3351 jumped 3 to 47 V 3351 sparked revival of rumors N 3353 went 3 to 1 V 3355 climbed 3 to 73 V 3355 mount offer for company N 3357 rose 1 to 177 V 3359 added 3 to 51 V 3359 acquire stock for 50 V 3360 has stake of % N 3361 launched offer for company N 3361 dropped 3 to 61 V 3362 lost 1 to 50 V 3364 rose 3 to 39 V 3364 added 1 to 24 V 3364 gained 1 to 48 V 3364 fell 7 to 48 V 3364 lost 3 to 31 V 3364 dropped 1 to 40 V 3365 rose 3 to 53 V 3366 has yield of % N 3367 dropped 1 to 17 V 3368 sell stake in unit N 3368 sell stake for million V 3368 cut estimates of value N 3369 tumbled 2 to 14 V 3371 went 1 to 19 V 3372 marketing lens for use N 3373 gained 1.56 to 372.14 V 3375 rose 1 to 16 V 3377 convert partnership into company V 3378 have impact on results N 3379 exchange assets for shares V 3383 holds % of units N 3384 rose % to yen V 3385 cited sales against backdrop N 3386 surged % to yen V 3387 climbing % from yen V 3392 owns % of shares N 3392 exchange share of stock N 3392 exchange share for share V 3394 plunged 4 to 14.75 V 3395 have rate of 1.76 N 3400 include loss of million N 3401 exceed net of million N 3402 makes bombs for business V 3405 rose % to million V 3408 reflected loss from Hugo N 3411 maintain million in capital N 3413 had loss of 158,666 N 3415 reported loss of 608,413 N 3417 sold shares of stock N 3417 sold shares to interests V 3418 represents % of shares N 3422 increased worth to million V 3423 raised price for jeweler N 3423 raised price to 57.50 V 3429 raises presence to stores V 3431 said problems with construction N 3434 be shareholder in company N 3439 reported loss of million N 3440 had income of 132,000 N 3441 is write-off of servicing N 3441 been drain on earnings N 3442 eliminate losses at unit N 3443 eliminated million of will N 3444 assuming fluctuation in rates N 3447 has assets of billion N 3448 completed acquisition of Inc. N 3451 adopt First of name N 3452 eliminate positions of company N 3453 take jobs with First N 3454 reduce results for 1989 N 3454 reduce results by million V 3455 provides cents for stockholders V 3457 receive stock in company N 3463 ENDED truce with Contras N 3464 citing attacks by rebels N 3465 reaffirmed support for elections N 3468 launched offensive against forces N 3469 called protests in country N 3469 showing support for renovation V 3474 extend moratorium on funding N 3476 treat diseases like Alzheimer N 3479 approved portions of package N 3483 sabotage elections in Namibia N 3484 took responsibility for slaying N 3484 avenge beheading of terrorists N 3486 concluded days of talks N 3489 continue program of modernization N 3490 defeated motion in history N 3492 take place in waters V 3494 unveiled package of initiatives N 3494 establish alternatives to trafficking N 3494 establish alternatives in nations V 3497 warned U.S. about attack V 3499 completed offer for Inc. N 3499 tendering % of shares N 3499 tendering % by deadline V 3500 take ownership of studio N 3501 assuming billion of debt N 3506 told employees in operations N 3509 earned million on revenue V 3512 posted gain in profit N 3514 rose % to yen V 3515 surged % to yen V 3517 pushed sales in construction V 3528 rose 3.375 to 47.125 V 3529 stem drops in market N 3531 received bid from investor V 3532 steps pressure on concern N 3535 buy % of parent N 3536 make bid by himself V 3538 block buy-outs in industry N 3539 face fine of million N 3543 face requirements as automobiles N 3544 sell billion in bonds N 3554 cast pall over Association V 3554 built thrift with bonds V 3557 reaching 3 on rumors V 3561 's 10 of equity N 3562 has shares in hands N 3565 attend restructuring of Columbia N 3570 write junk to value V 3570 sell bonds over years V 3571 wrote million of junk N 3571 reserved million for losses V 3573 provide data on junk N 3576 has gains on traded V 3579 holding some of investments N 3585 sell bank as operation V 3585 use some of proceeds N 3586 is subject of speculation N 3599 awarded patents for Interleukin-3 V 3600 make factor via technology V 3601 licensed rights for Interleukin-3 V 3601 conducting studies with it V 3603 induce formation of cartilage N 3605 filed applications on number V 3608 question rating in hearings V 3609 add voice to court V 3614 gives a to nominees V 3615 gives rating to those V 3616 acquire % of AG N 3616 acquire % from Foundation V 3618 buying stake in company N 3618 expand production of supplies N 3619 provides fit with unit N 3620 is part of strategy N 3621 had sales of marks N 3621 has backlog of marks N 3623 bring stock to market V 3624 issued rulings under act N 3625 investigate complaints by makers N 3625 reaching U.S. at prices V 3626 defines prices as ones V 3628 find violations of law N 3628 assess duties on imports V 3633 estimate size of charge N 3635 increase benefits to % V 3637 called part of strategy N 3640 take advantage of plan N 3643 rose cents to 38.875 V 3644 been target of speculation N 3649 elected director of concern N 3650 increases board to seven V 3652 gives example of integrity N 3653 offered trip from Bronx N 3653 offered trip by one V 3653 accepting anything of value N 3654 reading book about fingers N 3655 lead us along path V 3655 producing equipment for Navy V 3656 became partner after creation V 3660 falsify ownership of corporation N 3663 plugged itself into rhetoric V 3663 using angle through '80s V 3666 made use of techniques N 3668 became partners in company N 3673 found day on job N 3677 changed name to London V 3677 became author of book N 3681 leaving gold in street V 3682 have characteristics as Wedtech V 3683 take place in programs V 3686 are groups of people N 3687 selling decisions of government N 3688 are version of Nomenklatura N 3689 line pockets of insiders N 3691 was officer of Corp. N 3696 open talks with receivers V 3697 avert exodus of workers N 3698 become shareholders in company N 3699 take stake in company N 3700 holding contracts for ships N 3702 has ships on order V 3702 presented claims for damages N 3702 presented claims in court V 3703 began Tuesday in court V 3705 repay million in debt N 3705 repay million through sales V 3708 moved headquarters from Irvine V 3712 reported decline in earnings N 3716 included gain of million N 3720 attributed slump to costs V 3722 realized profit on increases V 3725 closed yesterday at 80.50 V 3727 had change in earnings V 3729 compares profit with estimate V 3729 have forecasts in days V 3731 completed acquisition of Corp. N 3732 causing bottlenecks in pipeline V 3733 move crop to ports V 3735 reaping windfall of business N 3737 bought bushels of corn N 3737 bought bushels in October V 3738 be strain in years V 3740 shipping corn in that V 3743 reduce flow of River N 3744 cutting flow of River N 3748 hamstrung shipments in wake V 3749 been factor in trading N 3750 use price of contracts N 3750 buy corn from farmers V 3756 offering farmers for corn V 3761 is plenty of grain N 3763 relieve pressure on Orleans N 3773 advanced cents to 19.94 V 3776 fell 3.20 to 377.60 V 3777 declined cents to 5.2180 V 3780 was result of uncertainty N 3781 creating attitude among traders V 3786 rose cents to 1.14 V 3788 included number of issues N 3789 was reaction to stocks N 3790 means interest for metal N 3794 indicates slowing in sector N 3795 show reading above % N 3796 unveiled models of line N 3798 posted drop in profit V 3798 offset weakness in operations N 3800 includes gains of million N 3801 had gain from settlement N 3804 sold chunks of segments N 3804 eliminating income from operations V 3808 attributed earnings for segment N 3808 attributed earnings to loss V 3808 is venture with Ltd N 3809 dropped % to million V 3811 posted drop in income N 3812 exceeded projections by analysts N 3812 expected volume of sales N 3815 sell mix of products N 3817 boost profit for unit V 3821 reduced debt by billion V 3821 bought shares of stock N 3823 increased stake in USX N 3823 increased stake to % V 3828 increasing membership to nine V 3829 named officer in August V 3831 claim authority for veto N 3832 veto part of bill N 3834 gives authority for veto N 3838 was discussion of veto N 3840 be course of action N 3840 claim authority without approval V 3841 sell platforms to Co. V 3843 begin delivery in quarter V 3844 Take Stage in City V 3847 sold year in U.S. V 3848 anticipates growth for maker N 3849 increased quarterly to cents V 3853 limit access to information N 3854 ease requirements for executives V 3854 undermine usefulness of information N 3854 undermine usefulness as tool V 3855 make argument in letters V 3855 exempt executives from reporting V 3855 reporting trades in shares V 3856 report exercises of options N 3858 paid obeisance to ideal V 3860 report sales of shares N 3860 report sales within month V 3863 produced mail than issue N 3866 improve law by conforming V 3866 conforming it to realities V 3872 publish names of insiders N 3872 file reports on time V 3877 write representatives in Congress N 3879 oversees billion for employees V 3879 offer options to participants V 3881 begin operation around 1 V 3883 are part of fund N 3884 carry part of agreement N 3885 shun securities of companies N 3890 transfer money from funds V 3890 receive cash from funds V 3892 purchase shares at price V 3893 protect shareholders against tactics V 3896 taken line about problem V 3900 embraced Age as listening V 3903 was case in point N 3905 play tune from record N 3907 reflected side of personality N 3913 chanted way through polyrhythms V 3916 featured show of images N 3921 offered music of evening N 3921 offered music after intermission V 3921 juxtapose performer with tracks V 3923 warned us in advance V 3924 illustrated tapestry with images V 3925 was jazz with pictures V 3931 was thanks to level N 3932 was substitute for evening N 3934 gave blessing to claptrap V 3935 liberated U.S. from one V 3936 traduce charter of promoting N 3942 had success at achieving V 3943 means redistributionism from West N 3944 give rights against press N 3944 block printing of ideas N 3945 converted ideals of liberty N 3945 converted ideals into rights V 3949 holding meetings in Paris V 3954 contributed % of budget N 3956 raise funds by selling V 3958 see argument against UNESCO N 3959 shows power of ideas N 3960 fear principles at home V 3961 are experts at obfuscation N 3962 have purposes at times V 3962 cloud allure of concepts N 3964 developed technique for creating N 3964 creating plants for number V 3965 prevents production of pollen N 3966 prevent plant from fertilizing V 3969 have effect on production V 3969 is one of producers N 3971 are distance on plant V 3972 cut tassels of plant N 3973 sow row of plants N 3979 pulling organs of plants N 3982 deactivates anthers of flower N 3983 hurt growth of plant N 3984 get plants in numbers V 3985 attached gene for resistance N 3985 attached gene to gene V 3988 leaving field of plants N 3990 accommodate peculiarities of type N 3991 include corn among crops V 3992 obviate need for emasculation N 3992 costs producers about million V 3993 spurred research at number V 4001 create hybrids in crops V 4002 involves insects as carriers V 4006 is sign of divisiveness N 4009 was skirmish over timing N 4010 organize borrowing in Japan V 4011 play roles in financing V 4012 shows power of titans N 4014 raise dollars to 4 V 4016 block Wellington from raising V 4016 raising money in Japan V 4018 told reporters in Wellington V 4018 guaranteed loans to Ltd. V 4022 separate industries from each V 4025 seeking access to kinds N 4025 open them to brunt V 4028 stretch limits of businesses N 4029 started venture with Co. V 4029 use accounts like account V 4029 attracting wrath of banks N 4030 sells stocks to institutions V 4030 stirred anger of firms N 4035 named director at company N 4037 was director of division N 4046 's time for season N 4047 is debut of Association N 4048 begin season in stadiums V 4049 's swig of elixir N 4052 reclaim ballparks for training V 4054 's one for accountants N 4054 have beer with Fingers V 4057 field bunt from Kingman N 4058 's one for fans V 4059 stopped workout of Suns N 4059 slip cards to Man V 4060 join fans like Castro N 4061 is brainchild of developer N 4062 offering chance of season N 4063 made trip to Florida N 4066 be bridge into the N 4067 relive duels in sun V 4067 recapture camaraderie of seasons N 4070 left baseball in 1978 V 4075 take leave from selling N 4075 selling insurance in Texas V 4077 made appearance for Rangers V 4079 forced him to minors V 4080 's satisfaction in going V 4081 cut it after age V 4083 sipping beer after practice V 4083 repeating feat against White V 4084 dislike idea of attempting N 4087 be end of story N 4095 be lot of malice N 4102 savoring sound of drive N 4104 Expect stuff from pitchers V 4111 Stuffing wad of Man N 4111 Stuffing wad into cheek V 4120 holds % of franchise N 4120 has operations in Aiken V 4121 provides service in states V 4121 exercised right of refusal N 4121 following offer from party N 4121 acquire position in franchise N 4126 exchanged shares for each V 4128 appointed officer of chain N 4129 was officer of Inc. N 4131 are guide to levels N 4160 rose % in August V 4161 was % from level V 4162 is value of output N 4163 rose % from July V 4165 dropped % in September V 4166 reported decline in index N 4166 reported decline for September V 4167 dropped today from group V 4170 had losses in quarters V 4171 have exposure to loans N 4175 cleared way for war V 4175 remove obstacle to takeover N 4176 told House of Commons N 4176 relinquish share in company N 4177 restricts holding to % V 4179 fires pistol for contest V 4180 amass stakes in Jaguar N 4187 following suspension on London N 4188 were pence to pence V 4190 make move with offer V 4192 sent shares in weeks V 4195 put pressure on GM V 4195 make offer as knight V 4197 fight Ford for Jaguar V 4198 pays packet for Jaguar V 4200 be player in town V 4201 paying price for Jaguar V 4203 representing % of shares N 4211 ensure future for employees N 4211 provide return for shareholders V 4214 set howl of protests N 4214 accused administration of backing N 4216 shed issue before election V 4219 favor GM by allowing V 4219 preclude bid by Ford N 4220 answering questions from members N 4220 answering questions after announcement V 4223 completed formation of Elanco N 4223 combining businesses as business V 4224 be concern in America N 4224 be concern with projected V 4225 own % of venture N 4225 own % with holding V 4229 fighting offer by Partners N 4236 has background in management V 4240 retain rest of team N 4241 reported loss of 889,000 N 4244 fell % in September V 4245 shows signs of retreating N 4246 totaled 911,606 in September V 4247 rebounded Tuesday from losses V 4252 outnumbered 542 to 362 V 4256 feel need despite factors V 4257 declined 5.16 on Monday V 4263 showing strength despite slowdown V 4265 announced Monday in York V 4266 ended day at 2680 V 4267 sparked interest in companies N 4268 rose 40 to 2170 V 4269 gained 40 to 2210 V 4271 be losers by afternoon V 4272 rose yen to yen V 4273 fell yen to yen V 4274 waive share in maker N 4278 wants stock on books V 4279 reaching minimum of 2120.5 N 4279 reaching minimum of 2120.5 N 4283 abolish share in Jaguar N 4284 protect company from takeover V 4288 clarify approach to issues N 4301 rose % in September V 4302 leave index at 178.9 V 4304 were part of growth N 4304 were part with rise V 4305 linked gain to prices V 4306 being source of pressure N 4311 reflecting acquisitions from Corp. N 4311 licenses name to Metromedia V 4312 is provider of service N 4312 is provider with projected V 4313 has interests in telecommunications V 4314 rose % in months V 4314 matching target for year N 4317 projecting increase for year V 4318 won contract from Service V 4319 install 267 of machines N 4322 succeed Brissette as officer V 4323 be consultant to company N 4329 adjusted payouts on CDs N 4329 adjusted payouts in week V 4340 added point to % V 4341 attributed rise to increase V 4346 have yields on CDs V 4349 was attendee at convention N 4350 introduce bit into itinerary V 4351 embody state of blase N 4351 finding machine in Paris V 4351 having none of it N 4361 held all for people V 4362 Feeling naggings of imperative N 4363 tell you about ballooning V 4363 requires zip in way V 4376 was turn in balloon N 4376 followed progress from car V 4379 put hands above eyes V 4384 heating air with burner V 4387 is sense of motion N 4389 was member of convention N 4391 lifted 12-inches above level N 4392 plunged us into drink V 4396 enlisted aid of farmer N 4397 disassemble half-an-hour of activity N 4406 drive value of dollar N 4406 minimize damage from drop N 4407 provoked fall in currency N 4410 push dollar against fundamentals V 4417 is growth in Germany N 4421 provides funding for acquisitions V 4424 affect security of Europe N 4424 affect security for years V 4427 examine implications of options N 4428 keep weapons on soil V 4429 increase possibility of attack N 4429 retains force of weapons N 4429 retains force in Europe V 4430 provide answers to questions N 4431 bringing forces to parity V 4432 have months under timetable V 4435 complicated issue by offering V 4436 has tanks in Europe V 4445 overstating arsenals in hopes V 4450 visited talks in Vienna N 4453 announced contract with Inc. N 4460 Including those in programs N 4460 were 143,800 without employment V 4464 boost volume in Singapore V 4464 discussing venture with Ltd. N 4465 be the in expansion N 4466 put million into bottling V 4471 have proportions of youths N 4473 taken stake in ventures V 4475 be case in Singapore V 4477 combining drinks with Coca-Cola V 4478 has interests in products V 4478 holds licenses for Brunei N 4480 is direction of talks N 4481 needs approval from boards V 4482 increased % to cents V 4483 follows report of earnings N 4483 sharing growth with shareholders V 4484 is company with businesses N 4486 strengthen control of A. N 4486 admit Khan as shareholder V 4487 owns % of shares N 4487 owns % of Fiat N 4488 trade shares in IFI N 4488 trade shares for shares V 4488 give control of % N 4489 trade some of stake N 4489 trade some for % V 4490 have rights in assemblies V 4491 owns % of capital N 4492 control % of shares N 4496 strengthens links between Agnellis N 4496 goes sailing with Agnelli V 4498 bought stake in Alisarda N 4499 keeping stake in Fiat N 4499 keeping stake despite tree V 4499 playing role in group N 4500 raised financing of lire N 4500 raised financing for purchase V 4500 selling chunk of shares N 4500 selling chunk to S.p V 4501 sell shares to Agnelli V 4502 riding railbikes on tracks V 4502 was disservice to readers N 4504 treats activities in fashion V 4506 provide services to Inc V 4507 opening way for boost N 4508 ended impasse between House N 4512 pay wage for days V 4513 includes concept of wage N 4514 be part of laws N 4515 made compromise on length N 4516 lifted wage to 4.55 V 4517 boosting floor to 4.25 V 4519 was way of allowing N 4521 opposing rise for workers N 4521 opposing rise at time V 4523 ranking member of Committee N 4524 vote week on compromise V 4527 held feet to fire V 4528 yielded deal on size V 4532 lowered ratings on billion N 4532 lowered ratings because levels V 4533 is unit of Inc. N 4535 managing risks of 2 N 4538 retains title of officer N 4539 sell operations to Inc V 4541 faced threat from family N 4541 faced threat since July V 4543 own stake in company N 4544 use proceeds of sale N 4545 had sales of million N 4546 manufacturing carpet since 1967 V 4547 make products with dyes N 4550 has sales of billion N 4550 boost profitability of brands N 4551 closed ex-dividend at 26.125 V 4554 including gain of million N 4556 sell unit to subsidiary V 4558 close sale of unit N 4558 close sale in November V 4559 rose % in September V 4559 offered information on degree N 4560 climbed % in August V 4560 lend support to view V 4562 provides information on economy N 4564 plunged % in September V 4566 followed months for sales N 4566 had effect on market V 4567 was the since drop V 4571 got boost in September V 4575 track health of sector N 4579 keep inflation-fighting as priority V 4582 are contributions of components N 4585 take charge against earnings N 4585 take charge in quarter V 4587 limits increases for years V 4587 ties charges to customers N 4587 ties charges to performance V 4596 auction million in maturity N 4596 auction million next Tuesday V 4597 writing thriller about spy-chasing N 4601 described himself as Hippie V 4601 including marriage to sweetheart N 4602 combining wordplay with detail V 4603 spins tale of efforts N 4604 was arrest by authorities N 4604 stealing information from computers V 4604 selling it to KGB V 4606 pay two for some V 4608 draws title from habit V 4608 laying eggs in nests V 4609 do tricks with system V 4610 substitute program for one V 4611 become super-user with access N 4612 scanning heavens at observatory V 4613 discovered discrepancy in charges N 4613 traced it to user V 4616 became obsession for Stoll V 4617 made requisition of all N 4618 taken account of user N 4621 using Berkeley as stones V 4624 drag keychain across terminal V 4627 learns lot from book V 4631 took interest in hunt N 4631 tracing hacker to Germany V 4633 brief officers on theft V 4634 savored humor of appearance N 4639 is editor of Journal N 4641 supply computers to Corp. V 4641 sell machines under label V 4642 cost 150,000 for system V 4643 processes instructions per second N 4643 uses chip unlike machines V 4647 is part of effort N 4647 establish itself as supplier V 4649 is company than company V 4650 is boon for Mips N 4650 battles concerns for market V 4652 expects revenue of million N 4652 attract developers to architecture V 4655 supply computers to AG V 4656 make chips under license V 4660 expects sales of systems N 4661 sell versions of machine N 4667 are arms of Congress N 4667 raise capital through debt V 4668 raise cash for bailout N 4670 meeting targets in law N 4674 add billions to costs V 4675 allow level of borrowing N 4675 allow level without approval V 4676 merge hundreds of thrifts N 4676 merge hundreds over years V 4680 reduce costs of bailout N 4681 distort process by requiring V 4683 dump assets through sales V 4684 build system from County V 4686 connect Basin with pipelines V 4688 're chef of restaurant N 4692 took money from wallet V 4693 considered inventor of style N 4693 make month in advance N 4693 subjected diners to cream V 4697 puts pressure on planners V 4699 kept copy of notes N 4699 received support from Dozen V 4699 keep meringues from weeping V 4700 reinvent recipes from scratch V 4703 named slate of officers N 4703 follows replacement of directors N 4709 was president of division N 4711 assuming duties of Weekes N 4712 was another of directors N 4714 boosted dividend to cents V 4716 be 3 to stock N 4717 raise number of shares N 4717 raise number to million V 4718 rose % to million V 4721 completed sale of acres N 4722 includes swap of interests N 4724 pay million in payments N 4724 repay million in funds N 4725 exercise remedies against Healthcare N 4725 exercise remedies during period V 4726 be million in arrears V 4728 make payments of million N 4728 make payments to HealthVest V 4729 owes million in payments N 4730 ease bind at HealthVest N 4731 paid two of banks N 4731 paid two in October V 4732 purchased warrants for 500,000 V 4734 recognized concept as one V 4735 listed creation of fund N 4735 listed creation as one V 4745 reflects vulnerability of communities N 4746 indicted him on array V 4746 alleging years of oppression N 4748 extorted cash from lawyers V 4748 muscled loans from banks V 4749 owned interest in distributorship N 4749 presented conflict of interest N 4749 maintained accounts in banks V 4750 made demands on staff V 4751 chauffeur him to work V 4752 double-crossed him by reneging V 4754 find judge in underwear V 4755 called her to office V 4755 wearing nothing at all N 4757 blames indictment on feuding V 4759 pushed buttons into action V 4760 provide testimony to power V 4762 bring business to courthouse V 4764 mount challenges against him N 4765 been fixture in community N 4765 been fixture for decades V 4766 put himself through University V 4768 had the of daughters N 4769 married daughter of clerk N 4770 called one of judges N 4771 had share of accomplishments N 4773 voted president of Conference N 4773 voted president by judges V 4774 considered times for appointments V 4775 rated one of the N 4775 rated him after interviewing V 4778 grasp issue with blink V 4780 be bedrock of society N 4782 had inkling of anything N 4782 had inkling in Ebensburg V 4786 shelled 500 in loans N 4786 shelled 500 to judge V 4787 made pretense of repaying N 4789 won verdict in case N 4789 won verdict in 1983 V 4795 had dealings with judge V 4798 is matter of biting N 4801 sipped tea from chair V 4801 take hats in courtroom V 4802 jailed members of Board N 4802 jailed members for hours V 4802 extend year by weeks V 4805 told salesman in Ebensburg N 4805 bought Sunbird in 1984 V 4806 recorded sale under name V 4810 dispute view in light V 4811 launched investigation into corruption N 4814 bought Sunbird from Pontiac-Cadillac V 4814 had apprehensions about reputation N 4818 wrote bank on stationery V 4822 find myself in relationship V 4826 been part of deal N 4827 got treatment from bank V 4830 lowering rate by % V 4831 defend himself at trial V 4840 was example of muse N 4841 await resiliency as metaphors N 4844 uses tons of newsprint N 4846 being component of waste N 4848 increase use of paper N 4850 approves this as date V 4851 approved creation of class N 4858 give value of 101 N 4861 float % above rate V 4870 yield % with coupon V 4878 represents spread to Treasury N 4881 is % to % N 4882 yield % with coupon V 4883 have life of years N 4887 buy shares at premium V 4888 indicating coupon via Ltd V 4889 buy shares at premium V 4890 yield % via Ltd V 4893 yield % via International V 4896 expects sales of marks N 4897 has operations in Belgium V 4898 strengthen position in Community N 4898 assure presence in market N 4901 leave EG&G with stake V 4902 is lab in England N 4902 is lab with revenue V 4903 including Institutes of Health N 4906 broke negotiations with Hunt N 4907 removes obstacle in way N 4907 heard year in Washington V 4909 turned settlement between Hunt N 4910 seeking claim of million N 4911 allow claim of million N 4912 appeal decision to court V 4913 get % of proceeds N 4923 snap properties in U.S. N 4923 snap properties from courses V 4924 marks change for Japanese N 4930 be buyer of securities N 4930 double purchases to an V 4931 channel tens of billions N 4931 channel tens into market V 4934 drive rates on securities N 4940 are investment of choice N 4945 dipped toes into market V 4946 buy bonds before maturity V 4947 's headache for investors N 4947 forces them at rates V 4950 Compounding trouble to investors N 4953 lose touch with issuers V 4954 buy mortgages from banks V 4955 took all of Conduits N 4956 reduced effects of risk N 4960 buy stock of corporation N 4960 buy stock at discount V 4962 pursue interests of corporation N 4963 experienced appreciation than corporations N 4963 experienced appreciation during years V 4966 evaluate pills on basis V 4967 have team with record N 4968 have strategy for improving N 4968 require implementation over period V 4969 improve chances for management N 4972 be CEO in years V 4973 be strategy in years V 4976 have opportunity at time V 4977 received settlement from Texaco V 4978 covers years in order V 4978 put proceeds in manner V 4983 evaluate pill within context V 4986 win election to board N 4987 filed lawsuits in Court V 4988 elected slate of nominees N 4988 elected slate to board V 4990 was sequel to meeting N 4990 disallowed proxies in favor V 4993 seeks dollars from Express V 4996 is company with interests N 5000 Buying % of Inc. N 5000 entering relationship with owner V 5002 become owner of company N 5002 become owner at time V 5003 dismissing threat of backlash N 5008 encourage flow of investment N 5012 paid million for Tower V 5014 taken warnings by leaders N 5014 taken warnings to heart V 5017 win support from sides V 5019 found similarity in philosophies N 5020 taking place on board N 5022 found match in Estate V 5023 is firm in Japan N 5024 is meters of property N 5025 acquired property from government V 5025 was portion of land N 5026 opened doors to world V 5027 built development in exchange V 5028 was step in relationship N 5028 earned moniker of title N 5029 is one of dozens N 5030 had need for ventures V 5031 rise % to % N 5031 rise % from turnover V 5032 jumped % to yen V 5033 catapult it into business V 5035 is purchase for Estate N 5037 make dent in finances V 5042 is landowner of project N 5043 is one of group N 5045 redevelop Marunouchi into center V 5046 becoming partners in number N 5046 becoming partners as part V 5047 blocking Guber from taking V 5047 taking posts at Inc N 5049 acquiring Columbia in transactions V 5050 filed suit against Sony V 5051 make movies at studio V 5052 hurled accusations of duplicity N 5052 hurled accusations at each V 5053 continued talks over weeks V 5055 get cash in settlement V 5057 surpassed Sony as company V 5057 have club like CBS N 5058 involving rights to movies N 5059 swap stake in studio N 5059 swap stake in exchange V 5062 accused Ross of having N 5063 be officer of Warner N 5063 started number of businesses N 5063 started number in Japan V 5064 enjoys relationships with executives V 5066 be executive of Warner N 5066 be executive alongside Ross V 5066 have ego at stake V 5069 fulfill terms of contract N 5070 exclude Guber from any V 5071 have projects in stages V 5072 get hands on some V 5072 develop hundreds of movies N 5072 produce 10 to 20 N 5075 get piece of profits N 5075 gets revenue from movies V 5076 own stake in Guber-Peters N 5077 paid 500,000 in fines N 5078 marks end of part N 5079 is subject of investigation N 5079 cover accounting for parts N 5081 is step in investigation N 5082 charge any of 500,000 N 5082 charge any to customers V 5082 take action against employees V 5082 provided information during inquiry V 5088 made contributions from 1982 V 5088 submitted bills to Power V 5089 hiding nature of payments N 5089 hiding nature from Service V 5090 was mastermind behind use N 5090 make payments to candidates V 5091 following the of irregularities N 5093 rose cents to 27.125 V 5095 launched promotion for brand V 5096 send labels from bottles N 5096 receive upgrade in seating N 5097 purchase items at prices V 5101 question impact on image N 5103 has image of something N 5105 offered miles in exchange V 5106 gave discounts on merchandise N 5106 gave discounts to people V 5108 is leg of plan N 5110 buy bottles over period V 5113 Concocts Milk For Tastes N 5114 trimming content of products N 5116 formed venture with distributor V 5117 has content of % N 5120 sells milk than milks N 5120 sells milk in markets V 5121 tested milk with butterfat N 5121 tested milk in South V 5122 selling Fresca in bodegas V 5123 adding 15 to outlets N 5129 lost space in stores V 5134 increase share of business N 5134 launching lines with fanfare V 5138 nixed promotion for pins N 5140 included cutouts of finery N 5142 advise customers on styles V 5143 motivate people with commissions V 5146 shown interest in packages V 5147 introduced versions of products N 5147 introduced versions in Canada V 5147 bring them to U.S. V 5152 pursuing counterclaims against each N 5156 reset arguments for today V 5158 set slats for takeoff V 5160 was Cichan of Tempe N 5162 remains man behind operation V 5164 convert millions of Americans N 5164 convert millions to brand V 5164 plays role of messiah N 5164 make part of theocracy N 5167 build infrastructure for movement V 5168 move movement to Europe V 5174 organized rally in 1976 V 5174 were members in U.S. V 5176 is result of graying N 5177 remained faithful to Moon N 5177 producing members by procreation V 5178 is matter of contention N 5183 employing followers at wages V 5183 producing everything from rifles N 5186 illustrate scope of drain N 5192 attracted guests in years V 5194 published three of books N 5195 developing empire in East V 5196 told me in interview V 5203 negotiated venture with government N 5203 build plant in Province V 5204 put million for years V 5204 keep profits in China V 5207 is co-author with Bromley N 5208 include sale of Corp. N 5210 compensate victims of diseases N 5210 receive billion from Manville V 5212 considering sale of holdings N 5212 has right of refusal N 5213 pay trust for majority V 5218 reached % in Azerbaijan V 5219 are republics along border N 5219 reported rioting in months V 5221 gave estimate for unemployment N 5225 owns half of one N 5225 cutting % to million V 5226 interrogated week by judiciary V 5227 provoked closure of markets N 5227 provoked closure in June V 5227 blamed predicament on president V 5227 raised margin on transactions N 5228 ousted residents from panel V 5228 drafting constitution for colony N 5229 condemned crackdown on movement N 5230 nullify declaration on Kong N 5232 discussed purchase of reactor N 5233 sell reactor to Israel V 5235 establishing relations with Poland V 5237 loan money to Warsaw V 5238 established relations with Hungary V 5239 hold auction with bidders V 5240 opening swaps to investors V 5242 authorized worth of proposals N 5244 submit bids on percentage N 5245 set floor on bidding V 5249 deprive troublemakers of cards N 5253 fled Philippines for Hawaii V 5257 block requests for records N 5259 involved accounts in Philippines N 5263 fostering harmony in marriage V 5265 protects communications between spouses N 5267 violate right against self-incrimination N 5273 announce venture in Tokyo V 5274 open office in Tokyo V 5275 advising them on matters V 5276 advise clients on law V 5277 provide shopping for institutions V 5277 seeking advice on access N 5279 tap resources of lawyers N 5279 tap resources as members V 5281 maintain association with Office N 5282 seek rehearing of ruling N 5284 seeking hearing by panel N 5285 sued state in 1985 V 5285 segregated classifications by sex V 5285 paid employees in jobs N 5285 paid employees in jobs N 5286 applied standards in manner V 5288 is representative for employees N 5292 color-coding licenses of offenders N 5293 order licenses as condition V 5295 be embarrassment to teenagers N 5296 recognize problem as issue V 5298 block acquisition of % N 5298 put airline under control V 5299 faces threat from Bush N 5300 block purchase of airline N 5304 governed meetings at center N 5307 abolished steps in revolution N 5311 opened dormitory for employees N 5311 opened dormitory at center V 5312 had lots of debate N 5312 had lots about one V 5313 follow voice of generation N 5316 holds lessons for companies N 5318 set tone in 1986 V 5319 is time of self-criticism N 5320 took helm as president V 5323 dropping year by year N 5323 dropping year since beginning V 5326 Consider experience of Kitada N 5326 joined Nissan in 1982 V 5332 transferred workers to dealerships V 5333 ordered everyone from executives N 5333 visit parts of Tokyo N 5335 check restaurant in city V 5338 visited headquarters in district N 5339 liked display of trucks N 5343 handled die-hards in fashion N 5345 replaced body with lines V 5346 launched versions of coupe N 5349 outselling predecessors by margins V 5350 grabbed attention with minicars V 5352 's list for car N 5354 develop restaurant with vehicles V 5355 sells items as clocks N 5357 had % of market N 5357 had % in 1980 V 5358 leave it below position V 5359 recoup losses in Japan N 5359 recoup losses until 1995 V 5361 unleashes batch of cars N 5362 grabbed % of market N 5363 brings Nissan to share V 5363 leaves company behind high V 5365 are vehicles with potential N 5367 start fall with version V 5370 start 749 below model N 5376 launches division on 8 V 5381 sending 2,000 to U.S. V 5381 keeping rest for sale V 5382 sell sedans in U.S. V 5385 is move for century N 5386 add models next year V 5386 bringing total to four V 5386 show profits for years V 5388 lost money on operations V 5390 earn yen in year V 5390 earn increase of % N 5392 represented % of sales N 5394 building vehicles in three V 5396 include subsidiaries for manufacturing N 5397 beat effort with tactics V 5400 prevent return to rigidity N 5402 are way through turnaround N 5404 form venture with Azoff V 5405 provide financing for venture V 5407 is part of Inc. N 5408 discussing venture with MCA V 5410 hold meeting in December V 5410 give leaders at home V 5411 be expectation of agreements N 5412 conducting diplomacy through meetings V 5413 alternating days of meetings N 5413 alternating days between vessel V 5414 disrupt plans for summit N 5415 told reporters at House N 5416 discuss range of issues N 5416 discuss range without agenda V 5417 pay dividends for leaders V 5418 needs diversion from problems N 5419 bolster stature among academics N 5422 been critic of handling N 5424 limit participation to groups V 5425 doing it in manner V 5425 have time without press V 5426 hold summit in summer V 5429 mentioned advice to Moscow N 5429 mentioned advice as topic V 5430 drop restrictions on trade N 5431 told group of businessmen N 5431 sign agreement with U.S. N 5431 sign agreement at summit V 5432 lower tariffs on exports N 5433 lost jobs as result V 5434 start system of benefits N 5435 be initiatives on economy N 5436 take this as opening V 5442 given setting at sea N 5443 been one for officials V 5445 avoid comparisons with gathering N 5446 sent shivers through alliance V 5446 discussing elimination of weapons N 5447 initiated talks with Soviets N 5448 reach officials until days V 5450 open dialogue with Gorbachev N 5452 precede summit next year N 5454 marking quantification of costs N 5455 taken commitments without approval V 5456 filed charges against manager V 5456 alleging breach of duties N 5457 improve controls on branches N 5460 improve controls on branches N 5461 dragging protesters from thoroughfare V 5463 provided beginning to disobedience N 5464 instigated campaigns of resistance N 5464 instigated campaigns against government V 5466 am proponent of everything N 5467 have recourse to box V 5472 equate demonstrations with disobedience V 5473 is difference between them V 5476 make remarks about demonstrations N 5477 call attention to grievances V 5478 encourages overuse of slogans N 5481 leave site of grievance N 5482 attach themselves like remora V 5482 use protest as excuse V 5486 find harm in misdemeanors V 5490 protest speeding on road N 5496 airing program with audience N 5497 generated deal of rancor N 5497 generated deal amid groups V 5498 chain themselves in front V 5499 refund money to advertisers V 5500 impair rights of others N 5501 be case of chickens N 5504 does damage to nation V 5505 disobey call to arms N 5505 disobey call during war V 5506 threw burdens on those V 5507 giving comfort to propagandists V 5509 administer infamy upon those V 5510 healing wounds of nation N 5510 pardoned thousands of evaders N 5510 giving dignity to allegations V 5511 avoid danger of combat N 5512 point visibility of disobedience N 5513 cover breaking of law N 5514 brings motives of those N 5516 is rule of thumb N 5519 was president of U.S. N 5519 was president from 1969 V 5520 back increase in tax N 5520 raise million for relief V 5521 cover part of billion N 5526 damage chances of initiative N 5527 posted gain in income N 5529 rose % to billion V 5530 attributed gain to improved V 5535 rose % to million V 5536 rose % to billion V 5539 update criteria for enforcement N 5543 make inquiries about items N 5550 is candidate for enactment N 5550 is candidate if time V 5551 wants changes for one N 5553 retain force as deterrents V 5555 protect rights in collection V 5557 enacted law in 1988 V 5559 urging legislation in states V 5560 advises Council of Chambers N 5561 affecting kinds of taxpayers N 5562 seeks uniformity among states N 5564 stays cents for mile V 5569 provide treatment for growers V 5571 weighs deductions of costs N 5572 see functions in case V 5573 raised cattle for four V 5573 made profit on either V 5575 managed horse-breeding in way V 5575 enhanced experience by consulting V 5576 took care with cattle V 5576 seek counsel about them V 5577 deduct 30,180 of losses N 5577 rejected 12,275 in deductions N 5578 doing audits of returns N 5579 name Kirkendall to post V 5579 has responsibilities for IRS V 5581 awarded pilots between million V 5585 have effect on plan V 5588 leave lot of leeway N 5589 pursue grievance before arbitrator V 5597 received approval in July V 5600 was part of agreement N 5601 took control of Eastern N 5602 triggered raise for them V 5611 slashing commissions to delight V 5616 owe vote of thanks N 5617 is move for Spielvogel N 5618 counted some of advertisers N 5619 helped Nissan for example V 5620 prove mine for agency N 5621 done searches over 40 N 5621 done searches for clients V 5622 given seminars at agencies V 5623 do consulting at agency N 5623 do consulting in hopes V 5624 been involvement with clients N 5625 invites them to parties V 5627 has degree of intimacy N 5627 has degree with clients V 5631 merging it with outfit V 5633 becoming consultant in 1974 V 5633 was executive at Co V 5635 spent million on time V 5641 's reason for job N 5642 struck me as way V 5644 determine mix of promotion N 5646 helped Morgan in search V 5646 has relationship with Hyundai V 5649 use tool of communications N 5651 called Achenbaum in speech V 5656 was critic of acquisition N 5658 calls Fabric of Lives N 5659 Take Comfort in Cotton V 5659 marks end of efforts N 5662 making plea for reaction N 5663 spend million on broadcasting V 5666 was officer of Group N 5666 created ads for market V 5670 rose % to million V 5671 increased % to million V 5674 discussing state of Asia N 5674 discussing state with reporters V 5676 feared plurality of views N 5679 build team of economists N 5684 is one of inefficiency N 5686 face conflict between desire N 5690 keep situation for years V 5690 sustain growth by themselves V 5694 discussed 7 at meeting V 5704 use facilities in Singapore N 5704 preserve presence in region N 5711 lorded it over me V 5715 show serials on network V 5717 's passion about being N 5722 fill part of gap N 5725 share views of America N 5732 get Rouge as part V 5735 made use of Rouge N 5736 is president of Group N 5737 is editor of Journal N 5738 cut tumor at Clinic V 5740 indicating damage to tissue N 5745 holding promise of surgery N 5745 improve diagnosis of disorders N 5746 thrusting window to workings N 5747 induce whirlwinds of electricity N 5747 induce whirlwinds within brain V 5750 conducting tests with devices V 5753 produced flashes of light N 5753 produced flashes in field V 5754 stimulate nerves in hand N 5756 developed magnet for stimulation N 5758 reported studies on everything N 5759 use devices in surgery V 5763 is sign after injury V 5764 retrieve function in people N 5766 studied stimulators at University V 5767 is increase in hormone N 5768 conducted hours of tests N 5768 conducted hours on themselves V 5769 sell versions of devices N 5771 use probes for studies V 5772 testing stimulators in conjunction V 5772 prevent wasting of muscles N 5776 reorganizes resources after amputation V 5778 exploring perception with machines V 5779 flash groups of letters N 5779 flash groups on screen V 5781 seeing group of letters N 5783 suggesting kinds of theories N 5783 processes signals from eyes N 5788 developing films of superconductors N 5788 developing films for use V 5789 conduct electricity without resistance V 5791 bolsters portfolio of investments N 5793 pay million for rights V 5795 is one of three N 5795 speed transfer of superconductors N 5796 issued million of securities N 5799 pay interest for months V 5800 is years with payment V 5802 sell portion of receivables N 5802 sell portion to unit V 5802 transfer them to trust V 5806 buck newcomers with tale V 5807 took man with qualities N 5810 set shop in state V 5811 be one of tasks N 5811 takes office as governor V 5817 is % of all N 5819 sends children to school V 5820 finagled loan from government V 5822 faces elections in 1991 V 5824 consume amounts of exchange N 5831 be five to years N 5833 be presumption in sectors N 5833 is lot of money N 5835 is result of unfamiliarity N 5836 takes while for them N 5837 sending number of missions N 5837 sending number to Japan V 5840 get law through congress V 5841 allow ownership in industries N 5842 made use of semantics N 5843 give certainty to bosses V 5844 cites case of customer N 5844 build complex in Baja V 5845 develop beach through trust V 5846 catching eye of Japan N 5849 be protectionism from U.S. N 5849 crack market through door V 5850 toned assessments of performance N 5851 polled week by Service V 5853 forecast rebound after Year N 5858 puts dollar at end V 5862 expects cuts in rates N 5862 expects cuts in effort V 5862 encourage narrowing of gap N 5862 ensure landing in economy V 5864 charge each on loans V 5865 predicted cut in rate N 5866 charges banks for loans V 5866 using securities as collateral V 5869 marked tumble since slide N 5871 raised rates by point V 5873 raised rate by point V 5874 is rate on loans N 5875 knocking funds from % V 5878 holding securities in term V 5883 relax rates in Germany N 5885 dragging dollar to marks V 5887 'm one of bears N 5889 fits description of bear N 5891 seeing culmination of all N 5893 take line in statement V 5895 dropped 3.10 to 374.70 V 5899 repeal tax on transactions N 5900 repeal tax on purchase N 5905 loses elections in 1990 N 5907 accept wage over years V 5915 cleared Edelson of allegations N 5918 be manager for products N 5919 take position in management N 5920 return calls for comment N 5921 took charge in quarter N 5924 calculating prices on agreements N 5925 restated value of contracts N 5927 pays fee to bank V 5930 was force in field N 5938 acquired treasure-trove of Americana N 5939 offering Rewards for Arrest N 5940 founded company in Chicago V 5943 be shortcut to growth N 5943 bring host of problems N 5944 cleared lot of nests N 5945 started career as investigator V 5945 built Protection from firm V 5946 joined firm in 1963 V 5946 bought it from owners V 5947 opened offices around country V 5948 provided security for Olympics N 5948 have recognition of Pinkerton N 5951 acquire staff of employees N 5951 spent careers with firm V 5952 spent career in business V 5961 locked itself into contracts V 5961 win business with hope V 5963 doing work of three N 5966 divesting itself of million V 5968 closing 120 of offices N 5968 closing 120 in months V 5970 is building across street N 5972 making money for company V 5973 had loss of million N 5974 pay million of debt N 5974 pay million within years V 5975 borrow million of debt N 5979 filed suit in court V 5980 misrepresented condition of Pinkerton N 5980 registered trademark in Kingdom V 5980 tell Protection about controversies V 5981 concerning sale of company N 5981 have liability under contract V 5983 's case of watch N 5985 damaged Pinkerton in amount V 5985 deprived it of artifact N 5987 renewing emphasis on investigations N 5988 been the of two N 5993 averaged 14.50 for pounds V 5994 rose % in October V 5995 fell cents in October V 5995 rose cents to cents V 5997 rose 3.40 to 46.80 V 5997 slipped cents to 67.40 V 5997 dropped cents to 90.20 V 5998 averaged 3.61 for pounds N 5999 completed sale of subsidiary N 6000 sell unit in July V 6000 realize proceeds from sale N 6003 operate Associates as entity V 6004 has billion in assets N 6004 making it in terms N 6005 sell billion of assets N 6005 use some of proceeds N 6005 buy % of shares N 6005 buy % for 70 V 6007 Describing itself as asset V 6010 ward attempt by concerns N 6011 launched offer for Containers N 6012 sweetened offer to share V 6014 sent shares to 62 V 6018 tender any of shares N 6018 tender any under offer V 6021 make decision on 27 V 6022 set date for meeting N 6022 seek approval for offer N 6026 enlarge control of pot N 6028 raise ceiling to 124,875 V 6029 does that at cost V 6031 lost billion in defaults N 6033 begin hearings next week V 6038 leaving taxpayers with losses V 6044 view discrediting of HUD N 6044 view discrediting as chance V 6044 shove slate of projects N 6046 were subject of hearing N 6050 looking practices of colleagues N 6054 submitted package of reforms N 6057 sell facilities to Ltd. V 6059 have effect on company V 6060 is part of restructuring N 6060 downsized operations in countries N 6064 halves deficit with cuts V 6064 improve supplies to consumers V 6066 raise prices of beer N 6071 proposed cut in budget N 6071 proposed cut as cuts V 6086 took loss from discontinued N 6086 took loss in quarter V 6087 expect impact from restructuring V 6088 had loss of million N 6089 had profit from operations N 6090 gained % to million V 6091 offer % to % N 6091 offer % through offering V 6093 hold shares of company N 6093 hold shares after the V 6094 finding interest from quarter V 6096 lead some of us N 6096 re-examine positions with respect N 6097 driven business to consensus V 6098 provide care to Americans V 6099 is way from program N 6102 taking initiative on issues N 6105 provide level of insurance N 6105 provide level to workers V 6109 equal % of GNP N 6111 add 700 to price V 6111 add 300 to 500 N 6112 eroding standards of living N 6113 deflect costs to workers V 6114 are issues in strikes N 6122 boosted benefits for the N 6123 present plans by 1 V 6124 taking look at economics N 6127 be window for action N 6130 limit availability of care N 6131 measure effectiveness of treatments N 6135 slow rise in spending N 6135 reduce use of services N 6139 impose budgets as way V 6140 build support for overhaul N 6141 moving operations to facility V 6144 estimate impact of closures N 6145 employ 500 of employees N 6147 lease building in Brantford N 6147 spend dollars on facility V 6149 acquire Bancorp. for stock V 6152 is parent of Bank N 6152 has offices at Grove V 6156 consider offer in course V 6160 bid stock above bid V 6165 spur wave of takeovers N 6165 involving companies as Corp. N 6166 ends taboo on bids N 6174 had sales of billion N 6180 double debt of billion N 6181 be drag on earnings N 6181 exceeds value of billion N 6182 allow savings in ways N 6188 realize savings of tens N 6189 see this as time V 6190 finance acquisition with debt V 6201 filed lawsuit in court V 6202 take 90 to days N 6202 affect provisions of law N 6204 putting pencil to paper V 6206 make bid for Nekoosa N 6209 jumped 1.50 to 27.50 V 6210 be flurry of takeovers N 6211 expect company with pockets N 6213 given attractiveness of flows N 6213 given attractiveness as consolidation V 6213 be bids for companies N 6213 be bids within months V 6215 open door to era N 6225 granted approval for drug N 6228 returns heart to rhythm V 6229 licensed it to Lyphomed V 6230 rose % in quarter V 6234 's one at all V 6235 underscored severity of problem N 6237 climbed % in period V 6239 rose % in months V 6243 rose % in quarter V 6247 rose % in quarter V 6251 dismissing employees as part V 6251 producing savings of million N 6256 abandoning pursuit of Mesa N 6257 has stake in Mesa N 6257 make offer to shareholders V 6258 acquiring Mesa for 7 V 6258 acquiring share of series N 6259 rejected proposal from StatesWest N 6259 combine carriers in way V 6260 serves cities in California N 6264 drive Average to 2645.08 V 6265 drew strength from climb V 6268 soared 20.125 to 62.875 V 6270 fell 2.50 to 50.875 V 6271 played role in rally V 6274 are plenty of worries N 6275 is concern of analysts N 6277 had impact on markets N 6278 prompt investors into action V 6279 showed activity in part N 6280 confirms pickup in sector N 6282 announce details of operation N 6293 rose % to francs V 6294 specify reasons for gain N 6296 had profit of francs N 6297 forecast revenue of francs N 6298 completed acquisition of Cos. N 6298 completed acquisition for million V 6299 pay 19 for each N 6300 brings competitors to Inc. N 6300 reaches viewers than company N 6301 had sales of billion N 6303 had loss of million N 6304 earned million in quarter V 6307 removing million in will N 6307 removing million from books V 6307 issuing million in stock N 6307 commencing offer for million N 6308 charged million against earnings V 6308 added million to reserves V 6308 established reserve for portfolio V 6310 put name in commercials V 6310 advertising brand on television V 6312 drawing fire from advocates V 6313 became company with acquisition V 6315 spend million on campaign V 6317 taking Bill of theme N 6317 taking Bill to airwaves V 6318 promoting sponsorship of arts N 6321 trumpets themes of liberty N 6321 have appeal for smokers V 6322 defend rights of smokers N 6322 defend rights with arguments V 6323 purchase innocence by association V 6324 portraying itself at heart V 6331 get wagons in circle V 6332 drape yourself in flag V 6335 sent videotapes to consumers V 6338 borrow some of legitimacy N 6340 surged 4.26 to 455.63 V 6342 outpaced decliners by 1,120 V 6343 lagged rise in issues N 6346 rose 7.08 to 445.23 V 6347 added 2.19 to 447.76 V 6351 added 1 to 81 V 6351 rose 1 to 1 V 6354 bore brunt of sell-off N 6366 taken hit from slowdown V 6369 served group in trading V 6370 tracks stocks with Index V 6370 appreciated % in months V 6371 tracks companies as subset V 6372 contains companies with revenues N 6372 gained % by 30 V 6374 rose 0.17 to 432.78 V 6375 trades stocks for Hutton V 6378 scour report for clues V 6381 handled bulk of trades N 6381 handled bulk in market V 6383 climbed 3 to 13 V 6384 waive share in maker N 6385 removes government as impediment V 6387 surged 3 to 6 V 6389 added 1 to 43 V 6390 toted million in contracts N 6391 announced contract with bank N 6392 received contract from Lambert V 6393 slid 1 to 24 V 6394 delaying approval of acquisition N 6394 pending outcome of examination N 6396 gained 3 to 16 V 6396 buy Associates for cash V 6398 provide services to industry V 6399 suffered losses in sessions V 6399 surged 1 to 49 V 6400 following bid for Nekoosa N 6401 won approval from House N 6401 including funds for station N 6403 put resistance from interests N 6404 declined vote on ban N 6404 covers all but fraction N 6408 is vehicle for billion N 6409 seek waiver in hopes V 6411 includes spending for programs N 6414 gives authority to Department V 6414 facilitate refinancing of loans N 6415 met resistance from bankers N 6416 forge partnership between Kemp N 6417 grow % to billion V 6419 imposing cap of billion N 6419 give NASA for start-up V 6420 bring appropriations to billion V 6422 make room for programs N 6422 drive spending into 1991 V 6423 raising obstacles to bills N 6424 get attention on anything N 6425 maintain service for communities V 6429 exceed cost of ticket N 6431 given number of users N 6433 provoked fights with Committee V 6433 protects prerogatives over operations N 6434 breed confusion in absence V 6436 was intrusion on powers N 6437 arranged facility with Bank V 6438 consolidate million of debt N 6438 repurchase million of shares N 6438 purchase interest in properties N 6438 purchase interest from one V 6440 carries rate of point N 6440 carries rate with % V 6441 put all of properties N 6441 put all as collateral V 6442 given contract for aircraft N 6443 received contract for trainer N 6444 won million in contracts N 6445 given contract for equipment N 6446 received contract for research N 6447 got contract for trousers N 6450 had value of billion N 6454 owning % of stock N 6456 contemplating sale of estate N 6457 sell interest in unit N 6457 sell interest to System V 6462 have value of billion N 6463 including stake in pipeline N 6463 puts cash at billion V 6464 has billion in debt N 6468 spin remainder of unit N 6468 do the with assets V 6476 recalculating worth of assets N 6476 find values of 30 N 6478 values Fe at 24 V 6479 classifies stock as a V 6481 makes investment at prices N 6483 has value than deal N 6484 be ally in state V 6484 held hostage to boards N 6498 making bid of pence N 6499 values whole of Coates N 6499 values whole at million V 6499 owning % of company N 6500 give stake in company N 6501 considering merger through subsidiary N 6502 fund acquisition through resources V 6503 including addition of businesses N 6504 make offering in business V 6505 including sale of company N 6506 controls % of company N 6507 have impact on battle N 6508 holds % of shares N 6510 was response to efforts N 6510 gain control of Datapoint N 6511 took control of Datapoint N 6512 reported gain in profit N 6515 rose % to million V 6516 declared dividend of pence N 6517 increased % to billion V 6517 climbed % to million V 6518 rising % to million V 6519 dropped % to million V 6521 saw evidence of wrongdoing N 6521 saw evidence in collapse V 6521 described whitewash by deputies N 6523 sent Bureau of Investigation N 6523 sent Bureau of Investigation N 6524 provide style for owners V 6525 drew million from thrift V 6526 making failure in history N 6527 participated year in examination V 6531 were meat on day N 6532 demand write-downs of loans N 6535 deny behavior by association N 6536 is part of coverup N 6538 flay handling of affair N 6540 declared one of loans N 6540 make adjustment on another V 6543 brought suit against Keating V 6544 ignoring recommendation from officials N 6544 place Lincoln into receivership V 6550 saw truck with sign N 6553 contained information about depositors N 6555 regard these as activities V 6556 boosting prices of products N 6556 boosting prices by average V 6556 following erosion in prices N 6560 marks effort by steelmaker N 6560 counter fall in prices N 6561 selling steel at 370 V 6564 reflect value of products N 6564 put steel on footing V 6565 is unit of Corp. N 6565 increased % between 1981 V 6568 send signal to customers V 6569 negotiating contracts with LTV V 6570 is signal to world N 6575 announced round of increases N 6576 boost discounts for buyers N 6578 raise billion in cash N 6578 raise billion with sale V 6578 redeem billion in maturing N 6579 has assurances of enactment N 6579 has assurances before date V 6582 extending involvement in service N 6582 extending involvement by five V 6583 continue arrangement with Television N 6583 does distribution for Channel V 6585 extend involvement with service N 6585 extend involvement for years V 6587 investing million in it V 6588 took charge in quarter V 6591 duplicate feat with forms V 6593 transplanting gene into bacteria V 6594 met Swanson in 1976 V 6598 licensed it to Lilly V 6598 produced % of insulin N 6605 is part of business N 6606 were million from licensing V 6607 bought shares of Mixte N 6607 fend bid for company N 6609 are allies of Mixte N 6609 launched week by Cie V 6613 create partnership in Midwest V 6614 generate revenue of million N 6618 take control of facilities N 6619 supply barrels of oil N 6619 supply barrels for refinery V 6620 surged % to yen V 6620 reflecting demand for variety N 6621 rose % to yen V 6622 had profit of yen N 6623 climbing % from yen V 6624 raise dividend to yen V 6626 speeding action on legislation N 6630 passing extension of ceiling N 6630 passing extension without amendments V 6631 counter discrimination in plans N 6632 attach provision to legislation V 6634 block measure with actions N 6635 drop provisions from version V 6636 give issue in elections N 6639 Pushing issue on legislation N 6639 avoid default by government N 6639 be strategy to me V 6641 raising limit to trillion V 6641 pass legislation by Wednesday V 6642 give demand for cut N 6643 reported loss of million N 6645 includes charges of million N 6646 retained firm of Inc. N 6647 retained Levin as adviser V 6651 restore confidence about prospects N 6653 climbed 41.60 to 2645.08 V 6659 climbed 5.29 to 340.36 V 6659 added 4.70 to 318.79 V 6660 surged 1 to 62 V 6661 changed hands in trading V 6662 viewed proposal as lift V 6663 's value in market V 6663 renews prospects for tape N 6664 reflected easing of concerns N 6667 showed interest in stocks N 6667 showed interest in session V 6669 fell 1 to 50 V 6670 climbed 3 to 38 V 6670 rose 3 to 37 V 6670 added 3 to 23 V 6670 gained 1 to 1 V 6670 jumped 3 to 62 V 6672 surfaced year among stocks V 6672 posted gains in session V 6673 gained 7 to 67 V 6673 added 1 to 75 V 6673 rose 3 to 62 V 6673 firmed 3 to 38 V 6674 rose 3 to 39 V 6676 rose 3 to 68 V 6676 gained 1 to 34 V 6677 accumulating stake in Chevron N 6677 accumulating stake in order V 6677 increased stake in USX N 6678 completed sale of unit N 6678 completed sale to Motor V 6678 gained 1 to 55 V 6678 losing point amid rumors V 6679 produce gain in quarter V 6680 climbed 3 to 30 V 6680 boosted opinion on stock N 6680 boosted opinion to rating V 6681 reflected decline in shares N 6681 lowered rating in October V 6682 advanced 1 to 62 V 6683 repurchase half of shares N 6683 repurchase half at 70 V 6683 sell billion in assets N 6683 pay dividend to holders V 6684 acquire operations for price V 6684 rose 1 to 26 V 6685 added 1 to 39 V 6686 rose 7 to 12 V 6688 gained 1 to 32 V 6689 dropped 1 to 21 V 6689 following news of plan N 6689 reorganize business into company V 6689 offer stake to public V 6690 rose 1.71 to 370.58 V 6692 fell 5 to 27 V 6694 acquire businesses of Inc. N 6695 receive shares of series N 6696 assume million of debt V 6697 pay Hunter in exchange V 6698 had revenue of million N 6700 has specific for shares N 6701 HOLD days of talks N 6702 meet 2-3 aboard vessels V 6702 discuss range of issues N 6702 discuss range without agenda V 6705 disrupt plans for summit N 6706 discuss changes as issues V 6707 lifted blockade around town N 6710 staged protests in cities V 6710 press demands for freedoms N 6711 approved ban on routes N 6711 approved ban as part V 6711 overcome obstacles in Congress N 6712 includes funds for station V 6716 calling the since 1972 N 6717 reach Kabul after attack V 6718 make deliveries to capital V 6719 elected Ozal as president V 6719 opening way for change N 6722 dismissed demands by Conservatives N 6728 hold referendum on election N 6728 fill post of president N 6729 replaces presidency under pact V 6730 denied asylum to man V 6730 lashing himself to housing V 6733 had net of million N 6736 trading summer at 14 V 6737 has interests in recovery V 6737 has facilities in operation V 6738 has interests in management V 6738 reported income of million N 6739 rose % to million V 6741 step disclosure of firms N 6743 do things in term V 6749 making remarks in days V 6750 re-establishing collar on trading N 6751 banned trading through computers N 6751 moved points in day V 6755 considering variety of actions N 6756 expanding reports on trading N 6758 ceased trading for accounts V 6759 buy amounts of stock N 6760 was trader on Board N 6760 suspended arbitrage for account V 6761 preparing response to outcry V 6762 is one of firms N 6764 getting heat from sides V 6769 take care of heck N 6775 buy stocks in index N 6775 buy stocks in shot V 6776 view this as step V 6779 relishes role as home N 6779 buy baskets of stocks N 6779 mimic indexes like 500 N 6781 considering ban on trading N 6782 slowing trading during periods V 6787 's piece of business N 6788 have control over investments N 6788 cause swings in market V 6795 formulates responses to problem N 6795 take role in issue V 6802 opening way for increase N 6803 ending impasse between Democrats N 6803 boost wage to 4.25 V 6804 includes wage for workers V 6805 reviving curb on trading N 6806 taking action against trading V 6808 soared 20.125 to 62.875 V 6812 rose % in September V 6813 plunged % in month V 6814 climbed % in industry V 6816 becoming partners in ventures N 6817 blocking takeover of maker N 6818 sell billion of assets N 6818 use some of proceeds N 6818 buy % of shares N 6818 buy % for 70 V 6819 fend bid by firms N 6821 boosting prices of products N 6822 paid 500,000 in fines V 6824 dropped % in quarter V 6824 offset weakness in operations N 6839 received boost from news V 6839 fell % in September V 6840 was decline since drop N 6841 pave way for Reserve N 6842 cast doubt on scenario V 6852 offer million of debentures N 6852 offer million through underwriters V 6853 yield 0.60 to point N 6853 ended Tuesday with yield V 6854 offered million of securities N 6856 pinpoint trough in cycles N 6857 offered billion in securities N 6858 leaving underwriters with millions V 6858 triggering sell-off in market V 6860 increase size of offering N 6862 is bit of drill N 6872 including offering by Co N 6873 cut offering to million V 6874 carried rate of % N 6879 raise million of debt N 6879 repay some of borrowings N 6879 redeem million of increasing N 6879 repay some in August V 6880 offer million of notes N 6880 offer million at yield V 6881 float points above LIBOR N 6884 priced million of bonds N 6884 priced million at par V 6886 issued million of securities N 6889 yield % to assumption V 6900 's light at end V 6902 overwhelm demand in sessions V 6903 trim yields in portion N 6908 firmed bit after fall V 6909 reached peak of cycle N 6911 raised rates by point V 6915 awaited address on policy N 6916 rose 2 to 111 V 6917 sold units to Inc. V 6918 publishes information among services V 6920 named president of division N 6921 become part of unit N 6922 give jurisdiction over standards N 6923 supercede rules in regard V 6925 founded years after FASB N 6926 follow rules on depreciation N 6930 completed sale of Co. N 6930 completed sale to group V 6931 valued transaction at million V 6932 seek control of companies N 6934 acquire Chemical in 1986 V 6934 burdened Avery with debt V 6938 has facilities in U.S. V 6939 surrendered warrants in exchange V 6940 raised stake to % V 6941 sold stock in Inc. N 6941 sold stock to Corp. V 6943 including stake in Avery N 6946 pay 200,000 for services V 6947 sell subsidiary to group V 6950 inviting proposals from purchasers N 6952 protect shareholders from offer V 6954 buy share for 30 V 6955 had stake in company V 6955 seek majority of seats N 6956 acquire control of company N 6957 design system for city V 6959 pay yen for project V 6961 drew criticism from observers V 6964 consider contract in effect V 6967 lowered price on item N 6967 lowered price as part V 6968 monitored prices before campaign V 6969 cut % to % N 6973 gave volumes of documents N 6973 made effort with policies V 6974 seeks fines of 1,000 N 6974 seeks fines of 1,000 N 6975 buying shares of companies N 6976 leading list of stocks N 6977 hit highs on Exchange V 6986 revived interest in shares N 6992 removing horse from cart V 6994 add uncertainty on top V 6996 produce rates over days V 6998 use power at rate V 7004 represent step in defensiveness N 7008 buy stocks in market V 7009 own anything except stocks N 7013 has money in gold V 7016 expect dragger of economy N 7024 pay dividends if any V 7026 have money in utilities V 7038 supply area with water V 7040 is player within workings N 7045 explain it to colleagues V 7045 facing changes in design N 7046 reporting decrease in radiation N 7049 are studies by Norwegians N 7049 show UV-B at surface V 7050 calls validity of theory N 7054 continue gathering at stations V 7058 are part of evaluation N 7069 invokes name of Inc. N 7070 are pioneers in study N 7070 has expertise in area V 7073 require level of cooperation N 7078 been victim of fraud N 7078 had worth of million N 7079 sustain losses through end V 7080 negotiate settlements on number N 7081 's amount of exposure N 7083 filed statements for 1989 V 7085 have million in sales N 7085 have million for year V 7088 store information in computers V 7088 is the with drive N 7089 had reactions to announcements V 7092 faces delisting by Association V 7094 filed report with NASD V 7094 requesting extension of exception N 7097 outlines host of practices N 7099 pending restatement of sheet N 7100 make recommendation within weeks V 7100 file lawsuits against directors N 7102 concentrating all on raise V 7102 showed shortcomings of institution N 7104 catch fancy of network N 7106 favor use of facts N 7108 justify inclusion of facts N 7110 be attacks from politicians N 7110 find evidence of abuse N 7111 won permission from Board N 7111 move department to subsidiary V 7112 has implications for entry N 7113 increases volume of securities N 7115 given handful of affiliates N 7115 been domain of firms N 7117 limited revenue to no V 7119 boosted volume of types N 7121 placed billion of equities N 7123 had change in earnings N 7125 compares profit with estimate V 7125 have forecasts in days V 7127 named president of unit N 7128 retains duties of director N 7133 build company at forefront N 7134 spotted appeal of bikes N 7140 turning bikes with names N 7141 developing products for biking V 7149 is one of people N 7149 bring company under control V 7150 had lot of problems N 7159 replacing lugs with ones V 7159 make generation of frames N 7161 shave time of rider N 7163 slash price of bike N 7163 slash price to 279 V 7167 calls future of business N 7169 get piece of business N 7169 introduced line of shoes N 7172 entered business in 1983 V 7173 change bike into bike V 7174 makes two-thirds of sales N 7175 entered business in 1987 V 7176 is example of globalization N 7177 established ventures with companies N 7178 acquired brands as Peugeot N 7179 replacing distributors with owned V 7180 cut cost of middleman N 7180 give control over sales N 7181 puts it With some V 7183 succeeds Pfeiffer as president V 7186 manufactures systems for mainframes V 7187 elected director of builder N 7187 increasing board to nine V 7188 is partner with firm N 7188 is partner in Management N 7189 named officer of company N 7190 named Bing as president V 7190 join division of Co. N 7191 won contract from Co. V 7193 disclose length of contract N 7194 raise million with chunk V 7195 raise it through loans V 7196 raise it through equity V 7198 supply half of financing N 7199 raised million from backers V 7204 faced setback in May V 7204 postpone launch until spring V 7207 raising money from backers N 7208 unveiling drive for channels N 7210 faces competition from Television N 7214 finished points at 2112.2 V 7216 showed strength throughout session V 7216 hitting low of 2102.2 N 7216 hitting low within minutes V 7217 settled points at 1701.7 V 7220 cover requirements for stocks N 7224 be appearance before Party N 7226 increased pence to 362 V 7226 spin operations into company V 7227 was the of index N 7227 was the at shares V 7228 ended 22 at 747 V 7229 told interviewer during weekend V 7229 held talks with maker N 7230 underlined interest in concern N 7231 jumping 35 to 13.78 V 7233 had loss in trading V 7234 fell points to 35417.44 V 7236 rose points to 35452.72 V 7238 outnumbered 551 to 349 N 7239 took attitude amid uncertainty V 7246 pushing prices of companies N 7246 pushing prices across board V 7247 defend themselves against takeover V 7248 fueled speculation for advances N 7249 advanced 260 to 2410 V 7251 gained 170 to 1610 V 7256 set direction for week N 7257 expect decline in prices N 7258 involves fears about talks N 7262 are trends on markets N 7265 reached agreement with union V 7265 ending strike by workers N 7268 spin operations to existing V 7269 create stock with capitalization N 7272 rose pence to pence V 7272 valuing company at billion V 7273 reflects pressure on industry N 7273 boost prices beyond reach V 7274 spin billion in assets N 7274 fend bid from Goldsmith N 7275 had profit of million N 7275 had profit in year V 7276 boost value by % V 7276 carry multiple than did N 7289 elected director of maker N 7290 retired year at 72 V 7291 double capacity for production N 7292 increase investment in plant N 7292 increase investment by yen V 7294 reduce production of chips N 7294 reduce production to million V 7295 fell % in September V 7297 attributed decline to demand V 7299 have room for shipments N 7300 took gamble on voice N 7301 cast actress as star V 7309 make living for time N 7309 received award as vocalist V 7310 was result of affiliation N 7311 written lyrics with him V 7311 contracted voices for him V 7316 was that of singer N 7319 putting numbers like Love N 7321 produced performances in studio V 7322 taken anyone from scratch V 7323 go lot by instinct V 7325 took place at Cinegrill V 7327 sensed undercurrent of anger N 7327 sensed undercurrent in performance V 7329 incorporated anger into development V 7330 made visits to home V 7330 paid mind in past V 7336 became joke with us V 7336 say consonants as vowels V 7337 recorded demo of songs N 7338 made tape with piano N 7341 had lot of training N 7343 get feeling of smile N 7343 get feeling in throat V 7343 put smile on face V 7345 using language as tool V 7346 sing line in Whoopee N 7348 Put ending on it V 7350 was process of discovery N 7350 felt bit like Higgins V 7351 take sparks of stuff N 7353 was layer to coaching V 7354 collecting paychecks from lounges V 7356 was character in movie V 7367 be feet per day N 7370 decreased % to tons V 7371 fell % from tons V 7372 used % of capability N 7376 show interest in office N 7376 achieved position in eyes V 7377 console conscience with thought V 7377 is mess of making N 7377 reform it with novel V 7378 writing novels about Peru V 7379 reached state of collapse N 7384 is foil for Llosa N 7390 was form of imperialism N 7395 dipped hand into river V 7399 tells stories in way V 7401 recorded session at campfire N 7402 alternates chapters in voice N 7402 alternates chapters with chapters V 7403 is connection between modes N 7404 becomes thing through contrast V 7405 controls counterpoint like Bach V 7405 reaching extreme in chapter V 7405 relates adventures as newsman V 7406 takes him to Amazonia V 7408 reminding them of identity N 7413 poses threat for future N 7416 impedes progress toward all N 7417 respects woman with offspring N 7420 buy stake in Airlines N 7420 sell parts of carrier N 7420 sell parts to public V 7421 raise stake in Airlines N 7421 raise stake to % V 7422 following tie-up with Inc. N 7422 contemplating alliance with one V 7424 given trial in accordance N 7426 issued comment on executions N 7428 confiscated cars from residents V 7431 cut loans to country N 7431 cut loans in wake V 7432 prepare proposals for China N 7433 resuming loans to China V 7435 presented petition to consulate V 7435 banned import of ivory N 7436 sell stockpile of tons N 7437 importing timber from state N 7438 imports % of logs N 7439 opened session in city V 7442 reaching pairs in 1988 V 7443 left him during trip V 7447 gaining value against goods V 7447 are pursuit of economists N 7450 resigned week as Thatcher V 7455 have repercussions beyond those N 7456 is product of shop N 7457 challenged forecast in newsletter V 7458 was kind of attention N 7460 arranged luncheon in York V 7461 are amateurs at dueling N 7462 upset Case in primary V 7462 made run at seat N 7463 spent years on staff V 7464 been part of debate N 7464 been part for years V 7466 touched debate with Sachs N 7469 predict rise in inflation N 7472 were instrument for policy N 7473 is case in States V 7474 add reserves from system V 7480 import all of pressures N 7481 creates bargains for buyers V 7481 pushing demand beyond capacity V 7483 exported inflation at times V 7484 inflate supply of currencies N 7487 manipulate relationships to advantage V 7488 need reminders of responsibility N 7489 exercise power on behalf V 7493 Given effects of disorders N 7496 posted increase in earnings V 7497 fell % to million V 7498 approved increase in rate N 7498 approved increase from cents V 7501 gained 1.50 to 35.75 V 7504 reimburse Sharp in event V 7505 limits number of options N 7507 has stake in company V 7509 rose % to dollars V 7512 wrapped son in blankets V 7512 placed him on floor V 7515 lost grip on son N 7520 stepping campaign for use N 7521 require seats for babies V 7523 scrutinized accidents in 1970s N 7524 take look at issue N 7524 take look during days V 7525 advocating use of seats N 7530 lost grip on baby N 7531 pulled her from compartment V 7532 encourages use of seats N 7532 bought ticket for baby V 7533 take son to Europe V 7535 barred use of seats N 7536 bought seat for daughter V 7537 hold her during takeoff V 7538 get complaints from parents V 7539 petitioned FAA in June V 7541 requiring seats for babies V 7542 buy ticket for baby V 7547 denying use of seats N 7550 describes call for seats N 7551 buy tickets for babies V 7552 pick part of tab N 7553 welcome use of seat N 7556 is kind of device N 7559 turning heat on FAA V 7563 instituted review of procedures N 7565 has effect on condition N 7566 is subsidiary of Bancorp N 7569 elected him as director V 7571 named executive of company N 7572 been president in charge V 7574 named Poduska to posts V 7575 named chairman of company N 7577 combine lines by quarter V 7578 maintain operations in Sunnyvale N 7580 comprise importation to Japan N 7581 importing vehicles from plant V 7586 announced number of purchases N 7587 buy vehicles from makers V 7588 acquire stake in Inc. N 7589 owns Center in Manhattan N 7590 is partner in Plaza N 7591 sold mortgage on core N 7591 sold mortgage to public V 7592 convert shares to stake V 7594 gain stake in section N 7598 had comment on reports N 7599 seeking million for firm V 7603 acquire shares of stock N 7604 understand resources of Mitsubishi N 7604 represents future for company N 7605 meets objective of diversification N 7607 has association with Mitsubishi V 7609 distributed book to investors V 7610 acquire piece of estate N 7611 stir sentiments in U.S V 7613 downgraded million of debt N 7613 downgraded million in response V 7614 increase opportunities through acquisitions V 7618 acquired Entex in 1988 V 7620 hand Inc. for irregularities V 7621 called nature of operations N 7628 closed unit in July V 7628 used names of individuals N 7631 issue share of stock N 7631 issue share for each V 7633 lifted prices at outset V 7635 added 6.76 to 2603.48 V 7637 dipped 0.01 to 314.09 V 7637 eased 0.01 to 185.59 V 7639 carried prices to highs V 7640 following round of buying N 7642 changed hands on Exchange V 7643 led advancers on Board V 7643 led 774 to 684 N 7644 attributed activity in part V 7646 hit bottom near level V 7648 ease concerns about growth N 7649 gained 7 to 67 V 7649 building stake in company N 7652 gained 3 to 42 V 7654 making bid under terms V 7654 accepts offer below 300 N 7655 fell 3 to 99 V 7656 skidded 3 to 47 V 7656 rose 3 to 1 V 7657 added 1 to 31 V 7660 tumbled 1 to 3 V 7660 meet requirements under regulations V 7662 face problem with criteria N 7662 dropped 7 to 9 V 7663 had million in stock N 7665 rose 3 to 19 V 7665 gained 5 to 19 V 7665 added 1 to 26 V 7666 fell % from year V 7666 lost 5 to 16 V 7667 added 7 to 41 V 7667 slid 1 to 49 V 7668 dropped 1 to 54 V 7670 jumped 1 to 33 V 7671 expanded program by shares V 7672 gained 2 to 43 V 7674 skidded 4 to 28 V 7676 fell 1.14 to 368.87 V 7678 lost 1 to 6 V 7680 commemorate centennial of birth N 7689 gathers dozen of pieces N 7693 featuring work of Belli N 7697 weaving movement into tapestry V 7699 prefer pie in portions V 7700 makes debut as Gilda N 7700 makes debut in production V 7701 leaving cap to Nucci V 7706 singing countess in Widow V 7710 opens season with production V 7727 magnify problem for companies V 7735 are reasons for drubbing N 7736 inform Bradley of notions V 7736 ensure success as leaders N 7741 cut tax to % V 7741 gather support in Congress V 7743 suffered sclerosis from point V 7748 castigate Bradley for opposition V 7749 increases value of assets N 7749 represent inflation of values N 7754 cleared loan to company N 7755 buying services from Inc. V 7755 extend services between Santiago V 7756 supply equipment for project V 7757 supply equipment for project V 7759 raise cost of trading N 7760 Boost amount of cash N 7760 buy contract from level V 7761 curb speculation in futures N 7768 sell amounts of stock N 7769 set outcry against trading N 7771 got taste of it N 7771 got taste in ads V 7771 boost margins on futures N 7771 boost margins to % V 7772 has meanings in markets N 7775 sets minimums with oversight V 7777 control 100 in value N 7782 reflecting debate over trading N 7783 widen differences between stocks N 7783 entice arbitragers in place V 7785 decrease liquidity in market N 7785 increase discrepancies between stocks N 7786 lose sleep over prospect V 7787 choke trades between stocks N 7787 increase stability of prices N 7788 diminish impact of arbitrage N 7788 change requirements for futures N 7788 manages billion in funds N 7789 quantify impact of arbitrage N 7789 quantify impact on performance V 7790 echoed complaints of managers N 7791 curtail volume of trading N 7792 doing trades for accounts N 7792 taking advantage of opportunities N 7793 doing that in guise V 7797 raise specter of competition N 7799 increase shares of stock N 7807 saw demand by banks N 7809 provide measure of strength N 7809 show gains in generation N 7810 include release of sales N 7813 announce details of refunding N 7819 included million of bonds N 7824 reflect concerns about uncertainties N 7836 purchase bills for account V 7837 auctioned yesterday in market V 7838 held sale of bills N 7849 considering alternatives to the N 7850 reset rate on notes N 7850 reset rate to % V 7850 increased payments by million V 7858 price offering by Co N 7862 repay portion of borrowings N 7862 redeem amount of debentures N 7862 redeem amount in August V 7863 price offering by Inc N 7866 ended 2 in trading V 7869 scaled purchases of securities N 7869 assess claims from hurricane N 7870 mean issuance of issues N 7871 been buyers of classes N 7871 been buyers during months V 7872 have yields than bonds N 7872 carry guarantee of Mac N 7874 offered million of securities N 7879 pulled low of 91-23 N 7880 settled session at 99-04 V 7883 rose 10 to 111 V 7883 rose 7 to 103 V 7885 fell point to 97.25 V 7887 ended day on screens V 7888 totaled billion in quarter V 7890 numbered 670 in quarter V 7895 totaled billion in quarter V 7899 acquire share of stock N 7899 acquire share for 17.50 V 7904 leave us in stitches V 7904 notice pattern for witches N 7913 heighten concerns about investment N 7914 use foothold in concerns N 7915 signed agreement for Chugai N 7915 market products in Japan V 7918 pay 6.25 for shares V 7920 obtain hand in competition N 7922 acquired positions in companies N 7925 been one of players N 7926 wants % to % N 7928 speed development of technology N 7928 apply technology to array V 7930 spends % of sales N 7930 spends % on development V 7932 gain knowledge through sale V 7933 had income of million N 7934 had loss of million N 7935 received patent for technology N 7935 detect organisms through the V 7936 facilitate marketing of test N 7937 help Gen-Probe with expertise V 7940 see counterparts at Agency N 7947 sell technology to Japan V 7951 decreasing reliance on technology N 7952 has lot of weaknesses N 7954 's leader in manufacturing N 7954 is years behind U.S. N 7955 use expertise in rest V 7957 make use of expertise N 7957 win prizes as Japanese N 7958 turning inventiveness into production V 7960 adopted technology in 1966 V 7960 used it for years V 7961 developed system with Soviets V 7962 take journalist into space V 7964 opposed development of relations N 7967 is one of bets N 7968 held exhibitions in York V 7970 is target for Soviets N 7972 handed details on technologies N 7973 involved areas as materials N 7975 expect flow from Japan V 7976 has lot of know-how N 7976 put that into production V 7979 help Soviets in way V 7980 relinquish control of islands N 7981 provided information about plans N 7983 arouses interest at glance V 7986 SIGNALED Day for houses V 7988 took effect after years V 7991 become players in 1970s V 7993 were wars among brokers V 7995 add fees to commissions V 7998 are members with houses V 7998 gaining share of commissions N 8000 ended commissions in years V 8003 lead mission to Poland N 8005 visit Poland from 29 V 8011 back company in partnership V 8014 develop acts for label V 8017 gives link to distributor N 8018 gives partner with finger N 8019 turning division in years V 8022 had stake in efforts N 8026 have shot in shoulder V 8027 went week after shot N 8028 moved it across country V 8029 left marks on carpet V 8032 has plenty of company N 8037 working sweat with activities V 8038 walk days for exercise V 8041 keeping sales of products N 8042 rise % to billion V 8042 sees market as one V 8047 rose year to 145 V 8048 predicts trend toward pieces N 8052 be prospect for gizmo V 8054 paid 900 for bike V 8059 conjures images of nation N 8061 asking people about regime V 8066 is % to % N 8067 produce contractions of groups N 8067 achieve % of capacity N 8067 done times for minimum V 8074 play round of golf N 8090 devote time to families V 8091 rise % from billion V 8099 commissioned study of years N 8100 watching bowling on television N 8111 experience difficulties with terms V 8112 portraying health of company N 8115 followed string of declines N 8116 was result of credit N 8117 raised rate by point V 8118 's somethin in neighborhood V 8123 busted spirits in hundreds V 8124 get four from people V 8125 identifies him as demonologist V 8126 call one of band N 8127 heads branch of Committee N 8128 is explanation for haunts V 8133 get calls from people V 8133 have ghosts in house V 8135 heads Committee for Investigation N 8136 has chapters around world V 8138 give nod to sensibilities V 8139 's day of business N 8139 occasion number of reports N 8141 bested haunts from aliens N 8142 heads Association of Skeptics N 8147 dragging trap across rafters V 8148 plagued house in Mannington N 8152 phoned University of Kentucky N 8152 report happenings in house N 8153 heard footsteps in kitchen N 8157 tangle cord around leg V 8163 's bones of saints N 8166 investigated claims of cats N 8168 debunk goings-on in Vortex N 8170 called Hyman as consultant V 8185 tossing her around room V 8190 sprinkles water over woman V 8192 has burns on back N 8192 has burns from confrontation V 8205 cut workers since Monday V 8206 slashed jobs from peak V 8212 adds people to staff V 8216 foresee shortages over months N 8217 fill jobs for operators N 8218 put halt to building V 8218 freeing workers for repairs V 8222 hire engineers over months V 8225 drew sigh of relief N 8227 put companies in violation V 8227 make loans to directors V 8229 bring penalties to employees N 8230 's case of whiplash N 8234 reflect dismissal of executives N 8237 state value of packages N 8243 SHUN burger for jobs V 8248 build resumes through grades V 8250 following drop in 1988 N 8253 hires graduate with degrees N 8253 hires graduate for 7.50 V 8253 tend fires at resort N 8256 making return with vengeance N 8257 elect president for time V 8258 crisscrossing country of people N 8258 holding rallies in hope V 8264 grab lead in polls N 8266 win % of vote N 8268 sending shivers through markets V 8272 took office in 1985 V 8273 bring transition to democracy N 8273 bring transition after years V 8297 regulates investment in technology N 8298 prevented million of expenditures N 8298 prevented million since 1986 V 8300 including jobs in Louisville N 8300 move operations to state V 8301 paid million to hospitals V 8308 acquire one of machines N 8310 choose careers in specialties N 8311 prefer salary over compensation V 8314 do that at all V 8316 jumped % to 42,374 V 8318 is reason for shift N 8319 reflects values of generation N 8319 wants time for families N 8319 directs searches for International V 8320 is change in fabric N 8322 spent weeks at Center V 8322 shared room like patients V 8325 is one of 18 N 8329 require attention from nurses N 8329 are 100 per day N 8330 spend time on units V 8331 is host to conference N 8332 's part of hospital N 8335 develop masters in programs N 8335 develop masters at universities V 8336 launches publication in spring V 8336 launches Journal on Care N 8337 buy Inc. for million V 8340 committed money to bid V 8342 rebuffed requests for access N 8343 has value in salvage V 8344 need access to records N 8345 started venture with Co. N 8349 filed materials with Commission V 8351 suspended distribution in 1988 V 8353 made conversion to corporation N 8353 made conversion in year V 8353 save million in costs N 8353 save million from change V 8354 receive share of stock N 8354 receive share for units V 8355 receive share in Edisto N 8355 receive share for units V 8356 own % of Edisto N 8357 is partner of NRM N 8358 own % of Edisto N 8358 own % after transaction V 8359 give seat on board N 8363 discontinued talks toward agreement N 8363 regarding acquisition of group N 8364 reached agreement in principle N 8364 reached agreement in August V 8367 sell building to Co. V 8368 disclose terms of sale N 8378 panic weekend after plunge N 8382 cast pall over environment V 8392 transferred assets into funds V 8395 are all from level V 8399 tell you about trends V 8400 is growth in money N 8403 held % of assets N 8403 held % at end V 8404 buffer funds from declines V 8405 bolstering hoards after crunch V 8406 raised position to % V 8408 seek safety in months V 8410 be continuation at expense V 8413 cited need for currency N 8415 alleviate demands of republics N 8421 is disagreement among Baker N 8425 pouring money into it V 8426 make difference to nationalists V 8427 easing grip on empire N 8428 cut Ortegas from Moscow V 8429 expect good from control V 8430 's nothing in contradictory N 8430 's nothing in this V 8432 raises doubt about Gorbachev N 8438 avoid criticism from Mitchell N 8446 explain them to students V 8449 increases board to members V 8452 shot them in backs V 8455 protect the from individuals V 8457 be symbolism than substance N 8459 attach amendments to legislation V 8459 gotten bill through committee V 8460 allow vote on issue N 8460 allow vote before end V 8461 favors kind of measure N 8464 permitted resurrection of laws N 8468 establish sentence for crimes V 8470 including murder for hire N 8471 permitting execution of terrorists N 8474 killing justice for instance V 8476 took place in 1963 V 8476 exercise authority for years V 8477 is sort of fraud N 8478 distracting attention from issues V 8480 deters people from commission V 8481 are retribution for crimes N 8483 made part of debate N 8484 meted executions in manner V 8485 prompted protest from Thurmond N 8486 imposed penalty in fashion V 8487 invade sentencings in ways V 8488 showing application of penalty N 8489 shift burden to prosecutors V 8494 question validity of studies N 8499 narrow penalty to convictions V 8500 Narrowing penalty in fashion V 8501 strengthen argument of those N 8501 oppose execution under circumstances V 8502 postponed decision on move N 8502 block offer of Co. N 8504 seeking injunction against offer N 8505 pay 18 for stake V 8511 provides information about markets N 8511 provides information through network V 8513 declined % to units V 8514 attributed drop to trend V 8515 declined month from levels V 8516 sued it in court V 8518 reach agreement on amount N 8519 challenging entries on books N 8520 recover amount from subsidiary V 8521 granted extension until end N 8524 hold settlement of Britton N 8526 had agreement in hand V 8530 put this on record V 8541 taking place during earthquake V 8544 read it into record V 8547 Reading settlement into record V 8547 was thing on mind N 8548 buy stores from Corp. V 8552 named assistant to chairman N 8553 wear wigs in court V 8559 spend time with patients V 8559 is key to rapport N 8560 restrict efficiency of communication N 8562 spending % of product N 8562 spending % on care V 8564 protect themselves from possibilities V 8567 close two of plants N 8569 have plants in system V 8574 are indication to date N 8576 beginning production in U.S N 8579 build vehicles in U.S. V 8580 bought Corp. in 1987 V 8581 cut workers from payroll V 8582 received offer from group V 8583 add million of debt N 8583 add million to company V 8584 seek protection under 11 V 8585 is expression of interest N 8585 has rights until 28 V 8588 had reactions to offer N 8590 pay bondholders in cash V 8591 have million in claims N 8592 made public by bondholders V 8596 keeping Revco in red V 8598 represent lot of estate N 8598 boost demand for drugs N 8599 reported loss of million N 8601 increased % to million V 8605 receive discount for shares V 8609 has billion in claims N 8615 steal company in middle V 8631 resume roles as suppliers N 8638 produced total of tons N 8638 produced total in 1988 V 8640 encourage walkouts in Chile N 8641 fell tons to tons V 8642 had effect on sentiment N 8646 was tons at end V 8649 prop prices in weeks V 8649 kept prices in doldrums V 8653 give bags of quota N 8655 overcome obstacles to agreement N 8657 showed changes in volume V 8658 eased cents to 380.80 V 8660 rose cents at 500.20 V 8662 triggered flight to safety N 8663 was resistance to advance N 8668 passed laws on rights N 8668 passed laws in 1987 V 8668 launched Union on course V 8670 is creation of market N 8671 blocked speech by Gates N 8671 blocked speech on ground V 8675 accept change of kind N 8678 seek permission from council N 8682 permitting activity in others V 8685 restricting freedom of cooperatives N 8686 unleashing forces of market N 8688 ruled use of market N 8688 solve problem of goods N 8689 told Congress of Deputies N 8689 told Congress on 30 V 8689 disrupt processes in country N 8690 rejected planning for reasons V 8690 combine controls of the N 8690 combine controls with benefits V 8692 display resemblance to tenets N 8692 produced synthesis of capitalism N 8693 combine efficiency with discipline V 8695 reach stage of development N 8695 reach stage in Russo V 8696 sacrifice themselves for nation V 8697 unite employers with government V 8698 undertake role of decision-making N 8700 presented vision to Congress V 8702 be division between direction N 8707 ensure loyalty of sector N 8711 provides arm of alliance N 8713 providing workers with opportunity V 8713 holding promise of goods N 8713 revive popularity of party N 8718 see task as that V 8719 re-establish control in Europe V 8721 fill shops with goods V 8722 is director of Foundation N 8723 climbed % in September V 8728 reached 175 in September V 8729 uses base of 100 N 8729 uses base in 1982 V 8730 edged % in September V 8731 was evidence of home N 8733 rose % in September V 8735 following surge in August V 8736 held total to billion V 8737 grew % to billion V 8738 get construction under way V 8740 lowered ratings on debt N 8741 downgrading debt to single-A-3 V 8742 confirmed rating on paper N 8743 lowered Eurodebt to single-A-3 V 8749 incurred millions of dollars N 8751 reflect risk as profile N 8752 been one of firms N 8753 put pressure on performance V 8753 citing problems from exposures N 8754 represent portion of equity N 8756 cut 400 of employees N 8756 cut 400 over months V 8757 keep expenses in line V 8758 is response to changing N 8759 provides quotations for securities V 8762 discussing formation of group N 8763 are streamlining of operations N 8764 including production of equipment N 8765 is response to loss N 8767 market system of Inc N 8768 buying concern for million V 8770 sold unit to Inc. V 8779 reaped million in sales N 8779 reaped million on game V 8780 based budget for baseball N 8780 based budget on Series V 8784 takes broadcasting of playoffs N 8784 takes broadcasting in contract V 8785 have loss in year V 8786 reach million over years V 8788 was Series in years N 8788 featuring team against team N 8788 pitted Dodgers against the V 8790 drew % of homes N 8797 gained points to 2603.48 V 8800 throw towel on trading V 8801 swear trading for account V 8802 eliminate trading from market V 8803 shot points in hour V 8809 outnumbered 774 to 684 N 8815 rose Monday to 1.5820 V 8817 correct errors in work N 8818 considered equipment in U.S. V 8822 linked computers in Tokyo N 8822 linked computers with offices V 8826 have people in offices V 8833 doubled staff over year V 8834 slashed lag between introductions N 8834 slashed lag to months V 8835 has share of market N 8840 averaged growth since 1984 V 8841 use PCs at half V 8846 ring perimeter of office N 8847 make charts for presentations V 8849 transfer information from one V 8850 transmit charts to offices V 8851 writes information on chart V 8851 adds it with calculator V 8858 manages group in office V 8861 is reason for lag N 8863 has history of use N 8864 have experience with machinery V 8870 costs % in Japan V 8872 ruled it with power V 8875 offered design to anybody V 8879 is state of industry N 8884 have relationship with NEC N 8884 have relationship through cross-licensing V 8888 warned NEC about violations V 8891 put emphasis on service V 8892 trail those in U.S. N 8892 import systems from companies V 8896 increase exposure to computers N 8899 increasing number from 66 V 8904 won % of market N 8905 selling station in 1987 V 8905 became company in market N 8906 take portion of growth N 8907 busted sector with machine V 8908 including bash at Dome N 8908 lavishing campaign for machine V 8909 create sort of standard N 8910 adopt version of standard N 8918 sells machines in China V 8920 have presence in Japan V 8923 introduce PC in Japan V 8924 handles characters of Japanese N 8924 introduce machine until years V 8928 luring official as team N 8930 enhances compatibility with products N 8931 runs office for Dodge V 8934 zapping % to % N 8934 boosts rate to % V 8937 comprises worth of visits N 8943 been evidence of mortality N 8944 researched effects of RU-486 N 8945 suppress ovulation for months V 8946 reported repeaters in programs V 8947 are data on question N 8955 represents advance in area N 8956 expressed concern over bleeding N 8957 obtain approval for drug V 8958 forbids Institutes of Health N 8959 has backing of foundations N 8959 subsidizes research on contraceptives N 8971 expose patient to risk V 8974 contains grant for development N 8975 put government into business V 8976 put government into business V 8979 put pill through test V 8980 is editor of magazine N 8987 worked plan with Department V 8987 improve data on exports N 8992 billing client for services V 8992 watching legislation in Washington N 8992 is export as shipment N 8993 found exports with result V 8996 explain some of strength N 8999 suggest review of posture N 9000 relieve need for efforts N 9000 financing imports of goods N 9001 is president of Express N 9002 stop some of talent N 9003 billing UAL for expenses V 9004 obtain billion in loans N 9004 obtain billion for buy-out V 9004 was reason for collapse N 9007 repaid million in fees N 9007 repaid million for bankers V 9011 rose 4 to 175 V 9012 accepts offer below 300 N 9014 doing arbitrage for account V 9015 held meeting with partners N 9017 blame trading for swings V 9017 including plunge in Average N 9018 maintain market in stock V 9019 explain position on trading N 9019 explain position to regulators V 9020 get ideas on issue N 9022 represents retreat from trading N 9023 executing average of shares N 9024 is one of pullbacks N 9024 execute trades for customers V 9026 been one of firms N 9026 executing arbitrage for customers V 9029 buy amounts of stocks N 9030 lock profits from swings N 9033 made about-face on trading N 9033 made about-face after meeting V 9034 defended arbitrage at Kidder N 9035 have impact on market N 9036 do business with firms V 9036 do arbitrage for accounts V 9037 following trend of competitors N 9038 executed average of shares N 9038 executed average in trading V 9049 protecting assets of beneficiaries N 9050 do kinds of trading N 9050 be layoffs at firm V 9051 continue arbitrage for clients V 9054 stop it at all V 9055 been proposition for Stearns N 9057 been catalyst for pullback N 9058 follow lead of Corp. N 9058 cutting business to firms N 9060 cease business with them N 9065 organize alliance of firms N 9066 reaching moment of truth N 9066 reaching moment on Street V 9069 lost it in burglary V 9070 previewing sale at house N 9071 brought it for estimate V 9072 exchanged photos by fax V 9076 buy presents for girlfriend V 9082 sell 44 of strips N 9082 sell 44 to Russell V 9085 investigating disappearance of watercolor N 9085 has sketches on side V 9086 was part of shipment N 9088 watching group of handlers N 9088 watching group for time V 9091 shipped it from London V 9095 including some of treasures N 9096 offered reward for return V 9097 hidden haul in closet V 9098 took art to Acapulco V 9098 trade some of it N 9098 trade some for cocaine V 9101 bring prices on market V 9101 notified IFAR of theft N 9101 notified IFAR in 1988 V 9106 painted one in style V 9106 sold it as original V 9109 showed acquisition to expert V 9109 see it as fake V 9110 taped conversation with him N 9111 faking paintings up seaboard V 9112 is director of Foundation N 9113 recalling 3,600 of Escorts N 9115 makes Tracer for Ford V 9118 retain windshield in place V 9120 return cars to dealers V 9121 cause oil in some N 9123 replace cap with cap V 9124 inspect strainers at charge V 9125 extend term for damage N 9128 offer rebates to buyers V 9129 offer option of financing N 9130 offered option on Broncos V 9132 reassume responsibility for shortfall N 9133 affect stability of plans N 9134 insures benefits for workers V 9134 take part in plans V 9136 transform agency from insurer V 9139 was result of shortfall N 9144 viewed creation of plans N 9144 viewed creation as abuse V 9144 transfer liability of shortfall N 9144 transfer liability from LTV V 9146 reassume liability for plans N 9147 reassume responsibility for plans N 9149 consider creation of plans N 9149 consider creation as basis V 9149 reassume liability for plans N 9153 continue discussions with agency N 9162 is one of slew N 9162 hitched ads to quake V 9167 tied ads to donations V 9168 intermixed footage of devastation N 9168 intermixed footage with interviews V 9169 had airtime on Football N 9173 crash ads in days V 9174 learned art of commercial N 9174 learned art after crash V 9175 trotted crop of commercials N 9175 trotted crop after dip V 9176 created ad in weekend V 9179 see messages in advertising V 9184 see themselves as chasers V 9185 donate cents to Cross V 9190 basing donations on Doubles V 9190 works pitch into message V 9191 put plug for donations N 9191 put plug in game V 9193 made plea for donations N 9193 made plea in ads V 9193 helping people for years V 9196 has problem with that V 9199 awarded account to Zirbel V 9202 handled account since 1963 V 9205 acquire KOFY in Francisco N 9205 acquire KOFY for million V 9206 share liability for deaths N 9207 hear appeals by companies N 9207 have impact at levels V 9208 face prospect of liability N 9210 adopt logic of court N 9211 requiring liability among manufacturers N 9214 has influence on states V 9215 hear appeals by Co. N 9216 prevent miscarriages during pregnancy V 9217 banned use of DES N 9217 linked it to cancer V 9218 flooded courts in decade V 9223 extending statute of limitations N 9227 leaving award against Corp. N 9227 resolve questions about defense V 9228 defend themselves against lawsuits V 9228 following specifications of contract N 9229 approved specifications for contract N 9230 upheld award against Dynamics N 9230 rejecting use of defense N 9233 re-entered submarine through chamber V 9235 awarded damages to families V 9239 Let conviction of Lavery N 9242 Left award of million N 9244 draw conclusion from victory V 9260 renewing treaty with U.S N 9262 combined them with increases V 9265 reduce rates on income N 9267 delivered mandate for successes N 9268 adopt elements of model N 9271 are guide to levels N 9303 pulled plug on Contras V 9304 hold election in Nicaragua V 9306 knows difference between blunder N 9307 announcing end to cease-fire N 9307 produce concern over activities N 9309 justifies need for army N 9314 approved marketing of drug N 9315 clear price for treatment N 9315 receive approval by end V 9316 approved Proleukin in months V 9317 obtain clearance for distribution N 9318 keep records of transfers N 9318 move billions of dollars N 9320 working details with associations V 9321 identifying recipients of transfers N 9324 report withdrawals of 10,000 N 9328 oversees issue of laundering N 9329 have comment on plan N 9331 withdraw swap for million V 9332 replaced million in notes N 9332 replaced million with issues V 9333 filed request with Commission V 9334 citing developments in market N 9335 give stake in company N 9336 had losses in years V 9341 swap amount of notes N 9341 swap amount for shares V 9341 paying rate of % N 9341 protecting holder against decline V 9342 make million in payments N 9342 make million on notes V 9343 lower rate on debt N 9344 reached agreement with subsidiary N 9345 was agreement between distributor N 9345 expand market for drugs N 9346 promote TPA for patients V 9347 sending index for session V 9349 fell 1.39 to 451.37 V 9351 fell 5.00 to 432.61 V 9351 fell 3.56 to 528.56 V 9351 dropped 3.27 to 529.32 V 9353 gained 0.47 to 438.15 V 9356 manages million for Co V 9357 deduct losses from income V 9358 put pressure on both V 9362 advising lot of clients N 9362 make sense to them V 9363 awaiting resolution of debate N 9364 send prices in matter V 9366 surged 14 to 53 V 9368 complete transaction by 15 V 9369 advanced 1 to 20 V 9371 assumed place on list N 9371 gained 1 to 11 V 9371 joined list of companies N 9372 had talks with Jaguar N 9373 continue pursuit of company N 9375 gained 1 to 13 V 9376 reported profit of cents N 9378 fell 1 to 13 V 9380 had loss of million N 9381 fell 5 to 13 V 9382 reported loss of million N 9384 made provision in quarter V 9386 sank 4 to 13 V 9386 reorganize business as unit V 9387 establish reserve of million N 9387 establish reserve against loan V 9389 uncover handful of genes N 9389 unleash growth of cells N 9391 produce array of strategies N 9394 's set of discoveries N 9395 knew nothing at level V 9396 propel it into state V 9397 call class of genes N 9398 hold growth in check V 9401 cause cancer by themselves V 9406 is age of diagnosis N 9409 lost eye to tumor V 9411 faced risk than children N 9415 made insights about workings N 9417 fingered two of cancer-suppressors N 9418 made discovery in 1986 V 9425 inherit versions of genes N 9430 see pairs of chromosomes N 9432 inherited copy of 13 N 9432 inherited copy from parent V 9437 used battery of probes N 9437 track presence in cell N 9438 found defects in copy V 9444 repeat experiment in cells V 9445 was one of teams N 9445 was one in 1984 V 9445 report losses for cancer V 9446 turned attention to cancer V 9450 uncovering variety of deletions N 9457 nail identity of gene N 9457 flipped cell into malignancy V 9462 transform cells into ones V 9465 compared gene with gene V 9465 observing form of p53 N 9469 strikes members of families N 9469 predispose women to cancer V 9472 are reports of genes N 9474 isolate one on 18 V 9476 inherit gene on one N 9479 turn cascade of discoveries N 9479 turn cascade into tests V 9482 replace genes with versions V 9485 's glimmer of hope N 9486 breaks thousands of eggs N 9488 announced sales of Eggs N 9489 confirm identities of customers N 9493 consume pounds of eggs N 9498 debunk talk of over-capacity N 9498 take some of skeptics N 9498 take some on tour V 9499 been announcement of arrangement N 9499 been announcement for fear V 9503 sell shares in bet V 9503 allow return of shares N 9511 calls bull on stock N 9514 help line in run V 9522 pushing prices of potatoes N 9523 sent letters to growers V 9523 divert potatoes to outlets V 9525 become player in printing N 9526 acquire subsidiary for million V 9527 make printer behind Co. N 9529 is step in design N 9529 build Quebecor through acquisitions V 9530 achieved integration on scale V 9530 put newspaper on doorstep V 9531 is part of trend N 9532 positioned itself as one V 9533 is move for Quebecor N 9535 has sales of billion N 9538 including push into market N 9539 started Journal in 1977 V 9543 took advantage of strike N 9543 launch Journal de Montreal N 9546 outsells 3 to 2 N 9549 's news from A V 9551 made publisher in Quebec N 9552 is distributor of newspapers N 9553 controls % of Inc. N 9554 pay million in cash N 9554 pay million for Graphics V 9554 give stake in subsidiary N 9556 have plants in sales N 9557 own % of subsidiary N 9558 pay million for stake V 9559 finance share of purchase N 9560 is acquisition in year N 9561 bought plants from Inc. V 9562 doubled revenue to million V 9564 sold billion in businesses N 9565 has appetite for acquisitions V 9565 spend deal than billion N 9565 spend deal on purchase V 9566 rose pence to pence V 9570 approved sale of Kerlone N 9571 reach market through Pharmaceuticals V 9572 sued state for discrimination V 9575 challenges age of 70 N 9577 eradicate effects of practices N 9578 deprives state of judges N 9580 is one of experience N 9582 turned 76 on 9 V 9589 pending appeal of case N 9592 serve role on bench V 9598 approves appropriation for agencies N 9600 halted effort with resolution V 9604 lost seven of attorneys N 9606 been exodus of lawyers N 9616 recruits lawyers from disbanding V 9616 bring partners from Barell V 9617 lost partners during year V 9620 stopped inches above knees N 9623 rescheduled case for 27 V 9626 resumed talks on battle N 9626 level accusations at each V 9627 filed breach of suit N 9627 filed breach in Court V 9628 talking yesterday in attempt V 9628 settle matter before Thursday V 9630 taken Guber at word V 9631 terminate it at time V 9632 have access to contracts N 9632 were part of negotiations N 9633 denying claims by Peters N 9633 terminate contract with Warner V 9635 described assertions in filings N 9635 produce movies for Warner V 9637 paid salary of million N 9638 filed lawsuit in Court V 9638 block offer by Partners N 9638 violates agreement between concerns N 9639 led Associates by New N 9639 filed suit in court V 9640 rejected offer from DPC N 9641 launched offer for maker N 9646 have impact on quarter N 9648 climbed % to billion V 9650 is effect on Boeing N 9653 get aircraft with supervisors V 9655 included 21 of jets N 9659 lose business in sense V 9663 faces risks on contracts V 9664 is contractor on projects N 9665 record loss in 1989 V 9669 representing 30,000 of employees N 9673 be % for year N 9676 increased % to million V 9677 soared % to 15.43 V 9678 provided information to Force V 9678 replace skins on aircraft N 9680 is culmination of investigation N 9681 was grounds for prosecution N 9683 filed application with regulators V 9683 transport gas from Arctic V 9684 be battle for right N 9684 transport quantities of gas N 9684 transport quantities to markets V 9685 is strike by Foothills N 9687 including one from Ltd. N 9688 won approval from Board V 9688 export feet of gas N 9688 export feet to U.S. V 9689 is 71%-owned by Corp. N 9690 waved flag for stage N 9693 build pipeline with capacity V 9693 transport feet of gas N 9694 has monopoly on transportation V 9698 be party to system N 9698 consider ventures with players N 9701 reach 3.25 by 1995 V 9702 see return on investment N 9703 enter contracts for gas N 9703 develop reserves in area V 9706 connecting reserves to mainline V 9707 forge kind of consensus N 9707 forge kind between builders V 9707 undertaking hearings into projects N 9711 gives kind of position N 9712 delaying approval of acquisition N 9712 pending outcome of examination N 9714 won commitments from banks N 9714 make loans in neighborhoods V 9717 filed petition with Fed V 9718 challenged record in state N 9718 shut itself from contact V 9719 deferring action on merger N 9719 is information in record V 9719 reach conclusion on record N 9719 meet needs of communities N 9719 including neighborhoods in communities N 9720 begin examination of units N 9720 begin examination in weeks V 9725 double franchise in Florida N 9725 double franchise to billion V 9726 make bank after Inc. N 9726 be market in country N 9727 rose cents to 23 V 9729 denied application by Corp. N 9729 purchase Bank in Scottsdale N 9729 denied application on grounds V 9730 signaled emphasis on Act N 9732 explore options for future N 9734 deliver plan to committee V 9735 make recommendation on plan N 9737 reselling million of securities N 9738 raise million through changes V 9739 have effect on structure N 9742 pay cents on dollar N 9745 miss projections by million V 9746 miss mark by million V 9747 meet targets under plan V 9748 called report off base V 9750 taken position on plan N 9752 sell billion in assets N 9760 rated single-A by Inc V 9761 expect rating from Corp. V 9761 has issue under review V 9767 has date of 1998 N 9774 yield 15.06 via Ltd V 9777 yield 17.06 via Corp V 9779 yield % via Switzerland V 9785 protect interests as shareholder N 9786 be blow to both N 9790 reflects eagerness of companies N 9793 buy stake in Lyonnais N 9794 sought acquisition for years V 9795 shocked some in community N 9800 following suspension of shares N 9800 pay francs for share V 9801 holds stake in subsidiary N 9803 ties it to Mixte V 9809 be news for management N 9811 boost stake over days V 9812 offer francs for shares V 9813 offer francs for shares V 9814 swap shares for share V 9815 holds % of Mixte N 9815 cost it under bid V 9816 values Mixte at francs V 9816 exchange them for shares V 9817 acquire unit for million V 9818 is supplier of cable N 9822 acquire interests from unit V 9824 requires approval from Canada N 9824 monitors investments in Canada N 9825 is part of plan N 9826 be acquisition outside country N 9826 form basis for unit N 9829 have capacity than disks N 9830 begin production of drives N 9830 begin production in U.S. V 9836 pay dealers over years V 9839 is segment of circulation N 9841 reported loss of million N 9842 attributed loss to prepayments V 9845 gives sense of control N 9847 posted loss of million N 9847 posted loss against income V 9848 closed yesterday at 4.625 V 9849 reject offer from investor N 9849 buy Bancroft for 18.95 V 9850 consider offer in couple V 9852 boosted holdings in Bancroft N 9852 boosted holdings to % V 9858 has ties to chain N 9859 assembled committee of directors N 9862 make announcement about situation V 9863 won verdict against Rubicam N 9863 won verdict in case V 9866 considered imitation of song N 9870 imitate voices of performers N 9872 use songs in ads V 9873 including action by heirs N 9874 dismissed case in 1970 V 9878 are repositories for making N 9878 making distinctions about singers N 9882 acquired operations of N.V. N 9882 acquired operations for million V 9883 is maker of products N 9884 includes assets of Papermils N 9885 had revenue of million N 9886 has interests in businesses N 9887 form ventures with companies V 9888 become part of ventures N 9892 obtain waiver from lenders V 9895 climbed points in spate V 9899 lent support to dollar V 9904 sent pound into tailspin V 9906 quell concern about stability N 9907 provide solution to troubles N 9910 hit rating of leader N 9913 is potential for unit N 9917 kept base of support N 9917 kept base at yen V 9918 began yesterday on note V 9923 acquired portfolio from Association V 9925 includes million in receivables N 9926 is subsidiary of Co. N 9931 preserve hold on power N 9931 destabilize nation with demands V 9933 following vigil around headquarters N 9935 detained number of protesters N 9936 protesting trial of chief N 9937 opposing limits to autonomy N 9939 sentenced Palestinian to terms V 9939 forcing bus off cliff V 9940 received sentences for each V 9942 resolving differences in proposals N 9943 urged ban on output N 9946 use attacks by rebels N 9946 use attacks as excuse V 9951 torched flags on steps V 9951 protecting flag from desecration V 9953 take effect without signature V 9954 replace soldiers in Square V 9955 filed protests in days V 9955 alleging harassment of diplomats N 9958 accused government of response N 9959 summoned advisers for talks V 9959 following resignation of Lawson N 9961 granting amnesty to people V 9964 Died Fossan in Morristown V 9965 provide services at mine V 9966 direct expansion of capacity N 9969 reduce personnel in sectors V 9973 rose % amid growth V 9975 cited effects of concentration N 9977 spark period of consolidation N 9980 doing arbitrage for account V 9986 received offer from financier V 9987 forced company into protection V 9988 sell interest to Estate V 9990 replaced executive for time V 9994 fuel concern about growing N 9995 posted jump in earnings N 9996 delayed approval of Union N 9996 pending review of practices N 9997 entered battle between Mixte N 9998 rose % in September V 9999 citing turmoil in market N 10006 sustained damage of million N 10007 carries million of insurance N 10008 told analysts in York N 10008 expects earnings in 1990 V 10010 mentioned investment by Bell N 10012 build plant in Europe V 10012 reach agreement with unions V 10014 encompass plans for venture N 10016 made time in weeks N 10017 won clearance for reorganization N 10019 set 15 as date V 10021 receive share in company N 10023 transfer million of assets N 10024 retain interest in company N 10025 announced breakup in May V 10026 be rivals for orders N 10033 announced reduction in employment N 10034 follows string of glitches N 10035 had loss of million N 10036 fell % to million V 10037 bring employment to workers V 10039 approved swap between group N 10040 reinforce operations in markets N 10040 shows dynamism of concerns N 10041 taking place in accord N 10045 received tenders for % V 10050 taken practice to extreme V 10051 design system for city N 10056 wanted foot in door N 10057 want experience in field N 10058 expect market in future V 10059 's kind of investment N 10062 understand enthusiasm in getting N 10064 approve bid in advance V 10066 design specifications for system N 10066 show lines throughout city N 10069 give edge in winning N 10070 secure pacts with municipalities V 10076 closing competitors by slashing V 10077 sacrifice profit on project V 10080 expand service with flights V 10083 has population of citizens N 10084 fly flights to cities V 10085 solidify position as carrier N 10086 rose % in months V 10087 meet goal for year N 10088 generates bulk of profit N 10089 give figures for months N 10090 acquire Corp. for 58 V 10091 capped week of rumors N 10091 making bid for Nekoosa N 10094 spark period of consolidation N 10095 be fit because lines N 10095 representing premium over price N 10100 is offer since collapse N 10101 cast doubt on business V 10102 outperformed market in years V 10102 lagged market in period V 10106 expect comparisons through year V 10107 avoid some of pressures N 10110 included assumption of million N 10110 reduce exposure to market N 10111 is dealer-manager for offer N 10112 acquire retailer for 50 V 10114 reached agreement in principle N 10114 reached agreement for acquisition V 10117 operates stores in states N 10119 controls % of market N 10119 increase number of stores N 10120 control % of business N 10120 control % by 1992 V 10121 received contracts for aircraft N 10122 awarded contract for contract V 10123 got contract for sets N 10124 received contract for support V 10125 purchase million of shares N 10125 purchase million over months V 10129 omits roots of population N 10131 creates guilt about wearing N 10131 raises doubt about having N 10132 is time for Congress N 10134 castigating Marshall for muscling V 10137 be part of problem N 10147 Succeeding him as executive V 10149 named Foret as president V 10150 is veteran of Air N 10151 been president for planning N 10154 returning Inc. to profitability V 10155 was executive with concern N 10156 produce profit in quarter V 10158 keeping tabs on units N 10161 began discussions with buyers N 10162 inform managers of some N 10163 is one of handful N 10165 heads Eastern in proceedings N 10166 had turn at running N 10169 repay million on 31 V 10171 sell assets for million V 10173 had change in earnings N 10175 compares profit with estimate V 10175 have forecasts in days V 10177 assumed post of officer N 10181 rose % in quarter V 10185 is time in part N 10188 imagine such in lives N 10191 have grip on heart V 10193 has near-monopoly on supply V 10193 reduce levels in blood N 10194 scarfing psyllium in cereals V 10195 become epicenter of fad N 10195 rival fads since oil N 10198 takes place of bran N 10200 remain item for time V 10201 is crop as fenugreek V 10202 eat bowl of psyllium N 10202 are innocents in world N 10206 taking it since 1961 V 10207 prescribe it for problems V 10208 apply it to joints V 10210 explain allusions to fleas N 10213 been ingredient in laxatives N 10214 lower levels in blood N 10215 ordered studies on cholesterol N 10216 tested people with levels N 10223 hurt sales of cereals N 10225 is lull in war N 10228 yanked psyllium off shelves V 10229 approves uses of psyllium N 10236 get rain at time N 10238 grasping implications of research N 10239 has psyllium on page V 10240 keep news of boom N 10243 are places in world N 10252 passing psyllium in favor V 10257 completed acquisition of maker N 10258 disclose terms of agreement N 10267 lose job over this V 10268 find job with plan N 10270 rank availability as one V 10271 get coverage at all V 10273 makes mockery of idea N 10273 collect premiums from the V 10276 was backwater for them N 10277 's roll of dice N 10278 go % to % N 10280 be risks during year V 10280 aggravated problem in market N 10282 blame problem on competition V 10284 combine groups of people N 10284 combine groups into groups V 10284 spreading risk over base V 10285 accusing insurers of dereliction N 10286 destroy it in marketplace V 10288 is part of legislation N 10289 support idea of regulations N 10289 requiring use of rating N 10289 pegs rates to use V 10289 prevent companies from taking V 10289 taking companies as clients V 10290 requiring inclusion of items N 10292 were clinics in state V 10296 get insurance without excluding V 10301 uses base of 1981 N 10301 uses base as 100 V 10309 had results with earnings V 10309 declining % to million N 10309 declining % on decline V 10313 amended plan by reducing V 10313 trigger issuance to holders N 10315 purchased shares through 29 V 10317 estimated value at 55 V 10324 regarding sale of company N 10325 reach agreement by end V 10326 gained 9.50 to 39 N 10327 has value of million N 10339 reinforce profile of community N 10340 bedevil economy throughout 1990s V 10343 offer alternatives to industry N 10345 lifted status as center N 10357 cast pall over prospects V 10358 regain momentum until time V 10361 accept possibility of slowdown N 10363 derived scenarios from interviews V 10367 bears resemblance to difficulties N 10371 triggered rioting in colony N 10376 lose some of flavor N 10377 lose some of dynamism N 10381 taking fallout from crisis N 10381 projected growth of % N 10386 have bearing on economy V 10397 fled cycles of poverty N 10397 took power in 1949 V 10399 ratified accord on future N 10404 know cost of drain N 10406 continue strategies at blast V 10407 suspend trading for accounts V 10409 handle trading for customers V 10410 launch programs through market V 10417 see debate over trading N 10417 see debate as repeat V 10418 exonerated trading as source V 10422 match performance of market N 10425 managed billion in investments N 10425 tracking 500 at end V 10427 use markets as tool V 10427 is strategy than arbitrage N 10427 buy blocks of stocks N 10428 heightened concerns about volatility N 10429 blame trading for aggravating V 10430 followed blacklisting by investors N 10433 doing trades for customers V 10433 do trades for account V 10434 been one of traders N 10434 been one in months V 10435 form group of regulators N 10438 Joining call for kind N 10440 determine amount of cash N 10444 reestablish link between markets N 10445 invites bouts of arbitrage N 10446 be coordination on basis V 10447 have authority over products V 10448 represent confluence of self-interest N 10450 keeping viewers from defecting V 10450 fill airwaves with sensationalism V 10451 get programs about rape N 10454 acquired sense of place N 10454 does job of tracing N 10454 tracing repercussions of crime N 10455 establish sense of place N 10455 establish sense in movie V 10461 're kind of Jewboy N 10462 is dweller on one N 10468 saying grace at table V 10468 indulging taste in fleshpots V 10472 resemble nightmare as dystopia V 10474 's member of patriarchy N 10476 's director of chapter N 10481 is judge of charm N 10484 share excitement of rapist N 10488 pour feelings about rape N 10491 recommended suspension of payments N 10494 assist it in developing V 10496 reported loss of million N 10497 was write-down of million N 10498 write value of acquisitions N 10503 lowered rating on stock N 10511 had luck with shows V 10512 gives boardroom for classroom V 10513 gathered names of makers N 10515 Using mail for show V 10517 employing kind of plea N 10518 reach chunk of homes N 10518 reach chunk by mailing V 10526 gives A for moxie N 10527 is one of them N 10531 's matter of being N 10536 have access to companies V 10544 buy item for % V 10547 featuring sketches of suit N 10547 marketing image in campaign V 10548 shows neckties with designs N 10552 be shot without suit V 10553 change perceptions about range N 10559 totaled million on sales V 10564 lost customers to stores V 10565 has lock on customer N 10566 making break from tradition N 10568 make strides in business N 10570 are cycles in merchandise N 10572 sees potential in Brothers V 10573 open stores in years V 10577 make all of merchandise N 10577 shut one of plants N 10577 closed departments in stores V 10579 unveil refurbishing at store N 10585 sell type of suit N 10592 cancel portion of plan N 10592 cancel portion for reasons V 10603 is time for change N 10605 smoothed way for link N 10608 spent lot of time N 10608 spent lot at headquarters V 10610 making economies across board V 10611 blames difficulties in reruns N 10611 blames difficulties for problems V 10616 rose pence to pence V 10618 extend bid to 6 V 10621 pending decision by regulators N 10623 gave an until mid-November N 10624 submits details of investments N 10624 submits details to regulators V 10629 postpone ruling on lawsuit N 10630 be judgment on merits N 10637 approved terms for series N 10638 issue total of million N 10642 put incentive on trucks V 10643 offers financing in lieu V 10644 convert case into liquidation V 10645 end feud between creditors N 10646 have value of million N 10646 has priority in case N 10648 following voting by creditors N 10649 have 7 after all V 10652 hearing testimony in dispute N 10653 seeking repayment of loan N 10653 give priority over that N 10653 won judgment against Hunt N 10653 won judgment in case V 10654 driven value of claim N 10658 fine attorneys for creditors V 10661 met fate after opposition V 10662 accept version of them N 10663 reached agreement with Hunt N 10665 named director of company N 10665 increasing membership to 14 V 10666 signed letter of intent N 10666 acquire unit of Bank N 10669 has employees in offices N 10671 completed purchase of businesses N 10673 had gain on transaction N 10673 including part of gain N 10674 escape taxes on portion N 10675 including credit of million N 10676 is result of having N 10676 provided taxes at rates V 10677 redeem million of % N 10678 pay 1,059.04 for amount V 10683 extended offer of 18 N 10685 review supplement to offer N 10686 launched offer on 26 V 10686 change conditions of offer N 10687 based projections of performance N 10687 based projections on forecast V 10689 fell cents on Friday V 10692 began negotiations about terms N 10693 provides information about markets N 10693 provides information through network V 10694 owns % of Telerate N 10695 won contract for casings V 10696 received contract for parts V 10697 completed acquisition of Inc. N 10698 paid million of shares N 10698 paid million for Falcon V 10701 totaled 10,674,500 at 1 V 10706 retain positions as treasurer N 10708 used trademarks without authorization V 10709 depicts group of members N 10714 approved portrayal of Angels N 10716 depicts them as showing V 10719 are chapters in countries N 10720 named chairman of company N 10723 elected chairman of subsidiaries N 10727 reported rash of landings N 10727 bringing aliens to Voronezh V 10728 is opinion of Good N 10729 had relationships with aliens N 10731 devotes space to events V 10731 spotted lights in sky N 10732 sounded alarm at 2:25 V 10732 summoning wardens to duty V 10734 targeting assortment of aircraft N 10737 provides explanation in form N 10737 wrote commander in chief N 10738 make decision about sightings N 10739 been ton of them N 10740 be investigation of phenomenon N 10741 owe it to people V 10741 produce enlightenment on subject N 10742 make piece about sightings N 10742 make piece about sightings N 10747 haul bunch of rocks N 10747 haul bunch around universe V 10749 radioing position to control V 10750 found aircraft in clearing V 10753 overwhelm town in Finney V 10756 takes look at crash N 10757 knows lot about aliens N 10758 had sex with one N 10759 tells it in prose V 10759 call parts of balloon N 10761 made + of marshmallow N 10762 is writer for News N 10764 buy Trustcorp for shares V 10767 left survival in doubt N 10768 nursed itself to health V 10771 spent guilders on acquisitions V 10772 sold guilders of assets N 10776 pursue acquisitions in area V 10777 considering alliances with companies N 10779 show profit of guilders N 10782 be one of companies N 10783 show earnings of guilders N 10783 show earnings in 1990 V 10790 reduce danger of cycles N 10791 was acquisition of business N 10792 is producer of salt N 10795 eliminate jobs in Netherlands N 10796 has hopes for businesses N 10797 is second to Kevlar N 10801 completed acquisition of Inc. N 10802 see growth from coatings N 10804 is seller of pills N 10804 enter market in U.S. V 10805 sell pill in U.S. V 10805 have approval in 1992 V 10806 has operations in tests V 10809 see departure from government N 10810 is politician with courage N 10810 slashing rate of taxation N 10810 slashing rate to % V 10815 recognizing seriousness of issues N 10817 stabilize level by stabilizing V 10818 spread advantages of currency N 10818 spread advantages through fixed V 10821 is thing in London N 10822 sparking growth in Britain N 10822 regulate policy by targeting V 10823 defend rates to death V 10824 have effects on accounts V 10825 increased rate of return N 10827 produced burst in demand N 10827 is surge in aggregates N 10828 stop boost in aggregates N 10830 ensure permanence of policy N 10830 ensure permanence by joining V 10831 issued warnings of inflation N 10832 laying seeds of protectionism N 10837 soliciting opinions on it N 10837 offer some of collection N 10837 offer some for benefit V 10841 achieved reduction in wages N 10842 gives bias toward inflation N 10844 regains some of credibility N 10845 argues case for Alan N 10847 chides Chancellor for being V 10852 tie currency to one V 10855 shake ghosts of heads V 10855 is definition of operation N 10861 have policy for experience V 10867 reducing supply of goods N 10868 return surpluses to economy V 10868 balances demand for money N 10870 prompted takeover by Group N 10871 increase margins to % V 10872 made comments during interview V 10872 detailing plans for agency N 10873 take post at Express N 10878 spend time with clients N 10878 freed himself by delegating V 10879 planning visits to number N 10883 name executive on account N 10883 name executive as director V 10884 is integration of work N 10885 have system in place V 10888 had record for year V 10889 get revenue of office N 10891 is disruption at the N 10891 is member of Mafia N 10893 leaving time for interests N 10899 assumes control of businesses N 10899 assumes control in way V 10899 sublet floors in building N 10899 sublet floors to outsiders V 10900 be part under rules N 10902 win account in 1981 V 10903 minimize reaction from others N 10904 defending himself against charges V 10904 have impact on Y&R V 10909 named Heller as partner V 10916 said holders of amount N 10916 convert debt into shares V 10918 represent % of amount N 10919 sells variety of products N 10922 was million against loss N 10925 reflect performances for year N 10926 acquired businesses in 1988 V 10927 including acquisitions for years N 10928 reported loss for 1989 N 10929 increased % in 1989 V 10934 led buy-out of Macy N 10934 led buy-out in 1986 V 10935 estimates debt at billion V 10943 including breakage of windows N 10944 see effect as material V 10945 sell businesses to unit V 10947 had sales of million N 10947 was % of revenue N 10949 is part of program N 10949 pay billion of loan N 10949 pay billion by February V 10950 use billion from sale N 10954 bought RJR in February V 10954 sell billion of assets N 10955 are leaders in markets N 10960 makes kinds of sense N 10961 given mandate from Switzerland N 10963 make contribution to commitment N 10964 fell % to million V 10965 reduced income by million V 10965 including million from Hugo N 10968 processing claims from earthquake N 10969 has estimate of impact N 10971 had loss on line N 10972 fell % to million V 10973 posted gain to million N 10974 included gains of million N 10975 rose % to million V 10980 bore messages of peace N 10981 served years in prison V 10983 are times in politics N 10984 entice each to table V 10985 abandon use of violence N 10991 extend hand to government V 10992 earn place among peacemakers N 10992 chooses path of settlement N 10994 ease repression in areas N 10994 keeps grip in others N 10995 releases Sisulu without conditions V 10996 keep pressure on government N 10997 increase sanctions against Pretoria N 10997 urged supporters inside country N 10998 make changes at pace V 11004 was flag of the N 11006 captured stage of life N 11007 create climate for negotiations N 11007 lift restrictions on organizations N 11007 remove troops from townships V 11007 end state of emergency N 11012 Echoing phrase from Klerk N 11013 shuttered plant in Lester N 11013 pulled plug on business V 11014 enjoying resurgence in demand N 11014 join legion of producers N 11016 seen increase in orders N 11018 boost line in coming V 11020 expects need for megawatts N 11021 received orders for turbines N 11023 took positions in plants N 11024 put all of million N 11025 provide power to Co. V 11027 fend competition in U.S. N 11027 fend competition from competitors V 11028 purchase turbines from partner V 11028 sell them with generators V 11029 giving edge in developing N 11030 utilize plants at times V 11030 take advantage of fluctuations N 11031 gain lot of sourcing N 11033 challenged venture with Boveri N 11035 expects half of orders N 11036 meet demand with facilities N 11039 received order for plant N 11039 received order in decade V 11040 expects order by 1995 V 11043 measures two on Richter V 11045 put seven of 17 N 11045 put seven in perspective V 11046 buy one of those N 11046 buy one after all V 11047 putting end to Series V 11048 did things with baseballs V 11049 propelled of'em of confines V 11050 gave sweep of series N 11055 brought heat to plate V 11063 win six of games N 11063 win four of 10 N 11064 ranked 1 in polls V 11065 rode run to triumph V 11067 led Leagues in wins V 11067 flattened Jays for pennant V 11069 play outfielders on side V 11071 broke record for set N 11072 hit homers with centerfielder V 11073 tied marks for triples N 11074 was hitter with 33 N 11077 shut Giants on hits V 11077 allowed runs on hits N 11077 allowed runs in innings V 11078 was note on couple N 11080 lifted spirits by visits V 11081 toasted victory with beer V 11086 was year of agency N 11087 won titles in seasons V 11088 includes burgs as Oakland N 11095 market speed as part V 11095 improve quality in operations N 11096 increase satisfaction through speed V 11096 shift responsibility for analyzing N 11096 shift responsibility from themselves V 11102 deliver package by time V 11108 earn dinner with spouses N 11109 reduce time for sort N 11115 identified snags in process N 11117 proposed modifications in process N 11117 proposed modifications to management V 11118 benefits customers in ways V 11119 taken responsibility for quality N 11121 produce proposal for contract N 11123 needed contributions from all N 11124 reached consensus on objectives N 11124 produced statement of work N 11125 developed contribution to proposal N 11125 submitting estimates on schedule N 11126 were part of team N 11130 be source of advantage N 11131 recognize speed as component V 11133 improve quality of work N 11134 is president of ODI N 11136 's conclusion of report N 11138 increase quantity of copying N 11139 casts doubt on contention N 11139 copyrighted material by tapers N 11141 is nail in coffin N 11144 received copy of report N 11145 make copies from copies N 11146 warrant years of wrangling N 11148 consider copying for use N 11150 suggest range of options N 11151 makes definition of status N 11151 makes definition of status N 11151 prevent changes to law N 11151 finding balance of benefits N 11154 rocking community with dealing V 11155 achieved this in part V 11155 getting foot in door V 11157 approve merger at meetings V 11160 be return on investment N 11161 bought stake in Inspectorate N 11161 bought stake for francs V 11161 building company with acquisitions V 11163 offer view of Alps N 11165 is Renoir on wall V 11166 having fortune of francs N 11169 found companies with earnings N 11170 making minds about Rey V 11172 laid foundations of prominence N 11172 laid foundations with raid V 11176 sell shares to maker V 11177 made francs on sale V 11185 brought merger in years V 11186 become part of empire N 11192 enjoyed status of knight N 11193 preferred him to financier V 11194 selling dozens of companies N 11200 bought stake in AG N 11201 makes sense for Inspectorate-Adia N 11202 is example of conservatism N 11209 signed letter of intent N 11210 generate million in sales N 11211 market line of minicomputers N 11214 shut lines at time V 11216 provide bonuses over life V 11221 feeling effects of budget N 11223 become president of group N 11224 reorganize all into divisions V 11227 's step to returns N 11229 reflects confidence in Pinick N 11229 doing business with military V 11231 oversees exports of goods N 11231 take decisions on trimming N 11231 trimming list of items N 11232 ease restrictions on exports V 11233 ease restrictions on types N 11236 was matter for discussion N 11238 treating China as case V 11240 improve procedures for punishing N 11241 speed both of functions N 11242 take write-offs on problems N 11247 inched % in quarter V 11247 had loss of million N 11250 save million in costs N 11250 save million at end V 11251 took write-off of million N 11251 cover losses on contracts N 11251 took look at prospects N 11253 leave Unisys with million V 11253 cut payments in quarters N 11254 reduced inventories during quarter V 11254 leaving it within million V 11255 overcome weakness in U.S. N 11255 relied results over quarters V 11256 reported growth in business N 11257 betting business on assumption V 11260 pay million in interest N 11260 pay million on top V 11261 approaching year with caution V 11262 see growth in cards V 11267 have assets as company V 11268 minimize challenges of term N 11271 had losses of million N 11271 inched % to billion V 11273 cutting estimate for year N 11273 cutting estimate to 2 V 11277 fell cents to 16.25 V 11278 facing camera after forecast V 11279 finds himself in position V 11279 buzzes Midwest on trip V 11281 recanted series of forecasts N 11285 raised percentage of bonds N 11285 raised percentage from % V 11286 including some at Lynch N 11287 softened talk about recession N 11290 oversees billion in accounts N 11290 include everything from funds N 11293 was economist from 1967 V 11293 heralded recession for months V 11296 pulled forecast at time V 11303 Carrying message on road V 11308 says something about people N 11309 'm one of them N 11311 lists array of scenarios N 11312 pin Straszheim to wall V 11313 shoves handout at him V 11316 's all in handout N 11317 have recession at point V 11325 Explaining change of mind N 11325 pin this on factor N 11331 's pressure on economists N 11337 holds stake in Corp. N 11337 seek control of company N 11338 made disclosure in filing V 11339 seeking control of Roy N 11339 seeking control through offer V 11339 evaluate acquisition from time V 11342 leaped 2 to 18.375 V 11343 has comment on filing N 11344 fended overtures from Corp. N 11345 purchase line for million V 11346 acquired % of stock N 11346 acquired % before throwing V 11347 raising stake in July V 11348 made overtures to board V 11349 signed letter of intent N 11352 earned million on sales N 11355 denounced Thatcher for having V 11355 heed men in Cabinet N 11356 precipitated crisis by portraying V 11356 portraying Thatcher as autocrat V 11356 thrown policy into confusion V 11356 driving figure from government V 11360 anchor dollar to gold V 11362 cut rate to % V 11362 flooded country with money V 11362 prevent pound from rising V 11365 pushed rates to % V 11367 realizing mistake in letting N 11367 tying pound to mark V 11367 subordinates currencies to policy V 11368 put Thatcher in bind V 11372 drives value of currency N 11373 caused government in France N 11375 attracting capital whether one N 11378 saddled Thatcher with deficit V 11379 keep Lawson in office V 11380 prevent deficit by inflating V 11383 was victim of confusion N 11384 ignored role of rates N 11384 emphasizing flows in response N 11385 led them in circle V 11387 attract flows in order V 11389 reconsider prospects for integration N 11389 reconsider prospects in light V 11390 become vassals of state N 11393 recognize futility of trying N 11393 offset effects of reduction N 11394 was secretary under Reagan V 11397 fueled growth in quarter V 11397 raising questions about strength N 11398 grew % in September V 11401 rose % in September V 11403 propelled expansion in quarter V 11407 's lot in wings N 11407 keep growth above % V 11417 sell stake in mine N 11417 sell stake to Pty. V 11420 bought interests for million V 11424 sees alliances with others N 11424 sees alliances as way V 11426 is reference to effort N 11429 buying some of company N 11429 buying some next year V 11431 buy million in notes N 11433 achieving flow from operations N 11434 has intention of tapping N 11437 achieve levels of earnings N 11438 reported earnings of million N 11439 reflecting closing of unit N 11440 including portion of unit N 11440 be question of strategy N 11442 operates lotteries in states N 11443 seeking applications for technology N 11443 is interest in games N 11445 consider some of technology N 11446 achieved profitability after quarters V 11448 announced agreement with Inc. N 11448 develop machines with simplified N 11449 slash costs in half N 11449 slash costs by end V 11452 sees opportunities in integration N 11453 getting % of dollars N 11454 spend lot of money N 11454 spend lot on that V 11457 Reviewing scrape with disaster N 11459 considering possibility of takeover N 11462 start commute to work N 11462 start commute with tearing V 11464 hear criticisms of activists N 11464 rid beaches of waste N 11466 provide awareness to lawmakers V 11469 say it for you V 11470 demonstrated sensitivity to decades N 11479 justifies characterization of Greens N 11483 have burden of proving N 11483 urge prohibition for enactment N 11483 urge prohibition into law V 11485 posted profit of billion N 11486 posted such since 1970s V 11488 attributed results to climate V 11490 increased % in 1988 V 11493 quoted chairman as saying V 11493 fear slip of tongue N 11494 foil conspiracies of services N 11494 use groups in country N 11495 restricted exports to countries N 11498 back demands for pay N 11498 back demands with strikes V 11500 cut week to hours V 11501 came news of alarm N 11501 tap fields off coast N 11503 lower Venice by inches V 11504 preserve city of canals N 11505 sunk inches in century V 11506 establish operation with partners V 11507 begin operations in 1990 V 11508 send section of catalog N 11508 send section to customers V 11508 have access to currency V 11509 imposed duties on imports V 11511 suffered pressure on prices N 11512 signed agreement with Soyuz N 11512 swap recorders for iron V 11514 ban violence from television V 11517 doubled dividend to cents V 11518 spun subsidiary into Kaufman V 11518 changed name to Inc V 11522 buy Inc. in transaction V 11523 buy Co. for million V 11524 produce movies for Warner V 11531 take them with you V 11533 file batch of documents N 11534 block duo from going V 11535 provide peek into workings N 11546 disputes version of call N 11551 backs Peters in declaration V 11554 screen picture without telling V 11558 give input on film N 11560 advised Semel of offer V 11560 realized ambition of running N 11560 having position in company V 11561 buy part of MGM N 11562 crossed MGM with pen V 11562 giving document to Semel V 11562 have objection to positions V 11564 have impact on Warner V 11565 let producers of contract V 11568 sue Sony for tons V 11571 controlling segments of business N 11572 took encouragement from executives V 11573 strengthen relationships with producers N 11573 encouraged Guber in ambitions V 11576 have projects in development N 11576 have projects for Warner V 11579 started frenzy for projects N 11583 serve market of homes N 11585 ended 1989 with deficit V 11586 finding lining in report V 11591 exceeded target by billion V 11592 sets target of billion N 11593 slowed progress of legislation N 11593 slowed progress to halt V 11593 triggering cuts under law N 11594 blame each for turning V 11594 turning taxes into such V 11595 showed sign of retreating N 11596 accept bill like one N 11596 increase spending in years N 11597 Underscoring size of deficits N 11597 exceeded spending on Security N 11599 rose % to billion V 11601 marked forecast by million V 11602 ran deficit of billion N 11608 converting plant to facility V 11611 suffered loss of million N 11612 receive million in interest N 11612 receive million from court V 11615 Accrued interest on refund N 11617 acquire % of Co. N 11618 pay yen for shares V 11619 rebut criticism of investments N 11619 hailed transaction as proof N 11619 make investments in Japan V 11620 echoed view of accord N 11623 post loss of yen N 11623 exceed assets by yen V 11624 find companies in Japan N 11626 acquired hundreds of companies N 11627 touch wave of purchases N 11630 was one of makers N 11635 moved production in response V 11635 build plants in Asia V 11637 be investment for concern N 11638 recommending acquisitions of companies N 11638 recommending acquisitions in future V 11642 is fit for operations N 11642 make televisions on basis V 11643 move production of products N 11643 move production of products N 11645 jettisoning structure of Sansui N 11645 bringing executive as president V 11646 is matter for the N 11647 used it as base V 11647 doubling profits since 1980 V 11648 acquire business of unit N 11648 acquire business for million V 11649 posted jump in profit N 11652 pushed LIN into corner V 11652 forcing debt on company V 11653 mortgage power in order V 11653 placate holders in term V 11654 combine properties with BellSouth V 11655 representing payout of billion N 11655 receive dividend before merger V 11657 received dividend of 20 N 11658 buy interest of partner N 11661 cover payments on debt N 11662 estimate value of proposal N 11662 estimate value at 115 V 11663 value bid at 112 V 11665 owns % of stock N 11672 have interest in company N 11673 ease concerns of investors N 11673 give protection to holders V 11673 buy rest of company N 11676 begin process in 1994 N 11676 begin process for remaining V 11681 is deal to McCaw N 11686 preventing BellSouth from buying V 11686 buying shares in meanwhile V 11688 dilute earnings by both V 11690 earned billion on revenue V 11691 predicting earnings in range V 11692 fell cents to 52.125 V 11693 fell 2.50 to 37.75 V 11694 including million in markets N 11695 filing suit against BellSouth N 11695 filing suit with Department V 11695 oversees enforcement of decree N 11695 broke system in 1984 V 11697 conduct auction on field V 11698 adding voices to chorus V 11700 making it for traders V 11701 offsetting trades in futures N 11701 affects market through stocks V 11705 lose ground against segments V 11706 trade stocks without moves V 11708 are neither to market N 11709 turned some of those N 11709 turned some against it V 11712 executes trades for clients V 11715 does trading for accounts V 11716 were programs in years V 11718 slashed inventories of they N 11719 protect investment from eroding V 11720 buy shares from sellers V 11722 makes sense for us N 11722 put money at risk N 11723 creating problems in stocks N 11726 oversees trading on Nasdaq N 11728 lose sight of that N 11736 re-entering market after selloffs V 11738 tumbled 5.39 to 452.76 V 11740 fell % on Friday V 11741 lost % to 448.80 N 11744 surged 5 to 112 V 11744 sweetened agreement in attempt V 11744 keep shareholders from tendering V 11744 tendering shares to Communications V 11745 dropped 1 to 37 V 11745 offered 125 for majority V 11746 boosts amount of dividend N 11748 eased 1 to 31 V 11749 have impact on earnings N 11750 fell 7 amid concerns V 11751 resume shipments of chips N 11751 resume shipments within two V 11752 rocketed 1 to 39 V 11752 regarding acquisition of company N 11753 rose 3 to 20 V 11753 approved Bank of acquisition N 11754 fell 4 to 15 V 11756 earned 376,000 on revenue N 11756 earned 376,000 in quarter V 11757 including sales of joint-implants N 11761 recovered some of losses N 11762 spark weakness in London N 11763 settled points at 1678.5 V 11766 showed fears over status N 11768 attributed volume to selling V 11768 regain control of government N 11768 renew efforts at nationalization V 11771 skidded 1.74 to 123.5 V 11772 fell 5 to 286 V 11773 was pressured by recommendations N 11774 eased 1 to 416 V 11775 dropped 11 to 10.86 V 11775 skidded 9.5 to 200.5 V 11775 fell 10 to 250 V 11778 fell points to 35378.44 V 11782 placed orders in morning V 11782 start day for transactions N 11783 sell stocks to investors V 11784 was result of fever N 11786 dropped points to 1462.93 V 11794 leaving investors with feet V 11794 take stance on sidelines N 11802 make % of capitalization N 11804 STAGED rally in Africa N 11805 filled stadium on outskirts N 11805 welcomed leaders of Congress N 11807 served years in prison V 11810 BACKED criticism of Ortega N 11811 raised possibility of renewing N 11811 renewing aid to Contras N 11812 marking moves to democracy N 11813 cited attacks by rebels N 11814 get aid under agreement V 11815 claimed victory in elections N 11815 retained majority by seat V 11816 won seats in Cortes V 11819 stop activists from staging V 11820 crush protest in Square N 11824 cuts spending for installations N 11824 cuts spending by % V 11826 reducing arsenals amid differences V 11827 unveiled proposals in September V 11828 bombarded Kabul in assault V 11828 completed withdrawal in February V 11829 tightened blockade on roads N 11829 shelled area in Afghanistan N 11830 convened meeting of cabinet N 11830 convened meeting after indications V 11830 dissolve Parliament in attempt V 11831 provide timetable for pullout N 11833 was evidence of survivors N 11835 defeating Giants in sweep V 11838 rose % in September V 11840 climbed % in September V 11843 took podium at event V 11848 holds position at counters N 11849 buy Corp. for billion V 11850 making marketer of cosmetics N 11851 bring experience with products N 11851 sparking disdain in trade N 11854 blend strategies with approach N 11858 test them with consumers V 11861 are habitats of men N 11863 rolls product before test-marketing V 11865 meld techniques with image-making V 11868 brought baggage of being N 11869 reposition brand by broadening V 11870 redesigned Oil of packaging N 11870 stamping boxes with lines V 11871 shifted campaign from one V 11873 have advantages over rivals N 11880 increase impact of advertising N 11882 pour budgets into gifts N 11883 spends % of sales N 11889 filling gap with spate V 11891 gaining leadership by introducing V 11891 offer edge over competition N 11892 soared year for example V 11894 be emphasis on quality N 11899 acquired Rubenstein in 1973 V 11906 be truce in war N 11908 infuse action with level V 11909 put decisions in writing V 11911 barring agents from assassinating V 11914 inform it within hours V 11915 removed ban on use N 11918 followed attempt in Panama N 11919 made support for coups N 11922 accused House of leaking N 11922 shift blame to Congress V 11923 press advantage to kind V 11923 want oversight of activities N 11926 been meeting of minds N 11929 reserving right in instances N 11929 keep Congress in dark V 11933 attacking Webster for being V 11934 accuse Cohen of wimping V 11934 raise specter of operations N 11935 is consultation on activities N 11937 turned Board into casino V 11941 is mission of community N 11943 do something about volatility V 11944 galvanized dissatisfaction among companies N 11947 calm investors after plunge V 11951 increases chance for crash N 11955 sell stocks in index N 11961 ban use of system N 11962 put bit of damper N 11962 publish statistics of volume N 11965 is parent of Barney N 11967 maximize returns on investments N 11968 informed each of managers N 11968 give business to firms V 11969 turning heat in debate N 11971 is trader on Street N 11971 announced pull-backs from arbitrage N 11973 have impact on market N 11978 faces job of rebuilding N 11978 rebuilding confidence in policies N 11979 haul country through something V 11984 seeking term in economy N 11987 playing experts off each V 11987 announced resignation within hour V 11989 sent currency against mark V 11992 shove economy into recession V 11993 anticipating slump for months V 11995 run course by 1991 V 11997 leave room for maneuver N 11998 sense improvement for year V 11999 call election until 1992 V 12000 shows sign of turning N 12001 's deadline for government N 12001 define ties to rest N 12002 sent signals about willingness N 12002 take part in mechanism N 12003 ease opposition to membership V 12006 produced reaction from boss N 12006 use conditions as pretext V 12009 continue policy of tracking N 12009 tracking policies of Bundesbank N 12010 taking orders from foreigners V 12014 want debate in cabinet V 12016 told interviewer on Television V 12020 were state of art N 12023 analyzed sample of women N 12027 lighten load on basis V 12033 spend themselves into poverty V 12036 are payers throughout stay N 12042 reaching maturity during presidency V 12052 be smokers than persons V 12055 was month for practitioners N 12055 allowing candor from media N 12057 are fountains of gold N 12059 taking butt to Committee N 12059 made gestures on palm N 12060 feel need from time V 12061 was import of meeting N 12067 told official at dinner V 12070 demonstrating independence by printing V 12072 took it in 1986 V 12073 retained % of readership N 12074 made celebrities of men N 12080 prevented coverage of famines N 12081 stain honor of wives N 12086 begin series of reports N 12088 enter dialogue of culture N 12090 is publisher of Anniston N 12091 gave approval to settlement V 12092 covering thousands of customers N 12093 accused Irving of paying N 12095 receive services for years V 12096 valued settlement at million V 12099 give light to economy V 12099 bring growth to halt V 12103 dissecting them in dozens V 12104 digesting reams of information N 12106 make announcement of plans N 12106 provide credit to markets V 12108 prompted near-mutiny within ranks N 12112 earned plaudits for Greenspan V 12119 growing weakness in economy N 12124 showing signs of weakness N 12125 played role in fueling N 12125 played role over years V 12127 faces phalanx of presidents N 12128 aimed two down road V 12133 begin year of growth N 12133 begin year without recession V 12135 is guarantee against mistakes N 12136 laying groundwork for recession N 12142 proposed offering of shares N 12143 proposed offering of million N 12149 is one of bastions N 12151 become subject of controversy N 12151 become subject on the V 12154 had experience in field N 12158 filled vacancies in court N 12158 filled vacancies with lawyers V 12161 making push for specialists N 12162 name candidates with both N 12164 is counsel with Corp. N 12166 received response from Department V 12168 take it into consideration V 12170 's responsibility of lawyers N 12172 infringe patent under circumstances V 12173 have consequences for manufacturers N 12177 are guide to levels N 12206 Annualized rate after expenses N 12214 build mall on land V 12217 ranks a among underwriters V 12218 's fall from 1980s N 12220 bring business from one V 12223 is player in business N 12225 has love for forces V 12225 done rethink of Kidder N 12225 done rethink in months V 12226 been parade of studies N 12229 tap resources of GE N 12230 bought % of Kidder N 12230 bought % in 1986 V 12230 take advantage of syngeries N 12230 has 42 in assets N 12233 exploit synergy between Capital N 12235 had relationship with GE N 12237 has team in place N 12238 serving dinner at 7:30 V 12239 been case in past V 12241 rebuild franchise at Kidder V 12242 is one of six N 12244 sold offices in Florida N 12244 sold offices to Lynch V 12249 putting brokers through course V 12249 turning them into counselors V 12251 funnel leads on opportunities N 12251 funnel leads to bankers V 12251 easing tension between camps N 12255 has worries about future N 12256 bringing discipline to Kidder V 12257 improved procedures for trading N 12258 had lot of fun N 12258 had lot at Kidder V 12263 save 330 on taxes V 12265 prove addition to portfolio N 12265 build centerpiece of complex N 12266 initialed agreement with contractor N 12267 signed Wednesday in Tokyo V 12269 located miles of Manila N 12270 hold stake in Petrochemical N 12273 represented step in project N 12274 represent investment in Philippines N 12274 took office in 1986 V 12276 backed plant at site V 12278 removing tax on naphtha N 12279 soothe feelings of residents N 12281 have stake in Petrochemical N 12292 pay honorarium to speakers V 12293 paid fee to Wright V 12297 consider one of ideas N 12298 kill items without vetoing V 12300 send waves through relationship V 12300 enhance power of presidency N 12301 giving it to president V 12305 is member of Committee N 12306 's challenge to Congress N 12308 has confrontations with Congress N 12311 told audience in Chicago N 12313 go way in restoring V 12313 restoring discipline to process V 12318 strike riders within bills N 12319 challenge Bush in courts V 12319 expand powers beyond anything V 12320 puts president in business V 12323 preserve funds for system V 12325 putting projects into legislation V 12329 put power in hands N 12330 use powers against conservatives V 12338 losing share in the V 12340 gained share at expense V 12342 represent one-third of sales N 12345 are group of people N 12345 are group at Creek V 12346 calls capital of world N 12347 closed Friday at 71.75 V 12352 met expectations for 1989 N 12355 add capacity next year V 12361 put products into marketplace V 12361 resuming involvement with plan N 12367 forecast increase for year V 12368 earned million on sales V 12370 fell % to million V 12371 rose % to billion V 12372 had charge of million N 12372 had charge in quarter V 12372 covering disposition of assets N 12378 representing premium over price N 12383 yield % via Ltd V 12386 added spice to address V 12386 cut links with Exchange N 12389 indicate souring in relations N 12391 resume production in 1990 V 12394 was lire in August V 12397 rose % to lire V 12397 rose % to lire V 12398 rose % to lire V 12398 grew % to lire V 12399 shed image of bank N 12400 be step toward privatization N 12401 hold stake in Exterior V 12406 be partner for a N 12406 increase share after 1992 V 12409 transform Exterior into bank V 12410 be model of way N 12411 provide credits for exports N 12412 forcing bank to competition V 12413 faced decline in growth N 12418 build areas of business N 12422 trim jobs over three V 12424 issued million in debt N 12424 sold stock to investors V 12425 marketing services at branches V 12427 has excess of banks N 12427 aid Exterior with tasks V 12428 include acquisitions in growing V 12431 was one of banks N 12431 underwent changes in July V 12432 be handicap for bank N 12432 open market to competition V 12433 whip division into shape V 12434 channel investment from London V 12435 cut number of firms N 12435 cut number from 700 V 12436 named counsel in 1987 V 12437 trimmed firms from list V 12439 set group in May V 12441 doing business with GM V 12441 suing GM for damages V 12445 providing service at cost V 12445 echoing directives from operations N 12448 concluding cases with trials V 12449 's finding of study N 12450 means number of bargains N 12452 including those in Manhattan N 12452 covered offices from 1980 V 12455 based conclusions on statistics V 12456 taking cases to trial V 12457 filed charges against defendants V 12460 stressed cases from 1980 V 12460 averaging 43 for adults V 12462 filed average of cases N 12462 filed average for adults V 12465 asked court in Manhattan V 12465 dismiss indictment against her N 12465 was abducted from homeland V 12467 give access to documents N 12468 making the in order V 12468 obtain material in case N 12470 lacks jurisdiction in case V 12472 charges Koskotas with fraud V 12473 made trips to U.S. V 12474 violated right to trial N 12475 hurt chances of trial N 12476 return him to Greece N 12478 require lawyers in state N 12478 provide hours of aid N 12478 increase participation in programs N 12479 prove effectiveness before considering V 12480 achieve objective without divisiveness V 12484 has office in Worth V 12484 has office in Orleans V 12485 covered billings to Pentagon N 12485 filed suit against company V 12487 seeks damages from directors N 12487 seeks damages on grounds V 12487 carry duties as directors N 12488 defending itself against charges V 12493 bringing sanctions against Greenfield V 12494 stockpile cars on lots V 12495 cut inventories to no V 12496 was time for action N 12497 had average of supply N 12497 had average in lots V 12498 reduce costs of financing N 12499 getting reception in Detroit V 12504 mark end of part N 12505 cover accounting for parts N 12506 prohibits utilities from making V 12520 asked questions about Jake N 12527 keep dialogue with environmentalists V 12528 been one of critics N 12528 accused company of ignoring N 12529 soiled hundreds of miles N 12529 wreaked havoc with wildlife V 12530 was one of members N 12530 foster discussions between industry N 12531 demonstrate sense of fairness N 12532 seeking payment of costs N 12533 take a in quarter V 12534 reached agreement in principle V 12536 help customers with decisions V 12536 provide them with information V 12538 place employees within company N 12541 worsen year after years V 12545 took Korea to task V 12546 be indications of manipulation N 12546 be indications during months V 12547 liberalized system in year V 12550 hear Member of Congress N 12551 increase ceiling on mortgages N 12551 lost billion in defaults N 12552 approved Thursday by House V 12552 voted bill for construction V 12555 is chairman of Committee N 12556 became million for Grassley V 12557 turned a for state N 12557 turned a into a V 12558 is chairman of subcommittee N 12559 seen peak of construction N 12559 seen peak for years V 12560 Tell us about restraint V 12561 Tell us about scandals V 12563 get Congress under control V 12564 reached agreement with banks V 12567 fallen million in payments V 12568 called step in strategy N 12568 provide reduction in level V 12569 buy % of debt N 12569 buy % at price V 12572 benefit countries as debtors V 12573 sell billion of bills N 12577 announced details of auction N 12577 accommodate expiration of ceiling N 12581 honor requests from holders N 12582 make payment for bills N 12582 make payment to investors V 12582 requested reinvestment of bills N 12583 sell subsidiary to Inc. V 12584 reduce level of investments N 12584 reduce level for thrift V 12585 suspend dividends on shares N 12585 convert all into shares V 12589 had loss of million N 12595 including index on Thursday N 12596 brings count on sales N 12599 curbing accuracy of adjustments N 12600 maintains level below % V 12602 presents inkling of data N 12602 presents inkling for month V 12603 use index as indicator V 12603 use it as indicator V 12609 keeping a on sales V 12610 is month for figures V 12613 taken toll on sales V 12614 slipped % from levels V 12615 buying machinery at rate V 12615 raise questions about demand N 12615 raise questions from industry V 12616 remained % below levels N 12617 received million of orders N 12617 received million from August V 12625 was one of months N 12628 are more than % N 12630 expand markets for tools V 12631 is demand for tools N 12631 improve efficiency as quality N 12632 's dispute between makers N 12635 totaled million from million V 12635 totaled increase from August N 12636 form metal with pressure V 12637 produce total for month N 12640 had a at end V 12641 was % from year N 12641 were % from period V 12650 raising megaquestions about the V 12651 fund issues without depressing V 12655 have way of knowing N 12667 limited size of mills N 12669 ushered rules for business N 12670 build plants on scale V 12673 are fruits of policy N 12674 is source of funds N 12676 called elections for November V 12679 have history of making N 12680 are hit with investors V 12682 had success with issue V 12683 accepting applications for issue N 12685 selling parts of portfolios N 12689 controlled markets through grip V 12690 controlled financing of projects N 12693 set year along lines V 12694 makes bones about need V 12701 raised money from public V 12701 raise funds on market V 12702 floated a in 1988 V 12702 was issue in history N 12707 pin-pointed projects for funds V 12710 is screening of use N 12712 followed boom of 1986 N 12719 acquiring businesses for dollars V 12720 make offer for all N 12722 has contract with Bond V 12723 joined wave of alliances N 12723 signed agreement with System V 12724 coordinate flights with SAS V 12726 swap stakes in each N 12727 pending meetings next month V 12730 going head to head N 12730 going head in markets V 12730 got clearance from Commission V 12730 boost stake in maker N 12731 received permission from regulators V 12731 increase holdings past the V 12732 raised stake to % V 12734 bucked tide in market V 12734 rose pence to pence V 12737 buy stakes in Jaguar N 12738 prevent shareholder from going V 12739 forge alliance with GM V 12740 wrapping alliance with GM N 12742 force issue by calling V 12742 remove barriers to contest N 12742 remove barriers before 1990 V 12744 seek meeting with John V 12744 outline proposal for bid N 12746 retain independence by involving V 12746 involving stake for giant V 12747 win shareholders by structuring V 12747 structuring it in way V 12750 influence reaction to accord N 12751 holds talks with officials V 12753 are words before killed V 12758 got feet on floor V 12834 setting sights on expansion V 12836 acquired % of Holdings N 12836 acquired % for dollars V 12838 holds % of yen N 12838 considering acquisition of network N 12844 approached number of times N 12846 laying groundwork for growth V 12847 setting team in charge N 12848 rose % to billion V 12848 jumped % to million V 12854 do business with clients V 12855 expand business to clients V 12857 acquire share of Corp. N 12858 been venture between Ciba-Geigy V 12858 has sales of million N 12862 develop unit into business V 12862 making part of concept N 12863 canceled series of season N 12864 is casualty of networks N 12866 aired Wednesdays at p.m. N 12866 drawn average of % N 12868 plans placement of dollars N 12869 reduce debt at concern V 12870 carry dividend until 1994 V 12874 is part of strategy N 12874 strengthen sheet in anticipation V 12877 reassert itself in business V 12879 comes weeks after believing V 12879 had lead of three N 12879 introduced computer with features N 12881 sells machines to businesses V 12882 mark plunge into has N 12883 been terminals with ability N 12885 marketing PCs with megabyte N 12888 Weighing pounds with battery V 12888 measures 8.2 by inches N 12894 open offices in Taipei V 12895 is the since announced V 12895 do business in country V 12897 buy stocks through purchase V 12900 's market with opportunities N 12901 entering season with momentum V 12902 rose % above levels N 12904 jumped % in period V 12905 declined % in period V 12907 are lot of markets N 12908 rose % through July V 12909 damp growth in West V 12916 have impact on sales V 12918 lost jobs in the V 12918 was link in England V 12919 reflect reversal in fortunes V 12923 relocate facility to County V 12924 move storage to a V 12924 distance operations from areas V 12927 shut facility for inspection V 12930 moving the from town V 12931 purchased acres from government V 12932 begin operations in 1991 V 12934 replaced directors at meeting V 12937 respond Friday to requests V 12937 discuss changes at company N 12937 have team on board V 12938 had income of yen N 12938 had income in half V 12940 had net of yen N 12940 had net in period V 12948 totaled billion from billion V 12951 announced % from 1,716 V 12952 totaled billion from billion V 12953 exceed the in 1988 V 12955 distributed 4 to stock V 12956 changed policy by declaring V 12957 pay dividend on stock V 12958 have profit for payment N 12961 convert all of shares N 12961 convert all into NBI V 12963 hired Inc. as banker V 12964 jolt rates in months V 12965 estimated losses from earthquake N 12965 estimated losses at million V 12966 include claims under compensation N 12971 halt growth of year N 12974 retain percentage of risks N 12974 pass rest of losses N 12975 buy protection for themselves V 12975 giving portion of premiums N 12975 giving portion to firm V 12975 accepts portion of losses N 12976 buy reinsurance from companies N 12976 buy reinsurance for catastrophe V 12977 replace coverage in were V 12977 were any before end V 12979 purchased reinsurance in years V 12979 buy reinsurance for 1990 V 12981 negotiating contracts in weeks V 12982 said Snedeker of market N 12986 get picture of impact N 12987 expects charge of no N 12987 expects charge before taxes V 12988 rose % to yen V 12989 rose % to yen V 12990 increased % to yen V 12991 rose % to yen V 12994 rise % to yen V 12995 announced effectiveness of statement N 12998 approved consolidation of stock N 12998 approved consolidation at meeting V 12999 approved adoption of plan N 13000 approved relocation to Ltd N 13001 has operations in Hills V 13003 have right for share V 13003 entitling purchase of share N 13004 acquires % of shares N 13004 acquires % without making V 13004 making offer to shareholders V 13005 require approval of holders N 13006 indicted operator of schools N 13006 indicted operator for fraud V 13009 defend itself against charges V 13012 fell cents to cents V 13013 filed suit in Court V 13013 block investors from buying V 13014 are directors of company N 13015 owns % of Rally N 13016 seek control of Rally N 13018 joined forces with founder V 13018 have ties to Wendy V 13019 controls % of shares N 13020 formed committee of directors N 13021 restructure million of debentures N 13023 provides services for manufacturers V 13024 begun discussions with holders N 13024 exchange debt for securities V 13025 review agreement with holders N 13027 offered position in Leaseway V 13027 represent interest in company V 13028 is adviser on transaction V 13029 fulfilled requirements of obligations N 13030 revive constituency for rebels V 13031 raised possibility of renewing N 13031 renewing aid to Contras V 13031 parried question at conference V 13032 end cease-fire with rebels N 13032 elevated Contras as priority V 13034 highlight progress toward democracy N 13036 end cease-fire in response V 13037 ends support for Contras V 13040 monitor treatment of candidates N 13041 receive rest of the N 13041 receive rest under agreement V 13044 have support for action V 13046 provides supporters with opportunity V 13046 press administration on issue V 13049 give support to Contras V 13049 honor agreement through elections V 13051 accompanied Bush to Rica V 13053 cut aid to units V 13054 undermining arguments in favor N 13055 interpreted wavering as sign V 13057 creating atmosphere of emergency N 13058 sell stake in Corp. N 13058 sell stake to Stores V 13061 purchasing stake as investment V 13062 acquire equity of Stores N 13063 saw significance in selling V 13063 selling stock to Stores V 13065 accumulating stock for years V 13066 taking place between companies V 13067 increased % to yen V 13072 gained % to yen V 13073 made % of total N 13074 rising % to yen V 13075 rise % to yen V 13076 increase % to yen V 13076 rise % to yen V 13077 acquire unit for million V 13078 acquire operations of Corp. N 13080 is part of plan N 13080 focus operations on Canada V 13082 report gain from sale V 13084 rose % to yen V 13085 rose % to yen V 13086 totaled yen from yen V 13087 rose % to yen V 13088 advanced % to yen V 13090 forecast sales for year N 13091 rise % to yen V 13092 buy all of shares N 13092 buy all for each V 13093 owns % of shares N 13095 make offer for stock V 13097 receiving distribution of 37 N 13099 launched offer for shares V 13103 received assurance of N.A. N 13105 begun discussions with sources V 13106 nullify agreement between Acquisition N 13107 made offer for Dataproducts N 13111 has value of million N 13112 is York for Inc. V 13113 holds % of Kofcoh N 13114 prints ads for retailers V 13115 had average of shares N 13117 rose % to yen V 13123 expects net of yen N 13125 raising level by traders N 13127 approved Co. in Erath N 13127 approved Co. as site V 13131 replace McFadden as president V 13132 have mandate from board V 13132 improve reputation as exchange N 13134 told person during search V 13136 held posts of president N 13137 imported a as president V 13138 was officer of Exchange N 13138 considered specialist in products N 13141 expect difficulty in attracting V 13141 attracting locals to pit V 13142 teaching companies in industry N 13144 was one of image N 13145 indicted traders at exchanges V 13146 investigating exchanges in May V 13148 face some of consequences N 13149 been the in enforcing V 13150 levied number of suspensions N 13151 had the per contracts N 13152 received criticism in 1987 V 13154 had breakdown in 1987 V 13155 took care of it N 13156 boosts volume at exchange V 13157 improve efficiency of operations N 13158 been talk of mergers N 13158 been talk between one V 13162 save money for commission V 13162 do business on exchanges V 13164 is development of device N 13165 recommended creation of system N 13169 signed letter of intent N 13169 signed letter with Merc V 13170 creating system with Board V 13170 suspended negotiations with Merc V 13174 is support between 1.12 N 13174 ended Friday at 1.1580 V 13175 views the as opportunity V 13178 set tone for metals V 13178 keep eye on Street V 13179 be demand from East V 13184 confirmed turnaround in markets V 13187 is support for gold V 13189 portend move to 390 V 13190 keep eye on market V 13190 spell trouble for metals V 13192 have rally in past V 13193 was interest in metals V 13197 sell contracts at Board V 13197 hedge purchases from farmers V 13198 keep pressure on prices V 13199 continues buying of grain N 13200 bought tons of corn N 13201 be activity in prices V 13202 take delivery of contract N 13203 averting strike at daily V 13205 made concessions in round V 13208 line cage with stocks V 13209 propelled earnings of companies N 13209 propelled earnings to levels V 13210 doubled prices for pulp N 13210 doubled prices to 830 V 13213 Put money in stock V 13215 expects decline in earnings V 13221 lowered rating from hold V 13230 expects price for product N 13231 carrying lot of debt N 13240 expects earnings in 1989 V 13242 take view of companies N 13242 buy pulp from producers V 13246 report write-off of million N 13246 report write-off for quarter V 13247 cited costs from recapitalization V 13250 save million in expenses N 13250 save company next year V 13251 finance million of company N 13252 made payments of million N 13254 signed contract for order V 13257 is unit of group N 13261 reach yen in year V 13262 made projection for 1990 V 13263 bolster network in Japan V 13265 produced trucks at factories V 13266 build vehicles outside Japan V 13267 producing vehicles for vehicle N 13268 involve increase in capacity V 13269 report charge for quarter V 13270 sell division for million V 13272 including gain of million N 13272 including gain from sale V 13274 concerning sale of stake N 13277 produces extrusions for industries V 13279 absorb oversupply of bonds N 13280 own % of bonds N 13280 dumping securities for weeks V 13281 were sellers for buyer V 13282 getting lists from sellers V 13286 buy bonds in absence V 13288 expect yields on bonds N 13288 match yield on bonds N 13293 making state during period V 13294 know it by way V 13297 need shelter of bonds N 13313 sold million of tax-exempts N 13319 see names in portfolios V 13323 unloading amounts of bonds N 13327 sell billion of bills N 13328 sell billion of bills N 13329 raise money under the V 13330 unloading some of bonds N 13331 sold million of bonds N 13333 publicize buying of bonds N 13333 publicize buying by using V 13333 using Corp. as broker V 13334 provides quotes to Inc. V 13335 created confusion among investors V 13338 rallied Friday on news V 13338 selling brands to Corp. V 13340 are buyers of assets N 13340 are buyers at prices V 13341 sell Ruth to Foods V 13342 includes plant in Park N 13343 finished day at 46 V 13345 closed 1 at 86 V 13346 finished quarter-point on rumors V 13348 fell 3 to point N 13350 were buyers of mortgages N 13350 seeking collateral for REMICs V 13353 cover cost of program N 13356 pays % of bills N 13356 pays % after an V 13359 be 33.90 with the V 13361 trim force in California N 13361 trim force by workers V 13362 make cuts through combination V 13365 getting bargains on systems V 13366 get contracts on basis V 13368 seek control of Inc. V 13370 holds million of shares N 13370 have value of dollars N 13371 reported loss of million N 13372 made income for year N 13372 made income from million V 13373 was million from million V 13376 disclosed terms for bid N 13378 involving units of Innopac N 13378 opened plant in Leominster V 13380 joined PaineWebber in suspending V 13380 suspending trading for accounts V 13381 launching programs through market V 13384 rose % in September V 13384 rose gain in year N 13385 raises questions about strength N 13387 buying machinery at rate V 13388 raise questions about demand N 13390 resolve part of investigation N 13390 resolve part in year V 13392 force debt on firm V 13393 posted a for quarter V 13393 take write-offs for problems V 13395 sell businesses to Nestle V 13396 go head to head V 13396 buy stakes in Jaguar N 13398 sell stake to Peck V 13400 suspended work on a V 13400 indicating outlook by maker V 13401 see claims from earthquake N 13402 strengthened plan after announcing V 13410 report events of century N 13411 sold Congress on idea V 13411 saving headaches of pounds N 13416 made standard of measure N 13418 took cue from engineers V 13419 passed Act in 1975 V 13421 had day with questions V 13423 uses terms for trains V 13431 fought battle with leaders V 13431 signed schools in states V 13433 reach goal of schools N 13433 reach goal before end V 13435 providing sets in classrooms V 13437 signing schools at rate V 13440 drawn protests from educators V 13441 offer programming for administrators V 13445 carried program in spring V 13448 was % on test V 13452 sold 150 in time N 13452 sold 150 on network V 13455 cost company per school V 13471 including million via bid N 13480 raised stake in Corp. N 13480 raised stake to % V 13484 obtain control of Octel N 13485 acquired shares from Octel V 13486 buy shares in market V 13488 is listing of values N 13499 closing Friday at 2596.72 V 13500 eclipsing number of gainers N 13502 shake foundations of market N 13503 revealed change in psychology V 13505 view near-panic as lapses V 13516 been acquisition among stocks V 13519 sell stocks in matter V 13521 sees benefits to drop V 13525 provided excuse for people V 13527 got realism in market V 13528 have kind of activity N 13534 put damper on that V 13535 been changes in area V 13535 changes arithmetic of deals N 13537 's problem for stocks N 13541 questioning profits as means V 13547 fell points to 2596.72 V 13549 were 1,108 to 416 N 13551 escaped brunt of selling N 13551 rose 5 to 66 V 13552 accumulating stake in company V 13553 buying shares as prelude V 13554 gained 1 to 33 N 13554 gained 1 on report V 13554 raised stake in company N 13554 raised stake to % V 13555 boosted stake to % V 13556 rallied 7 to 45 V 13556 rose 1 to 47 V 13556 fell 5 to 99 V 13557 cut force by % V 13557 dropped 5 to 56 V 13558 outgained groups by margin V 13559 rose 5 to 14 V 13559 climbed 3 to 16 V 13559 rose 1 to 16 V 13559 added 5 to 11 V 13559 went 7 to 3 V 13561 rose 5 to 15 V 13561 advanced 1 to 12 V 13561 gained 1 to 7 V 13562 dropped 3 to 16 V 13562 posting loss of 4.25 N 13563 gained 5 to 100 V 13564 dropped 7 to 99 V 13565 fell 3 to 49 V 13566 swelled volume in Lynch V 13568 advanced 1 to 36 V 13569 owns % of stock N 13569 buy rest for 37 V 13570 added 1 to 47 V 13571 jumped 2 to 18 V 13572 holds stake in company V 13573 dropped 1 to 21 V 13574 dropped 7 to 3 V 13575 obtain financing for offer V 13576 identified problem in crash V 13578 sent shards of metal N 13580 begin days of hearings N 13580 begin days in City V 13581 detect cracks through checks V 13584 detect flaw at time V 13588 have impact on production V 13591 analyzed samples of ice N 13591 analyzed samples in Tibet V 13593 melt some of caps N 13593 raising level of oceans N 13593 causing flooding of populated N 13594 have confidence in predictions V 13595 compare temperatures over years V 13595 analyzed changes in concentrations V 13600 prevents heat from escaping V 13601 reflecting increase in dioxide N 13607 improve efficiency of operation N 13608 named successor to Bufton N 13612 cuts spending for installations N 13612 cuts spending by % V 13616 enhances power of appropriations N 13617 secure million for state V 13621 cleared Senate on votes V 13622 approved bulk of spending N 13624 used assortment of devices N 13624 make it past wolves V 13626 increased Aeronautics for construction N 13626 increased Aeronautics to million V 13627 provide million toward ensuring V 13627 ensuring construction of facility N 13627 ensuring construction in Whitten V 13629 face criticism for number V 13630 used issue in effort V 13631 received support from office V 13631 protect funding in bill V 13631 turn eyes from amendments V 13633 won 510,000 for project V 13634 relaxing restrictions on mills V 13635 take money from HUD V 13635 subsidize improvements in ponds V 13638 moved us to schools V 13638 opened world of opportunity N 13638 opened world for me V 13639 lost contact with memories V 13645 lease allotments for sums V 13653 lend itself to solving V 13653 solving problems of racism N 13654 deserve help in attracting V 13655 prohibit schools from teaching V 13655 teaching contraceptives of decreasing N 13658 issue challenge to America V 13659 do it like Japan V 13663 is insult to citizens V 13665 is blocks from residence V 13666 ignore problem of poverty N 13666 's crusade for media V 13672 finds reserves in U.S. V 13673 reduce employment in operations V 13678 took a as part V 13678 attributed it to restructuring V 13680 offering packages in operation V 13681 studying ways of streamlining N 13683 managing properties under jurisdiction N 13684 have accountability for operations N 13691 scouring landscape for such V 13692 find yields at thrifts V 13696 are reminder of dangers N 13699 are some of choices N 13700 reduce risk of having N 13700 reinvest proceeds of maturing N 13700 maturing certificates at rates V 13702 putting all in it V 13707 paying tax at rate V 13708 approach % on municipals V 13712 Consider portfolio with issues N 13713 rolling year at rates V 13715 makes option for investors N 13715 accept risk of fluctuation N 13715 accept risk in order V 13720 Consider funds from Group N 13723 get returns from bonds V 13728 exceed those on CDs N 13730 are idea at 35 V 13734 track rates with lag V 13735 beat CDs over year V 13737 likes Fund with yield N 13739 combining fund as bet V 13740 offset return from fund V 13745 been reports of deaths N 13745 been reports in U.S. V 13748 raise sugar to levels V 13753 are differences in way V 13756 triggered concern among diabetics V 13757 noting lack of evidence N 13761 dominates market with product V 13762 make insulin in Indianapolis V 13764 seen reports of unawareness N 13764 seen reports among patients V 13765 indicated difference in level V 13768 reduce force by % V 13769 report loss for quarter V 13777 consume millions of man-hours N 13777 produce tons of paper N 13779 Compare plans with appropriations V 13782 abdicate responsibility for decisions N 13783 puts decisions in hands V 13785 becoming goal of strategy N 13788 consider impact of uncertainties N 13788 consider impact at beginning V 13790 develop priorities by identifying V 13794 translate idea into action V 13796 committed itself by billion V 13798 exceeded numbers by billion V 13801 is effect of billion N 13803 including those in Office N 13805 costing trillion between 1990 V 13807 assumes rate of inflation N 13807 places scenarios in context V 13808 assumes increase in appropriations N 13810 reimburses Pentagon for inflation V 13811 been position of Senate N 13811 reduces baseline by billion V 13812 been position of House N 13812 been position for years V 13813 freezes budget at level V 13813 eat effects of inflation N 13813 eat effects until 1994 V 13814 reduces baseline by billion V 13815 extends compromises between House V 13815 splits difference between Scenarios V 13815 increasing budget at % V 13816 reduces baseline by billion V 13817 reduces budget by % V 13817 reduces reduction of billion N 13819 construct program for scenario N 13820 conclude efforts by producing V 13821 reveal cost of program N 13821 reveal cost by forcing V 13822 sacrifice programs as divisions N 13823 evolve priorities by revealing V 13825 involve planners in Chiefs V 13828 Produce force for scenario N 13828 provide Secretary of Defense N 13828 provide Secretary with assessment V 13830 is truth to it V 13832 provoke Congress into acting V 13832 exaggerate needs in interest V 13833 is game between Pentagon V 13833 is art of the N 13833 is art in world V 13835 is event in sequence V 13835 neutralizes threats to interests N 13835 neutralizes threats in manner V 13837 is version of essay N 13838 reflect policy of Department N 13846 began Friday on note V 13848 left Average with loss V 13849 diminished attractiveness of investments N 13851 test support at marks V 13854 be development for dollar V 13856 hit low of 1.5765 N 13857 expressed desire for pound N 13859 prop pound with increases V 13860 rescue pound from plunge V 13862 's upside to sterling V 13863 have forecast for pound V 13866 raise rate by point V 13868 indicated desire by declining V 13869 is boon for dollar N 13870 has base of support N 13871 buying dollars against yen V 13876 ally themselves with philosophy V 13879 depict bill as something V 13879 hoodwinked administration into endorsing V 13880 's product of meetings N 13881 citing compromise on the N 13881 citing compromise as model V 13882 are parents of children N 13883 's place for child V 13883 spend hours at home V 13883 is transportation for someone V 13889 offering shares of stock N 13889 offering shares at share V 13890 has interests in newsprint V 13893 owned % of shares N 13893 owned % before offering V 13894 seeking control of chain N 13897 had income of million N 13899 had change in earnings N 13901 compares profit with estimate V 13901 have forecasts in days V 13903 have agreement with maker V 13905 holds % of shares N 13906 have copy of filing N 13908 made bid for company V 13909 sought buyer for months V 13912 rose % in September V 13912 was % from 1988 V 13913 was the since April V 13918 restore order to markets V 13926 is copy of contract N 13927 restore confidence in futures N 13929 was envy of centers N 13930 be contract in world N 13931 sell commodity at price V 13937 shown itself in tests V 13939 was case in days V 13939 caused drop in prices N 13940 was problem at all N 13941 is commitment of institutions N 13944 have stake because exposure V 13947 hit highs above % N 13948 solves bit of problem N 13955 attracted lot of investors N 13955 attracted lot before crash V 13959 posted gains from year N 13959 posted gains for half V 13960 rose % to yen V 13961 jumped % to yen V 13962 increased % to yen V 13968 provide explanation for performance N 13969 rose % to yen V 13970 rose % to yen V 13971 surged % to yen V 13976 estimate value of holding N 13978 is the in redeployment N 13978 included sale to S.A N 13979 attaches importance to sale V 13979 are part of strengths N 13980 complete sale of unit N 13980 complete sale by March V 13981 has interests in licenses N 13982 sold stake in field N 13982 sold stake to H. V 13983 sold stake in field N 13983 sold stake to company V 13985 start production by end V 13986 produce barrels per day N 13989 had interest from buyers V 13990 retained Co. as agent V 13992 rose % from month V 13997 is unit of Inc N 14001 are remarketings of debt N 14001 are remarketings than issues V 14006 brings issuance to 33.2 V 14008 yield % via Ltd V 14011 buy shares at premium V 14020 offered francs of bonds N 14021 increase amount to francs V 14023 Put 1992 at 107 V 14026 Put 1992 at 107 V 14032 is subsidiary of Inc N 14034 represent interest in fund N 14036 have life of years N 14042 introduce line of sunglasses N 14043 signed agreement with Inc. V 14043 incorporate melanin into lenses V 14046 signed letter of intent N 14046 pay 15 of stock N 14046 pay 15 for share V 14047 gives value of million N 14048 is company of Co. N 14048 has branches in County V 14050 completed acquisition of Bancorp N 14053 reach surplus of rand N 14057 report income of cents N 14057 report income for quarter V 14058 release results in mid-November V 14060 had loss of 12.5 N 14065 sell headquarters to Francais V 14067 rose % in September V 14068 measures changes for % V 14068 spend month between dollars N 14068 edged % in September V 14069 monitors changes for % V 14069 spend month between 6,500 N 14069 rose month from year V 14069 was % from month V 14070 measures changes for % N 14071 were prices for housing N 14073 cleared takeover of stake N 14074 acquire shares of bank N 14075 buy % of BIP N 14075 buy % for francs V 14076 buy shares at price V 14077 buy stake in BIP N 14077 buy stake from Generale V 14078 fell % to yen V 14079 increased % to yen V 14080 fell % to yen V 14082 counter costs in construction N 14083 were contributors to growth N 14084 rose % to yen V 14084 reflecting production in industries N 14084 are users of products N 14085 rose % to yen V 14086 rose % in October V 14087 follows rise of % N 14089 upgrade facilities of Corp. N 14090 boost capacity by % V 14092 rose % from year V 14093 rose % to yen V 14094 showing expansion at levels N 14096 build plant at Brockville V 14097 replace plants in Montreal N 14099 is unit of Group N 14100 trade stocks in Europe V 14102 underscored shortcomings of way N 14103 switch business to stocks V 14103 quotes prices for issues V 14104 covered itself in glory V 14104 manages billion in money N 14107 unload block of shares N 14107 unload block in Paris V 14107 tossed phone in disgust V 14108 did trade in seconds V 14111 provided prices for minutes V 14114 spent millions of dollars N 14114 spent millions on system V 14114 prevented trading for days V 14118 has session in the V 14119 processed telexes of orders N 14121 including giants as BSN N 14122 transformed orders into orders V 14123 switched business to London V 14133 develop market by 1992 V 14137 switched trades in stocks N 14137 switched trades to market V 14137 unwind positions on Continent N 14143 had problems because capacity V 14145 's one of things N 14148 invested amounts of money N 14150 totaled tons in week V 14153 repurchased shares since 1987 V 14154 purchase number of shares N 14156 control diseases as aflatoxin N 14157 enhance activity against diseases N 14161 sparked scrutiny of procedures N 14162 is danger to competitiveness N 14163 deciding conditions for workers V 14164 adopt pattern in relations V 14166 opposes charter in form V 14168 propose version of charter N 14170 have differences with text V 14171 put countries at disadvantage V 14172 introduce standards for hours N 14174 are a of average N 14175 put countries at disadvantage V 14180 present program in November V 14183 having charter before end V 14184 named director of company N 14184 expanding board to members V 14186 linking tank to Sharpshooter V 14188 bounces weight on wrench V 14192 sinking bits into crust V 14193 easing grip on wallets N 14202 prod search for supplies V 14205 put markets in soup V 14212 played havoc with budgets V 14220 put prices on coaster V 14220 pitched towns from Houston N 14220 pitched towns into recession V 14227 offer security of markets N 14227 provides security of supply N 14230 produce oil than allotments N 14232 legitimize some of output N 14238 disclosed cutbacks in operations N 14243 drill wells in area V 14244 is company with attitude N 14248 get half-interest in oil N 14251 reflecting hunger for work N 14252 putting money into others V 14255 've stability in price N 14257 risen % in month V 14258 deliver supplies to rigs V 14260 discounting % on evaluation V 14262 set budgets for year V 14262 forecast revenue of 15 N 14267 raise spending for prospects V 14269 raise money for program V 14269 are cycles to things V 14271 cut ratings on them V 14272 raising cash through offerings V 14276 increased staff in year V 14281 setting tanks at site V 14281 got raise in years N 14284 sells equipment for Co. V 14285 riding boom to top V 14290 took trip to area N 14299 hauled rig from Caspar V 14303 whips orders for hamburgers N 14305 making it in career V 14306 started Inc. with loan V 14312 including supervisor of vault N 14313 filed complaint against employees V 14313 charging them with conspiracy V 14315 capped investigation by Service N 14321 launch offer for operations N 14322 torpedo plan by Ltd. N 14323 increase amount of cash N 14325 make offer for all N 14329 invested 100,000 in stocks V 14329 repeated process for year V 14330 holding portfolio over year V 14332 require returns on investments N 14333 seeing returns to portfolio N 14333 seeing returns as being V 14333 see returns as compensations V 14335 select stock with return N 14335 select stock with amount N 14340 provides evidence of phenomenon N 14343 bested portfolio in eight V 14343 has bearing on theory V 14348 elected director of maker N 14349 expands board to members V 14355 be part of network N 14355 convert tickets into ones V 14356 used all over world N 14360 put pistols to temple V 14361 stabbed him in back V 14368 track numbers of tickets N 14369 have computers in world V 14371 check tickets at gate V 14375 requires companies in Texas N 14375 charge rates for insurance V 14381 charging 3.95 in Texas V 14385 make attendants despite contracts V 14385 limiting time to hours V 14387 have rules on time N 14387 have rules for attendants V 14387 restricts time for controllers V 14388 work number of hours N 14393 changing policy on attendants N 14394 limit time to hours V 14396 BECOME diversion for travelers V 14397 hit balls into nets V 14399 was 5.11 in Paso V 14401 was officer at Inc N 14405 confusing rates with payments V 14407 reduced tax for years V 14411 is the under systems V 14416 eases burden on changes N 14417 is indexation of gains N 14418 affect economy in ways V 14425 elected officer of marketer N 14429 owns stake in company N 14430 invest capital in venture V 14431 have sales of million N 14431 have sales in 1990 V 14433 requiring disclosure about risk N 14434 required breakdown of items N 14438 cover instruments as swaps N 14440 requiring security for instrument V 14443 sell offices to Bank V 14444 post charge of million N 14445 represents write-down of goodwill N 14447 altered economics of transaction N 14447 altered economics for parties V 14448 increasing reserves for quarter V 14449 had income of million N 14452 suspended lawsuits as part V 14453 elected officer of producer N 14456 split itself in restructuring V 14460 produce version of poisons N 14462 is part of shot N 14465 contains copies of bacterium N 14466 induce immunity to cough N 14468 produce version of toxin N 14471 produce version of toxin N 14472 induce immunity to cough N 14473 triggered mutation in gene N 14474 transferred genes to bacteria V 14481 named executive of bank N 14483 pouring personnel into center V 14486 describes move as decision V 14486 set outlet in economy V 14487 deny element to decision N 14488 sent sons to Naples V 14488 begin expansion during century V 14490 replaced Frankfurt as center V 14491 bear name without Rothschild V 14496 were target of propaganda N 14497 pursued Rothschilds across Europe V 14497 confiscating property in process V 14498 witnessed squads of men N 14499 delaying return to Frankfurt N 14506 sell products on behalf V 14508 left job as manager N 14510 showed assets of billion N 14514 are limitations on assistance N 14520 curbing swings in prices N 14521 sell value of basket N 14522 rivals that in stocks N 14524 include some of investors N 14525 opposing futures since inception V 14527 lose confidence in stocks N 14528 raise cost of capital N 14532 check markets in Chicago N 14535 rallied all of way N 14536 manages billion of investments N 14536 manages billion at Inc. V 14540 add liquidity to markets V 14541 buy portfolio over years V 14544 have plenty of support N 14548 trading baskets of stocks N 14551 narrows gap between prices N 14554 including friends in Congress N 14555 become part of landscape N 14557 take it to Tokyo V 14562 sell amount of contracts N 14567 sell amount of contracts N 14568 buy blocks of stocks N 14571 move million of stocks N 14573 put % in cash N 14576 transferred identity of stocks N 14576 transferred identity into one V 14577 know report of IBM N 14578 buying baskets of stocks N 14578 treats stocks as commodities V 14580 get access to stocks N 14583 own share of earnings N 14584 making bets about direction N 14586 making bet on market V 14587 challenged agreement on fares N 14589 begin negotiations with Brussels N 14590 gained access to routes N 14590 gained access under numbers V 14591 shared results from swap N 14591 followed rules on pricing N 14592 merit exemption from law N 14596 reinstated convictions of Corp. N 14596 exposing workers to vapors V 14597 operated machine in workroom V 14598 suffered damage from exposure V 14599 handling case in Court V 14600 pre-empt states from prosecution V 14604 fined maximum of 10,000 N 14605 marking salvo in battle N 14606 purchase worth of shares N 14608 holds stake in Jaguar N 14616 limits holding to % V 14617 doing something over months V 14619 retained share after part V 14619 selling stake in Jaguar N 14619 selling stake in 1984 V 14619 deflect criticism of privatization N 14625 relinquished share during takeover V 14628 answered questions about it N 14628 answered questions over lunch V 14630 influences thinking on restriction N 14631 jeopardize seats in Coventry N 14634 rose % to kronor V 14635 increased % to kronor V 14638 continued recovery after start V 14640 predicted profit of billion N 14642 increased % to kronor V 14643 Gets Respect Around Sundance V 14644 Misunderstanding conversations with us N 14649 representing points of view N 14649 request reassessment of Project N 14650 is haven for environmentalism N 14653 taken role of one V 14654 transform mountain into resort V 14655 rationalize actions in Utah N 14661 are people like him N 14661 benefit them in future V 14664 fuel controversy over policies N 14666 includes Ortega among guests V 14667 help standing in region N 14668 legitimize people like Ortega N 14669 redeem himself in wake V 14669 aid removal of Noriega N 14670 note irony of Bush N 14670 joining celebration of democracy N 14670 joining celebration at time V 14670 sought cuts in aid N 14671 proposed million in funds N 14671 proposed million for Rica V 14672 make payments on debt V 14675 deserves assistance for reason V 14676 helped cause in Washington N 14677 support campaign against Nicaragua N 14677 earned ire of House N 14683 made distate for government N 14683 endorsing package of aid N 14683 renewing embargo against country V 14683 supports groups in region V 14685 is component to trip V 14687 see this as opportunity V 14688 do survey on experiences V 14691 be one of people N 14692 puts effort in perspective V 14693 Titled Comments From Students N 14696 entered school with scores V 14696 got grades because demands V 14698 suffering abuse from coaches N 14700 's part of minority N 14701 be shot at college N 14704 are a of answers N 14707 Being student-athlete at college V 14707 is a from school N 14712 have attitude toward athletes V 14712 treat us like pieces V 14716 are part of herd N 14717 treat you like piece V 14718 give lot of time N 14727 experiencing life to the V 14728 establish identity from athletics N 14728 make part of ''. N 14731 cutting practice in half V 14731 moving start of practice N 14731 moving start by month V 14731 reducing schedules in sport N 14731 reducing schedules to games V 14733 accepting place on Commission N 14733 face opposition at convention V 14737 want shuttles to labs N 14742 told attendees at meeting N 14748 pop corn with lasers V 14757 acquire Bank of Somerset N 14761 authorized split of the N 14765 named chairman of institution N 14767 conducting search for executive N 14768 is partner of Associates N 14768 owns % of Crestmont N 14769 named president for subsidiary V 14770 was president at unit N 14771 have influence in plans N 14772 curtailing exploration in locations N 14773 spurring interest in fuels N 14777 earmarked million in money N 14777 earmarked million for exploration V 14779 acquired share in accounting N 14780 has stake in Libya V 14781 making fuel at cost V 14785 spend lot of money N 14785 spend lot for fuels V 14786 pump fuel into cars V 14788 hide barrels of oil N 14793 increasing attractiveness of gas N 14796 stepping development of well N 14796 found gas in 1987 V 14797 get gas to marketplace V 14798 get it on line V 14799 announced plans for project N 14803 address subjects as likelihood N 14804 attracting attention because comprehensiveness V 14807 's manifesto for stage N 14810 couching some of ideas N 14810 couching some in language V 14811 Seeking path between opponents N 14813 draw proposals for plan N 14813 be battle over reform N 14814 make assessment of economy N 14815 map strategy in phases V 14816 have effect on consumers V 14819 breaking system of farms N 14822 reduce power of ministries N 14825 turn them into cooperatives V 14826 liquidate farms by end V 14828 mop some of rubles N 14835 buy goods at prices V 14840 face obstacles for exports N 14859 chart exploits of players N 14861 recounts convictions of managers N 14864 is story about love N 14866 was inning of game N 14867 sweated summer with teams V 14869 doing the across River V 14869 watched duel on set V 14871 winning opener on homer V 14885 played base until 1960 V 14886 took memories of homer N 14888 was namesake of poet N 14889 born days before run V 14889 tell him of coincidence N 14890 sent card to Martha V 14893 sent it to Thomson V 14898 scheduled stop on Turnpike N 14898 pick papers for neighbor V 14904 addressed husband with nickname V 14908 take Scot without hesitation V 14914 was it for look N 14915 spent hour at 10 V 14915 fulfilling dream of boy N 14916 signed photographs of homer N 14917 took time from work V 14917 have chance in life V 14918 has ties to baseball V 14921 sends photo with note V 14926 was miles at place V 14926 captured imagination of kid N 14926 is all for it V 14929 find one in column V 14933 improving earnings before expiration V 14934 increase stake in Southam N 14934 make offer for company N 14935 hold stake in company N 14938 reported earnings of million N 14940 restricted options in areas V 14943 sold stake in Corp. N 14943 sold stake to Hees V 14944 take look at newspaper N 14946 sell stake in Ltd. N 14946 sell stake to Ltd. V 14947 cut costs in division N 14947 cut costs through sales V 14947 reaching agreements in areas N 14948 has links to newspaper N 14949 fell % to million V 14951 had credit of million N 14953 rose % to million V 14956 held stake in Eastman N 14956 held stake in venture V 14957 exploring sale of part N 14960 had profit of million N 14961 rose % to billion V 14964 earns salary as professor V 14965 get apartment in years V 14969 released report on extent N 14971 laid blame on speculators V 14972 rose % in fever V 14973 own estate at all N 14975 owned % of kilometers N 14975 owned % of land N 14981 studying crisis for year V 14982 took bills to Assembly V 14983 rectifying some of inequities N 14984 are restriction on amount N 14988 defines profits as those V 14990 free land for program V 14990 build apartments by 1992 V 14990 boost standing of Roh N 14992 want limits on sizes N 14993 leading charge for reform V 14993 wants restrictions on landholdings N 14997 is violation of principle N 14998 mitigate shortage of land N 15001 buy amounts of land N 15004 proposed series of measures N 15004 restrict investment in estate N 15016 challenging ordinance under amendments V 15017 took effect in March V 15018 locating home for handicapped N 15018 locating home within mile V 15019 limiting number of homes N 15021 prevent concentration of homes N 15030 destroying part of equipment N 15039 offered drugs in walk V 15041 punish distributors of drugs N 15043 is requirement for victory N 15047 captured arsenals of materiel N 15049 been lot of talk N 15051 increase price of estate N 15051 creating problems for people N 15055 is prices for products N 15056 gone % since beginning V 15059 earn million from coffee N 15060 face reductions in income N 15060 substituting crops for coffee V 15061 impose barriers to import N 15062 be policy of U.S N 15063 take advantage of opportunity N 15063 make plea to millions V 15064 is bullet against those N 15066 is president of Espectador N 15068 have homes at all V 15069 faces negotiations with unions N 15069 faces negotiations next year V 15071 gain custody of all N 15075 win nomination for mayor N 15078 wins mayoralty on 7 V 15080 steer city through crisis V 15081 advocate policies as control N 15081 funneled money into campaign V 15082 proved something of bust N 15082 proved something as candidate V 15084 recorded slippage in support N 15092 drop jobs from payroll V 15094 raise taxes on businesses V 15094 cut spending in neighborhoods V 15099 offers hope to range V 15102 remembers birthdays of children N 15102 opens doors for women V 15104 attracted whites because reputation N 15106 shown signs of confusion N 15106 plagued tenure as president N 15106 hinder him as mayor V 15107 was lead in polls N 15108 mishandled sale to son N 15110 was effort by activist N 15112 allay fears about association N 15114 joining club in 1950s V 15115 become mayor under Beame V 15115 file returns for years V 15118 is one of lawyers N 15119 resigned position as president N 15121 is personification of system N 15123 elected president in 1985 V 15126 drink tea of coffee V 15128 was member of Estimate N 15129 draw members to position V 15133 had problem from time V 15133 delay support of Dinkins N 15136 discussed issues during campaign V 15139 setting tone for negotiations N 15140 receiving endorsement from groups V 15140 issue moratorium on construction N 15143 favors form of control N 15143 attract investment in city V 15144 linking subsidies to businesses V 15145 drive businesses from city V 15146 favors approach toward states N 15150 leaving voters with clue V 15153 taken role on strategy N 15154 made way into papers V 15157 receive advice from board V 15158 place responsibility in hands V 15161 Having positions of wealth N 15161 constitute Guard of politics N 15162 win support of factions N 15163 are potholes for city V 15164 think any of us N 15164 sidetrack determination because obligations N 15167 perpetuate ineffectiveness of system N 15168 talk some of problems N 15169 gave % of votes N 15169 gave % in primary V 15169 turn election to Giuliani V 15170 raising questions about standards N 15170 generate excitement about candidacy N 15172 learn nuances of politicking N 15176 pulls measure across front V 15177 lurched feet off foundation V 15179 is pile of bricks N 15181 is adjuster with Casualty N 15182 restore order to lives V 15184 clear sites for construction V 15185 write checks for amounts V 15189 toting bricks from lawn V 15189 give boost through window N 15190 measuring room in house N 15191 snaps photos of floors N 15193 sweeps glass from countertop V 15196 buying insurance for house V 15205 deployed 750 in Charleston V 15206 processing claims from storm N 15206 processing claims through December V 15207 take six to months N 15209 fly executives to Coast V 15210 pulled team of adjusters N 15213 packed bag with clothes V 15216 saw it on news V 15219 count number of dishwashers N 15222 Using guide for jobs V 15224 visited couple in Oakland N 15225 pushed feet off foundation V 15226 presented couple with check V 15226 build home in neighborhood V 15228 have experience with carpentry V 15232 does lot of work N 15232 does lot by phone V 15234 spent month at school V 15234 learning all about trade N 15243 prepares check for Hammacks V 15246 retrieve appliances on floor N 15249 get check for dollars N 15252 rebuilding house in Gatos V 15253 lose money on this V 15255 costs 2 for 1,000 V 15262 have water for days V 15269 offering services for customers N 15269 re-examine regulation of market N 15270 were news for AT&T V 15271 championed deregulation of AT&T N 15271 championed deregulation at job V 15272 pushing deregulation at FCC V 15276 offering packages to customers V 15278 gave % to discount N 15278 gave % to company V 15280 match offers by competitors N 15281 offered discount to International V 15284 propose rules next year V 15286 take look at competition V 15289 petition decision in court V 15291 filed countersuit against MCI V 15292 was blow in fight N 15293 sued AT&T in court V 15297 undermining pillar of support N 15297 undermining pillar in market V 15298 flowed % of assets N 15299 lost total of billion N 15299 lost total through transfers V 15302 had outflows in months V 15303 exacerbated concern about declines N 15304 seeing headline after headline N 15305 spell trouble for market V 15306 sell some of junk N 15306 pay investors in weeks V 15307 erode prices of bonds N 15311 finance boom of years N 15312 are the among holders N 15313 hold assets of billion N 15314 hold smattering of bonds N 15315 had outflow of million N 15315 had outflow in months V 15319 met all without having V 15320 had month for years N 15320 had sales until month V 15323 holds position of % N 15324 yanked million in months V 15325 followed change in picture N 15325 followed change in picture N 15330 fallen year through 19 N 15333 expand selling to securities V 15336 sent sterling into tailspin V 15336 creating uncertainties about direction N 15339 shocked analysts despite speculation V 15343 reinforced confidence about sterling N 15351 shares view of world N 15351 shares view with Lawson V 15353 keep inflation in check V 15353 have impact on rates V 15356 proved stopgap to slide N 15362 rose 3.40 to 372.50 V 15363 was the since 3 V 15374 used line in meeting V 15374 taking action against Noriega V 15375 warn Noriega of plot N 15382 told him at House V 15384 's defender of powers N 15386 's senator like Vandenberg N 15387 are heroes of mine N 15392 support coup in Panama N 15406 confusing consensus on principles V 15408 leave operations to presidents V 15415 clarify ambiguities between administration N 15419 shared principles of Boren N 15421 running policy by committee V 15422 seen abuses of power N 15429 drove miles to office V 15429 endured traffic during journey V 15429 be residents of community N 15430 is evidence of economy N 15432 awaited thinker in societies V 15436 buried him in cemetery V 15437 harbors yearning for virtues N 15440 been mainstay of revival N 15441 became point of pride N 15443 including three for Inc N 15444 delivered month in time V 15449 are source of controversy N 15450 cited parallels between case N 15452 reduce strength of companies N 15452 reduce strength in markets V 15452 is key to winning N 15453 raising funds in markets V 15454 was about-face from policy N 15455 played part in restructuring N 15457 sold % of stake N 15457 sold % to group V 15458 took control of board N 15459 combine Marine with firms V 15459 ensure survival as nation N 15466 wasting subsidies of kronor N 15469 sell shipyard to outsider V 15473 report loss of million N 15475 report loss for 1989 N 15479 called notes with amount V 15482 idle plant for beginning V 15483 eliminate production of cars N 15486 builds chassis for vehicles V 15487 scheduled overtime at plant V 15489 slated overtime at plants V 15496 includes domestic-production through July V 15497 heaped uncertainty on markets V 15502 is picture of health N 15503 are the in years N 15503 is the in Community N 15504 pressing demands for increases N 15504 pressing demands despite belief V 15506 dropped % from high V 15511 get repeats of shocks N 15513 incur loss as result V 15515 approach equivalent of million N 15519 cushioning themselves for blows V 15520 managing director of Ltd. N 15520 runs bars in district V 15521 's sense among set V 15524 created longing for days N 15526 have jobs at all V 15527 employs people in London V 15527 shed jobs over years V 15528 see cuts of % N 15529 been grace for industry V 15531 cause companies in hope V 15536 be lot of disappointments N 15536 be lot after all V 15540 chucked career as stockbroker N 15547 blow horn in anger V 15549 presage action by banks N 15550 operate network under rules V 15551 reduce value of assets N 15554 is unit of Ltd N 15556 increase offer to billion V 15556 following counterbid from Murdoch N 15561 warned lawyers for Antar N 15562 follows decisions by Court N 15566 are all of people N 15566 defend Bill of Rights N 15566 turned number of cases N 15567 seek indictment on charges N 15568 seize assets before trial V 15574 limit forfeiture of fees N 15576 charged month in suit V 15579 pump price through statements V 15585 was reminder of collapse N 15586 take precautions against collapse N 15597 get broker on phone V 15598 preventing chaos in market N 15600 prevent conditions in markets N 15601 assumed responsibility in market N 15602 is market without market-maker N 15603 play role in market V 15604 pumped billions into markets V 15605 lent money to banks V 15606 lent money to customers V 15606 make profit in turmoil V 15608 supply support to market V 15609 flooding economy with liquidity V 15609 increasing danger of inflation N 15609 stabilizing market as whole V 15616 reduce need for action N 15619 maintain functioning of markets N 15619 prop averages at level V 15622 buy composites in market V 15625 eliminate cause of panic N 15628 recall disorder in markets N 15629 avoid panic in emergencies N 15632 was governor of Board N 15632 was governor from 1986 V 15635 be rule of day N 15636 say nothing of banks N 15636 guide financing of transactions N 15638 had comment on resignation V 15644 using chip as brains V 15645 discovered flaws in unit N 15646 notifying customers about bugs V 15646 give answers for calculations N 15648 are part of development N 15650 affect schedule at all V 15651 delay development of machines N 15652 modified schedules in way V 15661 cause problems in circumstances V 15667 converts 70-A21 from machine V 15668 told customers about bugs V 15669 circumvent bugs without delays V 15671 announce products on 6 V 15673 's break from tradition N 15675 are chips of choice N 15675 is spearhead of bid N 15675 guard spot in generation V 15678 crams transistors on sliver V 15679 clocks speed at instructions V 15683 is descendant of series N 15683 picked chip for computer V 15684 processes pieces of data N 15685 cornered part of market N 15685 cornered part with generations V 15686 keep makers in spite V 15688 bases machines on chips V 15689 have impact on industry V 15690 be technology in computers N 15690 be technology for years V 15691 have any on that N 15691 have any at all V 15693 form venture with steelmaker N 15693 modernize portion of division N 15694 is part of effort N 15694 posted losses for years V 15697 affects part of operations N 15697 joined forces with partner V 15699 's step in direction N 15701 be beginning of relationship N 15701 open markets for Bethlehem V 15703 establish facility at shop V 15705 install caster by fall V 15706 improves quality of rolls N 15708 concentrate business on fabrication V 15711 consider case of Loan N 15714 sell holdings by 1994 V 15714 increased supply of bonds N 15714 eliminated one of investments N 15715 is twist to loss N 15717 regard this as issue V 15717 is topic around all V 15718 had loss in part V 15718 adjust value of bonds N 15718 adjust value to the V 15720 reminds us of story V 15721 seeking relief from Congress V 15724 see Congress as resort V 15727 move headquarters from Manhattan V 15730 sold skyscraper to company V 15731 is embarrassment to officials N 15739 build headquarters on tract V 15740 rent part of tower N 15742 run headquarters at Colinas V 15744 asking 50 per foot N 15744 asking 50 for rent V 15746 eliminating commutes between home N 15746 work hours in Dallas V 15747 rose % in September V 15748 produced tons of pulp N 15748 produced tons in September V 15751 is producer of pulp N 15754 completed acquisition of Inc. N 15754 purchasing shares of concern N 15754 purchasing shares for 26.50 V 15755 includes assumption of billion N 15756 includes Corp. through fund V 15758 follows months of turns N 15760 taking charges of million N 15761 received offer from group V 15763 including members of family N 15767 lowered offer to 26.50 V 15771 close markets in periods V 15772 disputed view of Breeden N 15773 have impact on markets V 15774 close markets in emergency V 15776 asked Group on Markets N 15783 have positions in stocks N 15785 be thing of past N 15789 offer opinion on controversy N 15789 become part of trading N 15792 disclose positions of companies N 15792 mandate reporting of trades N 15792 improve settlement of trades N 15795 become Act of 1989 N 15796 assure integrity of markets N 15798 covers range of provisions N 15798 affect authority of Commission N 15800 elevates infractions to felonies V 15802 prevent conflicts of interest N 15803 create burdens for industry N 15804 records trades by source V 15805 develop system like one N 15806 have system in place V 15810 is consideration because sweep N 15816 increase costs of trading N 15817 is imposition of fees N 15817 widen spread between U.S. N 15818 have effect on position N 15820 increasing costs as result V 15824 depriving individual of access N 15826 expose firms to damages V 15827 supervising execution of trade N 15827 doing business with independents V 15829 be diminution of liquidity N 15832 obtain execution for client N 15833 provides liquidity to markets V 15835 has value to system N 15838 permit consideration of all N 15841 receiving benefits in week V 15842 receiving benefits in week V 15845 rearranges limbs of beggars N 15845 takes cut of cent N 15850 won him in 1988 V 15851 offer sample of talent N 15852 show range of intellect N 15852 include work of allegory N 15853 chart evolution of city N 15856 follows decline of family N 15856 follows decline with sweep V 15857 dooming family to poverty V 15858 peddling herself for piasters V 15859 support family with money V 15861 burying him in grave V 15862 conceal belongings from neighbors V 15866 gathering spittle in throats V 15871 was tradition in Arabic V 15871 modeled work on classics V 15878 reflects souring of socialism N 15880 redeeming life of bullets N 15880 redeeming life by punishing V 15882 enter prison of society N 15892 advocating peace with Israel N 15894 is surrogate for action N 15895 gives glimpses of Cairo N 15902 make offer for all N 15903 had losses in quarters V 15906 's part of group N 15910 left Phoenix at beginning V 15915 including restoration of holidays N 15918 increase fund by million V 15919 transfer control to Hill V 15921 voted 250 to 170 N 15921 voted 250 on Wednesday V 15921 order million in spending N 15922 has work on 30 V 15924 called service by Members V 15926 collect contributions from developers V 15926 keep them in office V 15927 resolve differences between versions N 15932 transferred million from program V 15932 funneled it into items V 15937 purchased lot on island N 15940 intercepted value of cocaine N 15944 get idea of leverage N 15946 discourage use of drugs N 15946 stop process among the V 15948 was director with jurisdiction N 15952 'm veteran of war N 15957 buy drugs at place V 15958 create market for themselves V 15961 read article in issue N 15962 examine forms of legalization N 15967 have iteration of programs N 15969 grew pace as quarter N 15970 was catalyst to expansion N 15974 been contributor to growth N 15975 sustain economy on path V 15976 showed change of pace N 15977 crimp progress in trade N 15979 was spot in report N 15980 measures change in prices N 15980 slowed growth to rate V 15984 expressed satisfaction with progress N 15996 cause downturn in activity N 15998 diminished income by billion V 15998 called effect on the N 16002 received contract by Force N 16003 provides equipment for Northrop V 16003 supports purchase of missiles N 16004 offering incentives on models V 16005 has incentives on models V 16006 announced terms of issue N 16006 raise net of expenses N 16007 redeem million of shares N 16008 entitle holders of shares N 16012 holds % of shares N 16014 redeem shares on 31 V 16016 eliminate payments of million N 16017 was one of companies N 16017 was one until year V 16021 plunged % to million V 16022 plunged % to 302,000 V 16023 is one of contractors N 16024 suffering drops in business N 16029 applying skills in fields V 16030 provides services to military V 16031 quadrupling earnings over years V 16031 posted drop in earnings N 16034 earned million on revenue V 16036 make money off trend V 16037 repairing parts at % V 16038 selling parts to the V 16040 taking maintenance of aircraft N 16040 taking maintenance with people V 16043 buying companies with markets N 16044 buy rights to system N 16045 automates array of functions N 16046 are customers for software N 16046 are customers in area V 16047 acquired companies outside market V 16048 transfer skill to ventures V 16050 take talent of engineers N 16053 helping company in slowdown V 16053 makes tunnels for industry V 16057 enjoyed growth until year V 16058 Following a of earnings N 16058 plunged % to 45,000 V 16060 combining three of divisions N 16060 bring focus to opportunities V 16062 earned million on revenue V 16062 provides example of cost-cutting N 16064 contributed loss since 1974 N 16068 are businessmen in suits N 16069 became shareholder in PLC N 16071 has share of dents N 16072 received sentence from court V 16073 evade taxes by using V 16074 had brushes with law V 16076 had contact with Morishita V 16077 make judgments about Morishita V 16078 have country by country V 16084 purchased % of Christies N 16084 purchased % for million V 16086 made one of shareholders N 16091 considers connoisseur of art N 16092 start museum next year V 16093 spent million on business V 16094 racked a at auction V 16097 rose % to yen V 16100 report all of income N 16100 report all to authorities V 16103 Stretching arms in shirt V 16103 lectures visitor about way V 16107 know details of business N 16107 's source of rumors N 16108 link demise with Aichi V 16109 connecting him to mob V 16113 flying helicopter to one V 16114 owns courses in U.S. V 16123 expand business to areas V 16127 co-founded company with Tinker V 16128 is unit of PLC N 16128 oversee company until is V 16129 reported loss of million N 16129 reported loss for quarter V 16131 reported loss of million N 16133 granted increases than those N 16135 negotiated increases in 1986 V 16135 increased average of % N 16135 increased average over life V 16136 shown increase since 1981 V 16136 comparing contracts with those V 16151 become advocate of use N 16155 promote Filipino as language V 16158 cite logic in using V 16162 understands Filipino than language V 16164 is field in Philippines V 16166 was colony of U.S. N 16166 is language for children V 16168 calls ambivalence to Filipino N 16171 was uproar from legislators V 16171 conduct debates in English V 16174 advance cause of Filipino N 16177 shown weekdays on two V 16181 lacks polish of Street N 16185 is the of program N 16192 reported net of million N 16192 reported net from million V 16193 registered offering of shares N 16194 sell million of shares N 16198 have shares after offering V 16198 owning % of total N 16199 sell adhesives to S.A. V 16201 put units on block V 16201 raising billion in proceeds V 16202 rescued Emhart from bid V 16202 acquire maker of tools N 16202 acquire maker for billion V 16204 boosted ratio of debt N 16206 put businesses on block V 16207 had sales of million N 16208 contributed third of sales N 16211 negotiating sales of units N 16211 announce agreements by end V 16212 generated sales of billion N 16212 generated sales in 1988 V 16212 generated sales of billion N 16213 posted sales of million N 16214 achieve goal of billion N 16214 said Archibald in statement V 16215 quell concern about Black V 16222 's tax on mergers N 16223 raise million by charging V 16223 charging companies for honor V 16223 filing papers under law V 16224 describing effects on markets N 16226 give managers of firms N 16226 use review as tactic V 16228 increase budgets of division N 16230 charge parties for privilege V 16233 been chairman of Ernst N 16236 bring stake in Mixte N 16236 bring stake to % V 16237 accused Paribas of planning N 16237 selling parts of company N 16238 including representatives of giant N 16238 hold % of capital N 16239 doing anything besides managing V 16240 boost stakes in Mixte V 16241 seek means of blocking N 16242 organizing counterbid for Paribas V 16243 be francs from francs V 16247 built company through activity V 16250 needs go-ahead from the V 16251 joined core of shareholders N 16252 boost stake above % V 16253 downplayed likelihood of bid N 16254 is role of allies N 16255 hold % of capital N 16258 boost stake in Mixte V 16261 offer shares for share V 16262 values Mixte at francs V 16263 raised million from offering V 16265 save the in expense V 16267 representing yield to maturity N 16269 is underwriter for offering V 16270 have amount of million N 16272 eliminated number of corporations N 16274 paid tax from 1981 V 16274 paying average of % N 16274 paying average in taxes V 16275 considering number of breaks N 16276 scaled use of method N 16276 defer taxes until was V 16277 reached % in 1988 V 16278 shouldering share of burden N 16282 garnered total of billion N 16285 released study on bills N 16292 retains titles of officer N 16292 remains chairman of board N 16299 won them at home V 16302 's question of timing N 16304 include stores as Avenue N 16308 confirmed report in Shimbun N 16311 seeking information on group V 16312 buy group from subsidiary V 16313 acquired year by Campeau V 16314 put such on Campeau V 16315 find partners for buy-out V 16316 get backing from store N 16323 invested yen in venture V 16325 increased stake in Tiffany V 16326 opened shops in arcades V 16327 open Tiffany in Hawaii V 16328 makes match for Avenue N 16331 is interest in idea V 16333 do business in America V 16339 increased deficit to million V 16340 give money after 1987 V 16344 visit China at invitation V 16347 have discussions with leaders V 16347 give assessment of leaders N 16347 give assessment to Bush V 16348 be supporters of alliance N 16350 was the with % V 16351 registered support below % V 16352 filed complaint against maker V 16352 using colors of flag N 16352 using colors on packages V 16353 distribute flag in way V 16357 cost # in revenue V 16358 bought stamps from charities V 16359 presented consul in Osaka N 16359 presented consul with a V 16361 sent aid to Francisco V 16363 lure traders after crackdown V 16365 protesting crackdown by dragging V 16365 dragging feet on soliciting V 16371 is reading in class V 16372 sneaking snakes into Britain V 16372 strapped pair of constrictors N 16372 strapped pair under armpits V 16374 continuing talks with buyers N 16374 reached agreement on deals V 16375 seeking alternatives to offer N 16377 reap money through sale N 16378 rose a against currencies V 16379 tumbled points to 2613.73 V 16381 following resignation of chancellor N 16383 nose-dived share to 100 V 16383 pulled issues after reporting V 16383 reporting earnings after closed V 16384 were losers in quarter V 16386 prompted sell-off of stocks N 16388 grew % in quarter V 16388 predicting growth for quarter N 16389 are a than revisions N 16390 questioning profits as pillar V 16393 is encouragement for Reserve V 16393 lower rates in weeks V 16397 outstripped 1,141 to 406 N 16404 joined Senate in making V 16404 meet payments of an N 16404 meet payments during years V 16405 allocating billion to departments V 16405 imposing fees on interests V 16405 making filings with government V 16406 ensures enactment of provision N 16407 back promise of supporting N 16407 supporting claims of 20,000 N 16410 commits government to payments V 16411 assumed some of character N 16411 reopens divisions in majority N 16412 treating payments as entitlement V 16413 makes one of the N 16413 is rod for battle V 16414 curb power of board N 16414 curb power until are V 16418 receive million by charging V 16418 including increase in fee N 16419 include an in funds N 16420 defer increase in funds N 16420 raise grant for states V 16422 rescinded million in funds N 16422 rescinded million for Worth V 16423 add million for initiative V 16425 posted losses in businesses V 16425 casting pall over period V 16426 had loss in business V 16429 fell % to billion V 16429 excluding gain of million N 16431 spark wave of selling N 16431 spark wave in market V 16432 eased cents to 22.25 V 16433 reflects outlook in Detroit V 16439 cut plans from levels V 16442 blamed costs for drop V 16444 ran loss of million N 16444 ran loss on assembling V 16444 assembling cars in U.S. V 16444 ran loss of million N 16445 show profit for quarter V 16446 reported net of million N 16446 reported net on revenue V 16448 was reversal for company N 16448 reeled quarters of earnings N 16448 reeled quarters until quarter V 16450 expects economy through end V 16453 had net of billion N 16457 include earnings of million N 16462 seeing prices on models V 16463 including gain from sale V 16464 rose % to billion V 16466 issue earnings for business N 16468 offset gains from increases N 16469 illustrate diversity of operations N 16470 attributed half of net N 16470 attributed half to units V 16472 build reserves to billion V 16475 was % to billion V 16476 earned billion on revenue V 16477 are versions of Measure N 16477 are versions on stage V 16478 is portrayal of play N 16478 is overlay of decadence N 16479 is one of plays N 16481 mounted production at Center V 16482 turns rule of city N 16482 turns rule to the V 16483 made fiancee before marry V 16483 condemns Claudio to death V 16484 yield virtue to him V 16485 set scheme in motion V 16485 fearing outcome until arranges V 16485 arranges reprieve for all V 16488 has grasp of dynamic N 16489 confronts brother in cell V 16489 confronts him with misdeeds V 16489 bring points to life V 16490 be interpreter of Shakespeare N 16492 make Shakespeare to today V 16493 puts burden on director V 16493 show degree of taste N 16494 converting them into transvestites V 16497 inform Isabella of fate N 16497 slaps mother on rear V 16500 is bid for laugh N 16501 has pluses than minuses N 16502 represents step for Theater N 16503 is assignment as director V 16505 write editorial in magazine V 16508 giving sense of excitement N 16513 bottled capital-gains in Senate V 16513 prevent vote on issue V 16514 force advocates of cut N 16521 offered package as amendment V 16521 authorize aid to Poland V 16522 holding vote on amendment N 16522 holding vote by threatening V 16524 have votes for cloture V 16525 show sign of relenting N 16527 amend bill in Senate N 16527 amend bill with capital-gains V 16530 garner majority in the V 16531 accuse Democrats of using N 16533 traded accusations about cost N 16534 create type of account N 16539 approved million in loans N 16541 finance projects in Amazon V 16544 reported loss of million N 16545 reported earnings from operations N 16545 reported earnings of million V 16548 limits payouts to % V 16549 paid share of dividends N 16549 paid share on earnings V 16552 make products as bags N 16555 captured share of market N 16556 caused loss of million N 16556 caused loss in quarter V 16557 filled % of needs N 16557 represented % of capacity N 16560 cost company for quarter V 16561 put pressure on earnings V 16562 restore dividend at meeting V 16563 pay dividends on basis V 16565 issued recommendations on stock V 16567 dumped shares of issues N 16568 slumped 4.74 to 458.15 V 16569 are part of 100 N 16572 plummeted 9.55 to 734.41 V 16574 fell 5.80 to 444.19 V 16574 slid 4.03 to 478.28 V 16575 dropped 2.58 to 536.94 V 16576 eased 0.84 to 536.04 V 16577 lost 2.11 to 452.75 V 16579 see buying at all V 16582 are nails in coffin N 16584 make bid for anything V 16586 experiencing problems with microchip V 16589 dropped 7 to 32 V 16590 fell 1 to 1 V 16592 was 5 to 30 V 16593 eased 5 to 17 V 16596 were % from period V 16597 lost 1 to 42 V 16598 sued competitor for misleading V 16599 fell 5 to 11 V 16601 bought % of shares N 16602 enter war with GM V 16604 earned share in period V 16606 make payment on million N 16606 make payment by date V 16607 blamed softness in interior-furnishings N 16607 blamed softness for troubles V 16608 tumbled 1 to 9 V 16608 reported a in quarter V 16609 hurt sales in Co. V 16610 surged 1 to 36 V 16612 cost it in quarter V 16613 jumped % to million V 16616 reflect mergers of Bank N 16619 attributed results to strength V 16620 had mix with gains V 16622 had 750,000 in expenses V 16624 retains shares of Mac N 16625 earn million from a N 16633 dumping stocks as fled V 16634 fell 39.55 to 2613.73 V 16640 set pace for yesterday V 16641 closed 5 to 100 V 16642 hit high of 112 N 16642 hit high on 19 V 16643 uncovered flaws in microprocessor N 16643 cause delays in shipments V 16644 dropped 7 to 32 V 16646 leading you down tubes V 16647 took comfort in yesterday V 16649 pushed average in morning V 16651 had concern about turmoil N 16651 missed payment on bonds N 16651 missed payment in September V 16653 given discrepancies between stocks N 16653 given discrepancies at close V 16654 sell all in trade V 16655 rose million to billion V 16656 fell 1 to 100 V 16656 droped 1 to 88 V 16656 lost 1 to 17 V 16657 lost 1 to 24 V 16658 dropped 1 to 31 V 16658 fell 5 to 55 V 16658 lost 1 to 12 V 16659 slid 1 to 38 V 16659 led list of issues N 16660 plunged 3 on news V 16660 affect results through end V 16661 fell 7 to 41 V 16661 have impact on results V 16662 went 1 to 126 V 16664 lost 1 to 44 V 16664 slid 3 to 22 V 16666 cut ratings on Schlumberger N 16666 went 1 to 1 V 16668 climbed 1 to 39 V 16668 rose 1 to 16 V 16668 went 5 to 13 V 16668 added 5 to 15 V 16668 rose 2 to 46 V 16669 fell 5 to 43 V 16670 equaled % of shares N 16671 rose 1 to 17 V 16672 authorized repurchase of shares N 16672 authorized repurchase under program V 16673 was % from year V 16673 added 1 to 22 V 16675 plunged 1 to 69 V 16677 reported loss for quarter N 16677 dropped 1 to 33 V 16678 suspended payment of dividends N 16679 holding talks with Jones V 16679 advanced 7 to 20 V 16681 fell 2.44 to 373.48 V 16683 climbed 3 to 13 V 16684 signed letter of intent N 16684 acquire company in swap V 16685 answer questions from subcommittee V 16686 invoke protection against self-incrimination N 16686 invoke protection at hearings V 16689 remains target of hearings N 16691 acquire stake in Ltd. N 16694 have presence in Australia V 16695 discuss details of proposals N 16696 given Accor through issue V 16699 damage competition in markets V 16700 is equivalent of pence N 16701 increase penalties for misuse N 16707 speed removal of pesticides N 16713 fine KLUC-FM in Vegas N 16713 fine KLUC-FM for playing V 16713 playing song on 1988 V 16716 uses word for congress V 16719 answered Line at midday V 16721 dismissed complaints about indecency N 16721 aired material after 8 V 16721 aired minutes after played N 16723 set line at midnight V 16728 proposed fine for WXRK V 16729 began crackdown on indecency N 16729 features lot of jokes N 16729 was one of shows N 16731 does hours of humor N 16734 banning reading of Joyce N 16736 citing stations in York V 16736 fining stations in Miami V 16737 find grounds for ban N 16738 has agreements with firms V 16738 designates one of firms N 16738 handle each of trades N 16739 solicits firms for price V 16740 reported drop in income N 16740 fixing some of problems N 16741 completed restructuring in quarter V 16742 posted a for quarter V 16745 losing money at rate V 16747 posted net of million N 16747 posted net from million V 16748 include gain of million N 16748 include gain from divestiture V 16750 rose % to billion V 16753 offset performance by fighter N 16754 were % in missiles V 16764 thwart kind of attempts N 16764 sell % of stock N 16764 sell % to Ltd V 16765 was transaction for airline V 16765 sold stake to Swissair V 16765 placed % of stock N 16765 placed % in hands V 16766 buy stake in Airlines N 16768 were subject of bids N 16770 risen % over months V 16772 buy shares of stock N 16772 buy shares for % V 16773 buy amount of shares N 16774 vote shares in proportion V 16776 operate service on routes V 16777 provides toehold in Pacific N 16777 face possibility of expansion N 16778 granted access to drug N 16778 granted access for children V 16779 announced move by the N 16779 announced move after years V 16781 give drug for time V 16782 is unit of PLC N 16783 give access to drug N 16784 had access to AZT V 16784 approved usage for adults N 16784 approved usage in 1987 V 16785 relieve symptoms in children V 16785 lacks approval for use N 16787 stricken children under 13 N 16787 carry infection without symptoms V 16789 reject affiliation with Association N 16789 giving victory to chairman V 16792 bought Tiger in February V 16794 lost lot of votes N 16796 infuse confict into relations V 16797 been unit in U.S. V 16802 protesting improprieties in vote N 16803 misled pilots by calling V 16808 hurt them in battle V 16809 reconciles classifications of Federal N 16809 faces elections among mechanics V 16812 are guide to levels N 16844 included gain of million N 16850 reflect this in methods V 16851 rose 9.75 to 170.75 V 16853 report earnings of 7 N 16854 rose % to billion V 16855 was % to miles V 16857 fell % to million V 16857 includes gain from sale N 16858 increased % to billion V 16860 discuss possibility of proposing N 16860 proposing recapitalization to board V 16864 announced appointment of Coors N 16865 was statement of Coor N 16866 fight competition from Cos N 16867 relinquish post to uncle V 16868 been chairman since 1970 V 16870 shift responsibilities at company V 16873 integrating efforts of Stroh N 16873 steering merger through Department N 16875 is time of risk N 16875 has amount of responsibility N 16876 Putting William at helm V 16876 have statesman at top V 16879 devote attention to unit V 16883 credit Peter with selling V 16883 selling members on purchase V 16883 slap piece of debt N 16883 slap piece on books V 16884 had struggle in getting V 16886 take credit for moves V 16893 put pressure on management N 16893 put pressure in midst V 16897 deny request for injunction N 16897 preventing producers from taking V 16897 taking management of Inc N 16898 made request in Court V 16898 filed a against Sony V 16900 assume billion in debt N 16900 offering million for Co. V 16901 heighten acrimony of battle N 16903 leaving Sony in such V 16903 prevent revitalization of Columbia N 16904 violates contract with Warner N 16906 make movies for Warner V 16907 prevents team from being V 16907 being producers for studio V 16908 exclude them from taking V 16908 taking post at company V 16909 produce pictures for Warner V 16910 prohibits them from producing V 16911 prevent Guber from completing V 16911 completing production in properties V 16912 become co-chairmen of held N 16912 changed name to Entertainment V 16913 offered posts at Columbia V 16918 violates morality by raiding V 16918 raiding producers under contract N 16920 free producers from contract V 16922 delayed seizure until made V 16924 prosecute Lincoln over infractions V 16928 took control of thrift N 16928 took control in August V 16932 accused Wall of holding V 16932 holding meetings with officials N 16932 holding meetings while refusing V 16933 received officials as heroes V 16933 relieved them of responsibility N 16934 renewed call for Wall V 16944 assist them in organizing V 16947 make referrals to me V 16948 heard testimony from officials V 16948 received contributions from Jr. V 16949 encouraged sale than putting N 16949 putting it in receivership V 16950 disclosed calls to regulators V 16952 involve U.S. in plots V 16954 notifying dictators in advance V 16955 have assassinations as goal V 16957 regarding Panama with officials V 16958 have effect of giving N 16958 giving leeway in actions N 16959 require notice of acts N 16960 notify committee in advance V 16960 delay notification in cases V 16964 donated site on side N 16967 made survey of site N 16967 realize extent of problem N 16969 cost millions of dollars N 16970 Paying portion of costs N 16970 has revenue of million N 16971 asked court in Chicago N 16971 rescind agreement with Valspar N 16972 accepts gifts in age V 16974 share costs of problems N 16975 paying insurance on land N 16975 take deduction on property V 16976 escape liability by showing V 16976 conducted investigation before accepting V 16978 reject gifts of property N 16980 represented % of giving N 16981 tightening rules on gifts N 16982 conducts assessment of property N 16990 have liability on hands V 16996 refused gift of site N 16998 closed door on donations V 16999 's help in mess V 17003 leased property from Conant V 17004 have empathy for situation V 17008 owes 400,000 in taxes V 17009 sued Goodwill for share V 17011 was indication of contamination N 17012 receive donations from liability V 17016 lectures charities about accepting V 17019 sells billions of dollars N 17019 sells billions in hardware V 17021 sunk money into venture V 17023 cover those by forging V 17023 shuffling millions of dollars N 17023 paying money to middlemen V 17023 disclose scam to authorities V 17025 featuring passel of details N 17025 revive interest in matter N 17025 revive interest on Hill V 17026 submitted document as part V 17026 arbitrating case between Travel N 17027 called step in inquiry N 17030 made filing to chamber V 17030 rebuts allegations by Travel N 17033 deceived Northrop by pitching V 17037 was member of Committee N 17038 proposed idea of selling N 17038 receive commission with a V 17041 offer distribution of fighters N 17043 perform activities for F-20 V 17044 procure expenses from budget V 17060 transfer million in fees N 17061 drafted claim for Express V 17068 handed million to Express V 17072 filed suit against Koreans V 17073 asking Chamber of Commerce N 17073 return 6,250,000 at rate V 17075 gain leverage in battle V 17076 filed request with FCC V 17076 eliminate competition in Dallas V 17078 moved features to News V 17080 named president of Inc. N 17081 named president after resigned V 17082 pursue sale of company N 17084 elect chairman at meeting V 17087 shocked markets by moving V 17087 become shareholder in bank V 17088 purchase stake in Grenfell N 17089 bring stake to % V 17090 awaiting Bank of England N 17090 purchase share in bank N 17090 purchase share for pence V 17090 bringing stake to % V 17091 acquire stake at pence V 17093 jumped pence to pence V 17094 barring change in situation N 17095 linking banks into group V 17097 held discussions with officials V 17099 be target for counterbidder V 17100 seeks clarification of intentions N 17102 be one of purchases N 17103 catapult Indosuez from position V 17104 is part of plan N 17104 building business across Europe V 17108 completed purchase in weeks V 17109 is bank with lot N 17111 is force in market V 17114 resembles runner in race N 17115 acquired giant for billion V 17115 kept pace with schedule V 17117 be setback in an V 17118 been study in motion N 17119 moved headquarters from Atlanta V 17119 shipping billions of cigarettes N 17121 soared % from period V 17124 are clouds on horizon V 17125 accumulate interest in notes V 17125 require payments for years V 17133 jumped % in months V 17138 soared % in months V 17141 following lead of competitors N 17148 got billion for units V 17149 owes another on loan V 17150 pay that with billion V 17153 adjust terms of sale N 17155 told RJR of decision N 17157 taking advantage of sheet N 17157 refinance some of debt N 17158 securing debt with some V 17162 meeting payments with ease V 17164 fix rates on billion N 17165 drive price to 100 V 17167 raise rates on debt V 17167 cost company for years V 17168 accrue interest in paper V 17170 diminish value in offering N 17174 be drain on returns V 17180 happens week to week N 17184 posted gain in profit V 17188 slipped % to yen V 17189 reflected sales to Nippon N 17190 rose % to yen V 17191 rose % to yen V 17191 gained % to yen V 17192 totaled lire for the V 17194 rang revenue of lire N 17195 address issue of change N 17195 appointed chairman of Idrocarburi N 17198 rose % on growth V 17205 launching it with fanfare V 17206 shunned the in favor V 17208 sold paper to Kalikow V 17208 posting losses of million N 17208 posting losses by estimates V 17210 assembled employees in newsroom V 17213 foresees year in 1990 V 17215 blamed demise of Post N 17217 been wave of newspapers N 17221 is number of layoffs N 17221 is number on side V 17223 attract coupons from companies V 17227 cut the to cents V 17229 losing lot of money N 17230 put resources into Monday V 17233 spin % of subsidiary N 17233 spin % in offering V 17234 file offer with the V 17241 recall version of drug N 17241 recall version from shelves V 17242 was setback for Bolar V 17243 recalling capsules from distributors V 17246 submitted Macrodantin as version V 17247 obtained sample of drug N 17247 obtained sample from lab V 17251 withdraw approval of Bolar N 17253 is equivalent of Macrodantin N 17255 offered raise in wages N 17255 offered workers over years V 17261 lodged claim for raise V 17261 bringing wages in line V 17262 made counter-demand to Ford V 17265 trade stocks in index N 17265 trade stocks in transaction V 17266 review rules over months V 17273 requires minimum of million N 17275 paying attention to report V 17277 set tone for market V 17281 been source of strength N 17281 been source for economy V 17282 show reaction to news V 17291 finished day at 86 V 17296 followed a at lists N 17296 followed a within weeks V 17301 get an next week V 17302 take step of borrowing N 17302 avoid default on obligations V 17315 gained 4 to 104 N 17318 narrowed point to 1.45 V 17325 rose 10 to 112 N 17327 yield % with rate V 17331 fell 0.10 to 99.95 V 17335 sell million of bonds N 17335 sell million at time V 17345 stopped Corp. from placing V 17345 placing institution under control V 17346 place associations under control V 17347 has petition in York V 17348 impose injunction on Office V 17352 place them in receivership V 17355 placing Bank into receivership V 17357 impair ability under 11 N 17357 recoup loses by putting V 17360 use law as shelter V 17361 has clients in situations V 17364 's conclusion of study N 17365 calls delays in filling N 17365 suggests creation of office N 17366 mounting backlogs of cases N 17368 sends nomination to Senate V 17370 send recommendations to House V 17371 accused Thornburgh of delaying N 17374 prevent lawbreakers from profitting V 17374 survived challenge in ruling V 17375 restricts freedom of speech N 17376 filed suit in 1986 V 17377 received payments from publisher V 17378 had effect on industry V 17380 is target of law N 17383 open office of firm N 17384 had lawyers in Union V 17386 have offices in countries V 17387 became firm with branch N 17392 joined firm of Phelan N 17392 joined firm as partner V 17394 fulfill responsibilities to family V 17399 staff it with people V 17400 SUES Amvest for infringement V 17401 is one of creations N 17401 filed a in court V 17402 violated copyrights at times V 17408 blame insistence on cut N 17408 blame insistence for disarray V 17409 lash Bush for timidity V 17410 threaten vetoes of bills N 17410 discuss veto of bill N 17411 show attention to concerns V 17413 becomes magnet for proposals V 17414 get raise in limit V 17414 attracts attempts at adding N 17414 adding measures to it V 17415 offer cut in Senate V 17417 allowing any of them N 17417 weaken argument against gains N 17418 TURNS coup to advantage V 17419 put Congress on defensive V 17419 play role in collapse V 17427 grill Gramm about fact V 17430 mean cutbacks in training V 17438 pursues settlement of case N 17442 plan series of marches N 17448 soliciting bids for Gaston V 17448 produce revenue of million N 17452 supplies rod to AT&T V 17455 ordered pullback from trading N 17456 showed signs of retreating N 17456 become liability for Street V 17459 be trader on Exchange V 17466 cut firms from getting V 17466 getting any of business N 17469 manages billion in funds N 17471 undermined trust in fairness N 17472 join Kemper in avoiding V 17478 owns firm in Philadelphia V 17480 drafting letter to clients V 17481 doing arbitrage for clients V 17482 ceased form of trading N 17482 ceased form for account V 17483 is contributor to market N 17483 reducing confidence in market V 17485 is practitioner of forms N 17486 bring liquidity to market V 17487 do arbitrage for itself V 17490 recommend curbs on access N 17490 add volatility to markets V 17492 do arbitrage for itself V 17497 suffered an during plunge V 17500 caused splits within firms V 17501 defend use of arbitrage N 17502 is arbitrager on Board N 17502 trading shares in strategy V 17505 is bit of conflict N 17505 is bit between trading V 17506 's split at Lynch V 17507 does trading for clients V 17507 have responsibility to them V 17510 made week by Kemper V 17511 value relationships with those V 17512 cut firms from getting V 17512 getting any of insurance N 17512 has interests in firms V 17516 revised it in May V 17516 complete it by 30 V 17517 involves relicensing for facilities V 17522 is part of Times N 17523 rose % of expectations N 17526 is bellwether of profitability N 17530 finished pence at 10.97 V 17531 anticipated earnings in plastics V 17535 rose 7 to pence V 17536 slid 5 to 142 V 17541 rose points to 35714.85 V 17543 attributed sentiment to stability V 17547 advanced yen to yen V 17548 advanced 40 to 2,230 V 17550 gained 120 to 1,940 V 17550 surged 260 to 3,450 V 17550 gained 110 to 1,940 V 17552 advanced 24 to 735 V 17555 has holdings in companies V 17557 announced issue of shares N 17560 was marks at 657 V 17562 closed books for year V 17563 made profits in months V 17565 are opportunities at levels V 17566 staged rally before holidays V 17567 gained 1.5 to 321.5 V 17567 acquire Internationale in France N 17567 slipped 0.5 to 246 V 17573 named Cohen as president V 17575 owns % of Inc. N 17575 run marketing at studio V 17578 named co-presidents of group N 17579 is unit of Inc N 17580 joining Revlon in 1986 V 17580 held number of posts N 17581 was president of venture N 17582 sell movies via service V 17582 enabled subscribers with recorders N 17583 fined it in connection V 17583 shutting plant during testing V 17585 questioned safety of plant N 17588 advise it on alternatives V 17590 launched plans over year V 17590 blamed difficulties on collapse V 17591 was filing in decade N 17592 sought protection in 1982 V 17592 sold it in 1988 V 17594 operates flights to cities V 17596 elected director of utility N 17598 acquire Inc. for 2.55 V 17600 signed letter of intent N 17600 signed letter for acquisition V 17603 pay Corp. of Angeles N 17604 complements business with outlets N 17605 posted loss of million N 17608 reflected decline in sales N 17609 has interests in defense N 17611 reduce force by % V 17615 hired executive as head V 17616 named Hamilton to post V 17617 been president of office N 17618 left agency in June V 17620 faces task in reviving V 17621 yanked million from office V 17621 following loss of the V 17625 is one of outposts N 17628 won praise for some V 17629 hired Lesser from Marschalk V 17630 needs kick from outside N 17631 be clash between Ogilvy V 17633 creates ads for clients V 17634 is part of agenda N 17635 want infusion of attitude N 17635 communicating advantages of client N 17637 playing football in halls V 17639 is one of agencies N 17642 accepted job after discussions V 17642 taken approach with acquisition V 17643 been combination of Lesser N 17647 are pockets of brilliance N 17649 try hand at work V 17650 do work on project N 17652 had string of wins N 17660 reduce exposure to vagaries N 17664 pushed oil to cents V 17670 attacked tugboat near terminal V 17672 pay attention to reports V 17673 refused access to Valdez N 17675 ended yesterday at cents V 17689 regard that as sign V 17692 are producers of metals N 17693 create interest in metals N 17698 violated support at 1.19 V 17700 surrounding negotiations on strike N 17703 be buyer at levels V 17707 sold tons in London V 17711 hedging cocoa with sales V 17714 taking advantage of prices N 17716 put Electronic on block V 17717 concentrate resources on businesses V 17718 has sales of million N 17719 received inquiries over months V 17720 run business under management V 17726 advancing % in year V 17733 is flag for shorts V 17737 increase stake to % V 17746 runs Investors in Lee V 17746 is cup of tea N 17751 is recipe for death N 17754 be area for shorting V 17755 shorted shares of company N 17758 taking life in hands V 17761 has % of revenue N 17776 nearing agreement with creditors V 17776 restructuring billion of debt N 17777 is one of countries N 17777 buy some of loans N 17777 buy some under initiative V 17781 were signs of breakthrough N 17782 buy billion of debt N 17782 buy billion at discount V 17784 pay interest on loans V 17785 rose billion to billion V 17786 rose million to billion V 17786 rose billion to billion V 17786 fell million to billion V 17788 adding money to balances V 17794 draw link between rate V 17795 handles cases for seamen V 17795 provided records for research V 17796 compared deaths between 1973 V 17797 was cause of death N 17797 was cause in % V 17802 ANNOUNCED cuts of arms N 17803 reduce weapons in Sea V 17803 including scrapping of submarines N 17803 including scrapping by 1991 V 17806 liberalizing system of prices N 17807 curtail bases in Europe V 17813 considered talks on demands V 17814 halt protests for changes N 17817 provided technology to Pretoria V 17818 reached accord with Committee V 17818 involve U.S. in plots V 17820 extended privileges to Hungary V 17820 honored pledge of restructuring N 17821 denying credits to nations V 17823 put emphasis on treatment N 17824 urged residents of cities N 17824 expressing concern over health N 17830 answer questions about mismanagement N 17831 invoking right against self-incrimination N 17833 ruled talks with Nicaragua N 17834 traded fire across line V 17835 arrange meeting of lawmakers N 17835 choose head of state N 17836 introduced motion in Islamabad V 17839 entering month in Beijing V 17841 declared law amid protests V 17842 elected lawyer as commissioner V 17842 announced retirement in March V 17845 were darlings of investors N 17845 were darlings in 1960s V 17847 drew income from properties V 17851 paid % of profits N 17851 paid % to shareholders V 17857 posted profit of million N 17858 had earnings of cents N 17858 had earnings in quarter V 17859 reported loss of million N 17869 sell business to Italy V 17876 posted losses in operations V 17877 dimming outlook for quarter N 17878 marking salvo in battle V 17883 ordered pullback from trading N 17883 ordered pullback amid mounting V 17884 offering services to clients V 17885 review regulation of market N 17888 close markets in crisis V 17894 form venture with steelmaker N 17894 modernize part of division N 17895 hold auction of securities N 17895 hold auction next week V 17896 buy time for Congress V 17897 granted increase of % N 17900 boost stake in conglomerate N 17900 boost stake to % V 17901 surprised markets by moving V 17901 become shareholder in bank N 17908 prevent suitor from gaining V 17908 gaining control of company N 17908 gaining control without approval V 17910 leaves possibility of acquisition N 17911 buy shares at % V 17911 acquired % of Hunter N 17912 made offer for shares V 17915 has interest of % N 17916 pending confirmation at meeting V 17917 approve reclassification of X N 17922 put emphasis on treatment N 17923 is part of a N 17924 made changes to plan N 17926 contains funds for package N 17933 measures level of money N 17936 launched attack on cultivation V 17937 executed warrants in raids V 17941 represents % of marijuana N 17942 sending waves through an V 17944 rushed statement in House V 17946 slid % against mark V 17953 links currencies in Community N 17958 played such with advisers V 17960 be agreement between minister N 17963 supported entry into EMS N 17964 counter suspicion of mechanism N 17970 liberalized restrictions on controls N 17972 are view of government N 17976 stated support for Lawson V 17979 is result of approach N 17981 prefer message from government N 17981 prefer message on strategies V 17984 set level for pound V 17985 adding confusion to situation V 17986 question strategy of having N 17990 say things about Monieson V 17991 ban him from industry V 17993 was one of friends N 17994 become the in memory V 17995 was president under Monieson V 17997 initiated trades without numbers V 17997 kept ones for themselves V 17997 stuck customers with losers V 18002 shows fallacy of self-regulation N 18004 overcome conflicts of interest N 18007 counsel avoidance of appearance N 18009 recused himself from case V 18010 had relationship with Brian V 18014 is victim of celebrity N 18019 approve sale to Indosuez V 18020 divulge details of probe N 18021 become incident between U.S. N 18023 wears clothes of trader N 18023 are those of professor N 18024 remind him of fortune N 18027 played host to princes V 18028 mention interest in racing N 18029 was reader of Form N 18029 joining father at track V 18030 bet ponies with friend V 18030 become partner in GNP V 18033 led him into trading V 18033 commissioned program on demand N 18034 trading futures at Merc V 18035 formed GNP in 1973 V 18037 held fascination for Monieson V 18038 fined 10,000 for taking V 18038 taking positions beyond limits V 18040 likening fine to ticket V 18049 had profits of 62,372.95 N 18050 had losses of 20.988.12 N 18050 had losses for months V 18051 lost all of the N 18052 lost 3,000 of the N 18056 reflecting woes of lenders N 18057 reported loss of million N 18058 reported income of 523,000 N 18059 reported loss of million N 18060 take a in quarter V 18061 Barring declines in values N 18061 expect rates of loans N 18062 taking write-downs of million N 18062 taking write-downs in months V 18062 address disposal of assets N 18063 is % after charges V 18066 restore ratio to compliance V 18066 reach agreement with regulators V 18071 reduced million in assets N 18075 added million to reserve V 18079 pursuing strategies with respect V 18079 minimizing losses to company N 18080 reported loss of million N 18081 foster recycling of plastics N 18082 attacked program as ploy V 18086 educate youngsters about recycling V 18086 is step toward environment N 18087 be step for McDonald N 18088 include % of restaurants N 18092 growing amounts of trash N 18094 increasing use of plastics N 18097 mail containers to headquarters V 18099 causing headaches for companies V 18100 been factor in introduction V 18105 deduct 1,000 on return V 18106 escape taxes on all V 18108 is reason for concern N 18110 taking step of shrinking N 18112 substracting borrowing from household V 18113 's plenty of that N 18114 offering rewards for putting V 18114 putting money in IRA V 18114 widen deficit by an V 18116 widen deficits in future V 18119 concede issue to Democrats V 18120 unveil proposal of year N 18122 put 2,000 into IRA V 18122 deduct sum from income V 18124 was shifts of savings N 18129 give people for savings V 18130 restricted break to couples V 18131 including interest on contributions N 18136 Comparing proposals on table N 18137 saves 2,000 in IRA V 18137 cut bill by 175 V 18140 give deduction for depositing V 18140 depositing 2,000 in IRA V 18143 overcomes bias against savings N 18144 owed money to Service V 18144 put money in IRA V 18145 putting money in IRAs V 18145 deferring tax on interest N 18146 made deposits in 1987 V 18154 allow people with IRAs N 18154 shift money to ones V 18154 pay tax at rates V 18155 raise billion for Treasury V 18156 allowing buildup on contributions N 18156 cost Treasury in run V 18159 is echo of promise N 18159 finance themselves through growth V 18162 rejected offer by Jones N 18163 produce changes in the V 18167 disclosed opening of negotiations N 18167 disclosed opening in filing V 18168 followed effort by Telerate N 18168 attacking offer in editions V 18169 submitted ad to Journal V 18177 bought positions in stock N 18177 announced offer on 21 V 18178 acquire ownership of Telerate N 18181 owns % of Telerate N 18182 reflects premium for purchase N 18183 paying 20 for Telerate V 18185 bludgeon way through process V 18189 squeeze shareholders of Telerate N 18189 squeeze shareholders at price V 18192 are employees of Telerate N 18194 run it in Times V 18195 offering 19 for Telerate V 18202 paid 28.75 for block V 18203 represented premium of % N 18205 buys time for Congress V 18205 hold auction of securities N 18205 hold auction next week V 18207 enacted limit by midnight V 18207 suspend sales of securities N 18211 use bill as vehicle V 18211 using bill as vehicle V 18212 become game of chicken N 18214 attach tax to legislation V 18227 become ritual between administration V 18228 keep U.S. from defaulting V 18228 creates controversy in Congress V 18229 amend bill with legislation V 18229 's bill for president N 18231 see measure as opportunity V 18233 charged Exchange with discriminating V 18234 affect number of people N 18235 steering customers toward policies V 18237 raise rates for business V 18237 denying coverage in Farmers V 18238 's discrimination in book V 18239 hold hearing on matter V 18240 is unit of PLC N 18245 acquire stake in unit V 18246 create sort of common N 18248 gain access to products N 18250 posted profit of francs N 18250 posted profit in 1988 V 18252 reported profit of francs N 18252 reported profit after payments V 18256 had change in earnings V 18258 compares profit with estimate V 18258 have forecasts in days V 18266 expand production at Barberton V 18266 increase capacity by % V 18269 drop objections to offer N 18269 acquire Inc. for dollars V 18269 reaching agreement with manufacturer V 18270 reached week between university V 18270 fund research in Canada V 18271 sell company to concern V 18271 broken agreement by recommending V 18271 recommending offer to shareholders V 18272 heard week by Court V 18273 block directors from recommending V 18273 recommending offer to shareholders V 18274 favoring bid over another V 18275 add benefits to Canada V 18277 offering million for Connaught V 18278 offer benefit to Canada V 18279 is advantage to university N 18279 is advantage to university N 18282 increased program to shares V 18285 gave welcome to auction V 18285 lift spirits of market N 18286 received bids for bonds V 18287 accepted billion of tenders N 18287 accepted billion at yield V 18289 reflects number of bids N 18290 was response to security V 18293 showed interest in buying N 18295 bought amounts of bonds N 18299 buy billion of bonds N 18300 identified buyer as Inc. V 18300 purchased bonds on behalf V 18303 are buyers for bonds V 18304 jumped point on bid V 18307 repackaging them as securities V 18308 separating portion of bond N 18308 separating portion from portion V 18310 pay interest until maturity V 18312 bought share of bonds N 18314 had demand from investors V 18315 paid attention to comments V 18316 discern clues about course N 18316 discern clues from remarks V 18317 eliminating inflation within years V 18319 considering amount of supply N 18320 Including billion of bonds N 18320 sold billion in securities N 18321 scrutinizing report on product N 18332 issued million of notes N 18345 yielding % to assumption V 18352 set pricing for million N 18353 stimulate savings by residents V 18355 had bid for million V 18361 rose 0.12 to 100.05 V 18361 rose 0.05 to 97.75 V 18362 rose 15 to 112 V 18362 rose 1 to 98 V 18364 acquire rest of Holler N 18364 held stake for years V 18365 represent takeover since 1980 V 18366 's sign of consolidation N 18367 buy insurance from carriers V 18368 develop presence in Europe N 18370 maintain virility as broker N 18371 establishing presence in market N 18372 do business in Europe V 18374 receive number of shares N 18375 serve them in Paris V 18378 won contract for modifications N 18379 modify helicopter to configuration V 18380 given extension on contract N 18381 increase production of devices N 18381 increase production on scale V 18384 expand production of disks N 18384 expand production to sheets V 18385 raise production at plant V 18387 raised % to cents V 18387 raised 24 to stock N 18388 noted confidence in strength N 18389 rose % in quarter V 18389 reflecting growth in operations N 18391 increased % to million V 18394 rose % to billion V 18395 included gain of million N 18396 attributed performance to increases V 18397 represent % of revenues N 18399 increase capacity of plant N 18400 fell 1.625 to 108.625 V 18405 acquire 588,300 of shares N 18405 acquire 588,300 under circumstances V 18408 jumped % to million V 18409 had earnings of million N 18410 expects revenue in quarter N 18411 reflect dividend in 1989 V 18412 attributed increase to growth V 18415 Call office in Worth N 18417 negotiating contract to boot V 18418 landed job on Street N 18419 become addition to ranks N 18419 earning way as lobbyists V 18421 become rite of passage N 18421 become rite at time V 18427 Given penchant for writing N 18427 published guide to art N 18428 is protocol to it V 18433 is schedule of engagements N 18436 reclaim reputation as one N 18437 are mementos of days N 18438 frequents shelters for homeless N 18438 devotes a of time N 18441 developed passion during ordeal V 18443 introduced him as master V 18446 launched careers at pulpit V 18449 win chunk of royalties N 18452 been opportunity for growth N 18462 was life after Congress N 18462 questioned propriety of investment N 18478 lost contract for jeans N 18480 hit it in Hollywood V 18485 burnishing involvement in affair N 18494 had sex with page V 18495 lost seat in 1980 V 18495 soliciting sex from boy N 18495 regained footing as lawyer N 18499 win confirmation as secretary N 18502 offers environment for officials N 18505 quit job as aide V 18509 are source of solace N 18511 pulls scabs off knees V 18514 received letter from master V 18515 auction it at Sotheby V 18517 opposed actions as embargo N 18518 join OAS in hopes V 18518 be counterweight to U.S. N 18521 attending celebration of democracy N 18522 has role in hemisphere V 18525 be partner for U.S. V 18526 voted % of time N 18528 follow lead in OAS N 18529 see Canada as power V 18530 promote peace within Americas V 18530 find settlement of crisis N 18533 contain violence to degree V 18534 have plenty of violence N 18537 based appeal on puns V 18540 is portrayal of demise N 18547 are property of comedies N 18547 link phenomenon to category V 18549 buy Co. of Viroqua N 18551 exchange shares of stock N 18552 serves lines in Wisconsin V 18554 reflecting pickup of activity N 18557 enhance trading of stock N 18561 has sales of million N 18563 recorded decline in August N 18564 was decline in months N 18566 rose % in August V 18566 following months of declines N 18567 fell % in August V 18568 has share in H. V 18570 develop guidelines for lubricants V 18570 offer services in cleaning N 18571 supplying lubricants in Poland V 18572 provide details of costs N 18573 grew % from year V 18574 raised dividend to 1.20 V 18574 increase payout to shareholders N 18574 increase payout by million V 18576 lowers value of earnings N 18580 increase rewards to shareholders N 18581 entered position in April V 18582 owns % of Pont N 18583 post profit of million N 18584 announced plans for split N 18585 rose 2.50 in yesterday V 18587 Leading gains for Pont V 18590 holds % at time V 18590 growing uses for pigment N 18590 kept it in supply V 18593 increasing sales in quarter V 18595 posted earnings for quarter V 18597 called prices in markets N 18599 increased % to billion V 18600 paid 14 to holders V 18606 auction dollars of bonds N 18608 buy B.V. for million V 18609 gain control over Kabel N 18610 adding argument to arsenal V 18610 adding changes under way N 18611 linking changes in East N 18611 linking changes to need V 18611 speed changes in West N 18614 told Parliament in Strasbourg V 18614 reinforce cohesion of Community N 18615 write treaty for EC V 18616 channel money to East V 18617 integrating Europeans with Europeans V 18617 is task of Europeans N 18617 is task despite interest V 18620 implies changes in policies N 18621 be division of labor N 18623 is exporter of capital N 18624 announced plan for Poland N 18628 force them in return V 18629 throw money at Europe V 18638 raise risks with them V 18640 be message from Moscow N 18640 's deal on offer V 18643 make progress toward reforms N 18644 signed letter of intent N 18644 buy company for million V 18646 requires approval of shareholders N 18648 adopted plan at meeting V 18649 pending ratification by holders N 18651 buy shares at % V 18652 posted income of dollars N 18653 had loss of million N 18655 have value of million N 18656 perform work for Service V 18658 had revenue of billion N 18659 buy Co. for million V 18665 form ties with organized N 18666 secure orders from concerns V 18668 received orders from activities V 18669 named officer of Corp. N 18670 reaches age of 65 N 18671 is president of Trust N 18671 is president in charge N 18672 is one of banks N 18672 faced competition from firms N 18674 welcomes competition in businesses N 18675 broadens base of opportunity N 18678 serve customers with deposits N 18687 be drag on earnings N 18688 has ties to company V 18689 was trustee until 1974 V 18692 takes responsibility for group N 18696 increasing board to 22 V 18696 is part of office N 18698 earned million in quarter V 18706 meet demand for computers N 18706 made it into summer V 18707 reporting loss for quarter N 18709 reported backlog of orders N 18710 indicates demand for computers N 18710 faces competition from Corp. N 18712 named officer of concern N 18714 was officer of Equifax N 18714 retain position as president N 18716 acquire assets in transaction V 18717 acquire assets for combination V 18724 been one of maninstays N 18726 wields power at company V 18732 limit damage to ties N 18733 prepares package of sanctions N 18735 sent signal to Washington V 18735 met Deng in Beijing V 18736 made statements to me V 18742 took part in demonstrations N 18743 publish list of those N 18744 arranged aid for families V 18745 transmitted conversations to House V 18747 convey statements to Bush V 18748 attributes that to fact V 18752 Given statements to people N 18753 step campaign of arrests N 18756 publish identities of those N 18761 hashing agreement for legislation N 18770 stimulate growth of cells N 18774 giving injections of EPO N 18774 giving injections to patients V 18774 store units of blood N 18775 receiving injections about month V 18777 indicated number of cells N 18778 donated average of units N 18779 was % per donor V 18779 representing number of hospitals N 18782 succeeding Nixon as president V 18787 sought form of pensions N 18787 sought form for the V 18789 used Plan as model V 18792 naming it after Cohen V 18795 widened coverage to people V 18796 caused explosion of promotions N 18797 reduced number of people N 18799 announced devaluation of the N 18799 curb market for currency N 18806 opened country to trade V 18807 exchange dollar for rubles V 18809 sell them at mark-up V 18810 costs 2,000 in West V 18813 pay farmers in currency V 18815 is part of drive N 18816 took bankers by surprise V 18818 have effect on businesses V 18818 hold auction of currency N 18822 provide currency for auction V 18822 using lot of it N 18822 finance imports of goods N 18823 sell currencies at rate V 18823 mop some of rubles N 18823 mop some at time V 18824 demand payment in currency N 18824 demand payment from visitors V 18825 cause difficulties for people V 18826 made use of restrictions N 18826 get taste of life N 18827 change rubles into dollars V 18831 manage all of needs N 18832 lost contract with Kodak N 18832 lost contract to Corp V 18833 entered negotiations with Digital N 18833 manage all of needs N 18836 is setback to IBM V 18837 provide communications to corporations V 18838 disclose value of contract N 18839 be subcontractors on project V 18840 get vendor for service V 18842 is anniversary of System N 18845 allow branch of bank N 18848 were members of Board N 18849 drop both from board V 18851 had deal of power N 18853 introduced bill in Congress V 18853 put secretary on board V 18855 putting comptroller on board V 18859 takes interest in matters N 18859 takes interest of course V 18860 taking interest in matters N 18862 coordinate regulation of markets N 18863 made pitch for job V 18864 has plenty of responsibilities N 18864 has plenty in times V 18869 deserves lot of emphasis N 18871 included inflation in history N 18874 have hope of success N 18874 needs help from Fed N 18877 offsetting purchases of marks N 18880 has impact on values N 18881 see impact on dollar N 18885 manage rates to level V 18885 diverting policies from roles V 18887 been week of events N 18889 handled it in capital V 18891 influence outcome of events N 18892 leave commentary in wake V 18893 building station at Krasnoyarsk V 18894 has delegates in Congress V 18896 put administration in pair V 18897 views changes in Europe N 18900 give lot of space N 18900 give lot to appearance V 18902 puts tab at million V 18903 did night on Nightline V 18908 Selling presidency for mess V 18908 is devaluation from norm N 18908 is reflection of disintegration N 18913 was disease in 1906 V 18914 is law against it V 18920 Consider dissonance between speech N 18921 violated norms of behavior N 18921 violated norms in Afghanistan V 18923 given hearings in press V 18924 is key to disease N 18925 hold anyone in life N 18925 hold anyone to standard V 18926 offer version of refrain N 18929 enlisting it in service V 18929 play games about activities N 18930 told Apple in interview V 18932 is defense at all N 18932 is defense for ethos V 18934 is symbol for States V 18937 acquire all of shares N 18938 seeking offers from bidders V 18939 mail offer to shareholders V 18939 reimburse maximum of million N 18939 reimburse them for expenses V 18940 solicit bids for company V 18941 tender holdings to offer V 18942 holds half through shares V 18942 hold % of equity N 18948 acquire % of Cineplex N 18948 acquire % for 17.50 V 18949 vote shares for years V 18949 consolidating control of company N 18951 indicate source of financing N 18951 buy complex in City N 18954 give breakdown between financing N 18961 boost standing among groups V 18962 replace chlorofluorocarbons by 1995 V 18963 reduce production of product N 18963 reduce production by % V 18964 invest marks in plant V 18966 produce tons of CFCs N 18966 produce tons in factories V 18968 study impact of plastics N 18969 elected president of concern N 18971 are units of Corp. N 18972 market line of water N 18972 market line in West V 18973 marks time since Prohibition V 18973 marks entry into market N 18973 generated billion in sales N 18974 become one of companies N 18978 package it in bottles V 18980 gave thumbs-down to proposal V 18982 told committee of parliament N 18983 curbing subsidies within years V 18983 eliminating subsidies within years V 18986 is basis for negotiation N 18988 seeking reductions in protection N 18991 made allowances for nations V 18992 need help in meantime V 18995 ease transition to trade N 18996 converting supports into tariffs V 18997 raise tariffs on products N 18997 experience volume of imports N 19002 acquire one of businesses N 19005 had revenue of million N 19007 provide services for customers V 19008 posted sales of million N 19009 sold unit in Europe N 19009 sold unit for million V 19011 give expertise in workstation N 19012 cast judges in role V 19013 deserve attention than have N 19014 is biography of founder N 19015 bequeathed copyrights on writings N 19015 bequeathed copyrights to church V 19015 licensed them to Publications V 19017 permits quotation for purposes N 19018 denied injunction on ground N 19018 make claim within time V 19019 written book of criticism N 19022 outweighed interests of owner N 19024 proving points about subject N 19025 created presumption against use N 19029 outweigh sanctity of copyright N 19030 is bar to issuance N 19036 are components of use N 19040 ignore sources of information N 19042 impose restrictions on use V 19044 gain access to materials N 19044 deny use of quotations N 19045 understand requirements of scholarship N 19051 strikes blow against enterprise N 19052 is blow against scholarship N 19053 wrote series of articles N 19053 wrote series for Yorker V 19055 brought suit against Malcolm V 19057 decided case for Malcolm V 19059 are interpretations of remarks N 19061 have obligation under Amendment V 19061 safeguard freedom of press N 19061 is concomitant of press N 19062 described himself as analyst V 19064 's me against rest V 19064 cited remark as warrant V 19066 describing himself as gigolo V 19068 was interpretation of description N 19070 were two of series N 19074 is rule of journalism N 19076 reduce value of journalism N 19083 named president of Inc. N 19086 speak volumes about state V 19088 be pig in case V 19089 exposing conflicts in life N 19091 became rod for anxieties V 19093 reveal whereabouts of daughter N 19106 is undercurrent of race N 19107 attended some of schools N 19111 bashing District of government N 19115 passed Congress with speed V 19115 awaiting ruling by court N 19118 is lawyer in Washington N 19119 launch Satellite in 1990 V 19120 study effects of radiation N 19122 named chairman of group N 19124 named executive of group N 19126 announce successor to Crane N 19126 announce successor at date V 19127 acquire Inc. for million V 19130 characterized proposal as offer V 19130 pit group against another V 19131 rejected offer from group N 19131 acquire Arby for million V 19132 wrestle control of unit N 19132 wrestle control from Posner V 19133 is company for restaurants V 19135 allow operators with conflicts N 19135 refocus energies toward growth V 19136 fell % in quarter V 19140 reflecting performance of operations N 19141 represents interest in earnings N 19142 represents interest in profit N 19142 fell cents to 52.25 V 19143 is sign of times N 19143 is sign at both V 19143 are customer for side V 19144 reduce employment by people V 19151 attributed decline to costs V 19152 rose % in U.S. V 19159 was % of business N 19160 boost revenue to % V 19161 elected director of concern N 19161 expanding board to members V 19162 elected director of concern N 19168 complicate making for Yacos V 19172 including interest to creditors N 19175 receive million in payments N 19181 equal % of claims N 19182 owning % of company N 19185 change value of bids N 19186 values offer at billion V 19186 values plan at billion V 19188 delay settlement of plan N 19189 limit increases to % V 19193 proposed years of increases N 19198 get license from Commission V 19203 become officer of Inc. N 19204 is officer of unit N 19205 hold position of chairman N 19205 hold position until retirement V 19207 was day as chairman N 19214 illustrate stance as regulator N 19216 turning drop to advantage V 19216 further agenda for SEC N 19217 monitor activity by firms N 19217 track trades in market V 19220 encourages use of debt N 19220 wields influence on both V 19223 obtain majority on commission V 19224 skirted some of issues N 19225 stated position on bonds N 19226 see results of studies N 19227 kept wrap on names V 19228 continuing pursuit of trading N 19238 adorned office with photos V 19247 move change past Congress V 19249 aroused interest in Congress V 19250 raised issue at hearing V 19260 including exhibitions of engines N 19261 's showcase for country N 19268 insulate passengers from bumps V 19271 compares suspension to cheetah V 19271 equates parts to heart V 19272 touted system in car V 19273 introduce system on sedan V 19274 keeping suspension for use V 19279 drew interest from executives N 19280 shows engine in model V 19280 made debut in Japan V 19281 provides compromise between fuel-economy N 19290 has truck under nameplate N 19293 seats person in front V 19293 hold groceries in rear V 19300 play role of dummy N 19301 has exhibit in Tokyo N 19302 sponsoring display in years N 19302 includes wagon with panels N 19304 be part of mentality N 19304 explaining pilgrimage to Show N 19309 get feeling in car V 19309 get passion in car V 19309 get emotion in car V 19310 Regarding column on differences N 19310 save public from rhetoric V 19310 go hand in hand N 19310 go hand with process V 19311 raise revenue in term V 19317 acquired year in purchase V 19318 merged operations with those V 19318 is part of plan N 19319 estimate value of aircraft N 19320 estimated value of planes N 19321 have value of million N 19321 raising proceeds from sale N 19321 raising proceeds to billion V 19324 increase fleet of aircraft N 19324 increase fleet to 18 V 19324 add 747-400s by 1994 V 19326 disclose cost of overhaul N 19326 estimated it at million V 19327 see this as exercise V 19328 streamlining fleet in bid V 19330 take delivery of aircraft N 19332 announced appointments at Ltd N 19334 is director at Ltd N 19337 join Barclay from Ltd. V 19340 fueled fires with attacks V 19341 has workers in district V 19342 favor program for airlines V 19344 endorse bill by Neal N 19345 eliminating inflation within years V 19347 increase scrutiny of Fed N 19348 played reports of tension N 19349 are issues of tactics N 19352 putting economy into recession V 19352 be loss of output N 19356 reduce rate by point V 19358 given chance of passage N 19359 add secretary to committee V 19361 subject Fed to perspective V 19364 signed contract with Vila N 19365 marks entry into market N 19365 bolster sales of products N 19367 signals return as celebrity N 19368 protested some of endorsements N 19369 became one of programs N 19370 doing endorsements for Centers V 19376 building fence around affections V 19377 makes spokesman for campaigns N 19379 involves series of books N 19383 elected director of company N 19384 is officer of Inc. N 19385 speed removal of chemicals N 19387 welcome part of proposal N 19388 give weight to considerations V 19389 condone use of chemical N 19389 is anathema to community N 19390 announce series of principles N 19391 give Agency with aim V 19393 accelerate removal of pesticides N 19393 gained impetus during scare V 19394 remove Alar from shelves V 19396 causes cancer in animals V 19399 pull it from marketplace V 19402 set levels for residues V 19404 permit use of pesticides N 19405 took break from gyrations N 19405 took break with prices V 19406 lost points to 2653.28 V 19410 regains semblance of stability N 19412 paid attention to comments N 19412 extract clues about course N 19413 lower rates before end V 19414 awaiting release of estimate N 19415 have effect on markets V 19420 were 784 to 700 N 19426 discussed image of athletics N 19426 discussed image for audience V 19429 reflected agreement with conclusions N 19430 identified himself as director V 19434 be integrity of schools N 19436 be reading for president V 19437 bought way to respectability N 19438 was the in 1987 V 19438 receive penalty for violations V 19439 Given headlines about University N 19440 brought bribe to school V 19443 Paying players at SMU N 19444 involved director about everybody N 19445 expresses outrage to Clements V 19451 gets grades as reporter V 19452 received 4,000 to 5,000 N 19452 received 4,000 for tickets V 19453 are references to liaisons N 19455 produces smoke than sofa N 19455 concerning use of steroids N 19457 escaped notice of coaches N 19460 bear responsibility for conduct N 19460 bear responsibility in aftermath V 19461 issued information about standing N 19462 were responses of people N 19465 paid million in taxes N 19466 dogged maker for taxes V 19466 settle dispute in court V 19468 owe taxes to Massachusetts V 19468 explain change of heart N 19470 was subject of article N 19473 pay % of profits N 19473 conducts variety of activities N 19474 shake doldrums in business N 19474 rearrange merchandise in all N 19474 rearrange merchandise in months V 19477 stock assortment of magazines N 19480 kept pace with trends N 19481 reflects need by stores N 19481 expand base beyond worker V 19482 are number of people N 19485 targeting merchandise to customers V 19486 expanded selection in stores V 19486 added sandwiches in outlets V 19487 added displays to stores V 19488 see trend toward that V 19489 tested mix in stores V 19490 put scanners in stores V 19491 spend million on advertising V 19492 resolve dispute between Workers N 19493 settle strike by UMW N 19495 called strike in April V 19496 seeks changes in benefits N 19496 seeks changes among things V 19498 disclosed end of tie N 19498 forecast drop in sales N 19507 provide supplies of products N 19507 provide supplies to Medical V 19511 buy stock for cash V 19516 infuse cash into Delmed V 19517 receive rights to products N 19518 sell plant in Ogden N 19521 pouring gallons of water N 19521 pouring gallons into vaults V 19522 destroyed million in currency N 19522 caked million of coins N 19522 caked million with mud V 19524 reach agreement with government V 19527 is agent for coins V 19530 clean coins for cost V 19531 transporting money to Washington V 19532 gave work to Inc. V 19533 equaling 20,000 in pennies N 19533 pouring money into truck V 19537 pay total of 20,000 N 19544 's place like home N 19550 couched idea in packaging V 19551 give baby for adoption V 19554 be brats in therapy N 19555 exhausted aids to fertility N 19556 indicate longing for one N 19558 introducing parents to mother V 19560 ask this as Ohioan V 19569 doing cities in days V 19574 taking point of view N 19576 explores depth of emotion N 19579 understand instinct in way V 19579 requires appreciation of storytelling N 19580 proposed movie to producer V 19581 summarize pull of movie N 19584 expects sales from continuing N 19584 rise % through years V 19585 earned million on sales N 19590 is value of output N 19591 experiencing surge of growth N 19591 experiencing surge for time V 19592 achieve sales than goal V 19593 had order from utility V 19594 foresees need for boost N 19595 sell plants to producers V 19597 supply share of market N 19600 own % of facility N 19603 disclose size of gain N 19608 cut ties with businesses N 19612 asking recipients for comments V 19613 make decision on policy N 19617 shares royalties with researchers V 19617 disqualify itself from funds V 19620 conducted research at Institute V 19621 own stake in company V 19624 transfer technology off campuses V 19625 prevent scientists like Schimmel V 19626 transferring technology to marketplace V 19628 finance companies in businesses N 19631 had rights to technologies V 19634 invested 14 in Inc. V 19634 license technology for delivery N 19635 get license to technology N 19635 giving all of competitors N 19636 acquired rights to technology N 19639 have access to research N 19640 is both for start-up V 19642 oversees program as director V 19643 prevent escalation of problems N 19644 holding stock in Inc. N 19646 investigating abuse from researchers N 19646 holding stock in companies N 19648 be ideas for discussion N 19653 circulating memo among faculty V 19653 restrict contact with world N 19654 shunning contacts with investors N 19658 produced revival of America N 19664 is something in dramatization V 19667 play s in drama N 19672 made film about painter N 19674 is presentation in series N 19675 carry dialogue between men N 19677 hosts series about politics N 19679 kicks season with production V 19679 given twist by Gray V 19691 was trial of Stephenson N 19693 see footage in edition V 19694 speed management of chain N 19695 follows agreement by Corp. N 19695 sell chain to management V 19696 providing management with million V 19700 arose week in industry V 19703 speed sale of chain N 19704 frozen all of assets N 19706 need approval from judge N 19706 need approval for sale V 19706 need approval from judge N 19709 described filing as technicality V 19710 had revenue for year V 19713 buying stocks with half V 19714 was time since January N 19718 bought shares as part V 19722 puts broker at risk V 19722 buy stock in market V 19725 sent chill through market V 19727 produced return of % N 19727 produced return through quarters V 19729 played it with bills V 19734 signal return to stocks N 19736 driving price of stocks N 19756 includes members from company N 19763 filed suit in court V 19765 convert expenditures into dollars V 19767 convert dollars into currency V 19768 converts dollars into currency V 19768 lose interest from day V 19770 pay fee on amounts V 19771 has couple of weeks N 19775 buy acres of land N 19775 buy acres as site V 19776 buy Casino from Securities V 19780 bring shares to million V 19782 remodeling resort in Vegas N 19782 refurbishing aircraft of unit N 19782 acquire property for resort V 19784 seek financing through borrowings V 19788 include details about park N 19789 poured billion into funds V 19791 soared billion in week V 19795 posting rates since spring V 19796 get yields on funds N 19798 was % in week V 19799 boost yields in environment V 19799 extending maturities of investments N 19799 earn rates for period V 19801 anticipating declines in rates N 19803 reached % in April V 19810 did it with money V 19812 's strategy in market V 19812 have % of money N 19819 is problem for funds V 19819 use leverage at all V 19833 defend use of leverage N 19846 raised positions to levels V 19849 maintained cushion between costs N 19852 dumped Industries among others V 19852 raise position to % V 19860 occupy acres of space N 19862 flaunts ignorance of gardens N 19863 earned reputation in world N 19863 took gardens as subject V 19865 discuss garden for article V 19868 view this as landscape V 19869 view this as building V 19874 fit them into grid V 19874 making one of works N 19874 making one for wall V 19875 be network of masonry N 19879 put it in lecture V 19879 knowing difference between rhododendron N 19881 spend thousand on books V 19884 do versions of things N 19885 was problem with Gardens V 19886 afforded preview of creation N 19886 afforded preview in version V 19888 is love for plants N 19891 left room for plants N 19892 put capacity at people V 19893 was 50 by feet N 19896 requisitioned cones in heights V 19899 study book on tartans N 19904 demand skills of battalion N 19905 calling workers for maintenance V 19907 casting interiors into shade V 19908 decking walls in array V 19910 ran length of riverfront N 19911 decreed waterfall beside Hudson V 19912 passed resolution against Gardens N 19919 obstruct views of rooms N 19919 be ground for crime N 19920 be problems with safety N 19921 address questions of safety N 19924 preserving vision of artist N 19927 is time for Cuomo V 19928 take counsel from Robinson V 19928 had Bartlett in mind V 19928 applying designs to garden V 19930 read exerpts of exchange N 19930 Put Economy on Rails V 19930 read exerpts with interest V 19930 is one of areas N 19933 averaged % of currency N 19934 was bank with assets N 19934 collect claims against bank N 19938 keep lessons in mind V 19938 establish ruble as currency V 19939 make ruble into currency V 19939 leave reserves in bank V 19940 determining rights to payment N 19946 are guide to levels N 19976 halt trading at times V 19979 give markets in cases V 19980 slowing trading at times V 19982 pushing idea of breaker N 19982 pushing idea in hopes V 19982 curb turmoil in marketplace N 19988 close markets at times V 19989 worsen volatility in markets N 19991 offered support for provisions V 19992 provide information about loans N 19993 create problems for firms V 19994 report transactions on basis V 19996 sold 17 of centers N 19996 sold 17 to partnership V 19997 estimate value of transaction N 19997 estimate value at million V 19999 report decline in earnings N 19999 report decline for period V 20004 lease stores from developer V 20005 comprise total of feet N 20006 include locations in California N 20009 controls centers with feet N 20010 runs stores in facilities V 20011 sold one at time V 20015 says spokesman for company N 20015 has employees in area V 20020 deliver mail in office V 20025 spurred companies to action V 20027 is butt of jokes N 20028 put cuts across board N 20030 track number of companies N 20033 was one of the N 20034 pick them from room V 20034 change subscriptions to addresses V 20036 get packets of something N 20036 send two to people V 20041 see stand as sign V 20041 bring it on themselves V 20042 close themselves from mail V 20046 deliver mail to room V 20048 had effect on rates N 20049 created situation in place V 20055 is extension of campaign N 20058 reads quotes about model N 20063 run ads in magazines V 20064 illustrates reactions from man N 20064 given Chivas for Christmas V 20065 features shot of party N 20068 is blow to cut N 20068 had existence since beginning V 20069 introduced plan as amendment V 20069 authorizing aid for Poland N 20070 block maneuver on grounds V 20073 offer proposal on legislation V 20074 have backing by Republicans V 20076 lose buckets of revenue N 20076 lose buckets over run V 20078 shield appreciation on investments N 20079 is one of Democrats N 20079 giving treatment to gains V 20080 hearing kind of opposition N 20080 hearing kind during meetings V 20082 making advocates of cut N 20082 making advocates of cut N 20089 become battle between Bush N 20092 got benefit from differential V 20093 express support for proposal N 20095 asked week for discussions V 20099 secure passage of plan N 20099 making deal with Congress V 20099 put vote until date V 20102 found Chinese among people V 20102 bringing number of Chinese N 20102 bringing number to 1,642 V 20105 pending deportation to China N 20107 faces prison for theft V 20108 led her into temptation V 20109 showed disappearance of coins N 20109 been stock-taking since 1868 V 20113 resold them to institute V 20116 threatened attacks on Italians N 20118 taking countries to court V 20118 stop flights over homes N 20119 told ministry of action V 20122 suspended imports of mushrooms N 20123 testing food from Europe N 20123 testing food since accident V 20124 announced bans on imports V 20125 tap fields off coast N 20125 speed sinking into lagoon N 20126 made announcement about field N 20127 contains feet of gas-one-tenth N 20129 opposed idea of AGIP N 20132 stole fresco from church V 20134 has speed of hour N 20135 report earnings from operations N 20135 report earnings for quarter V 20136 includes gain of 100,000 N 20138 posted loss of 876,706 N 20140 Regarding article on battle N 20141 providing services to people V 20150 has contracts for provision N 20150 receives money through contributions V 20160 sell divisions to group V 20161 includes executives of divisions N 20165 erupt month on Strip V 20174 's example of effort N 20174 transform itself into resort V 20175 seen nothing like it N 20180 buy site for resort V 20181 swell figure to billion V 20182 put expenditures above billion V 20183 owns % of shares N 20183 attract generation of visitors N 20184 being part of it N 20185 increase supply of rooms N 20185 increase supply by 11,795 V 20189 play possibility of shortage N 20196 set war among hotel-casinos V 20197 become carnival with rooms V 20201 pouring millions of dollars N 20201 pouring millions into facelifts V 20204 financing expansion with cash V 20208 left billion with casinos V 20212 watching Kristin on slide V 20221 is place for pedestrians N 20221 choked traffic at intersection N 20221 choked traffic to lane V 20222 drive properties into bankruptcy V 20226 bought chunks of property N 20227 scouting market with eye V 20233 be pressure on occupancy N 20233 be pressure over year V 20234 squeeze profit from flow V 20239 bought hotel-casino from Kerkorian V 20247 become envy of competitors N 20247 become envy for ability V 20247 vacuum cash from pockets V 20248 lures them with rates V 20253 are answer for us V 20254 building complex in style V 20254 decreased number of rooms N 20258 's room for properties N 20261 was rollers with clocks V 20263 lose sight of that N 20267 return it with Objections V 20272 explained argument to corps V 20273 have provision in mind V 20275 made case on page V 20279 deprive President of power N 20282 get them in trouble V 20283 log communications with Members V 20284 prepare reports on contacts N 20285 be usurpation of power N 20286 use provision as test V 20289 raise Doctrine from the V 20290 vetoed this as violation V 20291 squelch discussions on broadcasts N 20294 's fault of Congress N 20295 is perception of people N 20297 restore discipline to budget V 20300 close bases in Hawaii N 20300 close bases in exchange V 20301 pulled million in bases N 20301 allowed million for bases N 20304 lost sense of discipline N 20307 owns % of equity N 20307 reduce stake to % V 20307 giving rest of stake N 20307 giving rest to bondholders V 20309 forgive lot of debt N 20309 forgive lot in exchange V 20309 taking stake in TV N 20312 interpreted move as desire V 20312 wash hands of TV N 20314 made billion of gains N 20317 exchange classes of bonds N 20318 give stake to bondholders V 20319 invest money in TV V 20321 defer payment of million N 20322 defer principal on bonds N 20327 feeling aftereffects of overbuilding N 20329 including facility in Falls N 20333 heads office of Inc. N 20334 turning properties to lenders V 20338 takes three to years N 20341 recreate it at home V 20342 build homes in Tokyo V 20343 dubbed Hills of Tokyo N 20344 offer houses on lots V 20350 want feeling of indestructibility N 20350 mention protection from damage N 20354 starting line in business N 20355 using river in names V 20366 sent tremors through hearts V 20368 buying building in Francisco N 20369 anticipates change in market N 20371 added panel on effects N 20375 picture people in outfits N 20376 is something for the N 20378 reducing risk of disease N 20379 puts revenue at billion V 20384 get break at Espre N 20385 sparks concern over import N 20386 investigates source of stones N 20396 raises million from funds V 20409 is part of trip N 20410 draws ear of Commission N 20411 losing listeners to channels V 20411 approaches 1990s with voice V 20412 have listener in Washington V 20413 hear day on plight V 20414 increase options for advertisers V 20421 celebrates anniversary with yearbook V 20421 featuring photos of employees N 20423 is salvo in outcry N 20423 is salvo with Kemper V 20424 causes swings in prices N 20424 increased chances for crashes N 20425 attacked trading as evil V 20426 backed months after crash N 20429 capture profits from discrepancies N 20432 do business with them V 20433 acknowledged dispute with firms N 20435 scares buyers of stock N 20436 changes level of market N 20438 do business with them V 20442 has problem with investors N 20447 is admission of problems N 20451 has impact on market V 20452 make statement with trading V 20453 mean hill of beans N 20468 is subsidiary of Corp N 20478 are 12,915,000 of certificates N 20480 are million of certificates N 20486 yield % to dates V 20486 become bonds until maturity V 20497 yield % at price V 20499 buy shares at premium V 20517 planning season in years N 20518 become thanks to campaign N 20519 checks orders from chains N 20521 sidestepped collapse after loan V 20523 doing business with chains V 20524 showing fashions for 1990 N 20526 be cause for celebration N 20531 make goods to stores V 20532 sell worth of clothes N 20533 buying fabric for clothes V 20535 ship anything to stores V 20538 study order before shipping V 20539 recommending lines of credit N 20542 want letters of credit N 20546 paying bills in manner V 20548 paying bills for merchandise N 20549 paid days after month N 20551 buying fabric for goods V 20552 pay bills at time V 20562 owes amount of money N 20563 asking them for letters V 20572 be part of problem N 20573 give it to underperformers V 20577 maintain lines with stores N 20579 posted drop in profit N 20580 be end of boom N 20581 see effect of erosion N 20582 follows industry for Consultants V 20583 report losses through quarter N 20586 including gain from retirement N 20587 dropped % to billion V 20588 rose cents to 17.375 V 20589 be the to slowdown N 20592 estimated earnings of cents N 20593 experienced drop in profit N 20597 following end of negotiations N 20598 dropped % to million V 20599 is venture with Corp N 20604 owns % of steelmaker N 20604 posted income for second-quarter N 20606 includes gains of million N 20613 made announcement at dedication V 20613 including some from Europe N 20615 dominate market for chips N 20616 makes bulk of DRAMs N 20622 cost million in mid-1970s V 20625 bear fruit until mid-1990s V 20628 shining light through mask V 20628 produce image on chip N 20628 produces image on film N 20634 outfit planes with System V 20635 informing pilots of aircraft N 20637 is unit of Inc. N 20638 is unit of Corp. N 20644 appointed executive of Provigo N 20651 was stock on Exchange N 20656 posted income of million N 20659 sell businesses as group V 20663 put buy-out of unit N 20666 was president of unit N 20668 lent support to dollar V 20671 is focus of bank N 20673 termed rate of % N 20674 throwing economy into recession V 20675 viewed comments as indication V 20675 ease policy in future V 20680 forecast continuation of trend N 20682 be pool of interest N 20682 provide base for dollar N 20683 offer evidence on growth N 20686 present picture of economy N 20690 acquired Co. from Association V 20691 sold million of shares N 20691 sold million for 7.125 V 20692 use million in proceeds N 20692 finance acquisition of Republic N 20693 increased stake in Insurance N 20693 increased stake to % V 20695 spread risk of policy N 20698 had sales in quarter N 20702 strengthened hands of groups N 20703 have power over transaction N 20706 have groups on strike V 20717 like ownership for employees V 20718 want form of control N 20719 opposed ownership in principle V 20722 draw blueprint for form N 20727 make idea of recapitalization N 20732 force ouster of board N 20732 force ouster through solicitation V 20734 told advisers before meeting V 20735 need help of machinists N 20739 soared % to record V 20739 bucking trend toward declining N 20740 attributed increase to traffic V 20741 posted income of million N 20742 rose % to billion V 20743 issued shares of stock N 20743 issued shares to Swissair V 20743 repurchased shares for use V 20748 jumped % to million V 20749 include payment from entity N 20751 included gain of million N 20752 rose % to million V 20753 posted earnings of million N 20754 rose % to million V 20755 transmitting edition to machines V 20758 named publisher of magazines N 20759 took control of Inc. N 20761 announced loss for quarter N 20762 reported earnings of million N 20765 owes growth in years N 20765 owes growth to portfolio V 20768 include write-down of securities N 20768 include write-down to the V 20769 added million to reserves V 20769 increasing reserves to million V 20772 divest investments by 1994 V 20773 adjust value of holdings N 20773 reflect declines in prices N 20773 held bonds as investments V 20774 sell bonds within years V 20774 value bonds at the V 20776 reflected million in losses N 20778 remains one of thrifts N 20779 announced results after close V 20783 holding bonds in subsidiaries V 20786 has value of million N 20788 has gains in portfolio N 20790 setting stage for war V 20794 means trouble for all N 20795 following policy of discounting N 20796 matching moves by rivals N 20796 matching moves on basis V 20797 announced plan at time V 20797 rose % to million V 20799 mean earnings for half N 20800 plunging shares in trading V 20802 fell 1.50 to 19.125 V 20803 characterized half of '80s N 20803 following trend with being N 20804 permit slowing in trend N 20804 support strategy for brands N 20807 is guy in bar N 20810 downplayed importance of announcement N 20810 called comparison between tiff N 20811 calls game for anyone N 20813 trimmed projection to 2.95 V 20814 is intensity of competition N 20816 sell assets to Coors V 20817 ceding share to Miller V 20820 fell points to 35442.40 V 20824 rose points to 35587.85 V 20825 ignoring volatility in stocks N 20829 lost yen to yen V 20831 reduce holdings in account N 20832 lost yen to yen V 20832 fell 150 to 4,290 V 20833 fell 40 to 1,520 V 20834 fell 40 to 2,680 V 20835 lost 70 to 2640 V 20838 lost 40 to 8,550 V 20841 ended points at 1751.9 V 20845 showed signs of stability N 20846 were those with operations N 20847 settled pence at 753 V 20848 closed 2.5 at 212.5 V 20851 boosted 21 to 715 V 20851 mount bid for maker N 20852 raised stake to % V 20857 fueled fears of crash N 20858 raised specter of strikes N 20859 increase costs for industry N 20863 plunged marks to marks V 20863 dropped 10.5 to 700 V 20863 slumped 9 to 435.5 V 20864 gave some of gains N 20865 plummeted 12 to 645 V 20867 unnerved investors in markets N 20874 made bid for control N 20875 owns % of Coates N 20877 give details of offer N 20878 override veto of legislation N 20878 renewing support of abortions N 20878 are victims of incest N 20881 make issue on bills N 20882 funding departments of Labor N 20883 fold bill into resolution V 20886 provide billion in funds N 20887 adopted bill on call V 20889 given importance of California N 20890 reflect benefit of loans N 20891 raises ceiling for Administration N 20891 raises ceiling to billion V 20894 prevent use of aid N 20897 was the in years N 20903 using issue for benefit V 20903 finds candidates on defensive V 20904 supported restrictions in past V 20907 addressing side of House N 20908 support him over victims V 20909 providing funds for station N 20909 providing funds in 1990 V 20910 gives Department of Development N 20910 facilitate refinancing of loans N 20911 earmarking funds for projects V 20912 acquired stake in S.A. N 20915 received stake in group N 20916 boosted capital to pesetas V 20917 win license for one N 20917 seeking opportunities in publishing N 20919 retain share in Zeta N 20921 carrying seal of approval N 20922 buy stocks in index N 20922 buy stocks in trade V 20924 gave approval to basket V 20925 approved product on Exchange N 20926 trade portfolios by computer V 20930 step attacks on trading N 20931 drawing business from forms V 20932 are attempt by Board N 20932 head exodus of business N 20939 having access to it N 20941 lists targets as plans V 20943 buy ESPs as makers V 20954 reported loss for quarter N 20954 negotiating extension of debt N 20958 fell % to million V 20959 approved acquisition of operator N 20960 reduced August from value V 20963 providing financing of acquisition N 20965 reported rise in income N 20965 reported rise on increase V 20967 holds equivalent of stake N 20970 acquire shares with view V 20973 assuming exercise of option N 20976 filed suits against Boesky V 20977 regarding distribution of million N 20982 provide restitution to thousands N 20982 claiming losses as result N 20988 remove partnership as defendants N 20989 represents Boesky in matter V 20992 set fund for plaintiffs N 20998 owed million by partnership V 21001 wins battle against the N 21002 processing request for documents N 21004 exhausting appeals of conviction N 21005 turned himself to authorities V 21007 destroy movement of 1960s N 21008 turn information on investigations N 21009 was result of practices N 21010 served two-thirds of sentence N 21011 handling case for FBI V 21012 reduce delays of suits N 21015 separate handling of suits N 21015 separate handling from ones V 21016 receive supervision by judges N 21020 take advantage of custom N 21020 require each of courts N 21020 speed handling of suits N 21020 reduce costs in cases N 21021 resemble those of projects N 21025 strengthens links to corporations N 21026 has stores in northeast V 21026 selling computers to banks V 21027 expected sales of million N 21028 operates stores in areas V 21030 managing scope of business N 21032 named president for group N 21033 named president of group N 21035 reported loss of million N 21036 surged % in period V 21040 end session at 19.62 V 21044 showing decrease in stocks N 21045 closing Port for time V 21046 show increase in inventories N 21047 left plenty of time N 21048 increased production to barrels V 21052 assumes slowdown in economies N 21057 removed some of pressure N 21064 is grain in pipeline V 21065 purchased tons of grain N 21069 buying them at prices V 21069 buying contracts at prices V 21071 buying bales for delivery V 21072 had effect on market N 21073 be the since year N 21074 characterized action as contest V 21074 buying cotton toward bottom V 21084 brought steadiness to market V 21085 deliver cocoa against contracts V 21086 has tons from agreement N 21087 bring cocoa to market V 21088 deliver cocoa against existing V 21089 named president of company N 21093 acquire operator of hospitals N 21093 took step toward completion N 21094 submitted bid for Medical N 21095 pay 26.50 for shares V 21096 assume billion in debt N 21098 submitted bids for company N 21103 anticipates completion of acquisition N 21110 seeks damages under law N 21113 has investments in market N 21113 reported loss of million N 21114 seek protection from lawsuits N 21116 named director of concern N 21118 increases size of board N 21118 increases size to members V 21119 serve remainder of term N 21121 issue rights to shareholders N 21122 buy shares of either N 21122 buy shares for price V 21125 closed yesterday at 43.50 V 21126 sell operations by end V 21128 raise total of francs N 21129 include sale of interest N 21130 entered venture in 1988 V 21130 acquiring stake from Beghin-Say V 21131 sell stake in affiliate N 21131 sell stake to unit V 21132 sell interest in A.T.B. N 21132 sell interest to unit V 21133 acquire % of unit N 21138 sold stake in offering V 21139 is company for units N 21140 fell % to million V 21141 rose % to million V 21142 continue production of F-14 N 21143 provide compromise for both V 21144 putting touches on package V 21147 stalling action on number N 21148 authorize billion for spending N 21148 reflecting erosion of support N 21150 hold spending on program N 21150 hold spending at level V 21153 provides parachute for Grumman V 21156 boasts core of support N 21157 earmark total of billion N 21157 earmark total for work V 21158 putting touches on compromise V 21158 give all of billion N 21159 require verification of capabilities N 21159 approves version of fleet N 21160 reported drop in income N 21160 citing losses in business N 21162 reflecting acquisition of Emery N 21167 kept trading at pace V 21168 recovered all of losses N 21168 recovered all by close V 21168 fell 5.94 to 2653.28 V 21171 gave performance than indexes N 21172 dropped 1.20 to 342.50 V 21172 was equivalent of setback N 21173 fell 1.16 to 320.94 V 21173 slid 0.53 to 189.52 V 21174 topped decliners by 784 V 21176 kept trading in check V 21181 announced plans for split N 21181 raised dividend by % V 21181 jumped 1 to 117 V 21183 provided lift to average N 21184 rose 3 to 43 V 21184 advanced 3 to 66 V 21184 rose 1 to 58 V 21184 gained 5 to 72 V 21184 added 3 to 44 V 21185 dropped 7 to 44 V 21187 plunged 3 to 38 V 21188 lowered projections for growth N 21189 fell 1 to 59 V 21191 was victim of sell-off N 21192 fell 3 to 12 V 21194 rallied 3 to 86 V 21195 gained 3 to 61 V 21195 advanced 7 to 64 V 21195 added 1 to 3 V 21197 holding talks with lenders N 21198 dropped 1 to 31 V 21198 following postponement of offering N 21198 complete takeover of company N 21200 claim credit for buying N 21203 rose 3 to 1 V 21203 rose 1 to 66 V 21203 posting earnings for quarter N 21204 benefited Tuesday from program V 21204 gave some of gains N 21205 went 1 to 130 V 21205 fell 1 to 37 V 21205 dropped 1 to 25 V 21206 preserved advance in session N 21206 added 1 to 103 V 21207 gained 1 to 72 V 21208 shift funds from Kellogg V 21209 dropped 3 to 73 V 21210 advanced 3 to 10 V 21211 purchase million of stock N 21211 purchase million from trust V 21211 handles payments to victims N 21212 gained 1 to 30 V 21212 starting negotiations with parties N 21214 rose 1 to 43 V 21215 offered 43.50 for % V 21216 went 3 to 4 V 21217 boosted offer by million V 21218 boosted dividend by % V 21218 added 7 to 49 V 21220 fell 0.44 to 375.92 V 21222 lost 1 to 14 V 21223 receive bids for all N 21223 reviewing offers for properties N 21228 increasing spending by % V 21232 raising spending to billion V 21234 topped outlays by billion V 21242 avoid source of friction N 21242 limit exports to U.S N 21247 is goal of % N 21255 increased output by % V 21258 replacing facilities with lines V 21262 outlast expansion in 1960s N 21263 spend money on goods V 21267 had Saturday in years V 21269 cut costs during slump V 21269 capturing share of market N 21272 put share above profitability V 21272 let addition to capacity N 21275 expanding share to % V 21277 increase productivity with facilities V 21280 expand share of market N 21280 expand share to % V 21280 spending million on plant V 21281 increasing capacity by cars V 21281 spending million on expansion V 21282 double sales to cars V 21283 are replacements for imports N 21284 gaining share with beer V 21284 pouring billion into facilities V 21287 spending million on plants V 21291 doubling production in plant V 21300 be those with products N 21301 reflecting addition to reserves N 21302 meet standards from Act N 21303 had profit of million N 21304 rose cents to 4.25 V 21305 feature reduction in positions N 21306 winding units within months V 21307 originating leases at subsidiary V 21309 reported decline in income N 21310 fell % to million V 21311 rose % to million V 21313 was result of competition N 21315 declared dividend of cents N 21320 granting access to drug N 21325 had access to AZT N 21325 approved usage for adults N 21326 relieve dementia in children N 21326 lacks approval for use N 21327 cover cost of 6,400 N 21328 stricken children under 13 N 21328 carry infection without symptoms V 21332 contracted virus through transfusion V 21332 transmitted it to two V 21334 bears infection without symptoms V 21338 getting AZT to children V 21339 approve treatments for uses V 21340 charged maker with inertia V 21342 reverse ravages of dementia N 21348 releasing AZT for children V 21351 is co-founder of Foundation N 21353 follow course as AZT N 21354 is aspect of syndrome N 21355 giving piece of childhood N 21357 declared dividend of warrant N 21360 purchase share of stock N 21360 purchase share at 5.50 V 21362 issue 243,677 of warrants N 21362 issue 243,677 to holders V 21364 launch vehicle for trading N 21365 buy stocks in trade V 21368 executing trades through firms V 21369 winning support from Democrats N 21372 had profit in steel V 21372 be end of boom N 21373 posted loss of million N 21374 setting stage for war V 21375 received bid from suitor V 21375 valued proposal at billion V 21381 receive offer for Bloomingdale N 21381 receive offer from Store V 21383 hold key to bid N 21387 rejected proposal by Bush N 21396 announced devaluation of ruble N 21396 curb market for currency N 21398 called strikes over series N 21400 override veto of bill N 21401 overturn veto of legislation N 21401 renewing support of abortions N 21401 are victims of incest N 21402 considered illustration of limits N 21403 was part of measure N 21403 funding departments of Health N 21404 get consent for abortion N 21404 banning abortions after week V 21405 granting access to drug N 21406 had access to drug N 21407 relieve dementia in children N 21411 continue production of jet N 21413 speeding removal of chemicals N 21415 hold talks with groups N 21419 review changes to proposal N 21422 concluding meeting in Portugal N 21423 indicated challenge to order N 21423 subpoena papers for use V 21424 raised question about office N 21425 continue embargo against Nicaragua N 21425 poses threat to security N 21427 engulfed slum in Paulo N 21428 take action against developers N 21429 ruled dialogue between groups N 21430 ending visit to Austria N 21430 including travel to West N 21433 assumed responsibilities of president N 21434 been president since 1985 V 21434 succeeded father in job V 21436 reduce influence of Coors N 21444 had million in sales N 21445 fell % to 11,586 V 21446 dropped % to 37,820 V 21448 defines failure as company V 21450 underscoring lack of stress N 21452 report increase in bankruptcies N 21454 report failures for months N 21454 grew % to 2,046 V 21455 fueled bankruptcies in sector N 21458 received expressions of interest N 21464 valued Bloomingdale at billion V 21465 aligned himself with Inc. V 21468 make bid before middle V 21471 acquired year by Campeau V 21472 does billion in sales N 21473 is condition of efforts N 21473 arrange million in financing N 21473 arrange million for Campeau V 21474 supervising refinancing of Campeau N 21479 disclose information about condition N 21481 extend offer for Corp. N 21482 keep offer for concern N 21482 keep offer for days V 21484 obtained commitments from banks V 21488 buy shares of LIN N 21488 buy shares for 125 V 21488 owning % of LIN N 21489 merge businesses with Corp V 21490 rose cents to 109.25 V 21493 sent proposal to Airlines V 21494 were part of offer N 21495 offer share of stock N 21500 citing improvement in market N 21500 jumped % from period V 21501 reported income of million N 21509 climbed cents to 20.375 V 21510 climbed % to million V 21511 reflect increase in shares N 21513 get shoulder from buyers V 21516 controls % of TW N 21516 sell billion of bonds N 21516 finance acquisition of shares N 21518 completed show for purpose N 21524 buy anything on expectation V 21524 manages fund of Services N 21534 putting face on it V 21540 borrow term from Coniston V 21542 cover charges on securities N 21544 ignore charge of depreciation N 21545 envisions expenses of million N 21553 ignore million in interest N 21566 Includes results of Inc. N 21567 Includes write-down of costs N 21571 discomfit Order of Builders N 21578 separating herself from document V 21579 inflict punishment on population V 21580 is consensus on sanctions N 21583 's one against 48 N 21597 gained 1.19 to 462.89 V 21598 heads trading at PaineWebber N 21599 played catch-up in areas V 21600 is average for year N 21603 rose 2.09 to 454.86 V 21604 easing 0.12 to 452.23 V 21612 's lot of uncertainty N 21612 cause lot of swings N 21613 rose 7 to 43 V 21613 added 1 to 16 V 21614 dropped 1 to 46 V 21617 advanced 1 to 56 V 21617 jumped 2 to 29 V 21617 gained 1 to 16 V 21617 rose 5 to 14 V 21618 jumped 3 to 11 V 21619 raised stake in maker N 21619 raised stake to % V 21621 make bid for all N 21622 rose 1 to 109 V 21623 added 1 to 40 V 21625 gained 5 to 13 V 21627 rose 13 to 2 V 21630 plunged 1 to 8 V 21632 dropped 5 to 15 V 21634 fell 3 to 15 V 21637 had change in earnings N 21639 compares profit with estimate V 21642 wanted million for rights V 21644 was player at table N 21656 run losses of dollars N 21657 outbid CBS for contracts V 21665 make profit on it V 21666 emphasizes benefits of press N 21670 find themselves with lot V 21671 bought stake in company N 21674 bid total of billion N 21677 facing consequences of aggressiveness N 21682 shape years of sports N 21683 take it from CBS V 21687 bid million for Games V 21692 began career in law V 21692 put years at Inc. V 21696 pay million for Games V 21696 shell million for years V 21703 scribbled figure on slip V 21703 sealed it in envelope V 21703 gave it to negotiators V 21705 bid million for rights V 21707 notch place for CBS N 21708 's fix for image N 21709 sees sports as way V 21709 grab millions of viewers N 21709 tell them about shows V 21710 start season against championships V 21712 triggers losses at CBS N 21712 see games on air V 21717 set rates for stations N 21719 await season in 1990 N 21722 use sports as platform V 21722 carries guarantee of success N 21724 is guarantee of anything N 21730 aged 18 to 49 N 21736 add % to % N 21736 add % to profits V 21738 dropped CBS for NBC V 21740 avoid losses on coverage N 21747 pay average of million N 21747 expect losses on baseball N 21750 get lock on games N 21753 be sponsors in baseball N 21761 aired hours of events N 21761 raise ratings from 1984 V 21762 add hours to load V 21764 pay CBS to hours V 21768 claimed place as ratings-getter N 21769 is situation of acting N 21769 making judgments about worth N 21774 charge % for ads V 21776 predict jumps of % N 21777 ordering episodes of series N 21777 fill weeks of time N 21779 cost million to million N 21780 cushion losses with million V 21783 make money on all V 21788 Place order through catalog V 21788 be one on line N 21790 peruse ads for recorders N 21802 's demand for systems N 21805 record orders between traders N 21806 taped some of desks N 21808 monitors conversations between brokers N 21821 requiring consent to tapings N 21821 requiring consent in cases V 21822 explaining laws on eavesdropping N 21830 achieving standards of service N 21831 evaluate performance during months N 21832 pull someone off phones V 21833 recognize right of employers N 21833 monitor employees for purposes V 21834 viewed monitoring as issue V 21839 is party to conversation N 21842 put labels in catalogs V 21842 informing customers of law N 21846 requiring tone on recorders V 21849 be toy for children N 21855 announced line of computers N 21856 extending line with boost V 21857 exploit weaknesses in networking N 21858 has share of market N 21862 gets revenue from mainframes V 21863 updating accounts at banks N 21871 cut estimate for year N 21872 raise estimate for 1991 N 21875 predicted demand for line N 21876 need power of mainframe N 21877 's market for machine N 21878 computerizing aspects of businesses N 21880 targets end of market N 21882 staked presence in market N 21883 shown signs of life N 21884 risen % to % N 21886 have backlog for quarter N 21888 spark sales by end V 21891 have problems in quarter V 21891 cut value of earnings N 21892 fall % to 3.57 V 21893 occupies space as systems N 21893 store data on cartridge V 21895 completed acquisition of H. N 21898 awarded division for services V 21900 attach tax to bill V 21901 stripping measure from bill V 21901 meet targets under act N 21902 be part of bill N 21906 stepped lobbying for cut N 21907 hold series of meetings N 21909 give leaders in Congress N 21909 give leaders in Congress N 21912 handled sales of products N 21913 permitted formation of arm N 21914 unveiled systems for communications N 21919 directs flow through systems N 21921 have capacity than models N 21922 are heart of line N 21925 predicted growth in demand N 21926 supply million of equipment N 21926 supply million over period V 21928 began month with crunch V 21928 deliver financing for buy-out N 21942 took floor for offices V 21947 accused one of witnesses N 21950 was criminal behind manipulation N 21950 knew nothing about it N 21951 obstructing investigation by Commission N 21952 were part of conspiracy N 21952 maintain prices of stocks N 21952 maintain prices at prices V 21961 framing Laff for crime V 21965 MONITORED payments to claimants N 21966 monitor payments to women N 21967 teaches evidence at University V 21967 was general in Department N 21967 was general until August V 21967 submitted resignation to Judge V 21968 overseeing reorganization of Co. N 21972 nominate successor to Saltzburg N 21974 brought Menell as partner V 21976 was counsel for committee N 21982 is counsel for Corp. N 21992 owns % of stock N 21993 buy stock for cash V 21995 issue shares to Fresenius V 21996 explore possibility of combination N 21998 supply products through Medical V 21999 exploring arrangements with USA N 22000 named director of company N 22001 acquire Inc. for million V 22003 is distributer of supplies N 22006 rose % to million V 22008 sold million of drug N 22010 fell cents in trading V 22011 slid % to million V 22012 climbed % to million V 22013 increasing % to % N 22017 's revenue from partnerships N 22019 faces competition in market N 22022 giving boost to earnings N 22025 posted loss of million N 22027 included gains on sale N 22037 fell % to million V 22041 purchased % of unit N 22042 paid million in cash N 22042 paid million for share V 22044 outlined terms of plan N 22045 receive warrants in company N 22046 reached agreement with committees N 22046 submit plan to court V 22047 has debt of million N 22054 have claims of million N 22059 complete reorganization by 1990 V 22060 sustained damage from earthquake N 22067 were all at % V 22068 auction million in maturity N 22070 is part of contract N 22070 develop five of satellites N 22075 discussing cooperation with Saab N 22077 start negotiations with automakers N 22078 reported decline in income N 22079 forecast blow to earnings N 22080 expects earnings in all N 22080 expects earnings for year V 22082 including million during quarter V 22085 has interests in parts V 22087 had loss from Hugo N 22088 report loss of million N 22089 increased reserves for accounts N 22091 settle suit with general N 22092 recorded charge of million N 22094 had earnings for months N 22096 discovered miles off coast N 22097 is operator of project N 22099 design plant in Kildare V 22104 authorized purchase of shares N 22108 completed sale of Co. N 22109 received million for pipeline V 22110 owned % of pipeline N 22112 rose % in September V 22115 estimate growth in September N 22115 put growth at 178.8 V 22116 was 178.5 in August V 22117 awarded contract by Corps V 22118 includes construction of walls N 22119 crack domination of market N 22119 chosen sites for operations N 22120 begin visits during weeks V 22123 mounted campaigns during summer V 22123 founded June by concerns V 22125 begin construction by end V 22136 filed lawsuit against Inc. V 22136 claiming infringement in element N 22137 display portions of fields N 22137 display portions on screen V 22137 see contents of field N 22138 design applications for computers N 22139 's one of programs N 22139 bode difficulties for Apple N 22140 is technology of HyperCard N 22142 infringe claims of patents N 22143 filed action in court V 22145 points gun in direction V 22145 forcing culture on Americans V 22147 manage Americans as Americans V 22150 place speakers in charge V 22157 doing business in Japan N 22163 rebut opinions of employees N 22166 motivate employees from another N 22167 accept imposition of way N 22167 is chauvinism of order N 22171 is explanation of policies N 22171 altering reasons for criticism N 22171 attack cause of problem N 22173 expects gain of % N 22175 climbed % to francs V 22177 expressed position on abortion N 22184 fund abortions for women V 22186 support funding for abortions N 22188 get president in trouble V 22190 regard him as ally V 22193 calls position on issue N 22193 done thing about prevention N 22196 convince activists of support V 22197 changed landscape of issue N 22203 have sympathy with arguments N 22206 miscalculated politics of issue N 22207 was one of changes N 22208 raise subject of abortion N 22209 amplify reasons behind stance N 22211 well-stated views on sides V 22212 expanding services for the N 22213 supporting funding for abortions N 22213 save life of mother N 22214 contrast himself with rival V 22217 have exceptions for incest N 22218 supporting funding for abortion N 22221 affirming support of cause N 22222 urged passage of amendment N 22224 dispatched Chief of Staff N 22225 restoring District of right N 22225 restoring funding to Fund V 22226 drum support for issues N 22227 urging efforts toward protection N 22228 avoided involvement in session N 22231 finds itself in cul V 22236 guaranteed rights as citizens N 22239 extends guarantees to sector V 22241 are guarantees of rights N 22243 consolidating control of operations N 22244 coordinate activities of subsidiaries N 22246 named president of Asia-Pacific N 22247 rose % to million V 22248 had net of million N 22250 had responses to results N 22256 jumped % to million V 22256 reflecting improvements in costs N 22257 gained share in U.S. N 22259 reduced levels at some N 22265 rose % to billion V 22268 reported earnings of million N 22270 handed reins to successor V 22275 raised stake to % V 22276 say nothing of one N 22277 representing % of sales N 22277 facing demand as competition N 22279 's baptism of fire N 22283 shattered agreement with Roderick N 22285 redeem series of notes N 22285 raised cost of bid N 22285 raised cost by 3 V 22286 strike friendship with interloper N 22295 force split of USX N 22296 Given weakness of market N 22297 selling stake in Inc. N 22298 eased some of pressure N 22299 greeting suppliers in York V 22299 inviting them to buffet V 22304 joining department of subsidiary N 22308 chart transition from Steel N 22310 distancing himself from boss V 22310 has office on floor N 22313 announced sale of reserves N 22314 was buddy of Hutchison N 22317 reported loss in years N 22319 disclosed rise in stake N 22320 leave USX with Marathon V 22321 find buyer at price V 22324 closed yesterday at 33.625 V 22324 giving value of billion N 22325 advocates sale of operations N 22326 saw steel as backbone V 22326 view it as business V 22327 turned steel into maker V 22334 lessen vulnerability to cycle N 22334 smooth flow of earnings N 22335 figure value of parts N 22336 sell steel at price V 22338 dish piece by piece N 22338 dish it in ventures V 22340 leave company with Marathon N 22350 learned presence under fire N 22356 's part of system N 22363 break talks with group N 22365 provided Department with list V 22366 satisfying precondition for dialogue N 22368 linking Fatah to acts V 22370 take view than theirs N 22371 present report to members V 22372 presented list to Brown V 22373 provided correspondent in Jerusalem N 22373 provided correspondent with documents V 22373 conducting terrorism from territories V 22374 seen copies of papers N 22375 have evidence of terrorism N 22376 press struggle against state V 22377 backing contention with accounts V 22379 bring talks between Israel N 22380 received letter from Minister N 22380 restating objection to negotiating N 22382 defines it as violence V 22384 including use of bombs N 22385 be offshoots of intifadah N 22389 maintain dialogue with PLO N 22390 accuse Israel of leaking V 22391 tracking session on Street N 22393 put Street in spotlight V 22396 ended day below levels V 22397 posted gains in trading N 22398 reflects uneasiness about dollar N 22399 proved excuse for market N 22399 drive currency in direction V 22403 sees break in trend N 22404 be beginning of phase N 22405 peg weakness to slowdown V 22408 Following dive in stocks N 22409 attribute surge to economy V 22410 is reflection of shift N 22412 push yen against mark V 22413 expect Bank of Japan N 22413 support currency on front V 22414 posted deficit in September V 22415 knocked unit to marks V 22415 recoup some of losses N 22420 had drop in profitability N 22421 is news for parent N 22422 managed income of million N 22423 break earnings of subsidiaries N 22424 had profit of million N 22424 had profit for quarter V 22426 downgraded rating of subsidiary N 22428 exposed company to degree V 22431 cited concerns over exposure N 22432 discovered evidence of errors N 22433 overstated profits by million V 22435 booking revenue in effort V 22436 attributed controversy to errors N 22436 accused Shearson of conducting N 22439 exported average of barrels N 22439 exported average at average V 22440 gained % at average N 22446 underscore difficulties in implementing N 22449 abandon approach in face V 22450 blames showing on environment V 22452 have effect on revenue N 22454 faces challenge on eve V 22457 drum business without appearing V 22458 highlighting deals in stores V 22458 defer charges on items N 22460 offering goods for % V 22461 lowering prices throughout stores V 22462 has sale at price V 22464 blanketed airwaves with ads V 22465 cited prices as reason V 22466 mentioned brands in September V 22469 see improvement in areas N 22470 rose % to billion V 22472 fell % to million V 22472 inflicted loss in history N 22473 reduced net by million V 22474 absorb hit in quarter V 22475 have impact on Allstate N 22476 reflecting improvements in businesses N 22481 left companies with inventories V 22487 affecting value of homes N 22490 try solutions in experiments N 22493 Develop agreements with options N 22496 aggravate problem of stock N 22496 are T at balance N 22496 say 80,000 on house N 22503 grew % on revenue N 22503 earning reviews from analysts N 22507 follows company for Inc V 22508 expected growth of % N 22512 cited restructuring for growth V 22513 experience sledding in services V 22513 surrounding treatment of gains N 22514 reported million before tax N 22514 reported million from operations V 22515 increased reserves by million V 22515 set million for claims V 22519 dipped % to billion V 22519 leaping % in August V 22520 expected decline after rise V 22521 showing layoffs in manufacturing N 22528 factor all of surge N 22533 was surge in demand N 22536 have drop-off in orders N 22537 posting drop after decline V 22538 be news for economy N 22539 showing declines after surge V 22541 are marks about that N 22546 finance buy-back with cash V 22549 affect earnings in term V 22550 said Lidgerwood of Corp N 22551 average number of shares N 22553 increase earnings after 1990 V 22554 establishes floor for price N 22555 is comfort to those N 22557 acquire shares in market V 22559 purchased million of them N 22561 following quarters of performance N 22562 acquire subscribers from Partnership V 22565 has subscribers around nation N 22565 reported revenue of million N 22567 named director of supplier N 22567 increasing board to members V 22568 delayed offering of stock N 22570 set date for offering N 22570 disclose timetable for offering N 22572 addresses one of shortcomings N 22576 making attempt at improvements N 22577 develop discipline in children V 22578 elected directors of firm N 22581 are guide to levels N 22612 increased number of directors N 22614 reach class among nations N 22615 converted itself into mode V 22616 joined 10,000 per club N 22619 given lack of resources N 22619 create value through exports V 22619 buy food with surplus V 22623 given party for years V 22631 is ministry of provisions N 22632 protecting health of people N 22633 is cartel for teachers N 22634 spreads concrete throughout country V 22636 sprinkle money around world V 22647 be waste of time N 22649 is tax on activities N 22650 makes sense in Japan N 22653 favored tax like tax N 22661 caused scandals in Japan V 22671 reform government from role V 22673 put Japan among countries V 22674 representing preference for government N 22675 take place before June V 22676 giving power to Socialists V 22676 cleansing it of sins N 22677 cause wave of shocks N 22679 is director of Co. N 22680 was day at beach N 22682 collecting shells at Malibu V 22683 combing beach with brushes V 22689 carried stones from interior V 22692 picked diamond from sand V 22693 lost Namibia to Africa V 22695 remained one of places N 22697 is oasis of residents N 22698 roam streets at night V 22699 create mist like rag N 22702 boasts attractions besides diamonds N 22704 is course with trap V 22707 freeing country from control V 22707 extend life for years V 22709 probe sand like anteaters V 22709 shuttling sand to plants V 22711 receives maintainence against waves N 22714 tossed them like driftwood V 22723 wrapped diamonds in knot V 22724 poked hole in heel N 22725 stashed stones in bottom V 22726 made it past X-rays V 22727 raise taxes for recovery V 22729 adding penny to tax V 22730 been hanging in family N 22733 prompted proposals for increases N 22739 burdens you with charges V 22742 give answers to inquiries V 22743 cover charges for checks N 22744 gets replacement for check N 22744 reimburse taxpayer for charge V 22748 spent 800,000 on home V 22751 deduct interest on loan V 22752 adding land to residence V 22753 let seller in case N 22753 treat this as sale V 22755 get waivers like those N 22756 offers relief for concerns N 22759 change 44,400 in bills N 22759 change 44,400 into bills V 22761 BE MIDDLEMAN for gifts N 22764 set fund for students N 22765 omit fees from income V 22769 assign income to another V 22769 enjoyed fruits of labor N 22770 take deduction for them N 22773 have plenty of complaints N 22774 put damper on euphoria N 22776 providing information on circulation N 22780 lack breakdowns of audiences N 22781 are value in lives N 22782 lambasted industry for something V 22783 target interests of readers N 22787 criticized practice of stacking N 22787 stacking ads at front V 22789 spend fortune on information V 22790 take positions in back N 22799 matching quarter in quarter V 22801 upgraded firm to list V 22801 see signs of improvement N 22803 had loss of million N 22804 posted net on revenue N 22807 is group with members N 22810 bill themselves as experts V 22812 eyeing portfolios of corporations N 22813 pursue ventures in Europe N 22815 are alternatives for developers N 22818 forming ventures with funds N 22821 using alliances with institutions N 22822 lend you in market V 22822 sell pieces off it N 22823 finding diamonds in the N 22825 put lot of time N 22827 take manager to lunch V 22828 construct hotels within mile V 22829 hailed project as indication V 22830 hosted ceremony for partners N 22831 called step in evolution N 22840 have share in hotels N 22842 has interest in hotel N 22842 be hotels in Union N 22846 repatriate profits from venture N 22847 charge 140 for each V 22847 accept payment in currencies N 22848 is outgrowth of arrangements N 22849 justifies investment in hotels N 22851 takes responsibility for group N 22852 been president of group N 22853 named president with responsibility N 22859 tumble Delicious from top V 22862 proffered one to Eve V 22864 has sugar than apple N 22865 spreading word about them N 22867 packed pecks of apples N 22867 packed pecks over years V 22869 shaking establishment to roots V 22870 plays role of Appleseed N 22875 been apple of eye N 22881 was blow to growers N 22885 lose 50,000 to 60,000 N 22885 lose 50,000 on it V 22890 keep worm from apple V 22890 protect themselves against vagaries V 22891 ripped lot of Delicious N 22891 grafted trees with shoots V 22892 got kinds of apples N 22893 picking one off tree N 22898 expanding space for apples V 22900 is product of engineering N 22900 fostered it at orchard V 22901 bred dozens of strains N 22904 are delicacy than commodity N 22905 eat apples per capita N 22906 is potatoes in U.S. V 22909 sell Fujis to buyers V 22910 is importer of Fujis N 22912 exceed supply for Fujis N 22912 exceed supply for 10 V 22914 striking blow against perversion V 22915 was connection between consumer N 22918 satisfy demands of storage N 22922 growing it in areas V 22925 elongate apples for appeal V 22927 sees shift in values N 22930 increased number of shares N 22930 increased number to million V 22932 filed suit against firms V 22932 charging them with responsibility V 22936 filed suit against Virginia N 22936 filed suit in court V 22936 absolving them of liability N 22939 invested cash for agencies V 22940 encouraged members of office N 22952 has billion in obligations N 22952 considered one of programs N 22954 backs billion in guarantees N 22957 improve operation of markets N 22958 is conflict between providing N 22958 maintaining integrity of program N 22960 increasing rates over time V 22962 improve operation of markets N 22963 inhibited supply of credit N 22968 provides loans to student V 22970 make money by putting V 22970 putting loan in bank V 22971 allow loans for student N 22971 allow loans at rates V 22975 Given structure of programs N 22977 provide assistance to borrowers V 22978 go way toward reducing N 22979 had success in reducing N 22979 reducing rates in Program N 22981 has record of collecting N 22983 deny credit to defaulters V 22984 be devices for programs N 22985 Record costs of programs N 22985 Record costs in budget V 22987 create liabilities for government N 22988 converting loan to guarantee V 22988 ensure flow of resources N 22990 is value of costs N 22991 selling loans to owners V 22993 reflected costs of lending N 22993 convert programs to guarantees V 22995 is hallmark of credit N 22996 paying loans by issuing V 22996 converting guarantees into loans V 22998 keep loans on books V 22999 carried dollars of loans N 22999 carried dollars at value V 23002 permit identification of emerging N 23002 provide information for decisions N 23004 provide role for government N 23005 be proposition for taxpayers V 23006 is professor of economics N 23008 been treasurer of Corp N 23009 casting veto as test V 23010 kill items in bill N 23010 kill items without having V 23014 made week by President V 23015 is initiative on agenda N 23015 faces issues at moment V 23016 named president of maker N 23018 break impasse in round N 23019 reduce host of subsidies N 23020 allow flexibility in determining N 23021 ease transition to trade N 23021 ease transition by allowing V 23021 convert barriers into tariffs V 23022 gain support from partners V 23023 allay objections to plan N 23023 eliminating barriers by year V 23024 submitting proposal in Geneva V 23024 spur members of Agreement N 23024 reach agreement on rules N 23025 urges play in trade N 23026 provide room for maneuver N 23027 use combination of quotas N 23027 cushion farmers from competition V 23028 raise tariffs on products N 23028 experience volume of imports N 23029 proposing elimination of subsidies N 23031 prevent countries from using V 23034 encourage competition among exporting N 23034 including incentives for exporters N 23035 posted rise in income N 23038 increased % to billion V 23042 was rise for products N 23043 win share in markets N 23044 established itself as brand V 23045 expand line in Japan V 23046 shift sales for products N 23046 shift sales to quarter V 23048 slowing growth in U.S. N 23049 boosting sales for oils N 23051 post net of 4.20 N 23051 post net on basis V 23054 be stewardship of Artzt N 23054 becomes chairman in January V 23055 have hopes for tenure N 23056 earn 6 in years V 23057 keep promise of Amendment N 23058 increase number of blacks N 23059 create number of districts N 23060 create districts in municipalities V 23061 win share of offices N 23061 achieve preclearance by Department N 23061 survive scrutiny of courts N 23067 is fix for problem N 23068 promoting commonality of interests N 23071 reapportion districts after census V 23072 been policy in City N 23072 been policy since 1970 V 23072 expand reach beyond states V 23073 split neighborhood of Jews N 23073 split neighborhood into districts V 23074 revise system of government N 23074 expanding Council to 51 V 23076 maximize number of districts N 23077 make % of population N 23077 hold % of seats N 23078 accord opportunity for representation N 23080 win seats on council N 23082 illustrates consequences of carving N 23082 carving districts for minorities N 23084 brought suit in 1987 V 23084 abandon voting for Council N 23092 refuted argument in one V 23094 serve interests of all N 23097 discarded belief in ability N 23097 govern ourselves as people V 23098 is scholar at Center N 23099 distributed guidelines for Attorneys N 23101 seek TRO upon filing V 23102 have impact on parties V 23102 do business with defendants V 23104 control use of TROs N 23106 submit TRO for review V 23107 preserve assets for forfeiture V 23108 seeking approval of TRO N 23109 consider severity of offense N 23110 disrupt activities of defendant N 23112 paid price for incentives N 23117 had results in days V 23121 prevent inventories from ballooning V 23122 have supply of cars N 23122 have supply at end V 23125 depleted market of scavengers V 23128 hit rocks in mid-October V 23130 saw sales of cars N 23133 opened plant in Georgetown V 23141 include trades by 13 N 23145 expects fall in price N 23146 represents number of shares N 23146 be barometer for stocks N 23153 headed list since May V 23158 buying stock in company N 23158 shorting stock of the N 23161 showed drop in interest N 23162 compiles data in categories N 23162 are part of system N 23164 represents days of volume N 23165 represent days of volume N 23166 was change of shares N 23167 was weight of army N 23170 reaching settlement with Palestinians N 23174 share power with all V 23175 choosing one of options N 23176 become force in system N 23187 added 1 to 11 V 23190 dealt blow to market V 23193 do trading for account V 23193 execute orders for clients N 23196 keep supplies of stocks N 23196 keep supplies on hand V 23197 buy shares from sellers V 23201 exacerbating fall in prices N 23203 's sense in sticking N 23204 added 1 to 4 N 23204 added 1 on shares V 23205 make offer for the N 23205 acquires majority of shares N 23205 acquires majority in offering V 23208 posted earnings of cents N 23209 reduced income by cents V 23210 provides coverage to properties V 23214 reporting net of cents N 23215 included million in costs N 23219 make modifications to hardware N 23223 be violation of treaty N 23225 taken measures of openness N 23225 taken measures by giving V 23225 inspect site as vans N 23225 are violations of treaty N 23226 constituted violation of ABM. N 23227 receive confirmation of violation N 23227 receive confirmation from Soviets V 23234 open itself to examination V 23237 caused number of deaths N 23240 believe claims of Congressmen N 23242 sold something on notion V 23242 were result of showers N 23244 take word for it N 23251 buy million of stock N 23251 buy million from Trust V 23251 reduce number of shares N 23252 made offer within weeks V 23253 purchase stock at price V 23257 compensate victims of diseases N 23257 owns million of shares N 23258 owns half of shares N 23260 receive billion over life V 23262 settled 15,000 of claims N 23264 requested changes in covenants N 23267 has right of refusal N 23268 raised bid for Co. N 23268 raised bid to billion V 23269 be round of bids N 23272 expect resolution until 1990 V 23273 pay billion in cash N 23273 pay billion to creditors V 23273 assume million in bonds N 23276 Assuming operation of plant N 23278 promised State of Hampshire N 23279 conditioned limits on operations N 23283 leave shareholders with stake V 23284 buying company for billion V 23284 require increases of % N 23286 is Co. with bid N 23288 fill barns across land N 23290 be bet than money N 23291 holds future in hands V 23292 produce profit in system V 23293 be buffer between public N 23294 knocked bosses off balance V 23300 broke ranks with Communists N 23301 took office in September V 23308 wrestles hog into trunk V 23311 makes money on hogs V 23319 runs handful through fingers V 23319 counts pile of zlotys N 23321 buy feed from state V 23326 have plenty at home V 23332 supply it with tractors V 23337 are lot of them N 23338 were source of shame N 23339 are objects of envy N 23344 cover % of land N 23346 is pillar of nation N 23350 owns acres in scraps N 23351 grows potatoes for hens N 23352 eyeing ground with look V 23355 supply area with water V 23361 brought electricity to village V 23361 piped water from reservoir V 23370 had lot of money N 23375 produce % of pork N 23376 sets chairs in sun V 23378 is lot of waste N 23380 shoving peasants onto farms N 23384 hold end of bargain N 23386 hands them in exchange V 23395 is % below average N 23396 milk cows by hand V 23406 makes machinery for plant N 23407 wants it from West V 23408 lays it on line V 23429 taking power in deal N 23431 named man as minister V 23432 forming parties for farmers N 23433 make case against Solidarity N 23433 drive millions from land V 23438 farms acres in Grabowiec N 23439 mounting steps of building N 23439 mounting steps on visit V 23449 turn everything in week V 23463 am man for Solidarity N 23469 provide billion in funds N 23470 reflected support for assistance N 23470 aggravate pressures under law V 23471 waive Gramm-Rudman for purposes V 23471 widen deficit by billion V 23472 forced confrontation between leadership N 23474 put him in position V 23476 hide costs from people V 23478 bringing total for disasters N 23478 bringing total to billion V 23482 accompanied package of assistance N 23485 puts state at odds V 23486 offer credit in cases V 23488 speed approval before deadline V 23489 lifting ceiling on loans N 23489 lifting ceiling to billion V 23490 representing reduction from year N 23490 making cuts from requests N 23491 continue work in Oman N 23497 listing million in projects N 23498 illustrated mix of power N 23498 illustrated mix than Inouye V 23500 gave ground to Inouye V 23500 assist Tribe in state N 23501 is one of the N 23502 chairs committee on Affairs N 23502 move 400,000 from Force V 23505 slash size of force N 23509 be round of cuts N 23509 reduced force by % V 23510 signal beginning of reductions N 23512 take place over period V 23512 involve termination of employees N 23513 be announcement of program N 23514 reporting earnings as result N 23516 had loss in quarter V 23522 gain control over law N 23524 holds incentives for abuse N 23526 violated notions of fairness N 23527 avoid replay of tactics N 23529 limit forfeitures of assets N 23531 cited criticism in press N 23536 wanted million in forfeiture N 23536 wanted million for fraud V 23542 salvage RICO for criminals V 23544 made point at conference V 23546 limit cases by plaintiffs N 23546 limit cases for damages V 23549 guarantee end to injustices N 23551 seen Mondays at time N 23551 is candidate for cancellation N 23557 suffers drop-off from Brown N 23561 included family in cast V 23563 making adjustments on show N 23564 keep balance between office N 23567 prompted party among investors N 23568 sought safety amid growing V 23569 forced dollar against currencies V 23570 got boost from sell-off N 23572 shifting assets from stocks V 23574 recovered some of losses N 23574 recovered some in day V 23581 build case for rates N 23584 recovered some of losses N 23591 visiting venues in future V 23592 sentenced Bakker to years V 23592 tucked Gabor for days V 23593 recanted fear of lesbians N 23598 has backlog of billion N 23599 rekindle talks between company N 23599 rejected offer of % N 23600 sprinkled her with flats V 23603 sing music with all V 23608 has TB after all N 23610 has set of drapes N 23614 has need unlike Violetta V 23615 smother herself in drape V 23616 is addition to stock N 23618 sell tickets to Boheme N 23618 boom recordings of era N 23619 gave hand to greenhouse V 23619 sang aria inside it V 23621 wear lifts in voice V 23624 getting a of Traviata V 23629 Given connections with music N 23632 ventilated anguish in meeting V 23632 inject lilt into baritone V 23634 substitute one of songs N 23635 reach settlement with musicians N 23635 wanted parity with orchestras N 23642 contributed section at behest V 23650 singing parts of Traviata N 23651 was match for Festival N 23651 awarded prize of festival N 23651 awarded prize to makers V 23652 won prize of 143,000 N 23652 won prize for Yaaba V 23653 gives 39,000 to winner V 23657 demand delivery of securities N 23657 pay francs for transaction V 23657 bringing fee to francs V 23658 store securities in cases V 23659 deliver securities to investors V 23660 giving aid to Hungary V 23661 is time for Japan N 23661 extend aid of kind N 23661 extend aid to countries V 23662 studying possibility of visit N 23663 were issue in days N 23664 demand severity in fight N 23667 cover matters as training N 23668 visit Tehran for talks V 23669 help Iran in exploration V 23670 discuss matters as compensation N 23672 stores data for days V 23678 issue warrants during months V 23681 spend time in jail V 23682 distributing tools to returning V 23683 distribute machetes at time V 23685 be year for line N 23686 become series of announcements N 23687 jolted market in July V 23687 slashed projections for year N 23687 delayed orders from customers N 23688 made projection in announcing V 23688 announcing income for quarter N 23690 gained % to million V 23699 be % to % N 23699 be % below level V 23700 earned million on revenue N 23709 exceeded expectations for quarter N 23711 noted growth for lens N 23718 slow growth for quarter N 23724 selling shares in Corp. N 23725 sold shares in August V 23730 rate credit-worthiness of millions N 23731 assigns credit-ratings to bonds V 23732 misled customers into purchasing V 23735 sold shares in August V 23736 received 724,579 for shares V 23737 sold shares on 31 V 23739 sold shares in sales V 23740 represented % of holdings N 23744 reflecting drop in sales N 23745 downgraded rating on firm N 23745 citing slowdown in business N 23746 cut rating to hold V 23749 received blow on Friday V 23751 is average for company N 23752 been sales of shares N 23754 bought shares of company N 23754 bought shares on 22 V 23755 raised holdings to shares V 23761 sold shares for 11.13 V 23761 leaving himself with stake V 23763 sold shares for 11.38 V 23766 lists it as buy V 23774 give rise to forms V 23774 was matter of eons N 23778 puts twist on story V 23780 makes case for improbability N 23781 turns discovery in 1909 N 23785 reconstructed organisms from fossils V 23786 publish reinterpretation of Shale N 23791 provide relief from sentences N 23791 have appendages on prosoma V 23792 discussing meaning of oddities N 23793 was proliferation in number N 23802 views contingency as source V 23804 creating form of life N 23806 is columnist for Review N 23807 play significance of guidelines N 23807 concerning prosecutions under law N 23809 discourage prosecutors under circumstances V 23809 seizing assets of defendants N 23812 strips defendants of assets N 23812 force them into bargains V 23813 freeze assets before trial V 23813 disrupt activities of defendant N 23816 curb prosecutions against defendants N 23818 been subject of criticism N 23820 laying groundwork for increase N 23821 follows rebuff from Congress N 23824 raise funds in hurry V 23826 schedule session of legislature N 23826 schedule session within weeks V 23827 limits options in emergency V 23834 spend all on this V 23836 lower taxes by amount V 23837 require approval in houses N 23840 pay portion of tab N 23844 double tax over years V 23845 imposing increase in meantime V 23845 undercut support among voters N 23848 began battle against state N 23848 heeded warnings about safety N 23861 yield points above note N 23876 includes million of bonds N 23884 yield % in 2019 N 23891 receive rating from Moody V 23896 were details on pricing N 23898 indicating coupon at par N 23901 buy shares at premium V 23902 indicating coupon at par N 23904 buy shares at premium V 23905 indicating coupon at par N 23907 buy shares at premium V 23910 buy shares at premium V 23921 start businesses for reasons V 23922 is one of them N 23923 is bugaboo of business N 23924 meeting demands of regulators N 23925 face mound of regulations N 23926 is hope of change N 23927 held hearings on bill N 23927 reduce hassles for businesses V 23931 tackle mounds of paper N 23932 asked sample of owners N 23935 set standards for products N 23936 cites Commission for equipment V 23936 prevent junk from flooding V 23938 be nightmare for architects N 23939 is maze of codes N 23940 maintain fleets of vehicles N 23940 devote resources to complying V 23942 spends % of time N 23942 spends % on insurance V 23948 are expense at Inc. N 23949 rise % to 100,000 V 23953 deposit taxes within days V 23953 's problem for businesses N 23955 Revising manuals on pensions N 23955 costs 25,000 for Giguiere V 23960 runs concern in York N 23962 added % to % N 23962 added % to year V 23965 take care of tax N 23970 held fire with production V 23971 was revival of anthology N 23972 laid cards on table V 23973 test mettle of audiences N 23974 cites directors as Stein N 23974 cites directors as influences V 23974 stage productions with rigor V 23975 considered father of realism N 23975 lend themselves to techniques V 23976 enlightening masses with speaking V 23977 is party of yuppies N 23979 are lots of dalliances N 23982 transforms drama into something V 23983 force distance between actors V 23986 are moments in Summerfolk N 23990 express herself through play V 23991 has aid of associate N 23992 is score than character N 23996 is parcel of problem N 23997 find reason for affair N 24000 possessing one of instruments N 24000 brings touch to role V 24001 plays maid with edge V 24006 was start of boom N 24007 offered 28 for ESB V 24008 given warning on a N 24011 became firm in cases N 24015 raised bid to 36 V 24019 became maker for houses V 24020 paid fee of 250,000 N 24021 received million in fees N 24021 received million from Kohlberg V 24023 lost % of value N 24024 been one of handful N 24025 projecting earnings in quarter N 24029 has billion of assets N 24033 was matter than sign N 24034 be news for thrifts N 24035 curbed originations in quarter N 24037 see signs of swoon N 24048 moved two-hundredths of point N 24048 moved two-hundredths in week V 24051 posted increases in yields N 24051 posted increases in week V 24051 reflecting yields on bills N 24053 negotiate rates with thrifts V 24056 posted changes in yields N 24061 reflect yields at banks N 24064 dropped yield on CDs N 24066 market products in Australia V 24069 held franchise for years V 24071 sold million of assets N 24071 reached agreements in principle N 24072 reached agreement with firm N 24073 sell portion of unit N 24073 sell portion for million V 24074 sold million of assets N 24074 received million from Corp. V 24075 sell million to million N 24075 reduce costs at Wang N 24078 establishing subsidiary in Britain V 24079 purchased plant in Plymouth N 24083 meet demand for parts N 24083 meet demand by end V 24084 expects sales at unit N 24085 reported decline in profit N 24087 included gains of million N 24089 included gains of million N 24091 been firm in charge N 24091 trading stock in Corp. N 24091 been firm since 1930s V 24096 making issue on Board N 24100 manned post with Bates V 24100 's ringer for actor N 24103 were losses in stock N 24104 set crowd in afternoon V 24106 read news about unraveling N 24106 read news on train V 24107 be while like stock N 24111 caused furor in market N 24111 sell stock from floor V 24113 were rumors of trades N 24118 was pressure from everyone N 24124 doing job of tugging N 24128 jumped 20 to 170 V 24129 trade price on bell V 24131 representing orders to 10 N 24132 praised specialists for getting V 24132 getting yesterday without halt V 24134 Leaving exchange at p.m. V 24140 cut spending on machinery N 24142 showed increases in imports N 24143 ease rates before spring V 24144 views rates as weapon V 24145 weaken pound against currencies V 24146 remains threat to well-being N 24148 predicting recession next year N 24149 reduced forecast for 1990 N 24151 is cause for concern N 24151 create market by 1992 V 24152 faces inflation in months V 24156 include income from investments N 24157 expect deficit for all N 24158 reflects position of industry N 24160 reached bid of million N 24161 receive acceptances for offer N 24162 receive note in lieu V 24165 pay prices for racehorses V 24167 launched seminars for investors N 24171 romancing people like Hulings N 24175 is game for anyone N 24180 bought assets of Spendthrift N 24181 lost millions in partnerships V 24193 offers tour of barn N 24194 had splints on legs V 24194 keeping animals from racetrack V 24195 see lows of business N 24198 received advice from consultants V 24199 outlining rules for consultants N 24203 own racehorse in partnership V 24204 get horse for dollars V 24206 sell stake in horses N 24206 sell stake to newcomers V 24207 halved dividend to cents V 24208 been cents since 1988 V 24209 incur charge of million N 24209 incur charge in quarter V 24211 battling proposal by Canada N 24212 including buy-out of company N 24212 set date for submission N 24214 made offer for Donuts V 24215 followed request to Court N 24215 set date for suit N 24216 seek alternatives to offer N 24217 said income of million N 24221 reported profits in businesses N 24221 narrowed losses in sector N 24223 included gain of million N 24226 keep headquarters in Angeles V 24227 maintain relationships with exchanges N 24228 made remarks at meeting V 24228 rally support in U.S. N 24229 is part of attempt N 24229 acquired Farmers for billion V 24230 acquire Farmers from vehicle V 24231 needs approval of commissioners N 24231 take him to Idaho V 24234 hold hearings on applications N 24235 had meetings with management N 24235 woo executives with promises V 24236 be member of team N 24236 define strategies of group N 24237 having Axa as parent V 24241 completed sale of % N 24245 holds stake in venture N 24246 include earnings in results V 24249 represents flow from partnership N 24250 is 30 to units N 24255 added dollars to reserves V 24255 bringing total to billion V 24256 report profit for year N 24257 reported income of million N 24258 affect payment of dividends N 24260 equal % of exposure N 24264 include gain of million N 24270 filed prospectus for offering N 24272 raise million from offering V 24274 provided information to Pentagon V 24275 challenge veracity of contractor N 24276 misstated testimony of witnesses N 24277 attacked allegations as mudslinging V 24277 reported information about practices N 24278 provides the with everything V 24278 cause loss of contracts N 24279 considered leader in advocating N 24280 obscure details of practices N 24281 been focus of prosecutions N 24281 been focus since 1985 V 24282 demanding access to host N 24283 indicted GE on charges V 24283 defraud Army of million N 24283 defraud Army on contract V 24286 defrauding Pentagon by claiming V 24286 claiming overruns on contracts N 24288 become eligible for contracts V 24288 provided statements to Secretary V 24289 curry favor with officials V 24289 detailing extent of lapses N 24292 rebut efforts by GE N 24294 familiarize Orr with procedures V 24296 raise question of cover-up N 24299 signed letter of intent N 24308 evaluate offers for company N 24311 is bidder for company N 24316 was points at 2611.68 V 24317 depressing both for year N 24318 refocused attention on rates V 24318 rekindle concerns over prospects N 24321 pave way for declines V 24322 knocking prices in midafternoon V 24322 open way for declines N 24323 provided support to market V 24327 seek % of shares N 24328 posting loss in days N 24334 discouraging participation by investors N 24341 be targets of funds N 24343 shed yen to yen N 24352 suffered series of setbacks N 24353 hold office in elections V 24354 cast cloud over trading V 24355 achieve goal of workweek N 24365 create bank with assets N 24370 requires approval of authorities N 24371 reject blacks for loans V 24373 have data on position N 24377 is part of problem N 24381 requires disclosures of level N 24382 received mortgages from thrifts N 24384 receive loans than whites N 24385 handling number of failures N 24385 put energy into investigating V 24386 devoted amount of emphasis N 24386 devoted amount over years V 24386 developing examinations for discrimination N 24388 punished banks for violations V 24389 issued citations to banks V 24390 found indications of discrimination N 24390 found indications in examinations V 24391 alleged discrimination in lending N 24393 give figures on actions N 24395 investigate discrimination in housing N 24396 taken position on matter N 24397 considering challenge to plan N 24397 buy half of Inc. N 24398 fighting transaction on fronts V 24398 discourage operators from joining V 24398 joining Tele-Communications as investors V 24400 pay Inc. for stake V 24400 is second to Time N 24402 have number of relationships N 24403 bringing Tele-Communications as investor V 24404 is slap in face N 24405 mount challenge in Court V 24405 charging Time with monopolizing V 24405 crush competition from Showtime N 24406 naming Viacom as defendants V 24407 prevent Tele-Communications from dropping V 24407 dropping HBO in any V 24410 characterize investment in Showtime N 24412 owning HBO with subscribers N 24417 control % of Inc. N 24420 weakening suit against Time N 24421 accuses Time in suit V 24421 carry Showtime on system V 24422 launch Showtime on 1 V 24424 sign contracts with studios N 24424 buy movies from Inc. N 24424 has arrangement with HBO N 24426 reduce competition in production N 24426 are components of devices N 24427 enjoin acquisition in court V 24428 determine legality of purchase N 24428 begin proceedings within days V 24430 taken turn for the N 24430 taken turn in weeks V 24432 posted loss for period N 24433 slash projections for rest N 24436 put damper on industry V 24437 become lot as targets N 24438 raises questions about orders N 24438 total billion over years N 24440 cut fares in markets N 24443 offer checks of 200 N 24443 offer checks to members V 24443 making flights in class V 24444 reported drop in income N 24447 rose % in period V 24450 has competition in hub N 24453 expecting size of loss N 24463 build mileage at rate V 24467 blamed some of loss N 24468 quantify effects of Hugo N 24477 become part of culture N 24478 has quality about it V 24480 make pitchmen in 1990 N 24489 Sharing character with advertisers V 24496 give title as head N 24497 take post at Express N 24497 take role at company N 24500 awarded assignment to Partners V 24506 give sets of Boy N 24506 give sets in promotion V 24508 acquire stake in Corp. N 24508 acquire stake for dollars V 24510 raise stake in Paxus N 24510 raise stake to % V 24511 has relationships with company N 24515 including billion of bonds N 24517 incurred loss of million N 24519 include debt of units N 24522 ensure support of lenders N 24528 be company with sense N 24529 name resources in list V 24531 sell cars in 1990 V 24532 expect sales next year V 24535 sold cars in 1988 V 24537 blamed slump in prices N 24537 blamed slump for plunge V 24541 posted drop in profit N 24542 raise billion in cash N 24542 raise billion with sale V 24542 redeem billion in maturing N 24545 has assurance of enactment N 24545 raise limit before auctions V 24547 earned million on revenue V 24553 grew % in September V 24557 rose % in September V 24558 issue statistics on exports N 24559 rose increase from year N 24560 rising units to units V 24562 have engines of centimeters N 24563 fell % from year V 24564 fell % to units V 24566 offer explanation for fall N 24570 prompted sell-off in shares N 24571 sent Average at 10:40 V 24572 buys stock for raiders V 24572 steadied fall in UAL N 24574 took UAL in hour V 24578 battled board in 1987 V 24578 withdrew offer for parent N 24579 buy million of stock N 24580 following collapse of buy-out N 24581 oust board in solicitation V 24585 seen case of incompetence N 24587 yield 245 to 280 V 24589 acquires stock in attempt V 24591 including threat of strike N 24592 seek support for sale N 24592 seek support before meeting V 24594 selling company at price V 24598 sell stock at bottom V 24604 reviewing proposals for recapitalizations N 24612 held % of UAL N 24612 held % before bid V 24612 reduced holdings below % V 24613 put airline in play V 24614 makes offer of 300 N 24614 accepts offer below 300 N 24616 fell % to million V 24617 included gain from sale N 24619 offset declines in newspapers N 24622 triggered orders on way V 24626 picked signals of decline N 24628 step sales in market N 24628 step sales in effort V 24628 maintain flow of exchange N 24629 was support at level V 24632 hit level at EDT V 24632 encountered number of orders N 24634 have effect on supplies V 24640 relating numbers to activity V 24646 anticipating recession in months V 24647 had times in years N 24651 turn concentrate into cathodes V 24655 bought futures in anticipation V 24655 have positions in market N 24658 ending session at 19.72 V 24665 gained cents to 5.1950 V 24666 rose 2.30 to 488.60 V 24668 were rumors of sales N 24669 reflected weakness in market N 24671 was price of silver N 24671 was price at the V 24675 buying corn in amounts V 24678 triggered orders above 1,030 N 24678 pushing price to 1,040 V 24681 was buying in York V 24686 buy Inc. for million V 24687 pay maximum of % N 24689 pay dividends at % V 24691 convert million of debt N 24691 convert million into % V 24693 took control of month N 24694 win concessions from creditors V 24695 conclude negotiations with creditors N 24695 conclude negotiations within days V 24696 converts film to videotape V 24696 posted loss of million N 24696 posted loss on revenue V 24697 fell cents to 2.125 V 24699 are tale of excesses N 24700 restructure billion of debt N 24700 release plan in day V 24701 take billion of cash N 24702 was ace in hole N 24704 force TV into court V 24706 were part of Communications N 24707 loaded company with debt V 24707 sold operations at profit V 24708 selling them for billion V 24709 took billion of cash N 24709 moved it into operations V 24710 took million of bonds N 24710 took million as payment V 24712 is billion on buy-out V 24712 taking cash up front V 24713 racked returns of % N 24713 racked returns in years V 24714 losing investment of million N 24717 reschedule lot of bonds N 24722 boost profit after buy-out V 24725 take side of trade N 24727 offers concessions by KKR N 24728 give part of million N 24728 give part to holders V 24728 reduce value of claims N 24731 costing anything because profit V 24733 invest money in TV V 24735 extract money from KKR V 24736 be proceeding for KKR N 24737 provide fuel for critics N 24738 putting TV into proceedings V 24739 has pockets than Gillett N 24742 made all on TV V 24743 pour money into TV V 24744 boosted dividend to cents V 24745 is 1 to shares N 24749 holds % of securities N 24749 buy shares with value N 24750 buy 250 of stock N 24750 buy 250 for price V 24752 rose % to million V 24754 led shares into decline V 24758 swamped 1,222 to 382 N 24759 has case of nerves N 24760 drove average through ranges V 24762 left us with nerve V 24767 plunged points in hour V 24771 caused period of panic N 24771 caused period on Board V 24773 scooped hundreds of futures N 24777 were force behind buying N 24777 were force at moment V 24781 crushing hopes of buy-out N 24784 was crowd around post V 24785 was mass of people N 24786 was liquidation of stock N 24786 was liquidation across board V 24787 taken loss on UAL N 24787 selling stocks in attempt V 24788 selling stocks in Index N 24799 trimmed loss to points V 24801 sold stock into decline V 24801 seeing velocity of drop N 24802 completed side of trade N 24805 began program for dozens N 24806 rallied Dow into gain V 24809 buy shares on sell-off V 24811 handling blocks of stock N 24814 present itself as investment V 24815 is market for investment N 24816 attributed rallies in number N 24816 attributed rallies to program V 24817 climbed 3 to 41 V 24820 rose 7 to 133 V 24820 gained 2 to 103 V 24820 jumped 3 to 27 V 24824 fell 1 to 40 V 24825 fell 3 to 68 V 24825 lost 1 to 66 V 24825 slid 3 to 24 V 24825 dropped 1 to 14 V 24826 lost 3 to 13 V 24828 dropped 1 to 70 V 24828 fell 4 to 59 V 24828 lost 3 to 31 V 24828 slid 3 to 50 V 24828 dropped 1 to 21 V 24828 skidded 2 to 26 V 24829 gained 3 to 23 V 24830 tumbled 7 to 43 V 24832 dropped 1 to 53 V 24832 fell 1 to 16 V 24833 dropped 1 to 29 V 24833 caused damage to building V 24836 lost 1 to 20 V 24836 dropped 1 to 28 V 24836 dipped 5 to 21 V 24837 plunged 5 to 38 V 24838 skidded 5 to 31 V 24839 swelled volume in issues V 24839 fell 7 to 44 V 24839 led list on volume N 24839 lost 3 to 17 V 24840 have yields of % N 24841 surged 1 to 75 V 24842 placed stock on list V 24844 rose 3 to 38 V 24844 added stock to list V 24845 advanced 2 to 49 V 24845 holds % of shares N 24847 approved repurchase of shares N 24848 climbed 1 to 38 V 24850 replace International on 500 V 24850 gained 5 to 24 V 24851 fell 3.10 to 376.36 V 24853 raised dividend to cents V 24853 raised 1990 to shares N 24854 increases dividend to 1.20 V 24856 rose % to cents V 24857 rose % to million V 24859 plunged % to million V 24861 edged % to million V 24863 exceed million after taxes N 24864 fell % to million V 24865 slid % to billion V 24866 reported ratio for months V 24868 reflecting development in claims N 24870 fell % to billion V 24871 include provision for returns N 24872 defend filing in hearings V 24876 was play on market V 24879 learned thing from candidates V 24882 get platform in case V 24886 buy bonds on speculation V 24889 fell points on news V 24893 cut rates amid growing V 24897 rose 1 to point V 24898 fell 1 to point V 24905 structuring offering for Inc. N 24906 is franchisee of Hardee N 24910 turned shoulder to yesterday V 24911 given volatility in market N 24922 have view of market N 24922 have view because expectations V 24923 held month by Treasury V 24924 purchased no than % N 24928 drum interest in bonds N 24937 take advantage of falling N 24939 offered million of notes N 24940 issued million of notes N 24940 priced million of notes N 24941 paved way for visit V 24941 filing registration with Commission V 24945 ended 1 to point N 24945 ended 1 in trading V 24946 finished point at bid V 24947 including climb in prices N 24949 was outlook for supply N 24950 was million of bonds N 24953 had balance of million N 24953 had balance in trading V 24955 gained point after session V 24961 touching an of 98 N 24963 yielding % to assumption V 24969 rose point to 99.93 V 24969 rose 0.05 to 97.70 V 24970 rose 17 to 112 V 24970 rose 11 to 104 V 24973 increased dividend to cents V 24974 is 10 to 24 N 24979 removed Waggoner as officer V 24981 place company under protection V 24983 remain director of Staar N 24986 named member of board N 24988 confirmed him as leader V 24989 reaffirmed allegiance to orthodoxy N 24993 subpoena papers of Reagan N 24994 denied request by adviser N 24994 seek documents from Bush V 24998 expressed skepticism over effort N 24999 provided Department with list V 25000 defrauding followers of ministry N 25001 convicted 5 by jury V 25001 diverting million of funds N 25001 diverting million for use V 25002 deny seats in Congress N 25003 held talks with government N 25005 pledged accord for pullout N 25005 support rejection of plan N 25005 approved Sunday by legislature V 25007 trade captives in Lebanon N 25007 trade captives for comrades V 25009 reject blacks for loans V 25010 have data about applicants N 25013 know cause of blasts N 25014 opened meeting in Portugal N 25014 assess needs amid reduced N 25015 ordered study on role N 25016 play significance of guidelines N 25016 concerning prosecutions under law N 25024 plunging 33 to 145 V 25025 seek all of Jaguar N 25025 setting stage for war V 25026 discussing alliance with GM N 25027 paid price for incentives V 25029 slipped % in September V 25029 reflecting demand after spurt V 25031 approved buy-back of shares N 25032 reduce shares by % V 25033 received offer from Utilities V 25033 spurring round of bidding N 25034 providing data to Pentagon V 25035 rose % in quarter V 25038 slash force in U.S. N 25039 posted drop in profit N 25039 recorded loss in years N 25043 increased % in market V 25045 surged % in quarter V 25046 rose % in quarter V 25054 diagnosed defect in embryo V 25056 detected days after conception N 25063 made millions of copies N 25065 passing defect to child V 25069 taken days after conception N 25071 finds sideline in world V 25073 made protein from alcohol V 25074 convert glucose from wastes N 25074 convert glucose into protein V 25076 calling scientists from Institute N 25078 churn proteins for use N 25086 inserting catheter into artery V 25091 give movie of vessel N 25093 measure movements of wall N 25093 raises pressure of blood N 25098 have sense of smell N 25099 seeking million from unit V 25099 defrauded government on contract V 25099 provide services for employees N 25102 reducing value of homes N 25103 recover million in costs N 25103 terminated contract with Relocation N 25105 have comment on suit N 25106 leave accounts beyond years V 25107 close accounts for years V 25109 involving 68 of syndicates N 25110 underwrite insurance at Lloyd V 25112 restrict ability of officials N 25113 enact rules by end V 25115 get quotes for contracts N 25115 obtain approvals from directors V 25116 plummeted % because acquisition V 25118 rose % to million V 25121 attributed drop to disruption V 25124 affected sales as part V 25127 resurrect itself with campaign V 25128 celebrate achievements of some N 25129 extricate shoe from wad V 25131 hurling rocks at lamp V 25132 sharpen arm of player N 25133 begin airing next month V 25134 has reputation as cemetery N 25139 lend themselves to job V 25141 is one of examples N 25145 made debut like White V 25149 credited performance to hyping V 25151 making market in issue V 25155 buy shares from investors V 25159 makes market in shares V 25161 flip it for profit V 25162 named chairman of maker N 25164 is partner of Co N 25165 intensified battle with Corp. N 25165 intensified battle by saying V 25165 make bid for all N 25166 was part of filing N 25170 put pressure on government V 25174 discussing alliance with GM N 25174 reach agreement within month V 25175 give stake in company N 25175 produce range of cars N 25181 have implications for balance N 25182 throw hat in ring V 25185 sent shares in weeks V 25186 own % of shares N 25188 rose cents in trading V 25189 combat competition from Japanese N 25191 expressed preference for GM N 25192 acquire all of Jaguar N 25194 diversify products in segment N 25196 see lot of potential N 25196 marrying cars to know-how V 25203 alleviate decline in earnings N 25206 declined % to billion V 25207 retire billion of debt N 25209 climbed % to million V 25210 increased % to billion V 25211 reflects earnings in operation N 25216 tumbled million to million V 25217 attributed decline to prices V 25217 countered earnings from sector N 25221 slipped % to million V 25222 declined million to billion V 25223 included gain of million N 25225 take place over period V 25225 involve layoff of employees N 25225 focus efforts in areas N 25228 fell % to million V 25230 rose % to billion V 25231 boosted profits from operations V 25232 totaled million after loss V 25233 earned million in quarter V 25233 included million in charges N 25234 included gain from taxes N 25237 ended involvement in mining N 25237 ended involvement in quarter V 25238 was million of revenue N 25240 rose % to million V 25243 rose % to million V 25244 sold interest in partnership N 25244 sold interest for million V 25245 end involvement in mining N 25246 discussing buy-out of facility N 25249 had change in earnings N 25251 compares profit with estimate V 25251 have forecasts in days V 25255 assume responsibility for manufacturing N 25257 is provider of chemicals N 25260 provide shareholders with return V 25262 named president of insurer N 25263 been president in office N 25265 named president in charge N 25266 been president of department N 25272 named director of subsidiary N 25273 build business of Gruntal N 25274 was officer of Co. N 25274 was officer until July V 25274 named co-chairman of firm N 25277 got offer from Gruntal N 25278 provide services to sites V 25280 expand usage of services N 25280 adds locations over years V 25282 outpace exports despite gains V 25285 expect gap for year N 25286 signed agreement with Inc. N 25288 had sales of million N 25292 become officer of Wachovia N 25294 elected directors of Wachovia N 25294 filling seats on boards N 25295 rose % in August V 25296 followed decline in July N 25298 decreased week to tons V 25299 fell % from tons V 25300 used % of capability N 25305 soared % to billion V 25307 dropped % to billion V 25308 supply shields for surgery N 25308 supply shields to unit V 25310 selling products for use V 25311 speed healing of cornea N 25311 speed healing after surgery V 25313 rose % from June V 25314 publishes data on basis V 25314 combines index for months V 25314 rose % from June V 25315 turned showing with rise V 25318 eased % from level V 25320 sell business to AG V 25322 is division of subsidiary N 25322 had sales of million N 25323 focus resources on businesses V 25324 buy power from plant V 25327 represent advance in research N 25328 stop spread of AIDS N 25329 expressed skepticism over significance V 25333 wiped average of % N 25333 wiped average within days V 25337 conduct tests on patients V 25338 do experimentation in country V 25339 got exposure in media V 25345 killed cells at dose V 25346 know effect of antibody N 25347 considered problem in Japan N 25347 reports carriers of virus N 25347 poured resources into research V 25349 present drugs for testing V 25351 sells drug under name V 25353 represent threat to viability N 25367 flopped victim of turbulence N 25368 finance purchase of stake N 25369 get financing for buy-out N 25370 accepted % of bonds N 25371 marked showing for issue N 25374 buy stake in Airlines V 25375 given volatility of market N 25377 pick rest of offer N 25383 gives cash in pocket N 25384 acquiring stake in Airlines N 25386 have impact on shares V 25387 announced issue in September V 25389 sell issue in market V 25393 is difference of opinion N 25395 was years of neglect N 25395 raise goals for females V 25403 note increase in searches N 25404 get numbers in order V 25411 feeds evaluations into computer V 25412 basing increases on reviews V 25415 get voice in design N 25423 put plans under control V 25429 's time in years N 25432 heads program at Center N 25434 has help of doctors N 25439 sees erosion of staff N 25445 invested hundreds of thousands N 25445 invested hundreds in programs V 25446 showed support for Kohl N 25450 scored gains in elections N 25450 scored gains in states V 25451 becoming issue for campaign N 25451 drawing support for stand N 25452 edge coalition in election V 25453 allow prosecution of criminals N 25453 took refuge after 1945 V 25455 attending conference with investigators N 25456 been part of squads N 25459 easing tension between Beijing N 25462 investigating exports to Union N 25467 ban practice in waters V 25470 cut number of vessels N 25471 cost production of automobiles N 25472 accept series of proposals N 25474 resumed strike against Ltd. N 25475 striking mines on 13 V 25476 increase wage by % V 25478 took note of problem N 25479 was theft of 235,000 N 25483 photographing damage in Francisco N 25484 issued advisory to agencies V 25484 following report from Ministry N 25484 causing feeling among residents V 25486 draws thousands of visitors N 25487 rose % between 1986 V 25488 rose % in 1987 V 25489 raise limit to mph V 25490 increased limit on interstates N 25492 rose % between 1986 V 25492 were the in 1988 V 25493 raised limit on interstates N 25493 rose % to deaths V 25495 changes spelling of catsup N 25495 changes spelling to ketchup V 25506 set million against losses V 25507 was billion after provisions N 25508 have confidence in it V 25509 borrow billion in 1989 V 25513 supported pricing as agencies V 25516 takes swipe at lending N 25517 are facts on type N 25518 making loans for years V 25520 downsize role of parastatals N 25520 open economies to competition V 25520 promote development of sector N 25521 been concern of Bank N 25522 encourage investments by entrepreneurs N 25523 stimulate investment in developing N 25524 are actions of agency N 25525 put resources to use V 25529 maintaining production of ones N 25530 cut subsidies to producers N 25530 close outlets in neighborhoods V 25532 controls prices on goods N 25533 criticized agency as example V 25535 reduce prices for milk N 25536 banned imports of mushrooms N 25536 banned imports in response V 25538 enter U.S. until are V 25539 detaining mushrooms in cans N 25540 found cans from plants N 25543 exported pounds to U.S V 25550 targeting traffickers through Strategy V 25551 control segment of market N 25554 assist MPD in crimes V 25556 revised terms of restructuring N 25556 complete sale of business N 25557 hindered offering of million N 25557 operate casinos in Nevada V 25558 pay million for business V 25558 reimburse World for million V 25561 receive cent per share N 25561 receive cent for redemption V 25562 exceeds 14 on day V 25564 rose cents on news V 25565 demand premium for delay V 25568 being one of the N 25572 sold unit to group V 25574 fell points to 2662.91 V 25575 staged rally with prices V 25577 is sign of growing N 25582 was reaction to rout N 25585 see growth in quarter V 25596 interviewed adults from 15 V 25597 interviewed adults from 7 V 25599 survey household in U.S. N 25601 introduce errors into findings V 25603 had confidence in industry V 25605 keep prices at level V 25608 asked Airlines for side V 25609 is one of factors N 25609 shapes trust in industry N 25612 offer rates for packages N 25613 create media for campaigns V 25614 sold package for million V 25616 spend million on programs V 25617 negotiating packages with leading V 25618 negotiating packages with group V 25620 buying pages in magazine V 25621 combine magazines with products V 25624 provide pages in magazines V 25624 give videotape on pointers N 25624 distribute books to homeowners V 25636 describe lapse of sense N 25640 gives chance of success N 25641 reported results of study N 25642 gather group of advisers N 25642 gather group around them V 25649 follows resignation of Goldston N 25650 considered abrasive by insiders V 25650 reflect difference in style N 25651 make transition from company N 25652 regain momentum in business N 25652 regain momentum against rivals V 25654 's issue of style N 25655 view it as positive V 25660 resume presidency of Inc. N 25661 was officer of Corp N 25662 assume title of president N 25665 been president of division N 25671 publish issue of Months N 25672 developing spinoff on heels V 25674 is show of faith N 25677 increased % from year V 25678 increased % to billion V 25682 operate magazine with revenue V 25683 sell magazine to Inc V 25691 break ground with start-ups V 25692 gain leverage with advertisers V 25694 sold magazine to Corp V 25695 take million from sale V 25701 had sales in excess V 25702 designs toys under names V 25705 shore confidence in banks N 25705 shore confidence during recession V 25707 probing bank for months V 25707 arranged merger with Trust N 25710 was attempt with undertones V 25710 including billion in loans N 25712 bought block of stock N 25712 bought block from Corp. V 25713 siphoned million of funds N 25713 siphoned million for ventures V 25714 faked kidnapping for months N 25716 drinking coffee in prison V 25720 register reactions to remarks N 25725 reshaping world of law N 25728 creates profiles of jurors N 25729 provide audiences with craving V 25730 pay sums for advice V 25731 win verdict against Inc N 25732 advised League in defense V 25733 win verdicts in suits V 25740 see vision of system N 25740 see vision as cry V 25750 exacerbates advantage of litigants N 25752 finding calling in cases N 25754 interviewed voters around Harrisburg N 25755 keep them off jury V 25763 report reactions to him V 25768 retain objectivity in sense N 25769 give argument to wife V 25769 get response to it N 25770 do that in way V 25771 sued Corp. over transport V 25772 retained Sciences at cost V 25773 put case to vote V 25774 awarded million in damages N 25778 is part of work N 25779 Changing outcome of trial N 25781 weigh evidence in case N 25782 shoe-horn facts of case N 25783 develop profile of type N 25787 remove people from jury V 25789 hold attitudes toward the N 25790 asking questions about attitudes N 25801 drawing attention to arm V 25801 planted doubt about origin N 25806 play role in operation N 25816 had feel for sentiment N 25817 is guarantee of outcome N 25818 was flatout in predictions N 25821 won case on behalf N 25822 used consultants in case V 25825 been critic of masseurs N 25829 hamper work of scientists N 25835 used consultants to advantage V 25836 giving information about jurors N 25837 lend themselves to that V 25839 is part of contract N 25840 involves sale of 35 N 25844 offers performance for price V 25845 supply computers for engineers V 25846 targeted niche since inception V 25847 provides models of everything N 25851 unveil machines in future V 25852 bring cost of systems V 25856 Remember refrigerators of years N 25860 involving products with value N 25860 curtail use of chlorofluorocarbons N 25862 ratified it by vote V 25864 's lot of banishment N 25865 are ingredient in gas N 25868 cost world between 2000 V 25868 redesign equipment for substitutes V 25869 screens some of rays N 25871 running project at Inc. N 25872 studied topic of warming N 25872 work changes in atmosphere N 25872 work changes over time V 25873 is consensus in community N 25878 be % by middle V 25880 are questions among scientists V 25882 is matter of conjecture N 25888 cites list of substitutes N 25890 protect compressors from formulations V 25899 has substitute for CFCs N 25900 building plant in Louisiana V 25906 created set of interests N 25907 tilt debate toward solutions V 25909 pay bill for all N 25909 pay bill in price V 25910 getting insurance against disaster V 25914 fighting initiatives on issues V 25914 mandating benefits in plans N 25918 be the at 4.65 V 25919 adopted three of bills N 25922 manages Chamber of office N 25924 grant leaves of absence N 25924 grant leaves to employees V 25926 taken note of number N 25927 's matter of time N 25930 support credit for employers N 25932 playing lot of defense N 25932 playing lot in Northeast V 25935 awarding contracts under 25,000 N 25936 permitted flexibility in arrangements N 25937 considers part of policy N 25939 urging passage of initiative N 25948 pre-register changes with state V 25949 meet series of tests N 25950 pre-register sales to franchisees N 25955 protect franchisees from negotiators V 25956 frees owners of liability V 25957 tested applicant for use V 25958 limit ownership of facilities N 25959 find way through system N 25961 feared gridlock on day V 25963 repair some of connections N 25965 was standing-room in railcars V 25966 connecting Francisco with Bay V 25968 reached work on BART V 25968 find space at stations V 25969 is commute in region N 25969 experiencing back-ups of minutes N 25971 caused back-ups on freeway N 25971 find rides to stations N 25973 takes minutes via Bridge V 25973 connects Francisco with area V 25982 connects peninsula with Bay V 25985 handled cars over hours V 25986 select period during hours N 25990 cut commute by % V 25997 went Sunday with computer V 25997 kicked it like can V 25998 maneuvered Thought into position V 26005 including whippings of grandmasters N 26008 nicknamed brainchild for flair V 26011 put hope in capacity V 26014 examine millions of moves N 26015 fought champion to draw V 26017 made maneuver at 13 V 26017 put offside on 16 V 26020 exchange bishop for one V 26024 was one-half of pawn N 26026 shuffled king in crouch V 26026 maneuvered knight to outpost V 26028 saved game for D.T. V 26032 making attack against knight N 26033 left computer with range V 26033 moving pawn to neglect V 26037 grabbed pawn at cost V 26038 exposed queen to threats V 26041 refuted line of play N 26043 won queen for pieces V 26049 building machine for Corp V 26051 is reporter in bureau N 26054 gave 40,000 for certificate N 26060 put him in CD V 26063 had yield of % N 26066 represented value of premium N 26070 chase promise of returns N 26075 buying CD on market V 26076 discuss matter with reporter V 26076 referring inquiries to officials V 26077 was disclosure of risks N 26077 was disclosure in sheet V 26079 discuss questions with consultant V 26080 remember paragraph about premiums N 26081 buying CD as CD V 26083 pay interest to maximum N 26087 received complaint about premiums N 26087 received complaint in years V 26089 are portion of trillion-plus N 26089 are part of total N 26092 finance things like education N 26094 bought CDs in market V 26095 paid premium for CDs V 26104 jumped times to million V 26105 view themselves as marketers V 26111 fell % to cases V 26114 surged % to gallons V 26115 is importer of brandy N 26116 helped companies in April V 26116 lowered tax on imported N 26116 levied tax on products V 26119 increased marketing of Liqueur N 26120 pitches Comfort as drink V 26124 acquired image in U.S. V 26124 become fashionable in countries V 26128 distributes bourbons in Japan V 26129 makes % of consumption N 26129 represented % of liquor N 26131 is exporter of bourbon N 26131 produces types of liquor N 26132 increase advertising in 1990 V 26133 increased advertising in Japan N 26133 built partnerships with shops N 26133 built partnerships throughout Asia V 26134 is bourbon in Japan N 26134 is bourbon with % V 26135 avoiding hitches in distribution N 26136 has partnership with Co. N 26137 has link with Co N 26139 uses photos of porches N 26140 strike chords in countries V 26142 get glitz with bourbon V 26144 carrying woman in a N 26146 rose % on increase V 26149 reached billion from billion V 26151 reported profit of million N 26153 advanced % to million V 26157 grew % to million V 26158 eased % to billion V 26160 has shows in 10 V 26161 bought shares of stock N 26161 bought shares from Inc. V 26162 acquire securities of Federal-Mogul N 26162 acquire securities for years V 26162 influence affairs during period V 26163 sold business to affiliate V 26165 employs workers at facilities V 26166 provide electricity to mill V 26167 has energy for mill N 26170 broke silence on Fed N 26171 return rates to level V 26171 have impact on starts N 26171 have impact upon deficit V 26175 expressing views in public V 26176 rose % on gain N 26179 rose % to billion V 26180 include sales at stores N 26182 were year down 3,200 V 26182 reflecting war among chains N 26185 posted gains for months N 26185 posted gains with sales V 26187 had 90,552 in sales N 26191 slipped % to % V 26199 rose % to million V 26200 rose % to billion V 26201 delay delivery of ships N 26202 fell 1.75 to 20.75 V 26205 is amount of uncertainty N 26207 delivered month in time N 26208 expand capacity of fleet N 26208 expand capacity by % V 26211 pay price for them V 26213 have effect on earnings V 26217 pays portion of cost N 26217 reaches stages of construction N 26218 paid million of cost N 26223 spawned host of clones N 26224 was subject of article N 26226 paid royalties for line N 26231 had drop in profit N 26231 had drop because sales V 26234 was million from million V 26235 rose % to million V 26237 expecting profit of 1.25 N 26237 reducing estimate for year N 26237 reducing estimate to area V 26238 reduced estimate to 5.70 V 26238 make cut to 5.50 N 26238 make cut in light V 26240 fell % to million V 26242 provide figures for category V 26242 fell % to million V 26244 reflects slowing in sales N 26245 fell % to million V 26246 attributed decline to weakness V 26251 become edge of movements N 26259 containing a of population N 26263 produces soot per unit N 26265 outstripped growth of GNP N 26266 producing use of energy N 26269 separate industry from state V 26275 introduce permits in republics V 26282 secure blocks of reduction N 26283 means use of limits N 26286 require billions of dollars N 26290 urged flow of information N 26295 resembles Pittsburgh with production V 26297 adapted this from column V 26298 sold shares of Computer N 26302 dropped 4.58 to 457.52 V 26303 lost 2.38 to 458.32 V 26304 reflected lack of conviction N 26309 represented profit-taking by investors N 26309 made gains in issues V 26311 putting it on track V 26312 lost 1 to 46 V 26313 eased 3 to 24 V 26315 was cents in quarter N 26316 dropped 2 to 14 V 26317 fell 1 to 33 V 26317 slipped 3 to 18 V 26318 fell victim to profit-taking V 26318 declined 1 to 83 V 26320 jumped 1 to 42 V 26323 holds % of shares N 26325 eased 1 to 110 V 26326 dropped 1 to 40 V 26327 paying attention to earnings V 26328 posted growth of % N 26329 be news for market N 26333 been year for investor N 26334 be those with kind N 26335 puts BizMart on list V 26339 jumped 3 to 20 V 26339 advanced 1 to 23 V 26341 fell 1 to 30 V 26342 dropping 1 to 15 V 26345 rose 1 to 54 V 26345 jumped 4 to 41 V 26349 relinquish beliefs about nature N 26352 ask sample of parents N 26352 encourage creativity in children V 26356 is generation of people N 26362 fight inch of way N 26365 minimize tests with results N 26366 provides teachers with self-definition V 26366 passed courses in psychology N 26367 took courses in college V 26371 are people by definition V 26373 remember teachers from days N 26376 be doctor in place V 26378 are factor in crisis N 26379 is problem of equity N 26380 is libel on teachers N 26382 strike posture on behalf V 26383 is shred of evidence N 26387 are majority of schools N 26388 assimilate knowledge into thinking V 26391 needs policy for children N 26395 improves performance in grade N 26397 blame schools for limitations V 26403 become prey of politicians N 26404 disengage itself from commitment V 26405 increasing expenditures on education N 26405 increasing expenditures in circumstances V 26406 takes place in classroom V 26407 have effect on performance V 26408 piling work on teachers V 26409 is paradox in fact V 26412 mastered R at level V 26420 is influence of Math N 26421 learning basis of theory N 26421 read article by Nelson N 26422 have principals with measure N 26425 produce students with morale N 26430 increase flow of information N 26430 increase flow for use V 26431 are one of sources N 26433 gain credibility on floor N 26435 developed strategies for problems V 26436 invest sort of effort N 26436 invest sort into industry V 26437 unveil strategies for industries N 26437 unveil strategies in coming V 26439 making hundred of people N 26440 form teams with customer V 26441 help customers on software V 26443 mirrored performance as result V 26444 reflected changeover to year N 26447 follow rebound in results N 26448 inched % to yen V 26449 fell % to yen V 26450 rose % to yen V 26452 surged % to yen V 26453 rose % to yen V 26454 jumped % to yen V 26456 increased % to yen V 26457 rose % to yen V 26458 surged % to yen V 26460 rose % to yen V 26461 rose % to yen V 26462 rose % to yen V 26464 drop offer for Corp. N 26464 have agreement by 15 V 26465 made offer in August V 26465 awaiting response to offer N 26466 consider offer at meeting V 26467 fill gap in business N 26468 rejected suitor in year V 26469 assume job of officer N 26471 move headquarters from Hingham V 26473 reached agreement with creditors N 26480 accept cents on dollar N 26482 extinguish all of stock N 26482 issue stock to York V 26486 took control of company N 26490 add Co. to index V 26494 reduced assets in August V 26494 selling assets as loans N 26497 exceeded deposits by billion V 26498 increase size of capital N 26502 attributed some of outflow N 26502 attributed some to factors V 26504 were factors in industry N 26505 including thrifts under conservatorship V 26505 reduced assets by billion V 26506 exceeded deposits by billion V 26508 held billion in securities N 26509 marked swing after inflow V 26510 exceed withdrawals in future V 26511 see changes in rates N 26512 exceeded deposits by billion V 26513 exceeded withdrawals by billion V 26514 understate rate of growth N 26515 provide numerator for ratios V 26516 has implications for policies V 26516 lower sense of urgency N 26517 affect perceptions of board N 26517 constitutes degree of stability N 26518 predicted acceleration in growth N 26519 reduced gains in 1970s V 26521 suggesting defects in estimates N 26526 is use of estimates N 26528 estimate output per employee N 26528 found rate of improvement N 26528 found rate during 1980s V 26529 indicates bias in estimates N 26530 use data for calculations V 26531 including one by Department N 26532 contribute % to product V 26532 depresses rate by % V 26533 is use of deflators N 26534 add point to bias V 26535 make allowance for improvements N 26537 take account of improvements N 26537 contributed total of point N 26537 contributed total to bias V 26538 indicate understatement in growth N 26539 was bit over point V 26541 is emeritus of economics N 26542 is co-author of Sharp N 26542 Increase Satisfaction in Living N 26543 plunged % from year V 26544 was million for quarter V 26547 was pennies than projections N 26548 show weakness in some N 26558 included gain of million N 26563 rose % to billion V 26564 sell securities within borders V 26565 let Drexel off hook V 26565 polish image after plea V 26566 made series of settlements N 26567 made fine for matter N 26569 meeting resistance from states N 26571 getting treatment than firms N 26572 includes payment of million N 26576 need licenses for activities V 26578 praise Drexel for effort V 26578 settle problems with states V 26580 was lot of debate N 26580 drafted plan for states V 26582 accepted offer of 25,000 N 26582 have argument with those V 26584 received complaints about Drexel N 26588 pay total of million N 26589 have settlements to four N 26590 have total of 30 N 26592 promote behavior in industry N 26593 reach agreements before Tuesday V 26598 bar Drexel as adviser V 26599 describe position in detail V 26600 issued notice of intent N 26601 is one of states N 26606 mount battle in state V 26611 including commonwealth of Rico N 26612 reported loss of million N 26613 reported loss of million N 26614 completing acquisition of shares N 26616 including results from both N 26618 is income of divisions N 26619 made million from filmed V 26622 reported income of million N 26624 including all of earnings N 26624 had loss of million N 26628 include results of Corp. N 26629 got boost from results V 26630 racked million in receipts N 26630 racked million to date V 26632 contributed results from business N 26633 turned increase in flow N 26634 reflecting reserve for expenses N 26637 saw decline in flow N 26637 included dividend from System N 26639 take retirement from steelmaker N 26641 left % of stock N 26641 left % in hands V 26643 elected chairman by board V 26644 was executive until death V 26645 head appointment by Bush N 26646 stating concerns about appointment N 26647 sets policy for RTC V 26648 are members of board N 26655 had million in assets N 26658 has ties to both N 26659 was co-chairman of committee N 26662 open Arizona to banking V 26666 remain officer of unit N 26667 named chairman of company N 26667 elected him to position V 26667 increasing number of members N 26667 increasing number to 35 V 26668 was president of company N 26669 lowered ratings of debt N 26670 cited move into market N 26671 raised rating on Bank N 26675 give hint of present N 26677 is earthquake in Area N 26680 sue underwriters for negligence V 26697 was bonus from employer N 26697 was bonus in 1981 V 26698 underwrote 20,000 of coverage N 26698 faces losses of 70,000 N 26710 endured decades of decline N 26711 dominated world with stake V 26712 monitored commerce through network V 26716 pioneered policies as insurance N 26717 siphoning chunks of market N 26719 was insurer of horses N 26720 grabbed stake of market N 26723 lost control of situation N 26732 is dictator at Lloyd V 26733 took residence in tower V 26740 houses warren of desks N 26746 left exchange in 1985 V 26753 offset payouts for disasters N 26754 leaving books for years V 26755 reported results for 1986 N 26762 cut force by % V 26770 sells insurance to public V 26774 make payments on claims N 26775 reduce work on claims N 26778 retains title of chairman N 26783 taking reins of company N 26783 realize potential in dealing N 26784 is one of firms N 26785 had equity of yen N 26786 reported income of yen N 26788 interpreted appointment as attempt V 26788 preparing firm for effects V 26789 suffered setbacks in attempts V 26790 underwriting securities in market V 26791 had appetite for equities V 26792 stepped purchases of shares N 26792 stepped purchases in months V 26792 shown themselves in past V 26793 faced competition from competitors N 26795 selling bonds to investors V 26799 sell portions of issues N 26805 build organization with flavor N 26806 gaining expertise in futures N 26808 joined Daiwa upon graduation V 26809 peddling stock to investors V 26812 gain support from force V 26813 form portion of earnings N 26814 lacked backing of force N 26817 posted decline in income N 26822 had reserves of million N 26822 announce dividend in months V 26823 is 1 to shares N 26826 Excluding gains from carry-forwards N 26829 purchased million of shares N 26829 purchased million since April V 26830 quashed prospects for revival N 26832 put attempt to one V 26832 leaves airline with array V 26833 obtain financing for offer V 26835 took announcement as news V 26836 risen 9.875 to 178.375 V 26837 makes market in UAL V 26838 left % below level N 26838 left price before 13 V 26839 consider proposal from group N 26841 transferred ownership to employees V 26841 leaving stock in hands V 26842 had financing for plan N 26851 solve problems with union N 26857 worsened relations between unions N 26859 be ally to Wolf N 26861 paid million for stake V 26861 received % of company N 26861 received % at cost V 26864 sowed some of seeds N 26865 nursing million in losses N 26866 leaves residue of lawsuits N 26868 force recapitalization through process V 26868 oust board by vote V 26873 battle Japanese in market V 26874 is setback for Memories N 26880 satisfy need for DRAMs N 26880 satisfy need from market V 26883 be part of it N 26884 became officer of Memories N 26885 announce participation in Memories N 26893 got wind of coup N 26895 become service for Noriega N 26896 is subject for inquiry N 26897 stamping secret on complicity V 26899 assume authority to policy N 26899 take some of responsibility N 26901 block couple of roads N 26902 bears responsibility for timidity N 26904 tell Giroldi about laws V 26905 had Noriega in custody V 26915 Witness prosecution of North N 26916 deploring Men of Zeal N 26920 is artifact of mind-set N 26924 write rules in advance V 26927 strafe hideouts in Valley N 26928 take civilians with him V 26931 raised % in years V 26932 Dragging 13 into story V 26933 closing parts of Channel N 26934 were reports of deaths N 26937 determine cause of explosions N 26938 fell 1.125 to 23.125 V 26940 closed miles of Channel N 26942 had fire under control V 26943 spewed debris for miles V 26943 crumpled ceiling in school N 26946 including three in condition N 26949 were round in months N 26952 are cornerstone of operations N 26952 is contributor to profits N 26954 obtained disgorgement from figure V 26955 was captain of crime N 26955 was one of defendants N 26958 enjoined Lombardo from dealings V 26959 pay government within week V 26962 reported declines in profit N 26962 posted loss for quarter N 26966 anticipate charges to earnings N 26967 take effect of litigation N 26971 purchased shares of stock N 26971 purchased shares at cost V 26973 fell million to million V 26973 declined million to million V 26974 offset profits in sectors N 26975 was 4.04 during quarter N 26977 left Oil with loss V 26980 tumbled % to million V 26983 correct problems with boilers N 26991 buy products in markets V 27001 included gain of million N 27004 included charges of million N 27006 includes gains of million N 27006 indicating losses for quarter N 27007 reflecting softening of demand N 27009 Citing ownership in Co. N 27009 slid % in quarter V 27012 Offsetting stake in Lyondell N 27014 reported income of billion N 27015 were billion off % V 27024 are million of bonds N 27025 yield % in 2012 V 27025 yield % in 2014 V 27025 yield % in 2016 V 27035 brings issuance to billion V 27043 bring issuance to billion V 27056 was offering of securities N 27058 covering % of deal N 27059 have life of years N 27059 assuming prepayments at % N 27062 co-host program on Channel N 27069 endure shouting of Mort N 27073 dumped stocks of companies N 27074 fell 26.23 to 2662.91 V 27075 outpaced 1,012 to 501 N 27078 reduce flexibility of companies N 27079 beat path to issues V 27080 sold Co. of America N 27085 was pursuit of companies N 27086 entitled Winners of Wars N 27086 buy stocks of companies N 27087 pay attention to sheets N 27088 buy shares of Tea N 27090 equaling % of equity N 27090 carrying assets at billion V 27091 climbed 3 to 1 V 27091 gained 3 to 130 V 27092 fell 1 to 57 V 27092 gained 3 to 21 V 27093 slipped 1 to 43 V 27095 outperformed index by % V 27098 have exposure to cycle V 27099 dropped % from year V 27099 declined 1 to 24 V 27100 lost 7 to 35 V 27103 dropped 1 to 57 V 27104 fell 5 to 9 V 27104 lead list of issues N 27105 reach agreement with regulators N 27105 provide capital to MeraBank V 27106 dropped 5 to 41 V 27108 fell 1 to 1 V 27109 dropped 3 to 44 V 27109 retreated 1 to 57 V 27111 advanced 7 to 178 V 27112 fell 1 to 67 V 27112 dropped 3 to 42 V 27113 gained 7 to 11 V 27113 revamping terms of plan N 27113 sell operations for million V 27113 spin business to shareholders V 27114 follows withdrawal of offering N 27115 gained 1 to 37 V 27116 bought % of shares N 27118 rose 5 to 58 V 27118 climbed 7 to 138 V 27118 advanced 1 to 1 V 27118 added 1 to 67 V 27119 lost 3.11 to 379.46 V 27121 fell 3 to 20 V 27122 building ships for company V 27123 are sort of nicknames N 27129 being one of public N 27130 was experience with breed N 27131 controlled school with bullhorn V 27132 choosing chiefs from mold V 27134 take control in York V 27135 attacked concept of tenure N 27138 kept job for years V 27143 cut rate by % V 27146 takes system in midst N 27149 Getting community of parents N 27150 suggests process of disintegration N 27155 buy Register in transaction V 27158 pay million for Register V 27159 pay million in settlement N 27160 hired president of Ingersoll N 27161 left company after clashes V 27162 use part of proceeds N 27164 causing strain on finances N 27165 seeking line of million N 27167 head team at Goodson N 27167 had revenue of million N 27167 had revenue in 1988 V 27168 stretches years to friendship V 27170 expanding empire in partnership V 27171 has dailies in U.S. N 27173 concentrate energies on papers V 27175 take post at Co N 27176 become president for communications N 27178 take responsibility for effort N 27179 influenced publication of articles N 27180 make million in contributions N 27183 fought attempt by PLC N 27184 giving control of company N 27185 cite tension because efforts N 27185 cut costs at agency N 27186 been president of operations N 27187 take position of president N 27188 been president of operations N 27192 help Express in wake V 27196 sending note with case V 27200 approached him about job V 27201 was contender for job N 27203 leave company in hands V 27205 brushed reports about infighting N 27210 recommended him to Sorrell V 27212 labeled reports of friction N 27212 spent part of weekend N 27212 spent part on boat V 27213 oversee affairs among things V 27216 have repercussions at Ogilvy V 27217 affect relationships with agency N 27228 was inspiration at company V 27232 be answer to problems N 27235 disclose price for Consulting N 27235 counsels companies on supply V 27236 suggest price of revenue N 27239 awarded account for unit N 27239 awarded account to Shaffer V 27241 awarded account to Grey V 27243 be part of campaign N 27244 becomes the of stars N 27248 named chairman of Pictures N 27248 named president of unit N 27249 make movies for TNT V 27251 release films in U.S. V 27251 develop movies next year V 27252 made documentaries for networks V 27252 released pictures to theaters V 27257 receives go-ahead from authorities V 27258 values Mixte at francs V 27258 making one of takeovers N 27260 boost stake in businesses N 27261 make ally of group N 27262 holds stake in interests N 27264 protect it from raiders V 27271 be time in months N 27272 won battle for Victoire N 27274 winning year for control N 27276 reflects rivalry between groups N 27277 reflects pressure on companies N 27277 reduce barriers by 1992 V 27278 selling all of operations N 27278 selling all to Allianz V 27278 stressed potential for groups N 27279 bringing properties in transport N 27280 has investments in company V 27282 swell treasury to francs V 27283 bid francs for shares V 27284 offer shares for share V 27285 pending outcome of bid N 27286 publish details of bid N 27287 is one of bids N 27289 striking alliance with management N 27290 buying shares in retaliation V 27295 putting brakes on output V 27296 fell cents to 19.76 V 27299 take toll on prices V 27300 is the of year N 27301 discuss strategy for 1990 N 27303 use amount of crude N 27307 was estimate of damage N 27307 was estimate from company V 27308 put pressure on prices V 27312 fell cents to 1.1960 V 27313 were drop of 10,000 N 27314 made high for day N 27314 made high on opening V 27318 had fall in spite V 27319 buy copper in York V 27323 struggled day despite stories V 27326 have support around 480 V 27330 demanding level of proof N 27332 bring them to market V 27334 rose three-quarters of cent N 27334 rose three-quarters to 4.0775 V 27340 buy tons between 150,000 N 27340 been expectations of purchase N 27346 rose 33 to 1,027 V 27351 expects selling at level V 27352 helped cocoa in York V 27352 took advantage of move N 27354 bought interest in Ikegai-Goss N 27356 remain supplier to Ikegai-Goss N 27356 makes presses for industry V 27361 lower rates in effort V 27364 follow advance in August N 27366 fell points to 2662.91 V 27368 get sell-off in equities N 27377 sell billion of notes N 27378 sell billion of bonds N 27379 shown interest in bonds N 27380 have views about auction V 27381 siphoned buyers from sale V 27382 made debut in market V 27383 offered securities through group V 27384 covering % of deal N 27384 carries guarantee from company N 27385 sweetened terms from estimate V 27387 was offering by Corp. N 27389 were point in trading V 27394 sold billion of bills N 27403 closed point in trading V 27404 be one of credits N 27406 have appetite for it V 27409 restructuring mechanism on portion N 27411 maintain value of 101 N 27415 offered billion of securities N 27415 offered billion in issues V 27418 trailed gains in market N 27420 yielding % to assumption V 27423 was one of offerings N 27424 stimulate activity in market N 27426 attributed that to size V 27427 damped demand for bonds N 27430 drove yields on bonds N 27430 drove yields on bonds N 27433 fueled sentiment about market N 27437 fell point to 99.80 V 27437 fell 0.10 to 97.65 V 27439 rose 1 to 111 V 27439 rose 3 to 103 V 27441 twists face in fury V 27443 has years at A&M V 27444 rim blue of Gulf N 27445 been days of rain N 27446 is everything in sport V 27450 's 8 in morning N 27451 build themselves on water V 27453 puts croaker on hook V 27462 have limit of fish N 27463 are the at dock V 27464 wants life after college V 27466 are towns with atolls N 27469 forms core of Refuge N 27471 shot whooper by mistake V 27477 is place with church N 27478 read sign in pronunciation V 27480 is director of Center N 27481 launch venture for semiconductors N 27481 launch venture in January V 27482 merge activities in field N 27483 hold stake in venture N 27490 supplies transmissions to makers V 27494 reporting profit across board V 27496 planning production with Co. N 27496 planning production of integration V 27497 disclose details of arrangement N 27497 disclose details at conference V 27499 do chores in exchange V 27505 found measure of fame N 27505 found measure in Paris V 27507 had lots of them N 27511 adopted 12 of races N 27514 saved her with offer V 27518 was island in world N 27519 had experience of bigotry N 27522 overemphasize importance of end N 27523 teaches literature at University V 27523 uncovered region for desire N 27523 ignoring centuries of tributes N 27526 raises questions about vision N 27527 was jazz by stretch V 27528 find parallels with Cleopatra N 27529 died days after opening N 27530 made it into Casablanca V 27531 led her to conclusion V 27533 leads sympathizers in Marseillaise V 27534 occupied all of France N 27539 was one of moments N 27542 produce album of drawings N 27545 is editor of Journal N 27546 rid itself of asbestos V 27548 caught eye of investors N 27550 owns % of stock N 27550 owns % on basis V 27550 settling claims with victims V 27551 convert stock to cash V 27552 depress price of shares N 27553 convert shares to cash V 27553 dumping stock on market V 27556 cause recapitalization of shares N 27560 receive million on bond V 27563 settled 15,000 of claims N 27563 settled 15,000 for average V 27566 need infusion of funds N 27573 sell some of shares N 27575 seeking buyer for shares N 27575 seeking buyer before 1993 V 27578 is case of company N 27584 's one of the N 27585 buy companies at the V 27598 requested information from companies N 27598 acquire Corp. for 40 V 27601 anticipate problems with completion V 27603 begun offer for all N 27604 pending resolution of request N 27606 enhance position in portion N 27607 sell stake in unit N 27607 sell stake to fund V 27607 spin operation to shareholders V 27608 places value on operation N 27609 review plan at meeting V 27614 obtain seats on board N 27616 holding seats on board N 27617 raise value of investments N 27618 bought stake in Pacific N 27618 have interests in company N 27624 given seats on boards N 27624 avoid them because concerns V 27625 buy stake in portfolio N 27626 marks commitment to development N 27627 lend Realty in form V 27628 accrue interest at rate V 27629 provide capital for company V 27629 spending cash on payments V 27630 be one of companies N 27631 redirected operations toward development V 27633 repay million in debt N 27633 repay million before spinoff V 27634 reduce debt to million V 27635 obtain payment of million N 27639 holds acres of land N 27640 including acres in area N 27641 be source for development N 27643 negotiated structure of deal N 27643 negotiated structure with Pacific V 27644 represent fund on board V 27644 insulate fund from problems V 27647 be tests of ability N 27647 convince jury of allegations N 27649 pointed finger at Sherwin V 27655 found Bilzerian in June V 27656 spared term by judge V 27659 left reputations of GAF N 27659 left reputations in limbo V 27660 carry penalties of years N 27661 faces fines of 500,000 N 27663 is speculation among attorneys N 27663 include testimony by Sherwin N 27668 claim injuries from device N 27668 hear appeal of plan N 27669 pits groups of claimants N 27669 pits groups against each V 27670 is centerpiece of plan N 27671 places cap on amount V 27672 bars suits against officials N 27673 challenging plan on behalf V 27675 marketed Shield in 1970s V 27676 give protection from lawsuits N 27682 is verdict in case N 27684 insure cleanup of activities N 27685 concerning release of substances N 27688 remove asbestos from building V 27695 fighting execution of mass-murderer N 27695 taken case before Court N 27695 taken case on side V 27696 filed brief with Foundation V 27697 waive rights of review N 27699 appealed sentence in capacity V 27700 is review of sentences N 27702 was one of firms N 27702 displaying bias in work V 27703 give lot of credit N 27705 misrepresented copies of artwork N 27705 misrepresented copies as lithographs V 27706 had value of 53 N 27708 making misrepresentations in sales N 27712 specify nature of differences N 27713 becomes one of executives N 27716 has billion of assets N 27716 is bank in California N 27717 controls % of market N 27728 blamed decline in quarter N 27729 posted rise to million N 27731 included gain of million N 27732 reflected charge of million N 27734 rose % in quarter V 27735 transfer ownership of subsidiary N 27735 transfer ownership to two V 27737 sells all of businesses N 27738 sell right to party V 27742 transfer ownership of subsidiary N 27742 transfer ownership to Lavin V 27743 pump million to million N 27743 pump million into Alliance V 27744 distribute % of Alliance N 27744 distribute % to representatives V 27750 worked Wednesday in Chicago V 27755 prompting Bank of Canada N 27755 sell currency on market V 27756 tracking development on Street N 27756 catch breath of data N 27764 be statistics for time N 27767 sees this as piece V 27769 predict rise in deflator N 27769 climbing % in quarter V 27774 expects reaction from news N 27775 show decline of % N 27775 show decline in September V 27776 follows rise in August N 27777 found bottom at marks V 27791 added 99.14 to 35585.52 V 27793 lost part of gains N 27794 rose points to 35586.60 V 27795 took profits against backdrop V 27801 appraise direction of policy N 27804 providing direction over weeks V 27805 took profits on shares V 27805 shifting attention to companies V 27806 gained yen to yen V 27808 gained 30 to 1,770 V 27809 advanced 40 to 4,440 V 27811 gained 50 to 2,060 V 27812 receiving interest for holdings V 27813 underscored lack of conviction N 27814 signaled support for equities N 27815 pegged support to anticipation V 27816 's case of market N 27818 finished points at 2189.7 V 27819 closed points at 1772.6 V 27820 was shares beneath year V 27821 suggest deficit of billion N 27823 have impact on market V 27824 rose pence to pence V 27828 drawing attention to negotiations V 27829 bring market to levels V 27833 were gainers amid hope V 27833 added marks to marks V 27834 gained 1 to 252.5 V 27835 firmed 2 to 723 V 27835 lost amount to 554 V 27842 make % of capitalization N 27844 sell division to Services V 27845 assume million in debt N 27846 buy million of stock N 27846 buy million at 2.625 V 27846 acquire million of common N 27846 acquire million at price V 27851 is unit of Ltd. N 27853 are guide to levels N 27883 reported loss of billion N 27883 following boost in reserves N 27887 Excluding increase in reserves N 27887 increased % to million V 27890 fell cents to 50.50 V 27891 named president of division N 27894 been president of division N 27894 been president since April V 27895 was division of Co. N 27895 was division before merger V 27900 build factory in Guadalajara N 27901 begin year with production V 27902 have expenses of million N 27903 make line of machines N 27904 has factory in Matamoros N 27905 purchases products from manufacturer V 27910 reflecting million of expenses N 27913 awaits vote on offer N 27916 reported loss of million N 27917 had deficit of million N 27917 had deficit with sales V 27918 declined % from year V 27919 fell 1.125 in trading V 27921 trimmed income to million V 27923 filed suit against state V 27924 is counterclaim to suit N 27925 prevent contamination of hundreds N 27930 seek reimbursement from state N 27935 spraying dispersant on oil V 27936 break slick into droplets V 27936 was part of plan N 27936 banned use during days V 27937 had permission from Agency V 27937 use dispersant during incident V 27941 raised stake in Industries N 27941 raised stake to % V 27942 including purchases of shares N 27943 is company of Morfey N 27947 approved billion in funding N 27947 assist recovery from earthquake N 27947 extend aid to victims V 27948 provoked struggle with lawmakers N 27948 expedite distribution of funds N 27949 forced confrontation between Chairman N 27950 play tone of meeting N 27951 is amount of jealousy N 27954 complete action before tomorrow V 27957 finance loans by Administration N 27960 was factor among Republicans N 27961 crafted package in style V 27961 used force of chairmanship N 27962 underscore range of changes N 27965 faces resistance in bid N 27965 put funds on repairs V 27966 build support in panel V 27967 add million in aid N 27968 puts it in position V 27969 raised cap on loans N 27970 including sale of company N 27972 introduced line for market N 27973 realize potential of technology N 27974 had loss of million N 27975 citing differences with Kurzweil N 27976 indicate improvement over year N 27977 improves yields of manufacturers N 27980 provides services to companies V 27981 attributed improvement to demand V 27982 offer million in paper N 27983 matches funds with leases V 27989 denounced involvement in war N 27996 commemorated anniversary of uprising N 27997 held march through Budapest N 27998 staged protests in cities V 28002 shrouded base before touchdown V 28003 shook plant near Pasadena N 28006 ease differences over guidelines N 28007 notify dictators of plots V 28008 placed forces on alert V 28009 rejected Sunday by Aoun V 28010 convenes session in Portugal V 28011 reshape defenses in Europe N 28011 reshape defenses amid changes V 28012 gain freedom for hostages N 28014 seek clarifications from U.S. V 28016 called views on Africa N 28020 posted profit of million N 28022 attributed decline to softening V 28024 buy shares of the N 28025 distribute 21 in liquidation V 28027 treat dividends as gains V 28030 reduced income by cents V 28032 reduce income for year N 28032 reduce income by cents V 28034 had income of million N 28036 granted stay of action N 28036 guaranteeing loans for Schools N 28037 alleged violations of regulations N 28039 set hearing on action N 28039 set hearing for 30 V 28040 posted bond against losses V 28040 guaranteeing loans for students N 28040 guaranteeing loans to hearing V 28051 enforcing regulations for imports V 28054 has contract with importer V 28055 bring vehicles into compliance V 28056 tightened standards for imports N 28057 report income for quarter V 28058 reported earnings of million N 28059 post revenue for quarter N 28062 were million on revenue V 28064 report income for year N 28065 projected revenue for year N 28066 attributed gains to demand V 28067 cover costs at plant N 28067 reduced income by million V 28068 has sales of million N 28069 earned 774,000 in quarter V 28070 setting million for cleanup V 28070 reduced income by million V 28071 signed decree with Ohio V 28071 build facility at plant V 28072 is one of companies N 28075 purchase over-allotment of units N 28077 viewed offering as defense V 28077 balloons number of shares N 28078 purchase half-share of stock N 28082 quashed prospects for revival N 28084 leave airline with problems V 28086 sank points to 2662.91 V 28090 sell % of unit N 28090 sell % to fund V 28090 spin rest to shareholders V 28091 values operation at billion V 28092 reported loss for quarter N 28093 shed assets in August V 28094 exceeded deposits by billion V 28095 fell % in quarter V 28099 take post at Express N 28100 follows takeover of agency N 28101 restrict use by prosecutors N 28105 dismiss % of force N 28106 renews concern about buyouts N 28107 plans bid for firm N 28109 plunged % in quarter V 28109 reflecting weakness in businesses N 28117 restrict use of charges N 28118 disrupting functions of companies N 28119 harm parties in case V 28120 distributed clarifications to attorneys V 28122 commit pattern of crimes N 28122 commit pattern by means V 28122 forfeit proceeds of enterprise N 28125 is directive to prosecutors N 28125 seize assets from defendants V 28128 was kind of snubbing N 28129 volunteered testimony to Democrat V 28130 investigating failure of Association N 28133 caused apprehension in Senate V 28138 's no-no in book V 28139 attached himself to story V 28144 chaired Committee until 1974 V 28145 conducting business in open V 28146 denouncing affair as meeting V 28149 resume Thursday with testimony V 28150 relieved them of responsibility N 28150 relieved them in 1988 V 28151 expressed concern over report V 28151 discuss testimony in advance V 28158 got glimpse at list N 28160 placed lot of senators N 28160 placed lot in position V 28161 ensure fairness for constituent V 28162 is corporation with holdings N 28163 expresses sympathy for Riegle N 28165 forgotten confrontation over Wall N 28167 trade provisions in legislation N 28169 be understanding on insistence N 28170 holding equivalent of hearings N 28173 raised 20,000 for campaign V 28173 taking side against regulators N 28175 press suit against Keating N 28176 is heist in history N 28176 have Watergate in making V 28182 disputed account of meeting N 28184 inspect damage in Francisco N 28185 started life in Angeles N 28185 started life with 400 V 28186 left Union with 480 V 28186 dropped 80 on suit V 28188 spent 120 for hat V 28189 was time for that N 28192 run company with sales N 28193 become publisher of Movieline N 28193 began distribution with run V 28194 melds archness with emphasis V 28201 keeps track of rest N 28205 wear hats in Russia V 28215 sees party-giving as part V 28216 thrown soirees for crowds V 28219 serves tea at 5 V 28221 catch people after work V 28222 invites directors for clips V 28223 bring movies on tape N 28223 show segments on screen V 28226 has title of co-publisher N 28234 writing column about cuisine N 28234 writing column for Izvestia V 28235 became basis for cookbook N 28240 introduces chapter with quotations V 28244 is person with memories N 28245 was child of privilege N 28249 maintain dignity under circumstances V 28251 remove herself from eye V 28253 obtain permission from husband V 28254 endure hours of abuse N 28258 found work in field N 28268 has warning for companies N 28268 do business in Union V 28272 Doing business with Russians V 28272 become goal of companies N 28273 taking part in exhibition V 28274 stymied deals in past V 28274 show sign of abating N 28277 opened field to thousands V 28279 spearheading attempt by firms N 28279 involving investment of billion N 28280 spends lot of time N 28290 lined day at stand V 28290 receive tube of toothpaste N 28291 knocked showcase in rush V 28293 received orders for toothpaste N 28294 ship million in months V 28297 export some of goods N 28299 buys dolls for export V 28300 share earnings from revenues N 28302 invest capital on basis V 28304 publish journal in conjunction V 28306 containing details of advancements N 28309 given contract for parts N 28310 won contract for parts N 28311 issued contract for systems N 28312 awarded contract for services N 28313 sold one of systems N 28313 sold one to Office V 28316 accept bid of lire N 28316 rejecting offer by A N 28319 completes merger with Venetoen N 28319 completes merger by end V 28326 owns % of Banco N 28329 needed links with company N 28330 reserves right as member V 28332 offered lire for stake V 28336 sell stake in resorts N 28338 estimate debt at billion V 28339 owns % of Australia N 28340 provide details of merger N 28343 shake confidence in Australia N 28344 suspended trading in shares N 28344 answered inquiry about extent N 28345 be response to inquiry N 28346 owes million in loans N 28347 has investment of million N 28348 reduce expense by million V 28349 sold % of resorts N 28349 sold % to Japan V 28350 acquire stake in resorts N 28354 cut flow by million V 28355 cut revenue at resorts V 28355 completing sale of stations N 28356 sued Australia for breach V 28357 reported results for year N 28362 disclosed disagreement among directors N 28363 paid company in year V 28365 approve payments to executives N 28368 market chip with circuits N 28369 fed diet of electricity N 28370 remember data for years V 28371 retain data without electricity V 28373 shipping quantities of chips N 28375 getting technology from Corp. V 28376 shipping quantities of chips N 28377 take part of market N 28378 require steps than chips N 28380 accept data at speeds V 28383 give depositions before reporters V 28387 allow depositions by television N 28388 connects Dallas with Miami V 28389 set shop in Chicago V 28389 tie rooms into network V 28391 use network for fee V 28391 take depositions from witnesses V 28392 Reverse Tack On Protection V 28393 been point for makers N 28395 been responses to suits N 28399 accuses Motorola of turnabout V 28401 made charges in amendment V 28401 sued Hitachi for violation V 28410 splits image into representations V 28411 citing sales of goods N 28411 dropped % for quarter V 28412 represented quarter of earnings N 28412 represented quarter for retailer V 28413 fell 1.375 in trading V 28416 had shares at 30 V 28420 offset problems at Shack N 28421 grew % in quarter V 28422 cut estimate for Tandy N 28423 earned million in year V 28424 are less-advanced than computers N 28425 added products to line V 28425 focusing advertising on software V 28429 delivered message about market N 28429 delivered message to officials V 28432 is year for market N 28434 has following of investors N 28435 stem fallout from defaults N 28437 is shakeout in market N 28441 received month from Corp. V 28442 put chain for sale V 28444 acknowledged problems for junk N 28450 been selling of bonds N 28451 been sellers of bonds N 28451 been sellers of losses V 28452 been sellers of bonds N 28452 produced redemptions by shareholders N 28455 were sellers of holdings N 28455 were sellers throughout quarter V 28458 have lack of liquidity N 28465 owns million of bonds N 28466 been cause of problems N 28468 caused furor on Street N 28468 show correlation with findings N 28469 had rate of % N 28471 include offerings by Industries N 28475 sold billion of bonds N 28475 sold billion for Co. V 28476 dwarfs that of firm N 28480 reeled names of pals N 28482 has lot of members N 28483 mention any of them N 28484 has way with names V 28487 lived door to cartoonist N 28490 be avenue of entrance N 28491 provides sense of affiliation N 28491 open conversation with someone N 28493 having drink in Sardi V 28494 followed her into room V 28501 changed name from Stretch V 28502 get me into trouble V 28502 gotten access to society N 28505 dropping five in diaries V 28507 're the of friends N 28509 flaunt friendships with Trumps N 28510 drop names like Flottl N 28511 's one-upsmanship of name-dropping N 28513 link municipality with names V 28515 set hair on fire V 28516 call Mistake on Lake N 28518 owned store in Cleveland N 28518 played witch in Wizard V 28518 ran school in Cleveland N 28521 sold house in Nuys N 28527 do it with malice V 28528 get attention of journalists N 28529 leaves messages with office V 28529 has story on Trump N 28530 has story on any V 28532 are dangers to name-dropping N 28533 labels dropper as fake V 28549 runs miles along Parkway V 28554 spawned explosion of choice N 28554 spawned explosion in America V 28560 causing stress among consumers V 28561 be brands from makers N 28569 pull boat at time V 28570 take grandkids to lake V 28572 make car for purpose N 28573 are cars for purpose N 28574 divided market into segments V 28576 is market for automobiles N 28578 counter invasion with brands V 28580 created nameplate in 1985 V 28580 sell sedans in U.S V 28584 asked consumers about habits V 28589 prefer cars by % V 28590 aged 18 to 44 N 28595 get mileage than models N 28604 established section in department N 28605 test-drive Volvo to dealership V 28610 felt way about bags N 28613 has lot of attraction N 28614 offering engine on model V 28616 exceeded sales of billion N 28618 lay 75 to technicians N 28621 find holes in yard V 28622 adding insult to injury V 28624 bringing bucks to crooks V 28625 are versions of palms N 28628 damaged Sagos at home N 28630 dig plants in dead V 28630 selling them to landscapers V 28631 become accent in tracts N 28631 giving market for fronds N 28632 plant things in yard V 28634 want gardens out front V 28635 put stake in ground V 28635 tied tree to stake V 28636 cut chain with cutters V 28638 making figures in 1988 V 28643 describes variety of strategies N 28643 involving sale of basket N 28644 sell baskets of stocks N 28644 offset position with trade V 28645 's form of trading N 28645 create swings in market N 28646 was trader in September V 28647 reported volume of shares N 28651 filed suit against Corp. V 28653 experienced writedowns because assessment V 28658 defend itself against suit V 28660 charged directors with breach V 28663 had change in earnings N 28665 compares profit with estimate V 28665 have forecasts in days V 28667 completed purchase of operation N 28668 has sales of million N 28669 release terms of transaction N 28670 rose % in quarter V 28671 lowered stake in concern N 28671 lowered stake to % V 28674 position itself in market V 28674 transform film into video V 28678 face shortage of programs N 28678 replacing sets with HDTVs V 28685 watching movie on set V 28686 are link between film N 28690 be demand for 4,000 N 28692 is shoulders above anything V 28696 total billion over decades V 28697 break images into lines V 28698 resembling dimensions of screen N 28702 turn business into dinosaur V 28706 revealing some of aspects N 28707 plan investigation at end V 28708 pursue matter in hope V 28709 is kind of beast N 28712 is form of gambling N 28713 changed hands in scandal V 28716 faced threat of restrictions N 28717 maintain ties with organizations N 28721 took root as entertainment V 28722 created industry with income N 28726 keep track of income N 28727 split industry in two V 28728 donated money to members V 28729 win support in battle N 28729 laundering money between JSP V 28733 received donations from organizations V 28736 received yen from organization V 28737 received yen from industry V 28737 including yen by Kaifu N 28742 occupied Korea before II V 28742 faces Koreans in society N 28747 had tickets for recital N 28748 begun studies at age V 28749 give damn about basketball V 28754 gives recital at Center V 28756 was part of pack N 28757 joined roster of Inc. N 28757 joined roster at age V 28764 prove myself to her V 28769 put hands on hips V 28775 compliment me on intonation V 28776 discovered predilection for composers N 28777 winning competition with performance V 28777 play work for composer V 28778 performed work with accompanist V 28780 's motif throughout movement V 28786 bring orchestra at point V 28791 won kudos for espousal V 28792 make interpreter of works N 28799 finds satisfaction in music V 28799 puts it during interview V 28803 is writer in York N 28806 damp economy at time V 28810 hit high of % N 28821 boost stock of debt N 28822 consider distribution of credit N 28823 Citing figures on loans N 28825 improves value of property N 28832 putting economy at risk V 28834 enjoys one of images N 28842 is part of culture N 28844 getting control of distribution N 28846 wear uniform of day N 28847 precipitated resignation of Lesk N 28848 named officer of Co. N 28851 spending years at Maidenform V 28852 want presidency of company N 28852 named president of sales N 28852 assuming some of responsibilities N 28853 downplayed loss of Lesk N 28853 split responsibilities among committee V 28863 are forces in apparel N 28866 command price in market N 28870 has vote at meetings V 28874 designed bra in 1920s V 28877 has facilities in U.S. V 28878 has outlets with plans V 28879 joining Maidenform in 1972 V 28879 holds degree in English N 28880 headed division since inception V 28881 maintain exclusivity of line N 28883 succeeded Rosenthal as president V 28886 cover months of imports N 28890 taken toll on reserves N 28891 marked drop from billion N 28893 slammed brakes on spending V 28894 faces battle because forces V 28897 measures trade in services N 28898 suggests number of scenarios N 28900 had deficit of billion N 28901 takes actions in months V 28902 finish year with deficit V 28903 stem drain on reserves N 28904 suspended loans to China N 28906 forecasting slowdown in investments N 28913 rose % in months V 28914 reported gains in all N 28915 expects rise in profit N 28916 closed acquisition of Co. N 28918 had sales of million V 28919 is partnership with interests N 28920 was feet over Minnesota N 28923 ground him for repairs V 28923 skipped stop in Chicago N 28923 get load to hub V 28924 gotten thing on ground V 28927 delivering goods on time V 28928 are tribute to management N 28928 had way with force V 28930 elect Association as agent V 28931 bring union to operations V 28931 pitted hires against veterans V 28934 have losers except competition V 28936 reconcile melding of classifications N 28937 face elections among mechanics V 28939 have effect on culture V 28940 leaves room if any N 28941 fostered ethos of combat N 28944 surpass call of duty N 28947 vent steam through procedure V 28948 gives talks in briefings V 28958 stretching schedules to limit V 28961 given leg on Inc. N 28962 prohibit drivers from doing V 28963 load vehicles at depot V 28966 thrust company into territory V 28966 expanded rights to countries V 28968 fly planes on routes V 28971 squeezed margins to % V 28973 fell % to million V 28976 closed Friday at 53.25 V 28977 's irony in fact V 28977 faces problems as result V 28978 airlifted supplies over Hump V 28979 modeled company on innovation V 28981 acknowledge mistakes in drive N 28984 is the of problems N 28985 encouraging dialogue between workers N 28986 called meeting in hangar N 28989 battled management for years V 28989 were members until day V 28990 fired time without notice V 28993 seal deal with Chairman N 28997 identifying vote for representation N 28997 identifying vote as vote V 28999 appeared weeks in videos V 29003 manage operations with advice V 29008 cost lot of will N 29016 endure harangues by pilots N 29020 obtained order for vehicles N 29024 produces products for markets N 29025 convicted Judge of articles V 29025 removing judge from job V 29029 convict Hastings of perjury N 29030 remove Hastings from office V 29033 handling prosecution in Congress V 29034 protect institutions from people V 29034 abused positions of trust N 29039 was one of judges N 29040 packed gallery with supporters V 29040 kept distance from case N 29041 respect judgment of Senate N 29042 racked numbers in miniseries V 29045 are plenty of inspirations N 29048 seems franchise for series N 29049 pokes styles of the N 29057 been victim of incest N 29060 tailing them as subversives V 29063 were chauffeurs for Hoover N 29065 describes reporter as Amendment V 29066 describes corpse as Williams V 29071 revved show to point V 29072 gets hold of this N 29076 explaining anything to Kennedy V 29076 chasing cars in Anchorage V 29081 built career on hate V 29083 turn world into dump V 29084 was crime against humanity N 29087 have series with character V 29089 add pizzazz to script V 29093 attends unveiling of memorial N 29096 was moment for television N 29097 's program inside noise V 29099 put spin on it V 29107 purchased company in Texas N 29107 purchased company for million V 29108 acquired Corp. for million V 29109 holds properties in fields N 29109 provide Texaco with reserves V 29110 contain reserves of feet N 29111 is indication of commitment N 29113 put barrels of reserves N 29113 put barrels on block V 29120 settled fight with Pennzoil N 29120 settled fight for billion V 29121 played role in settlement N 29121 take control of company N 29121 sold stake in Texaco N 29123 reduced distribution for trust N 29126 had income of million N 29129 borrowed quote from writer V 29129 wrote words in Book V 29131 had surplus of billion N 29133 follows declines in figures N 29136 give some of independence N 29136 give some to knight V 29137 leave speculators with losses V 29138 giving value of francs N 29139 owns % of AG N 29140 owns % of AG N 29145 acquired control of Victoire N 29148 exploring plans for acquisitions N 29148 called managers of companies N 29149 acquiring shares of AG N 29151 holds % of AG N 29151 give right of refusal N 29153 raise stake in AG N 29155 excited interest in AG N 29156 constitute portfolio in Belgium N 29157 do job of coordinating N 29159 was member of Commission N 29161 gathering views of Department N 29161 distilling information for president V 29162 leaving execution of policies N 29162 leaving execution to Department V 29168 diminished role of NSC N 29169 sensed need in world N 29173 is one of problems N 29178 underscored inadequacy of staff N 29179 are experts in affairs N 29181 become confidants of Bush N 29182 has background in America N 29186 fell % from days V 29188 admitting role in scandal N 29189 was director for Sperry N 29190 left Navy in 1985 V 29191 took place between 1982 V 29193 computerize maintenance of equiment N 29194 give advantage in competition N 29196 requested approval of scheme N 29196 requested approval from officials V 29203 offered 5,000 for story V 29204 sent thousands of releases N 29204 sent thousands from office V 29209 offered each of runners-up N 29213 get nominations from folks V 29214 generating publicity for contest N 29225 broke talks about alliance N 29226 intensify pursuit of maker N 29227 continue search for ally N 29228 have contacts with manufacturers V 29230 make sense to parties V 29232 seen alliance as way V 29232 expand presence in markets N 29233 discussed link between operations N 29235 surrendering any of autonomy N 29238 plunged % to kronor V 29240 became foundation of model N 29241 had talks with Fiat N 29242 make announcement about it N 29243 focus resources on struggle V 29245 faces fight for Jaguar N 29246 have alliance with GM V 29247 touring operations in Detroit N 29249 views Jaguar as prize V 29249 give leg in end N 29250 encountered setback in effort N 29250 market sedan in U.S. V 29251 boosted holding to % V 29252 changed hands in trading V 29253 rose cents to 11.125 V 29259 signed him in April V 29261 fires pass into hands V 29265 was the in string N 29267 ended million in red N 29268 has some of costs N 29270 take comfort in fact V 29276 have kind of stream N 29279 represent breed of owner N 29280 buying % of team N 29280 buying % from Bright V 29281 took Cowboys to Bowls V 29285 cut staff by half V 29286 calls Pentagon of Sportdom N 29291 see place for sort N 29296 posting seasons in each V 29302 led Hurricanes to seasons V 29308 trading back to Vikings V 29309 dropped prices from 25 V 29310 given costs in league N 29311 raised year by 2.40 V 29313 included rights for stadium N 29314 offer view of field N 29315 taking owners onto field V 29315 buy one of rooms N 29315 promises look at strategy N 29315 promises those before time V 29318 are source of cash N 29319 is contract with television N 29322 jack price for rights N 29323 get stations in Mexico N 29325 played part in wars N 29326 signing Aikman to contract V 29326 pay quarterback over years V 29333 boost profit in ways V 29337 have lease in NFL N 29340 imposed limit on teams V 29344 expand offerings to companies V 29347 fighting bureaucracy for say V 29347 produced form of gridlock N 29348 install Finks as replacement V 29354 keep schedule on track V 29354 flies secretaries from Rock V 29354 augment staff in Dallas N 29355 made it on basis V 29363 use form of journalism N 29363 explain perception of Days N 29364 chastises Franklin-Trout for presentation V 29371 contain comments from Israelis N 29372 doing documentary on apartheid N 29373 tracing conflict to days V 29377 endure rash of critics N 29377 know details of side N 29383 need permission from Office N 29393 completed purchase of Corp. N 29395 is subsidiary in Wisconsin N 29396 signed letters of intent N 29397 monitor condition of companies N 29397 facing opposition from firms N 29398 be focus of hearings N 29399 give authority during emergencies V 29400 monitor levels at companies N 29401 provide financing for acquisitions N 29402 renewed concerns among regulators N 29405 is one of issuers N 29407 divert resources of commission N 29407 divert resources from broker-dealers V 29409 support concept of disclosure N 29413 organized series of exchanges N 29418 share belief in principles N 29422 provide excuse for departures N 29423 make distinctions among Fidel N 29425 equate policies with will N 29425 merge agendas of Fidel N 29426 resisted collaboration with officials N 29427 violate jurisdiction of government N 29428 follow fact than rhetoric V 29430 deny access to things N 29431 is justification for behavior N 29434 adjust estimate for split V 29435 was % than average N 29438 represents percentage of debt N 29438 unload bonds by spectrum V 29440 has blocks of maturity N 29442 confirm size of issue N 29444 expected amount of bonds N 29445 issue amount of debt N 29446 sold million of bonds N 29451 follows warning from Comptroller N 29455 project gap on order N 29457 charges critics with spreading V 29463 knew outcome of election N 29464 been number of questions N 29466 quoted Friday at price V 29473 provide it with million V 29474 owned % by Australia V 29475 sank 2.625 in trading V 29479 repay million in debt N 29480 terminating agreement on The N 29480 Leave It to Beaver V 29487 following breakdown of talks N 29487 re-evaluating position as shareholder N 29487 minimize degree of loans N 29491 has investment in Entertainment N 29492 pay billion than 1 N 29494 was director of company N 29496 made bids for studio N 29498 is topic of conversation N 29499 provide services in languages V 29500 playing role in fall N 29503 are facts behind assertions N 29503 sent kind of signal N 29504 were statement on subject N 29504 control events in markets N 29508 changed posture on deal N 29511 has judgment on risks V 29515 played part in decision N 29518 been speculation in circles N 29521 pull horns on buy-outs N 29524 curry favor with bureaucrats V 29528 cool some of fever N 29534 is grade than grade N 29537 soared % to francs V 29540 introduce system for parking N 29541 putting money in machines V 29544 is partner in project N 29547 lost bidding to group V 29553 introduced cigarettes under label V 29554 win share from cigarettes V 29555 have driving on minds V 29556 had impact on activities N 29557 were part of cases N 29558 reinstated preamble of law N 29562 has bearing on laws V 29563 throw charges against demonstrators N 29563 blocked access to Services N 29569 left room for grass N 29569 is one of cracks N 29570 recognized right to abortion N 29571 escape prosecution for trespass N 29572 's risk to protesters N 29573 be result of case N 29578 imprisoning fetus of woman N 29582 stabbing people to death V 29582 are a of activities N 29587 has years of experience N 29587 investigating abuses on sides N 29588 are part of drama N 29588 affecting positions of both N 29593 fight rebels of Movement N 29596 maintain contact with world N 29598 held gridlock over Ethiopia V 29598 accept runway as 2 V 29602 threatening town of Dese N 29602 cut capital from port V 29603 transfer thousands of troops N 29603 transfer thousands from Eritrea V 29603 risking loss of territory N 29603 keep Tigreans at bay V 29604 defending city of Asmara N 29604 defending city from Eritreans V 29608 strike blow for rights N 29608 undo flip-flop of 1970s N 29609 distancing itself from Barre V 29618 positions itself for period V 29618 back role as mediator N 29618 opening channels of communications N 29618 opening channels through Sudan V 29619 are the in all N 29626 got contract for systems N 29627 received contract for cones N 29628 awarded contract for parts N 29629 awarded contract for support N 29630 was 0.628394 on offer N 29632 is manager of partnerships N 29633 buy shares from group V 29633 boosting stake to shares V 29634 rose % in September V 29635 followed boosts of % N 29636 cast shadow over markets V 29647 puts capacity at million V 29649 estimated capacity at barrels N 29650 keep markets on edge V 29654 get shares of increases N 29656 approved increase of barrels N 29658 legitimize some of overproduction N 29660 accept reduction in share N 29663 promised parity with Kuwait N 29665 be basis for discussion N 29667 reducing shares of others N 29671 left percentage of total N 29671 increased volume to barrels V 29673 's reduction in share N 29674 maintaining share of production N 29677 sharpen debate within establishment N 29680 protect carriers from attack V 29681 buy F-18s from Navy V 29682 is attack on Rafale N 29684 criticize Rafale as plane N 29685 made secret of preference N 29686 inflame dispute within establishment N 29688 is result of inability N 29688 develop plane with countries V 29690 brought issue to head V 29692 heightened pressure for planes N 29694 represent protection for carriers N 29694 meet crises as wars N 29695 told meeting of Association N 29703 eased % to yen V 29705 posted drop in profit N 29710 play fiddle to carrier V 29713 transform itself from carrier V 29715 earned Kong on revenue N 29719 expand fleet to planes V 29720 replace fleet of Tristars N 29720 replace fleet for flights V 29721 moving some of operations N 29721 moving some outside Kong V 29722 pushing costs by % V 29722 leaving colony as part V 29723 place others in Canada V 29724 secure passports of 1997 N 29725 promote Kong as destination V 29727 attracting visitors from Japan V 29730 sees alliances with carriers N 29730 sees alliances as part V 29734 put funds into business V 29738 coordinate extensions to Boston N 29741 double flights into China N 29741 double flights to 14 V 29741 restart flights into Vietnam N 29743 is option for Cathay N 29743 jeopardize rights in Kong N 29744 rules move to London N 29745 putting faith in agreement V 29748 have hope in run V 29752 increase cap to % V 29756 are guide to levels N 29789 restricting access to structures N 29790 weaving way along street V 29792 shakes head in amazement V 29797 offered response to disaster N 29799 offered brie for breakfast V 29802 finds response of residents N 29805 allowed hunt through possessions N 29812 dumped belongings into pillowcases V 29812 threw goods out windows V 29824 become point of efforts N 29824 reunite residents with pets V 29825 offering reward for cat N 29826 providing care for animals V 29827 sought homes for fish V 29831 resembles sections of cities N 29834 been burglary in mall V 29839 offering merchandise at prices V 29843 improves image to outsiders V 29843 arrest exodus of investment N 29844 is creation of jobs N 29846 created jobs at cost V 29849 receives % of profits N 29850 had effect on neighborhood V 29851 been area with shops N 29851 experiencing upgrading in stock N 29854 have models than kingpins N 29856 putting one of deals N 29863 are three to times N 29864 has nest above roofs V 29867 has force of personnel N 29867 has force on duty V 29868 is % to % N 29872 encourage investment in areas N 29872 encourage investment with requirements V 29873 identifying sources of funds N 29875 represent market for investment N 29878 encourage development in areas N 29880 is researcher at Department N 29881 redeem amount of 59.3 N 29883 notify holders of notes N 29885 join Board from market V 29887 trades shares of interest N 29889 join Thursday under HIB V 29891 started OTC with symbol V 29894 operates types of facilities N 29897 sell security at price V 29899 begin offer of 12.25 N 29902 includes million of debt N 29903 buy % of shares N 29904 is operator of facilities N 29904 had sales of million N 29905 is operator in facilities N 29907 regains glamour among investors V 29912 be return to growth N 29918 use spurt in issues N 29921 is performance in economy N 29922 get valuations of stocks N 29923 pay prices for companies V 29928 took seat to flow V 29937 play part in decisions N 29938 added Medical to list V 29941 rose % in 1987 V 29942 follows stock for Quist V 29942 grow % to 2.15 V 29945 eased 0.13 to 470.67 V 29947 was week for stocks N 29949 lost 3 to 17 N 29949 lost 3 on volume V 29951 lost 1 to 106 N 29952 lost 7 to 1 N 29952 had loss in quarter N 29955 jumped 1 to 47 N 29956 dropped 1 to 21 N 29958 began trading at 12 N 29962 plummeted 1 to 7 V 29963 perform studies on device N 29964 dropped 5 to 1 V 29964 seeking protection from lawsuits N 29964 seeking protection under 11 V 29965 lost 1 to 10 V 29965 cover charges in connection N 29968 added 5 to 110 V 29968 lost 1 to 41 V 29969 secured commitments from banks N 29969 finance bid for million N 29970 entered pact with BellSouth N 29971 Following release of earnings N 29971 dropped 3 to 48 V 29972 including million from sale N 29975 give value of 101 N 29977 receive equivalent of % N 29979 retire % of issue N 29979 retire % before maturity V 29982 buy shares at premium V 29984 expects loss of million N 29985 have loss for quarter N 29986 took provision for losses N 29987 charged million of loans N 29987 leaving unit with reserve V 29989 capped spurt of news N 29989 challenging reign as graveyard N 29991 reported plunge in income N 29992 surged a to million V 29994 do something about it V 29996 raising recommendation to million V 29997 was part of valor N 30002 had liabilities of a N 30003 had loss in quarter N 30005 had million of loans N 30008 have reserves against estate N 30009 had loss of million N 30010 recovering cents to cents N 30010 recovering cents on property V 30010 sell it at all V 30011 is result of one N 30012 poured money into buildings V 30013 has supply of space N 30014 knocked some of buildings N 30021 is S&L in state V 30022 see wave of defaults N 30025 reported income of million N 30025 including million from changes N 30027 plummeted % over year V 30031 undertaken restructuring in effort V 30033 lowered ratings on debt N 30034 lowered ratings on issues N 30035 reflect slide in condition N 30036 withstand downturn in estate N 30039 is version of protein N 30040 directs function of cells N 30043 turn part of response N 30044 is one of receptors N 30053 has near-monopoly on part N 30053 surpass Corp. as firm V 30054 dominates market for drives N 30055 soared % to million V 30057 jumped % to million V 30059 reach million on sales V 30061 achieved level of sales N 30063 benefited spread of computers N 30063 consume electricity than drives N 30064 controls % of market N 30066 had field to themselves V 30068 is supplier of drives N 30068 introduce family of drives N 30074 uses watts of power N 30081 supplying drives for machine V 30082 targeted market for machines N 30082 use power than those N 30083 boosted demand for computers N 30084 makes drives for computers N 30084 is supplier to Compaq N 30084 owned % of stock N 30088 touts service as hour V 30089 franchise it in states V 30090 have access to transportation V 30091 lure clients to doorstep V 30094 offers equivalent of visit N 30095 explaining areas of law N 30096 refer people to lawyers V 30097 refers call to one V 30100 refer client to firm V 30107 convicted them of extortion V 30107 obtaining loan from officer V 30108 obtaining payments from Garcia V 30110 is the of prosecutions N 30114 preserving interests of constituents N 30115 was member of staff N 30116 involving receipt of gratuities N 30117 set sentencing for 5 V 30124 held number of discussions N 30129 file complaints against them V 30131 allow participation in proceedings N 30131 open hearings to public V 30132 appreciate nuances of relationships N 30133 publishing names of lawyers N 30133 subjects them to derogation V 30138 pay fine to Delaware V 30141 made settlement with Commission N 30142 try hand at work V 30148 be blow to Rich N 30149 been one of campaigns N 30151 scaled spending on brand N 30151 bills million to million N 30154 is 7 in business N 30156 launched contest for readers N 30160 emerged victor of review N 30162 picked million to account N 30162 lost number of accounts N 30167 registered 6.9 on scale N 30169 connecting city to link V 30170 runs trains beneath bay V 30171 increased service to hours V 30181 raised specter of restaurants N 30182 raised hackles of boosters N 30184 stuck estimate of billion N 30185 increased estimates to billion V 30188 is miles of highway N 30189 provided series of exits N 30191 including all of high-rises N 30195 estimate claims from disaster N 30198 ask Congress for billion V 30199 add billion to fund V 30200 raise money for relief N 30201 restrict ability of legislature N 30203 posted loss for 1989 N 30205 posted loss of million N 30206 rose % to billion V 30207 jumped % to million V 30208 has interests in brewing N 30212 dived % to million V 30215 cap year for Bond N 30216 controls % of company N 30218 sold billions of dollars N 30220 taken it on chin V 30224 be group in structure N 30225 cited list of assets N 30237 shot times in back V 30240 creating focus for life N 30241 is one of thousands N 30242 suffer injuries from crime N 30243 have rates of injury N 30244 show part of problem N 30246 is example of city N 30247 conducted spring by Interface V 30267 minimize cost of crime N 30268 was 1,000 per worker N 30269 created economies of scale N 30270 invoke law of trespass N 30270 regulate access to places N 30276 put police on patrol V 30278 is frustration of alarms N 30281 raises barriers to entrepreneurship N 30282 giving priority to patrols V 30283 losing business to centers V 30283 keep taxes within limits V 30285 testing effects of strategy N 30285 comparing value with patrols V 30288 saved life of Ortiz N 30291 purchase share at 6.27 V 30293 reduce debt to levels V 30293 finance investments with capital N 30296 was kind of action N 30299 's lesson for investors N 30302 shielded investors from the V 30306 be basis for decision N 30309 kicking tires of car N 30311 fell average of % N 30312 were number of ways N 30312 cushioned themselves from gyrations V 30313 posted decline of % N 30314 allocate investments among investments V 30316 gives benefits of diversification N 30316 including boost during periods N 30317 declined % in week N 30321 turned return of % N 30322 risen % on average V 30325 putting 5,000 in 500 V 30327 was fund for week N 30329 appreciates % over cost N 30330 was % in cash N 30331 buying companies at prices V 30337 's lot of unsettlement N 30339 giving benefit of translations N 30344 posted returns for year N 30345 following problems with financing N 30352 had a into funds N 30354 showed power in fact N 30359 taking stake in business N 30359 taking stake as part V 30359 create range of linkages N 30368 attract notice for quality N 30370 put some of ideas N 30370 put some into practice V 30372 designing stage for show N 30377 sell model of center N 30385 limit emission of formaldehyde N 30387 plant forest at cost V 30388 moved others in profession N 30389 designing redevelopment of Square N 30389 carry it to extreme V 30392 attended schools in places N 30393 earned degree in architecture N 30393 earned degree from Yale V 30398 restored plants in Vermont N 30399 designed one of houses N 30400 was design for headquarters N 30401 took feet of building N 30403 reduce it at building V 30403 rubbed beeswax of polyurethane N 30403 rubbed beeswax on floors V 30412 visited office for meetings V 30417 makes use of aluminum N 30418 planted acorns around country V 30419 awaits approval by officials N 30421 recruited him as architect V 30422 provide space for equipment N 30422 doing business in Europe V 30431 reflecting impact of strike N 30434 slipped % to million V 30436 spent million for security V 30452 had chance for upset N 30457 's nothing on side V 30458 put Bush in House V 30461 keep commercials on air V 30463 began campaign with hopes V 30469 direct anger at each V 30471 defeated Koch in primary V 30479 is undertone to effort N 30483 sought support of parties N 30484 is fancy'shvartzer with moustache N 30485 is word for person N 30486 concedes nothing in ability V 30487 match Mason with Carson V 30488 get vote on day V 30494 paid tax for years V 30496 sold stock in Co. N 30496 sold stock to son V 30498 avoid problems in role N 30501 follows pattern as returns N 30504 's difference between value N 30509 had history of deception N 30512 surrounding collapse of Ambrosiano N 30516 paid million to creditors V 30517 obtained lire in checks N 30517 obtained lire from official V 30518 exonerating bank from blame V 30518 channeled funds to groups V 30523 fill seat of chairman N 30524 surrounding contracts at unit N 30527 write million against contracts V 30528 take allegations of fraud N 30530 pursue action against those N 30531 sell million in assets N 30531 strengthen itself in wake V 30534 pay million for interest V 30534 putting million for stake V 30536 made owners of franchise N 30537 fell week for lack V 30538 resigned post with Inc. N 30539 distributes programs to rooms V 30539 add games to offerings V 30541 filed suit in court V 30542 owns stake in Realist N 30543 disclose information to stockholders V 30545 buy Realist for 14.06 V 30548 slashed dividend in half V 30549 had loss of million N 30550 had deficit of million N 30554 seen decline from sales N 30556 fell % to million V 30557 attributed decline to concern V 30558 follows industry for Co V 30559 's concern about economy N 30560 expects sales for all N 30560 fall % from 1988 V 30560 were the since 1978 N 30565 falling cents to 5.25 V 30568 had loss of million N 30568 following profit of million N 30569 rose % to million V 30571 release batch of reports N 30575 provided boost for bonds N 30580 produced return of % N 30585 ease stance without risk V 30587 charge each on loans V 30587 considered signal of changes N 30589 ended Friday at % V 30591 Given forecast for rates N 30594 be demand for paper N 30595 sold billion of securities N 30596 boost size of issue N 30596 boost size from billion V 30597 operates one of systems N 30598 auction billion of securities N 30599 sell billion of bills N 30599 sell billion at auction V 30600 sell billion of notes N 30601 sell billion of bonds N 30603 shown appetite for offering N 30608 yielding point than bond N 30612 is constraint to market N 30618 providing support to Treasurys V 30624 price offering by Inc N 30629 had trouble with Western N 30629 have time with rest N 30632 priced issue of debentures N 30632 priced issue at par V 30633 give value of 101 N 30635 receive equivalent of % N 30636 induce some of players N 30637 put price on deal V 30639 fell 1 to point V 30641 auctioned estate of Jr. N 30641 auctioned estate for million V 30643 provided guarantee of million N 30643 taking interest in property N 30650 make refunds to advertisers N 30653 obtained commitments from banks V 30657 buy shares of LIN N 30657 buy shares for 125 V 30657 owning % of concern N 30658 merge businesses with Corp V 30660 coerces women into prostitution V 30665 enforce decision by conference N 30665 ban trade in ivory N 30666 file reservation against ban N 30667 use % of ivory N 30668 close Tower of Pisa N 30668 's danger to tourists N 30670 make climb up steps N 30673 reducing stocks of liquor N 30673 displaying them in window V 30674 built center for immigrants N 30676 halted transfer of immigrants N 30677 demanded halt to televising N 30679 have suntan by Christmas V 30682 take one of options N 30683 reduce principle on loans N 30683 cut rate on loans N 30684 prefer losses to risk V 30685 taken provisions for loans N 30685 taken provisions to nations V 30686 take hit to earnings N 30689 put Gorbachev in place V 30690 issued times by publisher V 30692 fell % to % V 30693 attributed decline to effects V 30695 exceed million in 1988 V 30697 had profit of million N 30698 be million to million N 30699 reflect results of unit N 30700 is season for business N 30700 use goods as items V 30705 reflecting number of measures N 30706 been maker of printers N 30706 grabbed share of market N 30707 reduce % to % N 30707 improve delivery of orders N 30707 improve delivery to % V 30707 lower number of hours N 30708 moving design of products N 30709 install displays at outlets V 30709 bolster awareness of brands N 30710 makes gadgets at factories V 30713 seek acquisitions in industry N 30719 sells chemicals to factories V 30724 attributed slump to disruptions V 30727 bearing brunt of measures N 30733 cut funds from factories V 30735 dealing blow to trading V 30737 grew % to billion V 30739 grew % to billion V 30743 recentralized trading in wool N 30744 monitor issue of licenses N 30746 buys goods from China V 30753 process letters of credit N 30753 settling letters at speed V 30753 dispel rumors about health N 30755 weakened power of companies N 30757 is financier for business N 30758 tapped market for funds V 30761 make funds for purchases N 30764 means business for us N 30767 extended clampdown on imports N 30767 extended clampdown beyond target V 30771 bought goods at prices V 30771 take loss on resales V 30776 spur drive for laws N 30776 protect victims of accidents N 30777 highlights shortcomings of Fund N 30777 gets money from companies V 30778 spilled gallons of oil N 30778 spilled gallons into Inlet V 30779 filed suit in court V 30781 pay million in damages N 30788 seek reimbursement from operator N 30789 is kind of Catch-22 N 30791 starting jobs with firms N 30793 teach bolts of lawyering N 30794 learned basics from lawyers V 30796 enables students by playing V 30797 treat staff with respect V 30800 defend clients against offers V 30802 Creates Courthouse for Kids N 30813 get kids from criminals V 30818 's conclusion of study N 30819 earned average of 395,974 N 30821 earned average of 217,000 N 30822 assist recovery from earthquake N 30822 extend aid to victims V 30826 waiving restrictions on use N 30826 shift money within package V 30826 bolster share for Administration N 30828 Meet Needs of Disasters N 30829 be charge against Act N 30830 lowered ratings of million N 30831 have effect on us V 30832 affect value of bonds N 30833 lowered ratings on million N 30834 lowered ratings of million N 30841 scaled reaches of success N 30842 is look at way N 30844 seen chance at commission N 30850 dogs aspect of lives N 30851 finds 30,000 in account N 30855 find way between extremes N 30856 making specimens of generation N 30858 feel pangs of recognition N 30859 provide material for fiction N 30860 tells story of company N 30860 faces attempt by AIW N 30860 constitute joke in world N 30862 providing muscle for deal N 30863 invest tale of wars N 30863 invest tale with characters V 30864 has elements of allegory N 30865 depicts qualities with strokes V 30866 undermine force of perceptions N 30869 be TV of tomorrow N 30870 ceded segment of business N 30870 ceded segment to Japan V 30871 build screens for televisions N 30872 enjoy backing from government N 30873 use form of technology N 30873 put images on display V 30875 had success in electroluminescence N 30878 Replacing tube with screen V 30878 is key to creation N 30880 exploit advances in panels N 30881 sold interests in displays N 30881 sold interests to Thompson-CSF V 30884 manufacture panels at costs V 30887 is million in awards N 30892 put it to use V 30893 develop panels at labs V 30897 has claim to right N 30900 question need for support N 30900 justifies help on grounds V 30901 see source for some N 30901 's source of concern N 30903 transmitting information to commanders V 30904 ordering displays for cruisers V 30904 wants versions for tanks N 30910 reflect concern over future N 30913 sell panels in Japan V 30916 built stake in company N 30918 merged operations with those V 30918 owns % of Calor N 30919 held discussions with SHV N 30921 asked Harbors for information V 30922 including town of Braintree N 30927 involves collection of receivables N 30928 has billion in sales N 30931 is successor to Board N 30931 was announcement of action N 30933 banned insider from institutions V 30941 post loss of 879,000 N 30942 had loss of 199,203 N 30944 catch wave of performers N 30947 were shares of companies N 30949 producing surprises than ones N 30951 reach a for gains N 30957 reminds Calverley of period V 30959 identify companies with momentum N 30960 showing signs of investing N 30961 seeing beginning of shift N 30963 recycles plastic into fibers V 30964 praises company as resistant V 30964 has rate of % N 30965 closed Friday at 39 V 30968 recommends stalwarts as Morris N 30970 pursuing stocks at expense V 30971 get number of disappointments N 30971 get number from companies V 30972 selling share of companies N 30972 buying share of stocks N 30973 trimmed portfolio of Paper N 30974 putting money in Barn V 30976 reported decline in quarter N 30976 announced buy-back of shares N 30978 buying stock at times V 30980 throw towel on cyclicals V 30983 buying shares in weeks V 30989 meet imbalances with stock V 30990 closed 5.94 to 2689.14 V 30992 lagged 662 to 829 N 30995 gained 0.03 to 347.16 V 30995 fell 0.02 to 325.50 V 30995 fell 0.05 to 192.12 V 30999 fell 32.71 to 1230.80 V 31000 skidded 5 to 168 V 31002 followed decision by Airways N 31002 supported offer for UAL N 31003 fell 1 to 31 V 31004 took cue from UAL V 31004 rose 3 to 43 V 31005 acquired stake of % N 31006 fell 1 to 52 V 31006 declined 7 to 45 V 31009 lowered ratings on number N 31010 dropped 5 to 51 V 31010 fell 3 to 1 V 31011 dropped 3 to 51 V 31012 citing weakness in business N 31013 fell 1 to 9 V 31015 cut dividend in half V 31016 fell 3 to 29 V 31016 declaring dividend of cents N 31018 offer rights at 8.75 V 31020 use proceeds of offering N 31020 use proceeds for reduction V 31021 buy share at price V 31050 filed registration with Commission V 31052 refinancing debt of concern N 31052 refinancing debt at rates V 31054 reduced stake in Inc. N 31054 reduced stake to % V 31055 sold shares from 31 V 31057 had comment on sales N 31058 held stake in Anacomp N 31058 held stake for purposes V 31059 have discussions with management V 31060 sell interest in mall N 31060 sell interest to buyer V 31074 ensure lockup of purchase N 31076 called lawsuit without merit V 31078 cut dividend on shares N 31078 cut dividend to cent V 31080 reflects price for metals N 31082 had profit in 1985 V 31083 is 15 to holders N 31087 is parent of Inc. N 31088 has revenue of million N 31090 handed speculators on deal V 31091 tops million in losses N 31091 dropped offer for Co N 31092 culminating Friday with withdrawal V 31093 recoup some of losses N 31093 rescued them with takeover V 31100 using guesswork about likelihood N 31101 put bid in area N 31101 take three to months N 31103 accepted bid of 300 N 31103 running company for while V 31106 have tool in willingness V 31106 cut compensation by million V 31106 commit million from funds N 31108 putting wad of cash N 31111 call someone on telephone V 31111 fix problem with deal N 31112 leaves pilots in need V 31112 lay hands from funds V 31113 is insistence on ownership N 31115 sharing value of concessions N 31115 sharing value with shareholders V 31116 buy stock from public V 31117 deliver price to shareholders V 31119 advising board on bids V 31120 Using takeover as benchmark V 31122 Using estimates of earnings N 31122 Using estimates under variety V 31122 estimated value at 248 V 31123 assuming sale of assets N 31126 expect revival of takeover N 31129 throw deal into doubt V 31132 paid average of 280 N 31132 paid average for positions V 31142 had loss of million N 31143 had loss of million N 31144 rose % to million V 31146 had income of million N 31147 grew % to million V 31155 outflank competitors like Corp. N 31156 add machines to systems V 31156 opens market for us V 31158 is one of versions N 31163 attracted offers for some N 31164 approached Saatchi in August V 31166 made pitches in visits V 31168 received inquiries from companies N 31173 lowered estimates for company N 31176 rebuffed offer by Spielvogel N 31176 lead buy-out of part N 31178 whipped interest among outsiders V 31178 picking pieces of businesses N 31180 had problems at office V 31180 offers offices in areas V 31183 be addition to network N 31187 sell some of units N 31196 blaming agency for incident V 31197 remove board from agency V 31199 told board about relationship V 31200 funnel kickbacks to then-minister V 31201 chastises agency for timing V 31201 handle million to account N 31204 awarded million to account N 31204 awarded million to Angeles V 31208 named director of services N 31210 owns Inc. of U.S. N 31214 appointed executive for property N 31215 become part of committee N 31216 named president of University N 31217 have phrase under investigation N 31219 succeed Lederberg as head V 31221 held hearings on dispute N 31221 co-authored paper with Baltimore V 31222 was part of investigation N 31223 enlist services of Service N 31223 enlist services in investigation V 31224 has interest in NIH N 31224 were no by opinion N 31224 reminded Baltimore of era N 31226 do million of damage N 31226 do million to labs V 31226 decries horrors of chemistry N 31226 files lawsuits in court V 31228 decreed investigation of paper N 31232 defended itself against suit V 31234 earn praise for work V 31234 attract attention of people N 31234 gain control over goals N 31236 acquire Inc. of Beach N 31236 acquire Inc. for stock V 31237 receive total of shares N 31239 buy stake in subsidiary N 31242 offering corrections to table N 31245 is sign of neglect N 31252 see flock of programs N 31252 impose costs on economy V 31264 creating rationale for taxes N 31266 cost businesses between billion V 31267 distorts efficiency in sorts V 31268 imposes standards on plants V 31269 stick scrubbers on plants V 31271 imposes standards on cars V 31272 be 500 per car N 31276 create wave of litigation N 31281 lift burden from people V 31282 diagnosed stagnation of 1970s N 31283 tout accomplishments as head N 31284 was head of force N 31288 Holding dam on taxes N 31288 is task of presidency N 31289 was core of people N 31293 setting some of buckshot N 31293 setting some for ducks V 31294 show improvement from deficits N 31295 prevent freefall in sterling N 31296 announce measures in speech V 31299 be lot of pressure N 31300 show improvement from deficit N 31302 transforming itself to exports V 31307 see evidence of turnaround N 31315 reduce fears of rises N 31317 allow rigor of policy N 31320 showing signs of lack N 31322 increase rates to % V 31324 posted gains in trading N 31325 distance itself from exchange V 31325 preoccupied market since 13 V 31326 shift focus to fundamentals V 31326 keeping eye for signs V 31328 changing hands at yen V 31333 acquire Inc. for 40 V 31337 values company at million V 31340 is maker of products N 31341 boosted stake in Green N 31341 boosted stake to % V 31349 's change from years N 31352 reduce costs in years V 31353 is year since deregulation N 31353 had upturn in perceived N 31359 be opportunity for offsetting N 31359 offsetting increases in segments N 31360 gotten benefits of deregulation N 31360 gotten benefits in reductions V 31362 recoup some of cutting N 31364 's lot of pressure N 31365 carry freight of shippers N 31365 carry freight in trailer V 31371 played trucker against another V 31372 raised rates for products N 31372 raised rates by % V 31373 boost rates over years V 31374 increase cost of products N 31374 slow rate of increase N 31375 increase rates in couple V 31376 increased % to % N 31376 increased % in months V 31378 restore rates to levels V 31379 raise rates on containers N 31379 carrying exports to Asia V 31380 filed statement with Commission V 31381 have shares after offering V 31384 putting him on probation N 31384 putting him for insubordination V 31387 entered room in building N 31395 promised decision within weeks N 31399 Alter details of example N 31399 taking place at Express V 31400 are pioneers in trend N 31401 is one of trends N 31404 reduces lawsuits from disgruntled N 31406 increases commitment to company N 31415 means hundreds of complaints N 31416 train supervisors in approach V 31418 Coach them in handling V 31419 take complaints to adjudicator V 31419 accept reversals as fact V 31422 enjoys advantages as credibility N 31423 has advantages as speed N 31426 do any for anybody N 31429 features procedure in programs V 31430 guarantee visibility for system N 31431 is subject of memorandums N 31434 marking gain since fall N 31442 surrendered part of advance N 31442 surrendered part toward end V 31443 hold position over weekend V 31450 adding points in days V 31456 gained 100 to 7,580 V 31458 gained 80 to 1,920 V 31458 added 60 to 2,070 V 31460 gained 50 to 2,660 V 31462 added 50 to 1,730 V 31463 added 80 to 2,010 V 31466 recouped some of losses N 31472 supporting market in quest V 31472 cover shortages of shares N 31475 announcing withdrawal from deal N 31476 viewed outlay for stake N 31476 viewed outlay as bit V 31477 close penny at pence V 31478 was 100 at shares V 31482 ended day at 778 V 31484 shed 10 to 294 V 31489 are trends on markets N 31493 was part of set N 31494 disclosed them to senators V 31495 cited policy as example V 31497 lend support to effort V 31503 is part of effort N 31503 shift criticism for failure N 31504 summarize portions of correspondence N 31507 send suggestions to committee V 31508 present evidence in fashion V 31512 banning role in assassinations N 31514 gets wind of plans N 31518 win approval of funding N 31519 avoid surprises during campaign N 31523 hampered role in attempt N 31524 made headway with Sens. N 31524 made headway after meeting V 31531 creating vehicle for investors N 31533 been province of those N 31535 filed registration with Commission V 31537 approved price in process V 31537 clearing papers on desk N 31538 started fund in 1974 V 31538 reached billion in assets N 31538 reached billion in year V 31540 Keeping price at dollar V 31542 keeps them at 1 V 31543 forced relaxation of curbs N 31548 regarding merger of Noxell N 31550 exchange share of stock N 31550 exchange share for share V 31550 exchange share of stock N 31551 mark entry of P&G N 31552 markets range of products N 31553 postponed endorsement of merger N 31553 postponed endorsement until meeting V 31554 discuss terms of transaction N 31556 hold majority in MBB N 31556 acquires stake in concern N 31558 been professor in department N 31559 completed offering of shares N 31562 issues reading on product N 31562 issues reading in report V 31569 see growth for remainder V 31570 carry ramifications in quarter V 31574 take hunk of GNP N 31577 limit damage to regions V 31578 offset loss of production N 31580 expects growth of % N 31581 increases possibility of recession N 31581 reinforces news from reports N 31584 shaved % to % N 31588 paid dividend of cents N 31590 raised stake in company N 31590 raised stake to % V 31591 boosted holdings in Vickers N 31591 boosted holdings to shares V 31594 views company as investment V 31595 use interest as platform V 31595 launch bid for company N 31597 spurned advice of consultants N 31600 was move for executive N 31602 Stroking goatee during interview V 31607 add kronor to coffers V 31608 approve offering of shares N 31612 taking parts of company N 31613 remain shareholder with stakes N 31614 solve problem for parent V 31615 controls % of shares N 31618 is result of spree N 31621 turned Trelleborg into one V 31623 owns % of company N 31625 joined forces with Canada V 31631 raising share of profit N 31639 accept ownership in company N 31641 share belief in renaissance N 31642 were decade of consumption N 31645 is word for metals N 31647 registered increase for quarter N 31648 brought income in quarter N 31648 brought income to million V 31654 credited computers for performance V 31658 was % below margin N 31660 predicted year of growth N 31666 was officer of division N 31668 placed warrants in exchange V 31671 reflects importance of market N 31672 succeed Haines as manager V 31673 signed contract with developers V 31676 maintain plant upon completion V 31681 spending billion on itself V 31683 add million of revenue N 31684 is part of plan N 31688 called step in internationalization N 31689 are areas for Basf N 31690 named officer of unit N 31693 sell service to Inc. V 31695 provides quotes over band V 31697 have sale of unit N 31697 have sale under consideration V 31698 publishing information on disks N 31707 selling part of holdings N 31709 is month for program N 31710 offering assets for time V 31711 unveil plans for effort N 31713 rid government of hundreds N 31723 hobbled program in past V 31725 adopting attitude of flexibility N 31726 sell bank for price V 31729 selling institution without price V 31732 lost control to government V 31732 made loans to institution V 31733 giving % of bank N 31733 giving Manila with understanding V 31735 sell stake in Corp. N 31738 hold % of Picop N 31739 own rest of equity N 31740 take stake in company N 31740 needs million in capital N 31740 needs million for rehabilitation V 31741 including member of group N 31744 retain stake in Picop N 31744 accused trust of selling N 31747 divest itself of Airlines V 31749 increasing membership to nine V 31751 elected director of company N 31753 been executive of Inc N 31764 be chairman of firm N 31765 become director of company N 31769 make % of loans N 31770 owns Association of Waterbury N 31770 had assets of million N 31771 had assets of million N 31771 had assets on date V 31772 is statement of commitment N 31773 view reforms in context V 31776 retains % of equity N 31778 granted control over airline N 31778 granted control to consortium V 31780 include ones in Mexico N 31784 is element of plan N 31790 suspend payment of quarterly N 31790 suspend payment for quarter V 31791 expects return to profitability N 31793 transfer ownership to employees V 31793 leaving stock in hands V 31795 avoid risk of rejection N 31795 submit plan at meeting V 31797 give approval to offer V 31799 avoid loss of momentum N 31800 discuss it with banks V 31801 make proposal without commitments V 31802 borrow dollars from banks V 31802 finance payment to holders N 31803 receive interests in company N 31808 given control of airline N 31811 is sort of period N 31814 keep offer on table V 31814 maintain position with board N 31815 triggered buy-out with bid V 31817 paid million for backing V 31818 gain loans for group N 31820 answer questions from regulators N 31820 use proceeds of offering N 31822 favor recapitalization with investor N 31823 make million in concessions N 31825 weaken management at time V 31826 pay million in banking N 31826 pay million to advisers V 31829 includes series of features N 31829 is 80%-owned by Inc N 31830 carry seconds of advertising N 31833 yield % in offering V 31834 said million of proceeds N 31834 prepay amounts on note N 31834 prepay amounts to Inc. V 31836 holds stake in Inc. N 31836 having control of company N 31837 determined terms of transaction N 31842 draw currencies at IMF V 31845 sell subsidiary as part V 31847 is subsidiary of Ltd. N 31848 had revenue of million N 31848 makes products at mills V 31848 recycles aluminum at plant V 31849 elected executive of subsidiaries N 31852 remains chairman of Co N 31853 was officer of Co. N 31853 was officer in 1987 V 31853 bought interest in Corp N 31855 reduced stake in Illinois N 31855 reduced stake to % V 31858 decrease position in concern N 31860 vacated judgment in favor N 31862 remanded case to court V 31866 transfer ownership of parent N 31866 transfer ownership to employees V 31866 leave stock in hands V 31867 give approval to offer V 31868 incurred losses of million N 31868 incurred losses from offer V 31869 ended talks about alliance N 31870 intensify pursuit of Jaguar N 31870 negotiating alliance with GM V 31872 making gain for week N 31876 citing losses at unit N 31877 cast shadow over markets V 31879 attracted offers for some N 31883 entered market by unveiling V 31883 convert film into video V 31884 cede market to manufacturers V 31887 purchased company in Texas N 31887 purchased company for million V 31889 slashed dividend in half V 31889 reflecting slowdown in sales N 31894 suspended payment of dividend N 31895 paid cents in April V 31896 had effect on stock N 31904 requested recall of capsules N 31908 suspending distribution of 21 N 31908 pending completion of audit N 31911 went public in January V 31918 been engineers with Cordis N 31920 sold operations to Ltd. V 31921 representing employees at Corp. N 31921 averting strike by employees N 31924 proposes contract with raise N 31926 reported increase in revenue N 31927 reported income of 320,000 N 31928 reported increase in earnings N 31932 includes proposals for pullout N 31932 guarantees number of seats N 31933 demanded pull-out of troops N 31933 puts future of agreement N 31933 puts future in doubt V 31935 finding survivor in freeway V 31939 notify dictators of plans N 31940 inform dictators of plans N 31941 disclosed it to senators V 31941 citing plan as example V 31942 lend support to effort V 31967 included gain of million N 31970 posted loss of million N 31976 have feelings about someone N 31976 swapping barbs with friends V 31982 call questions for panel N 31983 getting injection of glasnost N 31986 easing restrictions on travel N 31987 win confidence of Germans N 31989 ordering action against protesters N 31993 lecture people about values V 31994 visit factory on outskirts N 31997 ignoring problems in society N 31999 impressed group of visiting N 32003 's side to Krenz N 32004 is part of Poland N 32004 dedicated life to apparatus V 32007 have room for maneuver N 32009 plunged country into crisis V 32021 display sense of humor N 32022 carried report on factory N 32023 remember comment by Hager N 32026 producing amounts of heat N 32026 producing amounts from experiments V 32028 find hints of reactions N 32028 leaving finding of tritium N 32029 hear reports on experiments N 32030 offered evidence of fall N 32036 reported results with variations N 32037 encircling rod of metal N 32037 encircling rod with wire V 32037 plunging electrodes into water V 32039 consume all of energy N 32040 produced amounts of heat N 32042 detected indications of radiation N 32043 measuring heat from experiments N 32046 borrowed rod from chemists V 32050 produced heat for hours V 32055 is reality to energy N 32061 is experiment at University N 32062 producing 1.0 than cell N 32064 getting bursts of heat N 32065 is correlation between time N 32066 measure amount of tritium N 32067 be evidence of reactions N 32068 reported evidence of neutrons N 32069 take experiment into tunnel V 32069 shield detectors from rays V 32070 detected neutrons in two V 32070 detect burst in detectors N 32071 detected burst of neutrons N 32072 indicated burst of neutrons N 32074 produce effects on surface N 32075 announced rates for 1990 N 32076 include increase for advertising N 32081 share efficiencies with customers V 32089 owns % of Inc. N 32090 Reflecting impact of prices N 32095 reduced demand for semiconductors N 32097 reduce force of division N 32101 expect sluggishness in market N 32102 combine divisions into Group V 32102 affect results by amount V 32103 completed acquisition of Co. N 32104 had income of million N 32105 is company with area N 32106 is partner in franchise N 32107 represents entry into business N 32108 has interests in television N 32108 make acquisitions in industry N 32109 haunting market in metal N 32112 precipitated expansion of production N 32113 recover silver from solutions V 32117 preferring assets to gold V 32121 offers value amongst metals N 32123 converting quantities of metal N 32123 converting quantities into silver V 32123 discouraging exports from India N 32126 plans issue of coin N 32128 push prices into range V 32136 be 1 to 2 N 32137 expect prices of contracts N 32137 found cattle on feedlots N 32138 held cattle on 1 V 32140 fatten cattle for slaughter V 32140 signals supply of beef N 32142 projecting decline in placements N 32143 sell cattle to operators V 32143 dried pasture on ranches N 32147 set tone for trading N 32148 attributed decline to factors V 32150 test projections by economists N 32153 including settlement of strikes N 32154 ending strike at mine N 32155 accepted cut in force N 32157 takes place at noon V 32158 indicating demand for copper N 32163 has implications for week N 32168 allows computers in network N 32170 asks computers in network N 32170 asks computers for bids V 32171 sends task to machine V 32175 get bang for you N 32177 charge 5,000 for license V 32180 spread tasks around network V 32181 splits it into parts V 32181 divvying parts to computers V 32184 turns network into computer V 32187 saturate area after another N 32188 putting squeeze on profits V 32188 straining relations between chains N 32189 offer discounts during winter V 32191 is chairman of Board N 32194 brought reaction in industry V 32200 serve customers to % N 32203 has choice in war N 32204 owns string of stores N 32206 squeeze stores into corner V 32210 trailed levels throughout 1989 V 32220 driving wedge between franchisers V 32221 absorb increases in expenses N 32221 absorb increases without cut V 32223 demand participation to end N 32224 protect consumers from marketing V 32226 get telephone about franchise N 32228 had change in earnings N 32230 compares profit with estimate V 32233 had change in earnings N 32235 compares profit with estimate V 32237 completed sale of assets N 32238 is part of plan N 32240 found use for them N 32241 won nickname for Series V 32241 selling some of checks N 32241 selling some through dealer V 32245 sign autographs for fee V 32246 examined checks at show V 32249 were lot of Cobbs N 32256 done it for cash V 32263 produce products for market V 32264 have capacity of tons N 32265 follows string of announcements N 32266 build lines for steel N 32271 boosting levels of steel N 32273 maintain edge over minimills N 32274 expects market for steel N 32274 reach tons by 1992 V 32276 reach agreement by end V 32277 marks plant for production N 32278 boost capacity of tons N 32280 adding capacity of steel N 32282 MAKE mind about investment V 32285 give instructions to broker V 32287 accept type of order N 32288 enter it for customer V 32293 fill orders at prices V 32300 goes tick beyond price N 32300 filling it at price V 32306 placed order at 90 N 32306 placed order under stock V 32310 receiving price from order V 32310 use type of order N 32314 fill it at price V 32333 bought stock from orders N 32334 is responsibility of investors N 32335 change mind about buying V 32339 measures volatility of fund N 32345 get payoff from bet N 32347 is part of risk N 32348 tell magnitude of that N 32351 is indicator of risk N 32353 led Association of Investors N 32353 eliminate figures for funds N 32353 eliminate figures in edition V 32361 see risk on dimension V 32362 avoid types of risk N 32363 is news to people N 32365 returning money at maturity V 32366 erodes power of payments N 32367 is function of time N 32371 paying attention to risk V 32373 outperformed securities over extended V 32376 evaluating riskiness of portfolios N 32382 expose holders to lot V 32383 involve risk than portfolio N 32384 is affiliate of Seidman N 32387 add deviation to it V 32392 are riskier in terms N 32393 be riskier in sense N 32402 exceed inflation by margin V 32408 broadening dislike of Noriega N 32409 are part of nexus N 32415 is news for those N 32418 plunge funds into tools V 32419 maintained share of CDs N 32419 preserving position in market N 32421 demonstrates performance of businesses N 32422 divested myself of stocks V 32424 causing broker at Pru-Bache N 32424 seen anything like it N 32425 began climb to health N 32426 entered it in 1988 V 32426 posted rate in years N 32436 been part of strategy N 32437 brought value of sedan N 32438 produced need for construction N 32441 given demonstration of benefits N 32442 showing expansion with sign N 32444 take advantage of it N 32448 building value on back V 32450 is writer in York N 32451 gave piece of advice N 32458 influence investment of dollars N 32463 are members of them N 32467 planned ventures into bankruptcy V 32472 be planner at all N 32473 follows issues for Federation V 32476 kill demand for planning N 32477 cause slump in demand N 32477 make exit from business N 32480 guided investment of billion N 32480 guided investment in months V 32482 counseling others on the V 32483 keep tabs on advisers N 32488 set standards for competence N 32489 set debate within industry N 32490 putting Dracula in charge V 32491 giving money to SEC V 32494 enrolled dog as member V 32495 sent picture with certificate V 32496 have ideas about certification N 32498 reveal conflicts of interest N 32500 receive some of income N 32500 receive some from commissions V 32501 putting clients into investments V 32502 invested million on behalf V 32503 put clients into portfolios V 32503 shoved customers into investments V 32504 paid commissions to Meridian V 32506 had access to cash N 32507 portrayed himself as expert V 32511 seeking recovery of funds N 32512 is chairman of IAFP N 32512 name Peterson as defendant V 32515 purchase Bank of Scottsdale N 32518 took T to meeting V 32519 dumped million in cash N 32519 dumped million on table V 32520 show color of money N 32524 save responses for court V 32526 considering suit against plaintiffs N 32528 Rearding suit over bid N 32530 are a of times V 32534 kept them of way V 32535 pay tens of thousands N 32535 pay tens for chance V 32537 give pause to clients V 32540 make some of clients N 32540 make some on investments V 32543 is reporter in bureau N 32547 accompanies show with selection V 32570 lend air of respectability N 32572 having lot of people N 32574 is headquarters for operators N 32574 extract money from the V 32584 sent million to company V 32589 rent space near room N 32590 give indulgence of offices N 32593 cite case of Valentine N 32593 serving sentence at Prison V 32595 took junkets with friends N 32595 leased an for girlfriend V 32602 get publicity about this N 32603 is chief of bureau N 32605 send kids to college V 32607 Stick money in account V 32608 buy ticket to U. N 32608 buy toddler in years V 32611 readied parents for 1980s V 32612 rose % in years V 32612 's increase in prices N 32614 take pizzas-with-everything at time N 32619 take chance on fund N 32620 make it in account V 32625 's dilemma for parent N 32626 has answer for you N 32628 investigating increases among schools N 32629 cool things in 1990s V 32640 set 773.94 for years V 32641 cut this to 691.09 V 32642 come home from hospital V 32643 Plugging college into formulas V 32644 Using cost of 12,500 N 32645 assumes return in fund N 32645 be 16,500 in taxes N 32647 peddling lot of fear N 32648 takes issue with projections N 32650 do it of income V 32659 laid billion for bonds V 32660 bought million in plans N 32663 pay interest at maturity V 32665 pay 1,000 in 2009 V 32668 be loss of principal N 32669 bought amount at time V 32672 limit guarantees to institutions V 32672 get refunds without interest N 32673 seeking approval for plans N 32675 be soundness of guarantee N 32686 backed guarantees with credit V 32690 covers education from bureau V 32696 was one of the N 32699 omitted total of million N 32699 omitted total from receipts V 32702 fouled net on project N 32704 owes lot of taxes N 32706 develop targets for investigation V 32707 offset income with losses V 32707 raised racehorses on days V 32710 won part of battle N 32710 received services in return V 32713 builds factor into formula V 32713 need projects for them V 32714 have incidence of audits N 32717 requiring reporting of varieties N 32717 ferret discrepancies with returns N 32717 generate inquiries to taxpayers N 32720 assigned agents to projects V 32721 detect pattern of abuse N 32721 having multitude of dependents N 32721 frees them from withholding V 32721 deducting losses from businesses V 32723 send anyone to jail V 32723 make life for one V 32723 imposing some of penalties N 32724 label workers as contractors V 32724 avoid share of taxes N 32725 sold home for profit V 32725 reinvesting gain in home V 32727 treating amounts of travel N 32727 treating amounts as costs V 32728 provided criteria for singling N 32728 singling returns of taxpayers N 32728 report income from business N 32729 denied deductions by Rubin N 32729 were distributors of products N 32729 were distributors in addition V 32731 earned 65,619 in jobs V 32731 treated sideline as business V 32731 derived elements from it V 32732 distribute material to people V 32732 prepare program on subject N 32734 reclassified workers as employees V 32737 become tipsters for IRS N 32737 manages force of agents N 32737 manages force from Orlando V 32738 provide leads to competitors N 32740 listed all as contractors V 32741 assessed 350,000 in taxes N 32742 assessed 500,000 against company V 32742 carried employees as independents V 32743 becoming pursuers of delinquents N 32743 tracks them with relish V 32743 acquired system in 1985 V 32746 be residents of states N 32747 feel glare of attention N 32748 collected million from brokers N 32749 squeezed million of man V 32750 reclaim hundreds of millions N 32750 reclaim hundreds through project V 32751 is editor of column N 32752 finding news in plan V 32756 boosting admits from % V 32756 boost registrants from % V 32757 gaining admission in category N 32762 creates category of students N 32762 gives % of class N 32767 places program on top V 32771 is story about suckers N 32775 blurt numbers to caller V 32776 is formality on road N 32777 buy well from stranger N 32780 know all of them N 32784 peddling investments in wells N 32786 is lure of returns N 32791 is part of culture N 32791 puts emphasis on it V 32795 is psychology of the N 32796 be part of in-crowd N 32798 sold interests in wells N 32798 sold interests to group V 32799 had agreement with Co. N 32801 are part of group N 32802 embellish information with notion V 32805 carry element of excitement N 32807 phoned them with updates V 32814 lose money on investments V 32816 used approach with him V 32817 had trappings of legitimacy N 32819 are targets of pitches N 32820 prevent disappearance of children N 32821 discuss investments with others V 32823 discuss investment with wife V 32827 filed suit in court V 32829 took them for lunch V 32832 send pictures of themselves N 32836 is principal in Inc. N 32837 hits them at time V 32842 invested 2,000 in stocks V 32848 is reporter in bureau N 32851 was 436,000 on 17 V 32856 spend time on pursuits V 32861 writing stories like one N 32863 put wife in lap V 32865 spawned number of products N 32869 amasses value in policy N 32870 gives bang for buck N 32870 gives you within limits V 32873 pass exam before renewal V 32878 made lot of sense N 32879 charge me for 100,000 V 32879 canceled policy after years V 32882 get benefit of income N 32890 cloak it in euphemisms V 32891 is kind of CD N 32893 runs second to investment N 32896 paying beneficiaries of people N 32900 pay premium for amount N 32900 invests premium in portfolio V 32901 extract value in form V 32901 included gains on investment N 32903 allows loans without consequences V 32905 put money into policy V 32907 adjust amount against amount V 32907 cover portion of policy N 32908 ask questions about some N 32908 show buildup of values N 32910 Projecting the over decades V 32912 get sort of bonus N 32912 get sort after year V 32916 are twists to life N 32916 ask questions about all N 32917 pay premiums on policy N 32917 pay premiums for years V 32919 cover cost of protection N 32920 maintain amount of protection N 32921 like sound of that N 32926 tap portion of benefits N 32927 collect percentage of value N 32927 allow payments for conditions N 32928 permit use of fraction N 32929 exempting payments from taxes V 32930 considering cost of provisions N 32932 market them to public V 32933 compared policy for 130,000 N 32933 compared policy with offering V 32934 get 14 from Equitable V 32939 finance trip to Paris N 32940 do thinking about insurance N 32942 indicates profit in quarter N 32943 show increase from year N 32945 make sales for quarter N 32949 sold drugs for prices V 32949 record gain on sales N 32953 attributed decline in profit N 32954 start efforts behind Maalox N 32955 underfunded Maalox for year V 32956 spend million to million V 32958 producing fertilizer in 1990 V 32959 close plant in Oberhausen N 32959 close plant in fall V 32961 changed name to Bank V 32964 was anniversary of crash N 32966 led march in trading N 32968 led market from bell V 32969 joined advance in strength V 32972 took profits before close V 32975 buy stock against positions V 32976 ignoring profits of companies N 32977 was influence in rally N 32982 gained 7 to 73 V 32985 complete buy-out of International N 32986 put oomph into market V 32988 is strength behind rally N 32991 prompted lot of buying N 32991 were bets on prices N 32995 representing billion in stock N 32996 been increase in positions N 32997 set pace for issues N 32998 added 1 to 44 V 32998 gained 3 to 70 V 32998 gained 3 to 77 V 33000 provide million in financing N 33001 providing rest of billion N 33002 advanced 5 to 136 V 33002 tacked 7 to 63 V 33008 owns stake in company N 33008 plans fight for control N 33010 approved the of % N 33011 approved increase in program N 33013 introduce products next month V 33014 gained 3 to 89 V 33015 added 1 to 1 V 33016 lowered rating on stock N 33016 post loss for quarter N 33022 raised rating on stock N 33023 lost 7 to 51 V 33024 lowered rating on stock N 33024 citing slowdown in business N 33025 reported decline in earnings N 33026 recorded gain of year N 33029 received approval for plan N 33029 fend bid from group N 33031 buying total of million N 33034 received contract from Navy V 33034 enlarge capacity of oiler N 33036 increasing size to members V 33038 protect flag from desecration V 33040 was victory for leaders N 33040 opposed amendment as intrusion V 33042 defuse pressure for amendment N 33043 become law without signature V 33044 threw conviction of man N 33044 set flag during demonstration V 33045 have problems on job N 33048 surveyed group of directors N 33048 surveyed group about perceptions V 33049 is one of series N 33052 costs 8,000 in terms V 33054 is average for claims N 33055 do something about them N 33057 recognize link between jobs N 33059 strike people at height N 33060 had bearing on view N 33061 noted fear of takeover N 33062 reported situation in company N 33064 received funding from Co. V 33075 skipping dinner with relatives N 33077 court vacationers with fares V 33078 flew passengers from Chicago V 33079 getting jump on discounts N 33080 cutting prices from levels V 33081 dubbed everything from is N 33081 put fares at 98 V 33083 Expect prices on dates N 33086 offering tickets to passengers V 33092 accommodate choice of names N 33094 received complaints from couples N 33095 transfer awards to members V 33097 shot coconuts through rooftops V 33097 uprooted thousands of lives N 33099 trimmed fares to Islands N 33099 trimmed fares to 109 V 33101 lowering fares to California V 33101 waive restrictions on fares N 33101 waive restrictions for trips V 33108 saves % off fare V 33111 taking it on offer V 33114 provide discounts to workers V 33115 require stay over night N 33116 be home in time N 33117 produced oil from oilfield N 33118 expects output from field N 33119 repeal limit for people N 33120 lose cents of benefits N 33122 maintain standard of living N 33122 maintain standard at level V 33123 offset surtax of 496 N 33126 need support from Democrats N 33126 need support in order V 33126 include reform in Bill V 33127 are co-sponsors of bill N 33128 lift limit from backs V 33138 make product in world N 33141 marketing mink in years V 33143 boost sales to billion V 33144 opened door to furs N 33145 operates outlets in U.S. V 33145 open 15 by end V 33150 turned phenomenon to advantage V 33151 work hours at wages V 33152 started factory in Greece N 33153 opened one in Germany N 33154 introducing variations on fur N 33155 combining strengths in innovation N 33155 combining strengths with costs V 33155 produce goods at cost V 33156 maintain control over production N 33156 avoid overdependence on sources N 33159 offers furs in red N 33163 attach embroidery to backs V 33166 treats side of lambskin N 33171 placed weight on retailing V 33174 bring furs to door V 33176 weather slump of years N 33178 reported losses in years N 33179 head list of reasons N 33180 glutted market with both V 33184 manufacture furs in U.S V 33185 losing part of allure N 33186 promoting furs in ways V 33186 taking glamour of business V 33187 make commodity of luxury V 33188 chasing consumers with imports V 33188 harm industry in run V 33188 reducing prestige of furs N 33191 exposed hundreds of employees N 33191 exposed hundreds to infection V 33198 considered strain of virus N 33200 is kind of hepatitis N 33201 posting notices about threat N 33201 posting notices at places V 33202 offering shots of globulin N 33202 diminish symptoms of A N 33202 diminish symptoms in anyone V 33204 read misstatements of facts N 33209 publish stories under bylines N 33211 Reward courage with support V 33213 elected presidents of company N 33214 is director of assurance N 33215 is manager for operations N 33215 was president at company N 33216 promised improvement in economy N 33217 summed policy as battle V 33217 wring inflation of economy V 33217 using rates as instrument V 33218 boosting rates to % N 33220 increases expectations of inflation N 33221 have role in assessment N 33226 blunt inflation at home V 33226 arrest plunge in pound N 33226 raised rates to % V 33235 's solution to woes N 33236 Discussing slide in prices N 33237 prompted drop in Index N 33237 owed nothing to problems V 33239 join mechanism of System N 33241 won race in Europe N 33245 have machines in offices V 33246 is step in computing N 33247 getting technology to market V 33248 steal sales from minicomputers V 33248 bring sales among professionals N 33249 bear fruit with rebound N 33249 deliver machines by December V 33252 's link in line N 33254 cost 16,250 on average V 33255 handle 3 to MIPS N 33256 sell computer in U.S. V 33257 received approval from government V 33259 had sales of million N 33260 has workers at plants N 33262 keep pace with inflation N 33262 boosting benefit to 566 V 33264 increasing payment to 386 V 33265 generates revenue for fund N 33268 aged 65 through 69 N 33270 reflect increase in index N 33272 report increases of % N 33273 cutting staff through attrition V 33273 slowing growth in spending N 33277 faces competition from supplier N 33278 report growth of % N 33278 maintain growth of % N 33285 fell % to million V 33286 removed catheter from market V 33288 raised questions about design N 33290 buoying stocks of houses N 33293 reported income of million N 33294 reported results with income N 33301 receiving benefits in week V 33302 receiving benefits in week V 33304 reflects impact of Hugo N 33306 reported decline in income N 33306 reported decline on gain V 33307 prepared Street for quarter V 33308 reduce reliance on machines N 33308 establish presence in mainframes N 33313 was drag on sales N 33314 address that with debut V 33316 be lot of contribution N 33317 were factor in quarter N 33320 cut estimates for stock N 33323 revising estimate for year N 33323 revising estimate from 8.20 V 33324 troubling aspect of results N 33324 was performance in Europe N 33329 dropped estimate of net N 33329 dropped estimate to 6.80 V 33334 meaning impact from product N 33338 posted income of million N 33339 included earnings from discontinued N 33342 include brands as toothpaste N 33343 attributed improvement to savings V 33345 is priority in company N 33347 caught analysts by surprise V 33352 earned million in period V 33353 included million from operations N 33355 finalized agreement with Corp. N 33355 market four of products N 33357 is part of drive N 33357 increase business with dentists N 33359 completed sale of system N 33360 distribute proceeds from sale N 33360 distribute proceeds to holders V 33360 distribute proceeds from sale N 33361 generates million in sales N 33361 represented all of assets N 33364 save million in year V 33366 double number of managers N 33372 matched estimates of analysts N 33372 increasing margin to % V 33378 been subject of rumors N 33378 been subject for months V 33385 swap holdings in Co. N 33385 swap holdings for shares V 33387 gained % to billion V 33389 takes seat to one N 33391 makes trader among all N 33395 holding stocks in mix V 33396 poured billion into indexing V 33397 match returns of 500 N 33399 keeps lid on costs V 33402 been concept in decade V 33402 been sort of sitting N 33407 own share of stock N 33409 is boatload of investors N 33410 hold % of stock N 33413 land customers for business V 33415 give investors for money V 33417 beat returns by 2.5 V 33418 has million under management N 33419 take advantages of discrepencies N 33420 buys stocks in conjunction V 33421 buys stocks at all N 33424 uses futures in strategy V 33424 added point to returns V 33426 hold form of it N 33427 make use of futures N 33427 present risks for investors N 33428 managing director of Co. N 33431 bolster returns of funds N 33433 guarantee protection against declines V 33434 say 95 of 100 N 33435 invest 87 for year V 33436 match gain in index N 33438 hiring one of managers N 33438 design portfolio around stocks V 33439 see lot of interest N 33439 see lot in kind V 33440 using them for strategies V 33441 is fund with bet N 33444 spend the on group V 33445 eliminating stocks of companies N 33445 doing business in Africa V 33447 have % of forces N 33447 have % in state V 33448 reported month of interest N 33453 buy shares at price V 33454 is number of shares N 33455 consider increase in interest N 33457 include transactions in stock N 33461 led list of volumes N 33461 led list with shares V 33462 acquire Corp. for million V 33463 posted increase in volume N 33464 logged decline to 12,017,724 N 33470 posted increase to 2,157,656 N 33474 facing proposal from financier V 33476 dropped the on basis V 33482 made mind about Noriega V 33484 use relationships with agencies N 33484 delay action against him N 33484 exploit obsession with overthrowing N 33485 made decision in summer V 33485 put Noriega on shelf V 33489 develop plan for pushing N 33490 develop plan for supporting N 33490 supporting people in attempts V 33494 turning order into market V 33498 be oddity in Hanoi V 33499 made him in days V 33503 jailed times between 1960 V 33508 selling thousands of tires N 33509 published articles about him V 33510 earned medal at exhibition V 33510 attracted attention from authorities N 33516 accused him of stealing V 33516 acquiring rubber without permission V 33521 rejoined family in 1984 V 33521 began struggle for justice N 33523 achieved breakthrough in 1987 V 33525 display products at exhibition V 33527 produces motorbike in house V 33530 covers floor of house N 33531 burst door into courtyard V 33531 squeezes solution into strip V 33534 released one of machines N 33542 lost position in association N 33542 lost position in 1980s V 33542 questioned intrusion of politics N 33543 Appointed editor in chief N 33543 Appointed editor in 1987 V 33543 turned the into paper V 33547 confiscated rice from starving V 33548 ran series of stories N 33548 stirred debate over interpretation V 33548 took swipe at writers V 33548 blocked entry into association V 33553 is chief for Vietnam N 33557 is entrepreneur of 1980s N 33558 keep empire on top V 33560 establish Co. as dealer V 33561 alleviating shortage in 1980s V 33562 becoming part of folklore N 33566 become darling of version N 33567 steered reporters to office V 33567 see example of way N 33571 turned Food into conglomerate V 33572 manages it with title V 33573 is purchase of rice N 33575 operates fleet of boats N 33575 transport commodities to warehouses V 33576 processes commodities into foods V 33577 taking stake in Industrial N 33578 increased profit to equivalent V 33581 mind competition inside country V 33585 preparing report on impact N 33587 reviewing ratings on bonds N 33588 have impact on condition V 33588 raises concerns about risks N 33591 seeking suggestions from lobbyists V 33597 reported loss of million N 33597 reported loss for quarter V 33598 earned million on sales V 33602 earned million on sales V 33607 reflected change in technology N 33607 left channels with monitors V 33609 include capabilities as equipment V 33609 dampened purchases of equipment N 33611 is one of producers N 33614 cut expenses by % V 33614 maintaining development at % V 33615 divided business into segments V 33617 represents two-thirds of business N 33618 generated revenue in period V 33619 propelled laptops into position V 33620 be focus of industry N 33620 strengthening development of parts N 33622 help company in agreement V 33624 creates opportunities for company V 33625 develop market in Europe N 33626 approved Directors of Lavoro N 33631 renew calls for privatization N 33633 called meeting in December V 33635 following disclosure of scandal N 33636 increased % in September N 33636 increased % from August V 33637 attributed rise in index N 33637 attributed rise to prices V 33639 was 180.9 in September V 33640 posted increase in income N 33642 included million in income N 33645 added million to reserves V 33645 boosting reserve to million V 33647 charged million in loans N 33648 rose % to a V 33652 rose % to a V 33653 rose % to billion V 33653 rose % in quarter V 33655 include million of benefits N 33656 rose % at Services V 33658 owns % of common N 33661 reported decline in earnings N 33661 reported decline for quarter V 33669 was million on revenue V 33671 include earnings of PLC N 33671 include costs of million N 33672 issued injunction against purchase V 33672 reduce competition in production V 33674 settle claim against men N 33679 owe billion in taxes N 33681 getting % of proceeds N 33681 seeking repayment of a N 33684 subordinate claim to those V 33685 threatened volcano of litigation N 33685 force plan through court V 33686 consider proposal at hearing V 33687 decribed plan as step V 33687 fight it in court V 33688 represents IRS in case V 33690 buy offices from Inc. V 33690 following merger of Trustcorp N 33691 have assets of million N 33692 study quality of assets N 33693 has branches in area V 33693 avoid problem with regulators N 33693 avoid problem over concentration V 33694 take place in quarter V 33695 pushed assets in week V 33697 was inflow since 1988 V 33699 pulled money from market V 33699 put money into funds V 33704 posted yields in week V 33705 rose billion to billion V 33706 increased billion to billion V 33706 increased billion to billion V 33707 was source of spate N 33710 make dollars in provisions N 33715 became shareholder in exercise V 33718 report profit for year V 33719 reported profit of million N 33719 made provisions for loans V 33721 build complex in Lumpur V 33723 lent lot of money N 33723 lent lot of money N 33725 increase capital to billion V 33727 gave heart to Reagan V 33730 opened door to restrictions V 33730 opened mind to politics V 33732 leads grassroots in County N 33732 leads grassroots for Florio V 33733 rejecting stance of opponent N 33737 losing governorship next month V 33738 paying price for agenda V 33738 torment Democrats in past V 33740 remains bulwark against restrictions N 33742 bringing upsurge in activity N 33744 tells reporter in office V 33746 is ground for movement V 33747 bring clash of cultures N 33748 build support for cause V 33749 seem fit than leaders N 33752 favored Bush by % V 33754 backed % to % N 33754 backed Florio over Courter V 33758 carries himself with intensity V 33759 prepared himself for moment V 33759 support curbs on funding N 33761 seems shadow of hawk N 33761 defended North before cameras V 33762 stating opposition to abortion N 33762 impose views on policy V 33765 hide frustration with ambivalence N 33768 hurt himself by bringing V 33768 bringing issues into debate V 33768 is campaign on sides V 33769 is part of generation N 33772 is reminder of gap N 33773 pursued agenda in Washington V 33773 approving taxes at home V 33773 overseeing doubling in size N 33773 overseeing doubling in years V 33774 play differences with Courter N 33775 met criticism from commissioner V 33779 appoint Hispanics to posts V 33779 employed any in office V 33782 Asked question after appearance V 33782 identifies member by name V 33783 recognizes photograph of one N 33786 declined rematch with Kean N 33791 destroyed part of highway N 33793 is product of losses N 33795 match ads with team V 33795 retools himself as machine V 33796 scraps reference to Ozzie N 33797 be footnote to spots N 33797 portray each as liar V 33798 fits pattern of reformers N 33800 divides some of constituency N 33808 has lots of opinions N 33809 rose % in September V 33810 drove prices during month V 33812 closing points at 2683.20 V 33813 read data as sign V 33815 push prices in months V 33816 reduce prices of imported N 33819 had declines in prices V 33822 declined % in September V 33823 hold increases in prices N 33823 expect some of rise N 33827 pulled rate to % V 33833 fostered pessimism about rates V 33836 Excluding categories of food N 33836 rose % in September V 33840 showed declines at level N 33842 rose % for month V 33843 rose % in September V 33843 following decline in August V 33851 grown % on average V 33854 been undoing of resorts N 33855 been aging of boomers N 33857 change image as sport N 33862 avoided issue of safety N 33866 represents spirit of cooperation N 33866 represents spirit among makers V 33869 adding entertainment for kids N 33871 enjoy entertainment with dinner N 33871 enjoy entertainment without dad V 33878 want something besides ski N 33879 increase number of skiers N 33879 increase number by million V 33882 prefer climate for excursions V 33884 handle kind of increase N 33886 play game of Series N 33886 play game on night V 33886 play it on Wednesday V 33888 play game next Tuesday V 33895 been kind of show N 33896 seated rows in front N 33896 arranged that for guys V 33898 thrusting microphones into faces V 33914 been damage of sort N 33915 lugging blocks of concrete N 33918 interviewed fans in lots N 33918 watched interviews on TVs V 33919 saw profit in items V 33925 set candles in ballroom V 33933 learned nothing from experience V 33941 began month with crunch V 33941 play role in takeovers V 33942 deliver billion in bank N 33942 deliver billion for buy-out V 33943 pressing Congress for powers V 33944 reached zenith in July V 33946 lobbying employees for approval V 33950 aided investor on bids V 33950 put both in play V 33950 play a in financing V 33951 loaned % of price N 33952 carry yields than loans N 33954 raise debt for group V 33955 used letter from Citicorp N 33955 used letter in pursuing V 33957 finance takeovers with help V 33958 open opportunities to banks V 33960 syndicating loans to banks V 33960 dropped % to million V 33961 take part in lot V 33962 make offer of shopping N 33962 make offer for finance V 33963 cites arrangement for financing N 33964 have advantage over banks V 33966 acquire Inc. for billion V 33969 raise bid to 200 V 33970 was factor in company V 33974 seal fate of attempt N 33976 's fear of recession N 33977 filed suit in court V 33977 holds % of stock N 33977 made statements in filings V 33978 purchase % of shares N 33978 disclose violation of requirements N 33980 questioned legality of procedures N 33981 seek interest in Harley-Davidson N 33981 seek representation on board N 33983 posted drop in earnings V 33986 mark drop from quarter V 33989 attributed drop to volume V 33991 slipped % from period V 33993 reflect prices for products N 33994 offset prices for bar N 34000 improve performance in quarter V 34002 bears resemblance to activity V 34006 lack access to arena V 34007 are source of liquidity N 34009 play role in process V 34015 is father of panic N 34020 add power to markets V 34020 permits access to arena N 34021 provide liquidity to market V 34024 absorb orders without causing V 34025 reselling positions to investors V 34029 reflect judgment of participants N 34030 passed Act of 1975 N 34035 is chairman of company N 34040 had wind at backs V 34043 lower risks in portfolio V 34044 favor shares of companies N 34047 take investors by surprise V 34052 force price of issued N 34053 pay interest than do N 34058 are bet in recession V 34060 hurts price of bonds N 34062 paying investors in cases V 34063 makes sense for corporations V 34065 be the of all N 34076 carrying level of cash N 34076 means equivalents as funds N 34082 engineered month after month N 34084 's kind of task N 34086 ride waves through times V 34087 earned return from stocks N 34098 began average of months N 34103 jettisoning stocks during recession V 34104 have number of suggestions N 34105 advocates issues with ratios N 34106 outperform others during market V 34108 discard stocks in companies N 34112 is gauge of health N 34115 choosing stocks in industries N 34118 offers tip for investors V 34121 covers issues from bureau V 34123 shows number of times N 34123 outperformed Standard during months V 34127 improve returns on a N 34128 is one of offerings N 34129 sell bonds of company N 34131 slash size of offering N 34137 demanding equity as part V 34138 take risk in market V 34141 view it as the V 34142 lure buyers to the V 34142 offering bonds with rate V 34144 buy total of % N 34146 reduce holdings by each V 34148 showed gains in the V 34156 drain reserves from system V 34157 move any than % N 34158 charge each on loans V 34159 considered signal of changes N 34167 sold billion of bills V 34168 was % at auction V 34180 capped movement in sector V 34183 left grades in range N 34191 was a from Authority N 34194 lagged gains in market N 34195 speed refinancing of mortgages N 34197 be prepayments on securities N 34197 paying par for them V 34200 widened point to 1.48 V 34204 awaited night by Chancellor N 34206 ended 0.03 at 95.72 V 34206 ended point at 99.85 V 34208 wants money for food N 34216 giving money to panhandler V 34223 reviews hundreds of charities N 34223 measuring them against standards V 34227 sort causes from ripoffs V 34228 know charity from one V 34230 put million into kitty V 34231 sued charities in court V 34233 get share of donations N 34234 spend % of income N 34234 spend % on programs V 34236 finance transplants for children V 34238 suing charity for fraud V 34240 spending lot on raising V 34243 spend share of income N 34243 spend share on raising V 34245 limiting right to freedom N 34247 put seven of them N 34249 has 10 of drumming N 34249 drumming funds for soliciting N 34250 pay attention to using V 34250 using prizes as inducement V 34251 solicit donations for Foundation V 34255 denied allegations in court V 34256 target some of miscreants N 34259 informing public about some V 34261 be statement on solicitation N 34262 putting statements on solicitations V 34263 win 5,000 in bullion N 34263 offers chance to giving V 34264 's inches in pages V 34267 ride coattails of the N 34269 using part of name N 34272 using logo of Mothers N 34272 using logo without permission V 34273 sent check for 613 N 34277 is reporter in bureau N 34279 washed hands of efforts N 34279 revive bid for parent N 34281 withdrew support for bid N 34281 withdrew support in statement V 34282 obtain financing for the N 34286 had series of setbacks N 34291 leading end of buy-out N 34291 provided investors with assurances V 34295 contributing concessions to bid V 34297 represented % of contribution N 34298 received stake in UAL N 34300 reflect drop in stock N 34301 dropped 1.625 to 190.125 V 34305 be party to rejection N 34306 distancing itself from transaction V 34307 approved plan at meeting V 34307 arranging financing for contribution V 34308 place blame on counterparts V 34310 have thoughts about transaction V 34311 curtail stakes in carriers V 34313 following briefing by advisers N 34314 take control of airline N 34317 obtain billion in financing N 34318 rose % in June V 34322 increased % in period V 34323 rose % in period V 34324 favoring cut in tax N 34324 placing obstacle in path V 34325 reduce tax on gain N 34330 is setback for Bush N 34330 needs support of Democrats N 34330 pass cut through the V 34341 attaching amendment to bill V 34342 lay groundwork for fight N 34345 exclude % of gain N 34346 rise points for year V 34346 reached maximum of % N 34348 reduce gains by index V 34351 create benefits for accounts N 34354 realizing benefits of effort N 34355 was million on revenue V 34356 reported loss of 520,000 N 34358 included benefit of 1,640,000 N 34364 expand business in region V 34366 including amount of coal N 34367 undertaken streamlining of aspects N 34372 pays % of cost N 34375 multiply quarter by four V 34381 reported loss of 134,000 N 34381 reported loss on revenue V 34383 developing plants with partner V 34390 sell interest in building N 34391 buy building at Plaza N 34391 buy building for sum V 34393 was payment for land N 34395 is part of strategy N 34395 consolidate offices under roof V 34399 sell building for million V 34401 vacating feet of space N 34405 remove asbestos from premises V 34406 SHAKE hands with Orwell V 34415 record event as correction V 34419 hear lot of stuff N 34419 hear lot from people V 34420 carries connotations from correction V 34420 raise brokers on phone V 34426 convey sense of expertise N 34434 use part of money N 34440 remain favorite with investors N 34447 is prospect than was N 34448 suffered volatility in years V 34449 blames that on advent V 34454 is company at risk N 34456 read stories on additions N 34456 making loans to countries V 34457 read something like this N 34464 elected Buffett to board V 34464 increasing number of directors N 34465 bought million of stock N 34466 paid a on the V 34473 offered contracts in history N 34474 give stake in profits N 34474 buy company for million V 34476 make movies for Bros. V 34477 was culmination of work N 34479 filed a in Court V 34482 occasion clash of titans N 34485 is lawyer with string N 34487 are producers in Hollywood N 34490 had summer with II V 34490 get it in business V 34493 buy rights to seller N 34497 acquired rights in 1979 V 34497 nursed movie through scripts V 34498 direct movie of novel N 34499 start shooting in months V 34499 discussing development of script N 34503 blame Guber for problems V 34508 describe Guber as powerhouse V 34512 has fans in Hollywood V 34512 characterize him as something V 34513 gets reviews as whiz N 34519 got plenty of summer N 34519 got plenty for romance V 34524 rub people in Hollywood N 34525 shepherded Flashdance through scripts V 34525 take credit for film V 34528 are producers of movie N 34534 was one of the N 34535 is head at Corp. N 34537 take kernel of idea N 34538 had competition for story N 34538 became Gorillas in Mist N 34539 made deals with government V 34540 made deals with gorillas V 34541 co-produce film with Peters V 34542 beat producers for rights V 34542 fought developers in forest V 34543 courted widow for months V 34543 showing tape of Gorillas N 34543 impress her with quality V 34546 caused rift between widow V 34554 got start in business N 34554 got start at Columbia V 34555 overseeing films as Way N 34558 produced number of hits N 34558 produced number for Warner V 34560 make it in lawsuit V 34560 paint producers as ingrates V 34568 release producers from contract V 34569 interest Semel in becoming V 34569 advised them on deal V 34571 got look at books N 34573 sold stake in Barris N 34573 sold stake to investor V 34574 extend agreement with contract V 34575 considered the of kind N 34578 indemnify producers against liability V 34579 paying price for company V 34579 had revenue of million N 34588 requested release in advance V 34592 get pound of flesh N 34592 get pound from Sony V 34593 demanded things as rights N 34595 taking it with Warner V 34597 released Puttnam from contract V 34604 earn ratings from agencies V 34609 Take bunch of loans N 34609 tie them in package V 34609 sell pieces of package N 34609 sell pieces to investors V 34616 becoming one of products N 34617 transformed variety of debt N 34617 transformed variety into securities V 34620 was issue of bonds N 34623 is heyday of debt N 34628 pushing investors into market V 34630 expect offerings of securities N 34631 takes pool of credit-card N 34631 sells them to trust V 34634 opened source of funds N 34634 opened source to issuers V 34634 providing investment for institutions V 34638 offered yield of point N 34639 's difference of year N 34642 becomes consideration on basis V 34645 recommend issues for individuals V 34646 purchased issues for individuals V 34647 buying issues in quantities V 34647 earn spreads over Treasurys N 34653 know value of bonds N 34654 are listings for securities N 34658 represent interest in trust N 34668 get yields on paper N 34670 affect ratings of issues N 34672 wreak havoc on assets V 34675 widen yield between Treasurys N 34679 issue cards to public V 34679 giving cards to spenders V 34680 place premium on issues V 34687 is reporter in bureau V 34694 conducted summer by Erdos V 34694 taken advice to heart V 34695 providing look at portfolios N 34697 spreading wealth among alternatives V 34697 protected themselves against squalls V 34702 provides glimpse into thinking N 34703 found them in mood V 34718 expect increase in price N 34732 had investments of size N 34734 taking news as sign V 34739 sell stock in months V 34746 totaled tons in week V 34749 was tons from tons V 34751 leased facilities to Inc. V 34752 holds interest in facilities N 34753 lowered rating on million N 34755 lowered rating on million N 34756 expects National of Phoenix N 34756 make provisions against portfolio N 34759 steal information from companies V 34759 share it with companies V 34760 is threat to security N 34760 is threat to survival N 34763 spend dollars for receiver V 34764 position themselves near dish V 34766 set him with information V 34768 spend million on security V 34768 spend billion by 1992 V 34771 increase chances of doubling N 34775 provided definition for campaign N 34777 cited case of trader N 34777 pick cargo of crude N 34780 reaching agreement with Ltd. V 34781 spend dollars over years V 34783 made bid of million N 34783 made bid of million N 34784 seeking injunction against bid V 34785 drop opposition to ownership N 34786 forms basis of suit N 34787 enhance development in Canada N 34790 transfer technologies to Connaught V 34792 leading index of stocks N 34792 leading index to advance V 34793 soared 3 to price V 34795 leaped points to 470.80 V 34797 jumped 10.01 to 463.06 V 34798 rose 5.04 to 460.33 V 34801 gained 18.11 to 761.38 V 34802 posted gains of 8.59 N 34803 climbed 8.17 to 458.52 V 34803 rose 3.97 to 545.96 V 34807 was dearth of sellers N 34808 's pressure on stocks N 34809 followed report of improved N 34811 raised estimates for company N 34811 raised estimates in weeks V 34814 jumped 1 to 42 V 34814 jumped 7 to 30 V 34814 gained 1 to 10 V 34814 rose 3 to 25 V 34818 surged 1 to 23 V 34819 climbed 1 to 23 V 34821 followed report of a N 34825 surged 1 from price V 34827 dropped 7 to 6 V 34829 lost 3 to 14 V 34830 lowered estimate for company N 34831 advanced 5 to 36 V 34832 make bid for company V 34834 been game of Series N 34835 was five in afternoon N 34837 remembering contempt for colleague N 34837 watch Tigers on afternoons V 34839 have intimacy of Stadium N 34840 liked friendliness of people N 34841 was sense of history N 34842 ratifying occurrence for millions V 34845 buy postcards with postmarks N 34846 paid 5 for book V 34857 remembered quake of '71 N 34866 was eyewitness of event N 34878 understood point of all N 34881 see pictures of section N 34883 causing plume of smoke N 34890 record car in front N 34895 puts blame on market V 34897 caught businesses by surprise V 34897 print commentaries on Fridays V 34907 maintained weighting of stocks N 34915 create hardships for workers N 34917 keep pace with inflation V 34917 creating source of unrest N 34919 surged % in 1988 V 34919 peaked February at % V 34920 restrict operations to two V 34921 prodding economy to efficiency V 34923 shell subsidies to enterprises V 34923 ate billion in bailouts N 34925 re-emphasize preference for ownership N 34929 pump life into economy V 34932 bring economy to collapse V 34933 was decision of People V 34933 allocate billion in loans N 34933 pay farmers for harvest V 34934 pumping money into economy V 34934 bring relief to industries V 34939 fell % for month V 34941 extend credit to shopkeepers V 34945 reinstate write-off for contributions N 34946 make eligible for taxes N 34949 protect deduction for expenses V 34950 restore treatment for gains N 34953 expand deduction for accounts N 34954 calls frenzy of legislating N 34956 stripped all of breaks N 34960 see unraveling of it N 34964 hear pleas of cities N 34970 protesting omission in Bush N 34971 contemplates treatment of gains N 34971 be part of it N 34974 sent letter to tax-writers V 34977 gave advantage over others N 34978 tax people with incomes N 34979 scrap treatment of gains N 34979 curtail use of losses N 34992 climbed % for months V 34994 rose % to 215,845 V 34996 likened writer to pitcher V 35000 predicting course of career N 35002 left chapters of book N 35009 keep hands off each N 35013 spins it into involving V 35013 hang hats in worlds V 35014 's cameo by Ohls N 35015 bears resemblance to prose N 35017 are grounds for complaint N 35020 working streets of Hollywood N 35022 is editor at Magazine V 35023 spent years as editor V 35024 been importer of news N 35027 is publisher of magazine N 35028 relaunched month by company V 35030 is one of a N 35030 taking steps into publishing N 35030 making investments in entertainment V 35031 retained number of brokers N 35034 are deals in works N 35034 rule transaction of size N 35040 targets executives with advertisers V 35042 receives calls from bankers V 35043 appointed president of Reader N 35045 are franchise as is N 35046 posted gains for quarter V 35046 reported declines for period V 35048 included sale of building N 35049 reflecting declines in sector N 35052 increased % to million V 35052 putting West over mark V 35053 increased % to million V 35055 was impact of activity N 35062 increased % to million V 35063 added lines in quarter V 35072 took toll on earnings V 35073 hurt installation of lines N 35073 hurt installation in quarter V 35074 reported increase of lines N 35077 bolstered efforts for telephone N 35080 rose % to million V 35082 rose 1.25 to share V 35085 reduced million by items V 35086 posted earnings of million N 35088 is quarter for us N 35089 increased % to million V 35091 a-Includes gain of million N 35091 a-Includes gain from sale V 35093 plunged % to million V 35111 recorded profit of million N 35111 recorded profit in quarter V 35117 elected directors of this N 35117 boosting board to members V 35123 forecasts decline for retailers N 35123 averaged % in 1988 V 35125 entering season in turmoil V 35126 expect divergence in performance N 35127 lose customers to chains V 35130 rise % to % V 35134 pose threat to stores N 35135 guarantees delivery of orders N 35136 get it by Christmas V 35136 sells accessories through mail V 35139 summed outlook for season N 35146 includes results of stores N 35151 creating opportunity for stores N 35153 put purchasing until minute V 35155 save month for everyone V 35156 won Prize for literature N 35157 enjoys renown for books V 35158 battled fascists during War V 35158 depict country with population N 35159 read story of Duarte N 35159 stabbed mother to death V 35159 awaits end in cell V 35161 endure sun of plains N 35162 was one of ones N 35164 tours Spain in Rolls-Royce V 35168 have conversation behind one V 35173 pour drop of water N 35175 is word in text N 35178 know quality of works N 35184 take charges of million N 35184 take charges in quarter V 35187 earned million on revenue V 35190 cover overruns in subsidiary V 35192 correct problems with boilers N 35194 arrives week for summit V 35194 commemorate century of democracy N 35195 pay service to nonintervention V 35195 safeguard countries from onslaught V 35196 is tip of iceberg N 35201 gathered week in Peru V 35201 take posture toward dictator N 35204 invite Chile to summit V 35206 upgrading Sandinistas to status V 35207 made opposition to presence N 35209 postpone decision on Contras N 35210 delaying the of Contras N 35211 enlist backing for position N 35211 stop march of agenda N 35212 promote disbanding of rebels N 35213 praised Sandinistas for system V 35214 unblock million in assistance N 35215 was gist of talks N 35218 emboldened initiatives in America N 35219 following conversations with Secretary N 35220 prolong suspension of shipments N 35220 prolong suspension after election V 35223 followed discussions with Baker N 35223 seeking accommodation with Soviets N 35223 seeking accommodation in America V 35224 declared symmetry between aid N 35227 establish station in part V 35228 was purpose of Rica N 35233 generate awareness of being N 35235 voiced expectations of action N 35241 is part of the N 35241 buy business in August V 35243 including sale of hotel N 35245 reflected results as results N 35250 asking holders for permission V 35256 provides three to those V 35257 sell advertising in programs N 35261 owns WWOR in York N 35261 purchase stake in Group N 35261 purchase stake from Inc. V 35262 including WTXF in Philadelphia N 35264 supplies programs on Saturdays V 35268 spent lot of money N 35268 building group of stations N 35269 offer stations on Wednesdays V 35270 planning night of series N 35272 held discussions with unit V 35272 owns stations in cities V 35281 exchange each of shares N 35283 form bank with assets N 35285 be operations of companies N 35286 be chairman of company N 35288 proposed merger in July V 35293 had presence among markets N 35296 is president of Popular N 35304 reflecting days in quarter N 35306 announcing plan of million N 35309 cut orders for engines N 35309 lay workers in area N 35309 shut plant in York N 35309 shut plant for weeks V 35312 is one of companies N 35312 operate system in Pakistan V 35314 know value of contract N 35316 operate system in Pakistan N 35316 operate system with AB V 35317 won approval for restructuring N 35318 received approval from voting N 35318 spin billion in assets N 35319 sell units as Field N 35319 float paper via issues V 35322 acquired shares for pence V 35324 cease purchases until 22 V 35325 rose pence to pence V 35326 sets stage for process V 35332 gain approval for change N 35335 had income of million N 35335 took charge of million N 35335 dropping development of system N 35337 cited gains for increase V 35338 puts company in position V 35340 posted increase in income N 35346 completed acquisition of unit N 35347 sell unit to Reebok V 35348 purchase shares of CML N 35348 purchase shares at share V 35350 seek buyers for subsidiary N 35353 had sales of million N 35355 have timetable for sale N 35355 starts search for buyer N 35359 prevented collapse of columns N 35360 was prelude to plan N 35360 retrofit section of freeway N 35360 retrofit section with casings V 35362 was aspect of quake N 35364 break some of slabs N 35365 lift chunks of debris N 35366 deny existence of work N 35368 restricted availability of funds N 35369 was part of a N 35370 was part of effort N 35371 began work after tremblor N 35372 installing series of cables N 35372 prevent sections of roadway N 35373 completing installation of jackets N 35375 encasing columns with steel V 35375 connecting them to roadbed V 35378 provoked anger among officials N 35380 is chairman of committee N 35389 allow time for Commission N 35390 exchange 168 for each V 35396 exchange each of shares N 35396 exchange each for shares V 35398 taken role in aid V 35398 pledging billions of dollars N 35399 encourage pressure for change N 35399 arranging benefits for Poland N 35401 taking place in Union N 35401 aroused hope in states V 35402 Addressing conference of the N 35403 create order in Europe N 35405 are supporters of request N 35406 want programs of development N 35410 reward Poland for moves V 35411 make investments in ventures N 35413 plans million in aid N 35414 take promise of marks N 35418 increased credit by marks V 35420 arranged credit for Union V 35420 set offices in Hungary N 35425 grown % in climate V 35427 attributed jump in net N 35427 attributed jump to sales V 35428 cited demand for products N 35433 purchased building in Segundo N 35435 opened door on subject V 35436 is sign for rest N 35438 was question for litigation V 35438 find security in absolutism V 35441 detected Bush in waffle V 35445 was wiggle than waffle N 35447 adapted language from exceptions N 35454 counseled kind of compromise N 35458 made statement to committee V 35462 are both on defensive V 35464 giving points of support N 35467 are substitute for principle N 35469 's that in administration V 35470 lost chance for job N 35471 gave answers on abortion V 35474 surrounding him with deputies V 35475 spends billions on both V 35476 makes handful of decisions N 35479 frame issue in ways V 35480 favor consent for abortions N 35482 banning abortions in trimesters N 35490 Excluding earnings from discontinued N 35493 had profit from discontinued N 35495 jumped 1.375 to share V 35499 offset declines in production N 35501 dropped % to million V 35502 fell % to million V 35506 fixed prices for services N 35507 use bureaus in states V 35509 acquired Safeco in 1987 V 35509 changed name to Co V 35510 fixing rates in states V 35511 issued complaint in case N 35511 issued complaint in 1985 V 35516 sell dollars of debentures N 35516 sell dollars to group V 35518 sell estate in swoop V 35521 is chairman of Corp. N 35521 merge hundreds of associations N 35522 sell network of offices N 35523 holds assets of thrifts N 35531 rated double-A by Moody V 35538 are million of bonds N 35541 rated triple-A by Moody V 35547 bring issuance to billion V 35548 yield fees via Italiana V 35550 yield % at the V 35551 yield 16.59 via Corp V 35555 declining points to par V 35557 issued marks of bonds N 35557 issued marks via Bank V 35561 yield % via Bank V 35570 give information than read N 35572 pick stories on selected N 35572 pick stories off wires V 35575 manage network at firm N 35576 provides editors for networks V 35577 see it as plant V 35578 carries wires into computer V 35581 containing words as takeover N 35592 selects stories from countries N 35593 need moment by moment N 35595 takes stream of data N 35595 turns it into knowledge V 35596 have cost of 2,000 N 35596 provides text of articles N 35596 provides text under agreements V 35598 want releases on announcements N 35602 weigh value of article N 35603 compares position of words N 35606 code releases by topic V 35606 select items for subscriber N 35609 write abstracts of articles N 35613 is collection of memos N 35615 licensed technology from Institute V 35615 develop it for use V 35616 devised ways for E-mail V 35616 requires action in couple V 35618 set it for mode V 35618 bother me with reports V 35621 put logos on mail V 35622 have format on screen V 35623 have clues of paper N 35626 pay 404,294 in bonuses N 35626 pay 404,294 to Kelly V 35627 awarded 196,785 to attorneys N 35630 been player in arena V 35632 ended dispute between Witter N 35634 offered million of debentures N 35634 offered million at par V 35637 reflecting gains in tobacco N 35638 has businesses in insurance N 35639 reflect change in accounting N 35641 rose % to million V 35642 rose % to million V 35644 included million from discontinued V 35646 rose % in quarter V 35647 rose 1.75 to 73 V 35654 intensify look at plans N 35654 giving breaks on dividends N 35654 raising taxes on trades N 35655 opposed nomination to post N 35660 pushing Jibril as alternative V 35662 stripping it of the V 35663 blames clash on miscommunication V 35663 carried offer to him V 35663 speaking English at time V 35667 show signs of maturity N 35668 continue ban on research N 35669 had reservations about prohibitions N 35670 increase demand for abortions N 35674 have ways on issue N 35678 solidify majority on court N 35679 has vacancies on the N 35679 considered warm-up for nominees N 35681 put struggle against him N 35685 puts statements in Record V 35685 attributing votes to conflicts V 35688 declared quarterly of share N 35690 pay dividends from flow V 35693 form team for contest V 35700 awarded Cup to team V 35701 Pending appeal by team N 35708 have firm in backyard N 35708 have firm than incinerator V 35709 live door to incinerator N 35715 outweigh risk to environment N 35716 owns work of art N 35721 questioned officials about it V 35726 seeking comment on decision N 35727 pay Hoelzer for services V 35730 keeping binge of corn N 35731 bought tons of corn N 35731 bringing purchases to tons V 35735 bought amount of contracts N 35737 bought contracts for possession N 35738 protect themselves from swings V 35739 pushed prices of contracts N 35740 subsidize sale of oil N 35741 dumped inches in parts V 35744 used jump in prices N 35744 sell crop to companies V 35750 fell ounce to 370.60 V 35751 eased ounce to 5.133 V 35753 was increase of % N 35755 reduce staff by 15,000 V 35755 was demand for bullion N 35755 putting pressure on gold V 35760 rose pound to 1.2795 V 35761 fell total of cents N 35761 fell total during days V 35761 signal slowing of economy N 35761 reduced demand for copper N 35763 are shippers to Japan N 35764 cut some of purchasing N 35765 be need for copper N 35767 fell barrel to 20.42 V 35769 rose cents to 20.42 V 35773 been epicenter of activity N 35774 seeking services of the N 35775 keep city for time V 35778 afforded agencies in cases V 35786 be litigation over omissions V 35793 have success in pursuing V 35799 exposing entities to liability V 35804 be race to courthouse N 35807 set shop on sidewalk V 35808 promised assistance to victims N 35809 monitor conduct of lawyers N 35812 begun proceedings in London V 35812 prevent use of name N 35816 added name of affiliate N 35817 's lot of emotion N 35822 keeping work in England V 35823 keep million with firm V 35824 lose revenue for audit V 35825 make one of firms N 35830 accused officials in area N 35832 win war on drugs N 35840 delayed consideration of sites N 35841 exaggerated amount of assistance N 35842 provide million in support N 35843 taken custody of inmates N 35847 pondering question of preparedness N 35849 see them through disaster V 35852 set offices in regions V 35855 be cornerstone of plan N 35857 distribute memo of Tips N 35857 distribute memo to employees V 35860 keep supplies at work V 35864 handle queries from employees N 35868 scheduling drill for November V 35869 had one in afternoon V 35874 equipping trailer with gear V 35875 used some of equipment N 35875 used some during quake V 35881 maintains flashlights in offices V 35881 changes supply of water N 35886 enters Gulf of Mexico N 35889 down operations in stages V 35891 are tons of things N 35895 put mechanisms in place V 35898 pursue claim against Board N 35898 closed Association of Irving N 35899 relinquished control in exchange V 35899 drop inquiry into activities V 35900 contributed estate to assets V 35902 dismissed year by Judge V 35902 offers protection for actions N 35903 upheld dismissal of claim N 35903 reconsider claim for loss N 35904 cause deterioration of American N 35909 representing 'd of restaurant N 35910 seeks damages of million N 35911 prohibits discrimination on basis V 35913 told employer in February V 35920 made offer to Levine N 35920 made offer on 10 V 35923 representing five of defendants N 35926 put practices on hold V 35927 pays tab as lawyers V 35930 urged acquittal of judge N 35930 urged acquittal in brief V 35932 was chairman of committee N 35932 heard evidence in case N 35935 opening boutique in Richmond N 35937 opened office in Buffalo N 35938 added partners to office V 35940 facing comparisons through 1990 V 35941 register income because gain V 35942 fell % to million V 35945 mirror those of industry N 35946 represents half of volume N 35949 be year in advertising N 35950 see turnaround in trend N 35951 faces problem of publishers N 35956 facing comparison in future V 35963 celebrated anniversary of Monday N 35963 celebrated anniversary with spree V 35966 raised hopes for cuts N 35967 setting market from bell V 35969 brought gain to points V 35970 is % below high N 35973 soared 7.52 to 470.80 V 35973 soared jump in points N 35974 obtained commitments for buy-out N 35978 increases pressure on Reserve N 35978 be news for stocks N 35979 see lot of evidence N 35982 expect signs of weakness N 35982 expect signs during weeks V 35983 cinch case for shot V 35984 cut rate by point V 35992 outnumbered decliners by 1,235 V 35996 backed candidate since Stevenson V 35997 choose candidate for House N 35999 favor Republicans in races V 36000 captured percentage of vote N 36004 buy one of brands N 36005 casting votes on legislation N 36005 confers benefits on population V 36007 have incentive at margin V 36008 put Republican into office V 36011 limit benefits to voter N 36014 taken pattern over century V 36014 occupied role in society N 36014 confronting voters in races V 36015 hold Congress in disdain V 36016 have security in office V 36018 was defeat of 13 N 36019 placed emphasis on role V 36020 attracting candidates for office N 36022 field slate of candidates N 36024 held share of power N 36024 held share since 1932 V 36024 translate clout into benefits V 36024 keep Democrats in office V 36030 pay attention to concerns N 36031 have rates on votes N 36031 have rates to extent V 36033 exceeded rate since 1959 V 36034 allocate proportion of staffs N 36034 allocate proportion to offices V 36038 take pattern at level N 36040 is function of rate N 36043 makes reparations for Japanese-Americans N 36043 makes reparations after 1 V 36044 provides money for payments V 36046 providing billion for Departments V 36047 sets stage for confrontation V 36048 supports abortions in cases N 36048 support exemption beyond instances N 36049 puts position in House N 36049 pick support because wealth V 36050 funds Departments of State N 36050 funds Departments through 1990 V 36051 block counting of aliens N 36053 rescind million in funds N 36053 figured charges against leader N 36054 forced adoption of fees N 36055 anticipates million in receipts N 36055 anticipates million by change V 36056 include billion in funds N 36058 promise allocation of million N 36059 makes one of eclectic N 36060 scrapped all of request N 36061 chairs subcommittee for department V 36061 attached million for initiative N 36061 including work on television N 36062 wage war with board V 36063 curb authority of board N 36064 reverse efforts by corporation N 36064 cut funds to organizations N 36065 meet contributions to organizations N 36066 reflect increases from 1989 N 36066 shows cut from request N 36067 retained Markets as banker V 36067 regarding combination of thrift N 36069 extended relationship with Securities N 36071 turns himself to police V 36073 spilled guts on floor V 36077 getting deal in bill V 36079 applaud moment of epiphany N 36082 's form of rescission N 36083 return package of rescissions N 36083 return package to Hill V 36084 reject package with majority V 36088 were users of power N 36088 saw chance against Nixon N 36090 feel remorse about chickens V 36091 sent rescissions to Hill V 36093 serve constituents with goodies V 36094 offer proposal as amendment V 36094 raise limit before end V 36099 put figure on it V 36100 provide funds for repairs V 36104 completed days of drills N 36105 Echoing response of corporations N 36107 leaving hotel with rate V 36108 tallied wreckage to buildings N 36111 kept seven of machines N 36113 moved system to Monte V 36116 estimates damage at million V 36117 has total of million N 36117 excluding city of Gatos N 36118 causing majority of deaths N 36125 is money on hand N 36130 seeking changes in rules N 36133 totaled million to million N 36135 dropped inches after quake V 36135 wreaking damage to one V 36138 include damage to arteries N 36141 get grasp on volume N 36143 were lot of cars N 36144 delivering check for 750,000 N 36144 delivering check to business V 36145 is part of syndicate N 36145 pay employees during weeks V 36146 eliminate cap on amount N 36147 provides % of aid N 36147 provides % for days V 36149 pick remainder of cost N 36150 extend period for funding N 36150 extend period for months V 36152 expedite service to victims N 36153 take applications for relief N 36153 take applications by phone V 36155 cross Bridge between Oakland N 36157 calling flotilla of vessels N 36157 expand service across bay N 36160 go fishing for while V 36169 become catalyst for process N 36170 accepting government in capital N 36172 end war for control N 36174 including communists in governments V 36176 building one of armies N 36177 opening door to domination V 36179 complicates scene in Cambodia N 36179 are the of groups N 36182 sent thousands of laborers N 36182 building equivalent of Wall N 36182 building equivalent near border V 36183 carry record for tyranny N 36184 caused deaths by execution V 36185 was form of relief N 36186 credit reports of genocide N 36190 backs idea of coalition N 36191 backed sorts of ideas N 36191 backed sorts over years V 36194 lend support to killers V 36197 sending aid to non-communists V 36198 put plan on hold V 36201 deprived people of means N 36201 settle fate with honor V 36202 named president for Times N 36202 has interests in publishing V 36203 been president for advertising N 36204 takes responsibility for distribution N 36205 been director for America N 36207 fell % to million V 36213 report loss of million N 36215 declared FileNet in default V 36216 has basis of default N 36216 reviewing rights under contract N 36216 predict outcome of dispute N 36221 received contract from Co. N 36221 manage activities for plants V 36222 disclose value of contract N 36223 buys gas from Clinton V 36224 line number of contracts N 36225 is specialist in gas N 36225 save amounts of money N 36230 watching commercial for Beer N 36231 take advantage of that N 36234 taken some of swagger N 36234 increased resentment of outsiders N 36235 passing series of tests N 36241 leaving Texans with hunger V 36247 developing theme at Group V 36247 made couple of calls N 36247 reported findings to team V 36252 invested 100,000 in CDs V 36253 is one of thrifts N 36254 thumbs nose at Easterners V 36255 stressing commitment to Texas N 36257 follow one of tracks N 36259 haul buddies to club V 36261 wraps itself in pride V 36261 is part of lifestyle N 36262 's part of style N 36264 pitching themselves as lenders V 36267 sign Declaration of Independents N 36269 featuring shots of Alamo N 36271 con us with a V 36276 handle million to account N 36278 awarded account to LaRosa V 36281 pull ads from magazines V 36282 produced version of commercial N 36283 is part of campaign N 36286 exceed projections of million N 36286 exceed projections for year V 36286 be cents to cents N 36287 were million on sales V 36289 expect loss in quarter N 36290 had income of million N 36290 had income on sales V 36291 attributed slide to delays V 36293 got lot of balls N 36293 got lot in air V 36297 place emphasis on quality V 36298 been key to success N 36298 carved niche as seller V 36300 reducing chances of takeover N 36300 reached accord for PLC N 36301 owning interest in company N 36302 owns stake in Life N 36302 make bid for insurer N 36303 buy holding in Life N 36303 sell stake to TransAtlantic V 36304 buy assets of companies N 36305 had income of 319,000 N 36307 signed letters of intent N 36309 offset decline in income N 36312 advanced % because buy-back N 36313 declined % to billion V 36315 fell % to million V 36316 dropped % to billion V 36317 include gains of million N 36318 include gain of million N 36319 offered million in debentures N 36319 offered million through Co. V 36322 including expansion of operations N 36325 rose % to francs V 36326 reflected gain from offering N 36328 had profit of francs N 36330 forecast earnings for 1989 N 36330 are indication because elements N 36331 depress values in term V 36333 drag prices in neighborhoods V 36337 create system for communities N 36338 boasts some of prices N 36340 demolished dwellings in district N 36340 demolished dwellings because damage V 36344 revive interest in law N 36346 expand all of operations N 36347 put all of eggs N 36347 put all in basket V 36348 prod companies in industries N 36348 moving operations to locations V 36349 compared it with cost V 36350 compare costs with cost V 36354 included gain of 708,000 N 36356 rose % to million V 36358 has activities under way V 36360 is maker of paper N 36363 follows agreements between producers N 36366 increased % to billion V 36369 dropped % from quarter V 36371 rose % to kilograms V 36372 increased stake in Ltd. N 36372 increased stake to % V 36375 acquired stake in Forest N 36375 bought interest in company N 36375 bought interest from Ltd V 36376 raising interest in Forest N 36376 raising interest to % V 36377 acquire interest in Forest N 36379 extend authority over utilities V 36380 open way for services N 36382 regulated companies in Quebec N 36383 opposed regulation of companies N 36385 extend loan until 1990 V 36386 omit dividends on shares N 36389 took control of board N 36394 had million in assets N 36397 approved assumption of deposits N 36399 had assets of million N 36400 assume million in accounts N 36400 pay premium of million N 36401 buy million of assets N 36401 advance million to bank V 36403 reported loss of francs N 36405 transfer shareholding in Commerciale N 36405 transfer shareholding to company V 36406 give control of Commerciale N 36408 sell venture to units V 36409 licenses portfolio of applications N 36410 formed Discovision in 1979 V 36412 investing million in business V 36412 ceased operations in 1982 V 36413 has agreements with manufacturers N 36421 climbed 266.66 to 35374.22 V 36424 rose points to 35544.87 V 36430 restored credibility of stocks N 36431 remain firm with trend N 36433 shift weight to side V 36434 rotated buying to issues V 36436 gained 130 to yen V 36436 advanced 60 to 2,360 V 36438 advanced 100 to 2,610 V 36438 gained 100 to 2,490 V 36439 attracted interest for outlooks N 36440 issue results for half V 36441 gained 50 to 2,120 V 36441 advanced 40 to 1,490 V 36442 gained 100 to 2,890 V 36444 lost 5 to 723 V 36444 slipped 6 to 729 V 36445 fell 44 to 861 V 36446 finished points at 2189.3 V 36447 ended 13.6 at 1772.1 V 36452 showed growth in lending N 36452 keep pressure on government V 36454 gained 20 to 10.44 V 36456 gained 6 to 196 V 36457 recovered ground on demand V 36458 ending 15 at 465 V 36459 jumped 10 to 10.13 V 36463 purchased shares at 785 V 36471 schedule meeting with him N 36473 invited mayor to meetings V 36475 return calls from Sununu N 36476 is support for disaster N 36478 accompany Bush on tour V 36481 pending appeal of measures N 36483 accused Semel of conduct N 36485 appealed decision to Commission V 36488 paid 211,666 of fine N 36493 buy million of loans N 36493 offers types of loans N 36493 offers types to people V 36495 makes market in loans N 36496 buys loans from lenders V 36496 packages some into securities V 36496 holds remainder in portfolio V 36497 launch fight against board V 36498 elect majority of board N 36498 elect majority at meeting V 36499 have comment on plans N 36501 owns 300,000 of shares N 36502 bought 55,000 of shares N 36503 filed suit in Court V 36505 prompted speculation of rates N 36507 brought gain to points V 36509 climbed % in September V 36511 leaving group without partner V 36512 raised questions about efforts N 36512 revive bid for UAL N 36514 is setback for Bush N 36514 pass cut in Senate V 36520 prompting forecasts of results N 36522 unveil products on Tuesday V 36522 end some of problems N 36523 offering programming to stations V 36526 fell % for month V 36528 posted gain for quarter N 36530 won approval for restructuring N 36531 climbed % in quarter V 36537 negotiate details of contract N 36537 provide software for Center V 36539 awarded contract to CSC V 36539 sent contract to Board V 36540 completed contract for NASA N 36540 lost bid for renewal N 36542 had revenue of billion N 36543 RATTLED California amid cleanup V 36544 measuring 5.0 on scale N 36550 prohibit desecration of flag N 36552 considered victory for leaders N 36554 sent measure to Senate V 36555 quashed convictions of people N 36559 considered work of fiction N 36560 cited Cela for prose V 36562 considered development in week N 36562 including criticism from Gorbachev N 36564 threatened rallies against policies N 36565 raided meeting on rights N 36568 furthering democracy in Europe N 36569 monitor voting in Nicaragua N 36569 carrying proposals for elections N 36571 dispatched Wednesday by crew V 36571 conduct series of experiments N 36573 followed meeting in Madrid N 36574 bombarded capital of Afghanistan N 36574 airlifting food to forces V 36576 develop plan for withdrawal N 36578 acquit Judge in trial V 36583 anticipated rise in index N 36586 had influence on moves V 36587 disassociate itself from Street V 36591 reflects slowdown in economy N 36593 is measure of inflation N 36594 hold changes in policy N 36594 hold changes in check V 36594 leaving funds at % V 36598 drain liquidity from system V 36599 post gains against counterpart N 36600 's pit of demand N 36600 hold dollar at levels V 36602 remains bag for investors N 36603 dropped 1.60 to 367.10 V 36609 sell interests in hotels N 36609 sell interests in 32 N 36611 consider number of options N 36612 retain dividend of cents N 36613 had loss of 244,000 N 36614 posted rise in income N 36615 posted net of million N 36622 received billion of financing N 36622 received billion from Bank V 36622 arrange balance of million N 36625 received expressions of interest N 36625 received expressions from bidders V 36626 pursue inquiries from companies N 36627 is one of stories N 36628 presents problem for stock N 36632 knows all about predictability N 36636 held % of Block N 36638 do things with Code V 36639 sold the of holdings N 36642 hit high of 37 N 36644 has lot of fans N 36645 invested 10,000 in offering V 36659 sold amounts of stock N 36663 's growth in business N 36664 provides information to users V 36665 provides % of earnings N 36666 provides % of earnings N 36666 provides % on % V 36668 crimping profit at Pool V 36675 grow % to % N 36685 including dividend for quarter N 36686 convert stock into shares V 36687 is shares for 3 N 36693 lost some of mystery N 36696 offered idea of trading N 36699 been Board of lunchroom N 36700 buy list of stocks N 36702 paid 10,000 for seats V 36705 run volume of contracts N 36708 drew recognition from quarter V 36709 sued CBOE over system V 36711 appeal ruling in court V 36713 owns share of Seabrook N 36715 make payments on costs N 36718 reported earnings for companies N 36719 reported earnings for companies V 36720 report set of earnings N 36725 rose 1.75 to 52.75 V 36736 created loss of million N 36744 are guide to levels N 36775 seeking seats in GATT N 36777 was member of GATT N 36777 was member in 1947 V 36779 voiced opposition to bid N 36784 launch series of underwear N 36787 won appeal against size N 36788 slashed 40,000 from award V 36788 pending reassessment of damages N 36791 build condominium in Queensland V 36793 has stake in venture N 36796 halted construction of reactors N 36796 reassessing future of reactors N 36801 used account of magnate N 36802 cap emissions of dioxide N 36805 reduced dependence on fuels N 36807 meet opposition from environmentalists N 36808 publishing Dictionary of Superstitions N 36810 questioned size of bills N 36811 dialing service in U.S N 36814 's change from year N 36816 set schedules for plant V 36818 slapped rebates on vehicles V 36818 including incentives on Cherokee N 36829 cut output by cars V 36830 offer rebates on cars N 36831 make line at Chevrolet N 36834 eliminate production of trucks N 36839 includes domestic-production through July N 36842 reported drop in profit N 36843 posted income of million N 36843 including million in benefits N 36847 anticipate loss of principal N 36847 comprising million of credits N 36851 signed agreement with Aruba N 36854 install units at refinery V 36855 leasing site of refinery N 36855 leasing site from Aruba V 36856 closed it in 1985 V 36861 included results of divisions N 36861 sold 27 to chairman V 36862 attributed improvement to margins V 36865 is the in history N 36867 puts us on way V 36870 continuing operations for months V 36875 given notices of default N 36879 notified it of default N 36880 missed payment to Bank N 36887 makes devices for computers N 36887 reflects sales of products N 36887 holds library of cartridges N 36888 cost 400,000 to 500,000 N 36891 rose 1.125 in trading V 36892 had net of million N 36892 including gain for proceeds N 36895 approved exports to U.S. N 36896 export feet of gas N 36896 export feet over years V 36897 requires doubling of prices N 36898 including agreement on route N 36903 bring fields into production V 36904 building pipeline from delta V 36906 export feet to U.S. V 36908 sold businesses for million V 36910 sell investments in makers N 36910 sell investments to shareholder V 36911 provides services for generation N 36918 made part of assets N 36919 been decline in importance N 36923 remained component of assets N 36926 accumulate wealth across spectrum V 36940 sent letter to Corp. V 36940 clarifying offer for LIN N 36942 take position on offer N 36943 revised offer to 125 V 36944 seeking % of concern N 36944 buy holders at price V 36949 acquire interests in markets N 36950 have rights to acquisition N 36951 depress value of LIN N 36953 enable buyers as companies N 36954 fell % to million V 36955 rose % to million V 36959 had loss of million N 36962 rose 1.50 to 64 V 36963 rose % to million V 36964 increased % to billion V 36970 Had views on sex N 36973 is organization for companies N 36975 be piece of company N 36976 has revenue of million N 36981 put pressure on organization V 36982 is beginning of sale N 36984 working agreement with Helmsley N 36988 help woman with packages V 36991 stuff them into envelopes V 36994 is worker in sight V 36998 opening facilities to races V 36998 storming beaches of Cape N 36998 releasing leaders of Congress N 37000 take name from William V 37000 is abolition of apartheid N 37000 's perfection of apartheid N 37004 put them on fringe V 37005 is desire of right-wing N 37005 embraces one-third of whites N 37007 putting preaching into practice V 37013 fix lunch for rest V 37014 puts touches on course V 37015 build it by themselves V 37016 change way of life N 37017 end reliance on others N 37019 exclude blacks from integration V 37022 took development as opportunity V 37027 been domain of Afrikanerdom N 37030 is town of whites N 37044 thank God for them V 37045 made laughingstock of nation N 37050 turning integration of politics N 37053 compares Workers to ANC V 37054 is provision for aspirations N 37055 stop idea of Afrikaners N 37059 have cup of tea N 37065 take look at stocks V 37067 cut branches of portfolio N 37071 expect market for period V 37081 be candidate for sale N 37084 Substituting rule of thumb N 37084 Substituting rule for judgment V 37091 are ones with loads N 37095 obtaining financing for buy-out V 37100 COMPARE RATIOS WITH PROSPECTS V 37101 compare -LRB- with rates V 37103 pay times for company V 37109 been change in company N 37115 declined request for a N 37123 increasing board to 10 V 37125 reported jump in earnings N 37131 was % below million N 37133 was % below quarter N 37135 build reserve against loans N 37135 boosting provision to million V 37140 turned performance than competitor N 37140 posted return in quarter V 37141 reported return on assets N 37147 jumped % to billion V 37147 rose % to billion V 37148 rose % to billion V 37149 soared % to million V 37150 eliminating some of problems N 37151 resemble Tower of Babel N 37154 include lots of equipment N 37155 write software for instance V 37155 pinpoint problem on line V 37158 integrate products into operations V 37160 provide boost to market V 37161 is step in direction N 37165 dominated market for computers N 37166 gain share in arena N 37167 face climb against Digital N 37168 made commitment to sorts N 37169 gets % of revenue N 37169 gets % from market V 37170 generates % of revenue N 37170 generates % in market V 37170 take advantage of following N 37173 losing luster over couple V 37174 take advantage of capabilities N 37176 creates run in sheets N 37179 accept grade of polyethylene N 37181 become weapon for companies N 37182 tell salespeople for instance V 37183 get reading in way V 37185 halt imports of Scorpio N 37187 announced months to day N 37187 kills brand in market V 37189 was project with goals N 37190 is setback for Ford N 37190 showing signs of strain N 37191 losing ground to rivals V 37195 having problems in U.S V 37197 hobbling sales of imports N 37202 importing sedan from Germany V 37208 sold XR4Ti than dealership N 37209 had rating in studies V 37213 sell inventory of cars N 37214 acquiring % for 19.50 V 37214 find buyer for stake V 37215 appointed committee of directors N 37219 put stake in Line N 37220 has interests in transportation V 37220 took block off market V 37221 acquiring remainder of Line N 37222 owned stake in railroad N 37226 had loss from operations N 37230 include items of million N 37237 attributed buy-back to confidence V 37239 received resignation of Franco N 37242 discussing number of ventures N 37245 had parting with Holding N 37245 has number of ventures N 37245 has number under consideration V 37246 was decision with management N 37248 sells annuities to individuals V 37255 made debut in boxes N 37259 applied 1973 for patent V 37260 put models behind ears V 37266 constrains models to pencils V 37268 remains company among 10 N 37270 posted decline for quarter N 37271 reported net of million N 37272 reflected increase in rate N 37274 had profit of million N 37279 had increase in margins N 37280 are difference between yield N 37284 posted rise in earnings N 37285 reflecting drop in sales N 37290 masked weaknesses in businesses N 37293 excluding sale of Guides N 37296 negotiated settlement of lawsuits N 37300 cited conditions in units N 37304 licensed software to Association V 37306 sell access to package N 37306 sell access to members V 37308 be number of seats N 37310 produce sheet with flatness N 37311 estimated cost at million V 37313 named chairman of Ltd. N 37315 is director at Bank V 37318 made way to computers V 37318 link computers via lines V 37319 is one of outposts N 37334 shower us with glass V 37336 sent cloud of smoke N 37336 sent cloud into air V 37352 Was ft. on pier V 37359 come home to Marin V 37361 was smell of gas N 37362 see clouds across bay N 37366 see flames from Francisco N 37382 taken refuge under desk V 37388 was level of confusion N 37395 let dogs into house V 37395 noticed sounds above head N 37398 scooted them into run V 37399 were 20 below zero N 37401 saw pictures of 880 N 37414 threw me in air V 37438 exceeded estimates of 1.90 N 37446 clears way for consideration N 37449 opposed legislation in form V 37454 took position on bill N 37455 review purchase of % N 37456 gave control to interest N 37462 calling retreat from policy N 37463 welcoming allocation of resources N 37474 reappraised impact of disaster N 37475 settled points at 1758.5 V 37477 showing losses in trading N 37478 reappraise impact of disaster N 37480 including gains in value N 37481 rose pence to 10.03 V 37481 climbed 5 to pence V 37481 rose 3 to 290 V 37481 jumped 12 to 450 V 37482 advancing 3 to 344 V 37482 fell 2 to 184 V 37483 rose 5 to 628 V 37484 showed strength on comments N 37488 fend bid for B.A.T N 37489 shaken confidence in plan N 37490 buying % of Holding N 37490 buying % for francs V 37490 expanding ties with group N 37491 climbed 14 to 406 V 37492 jumped 14 to 414 V 37493 advanced 19 to 673 V 37493 contemplated battle between Motors N 37494 rose points to 35107.56 V 37499 rose points to 35242.65 V 37503 see effect on stocks N 37507 rotate choices over term V 37510 surged 95 to yen V 37513 gained 70 to 2,840 V 37516 rebounded day from slide V 37517 extend rise to session V 37520 was day for shares N 37527 followed drop of % N 37528 reported decline as % V 37529 suffering effects of battle N 37530 shown signs of recovery N 37530 relax clamp on credit N 37540 followed decline in August N 37541 slipped % to rate V 37541 following decline in August N 37542 dropped % to rate V 37542 rising % in August V 37544 are one of the N 37545 posted turnaround from year N 37546 posted net of million N 37548 included gain from sale N 37549 correct overstatement in subsidiary N 37550 had income of million N 37552 lost cents to 18.125 V 37553 reflects revenue from trading N 37556 fell % to million V 37556 reflecting slowdown of business N 37559 posted earnings in line V 37561 reported rise in earnings N 37561 posted increase in net N 37565 increased % in quarter V 37566 reflecting reduction of rates N 37572 reduced growth by points V 37576 received approval of XL N 37580 completed sale of businesses N 37580 sold interest in affiliate N 37580 announced reorganization of businesses N 37583 declined % because sale V 37584 were factor in drop N 37587 received order from Crossair N 37589 Lost Lot to Hugo V 37590 owned homes on Battery N 37592 perpetuate view of city N 37593 be one of disasters N 37596 Depicting people of city N 37597 show people of city N 37602 see spring in glory V 37604 sell interest in Systems N 37604 sell interest for million V 37605 is unit of Inc. N 37605 is unit of System N 37606 record gain of million N 37606 record gain from sale V 37606 offset reduction in value N 37607 guarantee financing for purchase V 37613 made one of companies N 37615 curtail role in subcontracting N 37616 replacing populism of Quina N 37616 open sector to investment V 37619 is part of conspiracy N 37619 turn oil to foreigners V 37620 takes criticisms in stride V 37621 is kind of leadership N 37623 produces % of revenue N 37624 make payments on debt N 37629 barring overhaul of operations N 37632 greeting visitor to office N 37636 assign % of all N 37638 keep commission on projects N 37639 was part of salary N 37641 reducing force to 140,000 V 37644 retaking instruments of administration N 37645 pegged savings at million V 37651 complements moves by government N 37651 attract investment in petrochemicals N 37653 reclassified petrochemicals as products V 37654 been symbol of sovereignty N 37657 makes apologies for attitude V 37658 become victims of isolation N 37663 seen doubling in number N 37667 bringing wives for counseling V 37669 noted doubling in number N 37671 setting time for themselves V 37672 Putting times on calendar V 37676 adopt four of suggestions N 37676 accept one in four N 37680 grant award of 604.72 N 37681 is 274,475 in Japan N 37685 spawns rise in dishonesty N 37686 places effect of buy-outs N 37686 places effect among challenges V 37687 take eye off ball V 37688 linked satisfaction to loss V 37696 adopt approach with monitoring N 37700 underscores difficulty for management N 37700 satisfying investors on score V 37703 get slice of pie N 37704 acquire business of Bancorp. N 37705 is part of trend N 37706 buy operation of Corp. N 37706 buy operation for million V 37707 includes accounts with million N 37710 is issuer of cards N 37713 becoming kind of business N 37715 bolster earnings by 3.25 V 37716 pursue opportunities in Southwest N 37717 was move for City N 37718 make acquisitions in Texas V 37720 seeking terms in bid V 37720 following collapse of bid N 37721 reduce size of investment N 37725 be party to rejection N 37726 confirming report in Journal N 37726 push stock for day V 37727 fell 6.25 to 191.75 V 37728 put million in cash N 37728 make million in concessions N 37729 pay million for % V 37734 received proposals from group V 37740 was chunk for us N 37741 obtaining stake in company N 37742 be point in favor N 37743 expect rate of return N 37746 holding coalition in face V 37747 representing group of pilots N 37747 filed suit in court V 37749 reduce seniority of pilots N 37749 reduce seniority in exchange V 37750 are members of union N 37753 reduce rate of increases N 37754 embraced strategy as way V 37754 control costs for employees N 37757 reduced level of expenditures N 37757 reduced level for purchasers V 37757 altered rate of increase N 37758 saw moderation in expenditures N 37758 seeing return to trends N 37762 made assessments of costs N 37768 reduces bills by % V 37770 evaluate appropriateness of treatment N 37771 is president of Hospitals N 37772 reduce cost of review N 37773 reduces use of resources N 37773 improves appropriateness of care N 37773 imposes burdens on providers V 37774 manufacture line of trucks N 37774 manufacture line in Britain V 37776 incorporate trucks into lines V 37777 expects agreement between companies N 37778 is example of trend N 37778 eliminating barriers within Community V 37779 invest total of francs N 37779 invest total in venture V 37779 including billion for costs N 37780 spend billion on tooling V 37781 represents savings for DAF N 37781 renew ranges of vehicles N 37784 have rights for range N 37785 offer vehicles through dealers V 37787 holds % of capital N 37788 is object of suggestions N 37788 is object for reasons V 37790 has kind of independence N 37790 has authority over one V 37794 is target for complaint N 37795 assigned blame for unpleasantness N 37797 changing term of chairman N 37797 shortening terms of members N 37797 eliminating presidents of Banks N 37797 eliminating presidents from process V 37797 putting Secretary of Treasury N 37797 putting Secretary on Board V 37797 putting expenditures in budget V 37797 requiring publication of minutes N 37805 buy worth of stuff N 37811 prevent recurrence of experience N 37812 were reasons for policy N 37813 yield improvement in output V 37816 had effect at all V 37817 Putting Secretary of Treasury N 37817 Putting Secretary on Board V 37818 is borrower of money N 37819 has longing for rates N 37820 is agent of president N 37820 gives weight to way V 37821 is member of club N 37821 is diversion from business N 37822 put secretary on board V 37823 interpret it as encouragement V 37824 interpret it as instruction V 37824 give weight to objectives V 37826 given color to notion V 37827 advise all about matters V 37827 are ingredients of stew N 37832 accept responsibility for exercise N 37834 is unwillingness of parts N 37835 leave decision to agency V 37836 prevents conduct of policy N 37836 are expectations of masters N 37836 consider consequences of policy N 37837 is responsibility of System N 37840 leave decision to Fed V 37840 retain rights of complaint N 37841 have objectives in addition V 37846 be competitors for attention N 37849 joined list of banks N 37849 boosting reserves for losses V 37851 had income of million N 37854 was million at 30 V 37856 pass House in Pennsylvania N 37857 require consent of parents N 37857 pass houses of legislature N 37857 override veto of Gov. N 37858 counter advance in arena N 37858 counter advance with victory V 37859 enact restrictions on abortions N 37859 enact restrictions in state V 37859 permit abortions for women V 37859 are victims of incest N 37860 mute claims of momentum N 37861 reflecting relief of compatriots N 37861 enact restrictions on abortions N 37866 hold hand in Pennsylvania V 37866 reflect viewpoints of citizens N 37867 established right of abortion N 37867 established right in place V 37868 ban abortions after weeks V 37868 avert death of mother N 37871 informed hours before operation N 37871 informed hours of details V 37872 opposes right to abortion N 37873 is obstacle for anti-abortionists N 37874 takes comfort from fact V 37874 overturn veto on abortion N 37876 perform tests on fetuses V 37877 bringing measure to floor V 37881 press issues in session V 37881 run 14 to 13 N 37883 do anything about this N 37888 train leaders in techniques V 37888 put anti-abortionists on defensive V 37890 avert death of tissue. N 37890 save life of mother N 37898 completed sale of shares N 37902 providing billion for Service V 37904 including million for College N 37905 were force behind million N 37909 added million for stepped V 37911 anticipates purchase of aircraft N 37912 had backing of officials N 37913 is ban on expenditure N 37915 raise profile of issue N 37915 block action in interim V 37916 is bit of legerdemain N 37916 is bit on behalf V 37917 wipe million in claims N 37917 owned hospital in Sullivan N 37918 scheduled morning between Whitten V 37918 delayed action on bill N 37919 reached agreement on provisions V 37919 provide information to farmers V 37919 reduce dependence on pesticides N 37920 received 900,000 in 1989 V 37921 takes view of policy N 37923 including sale of units N 37923 delay aspects in wake V 37924 fight bid by Goldsmith N 37924 clear way for measures N 37925 increased likelihood of approval N 37926 have deal on table V 37926 vote stake in favor V 37928 been chip over months V 37930 rose cents to pence V 37930 erased fall in day V 37931 spin billion in assets N 37936 delay actions into half V 37939 receives approval for restructuring N 37940 reflect business than business V 37941 make target for predators N 37942 slow pace of events N 37948 include managers from chains N 37951 mount bid for B.A.T N 37953 clouds outlook for attracting N 37953 attracting price for properties N 37955 quantify level of claims N 37956 has expectation of impact N 37957 disrupt transportation in area N 37957 disrupt transportation for months V 37958 escaped earthquake with damage V 37959 expect return to operations N 37959 expect return by Saturday V 37963 halt deliveries into area N 37968 impeded delivery of packages N 37969 noted delays on bridge N 37969 noted delays for example V 37972 resumed service at 10:45 V 37977 had damage on railroad V 37978 have problem to service N 37979 suspended service into station N 37979 sustained damage during quake V 37980 terminated runs in Sacramento V 37980 ferry passengers to area V 37981 resume operations to Oakland N 37983 running fleet of trains N 37983 running fleet during day V 37983 provide alternative for travelers N 37988 shattered windows at tower N 37988 rained pieces of ceiling N 37993 operating % of service N 37993 causing delays for travelers V 37997 were both by yesterday V 38003 triggering scramble among groups V 38004 buying part of business N 38007 distributes whiskey in U.S. V 38009 bought distillery for million V 38010 become player in business N 38022 own any of brands N 38023 take look at business N 38024 have brand in portfolio V 38030 had profit of million N 38032 estimate profit at million V 38033 had profit in year V 38035 foster competition in industry V 38036 own thousands of pubs N 38037 selling beers of choice N 38038 grab share of sales N 38039 paid million for PLC N 38039 has % of market N 38040 brew beers in Britain V 38043 owns chain of restaurants N 38048 retain title of chairman N 38049 raise million in cash N 38049 raise million with sale V 38049 redeem billion in maturing N 38052 announced split in units N 38052 increased distribution to cents V 38053 pay distribution of cents N 38056 meet requirements for plans N 38061 rose cents to 32.125 V 38062 planning party on Tuesday V 38067 take it as compliment V 38068 is market for computers N 38069 dominated market for decades V 38070 poaching customers of machines N 38071 stage performance in mainframes N 38075 stir life into market V 38078 weaving hundreds of workstations N 38082 's price of equipped N 38084 hit IBM at time V 38087 deliver generation of mainframes N 38087 deliver generation until 1991 V 38089 has near-monopoly on mainframes N 38089 has near-monopoly with share V 38091 counts majority of corporations N 38091 entrust information to computers V 38094 is competitor in market V 38097 unplug mainframes for machine V 38100 juggling hundreds of billions N 38107 bases estimate on survey V 38108 announce family of mainframes N 38113 halt development of product N 38113 stem losses at end N 38114 cost company in 1989 V 38115 face competition in coming V 38116 has share of market N 38116 has share with machines V 38117 unveil line of mainframes N 38129 lower rates in coming V 38131 see volatility in stocks V 38143 outpaced decliners by 822 V 38148 named president of producer N 38149 succeed Himebaugh as manager V 38150 posted drop in income N 38154 report results over days V 38155 said nothing about offer V 38161 giving bit of trouble N 38167 underscore importance of base N 38169 Succeeding Whittington as chairman V 38170 Succeeding Whittington at Co. V 38175 add acres to 453,000 V 38175 enacting Act of 1989 N 38176 develop property on island N 38178 bear costs of construction N 38179 save billion in subsidies N 38179 save taxpayers over years V 38185 marked decline in rate N 38189 was reversal of trend N 38189 was reversal between 1987 V 38190 hit record in 1988 V 38190 rising % after adjustment V 38192 including number of families N 38194 was 12,092 for family V 38208 got % of income N 38209 got % of income N 38210 keeping pace with inflation N 38210 fell % in 1988 V 38213 rose % to 27,225 V 38216 rose % in 1988 V 38224 left Co. in January V 38225 resigned posts at Triad N 38227 boosted spacecraft on way V 38227 giving lift to program V 38228 been symbol of trouble N 38229 turn Galileo into symbol V 38232 parachute probe into atmosphere V 38232 pick data about gases N 38234 Investigating Jupiter in detail V 38234 calls paradox of life N 38234 has store of material N 38236 begin tour of moons N 38238 spewing material into miles V 38239 has ocean than those N 38240 lifted Galileo from pad V 38240 released craft from bay V 38243 conduct experiments before landing V 38249 released doses of radiation N 38250 collecting energy from field V 38250 gain momentum for trip N 38254 continues recovery in program N 38256 sent photos of Neptune N 38258 measuring effects of space N 38259 see galaxies in universe N 38263 drew attention to phenomenon N 38263 deserves thought by officials V 38270 thwarted bid from Trump N 38271 pays premium over value N 38272 reveal details of agreement N 38273 paying bulk of money N 38275 granted payment in case V 38276 made profit on sale V 38277 sued Disney during battle V 38278 pay premium for shares N 38278 pay premium to shareholders V 38280 have leverage in case V 38281 gives boards of directors N 38281 gives boards of directors N 38282 HEARS arguments in trial N 38285 obtain bribe from defendants V 38289 conducted inquiry into activities N 38292 contemplating appeal of impeachment N 38296 notifying company of responsibility N 38296 fit definition of lawsuit N 38299 defend it in proceeding V 38300 defend company in proceedings V 38306 face problems without help V 38307 is conclusion of report N 38309 provides documentation of nature N 38311 ranked problems as need V 38314 propose solutions to problems N 38315 headed case against Brotherhood N 38315 join Crutcher in office V 38317 became chief of division N 38318 do litigation for Dunn V 38319 joined firm of Bain N 38321 joining Apple in 1986 V 38322 find buyer for Tower N 38322 refinance property for million V 38330 lends owner in return V 38330 convert interest into equity V 38333 put tower on block V 38335 have deal with Ltd V 38336 lease building at prices V 38337 sought financing in Japan V 38339 proposed deal during round V 38340 has billion of investments N 38341 acquire units of AB N 38341 acquire units for cash V 38343 estimated price at million V 38344 acquire rights to names N 38345 combined sales in excess N 38349 curtail deductibility of debt N 38350 been force behind market N 38356 label debt as equity V 38357 defer deductibility for years V 38358 see these in LBO V 38359 becomes source of cash N 38359 becomes source for company V 38359 repay debt for years V 38363 posted loss of million N 38363 receive refund from tax N 38367 lowered bid for International N 38368 raise ante for company N 38370 increase part of transaction N 38371 reduce level of ownership N 38372 give bit of slop N 38375 pays points above notes N 38375 pay interest for year V 38379 pay taxes on holdings V 38382 finds ways around rules N 38385 fell % in September V 38388 open spigots of aid N 38388 open spigots for victims V 38392 divert food from program V 38394 allocated billion in funds N 38396 consider requests for funding N 38403 handle aftermath of Hugo N 38404 have caseload in history V 38405 finds itself after operation V 38408 opened shelters in area N 38410 make requests to FEMA V 38416 waive penalties for victims V 38417 announce procedures in days V 38418 held them for period V 38419 is number of facilities N 38419 provide base of supplies N 38420 set center in Pentagon V 38421 moving supplies to California V 38427 set offices in area V 38427 staff them with 400 V 38434 set standards for bridges V 38434 retrofit highways for hazards V 38437 completed phase of retrofitting N 38441 estimates output at bushels V 38443 plummet % to % N 38446 see drop of point N 38451 revive specials like cans N 38452 cost cents during drought V 38456 offer form of coverage N 38459 achieve pregnancy after four V 38463 change mix in portfolios N 38467 begins exhibit at Gallery V 38473 generated 54,000 in matching N 38477 give bonus in form N 38477 give employees in exchange V 38478 subsidizing contributions to PACs N 38481 find hand from companies V 38484 promises Christmas with pledge V 38484 deliver goods before Christmas V 38485 deliver orders within days V 38489 hires workers for rush V 38493 designated city by Almanac V 38494 used ranking in brochure V 38495 ranked last among areas N 38497 making enemies on 27 V 38503 Tell that to Atlanta V 38505 did research for report N 38509 has pretensions to status V 38510 lists areas as Ana V 38516 fell % to million V 38516 reported earnings of million N 38517 recorded decline in sales N 38521 earned million in quarter V 38522 credited gains in segments N 38526 accept contracts for development N 38527 were system for fighter N 38531 reported loss of million N 38533 reducing earnings in segment N 38537 earned million on rise V 38538 reported increase in income N 38538 reported increase on gain V 38542 was million on sales V 38545 awaited launch of 3 N 38548 had revenue of million N 38548 had revenue in quarter V 38550 raise prices with distributors V 38550 hold share against Microsoft V 38550 exploit delays in launch N 38551 held share of market N 38552 heaved sigh of relief N 38553 turned damage to facilities N 38554 expected disruption in shipments N 38556 tracks industry for Research V 38557 's end of world N 38558 registered 6.9 on scale V 38559 inspecting buildings for weaknesses V 38559 mopping water from pipes N 38559 clearing tiles from floors V 38561 puts drives for family N 38568 is slew of problems N 38572 spared Valley from kind V 38577 installed sensors in pipes V 38578 has factories in parts V 38578 leave customers in pinch V 38579 's news for companies N 38579 has supply of microprocessors N 38579 has supply from Valley V 38579 limits buildup of inventory N 38582 set centers in Dallas V 38583 handling calls from both V 38585 dispatched teams of technicians N 38585 dispatched teams to California V 38587 conducts research on weapons N 38590 is contractor on missile N 38591 generates pieces of shield N 38599 seek protection from creditors N 38599 seek protection in 1987 V 38605 sanitize billions of eggs N 38605 turning them into products V 38607 breaking them by hand V 38608 put eggs into cylinder V 38608 spin them at speed V 38608 strain part through baskets V 38610 recover cost in months V 38612 offering them in U.S V 38614 cause stomachs in cases N 38614 cause stomachs among people V 38615 pass salmonella to eggs V 38618 use eggs in products V 38624 Leading assault against King N 38625 make buck at expense V 38627 was Department of Agriculture N 38628 won approval for be V 38630 receiving complaints from producers V 38630 limiting market to bakeries V 38632 was likelihood of problem N 38635 took vote on floor N 38637 turned attention to states V 38640 pay 100,000 in fees N 38640 pay 100,000 to lawyers V 38641 pushed company into court V 38643 ended string of breaks N 38650 removing wad of gum N 38650 removing wad from mouth V 38653 has picture to credit V 38653 wrote screenplay for picture N 38656 put spin on material V 38660 embraces requirements without condescension V 38662 cast brothers as brothers V 38665 playing piano on pianos V 38666 're time in time-hotels V 38668 wear costumes like shirts N 38670 takes care of business N 38670 approaches work like job V 38672 got wife in suburbs N 38672 sees house near end V 38681 showed promise during stint V 38684 become star in right V 38685 have lot of patience N 38685 take look at 2 N 38687 check emergence of persona N 38688 pay million for subsidiary V 38690 is producer of goods N 38692 closed Tuesday in trading V 38692 giving portion of transaction N 38692 giving portion of transaction N 38693 sell plant to Co. V 38694 use plant for laboratories V 38695 seeking buyer for facility V 38697 won contract for aircraft N 38698 issued contract for support N 38699 got contract for work N 38703 redeem shares of stock N 38704 convert share into shares V 38704 surrender shares at price V 38705 makes products for industries N 38706 require restatement of results N 38706 increased projections of impact N 38707 restate quarters of year N 38710 had loss of million N 38711 including sale of company N 38716 elected director of concern N 38719 are base in terms N 38721 be ombudsman for area V 38722 're ombudsman for area V 38724 get housing for area V 38725 prohibit programs in areas V 38727 accepted withdrawal from membership N 38728 is subsidiary of Ltd. N 38728 implicated year in scheme V 38734 document trades between Futures N 38737 succeeds Lang as president V 38738 named officer of group N 38741 soared billion in week V 38742 following fall of Friday N 38743 's flight to safety N 38744 offer yields than investments N 38745 was % in week V 38747 yielding % at banks V 38751 getting proceeds for five V 38752 were levels with half V 38756 adjust maturities of investments N 38763 was Fund with yield N 38765 had yield of % N 38765 had yield in week V 38767 created Isuzu among others V 38767 removes it from business V 38767 selling majority of unit N 38767 selling majority to Eurocom V 38770 become one of agencies N 38770 attracting clients than were N 38771 reflects importance of buying N 38771 get price on space N 38771 buy it in bulk V 38772 gives foothold in Femina N 38772 quadruples size of business N 38774 pay francs for % V 38775 held % of unit N 38775 raise stake to % V 38776 raising stake in Group N 38777 buy % of group N 38777 have right in years V 38778 places executives at helm V 38780 be chairman with Wight V 38781 be officer at agency V 38782 outlined plans for agency N 38785 provide fund of million N 38786 make acquisitions in Scandinavia N 38787 Cracking 10 within years V 38788 had billings of million N 38790 make it to status V 38793 won Pan as client V 38793 does work for clients N 38795 're agency to multinationals V 38796 create one of alliances N 38797 combine buying across Europe V 38798 acquire stakes in Group N 38798 creating link between Eurocom N 38799 receive stake as part V 38799 pay million for stake N 38806 strengthen push outside France N 38807 invented idea of buying N 38808 buying space in bulk V 38809 won business of giants N 38811 plans issue of shares N 38814 brought scene to halt V 38814 wring hands about presentations V 38815 reported injuries to employees N 38815 damaged offices of Thompson N 38821 spent night at agency V 38823 awarded accounts to Thompson V 38827 been officer of Direct N 38828 be site of division N 38829 being president of media N 38831 is unit of Co N 38832 awarded account to Associates V 38834 introduced week at convention V 38836 shipping cars to Japan V 38837 export cars to Japan V 38838 exporting year from factory V 38839 been lack of attention N 38841 is result of sins N 38844 designating 24 as Day V 38846 puts strain on friendship N 38846 been one of allies N 38847 seeking help from States V 38848 fighting past for years V 38849 blames it for genocide V 38852 is part of Europe N 38854 is faith of majority N 38856 accept sins of Empire N 38858 accepted refugees from nations N 38870 get specter of drugs N 38871 take it from department V 38872 have solution in mind V 38873 protect programs at heart N 38874 unveiled series of reforms N 38874 improve management at HUD N 38880 give those in Congress N 38880 give those in Congress N 38889 provide housing for the V 38891 is welfare for developers N 38892 loans money for mortgages N 38892 be billion in hole V 38893 Selling portfolio to bidder V 38893 save billions in losses N 38894 free money for tenants N 38895 clean drugs from neighbhorhoods N 38896 turned cities into zones V 38901 reclaims streets from gangs V 38903 overhaul room at HUD N 38906 channel resources into war V 38907 named chairman of chain N 38909 retains position as president N 38916 produced paeans about perfection N 38919 witnessing decline of economy N 38923 found rates from investment N 38926 was drop in number N 38926 divide value of firms N 38926 divide value by costs V 38930 valuing worth of assets N 38930 valuing worth at cents V 38931 take it as bet V 38931 buy worth of stock N 38932 restoring faith in them N 38938 announcing end in suspension N 38938 were promoters for continue V 38939 watch avalanche of buy-outs N 38939 be America with productivity V 38945 building empires with sand V 38946 reckoning rate on bonds N 38946 reckoning rate at % V 38947 is consequence of burden N 38948 need liquidity in form N 38949 assists motions of economy N 38949 assists motions with charity V 38950 avoid shock of crash N 38953 consult workers on subject V 38956 are strikes by miners N 38957 are readings on capitalism N 38959 handling moments of panic N 38959 reporting crash in 1929 V 38961 computing interest on loans N 38964 make fools of those N 38965 is columnist for Nation N 38968 invest total of yen N 38968 invest total in venture V 38969 follows acquisition of Inc. N 38970 make sense for talk N 38972 been rumors about tie N 38975 is one of number N 38975 ending barriers in EC N 38982 carried tons of freight N 38985 increase cooperation in ground-handling N 38986 have access to system N 38987 operate fleets of Combis N 38987 carry both on deck V 38988 have orders for planes N 38991 lease crews from Airways V 38992 received proposal from JAL V 38993 were negotiations between U.K. N 38994 completed purchase of Corp. N 38996 has sales of million N 38998 prevent dislocation in markets N 38999 affects millions of dollars N 39001 guaranteeing liquidity of market N 39002 taking flights from Francisco N 39003 accomodate traders from exchange N 39004 provide capital for market-making N 39005 execute orders by flashlight V 39006 was suspension of trading N 39007 has options for issues V 39009 be cause for alarm N 39011 reassigned trading in options N 39014 has volume of shares N 39015 rerouting orders to operations V 39018 await inspection by city N 39018 turn power at facilities V 39022 executing orders through firm V 39025 executed orders through office V 39026 has offices in area V 39026 set number for obtain V 39027 received calls from workers V 39029 get quotes on stocks N 39030 assembled team at 5 V 39030 restore service to brokers V 39036 sell instrument at price V 39036 buy instrument at price V 39037 convert options into instrument V 39038 seeing exercises in fact V 39041 puts stock at value V 39044 spent billion over years V 39045 generates amounts of cash N 39046 had billion of cash N 39046 had billion on hand V 39048 view spending as way V 39048 improve measurements as earnings N 39049 view it as investment V 39052 buy million of stock N 39052 had authorization under program V 39053 providing floor for price V 39054 produced results in years V 39055 manufacturing chip for mainframes V 39056 had series of glitches N 39057 delay introduction of drives N 39059 are factors at work V 39060 reduces value of revenue N 39060 knock 80 to cents N 39060 knock 80 off earnings V 39061 matched earnings of billion N 39065 singling shares of companies N 39066 set line for Franciscans V 39069 rose 2.75 to 86.50 V 39070 use earthquake as excuse V 39071 cost lot of money N 39075 gained cents to 33.375 V 39079 touted Georgia-Pacific as plays V 39080 were companies with refineries N 39081 jumped 1.125 to 20.125 V 39081 rose 1 to 65 V 39083 fell cents to 81.50 V 39083 fell cents to 31.875 V 39086 fell cents to 19.625 V 39088 lost cents to 44.625 V 39091 claimed victim among scores N 39093 cleared trades through Petco V 39093 transfer business to firms V 39095 got look at risks N 39097 declined comment on Petco N 39098 transferred accounts of traders N 39098 transferred accounts to Options V 39098 meet requirements after slide V 39100 guarantee accounts at Options N 39104 amassed fortune from trading V 39106 is grandmother in County V 39107 put her behind cart V 39108 cross Crest off list V 39110 shaves 22 off bill V 39114 want any of oil N 39114 want any for grandkids V 39115 remove oil from products V 39117 represents breed of consumer N 39120 given choice of brands N 39120 are copies of one N 39121 brought this on themselves V 39124 buy brand of type N 39126 are brand for any V 39128 are brand in 16 V 39133 stomach taste of Heinz N 39135 are the to me V 39136 plays role in loyalty N 39140 scored % in loyalty V 39141 wore Fruit of Loom N 39142 make underwear for both V 39150 's loyalty by default V 39155 show stability in choices V 39158 were brand across categories V 39160 have set of favorites N 39162 attribute loyalty to similarity V 39164 are the in number V 39165 's clutter of brands N 39167 putting emphasis on advertising N 39168 instill loyalty through ploys V 39180 converting non-user to brand V 39182 consume cans of soup N 39183 probing attachment to soup N 39184 getting hug from friend V 39187 Getting grip on extent N 39192 processing claims from policyholders N 39193 fly adjusters into Sacramento V 39196 advertising numbers on radio V 39198 is writer of insurance N 39203 coordinates efforts of adjusters N 39203 coordinates efforts in area V 39204 have estimate of damages N 39204 have estimate in two V 39205 suffered some of damage N 39210 cause problems for industry V 39213 limit exposure to catastrophes N 39216 change psychology of marketplace N 39217 issued recommendations on stocks N 39221 limit exposure to catastrophes N 39223 have exposure to coverage N 39225 be the on basis V 39226 included losses of billion N 39227 generate losses of billion N 39227 following billion in costs N 39232 reached accord on sale N 39235 use proceeds from placement N 39235 purchase interest in underwrite N 39237 reach pact with Corp. V 39238 told reporters at Motorfair V 39238 do deal within month V 39239 offering access to production N 39241 fend advances from Co V 39242 lifting stake to % V 39244 renew request for meeting N 39253 traded yesterday on exchange V 39254 mark departure for maker N 39257 have designs for cars V 39258 build range of cars N 39259 boost output of cars N 39262 require approval by majority N 39265 enlisting support from speculators V 39265 holding carrot of bid N 39266 make bid for Jaguar N 39269 's weapon in armory N 39273 showed growth in lines V 39273 reported gain in net N 39275 dropped % as result V 39282 reduced income by million V 39283 dilute earnings by % V 39287 increased % to billion V 39287 including charges of million N 39291 b-reflects loss of cents N 39298 survey household in U.S. N 39300 introduce errors into findings V 39304 averaged % of turnover N 39308 did nothing of sort N 39309 exonerated trading as cause V 39310 is form of trading N 39311 offset positions in contracts N 39312 cause swings in market N 39317 observe activity on screens V 39319 defended use of trading N 39321 halted trading in contract N 39323 re-establish link between stocks N 39325 plunged points in minutes V 39328 voted increase in dividend N 39329 is 15 to stock N 39330 reported loss of million N 39331 added million to allowance V 39333 posted loss of million N 39334 had profit of million N 39334 had profit in period V 39335 paying dividend of cents N 39338 reviewing it with regulators V 39340 downgraded million of debt N 39340 taken write-offs against losses N 39340 taken write-offs despite write-down V 39348 is place for put N 39354 set things for period V 39354 reinforces concern of volatility N 39361 scare them to death V 39362 is news for firms V 39370 was business with level N 39371 shriveled months during year N 39372 was % in August N 39379 was nothing than reaction N 39381 keep control of assets N 39382 's semblance of confidence N 39386 drive everyone except the V 39387 studying perception of risks N 39392 offering notes as securities V 39393 offering million of notes N 39395 has them under review V 39399 issued million of securities N 39399 issued million in classes V 39415 is rate of Libor N 39417 buy shares at premium V 39420 beginning 30 from 101 V 39436 is unit of Corp N 39437 violating provisions of laws N 39439 was subject of profile N 39439 was subject in 1984 V 39439 questioned him about ties V 39440 violating provisions of laws N 39442 filed week in court V 39449 cut tax for individuals N 39451 offer it as amendment V 39454 exclude % of gain N 39455 rise points for year V 39455 reached maximum of % N 39457 reduce gains by index V 39460 alter deduction for accounts N 39463 grant exclusions to assets V 39464 get break than those N 39467 provide exclusion to assets N 39468 boost rate to % V 39472 rid bill of provisions N 39473 pumping water into apartments V 39480 turned Valley into capital V 39484 have power for hours V 39493 represents one-fourth of economy N 39495 been disruption for economy V 39499 expect problems for commerce N 39501 routing traffic through Francisco V 39504 estimated damage to city N 39504 estimated damage at billion V 39509 hit half-hour into shift N 39512 resume production of Prizms N 39512 resume production by yesterday V 39514 estimating cost of reconstruction N 39514 estimating cost in millions V 39518 taking checks from bank V 39518 sending them to another V 39518 handled night after quake N 39522 handle number of people N 39524 puts volume at times V 39525 blocking calls into area N 39527 blocking % of calls N 39528 blocking % of calls N 39531 give boost to economy V 39531 be influx of people N 39538 be kind of surge N 39542 reduce GNP in term V 39549 model impact of this N 39549 studies aspects of earthquakes N 39549 studies aspects at Studies V 39555 cause billion to billion N 39558 toured area by car V 39558 get sense of exposure N 39559 pay hundreds of millions N 39559 pay hundreds in claims V 39560 showing locations of property N 39561 had adjusters on streets V 39561 paying claims on spot V 39562 insures autos in area N 39568 is one of tragedy N 39571 made sandwiches of itself N 39575 was miles to south N 39575 was miles near Cruz V 39575 serving Bridge between Oakland N 39576 toppled mall in Cruz N 39576 knocked buildings in District N 39582 survey rows of buildings N 39585 lost everything in earthquake V 39588 is duke of Luxembourg N 39590 sell billion of bonds N 39590 sell billion in sale V 39600 give information about drugs N 39601 Called Patients in Know N 39603 include space for write N 39604 give brochures on use N 39604 give pharmacists for distribution V 39610 kept watch on market N 39611 buy securities on prospect V 39616 jumped point during hour V 39622 scale size of offering N 39623 slashed size of offering N 39625 sold portion of notes N 39628 required level of security N 39629 offer paper in market V 39630 place billion to billion N 39634 sell billion of notes N 39635 sell billion of bonds N 39636 is unit of Corp. N 39637 dubbed bonds by traders V 39638 had yield of % N 39639 gauge ramifications of earthquake N 39640 had impact on trading N 39643 sell portions of portfolios N 39644 foot amount of bill N 39646 issued yesterday by Corp. V 39646 cause deterioration for issuers V 39655 yield % to % N 39661 pushing yields for maturities N 39663 topped slate with sale V 39668 was impact from earthquake N 39670 have amount of loans N 39670 have amount in pools V 39671 require cushion on loans N 39678 fell 11 to 111 V 39679 be day for market V 39680 give address to community V 39682 expect changes in address V 39686 fell point to 99.90 V 39689 removed Honecker in effort V 39689 win confidence of citizens N 39690 ushers era of reform N 39691 led Germany for years V 39691 replaced Honecker with man V 39692 shares power with union V 39693 turn nation into democracy V 39694 has implications for both N 39695 raises hopes of Germans N 39695 alarms leaders in Moscow N 39698 hospitalized summer for ailment V 39698 been subject of speculation N 39699 supervised construction of Wall N 39701 built Germany into nation V 39704 took view of change N 39705 offer ties to Krenz V 39707 reflects change in relations N 39709 is champion in leadership V 39710 be sharing of power N 39712 was result of infighting N 39713 delay decisions about change N 39717 alter resistance to change N 39721 joining Politburo in 1983 V 39721 was successor to Honecker N 39724 visited China after massacre V 39725 defended response during visit V 39726 fears Krenz in part V 39726 ordered arrest of hundreds N 39726 sought refuge in Church N 39728 read mood in Germany N 39729 was one of leaders N 39731 using force against demonstrators N 39732 have image of man N 39733 have image of reformer N 39734 take steps toward reform N 39734 rebuild confidence among people N 39735 allied themselves with Honecker V 39735 loosen controls on media N 39735 establish dialogue with groups N 39740 is process of democratization N 39742 open discussions with Bonn N 39743 citing sources in Germany N 39750 heed calls for change N 39751 find solutions to problems N 39755 is creature of War N 39756 endanger statehood of Poland N 39759 be recipe for future N 39760 build economy into paradise V 39762 paying compliments to Gorbachev V 39762 rejecting necessity for adjustments N 39763 doing nothing about it V 39764 presenting speeches as summaries V 39764 giving space to opponents V 39766 abandoned devotion to unity N 39767 left room for debate N 39770 proclaims renewal of socialism N 39779 cleanse Germany of muck V 39780 envisioned utopia of socialism N 39781 left mark on society V 39782 typified generation of leaders N 39782 took cues from Moscow V 39783 recognize legitimacy of state N 39784 won measure of recognition N 39787 was matter of time N 39788 increased forecast for growth N 39788 increased forecast to % V 39789 projected growth for members N 39789 projected growth at % V 39792 Leading forecasts in 1989 V 39792 growing % at prices V 39796 opened plant in Chongju V 39797 manufacture types of coffee N 39799 had % of share N 39800 has share with coffee V 39802 told Vaezi of willingess V 39804 close base in Kong N 39806 use base for Army V 39809 negotiated pact in Moscow V 39810 requires approval by governments N 39815 are culmination of weeks N 39816 has interests in manufacturing N 39816 has interests in both V 39817 push prices on market N 39817 push prices in yesterday V 39818 stopped production of it N 39820 dismantled section of Wall N 39823 are guide to levels N 39854 indicted director of research N 39854 charging him with transportation V 39855 filed lawsuit against manager V 39860 denied allegations against him N 39862 assessing damage from earthquake N 39863 owns affiliate in Seattle N 39864 outstripped competition in coverage V 39864 broadcasting Series from Park V 39865 attribute performance to disaster V 39867 were complaints from affiliates N 39868 was case at News V 39872 including edition of Today N 39876 beat everyone in stretch V 39878 postponed games of Series N 39879 broadcast episodes of lineups N 39880 resume evening in Francisco V 39882 reported plunge in income N 39888 presages agreement with regulators N 39889 turning thrift to regulators V 39892 had drop in profit N 39892 had drop to million V 39893 totaled million in quarter V 39894 includes addition to reserves N 39895 foresee need for additions N 39897 included write-down on land N 39897 included reserve for losses N 39898 included write-down of inventories N 39900 included write-down of investments N 39902 replace Equitec as manager V 39904 include restructuring of centers N 39906 drain resources of Equitec N 39907 posted loss in quarter V 39910 raised dollars from investors V 39913 build stake for clients V 39914 give teeth to threat V 39916 holds stake in carrier V 39918 sell stake at price V 39918 cost him on average V 39920 represents % of assets N 39921 launch bid for carrier N 39922 is 80 as takeover V 39922 was anything in terms V 39924 abandoned role as investor N 39925 holds stakes in companies V 39926 runs billion for Partners N 39926 made name as trader V 39928 see irony in fact V 39932 has ace in hole N 39933 buying shares as part V 39934 be way for get N 39937 sold stake at profit V 39939 confers commissions on firms V 39940 get price for shares V 39942 including sale in August N 39943 was example of democracy N 39944 made filings in USAir N 39945 stir interest in stock N 39951 show losses for quarters V 39952 pummel stocks in coming V 39954 bought shares in days V 39955 bought stock as part V 39957 showing gains of % N 39958 regret incursion into game N 39960 making change in style N 39965 report loss for quarter V 39966 mark loss for Commodore V 39971 Reflecting concerns about outlook N 39973 setting stage for progress V 39977 support efforts in areas N 39983 set sights on events N 39986 rose 0.60 to 341.76 V 39986 rose 0.71 to 320.54 V 39986 gained 0.43 to 189.32 V 39989 dropped 6.40 to 1247.87 V 39989 lost % of value N 39991 cited anticipation as factors V 39992 knocked service throughout area V 39997 show instability over sessions V 39997 re-evaluate stance toward market N 39997 re-evaluate stance in light V apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/devset0100664 0001750 0001750 00000403245 14135770370 026773 0ustar00jeffjeff0000000 0000000 40000 set stage for increase N 40002 advanced 1 to 75 V 40002 climbed 2 to 32 V 40002 firmed 7 to 37 V 40003 rose 3 to 86 V 40003 gained 1 to 102 V 40003 added 3 to 59 V 40003 advanced 7 to 62 V 40004 rose 3 to 123 V 40006 was performer among groups N 40006 rose 3 to 33 V 40006 gained 1 to 44 V 40006 added 3 to 18 V 40006 climbed 3 to 39 V 40007 rose 5 to 34 V 40007 gained 1 to 25 V 40007 rose 1 to 22 V 40007 added 1 to 15 V 40008 climbed 1 to 58 V 40008 added 1 to 40 V 40009 advanced 3 to 28 V 40009 gained 3 to 1 V 40010 fell 3 to 19 V 40010 slipped 5 to 44 V 40010 restore service to areas V 40011 added 1 to 65 V 40012 shut pipeline in area N 40013 rose 1 to 49 V 40013 eased 1 to 19 V 40014 reported damage to facilities N 40015 eased 1 to 31 V 40015 lost 1 to 81 V 40016 eased 3 to 22 V 40016 slid 3 to 24 V 40016 dropped 1 to 21 V 40016 fell 5 to 29 V 40018 offered 300 for UAL V 40020 rising 3 to 74 V 40021 withdrew offer of 120 N 40023 added 1 to 65 V 40024 repeated recommendation on stock N 40024 raised estimate by cents V 40025 advanced 5 to 63 V 40026 dropped 3 to 36 V 40027 lowered estimates on company N 40031 rose 1 to 22 V 40033 posted jump in profit V 40033 reflecting strength in businesses N 40038 disclosed information about performance N 40039 reflecting effect of change N 40040 suspend operations for period V 40042 produces gold at cost V 40043 write value of mine N 40043 write value by dollars V 40046 selling software for use V 40050 require assistance from software V 40051 reported loss in quarter V 40055 had earnings of million N 40055 had earnings in quarter V 40055 including loss from operations N 40056 included charge for payments N 40059 give price in range N 40060 buys shares at price V 40061 representing % of shares N 40061 established range for buy-back V 40065 rose 1 to 61.125 V 40066 slipped % despite gain V 40074 buy steam from station V 40079 had loss of million N 40081 paid dividends of million N 40081 exchanged stock for debt V 40083 attributed improvement to earnings V 40084 restructured debt under agreement V 40086 launching restructuring of business N 40086 took charge for quarter V 40087 close 40 of facilities N 40087 cut jobs from payroll V 40090 sell businesses to Inc. V 40092 took charge of million N 40092 took charge in quarter V 40096 buy % of Finanziaria N 40097 pay lira for station V 40098 's sort of situation N 40098 protects companies from creditors V 40099 draws % of viewers N 40099 has debt of lire N 40100 take % of Odeon N 40108 provided number for people V 40110 issued edition around noon V 40112 supply services to Center V 40113 estimated value of contract N 40113 estimated value at million V 40113 selected bidder for negotiations V 40115 reopen negotiations on contract N 40116 requested briefing by NASA N 40117 climbed % to million V 40126 hurt margins for products N 40127 see relief in costs V 40127 offset drop in prices N 40129 had shares on average V 40133 establishing reserve of million N 40135 check soundness of buildings N 40136 has beds at disposal V 40137 forked 150,000 of money N 40137 forked 150,000 for purposes V 40139 sending them to Francisco V 40140 recommended month by officer V 40148 resisting pressure for rise N 40155 approved formation of company N 40155 pursue activities under law V 40157 generated million in profit N 40158 meeting requirements under law N 40160 consolidate Bank into institution V 40161 save million in costs N 40162 completed acquisition of publisher N 40165 told staff of Ms. N 40171 been target of lobbyists N 40174 keep watch on content N 40179 gets mail in month N 40181 took Ms. with acquisition V 40182 owns % of Matilda N 40183 pumped 800,000 into Matilda V 40191 sold summer to Group V 40191 sell interest in Woman N 40191 sell interest to Lang V 40193 be entry into magazines N 40196 saw losses in circulation N 40204 named Taber as publisher V 40205 retain post as publisher N 40206 finance buy-back of interest N 40209 have enough on plate V 40210 is plenty of work N 40211 cleared purchase of unit N 40211 have impact on consumers N 40213 hold share of market N 40214 removing matter from jurisdiction V 40215 posted income of million N 40215 continuing rebound from losses N 40216 posted loss of million N 40218 gained 2.25 to 44.125 V 40220 totaling million over years V 40225 issued letter of reproval N 40225 forbidding discrimination against employees N 40226 write letters of apology N 40228 accept resolution of matter N 40230 file complaint with Committee V 40233 are carriers in Southwest V 40236 have value of million N 40237 owns % of Mesa N 40240 reported jump in profit N 40246 contributed million to net V 40248 reported net of million N 40249 post loss of million N 40249 adding million in reserves N 40250 has billion of assets N 40250 had income in quarter N 40251 report earnings for quarter N 40255 take total of million N 40256 announced offering of % N 40258 had income of million N 40259 report milllion in charges N 40259 report milllion for quarter V 40259 reflecting settlement of contracts N 40260 take charge against operations N 40262 owns reserves in Southwest N 40263 negotiated agreement with creditors N 40267 make repayments in installments V 40274 included gain of million N 40280 taking redoubt in delegation N 40281 gives victory in elections N 40282 won % of vote N 40283 was embarrassment for Republicans V 40285 carried all but one N 40287 called companies with facilities N 40287 called companies in bid V 40288 reached all of companies N 40295 had damage to headquarters V 40296 had damage to track V 40297 work ship with delays V 40305 had power at headquarters V 40307 had damage at buildings V 40312 conducting business from lot V 40318 had damage to headquarters N 40318 closed two of buildings N 40328 had damage in stockroom V 40334 including operation in Alto N 40337 had damage at headquarters V 40340 was production of models N 40341 assessing damage to suppliers N 40341 handle shipments to plant N 40343 be suspension of manufacturing N 40343 be suspension for period V 40345 has employees in area V 40347 were injuries among workers V 40349 had damage beyond trouble N 40351 expects impact on business N 40355 doing business in protectors N 40358 resume operations over days V 40360 opened center for service N 40360 opened center as part V 40361 had damage to building N 40366 had damage at plant V 40369 halted manufacturing at plants V 40371 was damage to stores N 40379 caused delay in release N 40379 sustained damage to buildings N 40381 manufactures drives for computers N 40384 transporting products to stores V 40385 had damage to building V 40388 be damage to some N 40389 had damage to tracks N 40390 restored lines between Francisco V 40398 assessing damage at plant N 40398 is furnaces for production N 40403 began task of trying N 40404 blaming disaster on construction V 40406 raise questions about ability N 40407 connect Oakland with Francisco V 40407 build stretch of highway N 40409 bring double-decking to freeways V 40410 add deck for pools N 40410 add deck above median V 40411 fight introduction of double-decking N 40413 measured 6.1 on scale N 40416 withstand temblor of 7.5 N 40418 attributed destruction to reinforcement V 40420 lacked number of ties N 40421 uses variation of design N 40422 caused core of columns N 40424 tie decks of freeway N 40424 tie decks to columns V 40429 Given history of Area N 40430 defended work on Freeway N 40432 had earthquake of duration N 40433 wrapping columns in blankets V 40437 rejected offer of 8 N 40438 urged holders of debt N 40440 began lawsuit in Court V 40443 reignite talks between Co. N 40450 acquire control of company N 40451 buy shares for 4 V 40452 given control of % N 40453 receive share of stock N 40454 recommend plan to board V 40455 exploring development of plan N 40455 boost value of company N 40455 boost value for holders V 40456 holds % of Merchants N 40456 retained bank for advice V 40457 provide him with information V 40460 project image of House N 40461 want repeat of charges N 40462 got briefing of day N 40462 got briefing at a.m. V 40463 taken calls from President V 40463 made statement of concern N 40463 received report from Agency N 40465 be carping about performance N 40465 took hit for reaction V 40468 reported jump in profit N 40468 reported jump for year V 40471 rated 6.9 on scale N 40472 was 10 to times N 40479 was miles from epicenter N 40481 drive piles on it V 40482 cited example of district N 40485 got lots of buildings N 40486 leaving wedge of floor N 40486 leaving wedge of floor N 40490 do something about it V 40491 release tension along faultlines N 40497 market version of brand N 40497 beginning week in Charlotte V 40500 surrounding change of formula N 40500 clutter name with extension V 40503 increase volume of brand N 40504 limited growth throughout industry V 40505 leads Pepsi in share V 40505 trails Pepsi in sales V 40508 studying possibility for year V 40511 picked way through streets V 40512 finding survivors within steel V 40513 caused billions of dollars N 40513 caused billions along miles V 40515 played Tuesday in Park V 40517 oversaw building of Wall N 40518 following surgery in August N 40519 ruled sharing of power N 40522 ending domination in country N 40522 regulating elections by summer N 40522 establishing office of president N 40523 renamed Republic of Hungary N 40526 launched probe on flight V 40528 return Monday to California V 40529 urged patience over demands N 40530 follow hint of weakening N 40532 marked decline in rate N 40533 rose % to 13,120 V 40535 risk conflict with U.S. N 40535 risk conflict over plan V 40538 oppose seating as delegate N 40539 told summit in Lumpur N 40542 giving role in government N 40543 following murder of justice N 40544 claimed responsibility for slaying N 40546 named president of Properties N 40548 appointed president of Systems N 40550 slipped % from quarter V 40551 broke streak of quarters N 40557 earn 14.85 for year V 40558 acquire % of Inc N 40559 dilute earnings per share N 40561 blamed drop on factors V 40561 made exports from U.S. N 40561 made exports from U.S. N 40562 was increase in costs N 40572 Given frustration with victories N 40575 whipping conglomerate of groups N 40575 whipping conglomerate into force V 40578 mind credentials for ground N 40580 engaged nominee in contest V 40580 stretch Constitution in area V 40582 painted picture of reading N 40582 reading prejudices into Constitution V 40585 punish them in elections V 40591 travel journey with trail V 40593 swallowed case for culture N 40595 discover it in Bickel V 40597 leaves decisions in democracy N 40597 leaves decisions to executives V 40601 apply right to abortion V 40603 allow happening like circus N 40605 taking risk on outcome N 40606 receive minimum of million N 40606 receive minimum for collection V 40608 resembles underwriting by bank N 40610 sell securities at price V 40613 earned % of total N 40614 taking chunk of proceeds N 40615 guarantee seller of work N 40617 has interest in property V 40619 have level of interest N 40622 keep collection from house V 40622 handled sales for family N 40622 handled sales over years V 40623 was question of considerations N 40624 made money on Street V 40624 become part of business N 40625 offered loan of million N 40625 offered loan to businessman V 40625 purchase Irises for million V 40626 was bid in history N 40627 has painting under key V 40629 be lot of art N 40629 be lot for sale V 40631 receive portion of proceeds N 40632 take commission on amount V 40634 announcing plans for auction N 40634 estimated value in excess V 40636 's estimate for collection N 40637 put collection on block V 40638 owns % of Christie N 40641 has problem with houses N 40642 put light on things V 40645 lay half for this V 40646 snatched collection from bidders V 40647 gets commission from buyer V 40648 reforming country in crisis N 40652 be version of Honecker N 40653 followed path as Honecker N 40654 is member of Politburo N 40655 get reunification on ground V 40656 make efforts at reform N 40657 abandoning reason with it N 40659 need bit of time N 40661 find refugees at gates V 40663 close border to Czechoslovakia N 40663 install lights in spots V 40664 turn itself into Albania V 40665 kept police off backs N 40665 kept police at celebrations V 40669 recall ideals of period N 40669 recall ideals in country V 40671 is land of socialism N 40673 been ideology of socialism N 40675 runs risk of disintegrating N 40676 increases trade with Germany N 40676 convert itself into annex V 40677 's logic at work V 40677 prove failure in experiment V 40677 uses people as controls V 40680 greeted Gorbachev at airport V 40685 were result of actions N 40690 is editor of Street N 40691 FACING billions of dollars N 40693 expecting disruption in shipments N 40694 singled stocks of companies N 40696 raise tags of deals N 40699 sank % in September V 40700 following decline in August N 40701 buy billion of shares N 40705 seeking terms in bid V 40707 fell 6.25 to 191.75 V 40709 gained 4.92 to 2643.65 V 40711 including sale of units N 40712 cited turmoil in markets N 40713 removes it from business V 40715 post loss because sales N 40716 reach accord with Motors N 40716 reach accord within month V 40717 refinance Tower for million V 40718 find buyer for building N 40719 put division for sale V 40719 setting scramble among distillers V 40729 triggered round of sales N 40729 triggered round in trade V 40729 expect impact of quake N 40731 show resilience in face V 40732 predict climb for unit N 40736 injected reserves into system V 40736 avert repeat of debacle N 40738 keep liquidity at level V 40743 dropped points in trading V 40746 detract attention from transactions V 40747 show uptick in inflation N 40748 show rise in inflation N 40749 rose 1.30 to 368.70 V 40755 reach Francisco by telephone V 40757 shot cents to 20.85 V 40761 shut operations as precaution V 40764 ending day at 20.56 V 40771 have impact on markets V 40774 declined cents to 1.2645 V 40776 take two to months N 40776 produce copper in quantities V 40781 are suppliers of copper N 40781 buying copper on market V 40782 bought copper in London V 40784 switch concentration to side V 40785 dropped % from August V 40794 bought tons of sugar N 40796 slipped % to million V 40797 signal supplies of beef N 40799 fatten cattle for slaughter V 40804 prevent rejection of organs N 40807 been obstacle in transplants N 40808 using drug in February V 40813 consider it like one V 40814 is times than drug N 40816 made penalty for success N 40817 takes years to years N 40818 expand program beyond University V 40818 performs transplants in world N 40819 cut stays by % V 40819 reduce number of tests N 40819 monitor dosage of drugs N 40821 had stake in drug N 40822 known effect of drug N 40827 Allowing prices for necessities N 40827 shorten lines at stores N 40828 place value on them V 40830 receive relief for family N 40830 receive relief at prices V 40832 coordinate allocation of resources N 40835 take advantage of situation N 40835 face people of Carolina N 40837 deserves A for efforts V 40838 gets A for recital V 40839 Give him for failure V 40839 understand ethics of equity N 40843 alter distribution of income N 40843 alter distribution in favor V 40850 discourage preparedness in form N 40853 donating food to people V 40853 be any of us N 40865 ship goods to Houston V 40868 are accomplishment for him N 40872 considering value of time N 40873 have question for Laband V 40876 be season for revivals N 40879 remains center of movement N 40880 offering version of Moliere N 40880 offering version through 4 V 40881 is comedy about Alceste N 40881 sees vanity in everyone V 40885 remained house in 1666 N 40888 have look at Falls V 40889 see corruption of Paris N 40890 took adaptation by Bartlett N 40891 slimmed cast of characters N 40891 slimmed cast to six V 40891 set them in world V 40892 transfers setting to Hollywood V 40895 Americanized it with help V 40899 opened season with Pinter V 40900 use silences to exclusion V 40907 is dissection of isolation N 40912 held sway until death V 40913 concerns homecoming with wife N 40915 overpower each of men N 40916 leaving Ruth in chair V 40918 buy piece of estate N 40921 stage Death of Salesman N 40923 turn subscribers beyond 13,000 N 40925 support construction of theater N 40928 compares importance of Steppenwolf N 40928 compares importance with Theater V 40932 be legacy to theater N 40934 enduring days of selling N 40935 jumped % to 463.28 V 40937 rose % to 453.05 V 40944 beat 1,271 to 811 N 40948 assess impact of deaths N 40950 follows stocks for Kelton V 40953 expected damage from hurricane N 40953 be catalyst for rates N 40958 fell 1 to 32 V 40959 rose 1 to 51 V 40960 jumped 2 to 59 V 40962 jumped 4.15 to 529.32 V 40962 climbed 1.72 to 455.29 V 40963 provides services for businesses V 40964 rose 3 to 21 V 40965 jumping 1 to 9 V 40966 added 7 to 16 V 40970 gained 1 to 48 V 40970 rose 3 to 10 V 40971 added 3 to 33 V 40972 slipped 1 to 17 V 40974 gained 1 to 16 V 40976 advanced 7 to 1 V 40979 expects trading at company N 40980 gained 7 to 15 V 40980 reporting loss for quarter N 40981 earned million in quarter V 40982 added 3 to 10 V 40984 rose 1 to 50 V 40986 regarding usability of batches N 40987 extended offer to 27 V 40988 match bid by S.A. N 40995 called Bradley of Jersey N 40996 dealt setback to proposal V 40997 has it in mind V 41000 persuade 10 of senators N 41000 support him on grounds V 41001 append gains to bill V 41002 Denied vote on substance N 41005 be way to victory N 41008 telephoning office of Darman N 41012 represents expectations about value N 41013 have impact on value V 41022 knocked value of stock N 41022 caused convulsions around world V 41028 followed assurances from Darman N 41033 be consideration of increases N 41034 permit vote on gains N 41036 is game in town N 41038 is president of Inc. N 41039 obtained plea from person V 41042 faces maximum of years N 41044 indicted year as part V 41047 had change in earnings N 41049 compares profit with estimate V 41049 have forecasts in days V 41051 awarded contract for acquisition N 41052 won contract for equipment N 41053 received contract for programming N 41054 awarded contract for improvements N 41055 issued contract for changes N 41056 issued billion in bonds N 41056 issued billion in offering V 41057 replace bonds with rate N 41058 save million in payments N 41059 is part of strategy N 41060 issue total of billion N 41064 following agreement with Bank N 41064 borrowing term from bank V 41068 pouring million into one V 41071 add Fund to list V 41073 trail market as whole N 41075 bought shares in purchases V 41078 received dividend of cents N 41079 sold majority of shares N 41079 sold majority in August V 41080 got 30.88 for stock V 41082 leaving himself with shares V 41083 Including sale of stock N 41083 sold % of stake N 41088 tops portion of table N 41089 doubled holdings in company N 41090 bought shares for 125,075 V 41091 is president of Co. N 41091 keeps account at firm V 41091 recommended stock as buy V 41092 had recommendation on stock N 41092 had recommendation for years V 41094 paid average of 28.43 N 41094 paid average for share V 41096 bought shares at prices V 41103 is adviser to individuals N 41105 reached week in Cincinnati V 41105 end battle for maker N 41106 sued pany in 1981 V 41106 installing carpets in office V 41108 lost million in earnings N 41110 anticipate litigation over syndrome N 41116 was fumes from adhesive N 41117 adding maker as defendant V 41124 condemn buildings in area N 41128 putting letter of credit N 41130 transform area from thoroughfare V 41132 EXPANDS role of courts N 41137 review process in country N 41142 joined firm of Scheetz N 41142 joined firm as consultant V 41143 advising office on matters V 41144 marked turn toward conservatism N 41144 proclaimed shift in direction N 41146 apply labels to term V 41155 cut supplies to Europe N 41163 supply Dutch with oil V 41166 were result of confusion N 41166 was comfort for drivers V 41167 became fact of life N 41172 include dividends on holdings N 41173 paid million before million V 41176 includes months of 12 N 41177 saw paychecks over year V 41178 reported earnings for quarter N 41179 defended salaries at Stearns N 41182 paid million before dividends N 41182 paid million for months V 41186 taking chairmanship of group N 41186 taking chairmanship from Carey V 41187 remain member of board N 41190 take role in management N 41191 joined Grenfell as executive V 41192 advised Guinness on bid V 41198 's coincidence about departures N 41199 rose % to million V 41205 yield % in 2004 N 41205 yield % in 2008 V 41205 yield % in 2018 V 41205 yield % in 2019 V 41207 priced Monday by group V 41213 received rating from Moody V 41225 brings issuance to billion V 41226 indicating coupon at par N 41227 buy shares at premium V 41228 indicating coupon at par N 41229 buy shares at premium V 41231 buy shares at premium V 41244 named officer to posts V 41244 elected him to board V 41245 is one of number N 41246 was subject of inquiry N 41247 filed information with FDA V 41248 recalling one of drugs N 41256 running company on basis V 41257 selected him for posts V 41258 restore sense of integrity N 41263 manipulating accounts for years V 41271 reduce spending in fashion V 41273 chop talk about presidency N 41277 was decision in presidency N 41277 fight war on side V 41280 was one of bills N 41283 want guarantee from leadership N 41283 get vote on bills N 41285 taking responsibility for votes N 41285 concealing them in truck V 41286 have nostalgia as anyone N 41292 was the in years N 41293 hit peak of 1,150,000 N 41293 hit peak in 1987 V 41294 auctioned dollars of bonds N 41295 was % for equivalent V 41296 redeem million of bonds N 41298 buy shares in company N 41298 buy shares at price V 41300 are % of shares N 41301 Noting approval of treatment N 41303 remove mood from market V 41307 came day after drop N 41307 fell 647.33 in response V 41308 rose points to 35015.38 V 41309 rose 41.76 to 2642.64 V 41311 outnumbered decliners with 103 V 41318 are concerns on horizon V 41319 keeping eye on Street V 41325 keep dollar in check V 41326 rose 19 to yen V 41326 gained 17 to 735 V 41327 rose 130 to 2,080 V 41328 gained 80 to 2,360 V 41329 fell points to 2135.5 V 41330 was half-hour before close N 41331 fell 29.6 to 1730.7 V 41335 hit market in midafternoon V 41336 manages trading for concern V 41341 avoided losses despite report V 41344 rose 20 to pence V 41345 finished 22 at 400 V 41346 rose 5 to 204 V 41346 rose 25 to 12.75 V 41347 raised stake in maker N 41349 eased 4 to 47 V 41350 announced plunge in profit N 41352 dropped 11 to 359 V 41352 rose 17 to 363 V 41353 was talk of sale N 41355 attributed action in them N 41355 attributed action to positioning V 41356 fell 8 to 291 V 41356 was 4 at 261 V 41357 fell 20 to 478 V 41358 fell 1 to 124 V 41359 declined 12 to 218 V 41360 posted rises in Stockholm V 41364 recovered one-third to one-half N 41364 posting gains of % N 41365 are trends on markets N 41369 include construction of plant N 41370 completed sale of division N 41371 paid million in cash N 41371 paid million to Unitrode V 41373 spend million on facilities V 41378 made lot of investors N 41378 buy sort of insurance N 41382 buying option on stock N 41384 sell number of shares N 41384 sell number at price V 41387 is type of insurance N 41395 match loss on stock N 41395 match loss on stock N 41396 establishes price for stock N 41397 sells stock at loss V 41397 sells put at profit V 41399 handle transactions through Corp. V 41402 reduce cost by amount V 41403 exceed % of investment N 41415 realize profit on puts N 41415 realize profit after suspension V 41422 buy shares at price V 41423 gives buffer against decline N 41424 reduces cost of stock N 41424 reduces cost by amount V 41427 exclude effect of commissions N 41429 streamline version in advance V 41437 keep provision in version V 41438 send version of measure N 41438 send version to Bush V 41439 took effect under law V 41442 reported volume as record V 41443 raised billion in capital N 41443 raised billion during quarter V 41446 giving factor of 0.6287 N 41448 amalgamate four of companies N 41450 increase stake in Corp. N 41452 require approval by shareholders N 41453 named director of National N 41458 caused turmoil in markets N 41463 had effect on Street N 41464 close points at 2638.73 V 41465 raises issues about decline N 41466 raises questions about problems N 41467 drew parallel to 1987 N 41470 was the in string N 41472 called figures after months V 41474 reinforced view of analysts N 41476 's improvement over year N 41477 slipping % to billion V 41478 leaped % to billion V 41479 revised figure from deficit V 41481 feeds appetite in country N 41483 increased price of products N 41486 curb demand for imports N 41487 foresee progress in exports N 41496 took step in effort V 41496 spur sales of machine N 41497 remedy couple of drawbacks N 41497 lowering price for machine N 41497 lowering price by 1,500 V 41497 chooses drive as alternative V 41498 is device of choice N 41499 founded Next in hopes V 41499 fomenting revolution in way N 41504 buying numbers for purposes V 41505 buy computer without device N 41505 buy computer for 4,995 V 41506 outfit computer with drive V 41506 supply one at cost V 41507 purchase system through Inc. V 41511 handle amounts of data N 41511 edit clips with computer V 41513 is dealer to corporations N 41513 purchase drives with machines V 41514 signal retreat from storage N 41514 play role in decade N 41518 increase sales on campuses N 41523 distributing software for it N 41526 introduce version of program N 41526 introduce version in 1990 V 41527 offer version of computer N 41528 offers computers with displays N 41529 have model under development V 41530 named president of operator N 41534 slid % to million V 41535 had income of million N 41536 had loss of million N 41537 had profit of million N 41539 attributed decline to revenue V 41539 upgrade inventories to 1.1 V 41541 saw hints of delay N 41546 ship products during quarters V 41550 start shipments of product N 41551 stem all of ink N 41554 are guide to levels N 41584 fell % from quarter V 41588 included million from businesses N 41590 rose % in quarter V 41595 included million from operations N 41598 jumped % in quarter V 41600 reflect million in dividends N 41603 had counterpart in quarter V 41604 rose % to billion V 41607 raise ownership of partnership N 41609 offered share for unit V 41612 projecting surplus for year V 41613 include receipts from sale N 41616 brought output for months N 41616 brought output to tons V 41617 gained measure of control N 41622 was president of division N 41622 was president of Inc N 41623 named chairman of board N 41625 invest million in Recognition V 41626 increase ownership of shares N 41627 increase stake in Recognition N 41627 increase stake to % V 41629 obtained commitment from Bank N 41629 convert million in debt N 41629 convert million to loan V 41631 attributed loss to revenue V 41632 indicted October on charges V 41632 win million in contracts N 41633 put agreement with Prospect N 41633 put agreement to vote V 41634 rose cents to 6.625 V 41635 slipped cents to 10.50 V 41636 offer rebates on Beretta N 41637 idle plants for total V 41638 make line at Chevrolet N 41638 fell % during October V 41639 offering rebate on Corsica N 41641 get financing at rates V 41642 submitted offer to directors V 41643 discuss details of proposal N 41645 confirmed receipt of offer N 41646 rejected proposal by StatesWest N 41647 has stake in Mesa N 41647 operates turboprops among cities V 41648 connecting cities in California N 41651 was officer of FirstSouth N 41651 receive sentence of years N 41655 report interest as income V 41656 was part of effort N 41656 hide condition from regulators V 41658 conceal agreements with Taylor N 41660 approached Mastergate with trepidation V 41663 takes sweep of scandals N 41670 confiscated one of properties N 41670 owes millions in taxes N 41674 sell assets of MPI N 41676 distinguish it from Tet V 41678 handling this for Slaughter V 41679 carry impersonations of figures N 41680 mixing brand of patriotism N 41680 is fire as senator V 41680 playing succession of lawyers N 41680 has demeanor of Bush N 41680 has demeanor in portrayal V 41683 has fun with language V 41684 subtitled play on words N 41685 describes flunky as one V 41685 handling appeals at Bureau V 41694 set office of chairman N 41694 elected Johnson as chairman V 41695 been director at Hutton N 41695 was president of Strategies N 41697 take responsibility for areas N 41698 been consultant on strategy N 41698 been consultant for years V 41699 faces number of challenges N 41699 faces number with restructuring V 41700 's shortage of things N 41701 moved date of retirement N 41701 accommodate election as director N 41703 operates market for loans N 41703 buying loans from lenders V 41703 packaging some into securities V 41703 keeping rest in portfolio V 41704 describes displacing of grandees N 41708 broke toe in dark V 41709 weighing quarter of ton N 41713 left environment for duplex V 41713 prevent hoisting of trees N 41713 hit both with lawsuit V 41714 console them for traumas V 41719 been head of company N 41719 been head for years V 41719 sold it to Phibro V 41725 surrounding changing of guard N 41730 prefers nests of birds N 41734 entitled Loathing in Boardrooms N 41742 share wealth with decorators V 41743 demand place on boards N 41747 t'aint enough of it N 41753 endowed weddings to noblemen N 41758 is president of Counsel N 41759 raised stake in Corp. N 41760 hold shares of Lockheed N 41764 credited story in News N 41767 speed cuts with U.S. N 41767 recorded narrowing in surplus N 41768 jumped % in August V 41771 do trade than pair N 41771 arrange acceleration of cuts N 41772 requested speedup of cuts N 41775 reach agreement by December V 41776 kindled interest among companies V 41777 organizing missions to states N 41779 try trips on businessmen V 41781 opened offices in Diego V 41781 bringing number of offices N 41781 bringing number to 27 V 41782 has offices in Canada V 41785 received order from Ministry V 41786 provide system for fleet N 41789 supply country with systems V 41791 receive shares for each V 41795 extended period of warrants N 41797 purchase share of stock N 41797 purchase share for 2.25 V 41799 lay % of force N 41801 sell 53 of offices N 41803 record gains of million N 41803 record gains from sale V 41804 realize gains before end V 41807 expects rate of increase N 41812 close offices in Chicago N 41814 described restructuring as effort V 41815 rose % in August V 41819 fell % from year V 41825 represented % of consumption N 41826 totaling yen in August N 41829 reading stories in press V 41829 reporting Comeback at Wang N 41830 are matters of debate N 41831 selling products of company N 41836 's lot of work N 41838 lost ground to computers N 41839 funded employment by borrowing V 41840 reported ink for quarter V 41840 provided answers to questions N 41841 avoid discussions of finances N 41844 poses problem for salesman N 41845 become experts on report N 41847 consider products on merits V 41847 assuage fears about finances N 41852 report loss for quarter N 41854 jeopardizes credibility in time V 41854 be problem for run V 41855 held positions at Polaroid N 41860 supervises network of computers N 41863 convincing president in charge N 41869 is one of assets N 41870 is analyst with Group N 41871 left company in July V 41871 sell products to Kodak V 41871 muster support from allies V 41874 sell VS to customer V 41875 left Wang for Inc. V 41879 sold system to maker V 41881 take risk with Wang V 41886 is president of Inc. N 41888 have pride in job V 41899 warned salespeople about negativism V 41900 watch us for message V 41901 Look customer in eye V 41902 rose % on strength V 41905 had profit of million N 41910 had results against million V 41914 reported gains to levels N 41914 reported gains for quarter V 41922 rose % to million V 41925 rose 1.25 to 64.125 V 41927 sell service to customers V 41927 reported jump in earnings N 41930 sees improvements in margins N 41931 take it to range V 41932 fell 2.625 to 42.375 V 41934 attributed that to plan V 41936 improve share of market N 41937 match that of AT&T N 41946 reported increase in number N 41946 added customers with total V 41947 fell cents to 55.875 V 41952 fell cents to 29 V 41956 extending contract with Co. N 41956 provide parts for jetliners N 41957 supply shipsets for planes V 41958 include edges for wings N 41959 delivered 793 of shipsets N 41959 delivered 793 to Boeing V 41963 accepted position of chairman N 41966 has interests in estate N 41967 been president of Balcor N 41968 takes responsibility for management N 41971 posted loss of million N 41972 had earnings of million N 41973 had loss of million N 41973 had loss after earnings V 41974 increased reserves by million V 41974 raising reserves to million V 41975 had profit of million N 41976 followed round of increases N 41976 reflecting decline in market N 41977 took charge of million N 41978 were losers in collapse N 41983 resurrect package at 250 V 41984 buy 250,000 at 83.3125 V 41988 left jobs at Airlines N 41988 left jobs with combined V 41989 was 575,000 with bonus N 41990 changed jobs at ones V 41990 stash kind of money N 41991 lure him from Airlines V 41991 paid salary of 342,122 N 41991 paid salary with bonus V 41992 buy 150,000 at 69 V 41998 succeeds Sherman in positions V 42001 was difference of opinion N 42006 bought 112,000 of shares N 42006 bought 112,000 in transaction V 42008 represents % of shares N 42011 reported increase in earnings N 42014 lead industry with performance V 42024 be year in history N 42029 had growth in quarter N 42033 attributed results to gains V 42038 offset decline in sales N 42038 fuel increase in sales N 42039 led growth in division N 42045 attributed growth to sales V 42048 was result of savings N 42049 took analysts by surprise V 42050 includes brands as detergent N 42051 estimated margins at % V 42056 Improving profitability of operations N 42056 is priority in company N 42057 sold business in 1988 V 42058 elected director of company N 42058 has interests in stations N 42058 increasing number of seats N 42058 increasing number to five V 42060 is projects at Inc. N 42061 have look with fixtures V 42063 poured ridicule on drawings V 42063 replaced photos in pages V 42069 been roommate for years V 42074 buying masks for kids V 42075 is result of activity N 42077 enjoy climate over term N 42081 blame it on hunter-gatherers V 42082 announce end of episode N 42084 lock us into scenario V 42087 restructure itself like corporation V 42089 create position of officer N 42090 bring accountability to agency V 42099 appoint servants from agency V 42099 scour world for officer V 42100 attract candidates from sector N 42101 spend years of life N 42104 were signature of adversary N 42106 monitoring parlors in City N 42109 collecting names of those N 42109 congratulate them during time V 42112 is chapter in relationship N 42113 following indictment on charges N 42113 is legacy of relationship N 42115 was one of convenience N 42124 remove him from power V 42126 mastered art of survival N 42129 made it through 1988 V 42130 maintain grip of throne N 42131 abandon command for exile V 42132 left him without way V 42135 is weapon against gringos N 42136 discovered the in 1959 V 42138 advance career of officer N 42138 relayed reports on tendencies N 42140 was experience for the N 42141 Born son of maid N 42142 gained admission to academy N 42145 had uniform with buttons N 42145 had uniform in country V 42145 was cult of militarism N 42145 were elite with privileges N 42148 monitoring opponents in region N 42148 tracking influence in unions N 42149 was one of contributors N 42150 was priority for leader N 42152 been 300 to 400 N 42156 gained cache of information N 42160 splashed information on handbills V 42165 was expert at bribing N 42166 revealed himself as officer V 42167 visiting prisoners in cells N 42167 visiting prisoners at headquarters V 42173 interpreted studiousness as sign V 42174 defeat attempt against him N 42178 calling him in tribute V 42178 milk services of Cuba N 42178 ran reports about Noriega N 42178 ran reports in 1977 V 42179 put stock in information V 42182 drew list of options N 42184 scold dictator on ties V 42186 became threat in 1976 V 42186 buying recordings of conversations N 42187 included wiretaps of phone N 42188 caught him with hands V 42189 cutting Noriega from payroll V 42190 get it from characters V 42192 sold information on recordings N 42192 sold information to Cubans V 42193 cancel contract with rent-a-colonel N 42193 cancel contract at beginning V 42195 indicted Panamanians on charges V 42195 running arms to rebels V 42195 overthrow government of Somoza N 42200 arrest him on charges V 42201 was Friday in June N 42204 received message from commander V 42205 postpone visit to Washington N 42208 charge Noriega on allegations V 42210 granted shah of Iran N 42210 granted shah of Iran N 42210 granted shah as favor V 42214 enforce laws of States N 42218 maneuvered way to top N 42220 put G-2 on payroll V 42223 expanded contacts with Cubans N 42224 indict Panamanian on charges V 42228 arrange attack on arsenal N 42229 win protectors in administration N 42230 played agencies like violin V 42231 maintained influence with Washington N 42233 notified Briggs of invitation V 42235 involve him in orgy V 42235 record event with video V 42236 resigning position at Council N 42237 curry favor in Washington V 42238 steal elections for party V 42239 contributed 100,000 to leader V 42241 ordering beheading of Spadafora N 42241 finger Noriega on charges V 42248 had assets in place V 42257 have him in 1988 V 42258 drop indictments in exchange V 42260 bring him to justice V 42262 is battle to death N 42269 provided estimates for company N 42272 been force in expansion N 42273 ease grip on credit N 42274 do something about this V 42279 reflected weakness in goods N 42283 expect declines in spending N 42285 seen effect of that N 42286 offset rise in assemblies N 42287 expect surge in production N 42288 is summary of report N 42293 is parent of Omnibank N 42297 is indication to date N 42299 compares rates of groups N 42300 aged 35 to 44 N 42300 was 13.4 per 100,000 N 42306 be harbinger of mortality N 42310 spends billion for promotion V 42313 restrict advertising in U.S. V 42313 violate protection of speech N 42315 attributes differences in rates N 42315 attributes differences to patterns V 42317 given smoking than blacks V 42318 comparing changes in rates N 42326 represent interests at level V 42327 recognizes influence of government N 42329 prompting swings in prices N 42330 gaining strength during run-up V 42331 bought stock on cheap V 42335 began day at 449.89 V 42335 lost % at point V 42343 take advantage of swings N 42349 benefiting a to detriment V 42349 do something about it V 42356 was day for investors N 42357 tumbled 3 on news V 42357 take charge against earnings N 42357 resolve dispute with licensee N 42360 reported losses in quarter N 42364 bring total for year N 42364 bring total to 10 V 42368 added 3 to 30 V 42370 reported increase in profit N 42373 lost 1 to 27 V 42375 dropped 1 to 5 V 42376 reported income for quarter N 42377 named president of publisher N 42379 been president for operations N 42380 take responsibilities as editor N 42382 remains editor in chief N 42385 been assistant to chairman N 42391 saw evolution of drugs N 42395 produce planet by turn V 42398 predicted famine by 1980 N 42400 produced tumors in rats V 42402 opposed methods of Environmentalists N 42403 require energy for solution V 42405 opposing search for methods N 42406 improving quality of life N 42407 rationalize priorities by solving V 42407 solving problems at level V 42409 missed points of conference N 42410 represent consensus among specialists N 42411 including one from Academy N 42412 answer question in title N 42412 create stories for itself N 42413 dictate set of solutions N 42414 deliver point of view N 42417 educating public about issues V 42419 altered physics of atmosphere N 42425 fulfilling earnings for 1989 N 42427 met estimates of analysts N 42430 included operations of business N 42434 blamed volume on prices V 42434 were % in quarter N 42435 buying soft-drinks at discounted V 42438 attributed bulk of increase N 42438 attributed bulk to costs V 42439 get prices by promotion V 42442 repurchased million of shares N 42442 repurchased million during quarter V 42443 is part of plan N 42443 acquired total of shares N 42446 include charge of million N 42449 reach agreement in principle N 42449 sell Inc. to management V 42454 has relationship with Hooker N 42455 providing million in financing N 42455 providing million to company V 42457 owns % of company N 42457 acquired interest in firm N 42457 acquired interest in 1986 V 42458 had stores in operation V 42460 approached number of suppliers N 42460 shipping merchandise to chain V 42461 causing jitters among suppliers N 42465 advising Hooker on sale V 42466 was the in series N 42468 split company in half V 42470 received bid for malls N 42470 received bid from consortium V 42472 named president of unit N 42473 been president of Inc N 42474 assume title of chairman N 42478 is talk of some N 42479 put things into schedule V 42482 replace it with newscast V 42484 is opportunity for audience N 42488 alter line-up on mornings N 42489 is no on networks N 42491 be market for programming N 42491 has ratings on mornings V 42492 replacing cartoons with version V 42494 supply network with shows V 42495 cost 300,000 per episode N 42497 had net of million N 42499 attributed slide to expense V 42500 cuts value of profit N 42506 named officer of manufacturer N 42508 was executive of Inc. N 42508 was director of Robots N 42510 been president in group N 42512 correct misquotation in article N 42515 offer therapy with drugs N 42515 offer therapy to any V 42516 reduced deaths in cancer N 42516 reduced deaths by one-third V 42518 offer hope of something N 42522 have prospects for advances N 42523 use levamisole as point V 42527 include gas in tests V 42529 criticized program as attempt V 42530 marketing gasoline for cars N 42531 conduct testing to date N 42532 compare blends of gasolines N 42532 compare blends with mixtures V 42533 test gasolines on technologies V 42534 was estimate for phase N 42538 supported move on Hill N 42538 selling cars by 1995 V 42539 mentions gasoline as alternative V 42542 inherited problems of Lincoln N 42543 made comments before hearings V 42543 be disaster in industry N 42544 cover actions of Jr. N 42546 made findings in one V 42547 buying estate from one V 42548 put Lincoln into conservatorship V 42549 was part of pattern N 42549 shift deposits to company V 42549 used deposits as cache V 42556 received 48,100 in contributions N 42556 received 48,100 from Keating V 42560 received contributions from Keating V 42562 pursue role of senators N 42563 pumped million into Lincoln V 42564 held hope of restitution N 42565 buying certificates of deposit N 42566 have plans at time N 42567 devise approaches to reorganization N 42568 told committee in meeting N 42574 made mention of response N 42575 discussing plan with creditors V 42577 sell billion in assets N 42582 leave it with cash V 42583 leave carrier than one N 42585 having problems with revisions N 42588 miss projections of earnings N 42588 miss projections by million V 42589 miss mark by million V 42596 hold dollars from sales N 42597 have million in cash N 42602 has rights for period N 42610 SIMPLIFYING tax before 1990 V 42613 backed plan in bill N 42615 getting it into bill V 42616 has priority on side V 42618 resolve issue with legislation V 42621 deduct losses on 1989 V 42625 DELAYS deadlines for victims V 42627 is % of liability N 42628 describes relief for victims N 42629 pay tax by 15 V 42632 grants relief for returns V 42633 were perks for staffers N 42636 are targets of drive N 42637 announced filing of actions N 42638 file 5498 with copies V 42640 was reputation for honesty N 42641 justify caches to IRS V 42642 told story to Court V 42643 escape tax on income N 42643 deposited 124,732 in account V 42643 reporting income of 52,012 N 42644 saved 47,000 in 1974-81 V 42644 abandoned family in 1955 V 42646 offered evidence of sources N 42647 made gifts of 26,350 N 42658 sent helicopters in pursuit V 42660 limit bikes to roads V 42663 is one of storms N 42664 asserting right as taxpayers N 42665 prompted pleas from Sierras N 42665 ban them from country V 42666 become vehicles of terror N 42670 following lead of parks N 42670 closed paths in parks N 42670 closed paths to bicycles V 42671 consigns them to roads V 42674 permits vehicles on thousands V 42674 close lands to bikes V 42674 including portions of the N 42677 allow cycles in areas V 42678 created something of rift N 42678 created something in organization V 42679 lumps bikes into category V 42681 careening trail on them V 42681 echoing concerns of members N 42683 got taste of wilderness N 42683 got taste as hikers V 42685 lobby managers over issues V 42695 entered production in 1981 V 42698 make it into country V 42700 is bastion of sport N 42702 is home to Bike N 42703 attracted visitors than week N 42704 be combination of technology N 42712 buy bonds for safety V 42714 cut rally in bonds N 42715 finished points at 2638.73 V 42718 breathing sigh of relief N 42722 sent signal of determination N 42723 keep lid on rates V 42723 pumped money into system V 42730 make trouble for market N 42730 make trouble for two V 42734 ending day at % V 42737 produce versions of issues N 42739 is venture of Co. N 42750 offset weakness in pulp N 42750 fuel jump in income N 42751 reported profit of million N 42753 posted rise in profit N 42761 increase reserves for loans N 42761 making addition to provision N 42763 bring provision for loans N 42763 bring provision to billion V 42765 Get problem behind you V 42766 had capacity for time V 42768 posted loss for quarter V 42768 adding million to reserve V 42773 setting world on fire V 42777 said payments from Argentina N 42778 narrowed loss to million V 42779 take provision for loans N 42781 called gains of million N 42783 maintaining expenses in proportion V 42785 generate one of margins N 42785 minimizing drop in margin N 42785 minimizing drop with growth V 42790 reverse rise in loans N 42797 brought reserves for loans N 42797 brought reserves to billion V 42797 covering % of loans N 42800 take part in lot N 42800 take part in quarter V 42803 cited income from sources N 42807 set date for elections N 42807 cost control of government N 42808 retain control with majority V 42811 be vote for Gandhi N 42812 called elections for house N 42812 called elections on 24 V 42815 be test for minister N 42821 's feeling of indignation N 42822 judging regime by policeman V 42823 be protest against failure N 42824 retains control of government N 42825 call liberalization of economy N 42832 made mess of years N 42833 field candidates in precincts V 42835 fields candidates in % V 42836 announces list of candidates N 42837 be one of points N 42838 signed contract with Bofors N 42843 blocked passage of bills N 42844 was time in years N 42845 become cry against government N 42848 had hope in leader V 42853 is reputation of opposition N 42856 fear repeat of experience N 42860 confirming payment of 40 N 42862 disclose names of middlemen N 42864 received consideration in transactions V 42866 admits payments of million N 42869 reports lapses in evaluation N 42871 disclose names of middlemen N 42871 received kickbacks from company V 42873 publishes portion of report N 42876 hold % of shares N 42877 seen filing by Parsow N 42878 seek support of board N 42883 keep watch on market N 42889 paid attention to operations V 42890 injected cash into system V 42890 arranging billion of agreements N 42890 arranging billion during period V 42891 keep lid on rates V 42896 considered signal of changes N 42904 boost size of issue N 42904 boost size from billion V 42908 announce size of sale N 42908 announce details of offering N 42909 offer billion to billion N 42912 priced bond for banks N 42913 had impact on market V 42924 dominated attention in market V 42926 operates one of systems N 42927 was part of plan N 42931 reflected the in market N 42934 supported prices of Mac N 42937 yielding % to assumption N 42941 accept today for lists N 42945 set pricing for million V 42958 provides increase for development N 42960 gives authority to administration V 42960 facilitate refinancing of loans N 42961 met opposition from bankers N 42964 subsidizing loans above % N 42964 subsidizing loans under program V 42964 yield million in savings N 42965 cast fight as stand V 42966 are stewards of companies N 42967 won approval of million N 42969 steer it from aid V 42973 covers collection of accounts N 42974 raise ceiling on loans N 42974 faces opposition in House N 42975 put bill over budget V 42976 complicate picture in 1991 V 42976 commits Congress to set V 42976 including funds for station N 42977 promised billion within billion N 42978 continue work on satellite N 42979 setting limit of billion N 42979 appropriated million for start-up V 42980 receive increases beyond those N 42982 become vehicle for lawmakers N 42982 earmark funds for projects N 42984 preserve balance between House N 42987 passing House on call V 42989 are areas from standpoint V 42990 is opposition to riders N 42991 renewing support for Fund N 42993 taking views into account V 42995 be level of impassiveness N 42998 posted advances of cents N 43001 fix price for gold N 43007 is rush on part N 43008 bear memory of 1987 N 43010 having impact on gold N 43011 is incentive on part N 43011 retain some of quality N 43017 having impact on market N 43020 assess action in market N 43028 accept delay of shipments N 43031 deferring shipments in years V 43034 hurt sales of beef N 43041 placed billion in securities N 43041 placed billion under review V 43044 enhance position in business N 43048 guarantee extinction of elephant N 43056 described conservationists as puppies V 43056 know thing about Africa N 43058 generates pleas for aid N 43061 make billion in loans N 43066 seek help for owners N 43070 deleting repeal from bill N 43075 push lawmakers toward solutions V 43078 recommend repeal of 89 N 43082 selling furniture to agencies V 43086 join compromise on legislation N 43087 increase warranty on systems N 43087 increase warranty to years V 43091 oppose increase in length N 43095 take jobs with concerns N 43096 produce assembly for Army N 43098 assume position of president N 43098 assume position upon retirement V 43099 was executive of Corp. N 43100 affiliating Fletcher into One V 43103 raise billion in cash N 43103 raise billion with sale V 43103 redeem billion in maturing N 43106 lowered ratings on million N 43107 downgraded notes to single-B-1 V 43108 paying dividends from series V 43111 left Afghanistan in February V 43119 support clients by means V 43122 provide clients in Kabul N 43122 provide clients with assistance V 43122 including return of forces N 43123 was addition of caveat N 43134 protect regime against resistance V 43138 including troops of Ministry N 43140 are hostage for behavior N 43142 signed agreements for experts N 43142 replace some of personnel N 43150 are anathema to public N 43152 surrender city to moderates V 43153 sent Hekhmatyar with demand N 43158 faced minefields without detectors N 43160 resumed aid to months N 43169 directs program on Asia V 43170 stirred soul of Reagan N 43177 been champion of cause N 43181 say something about it N 43182 kicking father in pants V 43186 struck deal with leaders N 43186 provide aid to Contras V 43187 win aid for rebels V 43189 be force without arms V 43190 urging members of Congress N 43190 approve financing for campaign N 43191 restore some of funds N 43192 veto bill with funding N 43193 prevent damage to SDI N 43197 spells trouble for Wars N 43201 heads Center for Policy N 43202 boosting spending on SDI N 43203 have fire at moment N 43204 is president of Institute N 43205 raise profile of causes N 43210 be wind in sails N 43212 accepted resignation of Allen N 43216 was episode in saga N 43218 called prospect of speech N 43220 began it with warning V 43220 opposes rights for homosexuals N 43221 persuade you to view V 43223 assimilate status of blacks N 43223 assimilate status to that V 43226 criticized idiocy of notions N 43227 ensure treatment under law N 43227 risk retrenchment with complicity N 43231 teaches government at College V 43231 remain member of commission N 43233 elevated concept of rights N 43233 elevated concept above rights V 43234 is divide between view N 43236 is substitute for argument N 43237 is embarrassment to purpose N 43240 become chairman upon retirement V 43242 was executive of distributor N 43242 was executive from 1982 V 43244 been president since 1983 V 43245 joined Bearings in 1988 V 43246 been director since 1985 V 43247 are part of succession N 43248 opened exhibition in Moscow V 43248 touring some of stalls N 43248 representing companies as Corp. V 43251 underscores interest in market N 43252 spent time at stand V 43258 lowered trust in Japan N 43261 parcel powers to republics V 43261 reflect changes in federation N 43262 gave government until 15 V 43263 reflected confidence of the N 43264 abandoning project in Indonesia N 43265 covered acres in region N 43267 moving company to Kong V 43268 acquire 10 of restaurants N 43269 set market with government V 43269 open store by 1990 V 43272 have sale of Dada N 43272 luring collectors with sales V 43273 auctioned pistols with paintings N 43274 auction works with estimates N 43274 auction works on 25 V 43275 providing service to clients N 43277 be the between countries N 43279 Ending shopping in Community N 43279 Ending shopping after 1992 V 43283 reported gain after requirements N 43287 reported profit before taxes N 43288 produced loss of million N 43292 get product on shelves V 43294 reported earnings of million N 43295 had loss of million N 43298 plunged points before lunch V 43306 turn shares at rates V 43307 heads arm of Inc N 43312 buy blocks of stock N 43312 buy blocks at eye-blink V 43314 buy blue-chips at quoted V 43318 promote shifts in assets N 43320 shifts weightings between stocks V 43321 boosted positions in accounts N 43321 boosted positions to % V 43321 take advantage of prices N 43323 reduced holdings to % V 43326 insure value of portfolio N 43328 practicing forms of insurance N 43329 taking advantage of discrepancies N 43335 risk money for guy V 43339 caused shutdown in trading N 43340 cut exposure to market N 43341 put you in room V 43352 causing any of volatility N 43355 been two of years N 43356 is comfort in period N 43362 infected one of networks N 43363 discovered virus on Monday V 43364 carry analyses of data N 43366 expunge virus from system V 43378 confer privileges on user V 43380 finds one of passwords N 43384 protested launch of probe N 43385 carrying Galileo into orbit V 43389 change value of pi N 43390 bringing indictments in cases V 43392 usurp authority under doctrine N 43397 supply definition in decision V 43397 breached duty to corporation V 43398 pushed definition to point V 43399 underlying conviction of Chestman N 43400 assemble certificates for delivery V 43401 take her to bank V 43402 discussed it with broker V 43412 was confirmation of rumors N 43417 was victim of overzealousness N 43419 resist process of extension N 43420 make decisions in ways V 43422 has strengths of specificity N 43424 extends definition of trading N 43424 see number of cases N 43425 make judgments about utility N 43426 gain information about collapse N 43428 check rumors with company V 43430 hear views of representatives N 43430 create uncertainty than decisions N 43431 resisted definition of trading N 43433 provide illustrations of evolution N 43434 halt expansion of statutes N 43434 adopting rule of construction N 43435 deprive another of right N 43441 is professor at School N 43442 posted decline in income N 43443 included gain of million N 43445 included carry-forward of 600,000 N 43455 regained points in minutes V 43457 limit buying to stocks V 43464 cast pall over stocks V 43470 get lot of action N 43473 have debt on books V 43475 sold shares at 40 V 43479 changed hands on Board V 43480 sell baskets of stocks N 43480 sell baskets against positions V 43494 gained 1 to 1 V 43495 gained 1 to 64 V 43496 show gain from average N 43496 show gain on 9 V 43502 gained 1 to 103 V 43502 reflecting optimism about prospects N 43505 added 1 to 17 V 43506 change name to Manpower V 43506 write part of billion N 43506 write part as prelude V 43508 began coverage of company N 43508 began coverage with ratings V 43511 reach agreement with lenders N 43520 gained % to 10 V 43522 predicted loss for quarter N 43523 raises doubt about ability N 43526 declared 2 to stock N 43529 retain cash for acquisitions V 43530 paid amount of income N 43530 maintain status as trust N 43533 get yields on deposits N 43536 reporting inquiries about CDs N 43536 reporting inquiries since Friday V 43538 receive proceeds from sales N 43540 has downs than elevator N 43542 have promotions under way V 43543 offering quarter of point N 43543 offering depositors on CDs V 43544 boosted yields on CDs N 43544 boosted yields in week V 43545 increased yield on CDs N 43545 increased yield to % V 43546 yielding a of point N 43548 yielded % in week V 43552 posted drops in yields N 43553 yielding % in week N 43553 yielding % in week N 43558 puts pressure on rates N 43560 decide size of increase N 43565 promises disbursements to countries V 43569 meet request for increased N 43570 supported role for IMF N 43570 is resource for programs N 43571 is case against it N 43573 has role in countries N 43573 assist countries in emergencies V 43574 are funds than efforts N 43575 substituting debt for debt V 43576 addresses problems of markets N 43576 is key to growth N 43577 inflated themselves into despair V 43581 support role of IMF N 43581 support role on conditions V 43583 limit it to % V 43583 bring change in policy N 43585 get piece of increase N 43586 give argument against calls N 43587 reinforce role of institutions N 43589 delay steps in anticipation V 43592 support increase in capital N 43593 directs staff of Committee N 43594 making trades with each V 43595 following investigation of trading N 43597 suspended membership for years V 43598 make restitution of 35,000 N 43598 make restitution to customer V 43603 pose challenge to Inc. V 43603 buy half of Inc. N 43603 buy half from Inc. V 43604 discussed sale of interest N 43604 discussed sale with operators V 43605 is 2 to Office N 43605 filed suit against Warner V 43607 puts it in position V 43608 keep Showtime as competitor V 43610 bears relationship to that N 43611 play role in management V 43612 Linking Showtime with operator V 43613 bring operators as investors V 43617 is operator of systems N 43618 is victory for officer N 43619 takes question of viability N 43620 is the of HBO N 43621 took control of Viacom N 43621 took control in buy-out V 43622 denied all of allegations N 43623 called talks with engineers N 43633 increased stake in Inc. N 43633 cleared way for purchases N 43636 soliciting consents from shareholders N 43636 soliciting consents in order V 43636 wrest control of Datapoint N 43636 wrest control from Edelman V 43636 purchased % of shares N 43637 acquired shares of shares N 43637 acquired shares for 2.25 V 43638 increased stake to % V 43639 acquiring % of stock N 43639 is chairman of company N 43641 make testing for virus N 43641 make testing for virus N 43641 stop spread of syndrome N 43642 segregate itself into groups V 43643 takes view of AIDS N 43643 recommends response than analyses N 43644 reduce rate of growth N 43646 is sex between partners N 43647 test population between ages N 43648 provide treatment to all V 43650 kept tabs on gyrations N 43650 shrugged downturn in equities N 43650 bid dollar above lows V 43652 reach intraday of marks N 43652 reach intraday until hours V 43656 reported deficit in August V 43658 reflected drop in exports N 43659 's news in data N 43670 set ranges of marks N 43671 anticipate easing by Reserve N 43673 injects capital into system V 43674 relaxed grip on credit N 43677 post gains against dollar N 43681 settled case against Corp. N 43682 settle issues over years N 43682 settle issues through arbitration V 43683 have applications in markets N 43685 paid million of settlement N 43685 paid million to Semiconductor V 43685 pay million in installments V 43686 have impact on results V 43688 had reign as leader N 43688 had reign by ABC-TV V 43689 topped competition with share V 43691 indicate percentage of sets N 43694 had five of shows N 43695 held record during season V 43696 expanding presence in market N 43696 acquired Foods from group V 43698 had sales of million N 43698 sells coffee under brands V 43700 sells coffee to concerns V 43701 sold coffee to airlines V 43701 does business with hotels V 43705 borrowed guilders from group V 43708 funding Departments of Labor N 43708 allow funding of abortions N 43710 tighten requirements for abortions N 43710 tighten requirements in way V 43713 holds bill for year N 43715 opposed funding of abortions N 43715 are victims of rape N 43715 open way for abortions N 43717 had inquiries from buyers N 43717 complete sale in 1989 V 43720 help managers of Ltd. N 43722 revised provisions to level V 43727 alter response of people N 43731 experiencing increases in antibodies N 43732 modify response of individual N 43736 produce quantities of antibodies N 43737 sell division to Inc. V 43738 includes purchase of Cross N 43739 selling interest in venture N 43739 selling interest to Machinery V 43741 was one of businesses N 43747 auction million of paper N 43747 auction million in maturity V 43751 reflected decline of francs N 43752 was decline in costs N 43755 make member of panel N 43758 hailed it as attempt V 43758 bring measure of openness N 43758 bring measure to setting V 43759 improve communications between branch N 43765 experiencing margins as result V 43768 reported profit for quarter N 43772 conducting talks with Germany N 43772 conducting talks on series V 43773 disclose nature of the N 43774 taking place between units V 43776 come bit in cars N 43780 been president of subsidiary N 43782 become president of a N 43784 's view of analysts N 43785 raised holding in Jaguar N 43785 raised holding to % V 43787 increases pressure on GM N 43787 complete talks with Jaguar N 43788 reach pact in weeks V 43794 make one of stocks N 43795 topped list for market N 43799 put shares into reverse V 43799 confirmed negotiations with Jaguar N 43805 win promise of stake N 43806 doubling output of cars N 43813 get war between companies N 43819 announce sale of % N 43820 sold ADRs at 10 V 43820 making profit on holding N 43840 expects increase in profit N 43841 posted plunge in profit N 43844 fell % to million V 43846 reported jump in earnings N 43847 reported income for quarter N 43849 forecasting gain on 4 V 43849 causing jump in stock N 43850 disclosed margins on sales N 43852 hit a of 81 N 43856 drove margin to % V 43857 reflected demand for applications N 43861 signed agreement with Inc. N 43861 incorporate architecture in machines V 43864 have arrangements with MIPs V 43866 share expertise in storage N 43876 called one of reports N 43879 added billion to reserves V 43881 posted drop in profit N 43883 lay % of force N 43884 exploring approaches to reorganization N 43885 buy half of Networks N 43885 buy half from Viacom V 43886 pose challenge to Warner N 43887 curb trading on markets N 43891 sell chain to management V 43892 streamline version of legislation N 43892 streamline version in advance V 43897 named director of company N 43898 increases board to members V 43899 seek re-election at meeting V 43902 tender shares under bid V 43903 sold shares for million V 43904 identify buyer of shares N 43905 sold stock in market V 43908 is addition to board N 43908 increasing membership to nine V 43921 acquired laboratories of Inc. N 43921 acquired laboratories in transaction V 43922 paid million in cash N 43922 acquire labs in U.S N 43929 calling number for advice V 43930 records opinions for airing V 43931 taken leap in sophistication N 43934 spending lot of time N 43934 spending lot in Angeles V 43934 supplied technology for both V 43937 weds service with computers V 43939 sells ads for them V 43939 apply technology to television V 43944 passing rest of money N 43944 passing rest to originator V 43946 calling one of numbers N 43948 process calls in seconds V 43952 demonstrate variety of applications N 43953 raise awareness about hunger N 43957 lift ratings for Football N 43959 uses calls as tool V 43959 thanking callers for voting V 43959 offers videotape for 19.95 V 43961 providing array of scores N 43963 increased spending during day V 43964 sponsors tips on diet N 43965 call number for advice V 43966 leaves address for sponsor V 43966 gather list of customers N 43967 charge rates for time V 43968 be % above rates N 43969 use budget for this V 43971 considering use of numbers N 43972 predicting influx of shows N 43972 predicting influx in 1990 V 43974 use number for purposes V 43975 leave number of anyone N 43978 are steps toward video N 43981 choose depths of coverage N 43982 want 2 in depth V 43986 ended talks with Integrated N 43991 meet afternoon in Chicago V 43992 is group of planners N 43994 cited concerns as reason V 43996 make payments on billion N 43997 owed total of billion N 43999 registered 6.9 on scale V 43999 caused collapse of section N 44003 caused damage in Jose V 44003 disrupted service in Area N 44005 allowing financing for abortions N 44005 compound act with taking V 44010 left group in 1983 V 44010 avoid explusion over allegations N 44011 postponed liftoff of Atlantis N 44013 dispatch probe on mission V 44015 threw conviction of flag-burner N 44015 threw conviction on grounds V 44019 is threat from Korea N 44020 seeking understanding with Congress N 44020 ease restrictions on involvement N 44021 alter ban on involvement N 44021 's clarification on interpretation V 44023 considered test for minister N 44024 ruled India for years V 44026 was time in years N 44026 expel Israel from body V 44028 reject violence as way V 44029 freed Sunday from prison V 44031 covered evidence of activities N 44032 approved ban on trade N 44032 approved ban despite objections V 44033 places elephant on list V 44034 killed judge on street V 44035 slain magistrate in retaliation V 44038 followed meeting in resort V 44039 revised offer for amount N 44044 received amount of debt N 44044 received amount under offer V 44046 plummeted 24.875 to 198 V 44047 followed drop amid indications V 44048 fallen 87.25 in days V 44048 jolted market into plunge V 44049 is bloodbath for traders V 44050 put United in play V 44052 line financing for version V 44054 Adding insult to injury V 44054 scuttle financing for bid N 44055 represents some of employees N 44057 pocket million for stock V 44057 reinvest million in company V 44058 load company with debt V 44059 round financing for bid N 44060 triggered downdraft in Average N 44060 triggered downdraft around yesterday V 44061 reject version at 250 N 44063 had expressions of interest N 44065 gave details on progress N 44066 hear update on situation N 44067 take shareholders into deal V 44072 line pockets with millions V 44072 instituting cuts on employees V 44076 eschewed advice from firm V 44079 left board in quandary V 44084 plans offering of shares N 44086 own % of stock N 44088 pay dividends on stock V 44089 pay dividend of cents N 44089 pay dividend in quarter V 44090 borrow amount in connection V 44092 pay dividend to Macmillan V 44092 lend remainder of million N 44092 lend remainder to Communications V 44093 repay borrowings under parts V 44095 owned Berlitz since 1966 V 44096 posted income of million N 44096 posted income on sales V 44097 notice things about concert N 44101 releases feelings in gratitude V 44102 left collaborators in favor V 44112 is music for people V 44113 is listening for generation V 44116 torments us with novelties V 44117 constructed program around move V 44118 introduces audience to technique V 44120 imagine performance of it N 44123 accompany readings of Sutra N 44129 hits note with hand V 44130 does this in three N 44132 write piece of length N 44132 was problem for me V 44134 began life as accompaniment V 44134 played it on organ V 44135 took it for one V 44142 develop variations from themes V 44142 ignores nature of music N 44143 makes yearn for astringency N 44146 disclose buyer of stake N 44148 negotiating sale of stake N 44148 hold % of stock N 44149 include earnings in results V 44150 reduce holding in concern N 44150 reduce holding as part V 44152 incurred delays during quarter V 44153 reported earnings of million N 44156 reported earnings of million N 44159 establishes standard of discharge N 44161 contains standard of discharge N 44163 be problems with system N 44166 prohibits preparation of water N 44166 protects them from knock V 44171 shake reputation as magazine N 44177 woo advertisers with fervor V 44179 had year in 1988 V 44179 racked gain in pages N 44183 is deterrent for advertisers V 44188 lumping ads at end V 44188 spreading ads among articles V 44189 means costs for advertisers V 44193 pour 500,000 in weeks V 44194 takes advantage of photography N 44197 attract advertisers in categories N 44198 top pages in 1990 V 44200 contemporize thought of Geographic N 44201 be kind of image N 44203 sell majority of unit N 44203 sell majority to Eurocom V 44206 prompted vigor in talks N 44209 awarded accounts for line N 44209 awarded accounts to LaWarre V 44214 restrict trading on exchanges N 44215 propose restrictions after release V 44218 became focus of attempts N 44219 putting selling for accounts N 44220 make money in markets V 44220 is shortage of orders N 44221 improves liquidity in markets N 44221 have order in hand V 44222 becomes problem for contracts V 44223 take arguments into account V 44223 allowing exceptions to restrictions N 44230 restricting trading in bills V 44231 prohibit trading in markets V 44234 banned trading in pit V 44237 made difference in liquidity N 44237 made difference in pit V 44241 adds something to market V 44244 set standards for dealerships V 44246 construct building in style V 44252 built dealership with showroom N 44254 was bear on interiors V 44254 retrofit building without stream V 44262 cut cassette in half V 44263 produced model of recorder N 44265 urged abandonment of project N 44268 introduced pico in 1985 V 44271 provided technology for products V 44274 is one of studies N 44279 push them into piles V 44280 taped it to underside V 44281 gathered leaves into pile V 44281 moved top of pile N 44283 do lawn in hours V 44294 feeding quantities of budget N 44299 created Command in Panama N 44306 keep lot of shrines N 44306 keep lot to him V 44307 burn lot of incense N 44307 burn lot to him V 44308 had thing about Navy N 44308 make part of Army N 44311 hear him at night V 44316 gave them to bureaucracy V 44321 grab him by throat V 44322 added divisions to Army V 44323 parked them at base V 44324 dedicated forces to Gulf V 44325 threw him to ground V 44326 added bureaucrats to RDF V 44327 gave charge of operations N 44328 be training for soldiers V 44334 paying billion in baksheesh N 44334 paying billion to potentates V 44335 had success in Somalia V 44336 was miles from mouth N 44340 spending jillions of dollars N 44340 fight Russians in Iran V 44340 lost interest in subject N 44342 playing admiral in Tampa V 44344 save costs of bureaucrats N 44347 appeared night in bedroom V 44348 dragging chains of brigades N 44351 canceled production of aircraft N 44358 is director of PaineWebber N 44360 is master on wall V 44361 is reminder of problems N 44362 amassed collection of works N 44362 amassed collection at cost V 44367 buy art for S&L V 44369 called halt to fling N 44371 unloaded three of masterpieces N 44374 takes drag on cigarette N 44375 established quality of collection N 44378 are part of picture N 44382 paying dividends on stock V 44382 suggests concern about institution N 44385 epitomize excesses of speculation N 44391 sold Irises at auction V 44392 has painting under key V 44394 established reputation as freespender N 44394 established reputation in year V 44395 picked paintings at prices V 44396 paid million for instance V 44397 was record for artist V 44406 searched galleries in London N 44408 sold Abraham in Wilderness N 44409 spend lot of money N 44411 developed relationship with Sotheby V 44412 assemble collection for headquarters V 44413 stir interest in masters N 44414 dominate action in masters N 44416 paid million for Portrait V 44419 is stranger to spending N 44420 bid 30,000 at auction V 44422 got wind of adventure N 44423 reported losses in quarters V 44425 extended deadline to months V 44429 have nine of paintings N 44429 have nine at home V 44430 storing paintings at home V 44433 got loan from S&L V 44434 owns % of shares N 44436 given dispute among scholars N 44437 question authenticity of Rubens N 44445 dismisses talk as grapes V 44449 compiling statistics on sales N 44450 appreciated % in year V 44452 gets data on appreciation N 44452 gets data from Sotheby V 44458 bring no than 700,000 N 44458 bring no at auction V 44462 spotted bargains in masters V 44472 had counsel of curators N 44475 put them on market V 44479 defends itself in matter V 44481 resell them at profit V 44482 advise client on purchases V 44482 set estimates on paintings V 44484 be conflict of interest N 44486 express interest in paintings N 44487 seeking return on investment V 44489 get paintings at prices V 44491 buy painting from bank V 44499 pours coffee from silver V 44499 dabs brim with linen V 44505 take it for decadence V 44508 had change in earnings N 44510 compares profit with estimate V 44510 have forecasts in days V 44514 replace Board of Institute N 44515 handling books at time V 44517 studied issues for year V 44517 proposed FASB on 30 V 44518 produced opinions in life V 44524 had meeting on 28 V 44525 disclose translations in dollars V 44528 repurchase shares in transactions V 44531 named Co. as agent V 44538 awarded contract by Army V 44542 is maker of simulators N 44543 provide amplifiers for system V 44547 increased capital by million V 44548 has billion in assets N 44549 appointed officer of maker N 44550 founded company in 1959 V 44553 establish facilities for vehicles N 44553 establish facilities in Pakistan V 44554 given contract for improvements N 44555 got contract for equipment N 44557 reflect increase of million N 44560 fell % to million V 44564 follow fluctuations of ingots N 44576 are prescription for market N 44580 bought list of stocks N 44583 see jump in profits N 44590 are a after jolt V 44591 decline % to % N 44592 ran tests on stocks V 44592 be father of analysis N 44595 been two-thirds in cash N 44595 been two-thirds since July V 44596 piled debt in buy-outs V 44599 fall % to % N 44603 doing buying in stocks N 44605 increased proportion of assets N 44607 deflated lot of speculation N 44608 runs Management in York N 44611 see this as market V 44612 was fluff in market V 44613 was blunder by market N 44614 was overreaction to event N 44614 get financing for takeover V 44617 hurts confidence in stocks N 44620 drop % in months V 44622 lead buy-outs of chains N 44628 throwing money at any V 44628 doing deals on basis V 44629 be gains in both N 44635 help team in LBO V 44637 help us in search V 44640 lose confidence in economy N 44645 been one for retailers V 44652 blocking sales of line N 44653 issued order in court V 44655 was subject of yesterday N 44657 repeated denial of charges N 44659 resume payments with payout V 44660 paid dividend on 31 V 44663 settling disputes over gas N 44664 given pipelines until 31 V 44667 take advantage of mechanism N 44669 negotiate settlement of contracts N 44671 introducing competition into transportation V 44674 change some of provisions N 44675 prepaid million on loan V 44675 bringing reduction for year N 44675 bringing reduction to million V 44676 owes million on loan V 44678 resume payments with dividend V 44678 paid 6 to shares V 44679 paid dividend on 1 V 44680 abandoned properties with potential N 44680 experienced results from ventures V 44681 reached agreement with lenders V 44683 reduce amortization of portion N 44683 reduce amortization through 1992 V 44686 provide MLX with flexibility V 44686 complete restructuring of structure N 44687 filed statement with Commission V 44687 covering offering of million N 44688 acquired interest in Corp. N 44690 access information on services N 44691 is publisher of Journal N 44692 report charge of cents N 44692 report charge for quarter V 44693 sold bakeries to Bakery V 44694 were part of Order N 44695 had income of million N 44697 rose % from tons V 44698 used % of capability N 44700 named director of commission N 44702 was finance of Inc. N 44703 acquired service from Intelligence V 44705 supplies reports on plans N 44706 is compiler of information N 44708 be site for exposition N 44708 be site in 2000 V 44710 renovate sections of town N 44713 holding expo in Venice V 44715 are ventures between firms N 44717 got anything in shops V 44718 runs casino at Hotel N 44719 increase sales to Europe N 44719 holding talks with Italy N 44719 adding pipe to section V 44719 expanding capacity by meters N 44719 expanding capacity from billion V 44721 suspend strike by workers N 44721 resume negotiations with Ltd. N 44722 meet company for talks V 44723 began Thursday with participating V 44724 demanded increase in wage N 44724 was increase of % N 44726 curbing fouling of rivers N 44726 limiting damage from accidents N 44726 improving handling of chemicals N 44728 joined country except Albania N 44728 joined country at meeting V 44729 rushed edition across Baltic V 44732 owns % of Paev N 44734 require lot of twisting N 44734 require lot by Treasury V 44735 market package around world V 44736 swap loans for bonds V 44737 swapping loans for bonds V 44738 covers billion of debt N 44739 paid 4,555 in taxes N 44739 paid 4,555 in province V 44741 spend million for maintenance V 44743 elected director of maker N 44744 placed shares at 2.50 V 44754 change loss to plus V 44758 's move in industry N 44761 be car per family V 44764 bought LeMans on loan V 44766 supplying rest of world N 44768 took Co. in 1986 V 44769 making variations of vehicle N 44770 had agreement with Corp. V 44773 has % of market N 44773 sell 18,000 of models N 44773 sell 18,000 of models N 44774 rising % to units V 44775 expand capacity by 1991 V 44777 selling vehicles through unit V 44778 sell units in 1989 V 44781 is car in Korea V 44782 claims % of market N 44783 have interests in Kia V 44784 is the of Three N 44785 make cars with payments V 44789 holds % of market N 44789 is series of disruptions N 44791 build minicars by mid-1990s V 44793 has project for cars V 44796 named officer of bank N 44806 buying funds during day V 44808 have that at all V 44813 boosted levels in weeks V 44821 void orders before close V 44833 sell securities in market V 44836 acquire Central of Inc. N 44836 acquire Central in swap V 44839 has assets of billion N 44842 WON blessing on 18 V 44842 became openers for makers V 44843 selling them in U.S V 44845 sold softies under sublicense V 44845 gained rights from Academy V 44846 invented them in 1962 V 44847 wraps itself over cornea V 44848 became eye of storm N 44849 showed traces of bacteria N 44851 were hearings on questions N 44851 were hearings in 1972 V 44859 remains leader among majors V 44862 seeking safety in companies V 44864 planning placement of stock N 44867 sell stock without hitch V 44872 take six to months N 44878 slashed value of offering N 44878 slashed value by % V 44881 showing signs after years V 44882 seeing light at end N 44884 publishes newsletter on IPOs N 44887 sell % of stock N 44887 sell % in IPO V 44888 making decisions on basis V 44889 borrow funds against IPO V 44892 affect operations of companies N 44897 flood market with funds V 44898 is non-event for business V 44901 form alliances with corporations V 44902 made it for them V 44903 see lining in clouds V 44904 lose enthusiasm for deals N 44906 underline lack of control N 44907 have degree of influence N 44908 reported loss for quarter V 44913 had loss in quarter V 44914 had loss of million N 44915 had loss of million N 44916 had loss of million N 44922 reported decline in income N 44922 excluding gains in quarters N 44926 included gain of cents N 44926 included gain as reversal V 44928 climbed % to million V 44929 jumped % to million V 44930 had profit of million N 44930 had profit against loss V 44931 excluding charge for recall N 44931 reflecting expenses in systems N 44933 had sales to million V 44945 marked end of Empire N 44947 call land of Britain N 44948 justify use of adjective N 44949 sets beauty of land N 44961 see father in condition N 44967 shifting scene from country V 44967 fashioned novel in mode V 44968 adopt attitude towards employer V 44979 spreads wings at dusk V 44981 teaches English at University V 44982 completed sale of assets N 44982 completed sale to Inc. V 44984 is part of program N 44986 distributes propane through subsidiary V 44988 overlooking runway of Airport N 44989 lease some of jetliners N 44989 lease some to airline V 44992 build terminal in Union V 44993 lease some of planes N 44993 lease some to Lingus V 44994 is notion of ferry N 44994 ferry Armenians to Angeles V 44998 leasing planes to Aeroflot V 45000 has ventures with Aeroflot V 45009 were rage in West V 45013 unload gallons of fuel N 45013 unload gallons into farm V 45014 resells it to carriers V 45015 pays bills with fuel V 45017 opened shops at Airport V 45018 manages sales on flights V 45022 taking advantage of prices N 45022 board flights in Shannon N 45028 was landfall in Europe N 45029 made stop for air V 45030 shot jetliner over Sea V 45030 suspended flights for months V 45032 making heap of money N 45032 making heap from friendship V 45033 add Lingus to team V 45035 rose % in August V 45036 rose % in August V 45038 shipping steel from plant V 45038 testing mettle of competitors N 45039 creates piece of steel N 45040 make ton of steel N 45040 make ton in hours V 45048 get toehold in market N 45050 enable production without ovens V 45051 locked giants from steelmaking V 45054 spent billions of dollars N 45054 boost percentage of cast N 45057 beat guy down street N 45058 beat everyone around world N 45061 plying dollars in market V 45064 remain kings of steel N 45065 produce drop in bucket N 45066 representing half of tons N 45070 make dent in market N 45072 set it on dock V 45074 visit plant in City N 45076 Cementing relationships with clients V 45076 is means of survival N 45079 promote cans to nation V 45081 touting doors with inserts N 45084 funneling pipe to Union V 45087 produce steel for products V 45093 offset growth of minimills N 45094 mention incursion of imports N 45095 awaiting lifting of restraints N 45096 expect competition from countries N 45102 getting attention on Street V 45104 pay billion to billion N 45106 pay million to Inc. V 45111 give prediction of award N 45117 told Kodak on occasions V 45117 followed advice in instance V 45122 sold them at price V 45128 tumbled % in quarter V 45128 rendering outlook for quarters V 45129 was delay in shipment N 45130 cited increase in business N 45130 cut revenue in term V 45131 cut value of earnings N 45136 following increase in period N 45138 see anything in fundamentals V 45142 mark declines from net N 45143 kept recommendation on stock V 45151 won business as sale V 45151 leased equipment to customer V 45152 losing money on leases V 45153 doing some of deals N 45154 announces versions of mainframes N 45156 gaining momentum in market V 45160 was % below levels V 45165 raise forecasts for 1989 N 45170 include cents from effects V 45172 increase % from billion V 45174 blamed volume on weather V 45175 were % in quarter V 45176 rose % in quarter V 45178 increased % in quarter V 45179 jumped % with sales V 45181 increased % in quarter V 45187 brought company to Pepsi V 45187 expect acquisition in year V 45188 take advantage of opportunities N 45189 be chairman of Commission N 45191 held posts at Department N 45191 become president of Corp N 45192 been solicitor at Department V 45193 met Bush in 1950s V 45193 was man in Midland V 45193 was lawyer for firm V 45194 regulates billions of dollars N 45198 represents balance of payout N 45198 paid 17 in distribution V 45199 resume schedule of dividends N 45199 resume schedule at end V 45200 supply electricity to utility V 45202 halted work on lines N 45202 stopped negotiations for resale N 45203 begin deliveries in 1992 V 45206 lost place in line N 45208 has customers in mind V 45213 rise amount of change N 45214 were times than those N 45215 given degree of leverage N 45216 be nature of creatures N 45217 buy amount within period V 45218 sold options on stocks V 45218 buy contracts at prices V 45219 had choice in cases V 45219 sell contracts at prices V 45220 be blow to Exchange V 45221 halted trading in step V 45224 make rotation with time V 45228 underscoring seriousness of transfer N 45228 put total of million N 45228 guarantee positions in case V 45233 have luxury of time N 45234 talk Bank of watchman N 45235 put money into bailout V 45237 had problems during crash V 45240 processes trades for exchanges V 45240 insure integrity of markets N 45242 give contributions to guarantee N 45243 contributed million to guarantee V 45247 is lounge of Co. N 45249 take time for massage V 45251 sneak therapists into office V 45252 is nothing like rubfests N 45254 take place in rooms V 45256 pay part of fee N 45258 are balm for injuries V 45261 feel tension around neck V 45262 leave room after massage V 45263 plies trade in office V 45265 opened doors to massage V 45272 describing visits as breaks V 45274 invited masseuse to offices V 45276 build lot of tension N 45277 brought them to halt V 45286 change consciousness towards touch N 45289 won officials at Co. N 45290 stresses professionalism during visits V 45291 visiting Emerson since January V 45294 bring touching into America V 45299 rest knees on supports V 45299 bury face in padding V 45302 massaging man in supermarket V 45306 was point in career V 45306 taken policy for business V 45307 were people in line V 45311 does work in Pittsburgh V 45311 is tip of iceberg N 45313 's nothing like skin V 45314 be cancellation of loan N 45314 be cancellation since killings V 45314 terminated credit for project N 45315 provide loan to Corp. V 45318 had doubts about project N 45318 had doubts before 4 V 45328 secured promise from Bank N 45328 lend Development at maturity V 45328 finance repayment of borrowing N 45330 pay fees to committee V 45335 acquire Inc. for 23 V 45335 expand presence in business N 45340 provide base for stores V 45341 tested sector with acquisition V 45344 had losses for years V 45345 rang profit of million N 45345 rang profit after carry-forward V 45346 turned corner in profitability V 45350 pay kind of price N 45350 getting player in industry N 45351 raised question about deal N 45352 get act in discounting V 45353 address loss in stores N 45361 make offer for shares N 45362 tender majority of shares N 45364 named officer of unit N 45365 remain president of company N 45365 represent stations in organizations V 45367 plummet points in seconds V 45373 blamed foul-up on problem V 45375 was lot of confusion N 45376 buys some of stocks N 45380 heads desk at Corp. N 45386 miscalculated drop as decline V 45388 sold dollars on news V 45388 buy them at prices V 45390 viewing prices as subject V 45393 was points at time N 45399 named president of company N 45400 retains positions as officer N 45401 representing plaintiff in suit N 45401 strike blow for client V 45404 forgo damages against client N 45404 forgo damages in return V 45408 pay 50,000 as part V 45409 scuttled deal at minute V 45412 take shot at Alexander N 45414 strike Alexander above belt V 45415 catch him from behind V 45416 assign rights to anyone V 45417 regards agreement as something V 45420 sign release from liability N 45421 rained money in markets V 45422 reaching levels for time V 45423 reap windfalls in matter V 45425 jumped points in seconds V 45425 moved rest of day N 45426 represents profit for contract V 45427 trade contracts at time N 45427 trade contracts in market V 45429 assumed positions for fear V 45431 shouting minutes before start N 45432 fell points at open V 45442 are thing of past N 45443 regained some of footing N 45446 provide prices for issues V 45450 's bit of euphoria N 45452 tumbled points to 96 V 45453 recovering losses from Friday N 45458 citing pattern of rates N 45458 see defaults from years N 45459 is concern about liquidity N 45463 include issues from TV N 45465 have rate in year V 45465 seeing problems in midst V 45467 was tonic for market N 45468 recovered all of losses N 45468 recovered all from Friday V 45471 be sellers of securities N 45477 following display of volatility N 45479 approach market as investor V 45481 owning stocks over long-term V 45482 outperformed everything by shot V 45485 losing money in market V 45486 favor investor with portfolio N 45487 is % to % N 45488 need money for years V 45490 have place in portfolio N 45492 building equity in home N 45492 provides protection against inflation N 45492 cover cost of living N 45493 invest money in stocks V 45494 sell stocks at time V 45502 pay taxes on gains V 45509 getting attention from broker V 45510 have advantage over investors V 45511 have edge in companies V 45514 sees revival of interest N 45514 boost performance of stocks N 45514 boost performance in term V 45515 eliminated effort in stocks N 45515 resuming coverage of area N 45516 seeing turnaround in interest N 45520 Buy stocks on weakness V 45522 invests amount into market V 45525 put money at time V 45536 faced doubt about bid N 45537 reviving purchase at price V 45538 face rejection by board N 45539 dropping it in light V 45540 make offer at price V 45541 obtain financing for bid V 45542 halted Friday for announcement V 45543 tumbled 56.875 to 222.875 V 45544 wreaked havoc among traders V 45545 showed signs of stalling N 45546 reaching high of 107.50 N 45548 proven mettle as artist N 45549 buy bit of company N 45554 foil Trump in Congress V 45554 bolstered authority of Department N 45555 put blame for collapse N 45555 put blame on Congress V 45556 wrote members of Congress N 45563 paid price of 80 N 45564 protect airline with transaction V 45572 obtained financing for bid N 45573 leave him with problem V 45573 handicap him in effort V 45573 oust board in fight V 45574 finance buy-out at price V 45575 lowering offer to 250 V 45576 borrow 6.1 from banks V 45579 received million in fees N 45579 raise rest of financing N 45587 joined forces under threat V 45593 obtain offer from bidders V 45594 exclude him from deliberations V 45596 finish work on bills V 45596 put sting into cuts V 45597 impose discipline on process V 45597 shift funds among programs V 45599 strip scores of provisions N 45605 bring deficit below target V 45606 cutting spending across board V 45607 provide aid for care V 45610 torpedoed plan in order V 45610 press fight for cut N 45613 have effect on process V 45616 slicing % from payments V 45619 wraps work on spending N 45623 making cuts from activity V 45626 has control of activities N 45629 exempt accounts from cuts V 45631 include cut in taxes N 45631 include cut as part V 45634 involved 425,000 in payments N 45634 use influence with Meese N 45634 use influence on behalf V 45635 described defendant as player V 45636 sold office for 300,000 V 45642 serve a of sentences N 45642 being eligible for parole N 45644 criticized Wallach for host V 45645 influence jury in August V 45647 get help for woman N 45649 blamed woes on friendship V 45651 been fulfillment of dreams N 45657 has worth of 273,000 N 45659 play role in phases V 45660 hailed ruling as victory V 45660 achieve reforms in union V 45660 achieve election of officials N 45661 was departure from terms N 45665 oversee activities for years V 45667 revealed disagreements over scope N 45668 gave right to trial N 45668 gave right for terms V 45670 received evidence about comments V 45671 sentenced defendant to years V 45671 killing men in park V 45673 touched furor in community V 45673 prompted complaints about Hampton N 45674 remove Hampton from bench V 45678 explain rationale for sentencing N 45680 carry streamlining of appeals N 45680 proposed month by force V 45681 expedite consideration of proposals N 45682 provide lawyers to inmates V 45682 challenge constitutionality of convictions N 45684 sent report to Congress V 45686 eases number of restrictions N 45688 joined firm of Bain N 45690 joining Apple in 1986 V 45691 trim levels of businesses N 45692 jumped % in August V 45692 outstripping climb in inventories N 45695 are news for economy V 45704 is summary of report N 45705 expects reduction in income N 45705 expects reduction for quarter V 45706 reduced million because damage V 45707 had net of million N 45707 had net on revenue V 45709 offer number of paintings N 45709 offer number at estimates V 45711 absorb itself in art V 45714 offered him at sale V 45714 consigned biggie to Sotheby V 45723 reduced deductions for donation N 45727 been chairman of Board N 45728 been source of collections N 45729 is hemorrhaging of patrimony N 45731 is tip of iceberg N 45732 be wasteland for museums V 45741 makes playground for bidders N 45741 given plenty of dollars N 45749 is point of game N 45757 suggests sale as sort V 45760 become sort of beanstalk N 45763 sell unit to group V 45764 have impact on earnings N 45765 has sales of million N 45766 keeping eye on indicators V 45767 handle crush of orders N 45767 handle crush during hours V 45770 held series of discussions N 45772 demonstrate value of improvements N 45775 is memory for regulators V 45776 renewed attacks on firms N 45778 was warning to firms N 45778 become danger in event V 45779 tolerate kind of action N 45780 dispatched examiners into rooms V 45781 creating losses among investors V 45784 signed letter of intent N 45784 acquire Inc. of Britain N 45787 has million in sales N 45789 named president for affairs N 45808 opens season with Godunov V 45808 featuring singers from Union N 45814 makes debut at Hall V 45815 make debut at Opera V 45819 Being newspaper in town N 45820 secured rights to features N 45821 keep offerings for itself V 45822 nabbing some of draws N 45828 seeking contracts for features N 45828 seeking contracts of pacts V 45832 turned fees from competitors N 45833 stole features from Globe V 45834 pulled features from Bulletin V 45834 was growth for Universal V 45835 was consideration in Dallas V 45837 is venture between Universal N 45838 develop ads for newspapers N 45843 discuss episode in public V 45844 sponsor discussion on pact N 45844 sponsor discussion at meeting V 45851 get cut from type V 45853 see increases in pay N 45857 become part of boilerplate N 45859 including exemption from laws N 45860 enhance competitiveness of companies N 45863 prohibit use of rating N 45865 requires rollback in premiums N 45870 make war against reformers V 45873 build cars in quarter V 45874 putting pressure on Corp. V 45874 rise % from levels V 45875 fall % to cars V 45877 builds cars for dealers V 45881 adding car at plant V 45889 's lot of flexibility N 45890 have impact on schedules V 45892 are forecasts for quarter N 45892 turned cars in fourth-quarter V 45893 closing plant in Wayne N 45895 lose distinction as car N 45896 was second to Escort N 45896 was second in year V 45897 top list in 1990 V 45898 leaving magazine by end V 45899 be magazine at core V 45900 launch magazine as a V 45901 be partner in magazine N 45901 be partner with editor V 45902 started Cook in 1979 V 45903 sold it to Group V 45907 calm fears of Armageddon N 45908 reflecting nervousness about behavior N 45910 dropped the for day N 45911 lost points for amount V 45912 fell three-quarters of point N 45912 sought haven from stocks N 45913 expected the from market V 45917 ease credit in weeks V 45923 be case with program V 45924 accommodate amounts for purchasers N 45925 holds share of market N 45926 showing loss of billion N 45928 consider expansion of FHA N 45929 including purchasers in program V 45930 erases ceiling of 101,250 N 45930 places cap at % V 45933 making loans without requirements V 45933 increases risk of default N 45935 increased it to % V 45936 doubled exposure in markets N 45937 awaiting report on losses N 45938 placing ceiling at 124,875 V 45939 provide consolation in face V 45940 is intrusion into market N 45943 afford payments on home N 45944 guarantee mortgages on homes N 45946 bearing burden of guarantees N 45948 gave appearance of industry N 45950 gave way to bailout V 45953 expanding guarantees without reform V 45960 are libraries in City V 45960 solve riddle of Sterbas N 45967 changing hands at yen V 45968 followed Average like dog V 45971 take brouhaha of days N 45973 began night in trading V 45983 stabilize currency at level V 45984 fell pfennig to 1.8560 V 45987 dropped % against mark V 45987 shoot % to point V 45988 defend currencies against mark V 45990 's the as 1987 N 45990 is lot of uncertainty N 45991 selling dollars in lots V 46001 losing profits through currency V 46005 trust market because volatility V 46006 lost lot of money N 46006 lost lot in 1970s V 46007 sees opportunities in markets N 46008 rose 4 to 367.30 V 46013 played role in slide V 46015 sent market into tailspin V 46016 discourage some of banks N 46019 irritated some in administration N 46021 had problems with jawboning V 46022 blame him for crash V 46023 put financing on terms V 46024 have kind of questions N 46025 sending signals about buy-outs N 46029 gives lots of room N 46029 provide picture to community N 46030 raises specter of decision-making N 46031 spelled policy for buy-outs N 46032 makes decisions on issues N 46032 finishes ruminations on issue N 46034 reach decision on buy-outs N 46034 have problems with buy-outs N 46037 exerting control over airlines V 46038 contributed % of equity N 46038 received % of stock N 46039 was violation of spirit N 46040 discussing interpretation of law N 46041 undermine position in talks V 46042 defining control by citizens N 46042 applying reasoning to buy-outs V 46043 plays rift in administration N 46044 have understanding of importance N 46046 open markets to carriers V 46046 blocking service by carriers N 46049 spends amount on maintenance V 46050 is correlation between load N 46052 satisfied concerns on deal N 46053 extend requirements to airlines V 46061 cut inventories of models N 46064 save some of plants N 46065 need plant for APV V 46067 was part of plans N 46069 is one of lines N 46070 introduced versions of cars N 46071 close plant for weeks V 46072 had supply of cars N 46072 had supply at end V 46077 reported increase in income N 46079 credited demand for plywood N 46082 posted gain in net N 46084 include gain on settlement N 46086 include gain of million N 46088 including gain on sale N 46091 expects all of 1989 N 46093 lowered prices at start V 46101 take stocks off hands V 46101 cutting prices in reaction V 46102 lowered bids in anticipation V 46103 oversees trading on Nasdaq N 46104 received quotes by 10 V 46109 expect rash of selling N 46109 lower prices in anticipation V 46113 was shades of 1987 N 46114 made fortune on market V 46116 rose 1 to 33 V 46117 gained 1 to 19 V 46118 added 1 to 45 V 46119 advanced 1 to 46 V 46120 jumped 1 to 75 V 46121 eased 1 to 17 V 46122 rose 0.56 to 449.89 V 46123 falling 6.90 to 456.08 V 46124 was news in contrast V 46125 acquire Skipper for 11.50 V 46127 settled dispute with unit N 46128 rose 1 to 11 V 46129 fell 3 to 104 V 46130 rose 1 to 41 V 46131 jumped % to 17 V 46133 bring press into line V 46134 indicate frustration with problems N 46135 advocate end to policy N 46136 show responsibility in reporting V 46139 regard TV as tools V 46141 discussed possibility of war N 46142 gave criticism of Afanasyev N 46144 lasted a under hours N 46145 was speaker from leader N 46148 contained criticism of Gorbachev N 46150 thanked leader for ability V 46152 quoted readers as saying V 46154 sparked bitterness at paper V 46155 see chief in future V 46156 took look at activities V 46157 attacked level of debate N 46158 adopting legislation with minimum V 46160 imposes restrictions on movement N 46160 set ceilings for prices N 46160 preventing sale of goods N 46161 is reporter of topics N 46162 waste talents with assignments V 46168 were participants in days N 46168 supply boosts to nation V 46170 sells products to force V 46171 has visions of harvests N 46174 been officer of Bank N 46176 named president of division N 46176 become president of Co. N 46177 suffered bloodbath since crash N 46179 total million for traders V 46181 received proposals from investors V 46183 obtain financing for agreement V 46183 buy UAL at 300 V 46187 buy AMR at 120 V 46189 owned equivalent of % N 46189 indicating losses of million N 46190 own equivalent of % N 46190 indicating million in losses N 46192 made all of declines N 46192 made all on Friday V 46193 been reports of firms N 46194 provide cushion against losses V 46196 was position for arbs N 46203 soliciting bids for all V 46203 owns % of Warner N 46205 were % with falling V 46210 buy amounts of stock N 46211 are demands by lenders N 46212 been result of judgments N 46213 remove chemical from market V 46214 kept public in dark V 46215 counteract lockhold of interests N 46216 inform public about risks V 46217 used skills of firm N 46217 educate public about results V 46219 present facts about pesticides N 46219 present facts to segment V 46220 do something about it V 46221 educate public about risk V 46223 abused trust of media N 46227 was risk to Americans N 46229 learn something from episode V 46232 was intent of NRDC N 46235 frightened people about chemicals V 46238 creating obstacle to sale N 46240 restrict RTC to borrowings V 46242 raising billion from debt V 46245 maintain assets of thrifts N 46246 leaving spending for bailout N 46246 leaving spending at billion V 46246 including interest over years V 46253 subtracting value of assets N 46256 pay price of consultation N 46256 want kind of flexibility N 46257 hold hearing on bill N 46257 hold hearing next Tuesday V 46263 filmed commercial at EDT V 46263 had it on air V 46264 placed ads in newspapers V 46266 running them during broadcast V 46268 fled market in panic V 46270 prepared ads in case V 46271 ordered pages in editions N 46272 touted 800-number beneath headline N 46273 received volume of calls N 46273 received volume over weekend V 46279 protect them against volatility V 46280 plug funds by name V 46282 rush it on air V 46286 is place for appreciation N 46287 appear times on CNN V 46289 keep money in market V 46295 make one of commercials N 46296 replacing commercial of campaign N 46305 reached agreement in principle N 46305 acquire stake in Advertising N 46307 resigned post in September V 46307 becomes executive of Arnold N 46308 retain title of president N 46309 handle account for area N 46312 includes ads from advertisers N 46313 distribute % of revenues N 46313 distribute % as grants V 46316 is sport of mean N 46317 dumped runs by bushel V 46320 hit pitch from Reuschel N 46320 hit pitch into stands V 46321 struck runs in games V 46323 salve pain of droughts N 46324 had hits in four V 46325 got seven of hits N 46325 scored four of runs N 46325 scored four in decision V 46326 held Giants to hits V 46327 was pitcher during campaign V 46328 permit Giants in innings V 46330 's one of gurus N 46334 's name for conveyance N 46334 observe them in calm V 46335 sat side by side N 46335 sat side in seats V 46336 bearing emblems of teams N 46340 represents triumph of civility N 46342 need police in seat V 46343 gave lot of heroes N 46344 lost months of season N 46344 lost months to surgery V 46345 was ditto in two N 46345 moved runner in inning V 46346 is reputation among Bashers V 46346 turn ball to him V 46348 exemplifies side of equation N 46349 smoked Toronto in playoffs V 46353 went 5-for-24 with ribbies V 46354 gives hope in games N 46360 reported drop in income N 46366 reflecting softening of markets N 46367 showed gains during quarter V 46368 estimate gains at % V 46371 had profit of million N 46372 lowered estimates for 1989 N 46374 had income of million N 46378 Link Pay to Performance V 46379 limit practice to analysts V 46380 extend standards to force V 46380 pay salary with bonus N 46381 stop lot of account-churning N 46385 reach office until a.m. V 46386 had calls from States V 46391 breathed sigh of relief N 46396 left signals for London V 46397 declined % in trading V 46400 outnumbered 80 to 20 N 46403 is sort of market N 46411 targeted shares of Reuters N 46412 showed price at pence V 46413 sensed buyer on day V 46416 abandoned search for shares N 46417 was a.m. in York V 46417 fielded call from customer N 46417 wanting opinion on market N 46417 having troubles before break V 46425 watched statistics on television V 46426 hit 2029.7 off points V 46433 dumped Receipts in PLC V 46437 posted loss on Street N 46443 has chance in million N 46444 has chance in million V 46447 approve buy-outs of airlines N 46448 spurred action on legislation N 46450 withdrew bid for Corp. N 46451 criticized bill as effort V 46451 thwart bid for AMR N 46452 express opposition to bill N 46453 brushed allegations as excuse V 46454 is room in position V 46455 was response to situation N 46456 cited examples as reasons V 46460 have authority to mergers N 46461 view bill as effort V 46461 add certainty to process V 46461 preserve fitness of industry N 46463 determining intent of acquisition N 46464 give control to interest V 46466 expressed support for bill N 46466 expressed support in order V 46468 divesting themselves of entities N 46470 called step toward resumption N 46471 made expression of expectations N 46472 provided increase over life V 46474 delay delivery of jetliners N 46476 receiving 100 from fund V 46482 launch offer for stock N 46483 file materials with Commission V 46484 holds stake in Dataproducts N 46484 made bid for company N 46484 made bid in May V 46487 seeking buyer for months V 46487 announced plan in September V 46487 took itself off block V 46489 sell million of holdings N 46489 sell million to Inc. V 46493 have reason for optimism N 46493 have reason after rebound V 46494 was hit of markets N 46499 been center of fever N 46499 been center in weeks V 46506 had memories of exchange N 46506 losing % of value N 46506 losing % in crash V 46510 delayed minutes of crush V 46512 took three-quarters of hour N 46512 get reading on market N 46513 spent night in offices V 46515 surprised a by storm V 46517 inhibit recovery for exchange N 46517 showing signs of weakness N 46518 took some of hits N 46521 cropped price by marks V 46521 leaving incentive for investors N 46522 recouped two-thirds of losses N 46522 recouped two-thirds in wake V 46523 plunged points at p.m V 46525 scooped equities across board V 46527 gave Bourse after fall V 46530 was buying in Paris V 46531 changed line in mid-conversation V 46536 posted loss for quarter N 46536 add billion to reserves V 46537 placed parent of Co. N 46537 placed parent among banks V 46537 covered portfolios to countries N 46537 covered portfolios with reserves V 46542 climbed 1.50 to 44.125 V 46543 sank % in quarter V 46544 finance loans to customers N 46545 received million of payments N 46545 been million in quarter N 46546 costing million of income N 46546 costing bank in period V 46547 climbed % to million V 46549 grew % to million V 46556 totaled million in quarter V 46558 offset growth of % N 46558 offset growth in operations V 46559 squeeze margin in Southeast N 46560 jumped 3.50 to 51 V 46562 contributed million to line V 46563 reflect % of earnings N 46564 raised billion in capital N 46564 raised billion during quarter V 46565 purchased both for million V 46568 post increase in income N 46568 post increase because growth V 46575 offset losses in market N 46576 reported increase in losses N 46579 fell % in quarter V 46580 grew % in period V 46582 take position on offer N 46583 seeks % of concern N 46584 begin process in 1994 V 46584 buy holders at price V 46585 challenges agreement between Corp. N 46588 has obligation to purchase N 46589 operate LIN in manner V 46589 diminish value in years V 46595 owns % of Telerate N 46604 accepted legitimacy of position N 46606 put estimate on losses V 46612 accept delays after 13 V 46619 retire obligations through exchanges V 46620 provided million in assistance N 46620 provided million to unit V 46620 maintain million in stock N 46620 maintain million in unit V 46621 buy % of stock N 46623 get shares of stock N 46623 get shares in exchange V 46623 receive shares of stock N 46624 paves way for surpluses N 46624 be center of economy N 46625 exchange all for package V 46626 swap 9 for share V 46627 buy share for 10.75 V 46629 offering amount for amount V 46630 redeem warrants at option V 46633 increase debt by million V 46640 fell % to million V 46641 grew % to million V 46642 jumped % to billion V 46643 grew % to million V 46644 reported loss of million N 46645 reached million from million V 46648 advanced % on market V 46649 is company for Co. N 46651 posted income for quarter N 46651 reflecting improvement in businesses N 46652 was contributor to results N 46653 including gain of million N 46656 signed agreement with builder N 46656 purchase building for million V 46659 use stocks as collateral V 46663 were all over weekend V 46665 handle meltdown in prices N 46669 falls points in day V 46670 enter market at levels V 46673 cause slide in prices N 46674 was the of worlds N 46676 stopped trading in securities N 46678 focused selling on Exchange V 46682 is limit for declines N 46685 execute orders in one V 46688 halted slide in prices N 46688 halted slide on Friday V 46691 synchronize breakers in markets V 46696 handle volume of shares N 46698 prevent crack in prices N 46701 is professor of economics N 46702 poses prospects for firms N 46703 open borders in 1992 V 46703 set effort off rails V 46704 face pressure from unions N 46704 face pressure in nations V 46704 play role in decisions V 46709 involving players for league N 46714 broke jaw with bat V 46715 dismissed suit against team N 46717 freeing nurses from duties V 46718 basing pay on education V 46720 basing advancement on education V 46723 signs nurses for travel V 46724 TREATING EMPLOYEES with respect V 46726 treat them with respect V 46729 get priority in bargaining V 46735 report rise in losses N 46742 gives inventors of microchip N 46743 accuses postmaster of tactics V 46747 had problems at all V 46749 changed hands during session V 46750 beefing computers after crash V 46751 quell falls in prices N 46753 brought rationality to market V 46756 fell % in quarter V 46758 is the in string N 46760 feeling pressure from Corp. N 46760 tested sale of pieces N 46763 be hit with diners N 46765 experienced problems in markets N 46769 post drop in income N 46772 selling approach to clients N 46774 is mention at end N 46777 features spots as Floodlights N 46779 offer tips to consumers V 46781 's risk of messages N 46781 created spots for Bank V 46783 Sees Pitfalls In Push N 46786 include products like Soap N 46787 realizing pitfalls of endorsements N 46788 puts Sunlight on list V 46790 questioned validity of list N 46804 replaced Willis in place V 46806 rattled conservatives with views V 46807 is director of Institute N 46809 release information about her N 46810 disclosed selection by Sullivan N 46811 is result of politics N 46812 pressure Hill for spending V 46816 been member of coalition N 46821 backed host of programs N 46824 boost spending above level V 46825 peg ceiling on guarantees N 46825 peg ceiling to % V 46825 limiting it to 101,250 V 46825 increase availability of mortgages N 46825 provide funding for Administration N 46825 increase incentives for construction N 46825 including billion in grants N 46830 lost billion in 1988 V 46831 pump billion into program V 46831 requested million for year V 46834 pushes price of housing N 46838 be conservatives in terms V 46839 override commitment to responsibility N 46843 insulate them from effects V 46847 give momentum to plans V 46848 make declaration on that N 46848 make declaration during meeting V 46851 has significance in itself V 46852 set date for conference N 46853 set date for conference N 46854 reminds me of joke N 46855 was combination of things N 46858 stop procession before end V 46860 get cash from banks V 46860 confirmed fear among arbitragers N 46863 spooked crowds along Street N 46866 opened Monday at 224 V 46867 opened Monday at 80 V 46869 lost % on Friday V 46871 line consortium of banks N 46872 setting stage for march V 46873 cast pall over market V 46874 ignoring efforts by Mattress N 46875 sell billion in bonds N 46875 sell billion before year-end V 46877 distract us from fundamentalism V 46878 are implications for makers N 46879 confirm direction of regulators N 46882 reflected reappraisal of excesses N 46883 be judges of quality N 46893 distinguish debt from debt V 46893 draw line at industry V 46896 rebounded morning with rising V 46896 close session at 35087.38 V 46897 slid points on Monday V 46898 soared points to 35133.83 V 46900 provide direction for markets V 46902 had losses than Tokyo N 46903 was market since plunge N 46904 set tone for markets V 46908 was speculation during day N 46911 sank 45.66 to 2600.88 V 46916 show gain of 200 N 46917 posted decline of year N 46918 fell 100.96 to 3655.40 V 46921 bear resemblance to events N 46926 outnumbered ones on market V 46927 called scenario for Japan N 46931 described plunge in U.S. N 46931 described plunge as event V 46933 posted gains on speculation V 46935 adjust allocation in equities N 46947 ended % above close N 46952 see % on downside N 46952 counting risk of news N 46953 closed drop since 1987 N 46962 dumped holdings on scale V 46963 cited memories of years N 46967 tipped world on side V 46970 reduce emissions by % V 46974 bars sale of crops N 46976 take control of policy N 46979 mandate reduction of dioxide N 46983 is ambition of General N 46985 collected plans from groups V 46985 cobbled them into initiative V 46986 's day of election N 46989 spend maximum for campaign N 46996 spend money on litigation V 46997 is issue among segments V 46998 are nation unto themselves N 46999 lost control of commerce N 46999 lost control to attorney V 47000 impose costs on citizens V 47001 define itself for futureeither V 47004 erased half of plunge N 47004 gaining 88.12 to 2657.38 V 47005 was advance for average N 47007 outnumbered 975 to 749 N 47007 suffered aftershocks of plunge N 47009 tumbled 102.06 to 1304.23 V 47011 fell 7 to 222 V 47013 concerned a about narrowness V 47016 gave credence to declaration V 47022 find orders from firms N 47023 hammering stocks into losses V 47024 sold baskets of stock N 47025 was hangover from Friday N 47028 losing 63.52 in minutes V 47032 pushed stocks to values V 47034 was lot of bargain-hunting N 47035 oversees billion in investments N 47036 put it in market V 47038 had one of imbalances N 47038 had one on Friday V 47038 was one of stocks N 47041 represented % of volume N 47046 was lot of selling N 47049 showed gain of 5.74 N 47052 get burst of energy N 47052 broke bottles of water N 47053 get prices for shares V 47054 was bedlam on the V 47067 maintain markets during plunge V 47069 were halts in issues V 47070 is one of stocks N 47074 jumped 1 to 38 V 47074 rose 1 to 1 V 47075 were sector of market N 47076 rising 1 to 43 V 47077 rose 1 to 43 V 47080 added 3 to 28 V 47080 rose 3 to 18 V 47080 rose 3 to 14 V 47081 climbed 4 to 124 V 47082 praised performance of personnel N 47085 make % of volume N 47087 get kind of reaction N 47088 had conversations with firms V 47089 were buyers of issues N 47089 were buyers amid flood V 47100 joined soulmates in battle V 47101 order cancellation of flight N 47106 cover percentage of traffic N 47106 represent expansion of ban N 47107 be concession for industry N 47111 had support from Lautenberg V 47111 used position as chairman N 47111 garner votes for initiative V 47114 retains support in leadership V 47115 owes debt to lawmakers V 47115 used position in conference N 47115 salvage exemption from ban V 47117 killed handful of projects N 47120 increase spending for equipment N 47121 includes million for airport N 47121 created alliances between lawmakers N 47122 gain leverage over city N 47124 delayed funds for project N 47125 review costs of phase N 47126 preserve million in subsidies N 47130 including million for improvements N 47132 reported earnings for quarter N 47133 free executives from agreement V 47134 acquire Columbia for billion V 47137 reflecting success of movies N 47138 including Huntsman of City N 47138 boosted stake in Corp. N 47138 boosted stake to % V 47139 acquire Aristech in transaction V 47142 send version of package N 47143 send delegation of staffers N 47143 send delegation to Poland V 47143 assist legislature in procedures V 47144 calls gift of democracy N 47145 view it as Horse V 47146 create atrocities as bill N 47146 be budget of States N 47147 explain work to Poles V 47147 do the for people V 47153 rose % to punts V 47157 reflected rebound in profit-taking N 47160 expected drop in prices N 47160 expected drop after drop V 47163 reduce size of portfolios N 47167 considered signal of changes N 47174 quoted yesterday at % V 47176 battered Friday in trading V 47176 post gains after session V 47179 making market in issues N 47180 make markets for issues V 47180 improved sentiment for bonds N 47182 rose point in trading V 47184 keep eye on trading V 47189 be bellwether for trading N 47191 includes report on trade N 47195 do damage to us V 47197 provide details of issue N 47198 is division of Corp. N 47224 ended 1 at 111 V 47224 rose 21 to 98 V 47228 quoted yesterday at 98 V 47231 yielding % to assumption V 47231 narrowed point to 1.42 V 47232 were dealings in Mac N 47232 gather collateral for deals N 47233 producing amounts of issues N 47234 was activity in market V 47236 drove bonds in dealings V 47240 dominated trading throughout session V 47243 was point at bid V 47247 weighing alternatives for unit N 47247 contacting buyers of operation N 47249 represented million of million N 47250 contact buyers for unit N 47251 raised stake in Ltd. N 47253 increase stake in ADT N 47253 increase stake beyond % V 47253 extend offer to rest V 47255 is 47%-controlled by Ltd. N 47256 posted surge in profit N 47256 posted surge for year V 47260 credited upsurge in sales N 47260 credited upsurge to sales V 47261 totaled yen in months V 47266 had profit before depreciation V 47268 is supplier of equipment N 47268 is supplier in U.S. V 47270 reported loss of million N 47272 reported income of 955,000 N 47274 fell cents to 4.25 V 47275 told investors in York N 47279 reflect improvements in margins N 47281 extended date of offer N 47282 sell facilities to party V 47282 reach agreement on sale N 47287 extended date of commitment N 47287 extended date to 15 V 47291 buy % of Ltd. N 47291 buy % with assumption V 47292 acquire % of Regatta N 47292 acquire % under conditions V 47293 manage operations under Gitano V 47294 have sales in excess V 47296 manufacturing clothes under trademark V 47298 had income of million N 47300 increased number of units N 47302 represent % of equity N 47305 extended offer of 32 N 47305 extended offer to 1 V 47307 holds total of % N 47307 holds total on basis V 47308 expire night at midnight V 47310 is unit of Corp. N 47310 is partner in Partners N 47317 feature photos of celebrities N 47318 report rush to orders N 47321 advancing look with collections V 47327 ignored market for years V 47330 snare portion of industry N 47334 outpacing growth in market N 47338 has quality to it V 47341 jumped year to rolls V 47342 features shots of stars N 47343 distinguish ads from spreads V 47345 won award as ad N 47353 show it to friends V 47358 costs a than film N 47362 increasing sponsorship of classes N 47363 sponsoring scores of contests N 47363 offering paper as prizes V 47364 distributing video to processors V 47367 has price of 250 N 47367 noticed requests from parents N 47371 made leaps in development N 47374 selected 15 of photos N 47374 selected 15 for issue V 47379 attributed performance to rate V 47380 had increase in profit N 47389 owns refinery in Switzerland N 47390 prompted fears about prospects N 47390 foreshadowed downs by times V 47391 reached record of 223.0 N 47391 reached record in August V 47393 marked gain for indicator N 47393 uses average as base V 47395 anticipate start of recession N 47395 anticipate start before end V 47397 is member of Group N 47400 foresee growth through rest V 47401 expect rise in 1990 N 47401 expect rise after adjustment V 47402 signal recoveries by periods V 47403 entered months before onset N 47403 turned months before recoveries N 47406 reached peak in 1929 V 47408 been performance of index N 47408 is part of index N 47412 is indicator of prospects N 47414 assigned mark of 80 N 47415 lost power because impact V 47417 diminished relevancy to outlook N 47420 building share of market N 47420 building share through growth V 47421 acquire interest in Birkel N 47424 is producer of pasta N 47424 is producer with sales V 47425 has workers at units V 47425 is producer of sauces N 47426 strengthens position in market N 47428 reduced rating on million N 47429 confirmed rating at C. V 47430 downgraded ratings on debt N 47431 reduced ratings for deposits N 47435 AVOIDED repeat of Monday N 47437 erased half of plunge N 47441 following plunge on Monday N 47443 withdrew offer for Air N 47443 citing change in conditions N 47444 slid 22.125 to 76.50 V 47445 get financing for bid V 47446 fell 56.875 to 222.875 V 47448 tumbled % in quarter V 47451 decrease production in quarter V 47460 slid % in quarter V 47463 solidify dominance of market N 47464 posted loss for quarter N 47464 reflecting addition to reserves N 47466 acquire Warehouse for million V 47466 expanding presence in business N 47473 are guide to levels N 47504 reached agreement with Corp. N 47504 develop standards for microprocessor V 47505 is entry in market N 47506 is leader for microprocessors N 47506 forms heart of computers N 47507 acquire stake in Alliant N 47508 license technologies to Intel V 47509 use microprocessor in products V 47511 expand position in markets N 47511 acquired division from Corp. V 47512 make contribution to earnings N 47513 earned million on revenue V 47515 had sales in year V 47516 built stake in company N 47517 owned a under % N 47517 owned a for years V 47518 notified Burmah of reason V 47519 merged operations with those V 47520 owns % of Calor N 47521 owns brand of oils N 47521 reported rise in income N 47522 sell Group to Inc. V 47523 expecting million to million N 47525 divest itself of operations N 47526 is sale of products N 47527 Citing provision for accounts N 47527 posted loss for quarter N 47528 sustained loss of million N 47530 reflect doubt about collectability N 47533 announced creation of group N 47533 bring interests in region N 47534 comprise all of operations N 47537 sell operations to PLC V 47538 standing trial in Namibia V 47545 were victims of suppression N 47546 declared representative of people N 47547 remove Korps from Angola V 47547 end control of Namibia N 47550 defended leaders in court V 47554 is the in series N 47556 washing hands over results V 47557 redress record in Namibia V 47558 investigates complaints from sides V 47559 reflected stability of market N 47562 continued lockstep with dollar N 47562 giving some of gains N 47563 have effect on economy V 47568 cut consumption of pork N 47569 gave some of gains N 47571 rose 4 to 367.30 V 47579 giving 10 of that N 47579 giving 10 at close V 47587 be harbinger of things N 47587 called halt to string N 47589 following days of gains N 47590 dampened spirits in pits N 47592 increased ceiling for quarter N 47593 sends shivers through markets V 47594 took note of yesterday N 47596 declined cents to 1.2745 V 47598 provided help for copper N 47604 declined tons to tons V 47611 was factor in market N 47612 is part of area N 47613 absorbing effect of hurricane N 47614 kept prices under pressure V 47620 buy tons of sugar N 47620 buy tons in market V 47623 was drop in market N 47625 hurt demand for pork N 47626 dropped limit of cents N 47629 take advantage of dip N 47630 report earnings per share N 47630 report earnings for quarter V 47630 report earnings per share N 47636 extended offer for Inc. N 47637 has value of million N 47638 is partnership of unit N 47640 owns % of shares N 47643 posted increase of earnings N 47644 earned million in quarter V 47645 credited number of loans N 47646 depressed originations to billion V 47647 enjoyed increase throughout 1989 V 47647 topped billion at end V 47649 entered atmosphere during repair V 47650 involves use of bag N 47653 curtail use of substance N 47654 see process as step V 47655 discovered northeast of Field N 47656 run test on wells V 47656 is miles from Field N 47657 are barrels of oil N 47658 estimated reserves of barrels N 47658 estimated reserves of barrels N 47659 owns interest in field N 47662 reduce income for months N 47669 acquire ISI for U.S V 47674 make offer for shares N 47675 sell stake in ISI N 47675 sell stake to Memotec V 47677 accept inquiries from others N 47679 resumed purchase of stock N 47679 resumed purchase under program V 47682 buy shares from time V 47686 purchase division of Corp N 47692 complements efforts by group N 47698 follows strike against company N 47702 replaced anxiety on Street V 47703 accept plunge as correction V 47706 gained strength at p.m. V 47706 slapped Shopkorn on back V 47708 opened morning on Board V 47713 handled volume without strain V 47717 plunged drop in history N 47720 fell % in trading V 47722 learned lessons since crash V 47723 are cause for selling N 47725 owns supplier of equipment N 47727 played part in comeback V 47729 kicked Monday with spree V 47729 began day by amounts V 47732 buy some of chips N 47736 eyed opening in Tokyo N 47737 plunged points in minutes V 47742 proved comfort to markets N 47743 delayed hour because crush V 47747 was sea of red N 47749 sending message to Street V 47757 running pell-mell to safety V 47759 started recovery in stocks N 47759 started recovery on Tuesday V 47762 posted loss on Street N 47769 triggering gains in Aluminium N 47770 had one of imbalances N 47770 had one on Friday V 47770 was one of stocks N 47772 prompting cheers on floors V 47773 get prices for shares V 47774 was bedlam on the V 47776 spurred buying from boxes N 47776 trigger purchases during periods V 47786 anticipating drop in Dow N 47787 withdrawing offer for Corp. N 47790 took events in stride V 47795 puts some of LBOs N 47795 puts some on skids V 47798 acquire % for 11.50 V 47799 begin offer for Skipper N 47799 begin offer on Friday V 47801 rose cents to 11 V 47803 turned proposal from Pizza N 47804 settled dispute with Hut N 47806 had income of 361,000 N 47809 considered protest in history N 47809 press demands for freedoms N 47811 demanded dismissal of leader N 47812 was right of people N 47814 raised possiblity of unrest N 47816 cover percentage of flights N 47816 represent expansion of ban N 47817 fined 250,000 for conviction V 47819 resumed countdown for launch N 47819 dismissed lawsuit by groups N 47821 extend ban on financing N 47824 endorsed ban on trade N 47824 endorsed ban in attempt V 47824 rescue elephant from extinction V 47826 held talks with Gadhafi V 47827 was trip to Egypt N 47828 announced reduction in formalities N 47830 allow visits between families N 47830 allow visits on peninsula V 47831 be the since 1945 N 47833 resumed activity in Africa V 47833 raising fears of backlash N 47834 bringing chaos to nation V 47837 approved limits on increases N 47837 approved limits without provisions V 47838 considered test of resolve N 47840 controls seats in legislature N 47841 opened round of talks N 47841 opened round in effort V 47842 present proposal during negotiations V 47843 selling arms to guerrillas V 47847 rose % in September V 47849 sell divisions of Co. N 47849 sell divisions for 600 V 47850 completing acquisition of Inc. N 47850 completing acquisition in April V 47850 considering sale of Cluett N 47851 make shirts under name V 47854 bring total of million N 47858 acquired it for million V 47859 had profit of million N 47860 sells clothes under labels V 47861 had sales of million N 47861 had sales in 1988 V 47862 fell cents to 53.875 V 47863 change name to PLC V 47863 write chunk of billion N 47864 posted drop in earnings N 47865 solidify dominance of market N 47868 erase perception of Arrow N 47869 is thing of past N 47870 make lot of sense N 47870 make lot to me V 47871 ousted Berry as executive V 47871 forced Fromstein as chief V 47872 solidified control in April V 47874 pull takeover of Manpower N 47874 produce earnings for companies V 47876 creating drag on earnings N 47877 is excess of cost N 47880 shows handful of pounds N 47880 following write-off of will N 47880 reflects billion of worth N 47881 eradicate some of will N 47881 eradicate some in swoop V 47882 represent chunk with claiming V 47882 overstated extent of will N 47883 bolster prospects during times V 47884 fell % in months V 47884 sliding % in July V 47885 blamed drop in quarter N 47885 blamed drop on growth V 47887 transforming Inc. from underachiever V 47887 guide turnaround at acquisition N 47892 including 815,000 from gain N 47893 were million in 1988 V 47896 was price by 1992 V 47897 achieve price in 1988 V 47899 set target of 50 N 47899 set target by end V 47901 joined Applied as officer V 47903 providing return on capital N 47911 named officer of Applied N 47911 named officer in 1986 V 47912 set growth as objective V 47913 took company in offering V 47915 reached million in year V 47917 hear state of challenge N 47918 order divestiture of merger N 47919 challenge merger on grounds V 47920 order break of mergers N 47920 have authority in lawsuits V 47921 resolve views of courts N 47921 operate chains as businesses V 47924 approved settlement between staff N 47926 cost consumers in prices V 47930 lack authority in lawsuits N 47934 preserve record of condition N 47934 Agreed Gell vs. Corp N 47938 urging leeway for states N 47942 supporting right to abortion N 47942 filed brief in cases V 47944 recognizing right to abortion N 47945 tending furnaces of Co. N 47950 restricts him to child V 47957 truck fish from coast V 47957 import sets from Japan V 47958 be mayor in U.S. V 47969 rises morning at a.m. V 47971 pops downstairs to shop V 47972 is equivalent of 80 N 47972 buys porridge for family V 47983 turned blood-red from peppers V 47985 buys bowl of rice N 47987 relate views from Party N 47988 read speeches from leaders N 47989 have opinion about events N 47990 do part in effort N 47991 chart cycles of employees N 47992 alternating doses of propaganda N 47992 alternating doses with threats V 47998 heads efforts at factory N apache-opennlp-1.9.4-src/opennlp-tools/src/test/resources/data/ppa/bitstrings0100664 0001750 0001750 00010304217 14135770370 027671 0ustar00jeffjeff0000000 0000000 *** 00000000000000000000000000000000 BOUNDARY_WORD 01001111111000000000000111011110 , 00000000000000000000000000000010 the 00000000000000000000000000100100 . 00000000000000000000000000100010 of 00000000000000000000000000011010 to 00000000000000000000000101010010 a 00000000000000000000000000110100 * 00000000000000000000000000000000 and 00000000000000000000000010000010 in 00000000000000000000000001001010 's 00000000000000000000000110000010 that 00000000000000000000000101000010 for 00000000000000000000000100001010 T 00100000000000000000000000000000 $ 00000000000000000000000000001100 '' 00000000000000000000000000000000 is 00000000000000000000001000010010 The 00100000000000000000000000100100 0 00000000000000000000000000000000 `` 00000000000000000000000000000000 said 00000000000111111111110011000010 on 00000000000000000000010000001010 % 00000000000000000000111100001000 it 00000000000000000000000011110010 by 00000000000000000000000010001010 at 00000000000000000000000100101010 from 00000000000000000000001000101010 as 00000000000000000000000001101010 million 00000000000000000000000001010000 with 00000000000000000000001000001010 Mr. 00101111111011000011111000111000 was 00000000000000000000100000010010 be 00000000000100101111100010110010 are 00000000000000000000000100010010 its 00000000000000000000000001000100 n't 00000000000000000000000101110010 has 00000000000000000000010000010010 an 00000000000000000000000001010100 have 00000000000000000000001100010010 will 00000000000000000000001110010010 he 00000000000000000000001111110010 or 00000000000000000000001010000010 company 00000000000111101111111000000101 which 00000000000111111111111001110010 would 00000000000000000000000110010010 year 00000000000111111111111101100010 about 00000000000000000000000010101010 market 00000000000000000000000001011001 -- 00000000000010110100000101001000 were 00000000000000000000010100010010 says 00000000000111111111111111000010 they 00000000000000000000010111110010 this 00000000000000000000000010010100 more 00000000000000000000000111000000 had 00000000000000000000000000010010 In 00100000000000000000000001001010 But 00100000000111111111111001000010 billion 00000000000000000001000001010000 their 00000000000000000000000110000100 up 00000000000000000000001100110010 but 00000000000111111111111001000010 than 00000000000000000000001110000010 his 00000000000000000000000000000100 U.S. 01000000000000000000000000000000 been 00000000000000101011100001110010 who 00000000000000000000101001110010 also 00000000000000000010001001110010 share 00000000000111111111111000011111 new 00000000000111101111100011110000 other 00000000000000000000010011000000 one 00000000000000000000000000010100 : 00000000000000000000100000101010 stock 00000000000111111111101101010000 not 00000000000000000001000001110010 some 00000000000000000000001011000000 1 00000000000000000000000000000000 New 00100000000111101111100011110000 I 00100000000000000000100111110010 Corp. 00100000000000000000000000000000 ; 00000000000000000001000000101010 -RRB- 01000000000000000000000000000000 shares 00000000000000000000000001001011 It 00100000000000000000000011110010 years 00000000000000000000000000111011 trading 00000000000000000000000001011101 -LRB- 01000000000000000000000000000000 could 00000000000000000000100110010010 Inc. 00100000000000000000000000000000 two 00000000000111101011101001010000 all 00000000000000000000111011000000 & 00001111111000000000000011001000 last 00000000000000000000000001100010 because 00000000000000000000001001000010 out 00000000000000000000011100110010 when 00000000000000000000101001000010 do 00000000000111111111011100010010 York 00100000000000000000011110000010 after 00000000000000000000000000101010 president 00001111110110110111111000001101 can 00000000000000000000110110010010 sales 00000000000111101110111000000111 only 00000000000000000011000001110010 A 00100000000000000000000000110100 Co. 00100000000000000000000000000000 into 00000000000000000100000000001010 *pseudo-attach* 00000000000000000000000000000000 such 00000000000000000000100011000000 He 00100000000000000000001111110010 first 00000000000000000000000111010000 over 00000000000000000101000000001010 business 00000000000100100000100010100001 quarter 00000000000111111100110010010111 if 00000000000000101010101001000010 government 00000000000011100010101000100101 any 00000000000000000000010100010100 most 00000000000111101011101011000000 prices 00000000000000000000000110000111 companies 00000000000110100100100011110011 may 00000000000000000000000010010010 cents 00000000000000000000000010001011 down 00000000000000000001001100110010 ' 00000000000000000000000000110010 we 00000000000000000000000111110010 time 00000000000111111111110100010111 many 00000000000001001001001011000000 say 00000000000111111101100110110010 no 00000000000000000000001100010100 there 00000000000111101111111101000010 much 00000000000111101011110001110010 price 00000000000000000000000111000111 months 00000000000000000000000001111011 now 00000000000000001000001001110010 yesterday 00000000000111101110101001100010 them 00000000000000000001010001110010 people 00000000000000000000000100110011 week 00000000000111111111110101100010 investors 00000000000111100110001000110011 rose 00000000000000000000000100110010 group 00000000000110100100101101110101 bonds 00000000000111101101100010000111 so 00000000000000000010000001110010 stocks 00000000000111101110111011100011 earnings 00000000000011001010100000000111 interest 00000000000000000000000110100111 3 00000000000000000000000000000000 did 00000000000111101110111100010010 American 00100000000000000000010110101000 major 00000000000000000000001000010000 even 00000000000000000101000001110010 what 00000000000000000001101101000010 We 00100000000000000000000111110010 you 00000000000000000001000111110010 next 00000000000000000000010001100010 make 00000000000111111011101110110010 expected 00000000000111111111011000110010 through 00000000000000010001000000001010 executive 00001111111000000000000101110000 three 00000000000111101011111001010000 chief 00001111111111111111111001110000 industry 00000000000111101110100100100101 Friday 00100000000111101111101001100010 just 00000000000000001100001001110010 net 00000000000000000000100101010000 10 00000000000000000000000000000000 under 00000000000000000000100000001010 earlier 00000000000000000000001001100010 before 00000000000000000100000000101010 off 00000000000000000000101100110010 And 00100000000000000000000010000010 made 00000000000011011100010000110010 officials 00000000000000000000000100010101 rate 00000000000000001110101011000111 money 00000000000111101110010100100111 unit 00000000000111101111111001110101 federal 00000000000111111111101100110000 program 00000000000111101111100011100111 those 00000000000000000010000011000000 while 00000000000000000001101001000010 month 00000000000111111111100101100010 30 00000000000000000000000000000000 like 00000000000000000010000000001010 still 00000000000000010000001001110010 sell 00000000000111111110001110110010 firm 00000000000110101111111011110101 does 00000000000011101100111100010010 between 00000000000000000011000000001010 buy 00000000000111111100001110110010 against 00000000000000000000000000001010 days 00000000000000000000000000011011 investment 00000000000001000000100010110000 Exchange 00100000000000000000000100111101 profit 00000000000111101111110000000111 financial 00000000000000000000100000110000 since 00000000000000000010000000101010 plan 00000000000111111111111011100111 ago 00000000000111101101001001100010 That 00100000000000000000000101000010 get 00000000000111111010101110110010 rates 00000000000111111111101101000011 chairman 00000000000111111111111000101101 For 00100000000000000000000100001010 own 00000000000000000011110010101000 markets 00000000000000000000000011100011 recent 00000000000000000000101100010000 fell 00000000000000000010000100110010 They 00100000000000000000010111110010 big 00000000000000000000101000010000 back 00000000000000000000111100110010 Japanese 00100000000000000001100100110000 state 00000000000111101111111010100101 income 00000000000111111111010101000111 analysts 00000000000000000000000010010011 issue 00000000000111101111101000110111 should 00000000000000000001010110010010 well 00000000000111101110110001110010 offer 00000000000111111111110111100111 funds 00000000000110100000000110011001 higher 00000000000000000000011111000000 bank 00000000000100101110000001100101 these 00000000000000000000000011000000 including 00000000000011101111011010000010 securities 00000000000111111011110010110000 part 00000000000111111111111101101111 debt 00000000000000000000000010110001 products 00000000000000000000000011001001 being 00000000000000000011001001110010 tax 00000000000000000000000001110001 Japan 00100000000111111111111101101000 House 00100000000000000000100110100101 take 00000000000111111100101110110010 15 00000000000000000000000000000000 ? 00000000000000011000000000001010 1988 00000000000000000000000000000000 she 00000000000000000000011111110010 8 00000000000000000000000000000000 lower 00000000000000000001011111000000 This 00100000000000000000000010010100 increase 00000000000111111111110100110111 reported 00000000000111110010000111000010 If 00100000000000101010101001000010 during 00000000000000001101000000001010 banks 00000000000110101110000001110011 her 00000000000000000000001100000100 past 00000000000000000001010001100010 sale 00000000000111111111111001001111 work 00000000000111111111100010110111 very 00000000000000000100000001110010 operations 00000000000111101111100000001001 both 00000000000000001011011011000000 sold 00000000000001000000010000110010 less 00000000000000000000100111000000 Bank 00100000000100101110000001100101 another 00000000000000000000000100010100 vice 00001111110001001000000001110000 way 00000000000111111111111100010111 closed 00000000000000000000110100110010 bid 00000000000111111111111111100111 plans 00000000000111111110101000110010 As 00100000000000000000000001101010 cash 00000000000011101111110110110001 third 00000000000000000011101011010000 several 00000000000001000011000011000000 pay 00000000000111111101001110110010 index 00000000000000000000011110000111 trade 00000000000001000000000000010001 where 00000000000000000100101001000010 loss 00000000000111101111111101000111 1987 00000000000000000000000000000000 Bush 00101111111100101001000110001000 growth 00000000000111100000001010100111 5 00000000000000000000000000000000 end 00000000000111111111110100001111 2 00000000000000000000000000000000 each 00000000000000000000100100010100 National 00100000000001000000011100110000 -NL- 01000000000000000000000000000000 early 00000000000000000011010100110010 day 00000000000111111111111000010111 dollar 00000000000111111111111101000101 issues 00000000000110100000001011100011 20 00000000000000000000000000000000 At 00100000000000000000000100101010 common 00000000000000000000110101010000 economic 00000000000000000011000000110000 few 00000000000111111111110001010000 yield 00000000000111111110110110110010 good 00000000000000000000001010010000 futures 00000000000111111110011110110000 might 00000000000000000000010110010010 high 00000000000000000001011100010000 traders 00000000000000000000000001010011 used 00000000000011010000110000110010 average 00000000000100000011000101010000 report 00000000000111101111110000110111 're 00000000000000000011111110000010 50 00000000000000000000000000000000 bill 00000000000111101110110011100111 then 00000000000000101101000001110010 Stock 00100000000111111111101101010000 close 00000000000111111010110110110010 five 00000000000111111110111001010000 how 00000000000000000000001101000010 spokesman 00000000000000000000001010010101 Congress 00100000000111101111001101101000 costs 00000000000111101111101000000011 our 00000000000000000000000010000100 Treasury 00100000000011001011000110110000 added 00000000000111101100010111000010 use 00000000000111110111110110110010 concern 00000000000100000000100111110101 due 00000000000000000000010100110010 too 00000000000000000110000001110010 officer 00001111111111111111111110011101 1989 00000000000000000000000000000000 him 00000000000000000101010001110010 contract 00000000000111000001000000011001 among 00000000000000000001100000001010 Oct. 00100000000000000000000000000000 number 00000000000111111111111010111111 current 00000000000000000001000011010000 already 00000000000000011000001001110010 law 00000000000001000000000010011001 least 00000000000111101110111110000010 yen 00000000000000000000010000001011 agreement 00000000000111101111111000100111 director 00000000000111111111111000110101 revenue 00000000000111101110101000000111 Federal 00100000000111111111101100110000 far 00000000000111111101110001110010 based 00000000000111111110100000110010 think 00000000000111111111100110110010 British 00100000000000000000100100110000 computer 00000000000000000001011010110000 There 00100000000111101111111101000010 foreign 00000000000000000010010000110000 same 00000000000000000000100011010000 7 00000000000000000000000000000000 agreed 00000000000111111111101000110010 points 00000000000000000000000001011011 loans 00000000000111101111101111100011 ended 00000000000000000010010100110010 late 00000000000000000001010100110010 going 00000000000111101110011000110010 case 00000000000111111111100001100111 Some 00100000000000000000001011000000 public 00000000000000000000110000110000 according 00000000000111111111111000110010 assets 00000000000111111111110111100011 September 00100000000111001111111001100010 Street 00100000000000000000100010101000 stake 00000000000111111111111110100111 San 00101111111011111100001101110000 value 00000000000111111111110010001111 period 00000000000111101111101001000111 selling 00000000000111000001110001000000 board 00000000000011000001000101010101 real 00000000000010101111111000110000 Dow 00101111111111111111010110110000 100 00000000000000000000000000000000 Wall 00100000000111111111011110101000 small 00000000000000001001010000010000 operating 00000000000000000000000101010000 Board 00100000000011000001000101010101 called 00000000000011010101010000110010 International 00100000000000000001010010110000 until 00000000000000000110000000101010 problems 00000000000111101110111000100011 analyst 00000000000111101111111100110101 point 00000000000111101110010011011011 court 00000000000000000000000111010101 One 00100000000000000000000000010100 world 00000000000111010100111011000101 move 00000000000111111111111000110111 system 00000000000111101111000011100111 exchange 00000000000000000000000100111101 economy 00000000000111111111111001000101 1990 00000000000000000000000000000000 cut 00000000000111010010010110110010 put 00000000000111111010010110110010 results 00000000000111101111100000100011 see 00000000000111111110100110110010 little 00000000000000000000110000010000 want 00000000000111111111000110110010 management 00000000000000000000000111100001 UAL 01000000000000000000000000000000 oil 00000000000000000001001110110000 around 00000000000000100001000000001010 former 00000000000000000000101001110000 help 00000000000000000001110110110010 compared 00000000000111111111100000110010 capital 00000000000000000000000000110001 today 00000000000000001100010001110010 California 00100000000111111101110001101000 maker 00000000000111101111110001110101 however 00000000000111111111110011101000 firms 00000000000110000100010011110011 agency 00000000000000001000010000100101 Securities 00100000000111111011110010110000 office 00000000000111101101101010000001 whether 00000000000000000001001101000010 long 00000000000000000000110001110010 Group 00100000000110100100101101110101 offering 00000000000111101111110001110111 John 00101111111000000000000110011000 six 00000000000111111111111001010000 West 00100000000111110000101110101000 production 00000000000000000000000100000111 Jones 00101111111000000000100101001000 third-quarter 00000000000000000000000000000000 news 00000000000111110111000011000001 cost 00000000000111111111111111110111 second 00000000000000000000001011010000 go 00000000000111101011010110110010 Monday 00100000000111110111101001100010 First 00100000000000000000000111010000 buying 00000000000111101101110001000000 set 00000000000111101010010110110010 strong 00000000000000000001100000010000 bond 00000000000000000000111110110000 likely 00000000000111111101011000110010 annual 00000000000000000001000101010000 increased 00000000000000000000011001000000 continue 00000000000111111111010110110010 country 00000000000111111111101111000101 11 00000000000000000000000000000000 losses 00000000000111101111100000000011 recently 00000000000000001001001001110010 declined 00000000000000000101101000110010 President 00101111110110110111111000001101 four 00000000000111101111011001010000 insurance 00000000000000000000010010110000 without 00000000000000111000000000001010 total 00000000000000000001111100010000 half 00000000000111111111111011101111 general 00000000000111100001001000101000 25 00000000000000000000000000000000 further 00000000000000000000101111000000 large 00000000000000000001010000010000 August 00100000000111101110111001100010 drop 00000000000111111111001100110111 Chicago 00100000000111111110100001101000 When 00100000000000000000101001000010 takeover 00000000000000000010001100010000 expects 00000000000111111100101000110010 decline 00000000000111111111011100110111 senior 00000000000110100111101001110000 result 00000000000111111111111011111111 notes 00000000000111111111111010000111 held 00000000000000001000010000110010 political 00000000000000000000000000110000 # 00000000000000000000000000000000 policy 00000000000110001000000011111001 wo 00000000000000101011111100010010 right 00000000000111100100111000110010 though 00000000000111111011101001000010 corporate 00000000000000000000010000110000 must 00000000000000000010010110010010 Department 00100000000000000000001110010101 weeks 00000000000000000000000101111011 announced 00000000000000000001000111000010 become 00000000000111101100010110110010 Soviet 00100000000000001000110100110000 largest 00000000000000000000110011010000 administration 00000000000111110111111100100101 Nov. 00100000000000000000000000000000 Big 00100000000000000000101000010000 Senate 00100000000000000010101110100101 plant 00000000000111101111111010001001 London 00100000000111101111011001101000 Inc 00100000000000000000000000000000 Ms. 00101111111011000011111010111000 come 00000000000111110011010110110010 making 00000000000111111111111101000000 gain 00000000000111111111101101000111 here 00000000000000010100010001110010 support 00000000000111111111010010110111 home 00000000000000000000010110100001 junk 00000000000000010000000110110000 fund 00000000000110000100001110011001 volume 00000000000111101100001110000111 official 00000000000000000000000000010101 12 00000000000000000000000000000000 Robert 00101111111000001000000110011000 certain 00000000000000000001000011000000 level 00000000000111101100111001000111 services 00000000000011101110011101001001 change 00000000000111111110111000110111 9 00000000000000000000000000000000 On 00100000000000000000010000001010 problem 00000000000111111111001101100111 executives 00000000000000000000100010110011 began 00000000000000000010001000110010 give 00000000000111110011101110110010 top 00000000000000000001011000010000 demand 00000000000111101110100100111001 Francisco 00101111111100000011100000011101 service 00000000000000000000000101111001 fiscal 00000000000000000000110001100010 latest 00000000000000000010000011010000 credit 00000000000000000000001100110001 comment 00000000000111111100110110110010 deal 00000000000111111110101010110111 old 00000000000111111111001001100010 control 00000000000000100010110000101111 Texas 00100000000111101111010001101000 paid 00000000000011000000010000110010 took 00000000000000001011000000010010 -RCB- 01000000000000000000000000000000 Washington 00100000000111111111111001101000 orders 00000000000000000000000100011001 businesses 00000000000111100110010001100011 purchase 00000000000111101111110101110111 40 00000000000000000000000000000000 research 00000000000000000000000101100001 priced 00000000000111110111110100110010 better 00000000000000000001001111000000 13 00000000000000000000000000000000 show 00000000000111101011110110110010 power 00000000000000000000001001111001 -LCB- 01000000000000000000000000000000 product 00000000000000001010011000100001 example 00000000000111111111111111101000 addition 00000000000111111111111011010111 proposed 00000000000000000001001001000000 spending 00000000000000000000000000111001 dropped 00000000000000000011000100110010 nine 00000000000111111101111001010000 employees 00000000000000000010000000110011 nation 00000000000111111111111111000101 possible 00000000000000000000111000010000 line 00000000000111101110000000100111 future 00000000000001001101111000010000 meeting 00000000000111111111110001000111 nearly 00000000000000000111000001110010 workers 00000000000000000000000000110011 record 00000000000111101111111100010000 need 00000000000111111010000110110010 South 00100000000010000010000110101000 later 00000000000000000010001001100010 October 00100000000111101101111001100010 my 00000000000000000000000100000100 4 00000000000000000000000000000000 rise 00000000000111111111111100110111 members 00000000000000000100001010110011 know 00000000000111111011100110110010 amount 00000000000111111111111010001111 proposal 00000000000111111111011011100111 General 00100000000111100001001000101000 Warner 00100000000101100101110000001000 came 00000000000000000100001000110010 named 00000000000011001010010000110010 programs 00000000000111101100010100100011 Fed 00100000000111101111110000100101 buy-out 00000000000000000000000000000000 almost 00000000000000001111000001110010 trying 00000000000111111110011000110010 national 00000000000001000000011100110000 estate 00000000000100010000001100011101 While 00100000000000000001101001000010 return 00000000000111111111100101010111 include 00000000000000000001101110110010 expect 00000000000111111101000110110010 changes 00000000000111101111111000100011 gains 00000000000111111110100000000011 investor 00000000000001000010000000110101 Union 00100000000111100011001100100101 others 00000000000000000110110010110011 composite 00000000000111111111111101110000 estimated 00000000000111100011100111000010 keep 00000000000111111101111110110010 Ford 00100000000111101101011000101000 life 00000000000111101111101110100001 us 00000000000000010001010001110010 received 00000000000011001001010000110010 filed 00000000000001000110010000110010 lot 00000000000111111111111001111111 America 00100000000111101111000101101000 offered 00000000000110100000010000110010 James 00101111111000000000000100011000 enough 00000000000000000110010001110010 transaction 00000000000111111111110011001111 often 00000000000000100000001001110010 told 00000000000111001101010000110010 position 00000000000111111101101110100111 order 00000000000111111111011101010111 yet 00000000000111110110010001110010 Europe 00100000000111111111011101101000 charge 00000000000111101110101101000111 customers 00000000000111101010110000110011 currently 00000000000000111000001001110010 Ltd. 00100000000000000000000000000000 decision 00000000000111111111101011100111 Tokyo 00100000000000000101011001101000 June 00100000000000000000011001100010 never 00000000000000000100001001110010 ca 00000000000111111111111100010010 again 00000000000000000100010001110010 fall 00000000000111111111011000110111 times 00000000000000000000000010011011 July 00100000000000001000011001100010 acquisition 00000000000111101111110001001111 United 00100000000111111101110110101000 whose 00000000000000000000011010000010 European 00100000000000000001000100110000 Capital 00100000000000000000000000110001 holding 00000000000000010000000011100101 outstanding 00000000000111111111111000011101 able 00000000000011010000011000110010 dollars 00000000000000000000101000001011 within 00000000000000011101000000001010 Association 00100000000110101011110001010101 Tuesday 00100000000111100111101001100010 500 00000000000000000000000000000000 Co 00101111111111111110110001001000 previous 00000000000000000000000011010000 area 00000000000111101110011001100111 provide 00000000000111110111101110110010 paper 00000000000110100100111010110000 damage 00000000000111101111001100100111 East 00100000000010000000001110101000 financing 00000000000000000000001000111001 loan 00000000000000000000001011100101 run 00000000000111101110010110110010 lost 00000000000000000100010000110010 building 00000000000111010010110001000000 commercial 00000000000001000011010000110000 managers 00000000000000000001100010110011 away 00000000000000000001111100110010 important 00000000000000000000001110010000 manager 00000000000000010010101000110101 things 00000000000111101111100110100011 got 00000000000011111011000000010010 China 00100000000111110111111101101000 division 00000000000111101110011001110101 information 00000000000110001011100010111001 Sept. 00100000000000000000000000000000 6 00000000000000000000000000000000 earthquake 00000000000000101111111001100111 local 00000000000000100100010000110000 OF 01000000000000000000000000011010 every 00000000000000000001000100010100 best 00000000000000000001010011010000 low 00000000000011000011011100010000 makes 00000000000100000001000000010010 suit 00000000000111101000100001100111 additional 00000000000000000000100100010000 've 00000000000100000101111110000010 private 00000000000000000100010000110000 contracts 00000000000000000001000100011001 found 00000000000111000001110111000010 believe 00000000000111101111100110110010 So 00100000000000000010000001110010 continued 00000000000000001000111000110010 head 00000000000111111111110011110111 31 00000000000000000000000000000000 makers 00000000000111100111100111110011 action 00000000000111101110110001100111 inflation 00000000000111101001011100000111 After 00100000000000000000000000101010 following 00000000000000000110100000001010 place 00000000000111101111110101010111 rights 00000000000100000010000100100111 led 00000000000001011011010000110010 Corp 00100000000000000000000000000000 terms 00000000000111111111101100101111 below 00000000000000001001000000001010 once 00000000000000001000011011000000 your 00000000000000000000010100000100 What 00100000000000000001101101000010 Chairman 00100000000111111111111000101101 White 00100000000111111111011010101000 marketing 00000000000000000000100001100001 To 00100000000000000000000101010010 drug 00000000000000001010111010110000 Many 00100000000001001001001011000000 subsidiary 00000000000111101101111001110101 auto 00000000000000000000001110110000 charges 00000000000111101101110000100011 fact 00000000000111111111110011010111 raise 00000000000110111111001110110010 calls 00000000000000000000000110110010 Commission 00100000000100001100101001010101 D. 00101111111111111111101001011000 Canadian 00100000000000000000000100110000 equipment 00000000000101100000001001001001 Last 00100000000000000000000001100010 Los 00101111111011010111101101110000 special 00000000000000000010010000010000 units 00000000000000000000010000001001 above 00000000000000011001000000001010 open 00000000000111101101110110110010 budget 00000000000000000000000001010001 crash 00000000000111111111010001100111 left 00000000000011000101010000110010 face 00000000000000000000000011110111 car 00000000000000000000001000100001 international 00000000000000000001010010110000 statement 00000000000111101010001011100111 union 00000000000111100011001100100101 soon 00000000000010110000010001110010 computers 00000000000111100111111001100011 Boston 00100000000111111111100001101000 itself 00000000000000000111010001110010 city 00000000000111101111101010100101 account 00000000000111101010111110111001 You 00100000000000000001000111110010 However 00100000000111111111110011101000 potential 00000000000000000010111000010000 equity 00000000000000000000011010100001 taken 00000000000111110010110000110010 biggest 00000000000000000001110011010000 advertising 00000000000000000001101010100001 getting 00000000000111101000000101000000 shareholders 00000000000111101110111010110011 Western 00100000000000000100110110101000 full 00000000000000000100011100010000 domestic 00000000000000000001010000110000 Canada 00100000000111110111011101101000 options 00000000000110101110001111100011 development 00000000000011000000101001100001 look 00000000000111110101010110110010 bills 00000000000100100100110010000111 via 00000000000000000110011010000010 bought 00000000000000100100010000110010 gas 00000000000001000010011010110000 asked 00000000000111111101010000110010 talks 00000000000111101111010000100111 rather 00000000000011101111110111000000 1986 00000000000000000000000000000000 David 00101111111000000000010010011000 Sony 00100000000111001011111100101000 reached 00000000000011010000010000110010 family 00000000000111100011111100000001 claims 00000000000111101110110000100011 hit 00000000000111001010010110110010 levels 00000000000111100000111001000111 risk 00000000000111111111010101100111 ad 00000000000000100000101010100001 Now 00100000000000001000001001110010 With 00100000000000000000001000001010 probably 00000000000011000000001001110010 consumer 00000000000011010001010000110000 legal 00000000000100000000000000110000 Germany 00100000000000001111000010101000 force 00000000000000101010010001010111 steel 00000000000000000100011010110000 approved 00000000000001011001010000110010 technology 00000000000001010100111010110000 60 00000000000000000000000000000000 remain 00000000000001000000010110110010 restructuring 00000000000111000010101111001111 University 00100000000111100000010000110101 personal 00000000000000001000010000110000 included 00000000000000100001010000110010 effect 00000000000111101111111110001111 City 00100000000111101111101010100101 find 00000000000111101010101110110010 similar 00000000000000000000010000010000 reduce 00000000000111111110111110110010 By 00100000000000000000000010001010 18 00000000000000000000000000000000 went 00000000000011001100001000110010 countries 00000000000000000000001101110011 hard 00000000000000000000111110010000 Jaguar 00100000000111110010101100101000 March 00100000000000000010011001100010 available 00000000000011000110110000110010 Mrs. 00101111111011000000101110111000 posted 00000000000000010001010000110010 effort 00000000000111111111011100100111 TV 01000000000000000000000000000000 defense 00000000000111101010110110110000 Under 00100000000000000000100000001010 banking 00000000000000000001000010110000 data 00000000000100001100001010111001 16 00000000000000000000000000000000 Although 00100000000111111101101001000010 Sales 00100000000111101110111000000111 known 00000000000111000010110000110010 performance 00000000000111101101011010100111 figures 00000000000110101100100000100011 These 00100000000000000000000011000000 Air 00100000000000000000101010101000 An 00100000000000000000000001010100 systems 00000000000001000000000001001001 Committee 00100000000000000000100001010101 long-term 00000000000000000000000000000000 finance 00000000000111111110010110110000 saying 00000000000111111111111010000010 different 00000000000000001000010000010000 cases 00000000000111100110100010100011 14 00000000000000000000000000000000 Financial 00100000000000000000100000110000 increases 00000000000111101111101010000011 especially 00000000000111111011000001110010 profits 00000000000111101111110000000011 department 00000000000000000000001110010101 given 00000000000111111100010000110010 portfolio 00000000000111101111000010000001 reports 00000000000100101011010000100011 estimates 00000000000111100011010000100011 growing 00000000000000000001010001000000 efforts 00000000000111111101011100100111 William 00101111111000000000100110011000 magazine 00000000000000000000111101000001 payments 00000000000111101111101100000011 health 00000000000000001001100000110000 network 00000000000111101111111100001001 IBM 01000000000000000000000000000000 legislation 00000000000111101110010011100111 dividend 00000000000111100000100011000111 despite 00000000000111110110100000001010 approval 00000000000111101111000100100111 Wednesday 00100000000111001011101001100010 year-earlier 00000000000000000000000000000000 noted 00000000000111111011110111000010 groups 00000000000000000000000100100011 Hong 00100000000111111111101101110000 particularly 00000000000110111011000001110010 17 00000000000000000000000000000000 coming 00000000000111101111100001000000 construction 00000000000000000000001001100001 previously 00000000000000001101001001110010 Britain 00100000000111111101111101101000 cars 00000000000000000000001001100011 slightly 00000000000111101000010001110010 Revenue 00100000000111101110101000000111 clear 00000000000111101110010001110010 parent 00000000000111111100010000110101 committee 00000000000000000000100001010101 lead 00000000000111111101110110110010 remains 00000000000000000000001000110010 helped 00000000000000000011010000110010 Angeles 00101111111100101000000100011101 either 00000000000000000010011011000000 holders 00000000000111101110011010110011 acquire 00000000000111110100001110110010 Even 00100000000000000101000001110010 German 00100000000000000000000010101000 begin 00000000000111111001110110110010 clients 00000000000111101110110000110011 joint 00000000000111101010111000110000 airline 00000000000000000001100000100101 Pacific 00100000000100101001001010101000 S&P 01000000000000000000000000000000 producers 00000000000111101110010000110011 individual 00000000000000001001101000110000 acquired 00000000000011100100010000110010 interests 00000000000111111111001110100111 something 00000000000000000010010001110010 taking 00000000000111111010100101000000 really 00000000000000010100001001110010 pressure 00000000000111101110100100100111 working 00000000000111001001000001000000 Court 00100000000000000000000111010101 food 00000000000000001111111010110000 using 00000000000011000001111101000000 raised 00000000000011000111111001000000 Columbia 00100000000111111111111000101000 gained 00000000000000000001000100110010 Airlines 00100000000000000000001010101000 looking 00000000000111101110110000110010 percentage 00000000000000000001100001010000 leaders 00000000000000000000000110110101 Most 00100000000111101011101011000000 Merrill 00100000000111111011100000101000 Michael 00101111111000000000000000011000 along 00000000000000000011100000110010 venture 00000000000000010101000000100111 brokerage 00000000000000001000000010110000 process 00000000000111110111101101100111 Sen. 00100000000000000000000000000000 buyers 00000000000111101101100000110011 Kong 00100000000000000000010100011101 industrial 00000000000011101110001110110000 states 00000000000000000000000101110011 toward 00000000000000000001000000001010 Lynch 00100000000000000100001001001000 although 00000000000111111101101001000010 retail 00000000000000000101010000110000 regulators 00000000000000000000010010110011 ever 00000000000000100100001001110010 Rep. 00100000000000000000000000000000 Richard 00101111111000000010100110011000 short 00000000000000000000000001101111 failed 00000000000011001111101000110010 completed 00000000000011110000010000110010 job 00000000000111101111110000000001 strategy 00000000000111111111101001100111 me 00000000000000001001010001110010 marks 00000000000000000000000000001011 question 00000000000111110111110101100111 television 00000000000000000000001010110000 huge 00000000000000000010100000010000 currency 00000000000111101111011010100001 themselves 00000000000000000011010001110010 gold 00000000000111110100101110110000 'm 00000000000111110100111110000010 200 00000000000000000000000000000000 deficit 00000000000110101111100000100111 thing 00000000000111111101101100010111 plunge 00000000000111111010101100110111 judge 00000000001000000000001100001000 reason 00000000000111111111101100010111 owns 00000000000000000101000000010010 leading 00000000000000010000011000010000 basis 00000000000111000011001001000111 19 00000000000000000000000000000000 plants 00000000000111101110100010001001 lawyers 00000000000000000111000010110011 having 00000000000111000010111000110010 turn 00000000000111111110010110110010 wants 00000000000111100100101000110010 fourth 00000000000000000011011011010000 view 00000000000111111111110101100111 seeking 00000000000011001110111000110010 manufacturing 00000000000000000000011010110000 course 00000000000111111111111110100001 role 00000000000111111111101110100111 GM 01000000000000000000000000000000 started 00000000000000001010001000110010 team 00000000000111100111110100000001 rules 00000000000000100000111100100011 World 00100000000111010100111011000101 disclosed 00000000000111111111000111000010 Among 00100000000000000001100000001010 bad 00000000000000000000101010010000 adds 00000000000111111110010111000010 scheduled 00000000000111111110111000110010 concerns 00000000000111101110100100100011 military 00000000000000000011110000110000 start 00000000000111101001110110110010 institutions 00000000000111101111011001110011 Morgan 00101111111111111000100000101000 seems 00000000000000000001101000110010 Analysts 00100000000000000000000010010011 generally 00000000000010100000001001110010 goods 00000000000101101110110011001001 name 00000000000111111110111010110111 directors 00000000000000000100101010110011 thought 00000000000111111110110111000010 vote 00000000000111110111111000110111 Meanwhile 00100000000111111111011011101000 quickly 00000000000001100000010001110010 free 00000000000000000010101001000000 issued 00000000000010100000010000110010 Calif. 00100000000000000000000000000000 related 00000000000000000000111000110010 great 00000000000000000000011000010000 Industries 00100000000111101100100000101001 competition 00000000000111101101111010100111 auction 00000000000111101001100001000111 black 00000000000000001001001000110000 sharply 00000000000011101000010001110010 build 00000000000110011111101110110010 project 00000000000111101011100011100111 Drexel 00101111111111101110000000101000 reduced 00000000000010010000111001000000 accounts 00000000000111100000001110111001 stores 00000000000110100000100010101001 campaign 00000000000011000111000001100111 estimate 00000000000111111001011010110111 State 00100000000111101111111010100101 meet 00000000000111110111011110110010 seen 00000000000111010010110000110010 North 00100000000111100011100110101000 turned 00000000000111001001001000110010 doing 00000000000111011101000101000000 activity 00000000000111101100110001100111 significant 00000000000000000000000000010000 done 00000000000011010010110000110010 April 00100000000000000001011001100010 considered 00000000000101111100010000110010 outside 00000000000010110000000000001010 seven 00000000000111111001111001010000 leader 00000000000011000100000110110101 heavy 00000000000000000010011100010000 always 00000000000000110100001001110010 property 00000000000111101001100000100001 includes 00000000000000000001000000010010 Shearson 00101111111111111111000000101000 ahead 00000000000000000111111100110010 J. 00101111111111000001001111011000 reserves 00000000000111101111100111100011 hold 00000000000111111110101110110010 Series 00100000000111101111110000111111 study 00000000000111101111100000110111 largely 00000000000111001011000001110010 mortgage 00000000000000000100000110110000 attorney 00000000000000001110110000110101 hours 00000000000000000000000100011011 call 00000000000111111100000110110010 investments 00000000000111101111100001101001 Eastern 00100000000000000011110110101000 involved 00000000000001001110010000110010 She 00100000000000000000011111110010 measure 00000000000111111101110011100111 thrift 00000000000000000011000000100101 impact 00000000000111111111101110001111 'll 00000000000000000001111110000010 series 00000000000111101111110000111111 Business 00100000000100100000100010100001 PLC 01000000000000000000000000000000 range 00000000000111111111011001000111 caused 00000000000000000111010000110010 French 00100000000000001010100100110000 Average 00100000000100000011000101010000 subject 00000000000111111100111000110010 key 00000000000000001000011000010000 needed 00000000000000001000110000110010 hurt 00000000000111011001110000110010 allow 00000000000111010011101110110010 Paul 00101111111000000000000010011000 supply 00000000000000010000111110110111 instead 00000000000111101111101000101111 planned 00000000000000001001001001000000 Institute 00100000000010001001010001010101 longer 00000000000000111110010001110010 All 00100000000000000000111011000000 means 00000000000110010011000000010010 try 00000000000110111111010110110010 areas 00000000000111101111110010100011 telephone 00000000000000001001001010110000 traded 00000000000001011000010000110010 kind 00000000000111111111101010111111 partner 00000000000111111111101000110101 near 00000000000000110000000000001010 France 00100000000111110101111101101000 - 00000000000000000000000011100010 settlement 00000000000111101110110011001111 dealers 00000000000000000000000101010011 stock-index 00000000000000000000000000000000 Reserve 00100000000000000000011011100101 fees 00000000000111101011100100000011 May 00100000000000000000000010010010 A. 00101111111011000001100111011000 Investors 00100000000111100110001000110011 Industrial 00100000000011101110001110110000 conference 00000000000000001000110001000111 continuing 00000000000000000000010001000000 December 00100000000111101011111001100010 situation 00000000000111111111101101100111 children 00000000000111101110111100110011 jumped 00000000000000001001000100110010 shows 00000000000010010011000000010010 man 00000000000111101110110010110101 Thursday 00100000000111101011101001100010 Other 00100000000000000000010011000000 beginning 00000000000111101100111000110010 22 00000000000000000000000000000000 eight 00000000000111111110011001010000 earned 00000000000000001000100100110010 Service 00100000000000000000000101111001 His 00100000000000000000000000000100 simply 00000000000001000000001001110010 Still 00100000000000010000001001110010 projects 00000000000111101111110100100011 became 00000000000000010000001000110010 floor 00000000000111101101011001000111 lines 00000000000111100110000000100111 staff 00000000000011100011100010000001 Smith 00101111111100101100011000001000 24 00000000000000000000000000000000 anything 00000000000000010010010001110010 produce 00000000000111111111101110110010 taxes 00000000000000000000110100000011 leveraged 00000000000111101010111100010000 Peter 00101111111000000000010110011000 Trust 00100000000000000001010001001000 Judge 00100000001000000000001100001000 smaller 00000000000000010000001111000000 ` 00000000000000000000000000000000 active 00000000000000000110011100010000 filing 00000000000011100011110011110101 daily 00000000000000001101000101010000 summer 00000000000111111111110000010111 Index 00100000000000000000011110000111 merger 00000000000111101010100011001111 arbitrage 00000000000000000000111010100001 independent 00000000000000000011101000110000 showed 00000000000000010011000000010010 owned 00000000000111001111010000110010 created 00000000000111101100010000110010 house 00000000000000000000100110100101 Journal 00100000000111101111011101000001 According 00100000000111111111111000110010 session 00000000000111111110010001100111 required 00000000000010001000110000110010 hand 00000000000111111111110110100011 benefits 00000000000111101110101100000011 why 00000000000000000000101101000010 parts 00000000000110101111110111001001 Guber 00101111111101110000000100001000 history 00000000000111111111001001100111 test 00000000000111101010111110110111 George 00101111111000000000010100011000 receive 00000000000111101011001110110010 opened 00000000000000000011001000110010 sent 00000000000000000001001000110010 changed 00000000000111111111111001000000 brokers 00000000000000000000001101010011 Bay 00100000000000000001010010100101 Since 00100000000000000010000000101010 delivery 00000000000000000000101110000111 trader 00000000000000000001101110110101 hopes 00000000000111111010101000110010 post 00000000000000000010011101110111 tons 00000000000000000000001100001011 men 00000000000000000000111100110011 boost 00000000000111110010010110110010 Dec. 00100000000000000000000000000000 150 00000000000000000000000000000000 night 00000000000111101011110000010111 75 00000000000000000000000000000000 base 00000000000111100001110011000111 announcement 00000000000111111011110001100111 form 00000000000111111111111101110111 abortion 00000000000000101001010000100001 consider 00000000000111100110100110110010 closely 00000000000111111111001001110010 morning 00000000000000000001110000010111 Americans 00100000000000000000010100110011 preferred 00000000000000000010110101010000 Noriega 00100000000111101110111010001000 aid 00000000000111100100001100100111 Peters 00101111111000000000100010001000 Communications 00100000000010000010010010110000 francs 00000000000000000000100000001011 capacity 00000000000111111100011010100111 conditions 00000000000111101110111010100011 volatility 00000000000111101011111010100111 Both 00100000000000001011011011000000 21 00000000000000000000000000000000 35 00000000000000000000000000000000 side 00000000000111100111001001100111 80 00000000000000000000000000000000 difficult 00000000000111101011111110010000 software 00000000000000000000111010110000 seem 00000000000000001011000110110010 Also 00100000000000000010001001110010 Moody 00100000000111111111111110101000 transactions 00000000000111100110010000100111 Systems 00100000000001000000000001001001 produced 00000000001111001100010000110010 letter 00000000000111111110001011100111 party 00000000000100101101101100100101 agencies 00000000000100000000100100100011 rest 00000000000111111111111100001111 usually 00000000001000100000001001110010 center 00000000000111111111010001010101 limited 00000000000001000000001001000000 decided 00000000000111010011101000110010 increasing 00000000000000000101010001000000 per 00000000000000000000010101010000 closing 00000000000111101111111001110111 seek 00000000000111011011001110110010 'd 00000000000000001001111110000010 limit 00000000000111111111110110110010 member 00000000000111111110111100111111 nothing 00000000000010000010010001110010 forced 00000000000011001000110000110010 spokeswoman 00000000000000000000000010010101 strike 00000000000111101111101010110111 News 00100000000111110111000011000001 attempt 00000000000111110111011100100111 note 00000000000111101111011010110111 short-term 00000000000000000000000000000000 recession 00000000000111111111101010100111 comes 00000000000001000100001000110010 pound 00000000000111111111011000010111 feel 00000000000111001111100110110010 wanted 00000000000111110011101000110010 behind 00000000000010100001000000001010 majority 00000000000111101111111100111111 press 00000000000111000100001011000001 women 00000000000111101100111100110011 trust 00000000000000000001010001001000 Justice 00100000000111101111110110110000 No 00100000000000000000001100010100 hope 00000000000111111110000110110010 school 00000000000010001110100001000001 labor 00000000000000000000110110110000 bring 00000000000111110110101110110010 unchanged 00000000000111101111110100110010 R. 00101111111111101111101101011000 worth 00000000000101000001110000011101 article 00000000000111101111001000100111 exports 00000000000111101110100100000111 45 00000000000000000000000000000000 CBS 01000000000000000000000000000000 cuts 00000000000111111111111010000011 23 00000000000000000000000000000000 brought 00000000000010011100010000110010 28 00000000000000000000000000000000 Its 00100000000000000000000001000100 Dr. 00100000000000000000000000000000 operation 00000000000111101111010000001001 rally 00000000000111101110101100110111 effective 00000000000011000100010100110010 size 00000000000111111111101000001111 evidence 00000000000111101111101110101111 followed 00000000000001000111010000110010 rising 00000000000000000010010001000000 separate 00000000000000100000010000010000 gave 00000000000110001011000000010010 pilots 00000000000000010000100110110011 congressional 00000000000000000100111000110000 believes 00000000000110100011000000010010 1985 00000000000000000000000000000000 Express 00100000000011000010001010101000 overseas 00000000000000000001011010100001 initial 00000000000000000010000100010000 designed 00000000000111111100110000110010 matter 00000000000111111111101000010111 allowed 00000000000001001000110000110010 Secretary 00100000000000100100110110010101 quoted 00000000000111111111110100110010 main 00000000000000000100010011010000 capital-gains 00000000000000000000000000000000 returns 00000000000111100100001100000011 1992 00000000000000000000000000000000 directly 00000000000010010000010001110010 sign 00000000000111111111011010110111 game 00000000000111101011101101100111 Time 00100000000111111111110100010111 opposition 00000000000111101011001100100111 Motor 00100000000000000010100001001000 Management 00100000000000000000000111100001 light 00000000000111101011110001101111 relatively 00000000000100001100000001110010 highly 00000000000000110000000001110010 response 00000000000111111111111101010111 machines 00000000000011001111011010101001 term 00000000000111101101101001000111 sense 00000000000111101101010101100111 paying 00000000000111000110100101000000 continues 00000000000000011001101000110010 trades 00000000000000000000010000100111 70 00000000000000000000000000000000 yields 00000000000111101101000011000111 require 00000000000111010001101110110010 90 00000000000000000000000000000000 expenses 00000000000111111110001000000011 won 00000000001111101001010000110010 economist 00001111111000000000000100110101 spent 00000000000010000100010000110010 U.S 01000000000110110111100100110000 built 00000000000111001100010000110010 whole 00000000000000000001100011010000 institutional 00000000000000010001101000110000 signed 00000000000111101001010000110010 idea 00000000000111111111100000001111 1,000 00000000000000000000000000000000 minutes 00000000000000000000001100011011 newspaper 00000000000000000000001101000001 together 00000000000000000011111100110010 running 00000000000111111110100001000000 creditors 00000000000111111111010000110011 final 00000000000000010000000011010000 People 00100000000000000000000100110011 Democrats 00100000000111101111110110110011 imports 00000000000111101100000100000111 Insurance 00100000000000000000010010110000 interview 00000000000111111111101000100111 instance 00000000000111111111110111101000 Brothers 00101111111000000001100001001000 media 00000000000000000011001010110000 de 00001111111000000010010101001000 convertible 00000000000000000001100110110000 ruling 00000000000111101110101011100111 Jr. 00100000000000000000000000000000 moves 00000000000111100011001000100011 activities 00000000000111101111101100100011 January 00100000000111100111111001100010 sector 00000000000111111011101100001001 care 00000000000010000110010110111001 sure 00000000000000001110010001110010 actual 00000000000000000100000100010000 Chemical 00100000000000010000011010110000 let 00000000000111101010100110110010 ways 00000000000111111111111110100011 minimum 00000000000111111100011100010000 Fund 00100000000110000100001110011001 Moreover 00100000000111111111101011101000 fully 00000000000000000111001001110010 actually 00000001000000000000001001110010 Yesterday 00100000000111101110101001100010 1991 00000000000000000000000000000000 shareholder 00000000000000000000111100010000 consumers 00000000000111100010111000110011 single 00000000000000010010010000010000 declines 00000000000111101111011010000011 greater 00000000000000000010001111000000 Korea 00100000000101111101010101101000 questions 00000000000101101100100010101111 contributed 00000000000011001101101000110010 protection 00000000000110101011000100100111 Lehman 00101111111000000000111001001000 introduced 00000000000111011001010000110010 natural 00000000000110101101101010110000 SEC 01000000000000000000000000000000 across 00000000000110100001000000001010 block 00000000000110111111110110110010 veto 00000000000111011001111010110111 flat 00000000000010000001110110010000 Democratic 00100000000000000000011000110000 space 00000000000000000010111010110000 appear 00000000000110011111010110110010 energy 00000000000000010110010010110000 ability 00000000000111111111111100100111 various 00000000000000001001000011000000 stop 00000000000110101001110110110010 serious 00000000000000000100000000010000 play 00000000000101111110010110110010 Because 00100000000000000000001001000010 Services 00100000000011101110011101001001 provision 00000000000111101111110011100111 quality 00000000000111101110000011100001 partly 00000000000100001011000001110010 offers 00000000000000010111000000010010 battle 00000000000111111111110000100111 apparently 00000000000010000000001001110010 needs 00000000000111101110101000110010 slow 00000000000100000101110110110010 perhaps 00000000000111111101000001110010 positions 00000000000111111001000001100011 standard 00001111111111101110111010101000 leave 00000000000101111110101110110010 300 00000000000000000000000000000000 giant 00000000000100000000100100100001 moved 00000000000111001111001000110010 security 00000000000000000011100000110000 Supreme 00100000000111111111110111100101 over-the-counter 00000000000000000000000000000000 quarterly 00000000000000010101000101010000 offices 00000000000111000101000001100011 26 00000000000000000000000000000000 sharp 00000000000000000000100000010000 Saatchi 00101111111111101101110000001000 improved 00000000000000000010011001000000 U.K. 01000000000000000000000000000000 resigned 00000000000101111110001000110010 trial 00000000000111100110000001100111 real-estate 00000000000000000000000000000000 age 00000000000000000000100001000111 widely 00000000000000100111001001110010 producer 00000000000111101111000001110101 negotiations 00000000000111111111010000100111 rule 00000000000111101110001000110111 savings 00000000000000000000111011100101 survey 00000000000111101110100000110111 decade 00000000000111111111101101100010 figure 00000000000111101111001000110111 himself 00000000000000100011010001110010 Despite 00100000000111110110100000001010 wage 00000000000000000000000101110001 machine 00000000000001001000101000100001 provisions 00000000000111101110111100100011 advanced 00000000000000000011101010110000 spend 00000000001110111111001110110010 central 00000000000001000001111100110000 spring 00000000000111111101110000010111 cause 00000000000111110011110110110010 Research 00100000000000000000000101100001 avoid 00000000000101101111111110110010 hands 00000000000110001010001101100011 Then 00100000000000101101000001110010 Savings 00100000000000000000111011100101 Salomon 00101111111111111111011000101000 29 00000000000000000000000000000000 exchanges 00000000000000000000100011100011 opening 00000000000111101111100001110111 Markets 00100000000000000000000011100011 Nasdaq 00100000000000000000000000100101 discount 00000000000111110010010011000111 offset 00000000000110110010010110110010 Kidder 00100000000111111111110000101000 customer 00000000000000000001111000100001 Lawson 00101111111100010100010010001000 focus 00000000000111110110110110110010 deals 00000000000111110110010000100111 forces 00000000000111100000010110001001 Computer 00100000000000000001011010110000 chain 00000000000111100010000001110101 Charles 00101111111000000001100110011000 lawyer 00000000000111101111111110110101 economists 00000000000000000000000000010011 Goldman 00100000000100101101110000101000 Bond 00100000000000000000111110110000 else 00000000000111100101000101001000 step 00000000000111111110011000110111 regional 00000000000000001100010000110000 date 00000000000111111011001000110111 Security 00100000000000000011100000110000 indicated 00000000000011000001100111000010 talk 00000000000111111111000101010111 takes 00000000000010001011000000010010 Hutton 00101111111111111111000001001000 pretax 00000000000000000010000101010000 hour 00000000000111101110101000100111 holds 00000000000001000101000000010010 margins 00000000000000010000001000000011 payment 00000000000111001100100011000111 November 00100000000111101111111001100010 improve 00000000000111011110111110110010 air 00000000000000000000101010101000 create 00000000000110111111101110110010 Two 00100000000111101011101001010000 2.5 00000000000000000000000000000000 cancer 00000000000000000110110010100111 Hugo 00100000000011001011111100001000 substantial 00000000000010000000000000010000 Administration 00100000000111110111111100100101 safety 00000000000000000000000011100001 alone 00000000000010000100010001110010 specific 00000000000000000001000000010000 Commerce 00100000000111111111110110110000 commission 00000000000100001100101001010101 Manhattan 00100000000000010011100001101000 Investment 00100000000001000000100010110000 adding 00000000000111111110111010000010 Electric 00100000000000001110010001001000 package 00000000000111101011110011100111 young 00000000000000000001001000110000 bankers 00000000000110101110001111110011 tough 00000000000000001001011010010000 Lincoln 00100000000000101100110100101000 willing 00000000000111111100011000110010 district 00000000000111101010110111100101 appears 00000000000000010001101000110010 Stanley 00101111111000000110001001001000 list 00000000000111110111100101100111 amounts 00000000000111101110101010001111 totaled 00000000000000000000100100110010 provides 00000000000010000001000000010010 Gorbachev 00101111111100111111010010001000 target 00000000000111101011100101100111 1.5 00000000000000000000000000000000 familiar 00000000000111111001100000110010 speculation 00000000000111101101111010101111 water 00000000000000000000110000100001 jobs 00000000000000000000100001100011 review 00000000000111111111111110110111 Trade 00100000000001000000000000010001 fear 00000000000111101110000110110010 chance 00000000000111111110111100010111 Motors 00100000000000011110010001001000 add 00000000000111110011001110110010 holdings 00000000000111101111110001101001 rejected 00000000000111111001010000110010 quake 00000000000111111100101101100111 managing 00000000000000000000001001110000 fight 00000000000111111101110010110111 provided 00000000000010010111010000110010 policies 00000000000111111100111100100011 IRS 01000000000000000000000000000000 stay 00000000000110011101010110110010 premium 00000000000111101001100011000111 reach 00000000000111111011001110110010 war 00000000000011101011000111111001 Market 00100000000000000000000001011001 Another 00100000000000000000000100010100 civil 00000000000000010001000000110000 brand 00000000000000000000011000100001 weak 00000000000000000011100000010000 worked 00000000000111111110001000110010 overall 00000000000000000000000100010000 Digital 00100000000010001010100100101000 white 00000000000111111111011010101000 headquarters 00000000000111101111101010000001 option 00000000000111011111101100100111 debentures 00000000000111111111001010000111 split 00000000000000000000010101110111 larger 00000000000000000000001111000000 Australia 00100000000111111011011101101000 developed 00000000010111101100010000110010 so-called 00000000000000000000000000000000 Health 00100000000000001001100000110000 10,000 00000000000000000000000000000000 passed 00000000100111111001010000110010 expectations 00000000000111101111010000100011 Steel 00100000000000000100011010110000 phone 00000000000000000001001010110000 Telerate 00100000000110111100100100101000 strength 00000000000111111111111010100111 climbed 00000000000000010101000100110010 standards 00000000000100100110111100100011 PaineWebber 01000000000111111011101000101000 Valley 00100000000000000000000010100101 field 00000000000111101111101000000001 regulatory 00000000000000000101000000110000 housing 00000000000000100110010010110000 OTC 01000000000000000000000000000000 win 00000000000011111110101110110010 heavily 00000000000010000111001001110010 facilities 00000000000111101101110100100011 weekend 00000000000111101111010000010111 goes 00000000000000100100001000110010 remaining 00000000000001000000010011010000 valued 00000000000011000001110100110010 interested 00000000000011111110010000110010 planning 00000000000111101100110001000000 considering 00000000000010000000010101000000 Not 00100000000000000001000001110010 existing 00000000000000000011000011010000 moving 00000000000111101001100001000000 success 00000000000111110111011010100111 direct 00000000000000000000011100010000 woman 00000000000111100111110010110101 act 00000000000111111101001000110111 C$ 00100000000000000000000000000000 More 00100000000000000000000111000000 Dallas 00100000000111110101111001101000 benefit 00000000000111100011110110110010 Republican 00100000000000000010011000110000 Thomas 00101111111000100000000010011000 Ohio 00100000000111111110101001101000 develop 00000000001111111111101110110010 Of 00100000000000000000000000011010 events 00000000000111111111101010100011 entire 00000000000000001000010011010000 approach 00000000000111110111111010110111 environmental 00000000000001000101000000110000 debate 00000000000111101000111010100111 book 00000000000111001100101000100001 electronic 00000000000000000000101010110000 afternoon 00000000000000000000000000010111 death 00000000000111101111011010100111 Those 00100000000000000010000011000000 region 00000000000111111011111001000101 met 00000000000111110110010000110010 dividends 00000000000100101101100100000011 1984 00000000000000000000000000000000 E. 00101111111011000000001011011000 Reagan 00101111110000001000000110001000 27 00000000000000000000000000000000 particular 00000000000000000111100001101111 expansion 00000000000111101010111001100111 purchases 00000000000111100000000010100111 beyond 00000000000000101001000000001010 room 00000000000110101010110100100111 forecast 00000000000111110101011010110111 medical 00000000000000000001100000110000 Poland 00100000000111011000111101101000 prevent 00000000000011110111111110110010 400 00000000000000000000000000000000 mostly 00000000000111101011000001110010 opportunity 00000000000111111111101100100111 raising 00000000000011010010011101000000 ads 00000000000111101111000101100011 bids 00000000000111100100001100011001 grew 00000000000000001000001000110010 kept 00000000000001011100010000110010 consultant 00000000000111101000011110110101 saw 00000000000101111011000000010010 works 00000000000111101111000000010010 competitors 00000000000111101111110000110011 Baker 00101111111100100001001010001000 funding 00000000000000000000100000111001 giving 00000000000111111010101101000000 prepared 00000000000010111100110000110010 cited 00000000000000110001010000110010 elected 00000000000111011010010000110010 complete 00000000000111110101110110110010 aircraft 00000000000000000110001010110000 practice 00000000000111111101110101100111 requirements 00000000000111111011111100100011 reflecting 00000000000111111011011010000010 owners 00000000000010001111100000110011 concerned 00000000000111110111110000110010 Indeed 00100000000111111111001011101000 30-year 00000000000000000000000000000000 carrier 00000000000111101111100001000101 measures 00000000000111101111001000100011 modest 00000000000000001010100000010000 version 00000000000111101111101000111111 land 00000000000101100101100000100001 feet 00000000000000000000101100001011 RJR 01000000000000000000000000000000 cover 00000000000111101111110110110010 rating 00000000000011111111000011000111 secretary 00000000000000100100110110010101 Qintex 00100000000000000111110110101000 Data 00100000000100001100001010111001 Yet 00100000000111110110010001110010 Panama 00100000000111111000111101101000 Associates 00100000000111101111101011101001 transportation 00000000000010001001110110110000 chemical 00000000000000010000011010110000 Times 00100000000000000000000010011011 mutual 00000000000001001001111110110000 trouble 00000000000000100110110100100111 bankruptcy 00000000000000000000010111100101 parties 00000000000110100100011001110011 factors 00000000000111101101111010100011 unless 00000000000000000110101001000010 Such 00100000000000000000100011000000 pence 00000000000000000001000000001011 falling 00000000000010000110010001000000 individuals 00000000000110101110111000110011 spread 00000000000111101011001010110111 restrictions 00000000000111001110100100100111 investigation 00000000000111111101110001100111 sought 00000000000010111000110000110010 Bell 00100000000001001011001010110000 necessary 00000000000111000101111110010000 Alan 00101111111000000010100010011000 stand 00000000000111111101010110110010 Johnson 00101111111100101101011000001000 maintain 00000000000111110111111110110010 drugs 00000000000110100111111001100011 poor 00000000011111111110111110101000 read 00000000000101111010010110110010 mean 00000000000111101000100110110010 backed 00000000000010001111010000110010 believed 00000000000111011100110000110010 Sachs 00101111111011010011101001001000 expensive 00000000000011001000001110010000 carry 00000000000111100110101110110010 Mexico 00100000000111011111111101101000 Pentagon 00100000000111101001110000100101 lack 00000000000111111111111110111111 immediately 00000000000000110000010001110010 tried 00000000000111111011101000110010 33 00000000000000000000000000000000 store 00000000000000000101111010110000 Thatcher 00101111111100100010010010001000 principal 00000000000000000010010011010000 troubled 00000000000001000000101001000000 houses 00000000000000000100000011110011 story 00000000000111100110111101100111 St. 00100000000000000000000000000000 Office 00100000000111101101101010000001 attention 00000000000111101101110100100111 Dinkins 00101111111110111100110010001000 original 00000000000000000000010011010000 owner 00000000000011111111110000110101 experts 00000000000000000000000010110011 ones 00000000000111101010011001110011 criminal 00000000000000000001000000110000 Home 00100000000000000000010110100001 items 00000000000111101111101010100011 County 00100000000011000000110010100101 reduction 00000000000111101111101010100111 Instead 00100000000111101111101000101111 England 00100000000000010101011110000010 tell 00000000000111111010100110110010 community 00000000000111101110000001000001 movie 00000000000011011000101000100001 par 00000000000111101101010000101000 panel 00000000000110101100000001010101 person 00000000000111101111110010110101 pending 00000000000000001100010001000000 output 00000000000111101110110100000111 44 00000000000000000000000000000000 collapse 00000000000111111111010010001111 popular 00000000000000000010000010010000 details 00000000000111101111001100101111 access 00000000000111101010001100100111 acquisitions 00000000000111101111000010100111 runs 00000000000000000011000000010010 emergency 00000000000001000000010100010000 year-ago 00000000000000000000000000000000 easy 00000000000011000001011110010000 asset 00000000000000000001001010100001 negative 00000000000000000010001010010000 dispute 00000000000111111110110000100111 ease 00000000000111110110111110110010 Santa 00100000000111101110101101110000 tender 00000000000000000000001100010000 combined 00000000000000000110001001000000 numbers 00000000000111101110100000100011 profitable 00000000000000000100010010010000 students 00000000000000000000011000110011 plunged 00000000000001000101000100110010 difference 00000000000111111100001000010111 certainly 00000000001011000000001001110010 gives 00000000000110000001000000010010 Gulf 00100000000100100110001110101000 Moscow 00100000000111101011101101101000 Development 00100000000011000000101001100001 During 00100000000000001101000000001010 Traders 00100000000000000000000001010011 purchased 00000000000010100100010000110010 primarily 00000000001100001011000001110010 65 00000000000000000000000000000000 Entertainment 00100000000000100010010010110000 Standard 00101111111111101110111010101000 trend 00000000000111111100111101100111 increasingly 00000000000000010000000001110010 pension 00000000000000000001111110110000 factory 00000000000111101010100000100001 image 00000000000111111111111001100111 balance 00000000000110111111011010100111 claim 00000000000111111101011010110111 ownership 00000000000000000000000010100111 bidding 00000000000110101000110001000000 250 00000000000000000000000000000000 publicly 00000000000100100111001001110010 mortgages 00000000000111101110101111100011 released 00000000000011100000010000110010 materials 00000000000000000001000111001001 LIN 01000000000101001001110000001000 gets 00000000000001111011000000010010 powerful 00000000000000000000000010010000 Paris 00100000000111111101111001101000 M. 00101111111111000001011111011000 lose 00000000000111001111001110110010 Nissan 00100000000111001011011000101000 represents 00000000000000100001000000010010 conservative 00000000000000001000011000110000 actions 00000000000111101111101000100011 competitive 00000000000000000010110010010000 charged 00000000000101010110010000110010 seemed 00000000000100000001101000110010 margin 00000000000000000001100011000111 authority 00000000000111101001110100100111 Great 00100000000000000000011000010000 Boeing 00100000000111101000011100101000 attributed 00000000000001010101010000110010 Houston 00100000000111011101111001101000 aimed 00000000000000000101110100110010 properties 00000000000110101101110000001001 experience 00000000000111101011001110100111 anyone 00000000000000101010010001110010 Ltd 00100000000000000000000000000000 true 00000000000011000100010110010000 subordinated 00000000000000000000100110110000 1994 00000000000000000000000000000000 laws 00000000000000001100111100100011 Chrysler 00100000000111101110011100101000 roughly 00000000000000100111000001110010 proposals 00000000000111101110101000100011 headed 00000000000111101111010000110010 drive 00000000000101110110010110110010 fine 00000000000000010010000001000111 NBC 01000000000000000000000000000000 internal 00000000000000000101000100010000 US$ 01000000000000000000000000000000 treatment 00000000000111110010011010100111 Minister 00101111111000000001100110010101 partners 00000000000110101010000011101001 jury 00000000000000001001101000010111 vehicles 00000000000000000001101001100011 live 00000000001111011101010110110010 miles 00000000000000000000000100001011 affected 00000000000001110001110000110010 Swiss 00100000000000000010100100110000 export 00000000000000000011000100010000 Act 00100000000111111101001000110111 Costa 00101111111100000111001101110000 reorganization 00000000000000000000000111001111 facility 00000000000111101111011010001001 corporations 00000000000111101111110001110011 settled 00000010000011001100010000110010 Transportation 00100000000010001001110110110000 monetary 00000000000000010011000000110000 leaving 00000000000111111111101101000000 wrong 00000000000001000000110110010000 retirement 00000000000000000000011011100001 signs 00000000000111101101111110101111 film 00000000000000000000101000100001 Poor 00100000011111111110111110101000 alleged 00000000000000000001111000010000 Separately 00101111111111111111111011101000 B. 00101111111011000001011011011000 season 00000000000111101110001000100111 material 00000000000000000001100000100001 improvement 00000000000111111111001010100111 Republicans 00100000000111100101010110110011 manufacturers 00000000000100000110111111110011 USX 01000000000000000000000000000000 nations 00000000000000000000011101110011 grow 00000000000111011101010110110010 highest 00000000000000011010000011010000 sources 00000000000000000000001000010101 junk-bond 00000000000000000000000000000000 human 00000000000010000101000000110000 present 00000000000010000101110110110010 clearly 00000000000101000000001001110010 minority 00000000000000000000101000110000 placed 00000000000011001100010000110010 pretty 00000000000000001100000001110010 accept 00000000000111111001111110110010 monthly 00000000000000110101000101010000 Party 00100000000100101101101100100101 shift 00000000000111110100111000110111 L. 00101111111011000001001011011000 amid 00000000000000000010100000001010 flow 00000000000100010000001010001111 someone 00000000000000001010010001110010 fixed 00000000000000100000011100010000 eventually 00000000001000000000001001110010 No. 00100000000000000000000000000000 values 00000000000111101000001000100011 successful 00000000000000000001000010010000 favor 00000000000111111111101001101111 recovery 00000000000111001111101010100111 appeal 00000000000111111111111010110111 putting 00000000000111110111101101000000 Asia 00100000000111111110011101101000 world-wide 00000000000000000000000000000000 ending 00000000000000000110010100110010 waiting 00000000000101111110110000110010 accounting 00000000000000000010000010110000 Florida 00100000000111101011110001101000 Hurricane 00100000000100100101100100100001 organization 00000000000111101111011001100111 whom 00000000000111101110101101000010 55 00000000000000000000000000000000 appeared 00000000000000001001101000110010 disaster 00000000000111100001101101100111 lending 00000000000000000000110011000111 players 00000000000111100110001001110011 Resources 00100000000001100010001101001001 advantage 00000000000000000011010110001111 Net 00100000000000000000100101010000 steps 00000000000110001011001000100011 deposits 00000000000111100010100111100011 predicted 00000000000111111111110111000010 magazines 00000000000110111100110001100011 Soviets 00100000000111101111111110110011 technical 00000000000000000010000000110000 bit 00000000000111111111110001111111 traditional 00000000000000000000001000110000 51 00000000000000000000000000000000 Morris 00101111111111110111100000001000 break 00000000000111110110010110110010 risks 00000000000111101011011000100011 controls 00000000000010000111000000010010 Oakland 00100000000110111101101001101000 declining 00000000000000010010010001000000 failure 00000000000111111110111100100111 researchers 00000000000000000110000010110011 core 00000000000000011010010011010000 starting 00000000000110011100111000110010 victims 00000000000111101000001010110011 C. 00101111111011000000010111011000 Chinese 00100000000000001001010100110000 liquidity 00000000000000001010011010100111 shopping 00000000000000000000100101100001 lawmakers 00000000000000000100010010110011 revised 00000000000000000010001001000000 sometimes 00000000000001100000001001110010 losing 00000000000000000100100101000000 Arizona 00100000000111100011110001101000 crisis 00000000000111111001001101100111 threat 00000000000111111010111100100111 elections 00000000000111101001010001100111 partnership 00000000000110101111100011110101 mark 00000000000111101010111100001000 unusual 00000000000000000001110100010000 expand 00000000000111101110111110110010 Central 00100000000001000001111100110000 nor 00000000000000000000011011000000 normal 00000000000000011011000000010000 Medical 00100000000000000001100000110000 everything 00000000000000100010010001110010 Three 00100000000111101011111001010000 remained 00000000000000010000010110110010 significantly 00000000000000001000010001110010 involving 00000000000000010000000000001010 ordered 00000001000011000101010000110010 W. 00101111111011000000100011011000 client 00000000000111111111001110000001 Campeau 00100000000100101111110000001000 couple 00000000000111111111101001111111 p.m. 00000000000000000000000000000000 substantially 00000000000100001000010001110010 tomorrow 00000000000000101100010001110010 confidence 00000000000111101110001110100111 listed 00000000000011011000010000110010 advertisers 00000000000110110010111000110011 showing 00000000000000000000110101000000 Trump 00101111111100101100010010001000 words 00000000000111101111000110100011 model 00000000000000000000000001000111 Council 00100000000000000101010001010101 wrote 00000000000111111111010111000010 reflect 00000000000001101001101110110010 portion 00000000000111111111011110111111 voted 00000000000111101011101000110010 Continental 00100000000111101011110110101000 art 00000000000111101010111100100001 industries 00000000000111101100100000101001 Chapter 00100000000000000001110001100010 Though 00100000000111111011101001000010 Brown 00101111111100101111011000001000 request 00000000000111111111101111100111 adviser 00000000000111111100110110110101 Southern 00100000000000000000110110101000 election 00000000000000000010010001100111 reasons 00000000000111111111101110100011 benchmark 00000000000111111111011000010000 Mitsubishi 00100000000111010001111000101000 agree 00000000000111111001100110110010 Philip 00101111111000001000011100001000 source 00000000000000000101011000010101 Center 00100000000111111111010001010101 Life 00100000000111101111101110100001 everyone 00000000000001001010010001110010 complex 00000000000000000110000010010000 mainly 00000000000110001011000001110010 established 00000000001111101100010000110010 editor 00000000000111111110011000110101 weakness 00000000001111111111111010100111 Mae 00100000000110001100111110000010 Lloyd 00101111111010001101111110101000 segment 00000000000111101110111001110101 Frank 00101111111000000010010100001000 push 00000000000111100110010110110010 positive 00000000000000000100001010010000 quite 00000000000000000000000001110010 operate 00000000000111111111001110110010 employee 00000000000000000000000000110101 Mortgage 00100000000000000100000110110000 effects 00000000000111111101101110001111 plus 00000000000000000010011010000010 decide 00000000000111111110011110110010 N.J. 01000000000000000000000000000000 maturity 00000000000111101101100001000111 developing 00000000000111110111110001000000 sort 00000000000111111111110110111111 chemicals 00000000000001111111111010110000 managed 00000000000011111000110000110010 gone 00000000000101101010110000110010 1982 00000000000000000000000000000000 thrifts 00000000000111100111100001110011 advance 00000000000111101111001001101111 refused 00000000000111101111101000110010 education 00000000000111101111101101100001 stronger 00000000000000001000001111000000 Park 00100000000100000001000010100101 launched 00000000000011011001010000110010 usual 00000000000111101111010011010000 chips 00000000000111101001110110001001 Holdings 00100000000111101111110001101001 AMR 01000000000000000000000000000000 Futures 00100000000111111110011110110000 cable 00000000000000000101001010110000 trillion 00000000000000000100000001010000 direction 00000000000111111011001001100111 Sir 00101111111111100110011100001000 thus 00000000000111101101000001110010 Each 00100000000000000000100100010100 mixed 00000000000111110100010000110010 Mass. 00100000000000000000000000000000 played 00000000000101011100010000110010 Loan 00100000000000000000001011100101 centers 00000000000111101110010100100011 release 00000000000111101001111101110111 adjusted 00000000000010110110110000110010 accord 00000000000111101111011000100111 police 00000000000000000000101100100101 reflects 00000000000000000001010000110010 EC 01000000000000000000000000000000 thousands 00000000000111111111111000101111 Hills 00100000000000001100000010100101 uncertainty 00000000000111111110111010100111 bigger 00000000000000000110001111000000 Burnham 00101111111000000001011001001000 proceeds 00000000000111101110000100100111 Earlier 00100000000000000000001001100010 finally 00000000010000000000001001110010 Defense 00100000000111101010110110110000 resources 00000000000001100010001101001001 slide 00000000000111110111101100110111 electronics 00000000000000000111011010110000 1.2 00000000000000000000000000000000 Donald 00101111111000000000011010011000 Our 00100000000000000000000010000100 contrast 00000000000111111111101011010111 Today 00100000000000001100010001110010 relief 00000000000111111010111000111001 event 00000000000111111100100000001111 hearing 00000000000111110101001011100111 typically 00000000010001100000001001110010 slowing 00000000000111001111010001000000 engineering 00000000000001000001000001100001 42 00000000000000000000000000000000 thinks 00000000000111100011000000010010 Credit 00100000000000000000001100110001 supplies 00000000000110100000110100000111 primary 00000000000000000110010011010000 reflected 00000000010000000001010000110010 mind 00000000000111111110110101010111 controlled 00000000000011001111010000110010 opposed 00000000000111111000110000110010 H. 00101111111111000011001011011000 crude 00000000000111101110011000101000 1.1 00000000000000000000000000000000 Stephen 00101111111000001000010110011000 Here 00100000000000010100010001110010 surged 00000000000000000101000100110010 S.A. 01000000000000000000000000000000 suggested 00000000000110111111110111000010 buyer 00000000000111111110101010110101 Italy 00100000000111101111111101101000 sports 00000000000001000000001010110000 annually 00000000000000000000001001000111 movies 00000000000100001111110101100011 pace 00000000000111101111011001000111 travel 00000000000001000100000000100001 Partners 00100000000110101010000011101001 affect 00000000000111101101101110110010 Sunday 00100000000111011011101001100010 McCaw 01000000000101000100100100101000 protect 00000000000111111111111110110010 talking 00000000000110110111110000110010 ratings 00000000000111101011000011000111 soared 00000000000010100001000100110010 vehicle 00000000000011000110001000100001 warrants 00000000000111100100101111100011 high-yield 00000000000000000000000000000000 pages 00000000000000000010000100001011 AG 01000000000000000000000000000000 sells 00000000000100001101000000010010 Australian 00100000000000000010000100110000 fewer 00000000000000000001000111000000 Paribas 00101111111000100000000101001000 faces 00000000000001000011000000010010 broad 00000000000000000110100000010000 practices 00000000000111101111111100100011 Finance 00100000000111111110010110110000 Black 00100000000000001001001000110000 stopped 00000000000001001010001000110010 felt 00000000000111101110110111000010 1.8 00000000000000000000000000000000 doubt 00000000000111111110010001110010 GE 01000000000000000000000000000000 commodity 00000000000111101111111110110000 determined 00000000000111011101110000110010 throughout 00000000000001001101000000001010 stations 00000000000111101011110100001001 relations 00000000000111101101010011111001 design 00000000000111001100011110110111 environment 00000000000111110111011001100111 hundreds 00000000000111101101111000101111 reform 00000000000111101010111000111001 double 00000000000111111110011011000000 buy-outs 00000000000000000000000000000000 joined 00000000100011000101010000110010 Broadcasting 00100000000010010010010010110000 II 01000000000000000000000000000000 argue 00000000000101111001100110110010 speed 00000000000111101110110110110111 fraud 00000000000010000010100010100111 confirmed 00000000000111011101110111000010 ask 00000000000111011010100110110010 fears 00000000000111101110101010101111 About 00100000000000000000000010101010 Ministry 00100000000000000011100110010101 producing 00000000000011000111110001000000 cities 00000000000111101100010001100011 represent 00000000000111101001101110110010 Frankfurt 00100000000111001100011001101000 moment 00000000000111111110011000010111 families 00000000000111101111111100110011 ban 00000000000111111011111000110111 February 00100000000111111111111001100010 structure 00000000000111101101001001100111 uses 00000000010111101111000000010010 guilty 00000000000001011100111000110010 crime 00000000000101111101110010100111 Foreign 00100000000000000010010000110000 consulting 00000000000001000000000010110000 responsible 00000000000011111110110000110010 books 00000000000111101111100101100011 heart 00000000000000000010011011100001 defendants 00000000000111101111000110110011 red 00000000000001000010001000110000 equal 00000000000001100000111000110010 social 00000000000000010101000000110000 Citicorp 00100000000111101010110100101000 operates 00000000000000100101000000010010 Intel 00100000000111100100011100101000 virtually 00000000000001110111000001110010 My 00100000000000000000000100000100 Labor 00100000000000000000110110110000 written 00000001000111110010110000110010 Technology 00100000000001010100111010110000 Energy 00100000000000010110010010110000 tests 00000000000101101010001000100011 seats 00000000000000101001000001100011 32 00000000000000000000000000000000 schools 00000000000111101100110001100011 leadership 00000000000111101010101001100111 distribution 00000000000000000001001001100001 ounce 00000000000111110111101000100111 influence 00000000000111111100110010110111 Jersey 00100000000000000001011110000010 1.6 00000000000000000000000000000000 wide 00000000000010000000100000010000 Only 00100000000000000011000001110010 System 00100000000111101111000011100111 happen 00000000010111111101010110110010 farmers 00000000000001001110111000110011 goal 00000000000111111111100101100111 town 00000000000111101111110100000001 damages 00000000000111101111000100000011 Price 00100000000000000000000111000111 healthy 00000000000000010001100000010000 front 00000000000111111101111001101111 finished 00000000000000100011001000110010 Africa 00100000000101111101110101101000 Hill 00101111111000010100000101001000 ground 00000000000111111110110100100111 parents 00000000000111100111110000110011 Bear 00100000000111111100110000101000 possibility 00000000000111111111000000001111 temporary 00000000001000000001000000010000 scandal 00000000000111101110100011100111 communications 00000000000010000010010010110000 providing 00000000000101111111111101000000 120 00000000000000000000000000000000 section 00000000000111001011100001000111 slowdown 00000000000111111101101010100111 buildings 00000000000000000000110001100011 exercise 00000000000110110111110110110010 fallen 00000000000111101010110000110010 Why 00100000000000000000101101000010 relationship 00000000000110111110110000100111 Prime 00101111111111101100010110110000 Lambert 00101111111111111110100001001000 corn 00000000000110100001101110110000 Community 00100000000111101110000001000001 Brady 00101111111000100011001010001000 homes 00000000000000001000101001100011 cutting 00000000000111011001011101000000 except 00000000000111110010011010000010 Machines 00100000000011001111011010101001 networks 00000000000111101110110100001001 sides 00000000000000000100100111110011 piece 00000000000111111111111000111111 global 00000000000001101010000000110000 coupon 00000000000000010000010011000111 reporting 00000000000000000000110001000000 decisions 00000000000111100111101000100011 Joseph 00101111111000010000000010011000 damaged 00000000001011010001110000110010 Jack 00101111111000000001011010011000 wake 00000000000111111101111100001111 denied 00000000000011010001110111000010 suspended 00000000001001010100010000110010 file 00000000000111001111011110110010 Aug. 00100000000000000000000000000000 Cray 00100000000111110110100100101000 serve 00000000001111111111001110110010 regular 00000000000000001010010000010000 liability 00000000000010000101101000111001 Report 00100000000111101111110000110111 models 00000000000000000000101001100011 specialists 00000000000000000010000010110011 deputy 00000000000000000010001001110000 publishing 00000000000000100011011010110000 opinion 00000000000111100011111001100111 utility 00000000000010100001000000100101 follow 00000000000001111110101110110010 Power 00100000000000000000001001111001 airlines 00000000000000000000001010101000 speech 00000000000111111101001011100111 ventures 00000000000000000001000000100111 reserve 00000000000000000000011011100101 Korean 00100000000000000001010100110000 immediate 00000000000000000001010100010000 mail 00000000000101101110000000100001 association 00000000000110101011110001010101 volatile 00000000000010000000010010010000 worry 00000000000111101001100110110010 copper 00000000000111111011101110110000 38 00000000000000000000000000000000 Sears 00100000000111101110110100101000 wife 00000000000111111111111110000001 Their 00100000000000000000000110000100 Hollywood 00100000000000100111110001101000 Phillips 00101111111100101000111000001000 Thus 00100000000111101101000001110010 jump 00000000000111111100101100110111 minister 00001111111000000001100110010101 HUD 01000000000000010000101100100101 Oil 00100000000000000001001110110000 responsibility 00000000000111101111001100111001 intended 00000000000101111100110000110010 halt 00000000000011011111110110110010 antitrust 00000000000010000001000000110000 soft 00000000000010100010101010110000 shown 00000000000110010010110000110010 suggest 00000000000011111100100110110010 delay 00000000000111111100111000110111 rumors 00000000000111101111111010101111 municipal 00000000000000000000000110110000 accused 00000000000111010011110000110010 follows 00000000100000000011000000010010 AT&T 01000000000000000000000000000000 reaction 00000000000111111101111101010111 49 00000000000000000000000000000000 declared 00000000000111001101110111000010 1.7 00000000000000000000000000000000 Compaq 00100000000111111110100100101000 associated 00000000000000000001100000110010 invest 00000000000111111001010110110010 disclose 00000000000111110110011110110010 underwriters 00000000000110100100101001110011 puts 00000000000010000011000000010010 voters 00000000000000000001011000110011 documents 00000000000110101110001000100011 abroad 00000000000000110100010001110010 37 00000000000000000000000000000000 Douglas 00101111111000000101010100001000 F. 00101111111011000010110011011000 circulation 00000000000111110111100011000111 studio 00000000000110100111000100000001 worst 00000000000000001111010011010000 T. 00101111111100100101100011011000 courts 00000000000011000010010110110011 aggressive 00000000000000000010110100010000 prime 00001111111111101100010110110000 worried 00000000000111111111110000110010 challenge 00000000000111111011111010110111 broker 00000000000011100011101110110101 Chase 00100000000111101000111000101000 employment 00000000000000000000001100000111 comparable 00000000000101100111010101010000 newspapers 00000000000111001100110001100011 1.3 00000000000000000000000000000000 1970s 00000000000000000000000000000000 hotel 00000000000011100101111010110000 scientists 00000000000001000110000010110011 Beijing 00100000000111111001101101101000 5,000 00000000000000000000000000000000 commitments 00000000000111101011100100011001 living 00000000000011000001000001000000 Manufacturers 00100000000100000110111111110011 hostile 00000000000000000101001100010000 suffered 00000000000101101001010000110010 training 00000000000000000001101101100001 happened 00000000000111100110001000110010 join 00000000000111101111111110110010 litigation 00000000000111101110100010100111 prospects 00000000000111111111111100111001 Just 00100000000000001100001001110010 Volume 00100000000111101100001110000111 meanwhile 00000000000111111111011011101000 agreements 00000000000111101110010000100111 Merc 00100000000000000001110000100101 Keating 00101111111101000000110010001000 compromise 00000000000111101011101010110111 save 00000000000011111111001110110010 Exxon 00100000000111101100011100101000 factor 00000000000101110111011010110101 Jan. 00100000000000000000000000000000 handle 00000000000011101111111110110010 Saturday 00100000000111111011101001100010 flight 00000000000111101000000000100001 Navy 00100000000000001100101100100101 extraordinary 00000000000000000000010100010000 Dealers 00100000000000000000000101010011 100,000 00000000000000000000000000000000 boosted 00000000000011010001111001000000 Sun 00100000000111101111011000101000 12.5 00000000000000000000000000000000 served 00000000000111011110001000110010 residents 00000000000000000000100000110011 brief 00000000000000010011000000010000 Navigation 00100000000000011000100001100001 extra 00000000000000000011100100010000 spot 00000000000111101110110011000111 outlook 00000000000111111101111100111001 Manville 00100000000111100011101100101000 10-year 00000000000000000000000000000000 1983 00000000000000000000000000000000 votes 00000000000001000001000001100011 critics 00000000000000000011000010110011 Miller 00101111111100101000001000001000 college 00000000000010000011000001000001 Greenspan 00101111111100101111110010001000 views 00000000000111101111111101100011 appeals 00000000000000000000111111100101 citing 00000000000111111101011010000010 keeping 00000000000111111011101101000000 excess 00000000000100000001111001101111 School 00100000000010001110100001000001 Control 00100000000000100010110000101111 panic 00000000000000110110111010100111 Apple 00100000000111101110100100101000 pricing 00000000000000000011000011100001 B.A.T 01000000000000000000000000000000 counsel 00000000000000001110001000110101 professional 00000000000000010000101000110000 minor 00000000000000001010000000010000 inventories 00000000000111101101110100000111 Singapore 00100000000110111111111001101000 truck 00000000000000011000001000100001 Phelan 00101111111000001011000010001000 discussions 00000000000111100111010000100111 automotive 00000000000001010000101010110000 trucks 00000000000110101110111001100011 looks 00000000000111001000001000110010 discovered 00000000000111110101110111000010 From 00100000000000000000001000101010 replace 00000000000111111011111110110010 fourth-quarter 00000000000000000000000000000000 Mitchell 00101111111110010000000100001000 suggests 00000000000001010011000000010010 prove 00000000000111111100100110110010 argued 00000000000111110111110111000010 Lee 00101111111000000000010100001000 crop 00000000000000000100011000100001 returned 00000000000011111011101000110010 safe 00000000000011000000011010010000 senators 00000000000000000000100110110011 Mixte 00100000000111100111111101001001 one-time 00000000000000000000000000000000 preliminary 00000000000000000001001100010000 reporters 00000000000000100001110000110011 Edward 00101111111000000100000110011000 fairly 00000000000010001100000001110010 accepted 00000000000000001001010000110010 conventional 00000000000000010001110000110000 coup 00000000000000001000111010110101 launch 00000000000101110111110110110010 Georgia-Pacific 01000000000000000000000000000000 settle 00000000000111101111011110110010 ABC 01000000000000000000000000000000 visit 00000000000111111001111010110111 initially 00000000100000000000001001110010 Bill 00100000000111101110110011100111 representatives 00000000000110101110101010110011 succeeds 00001111111111101011011111000010 barrels 00000000000000000000000110001011 warned 00000000000111011111110111000010 guarantee 00000000000111110111011010110111 movement 00000000000110111111101001100111 regulations 00000000000000000011111100100011 sound 00000000000110101110110110110111 Toronto 00100000000000000001011001101000 task 00000000000111010101100000110111 Budget 00100000000000000000000001010001 upon 00000000000001000001000000001010 tend 00000000000011101011000110110010 music 00000000000010000001111100100001 S. 00101111111011100001111011011000 twice 00000000000111101010011011000000 Telephone 00100000000000001001001010110000 telecommunications 00000000000010011011011010110000 Major 00100000000000000000001000010000 ANC 01000000000000000000000000000000 site 00000000000111011110101101100111 asking 00000000000111110011110101000000 formed 00000000001011100000010000110010 type 00000000000111111110110110111111 discuss 00000000000111111000011110110010 society 00000000000111101011001001100111 negotiating 00000000000111000110111000110010 coverage 00000000000110101110011010100111 language 00000000000111110110101001100111 metals 00001111111010101000011110110000 guarantees 00000000000011000111000000010010 attract 00000000000010111111101110110010 criticism 00000000000111110110011010100111 professor 00000000000111111111011000110101 Sotheby 00100000000111100101111110101000 entered 00000000000010001001010000110010 century 00000000000000000010000001000111 Industry 00100000000111101110100100100101 pass 00000000000111011110101110110010 Stearns 00101111111000000011101001001000 retailers 00000000000111001110010000110011 blacks 00000000000111101010111000110011 candidates 00000000000111101100100110110011 prosecutors 00000000000000001001010010110011 MGM 01000000000000000000000000000000 obtain 00000000000011011111101110110010 District 00100000000111101010110111100101 baseball 00000000000000000000111100100001 shipments 00000000000111101111110100000111 patients 00000000000000100000011100110011 Louis 00100000000111100111000001001000 forecasts 00000000000111101101010000100011 Several 00100000000001000011000011000000 guidelines 00000000000000000010111100100011 weekly 00000000000000000101000101010000 fire 00000000000111101110000110110111 concluded 00000000000111011011110111000010 1980 00000000000000000000000000000000 audience 00000000000111011011111001100111 Communist 00100000000011000011011000110000 slipped 00000000000000100001000100110010 limits 00000000000111000110100100100111 Officials 00100000000000000000000100010101 controversial 00000000000000001010000010010000 alternative 00000000000000000000101100100111 tumbled 00000000000011100001000100110010 indicate 00000000000011010100100110110010 quick 00000000000001100000010000010000 authorities 00000000000000000010010010110011 strategic 00000000000000010010000000110000 disappointing 00000000000000010011100000010000 intelligence 00000000000110110101000010110000 43 00000000000000000000000000000000 operator 00000000000111101010100001110101 traffic 00000000000111100001101110000111 insurers 00000000000000000010100001110011 older 00000000000010000010101000110000 understand 00000000000111101011100110110010 gene 00000000000100100011111100001000 assistance 00000000000111101100001100100111 pushed 00000000000010000001001000110010 extent 00000000000111111110100000001111 word 00000000000111011100111101100111 1980s 00000000000000000000000000000000 calling 00000000000111101111110101000000 meetings 00000000000111110111010000100111 consecutive 00000000000000000000100001010000 surge 00000000000111111111101100110111 representing 00000000000100010000000000001010 Conn. 00100000000000000000000000000000 SCI 01000000000000000000000000000000 ready 00000000000001111100011000110010 adopted 00000000000110011001010000110010 46 00000000000000000000000000000000 requires 00000000000000010001000000010010 prior 00000000000000011000111000110010 worse 00000000000000000101001111000000 station 00000000000111101001110100001001 critical 00000000000000011000011000010000 strategies 00000000000111101100011100100011 USAir 01000000000000000000000000000000 turning 00000000000111111101100001000000 lawsuit 00000000000111101100100001100111 begun 00000000000110101010110000110010 underlying 00000000000000100000000100010000 Krenz 00100000000000000000000000000000 nuclear 00000000000000000001110000110000 surprised 00000000000011010101110000110010 easily 00000000000000100000010001110010 intends 00000000000111111000101000110010 Coors 00100000000000001010010000001000 contends 00000000000111011111010111000010 setting 00000000000011111110100001000000 predict 00000000000111110101100110110010 devices 00000000000111101101011001001001 extend 00000000000111001110111110110010 Petroleum 00100000000000000111001010101000 am 00000000000000000100111110000010 assistant 00000000000110000001001001110000 N.Y. 01000000000000000000000000000000 lenders 00000000000111111110010000110011 described 00000000000111100010110000110010 unlikely 00000000000111100101011000110010 finding 00000000000111111011110101000000 newly 00000000000000001111001001110010 collection 00000000000111111110000101100111 Calif 00100000000000000000000000000000 judges 00000000000000000000010110110011 CDs 01000000000000000000000000000000 politics 00000000000111101110010010100111 Agency 00100000000000001000010000100101 expressed 00000000000001010001010000110010 neither 00000000000000010000011011000000 bottom 00000000000000010011100011010000 advisers 00000000000110101110010110110101 track 00000000000000101001001010110111 indeed 00000000000111111111001011101000 watch 00000000001111101110101110110010 differences 00000000000111101111111010100111 observers 00000000000000000000000100010011 quarters 00000000000000010100010101111011 lives 00000000000111001111111101100011 48 00000000000000000000000000000000 extremely 00000000000000011100000001110010 Terms 00100000000111111111101100101111 pursue 00000000000111011111011110110010 Simmons 00101111111101101100001000001000 triggered 00000000000100010111010000110010 picture 00000000000111100110100101100111 resignation 00000000000111111111110001100111 knows 00000000000111101100110111000010 costly 00000000000000000100110010010000 publisher 00000000000111111111110000110101 Over 00100000000000000101000000001010 Until 00100000000000000110000000101010 Like 00100000000000000010000000001010 4.5 00000000000000000000000000000000 rival 00000000000001100110101001000000 Economic 00100000000000000011000000110000 branch 00000000000000101010110010000001 patent 00000000000000101000100000100001 millions 00000000000111101011111000101111 Quantum 00100000000000001011010100101000 names 00000000000110101111111101100011 Rockefeller 00100000000000001000000000001000 offerings 00000000000111101101001011100011 matters 00000000000111101101101010100011 generation 00000000000111010001111000111111 swings 00000000000111111011111110000011 proceedings 00000000000111101111001001000111 3.5 00000000000000000000000000000000 participants 00000000000110110100101001110011 opportunities 00000000000010001001101110100011 extended 00000000000011110000111001000000 ties 00000000000111001100110000100111 massive 00000000000000001000100000010000 style 00000000000111001101001001100111 Philadelphia 00100000000111101111111001101000 equivalent 00000000000111101111101100001111 class 00000000000011100110111100010000 appropriations 00000000000011000001001101010001 hear 00000000000110111110100110110010 Force 00100000000000101010010001010111 choice 00000000000111101010111101100111 specialist 00000000000000000101101110110101 Switzerland 00100000000111111110111101101000 eye 00000000000101111111111001100111 Messrs. 00101111111011000000110001111000 Pittsburgh 00100000000101101111111001101000 Trading 00100000000000000000000001011101 utilities 00000000000000000001110110110000 studies 00000000000100111000001000100011 simple 00000000000000001010011010010000 attorneys 00000000000000010111000010110011 ensure 00000000000111110100100110110010 flights 00000000000111100100101001100011 voting 00000000000011001000111100010000 heads 00000000000111000111000000010010 ratio 00000000000111111000111001000111 games 00000000000001000100101001100011 covered 00000000000011110001110000110010 creating 00000000000110111111111101000000 attack 00000000000111111101100100100111 carried 00000000000001100001001000110010 P&G 01000000000000000000000000000000 manufacturer 00000000000111100010100001110101 Stores 00100000000110100000100010101001 dozen 00000000000000000000010001010000 caught 00000000011111001100010000110010 takeovers 00000000000110101110000010100111 pharmaceutical 00000000000001011011011010110000 Bureau 00100000000000000000010001010101 obligation 00000000000000000111101100100111 pulled 00000000000101000001001000110010 succeed 00000000000110111001010110110010 stage 00000000000111101110101101100111 democracy 00000000000111101011110010100111 41 00000000000000000000000000000000 Fannie 00100000000001110111110101001000 pick 00000000000111000110010110110010 1981 00000000000000000000000000000000 invested 00000000000011000100010000110010 lawsuits 00000000000110101011110000100011 98 00000000000000000000000000000000 urged 00000000000001001101010000110010 pact 00000000000111101110111000100111 expanding 00000000000111000101010001000000 grown 00000000000011101010110000110010 Public 00100000000000000000110000110000 drives 00000000000101000111000000010010 34 00000000000000000000000000000000 administrative 00000000000000001001000000110000 500,000 00000000000000000000000000000000 suspension 00000000000111111111001101001111 politicians 00000000000110111100111000110011 allegations 00000000000111101111110000100011 contributions 00000000000111101110111100000011 Next 00100000000000000000010001100010 privately 00000000000010100001001001110010 colleagues 00000000000111111110110000110011 condition 00000000000111101110111101100111 Green 00100000000000001110010000001000 rebound 00000000000111111011101100110111 taxpayers 00000000000111101100111000110011 gross 00000000000100001001010101010000 moderate 00000000000000001010011100010000 specialty 00000000000010000101010000110000 constitutional 00000000000000001100000000110000 basic 00000000000000001010000000110000 ultimately 00000000000000000000001001110010 six-month 00000000000000000000000000000000 fans 00000000000100100010100000110011 85 00000000000000000000000000000000 virus 00000000000101110001001001000101 Ogilvy 00101111110111101111111010101000 purchasing 00000000000111101111110001000000 prompted 00000000000000010111010000110010 entertainment 00000000000000100010010010110000 plastic 00000000000000100010101010110000 bailout 00000000000000000000010111001111 illegal 00000000000000000000100110010000 ceiling 00000000000111111111100011000111 Delta 00100000000111101100010001101000 pushing 00000000000111111000110101000000 features 00000000001111000111000000010010 message 00000000000111111110111101100111 Red 00100000000001000010001000110000 turmoil 00000000000110101011111010100111 modern 00000000000000000100001000110000 initiative 00000000000000010100100011100111 Amex 00100000000000000010000000100101 radio 00000000000000000100001010110000 Drug 00100000000000001010111010110000 lowered 00000000000111110111111001000000 officers 00000000000111101110101010110011 India 00100000000111101011111101101000 presence 00000000000111110111101110100111 ran 00000000000011000001001000110010 supposed 00000000000111110110011000110010 bringing 00000000000111111110101101000000 easier 00000000000011000100011110010000 learned 00000000000111111000110111000010 Rica 00101111111011111000110000011101 brands 00000000000110101110001010101000 expense 00000000000111111111101111110111 troubles 00000000000111111110011000100011 ruled 00000000000111101101110111000010 permanent 00000000000010000001000000010000 severe 00000000000001010000000000010000 editorial 00000000000000001010010101010000 insured 00000000000000010100101001000000 grain 00000000000000000101101110110000 culture 00000000000111100011001001100111 reforms 00000000000111101111011000100011 personnel 00000000000000001001101101100001 36 00000000000000000000000000000000 fast 00000000000111100100110001110010 stock-market 00000000000000000000000000000000 resulting 00000000000000101001100100110010 none 00000000000111101101101000101111 Northrop 00100000000111101110101100101000 faster 00000000000000000011001111000000 amendment 00000000000011001100001000100111 investing 00000000000111111101000001000000 possibly 00000000000110011101000001110010 fair 00000000000000000001011010010000 sell-off 00000000000000000000000000000000 letters 00000000000111100100100101100011 per-share 00000000000000000000000000000000 banker 00000000000110101111001110110101 Lang 00101111111110101110100010001000 shot 00000000000101101010010110110010 chains 00000000000111100001000001110101 unable 00000000000111110100011000110010 Grand 00100000000000000000010110110000 population 00000000000111101010011000100001 MCA 01000000000000000000000000000000 promise 00000000000111101101111010110111 Davis 00101111111100111111001000001000 sellers 00000000000111111000101001110011 retailing 00000000000010000011111010110000 supported 00000000010011000101010000110010 answer 00000000000111110011111010110111 sets 00000000010111000111000000010010 hearings 00000000000111101011010000100111 pipeline 00000000000100000001111010110000 industrials 00001111111000000101110110110000 Nekoosa 00100000000111100001001010101000 Atlanta 00100000000111101101111001101000 wait 00000000000101110101010110110010 How 00100000000000000000001101000010 strongly 00000010000000000000010001110010 1.4 00000000000000000000000000000000 rapidly 00000000000000000000010001110010 sees 00000001000111100011000000010010 Harris 00101111111000011110010000001000 Bethlehem 00100000000111100010111000101000 Prudential-Bache 01000000000000000000000000000000 Once 00100000000000001000011011000000 tied 00000000010011001100110000110010 watching 00000000000111000001110101000000 luxury 00000000000011010000001010110000 elsewhere 00000000000111010100010001110010 progress 00000000000111101001111010100111 currencies 00000000000111111111100101110011 Before 00100000000000000100000000101010 instruments 00000000000000000000110001111001 elaborate 00000000000111111000110110110010 a.m. 00000000000000000000000000000000 Farmers 00100000000001001110111000110011 helping 00000000000111001010111000110010 seat 00000000000111101101001011100111 shipping 00000000001001000010110001000000 jointly 00000000000000010000010001110010 merchandise 00000000000000001111101010100001 comments 00000000000111111111101000100011 expanded 00000000000010100000111001000000 Atlantic 00100000000000000100011010101000 allowing 00000000000000010000001101000000 weaker 00000000000000000100001111000000 aerospace 00000000000011011111011010110000 founder 00000000000111111111111001101101 approve 00000000000111110011111110110010 temporarily 00000000000001000000010001110010 child 00000000000101101001111000100001 heard 00000000000111110110110111000010 63 00000000000000000000000000000000 dealer 00000000000000000000101110110101 1993 00000000000000000000000000000000 Fidelity 00100000000001011111111000101000 maximum 00000000000001101100011100010000 Source 00100000000000000101011000010101 match 00000000010111111111110110110010 Honecker 00101111111101011100110010001000 900 00000000000000000000000000000000 signal 00000000000111100111011010110111 blue-chip 00000000000000000000000000000000 types 00000000000111110101000100101111 membership 00000000000100111100001100100111 exposure 00000000000101111111110100100111 circuit 00000000000000000101010111100101 consultants 00000000000000001111000010110011 five-year 00000000000000000000000000000000 career 00000000000111101100010000000001 suits 00000000000111111011110000100011 sugar 00000000000000001011101110110000 collapsed 00000000000101100110001000110010 slid 00000000000001100001000100110010 Martin 00101111111000010000010100001000 Northern 00100000000000100000110110101000 import 00000000000000000001000100010000 rated 00000000000111111100010100110010 aide 00000000000011101100010110110101 Mark 00100000000111101010111100001000 playing 00000000000001001110100001000000 alternatives 00000000000111101011001110100011 Ross 00101111111000001010111000001000 FEDERAL 01000000000111111111101100110000 complained 00000000000111101111110111000010 processing 00000000000000000010000001100001 facing 00000000000000000100010101000000 merely 00000000100001000000001001110010 Wang 00101111111100101100110000001000 handling 00000000000111111110110001000000 somewhat 00000000000101001000010001110010 default 00000000000111101111010101010111 write 00000000000111101110101110110010 reducing 00000000000111111111011101000000 Young 00100000000000000001001000110000 killed 00000000000011110100010000110010 Food 00100000000000001111111010110000 cooperation 00000000000111100101111010100111 blame 00000000000111111110010010110111 becomes 00000000000000100000001000110010 carriers 00000000000111100100101011110011 eliminate 00000000000111001111111110110010 sophisticated 00000000000100000001010010010000 realize 00000000000110111100100110110010 Spain 00100000000111101110111101101000 anticipated 00000000000000001101001001000000 fresh 00000000000000011000010000010000 branches 00000000000000000011000001100011 subcommittee 00000000000000000010000001010101 father 00000000000111111111101110000001 causing 00000000000111111100101101000000 resume 00000000000111001001110110110010 attractive 00000000000000000010101110010000 Nikkei 00100000000011101101100011010000 58 00000000000000000000000000000000 Hungary 00100000000111110000111101101000 health-care 00000000000000000000000000000000 Bankers 00100000000110101110001111110011 seeks 00000000000000010100101000110010 represented 00000000000110010111010000110010 household 00000000000000110000101010110000 committed 00000000000101111000110000110010 published 00000000000111100000010000110010 fuel 00000000000000000000110110110111 McDonald 01000000000111101101111110101000 50,000 00000000000000000000000000000000 Georgia 00100000000111000111110001101000 circumstances 00000000000111101011101010100011 Israel 00100000000111100101111101101000 three-month 00000000000000000000000000000000 plastics 00000000000011111011111010110000 sudden 00000000000001100100100000010000 turns 00000000000111110001001000110010 one-year 00000000000000000000000000000000 friendly 00000000000000100001001100010000 mother 00000000000111100111011110000001 door 00000000000111011011111000000001 fields 00000000000000001001110001111001 hired 00000000101111101100010000110010 affiliate 00000000000111111110111001100111 impossible 00000000000111101101011110010000 promised 00000000000011011000110000110010 GNP 01000000000000000000000000000000 Stevens 00101111111110101100111000001000 Mac 00100000001001101100111110000010 chip 00000000000000001000001000100001 halted 00000000001000010100010000110010 transfer 00000000000111010111110110110010 criticized 00000000000110000101010000110010 Hampshire 00100000000000010001011110000010 status 00000000000111111101101001100111 Dean 00101111111100011111101000101000 claimed 00000000000010010101110111000010 RTC 01000000000000000000000000000000 rooms 00000000000100000110000001100011 Hewlett-Packard 01000000000000000000000000000000 formerly 00000000000000001110011010000010 love 00000000000100111110000110110010 Lawrence 00101111111000110000000010011000 retain 00000000000011111110001110110010 mine 00000000000000001011100010001001 Fe 00100000000000010000000001001000 died 00000000000110111110001000110010 revenues 00000000000111101100001100000011 Class 00100000000011100110111100010000 risen 00000000000111111010110000110010 GOP 01000000000000000000000000000000 Coast 00100000000000001001000010101000 Army 00100000000000000100101100100101 affairs 00000000000111101100001011111001 cold 00000000000000000101011010010000 nature 00000000000111111100111000001111 widespread 00000000000000010000000000010000 behalf 00000000000111111111001000000111 quiet 00000000000010101010011100010000 Mich. 00100000000000000000000000000000 metric 00000000000000000010010101010000 road 00000000000111111011111000000001 States 00100000000000000000000101110011 cheap 00000000000011100101011010010000 restaurant 00000000000000010001111010110000 one-third 00000000000000000000000000000000 deliver 00000000000101011111101110110010 enormous 00000000000000000100010100010000 becoming 00000000000111101011000101000000 harder 00000000000000000000011110010000 prison 00000000000001100110110101010111 normally 00000000000011100000001001110010 Carolina 00100000000000011100010101101000 Prices 00100000000000000000000110000111 Marshall 00101111111000000000000100001000 vs. 00000000000000000000000000000000 surplus 00000000000110101101100000100111 recorded 00000001000001101100010000110010 threatened 00000000000110111000110000110010 frequently 00000000000111100000001001110010 incentives 00000000000111101000101100000011 warning 00000000000001100011001011100111 corporation 00000000000111101111101001000101 hospital 00000000000000001000100000100001 acquiring 00000000000111111111110001000000 secondary 00000000000111111010111110110000 Sea 00100000000000000000011010101000 governments 00000000000111001000100001110011 targets 00000000000111100100011100100011 Stocks 00100000000111101110111011100011 filled 00000000000111010110010000110010 exactly 00000000000000011100001001110010 appointed 00000000000111000010010000110010 certificates 00000000000111111111111100101111 Banking 00100000000000000001000010110000 borrowing 00000000000000000000010000111001 CD 01000000000000000000000000000000 connection 00000000000111111101100000110010 identified 00000000000000010010110000110010 Illinois 00100000000000000111110001101000 800 00000000000000000000000000000000 FDA 01000000000000000000000000000000 viewed 00000000001111000010110000110010 complaints 00000000000110101011101000100011 nervous 00000000000100100111110000110010 regarding 00000000100110010000000000001010 ought 00000000000110000001101000110010 steady 00000000000001000011100000010000 Lockheed 00100000000110101111011100101000 subsidies 00000000000111100101001100000011 180 00000000000000000000000000000000 highway 00000000000000000110010010110000 variety 00000000000111111111111101111111 confident 00000000000111101111110000110010 delays 00000000000111100011011000100011 York-based 00100000000000000000000000000000 hot 00000000000000010001011010010000 shop 00000000000111100011110001001000 accounted 00000000000000001110110000110010 advice 00000000000111111011110100100111 encourage 00000000000101010011111110110010 structural 00000000001001000010000000110000 assume 00000000000111100100100110110010 determine 00000000000111101110011110110010 57 00000000000000000000000000000000 stands 00000000001111101000001000110010 99 00000000000000000000000000000000 THE 01000000000000000000000000100100 demands 00000000000111100111010000100011 two-year 00000000000000000000000000000000 stories 00000000000000001111110101100011 statements 00000000000110101101101000100011 Pennsylvania 00100000000111101111110001101000 profitability 00000000000111101011011010100111 identify 00000000000111111100011110110010 overnight 00000000000000011011010101010000 101 00000000000000000000000000000000 fighting 00000000000111001011110101000000 heat 00000000000111110000110110110111 Peabody 00101111111000001011101001001000 Walter 00101111111000000001010100001000 combination 00000000000111111111010000111111 2.3 00000000000000000000000000000000 commissions 00000000000111101010100100000011 cautious 00000000000010100111110000110010 awarded 00000000000100100000010000110010 Freddie 00100000001110010101110101001000 Workers 00100000000000000000000000110011 Gas 00100000000001000010011010110000 G. 00101111111011000001000011011000 student 00000000000000010010111000100001 favorable 00000000000000000000110010010000 agent 00000000000111101011110000110101 66 00000000000000000000000000000000 Coca-Cola 01000000000000000000000000000000 badly 00000000000100100000010001110010 users 00000000000111100000010000110011 62 00000000000000000000000000000000 thin 00000000000111111010011100010000 check 00000000000111100110001010110111 resulted 00000000000000001001100100110010 War 00100000000011101011000111111001 bridge 00000000000001000000110110100001 establish 00000000000111011111101110110010 changing 00000000000011100101010001000000 agents 00000000000000000011100000110011 15,000 00000000000000000000000000000000 pressures 00000000000111100110100100100111 retired 00000000000111100110101001000000 address 00000000000110011111110110110010 commitment 00000000000111111100111100100111 Chancellor 00101111110111110010010110010101 procedures 00000000000111100101111100100011 difficulties 00000000000111111101011000100011 numerous 00000000000000101001000011000000 maintenance 00000000000000000011000001100001 concept 00000000000111111101100000001111 39 00000000000000000000000000000000 Spielvogel 00101111111001100000000101001000 carries 00000000010000000011000000010010 university 00000000000111100000010000110101 2,000 00000000000000000000000000000000 friends 00000000000110100111110000110011 friend 00000000000111101011011110000001 theory 00000000000111011111111101100111 fundamental 00000000000000101010000000110000 divisions 00000000000111100000110000001001 disk 00000000000010101000001000100001 victory 00000000000111111111111010110101 Airways 00100000000000101011001010101000 portfolios 00000000000111101111101001101001 recalls 00000000000111111111011111000010 edition 00000000000111111001100001000111 coffee 00000000000100111001101110110000 occurred 00000000000000000110001000110010 Radio 00100000000000000100001010110000 formal 00000000000000000011000000010000 Christmas 00100000000000000000000000100001 leaves 00000000001000000011000000010010 1.25 00000000000000000000000000000000 200,000 00000000000000000000000000000000 syndicate 00000000000111101011000010000001 reputation 00000000000111101111101110100111 AIDS 01000000000010001110101000110000 credits 00000000000111111100101100000011 effectively 00000000000011000000010001110010 apply 00000000000111011111010110110010 acting 00000000000001000000000001000000 insist 00000000000001111001100110110010 looked 00000000000111101000001000110010 Latin 00100000000000010000100110101000 tape 00000000000110011001011000000001 player 00000000000111101111111010110101 reasonable 00000000000010100000000000010000 color 00000000000110101100001010110000 delayed 00000000010001010100010000110010 tobacco 00000000000000011011011010110000 resistance 00000000000111001011001100100111 boom 00000000000111110011101010100111 High 00100000000000000001011100010000 totaling 00000000000000000010100100110010 two-thirds 00000000000000000000000000000000 unlike 00000000000110111001101001000010 speculators 00000000000100000001001000110011 retailer 00000000000111100100100001110101 Virginia 00100000000000001110110001101000 generate 00000000000111101111101110110010 consensus 00000000000111100011111101100111 Giants 00100000000111101101000011110011 voice 00000000000111101001110000000001 handful 00000000000111111111101101111111 Authority 00100000000111101001110100100111 billions 00000000000111101111011000101111 silver 00000000000011101011101110110000 1979 00000000000000000000000000000000 regulation 00000000000101001110011010100111 exploration 00000000000110101001100001100001 Miami 00100000000110111011111001101000 organizations 00000000000110010000000100100011 Democrat 00100000000000000000011110110101 merchant 00000000000011010000111100110000 machinists 00000000000000011110100110110011 CenTrust 01000000000110001000110100101000 explain 00000000000111111010011110110010 Nevertheless 00100000000111110111101011101000 card 00000000000000000001110001111001 gasoline 00000000000000001001101110110000 fellow 00000000000001010000101000110000 faced 00000000000011010110010000110010 Daniel 00101111111000000100100010011000 surprising 00000000000010000010110110010000 Housing 00100000000000100110010010110000 worker 00000000000000100010111000100001 rivals 00000000000111100001110000110011 Breeden 00101111111010111010000010001000 Nicaragua 00100000000111001111111101101000 beer 00000000000000111011111010110000 violations 00000000000111111101100010100111 intense 00000000000000000000110100010000 plummeted 00000000000011000101000100110010 wonder 00000000000111001011100110110010 doubled 00000000000111001010110000110010 standing 00000000000110111011000001000000 compete 00000000000111101001010110110010 forms 00000000000111101111010100101111 NYSE 01000000000000000000000000000000 race 00000000000111111110000001100111 Turner 00101111111101101100110000001000 Bob 00101111111010000001010000011000 Bridge 00100000000001000000110110100001 King 00101111111100100011100000001000 son 00000000000111111011111110000001 African 00100000000000000101010100110000 street 00000000000000000000100010101000 Arthur 00101111111000000110010100001000 8.50 00000000000000000000000000000000 47 00000000000000000000000000000000 gap 00000000000110101001100000100111 basket 00000000000111111011011000111111 round 00000000000111101011111000111111 candidate 00000000000111101111101010110101 Massachusetts 00100000000101110111110001101000 1999 00000000000000000000000000000000 enter 00000000000111111011011110110010 Mercantile 00100000000000000111111110110000 River 00100000000000000000100010100101 Government 00100000000011100010101000100101 institution 00000000000111001111011001100111 scientific 00000000000001000001100000110000 Donaldson 00100000000100100110110000101000 Brazil 00100000000111101010111101101000 programming 00000000000111101010000100001001 steep 00000000000001000100100000010000 roll 00000000000010110110010110110010 blamed 00000000000001110101010000110010 indicates 00000000001001010011000000010010 inside 00000000000100110000000000001010 genetic 00000000000000111000101010110000 occur 00000000001011011101010110110010 54 00000000000000000000000000000000 dead 00000000000010001001110110010000 marketplace 00000000000111111110111001000101 aware 00000000000111111011110000110010 happens 00000000000001100110001000110010 Toyota 00100000000111101011011000101000 allows 00000000000000001001000000010010 MCI 01000000000000000000000000000000 table 00000000000111001110101101100111 Cleveland 00100000000111011001111001101000 writer 00000000000111101001011110110101 Cincinnati 00100000000110100001111001101000 legislative 00000000000001000000000000110000 Thompson 00101111111110101100001000001000 wholesale 00000000000001010101010000110000 Christopher 00101111111000001010000010011000 broke 00000000000000100001001000110010 Or 00100000000000000000001010000010 crucial 00000000000000111000011000010000 Las 00101111111111101111001101110000 machinery 00000000000011001011111010110000 applications 00000000000110100101010100100011 S&L 01000000000000000000000000000000 insurer 00000000000111011111011001100111 Detroit 00100000000111001001111001101000 genes 00000000000110111101110101100011 Mesa 00100000000110101100110100101000 B 00100000000000000000000000000000 Tom 00100000011000000100000000011000 Barney 00101111111011010011000101001000 downward 00000000000000001111010001000000 English 00100000000000001100111100100001 places 00000000000111101111000010100011 Seoul 00100000000010111111111001101000 2.2 00000000000000000000000000000000 mining 00000000000000000011011010110000 Social 00100000000000010101000000110000 deficit-reduction 00000000000000000000000000000000 begins 00000000000000101010001000110010 Thomson 00101111111111110101101000101000 remarks 00000000000111111110101000100011 paintings 00000000000001101101110101100011 Brooks 00101111111100101100000000001000 hoped 00000000000110111011101000110010 Equipment 00100000000101100000001001001001 requiring 00000000000110010000000000001010 bulk 00000000000111100100111000001111 reading 00000000000111101110110001000000 0.2 00000000000000000000000000000000 wave 00000000000111110111101000111111 Hall 00100000001100100100100000001000 shortly 00000000000100110000010001110010 downturn 00000000000111010111101010100111 P. 00101111111011000011101011011000 buy-back 00000000000000000000000000000000 Dutch 00100000000000010010100100110000 earn 00000000000101111111001110110010 closer 00000000000000100000111000110010 600 00000000000000000000000000000000 Perhaps 00100000000111111101000001110010 Companies 00100000000110100100100011110011 coal 00000000000001000100011010110000 rich 00000000000111001010011010010000 announce 00000000000111111101011110110010 trends 00000000000111101100100100100111 Asian 00100000000000000101000100110000 broader 00000000000000011000001111000000 sustained 00000000000000000010111001000000 send 00000000000010111110101110110010 after-tax 00000000000000000000000000000000 unemployment 00000000000010100001011100000111 dealing 00000000000111101001100000110010 goals 00000000000111110100111100100011 Baltimore 00100000000111011011111001101000 conducted 00000000010111001100010000110010 Do 00100000000111111111011100010010 blood 00000000000000000000010000100001 52 00000000000000000000000000000000 title 00000000000111110110100101100111 freedom 00000000000111011111110100100111 indication 00000000000111111110111110101111 bet 00000000000111111110011010110111 priority 00000000000111101010111010110101 franchise 00000000000000011000100000100001 stable 00000000000001100011100000010000 fast-food 00000000000000000000000000000000 Section 00100000000111001011100001000111 Says 00100000000111111111111111000010 contend 00000000000110111001100110110010 projections 00000000000100100101010000100011 Environmental 00100000000001000101000000110000 Options 00100000000110101110001111100011 developer 00000000000011100011110000110101 Darman 00101111111100100010000010001000 purpose 00000000000111101111010000001111 toy 00000000000000010011111010110000 unsecured 00000000000000000011100110110000 replaced 00000000010011010100010000110010 Maxwell 00101111111100110101110000001000 Composite 00100000000111111111111101110000 recovered 00000000000011100101000100110010 surprise 00000000000110101111101010110111 broken 00000000000110110010110000110010 submitted 00000000001001100000010000110010 6.5 00000000000000000000000000000000 appropriate 00000000000000000000101110010000 memory 00000000000000010100010000100001 linked 00000000000011001100110000110010 exceed 00000000000111100011001110110010 subsidiaries 00000000000111101111110000001001 expire 00000000000011011101010110110010 Products 00100000000000000000000011001001 electric 00000000000000001110010001001000 departure 00000000000111011111110001100111 Henry 00101111111000001000000010011000 respond 00000000000111110111010110110010 considerable 00000000000000000010000000010000 readers 00000000000111110111110000110011 Mason 00101111111000001000001010001000 Phoenix 00100000000110111111101001101000 FCC 01000000000000000000000000000000 hoping 00000000000110101100110000110010 Banco 00101111111111001100101000101000 husband 00000000000111111111011110000001 slump 00000000000111110111101010100111 Company 00100000000111101111111000000101 essentially 00000000001001000000001001110010 introduce 00000000000100111111101110110010 Much 00100000000111101011110001110010 Ill. 00100000000000000000000000000000 assembly 00000000000000000000000001111001 guy 00000000000111101010110010110101 meant 00000000000011101100110000110010 filings 00000000000111101111000011110101 Wells 00101111111010101100010000001000 schedule 00000000000111111110011010100111 mergers 00000000000111101110000010100111 Fla. 00100000000000000000000000000000 divided 00000000000010110010110000110010 slower 00000000000000101000001111000000 Nixon 00101111111000001010100110001000 delivered 00000000001111100000010000110010 interest-rate 00000000000000000000000000000000 sluggish 00000000000000001011100000010000 2.4 00000000000000000000000000000000 desire 00000000000111111001111100100111 records 00000000000010010110001000100011 Your 00100000000000000000010100000100 driving 00000000000111001100100001000000 video 00000000000000001000001010110000 sued 00000001100011000101010000110010 56 00000000000000000000000000000000 deep 00000000000000000110000000010000 renewed 00000000000000010101010001000000 BellSouth 01000000000111001111011100101000 deposit 00000000000000000000001110100001 covering 00000000010100010000000000001010 middle 00000000000101111111100011010000 seeing 00000000000111111001000101000000 narrow 00000000000000000101110110110010 grand 00000000000000000000010110110000 competing 00000000000000010010101001000000 planes 00000000000110111000101001100011 trip 00000000000110111111001011100111 Integrated 00100000000110011001101010110000 restaurants 00000000000111101111110001100011 Royal 00100000000010000001111000101000 importance 00000000000111101100111000001111 line-item 00000000000000000000000000000000 Hanover 00100000000011111001010001001000 charging 00000000000011010101111010000010 allegedly 00000000000010000001001001110010 pilot 00000000000000000011111000100001 acknowledged 00000000000111110011110111000010 host 00000000000111111111011100111111 payable 00000000000111011100010100110010 59 00000000000000000000000000000000 cells 00000000000111101011110110001001 citizens 00000000000111111111100000110011 El 00101111111011011111001101110000 enforcement 00000000000000000000010011100001 Witter 00101111111011100000000101001000 scale 00000000000111110011011001000111 intent 00000000000111111111110100100111 rape 00000000001001100101110010100111 Resolution 00100000000111100100110011100111 abortions 00000000000101101111010100000011 involve 00000000000000010001101110110010 guaranteed 00000000000010100001101001000000 Gary 00101111111000000000010000011000 750 00000000000000000000000000000000 arrangement 00000000000111111100111000100111 principle 00000000000111111110111101010111 Northeast 00100000000111111010001110101000 sufficient 00000000000000100110010001110010 fly 00000000000001011101010110110010 D.C. 01000000000000000000000000000000 Kodak 00100000000100110000000001001000 behavior 00000000000111101110101001100111 Wright 00101111111100001000001010001000 easing 00000000000101001111010001000000 appreciation 00000000000110100110111001100111 argument 00000000000111111011111001100111 relative 00000000000001011000111000110010 viewers 00000000000011100000111000110011 cast 00000000000110001010010110110010 plenty 00000000000111101100111000101111 sit 00000000000111111011010110110010 authorized 00000000000100101000111001000000 KKR 01000000000000000000000000000000 financially 00000000000110000000000001110010 Without 00100000000000111000000000001010 sensitive 00000000000000100100010010010000 Campbell 00101111111100101111001000001000 draw 00000000000000111110101110110010 watched 00000000000000101000010000110010 Organization 00100000000111101111011001100111 Corporate 00100000000000000000010000110000 130 00000000000000000000000000000000 Skinner 00101111111101100110010010001000 deadline 00000000000111101100101111100111 A$ 00100000000000000000000000000000 conduct 00000000000111100111110110110010 purposes 00000000000110111011101110100011 apparent 00000000000000001010110100010000 negotiated 00000000000011101100010000110010 Berlin 00100000000000001101000010101000 metal 00000000000000110100011010110000 achieved 00000000001110010010110000110010 creative 00000000000001001010000000110000 eased 00000000000000001101000100110010 95 00000000000000000000000000000000 successor 00000000000111111111001011100111 farm 00000000000000000111010000110000 Pont 00101111111110001100111110000010 La 00101111111111111001001101110000 Italian 00100000000000100010100100110000 maybe 00000000000111011101000001110010 handled 00000000000000001100010000110010 responded 00000000000101111011101000110010 Minneapolis 00100000000111111011111001101000 Carl 00101111111000000000101010011000 presented 00000000000001100000010000110010 testing 00000000000001000010110001000000 Fujitsu 00100000000110000111011100101000 efficient 00000000000000001100001110010000 squeeze 00000000000111100011001010110111 originally 00000000000000000101001001110010 correct 00000000000111000101110110110010 NEC 01000000000000000000000000000000 Hooker 00100000000111111000111100101000 Star 00100000000000000010100100100001 Wolf 00101111111000111011000010001000 catch 00000000000011110110010110110010 encouraged 00000000000101010101110000110010 stated 00000000000000000101110111000010 stood 00000000000001001000001000110010 secured 00000000000000001011100110110000 Holding 00100000000000010000000011100101 Money 00100000000111101110010100100111 entirely 00000000000001000000000001110010 educational 00000000000000010100000000110000 donations 00000000000111100110111100000011 experienced 00000000010011101100010000110010 imposed 00000001000011001100010000110010 optimistic 00000000000110000111110000110010 fee 00000000000111101101100011000111 arm 00000000000111111011110000110101 Du 00101111111001110011110101001000 shut 00000000000110111010010110110010 Acquisition 00100000000111101111110001001111 operators 00000000000111011110010000110011 defensive 00000000000000100011000000010000 starts 00000000000001011010001000110010 Lewis 00101111111100000001100100001000 selected 00000000000000000101101001000000 packaging 00000000001011001011111010110000 resolve 00000000000111011111110110110010 cycle 00000000000011010011001001100111 ranging 00000000000000010101100100110010 Rally 00100000000111101110101100110111 afford 00000000000111111001000110110010 sheet 00000000000001000000100110111001 2009 00000000000000000000000000000000 insists 00000000000111000111010111000010 promotion 00000000000111101111001001100001 consumption 00000000000111101111000100000111 defend 00000000000110101111111110110010 weather 00000000000111101111000001111001 Scott 00101111111010000001000100001000 joining 00000000000111111101101101000000 Interstate 00100000000001000001100001101000 Webster 00101111111101101011001000001000 Estate 00100000000100010000001100011101 rapid 00000000000000010000100000010000 definitive 00000000000000010001001100010000 Art 00100000000111101010111100100001 alliance 00000000000111101011011001100111 tight 00000000000001001011100000010000 sterling 00000000000110101101101100101000 succeeded 00000001000110001100010000110010 Fifth 00100000000100100111100011010000 exclusive 00000000000000010101010100010000 Little 00100000000000000000110000010000 aggressively 00000000000010100000010001110010 allies 00000000000111100110110000110011 Gen. 00100000000000000000000000000000 broadcast 00000000000000010100001010110000 regime 00000000000110110101101001100111 attitude 00000000000101111011111001100111 applied 00000000000111100000110000110010 location 00000000000111011101001001100111 Paramount 00100000000111110111111000101000 bear 00000000000111111100110000101000 Daiwa 00100000000000010100111000101000 Sam 00100000001001000001010100001000 Vegas 00101111111000010100110000011101 reluctant 00000000000110110100011000110010 license 00000000000111101011111010110111 participate 00000000000101111001010110110010 Foods 00100000000000001110100000101001 analysis 00000000000111100110111001100111 nationwide 00000000000000000001000001000111 forward 00000000000000010011111100110010 1974 00000000000000000000000000000000 program-trading 00000000000000000000000000000000 poverty 00000000000111101011011100000111 Lilly 00101111111110000011111010101000 copies 00000000000000000010010100101111 repair 00000000000000001011011110110111 Icahn 00101111111100101101010010001000 ship 00000000000111101101000110110111 Care 00100000000010000110010110111001 indicating 00000000000111010111111010000010 disappointed 00000000000101110101110000110010 Bonds 00100000000111101101100010000111 Indian 00100000000000001011010100110000 posts 00000000000111110110000001100011 carrying 00000000000000000000100101000000 fill 00000000000110111110101110110010 97 00000000000000000000000000000000 FHA 01000000000000000000000000000000 hardly 00000001100001000000001001110010 square 00000000000000010010010101010000 Is 00100000000000000000001000010010 Her 00100000000000000000001100000100 Yeargin 00100000000000000000000000000000 waste 00000000000111101111001010100001 convicted 00000000000111011011110000110010 canceled 00000000000010010100010000110010 Gold 00100000000111110100101110110000 loyalty 00000000000101101111110100100111 Connecticut 00100000000111010111110001101000 feeling 00000000000111110101110101100111 fashion 00000000000011100100111100100001 supplier 00000000000111101100100001110101 acts 00000000000111100101001000100011 holder 00000000000111100000111100010000 oppose 00000000000100111111111110110010 assumption 00000000000111111110010000001111 72 00000000000000000000000000000000 Howard 00101111111000001010010100001000 promises 00000000000111100010101000110010 20,000 00000000000000000000000000000000 winning 00000000000011001111110001000000 manage 00000000000111111010001110110010 Paper 00100000000110100100111010110000 apart 00000000000000011001111100110010 compares 00000000000111100111100000110010 III 01000000000000000000000000000000 Ferranti 00100000000000000111010100101000 burden 00000000000111111110101110001111 suddenly 00000000000100000000001001110010 engaged 00000000000110111110010000110010 employers 00000000000111111110111000110011 attempting 00000000000111111010011000110010 bullish 00000000000000000001101010010000 prefer 00000000000110111011000110110010 Steven 00101111111000000010010110011000 proved 00000000001001111100010000110010 Allen 00101111111000000100000100001000 ministry 00000000000000000011100110010101 learn 00000000000110101011100110110010 associate 00000000000000000110001001110000 engineers 00000000000000010110000000110011 evening 00000000000000001000110000010111 prospect 00000000000111111111010000001111 350 00000000000000000000000000000000 potentially 00000000001000000000000001110010 recapitalization 00000000000000000010000111001111 aside 00000000000000001001111100110010 plane 00000000000111101111001001000101 Information 00100000000110001011100010111001 compensation 00000000000101000010001000111001 swap 00000000000000000010010101110111 Third 00100000000000000011101011010000 shops 00000000000011101111110001100011 decades 00000000000000010100010011111011 Harvard 00100000000010011111111000101000 depressed 00000000000000000011101001000000 concentrate 00000000000101110110110110110010 pounds 00000000000000000000100100001011 expecting 00000000000111010001000101000000 kill 00000000000110011111111110110010 exceeded 00000000000001000001010000110010 nobody 00000000000100001010010001110010 4.6 00000000000000000000000000000000 weapons 00000000000111101110000110001001 Bull 00100000000111111110111110110000 recover 00000000000011101111001110110010 convert 00000000000111101010001110110010 semiconductor 00000000000000000101011010110000 dealings 00000000000111011100010000100111 search 00000000000111111111101100111001 device 00000000000111101100000011100111 approximately 00000000000000010111000001110010 OPEC 01000000000111101010011000101000 mayor 00000000000111111110010000110101 council 00000000000000000101010001010101 hits 00000000001101000111000000010010 Cross 00100000000110100010110100100001 ships 00000000000110111110000110001001 backing 00000000000111111011010001000000 rebounded 00000000000001100101000100110010 Telegraph 00101111111111101111110001001000 high-risk 00000000000000000000000000000000 indicators 00000000000111101100101010100011 borrowed 00000000000001000100010000110010 suffer 00000000000110110011110110110010 Steinhardt 00101111111000001101001000001000 3.1 00000000000000000000000000000000 calculated 00000000000111110001110000110010 Lufkin 00101111111011011011101001001000 testimony 00000000000111101101101000100011 remove 00000000000101111111111110110010 Law 00100000000001000000000010011001 Taiwan 00100000000111011110111101101000 partnerships 00000000000110101110000011110101 comfortable 00000000000001100111110000110010 uncertain 00000000000111100010110110010000 WCRS 01000000000000000000000000000000 manages 00000000000001001101000000010010 award 00000000000111101110101000110111 improvements 00000000000111111111011000100011 doctors 00000000000110000010111000110011 cheaper 00000000000001001101001111000000 peak 00000000000110001011011010100111 engine 00000000000001000010001010110000 Dennis 00101111111000001000100010011000 pulp 00000000001000000100011010110000 choose 00000000000110110011001110110010 credibility 00000000000111101111110100100111 consideration 00000000000111101110011010100111 classes 00000000000000000100100100101111 unions 00000000000111101111100110110011 Gonzalez 00101111111110010100111010001000 CIA 01000000000000000000000000000000 Blue 00100000000000000110001000110000 fined 00000000010011000000010000110010 professionals 00000000000000011111000010110011 Merieux 00101111111100001010100110010101 89 00000000000000000000000000000000 permission 00000000000100100101000100100111 factories 00000000000111101110110001100011 activists 00000000000100000001000010110011 dramatic 00000000000001000000000000010000 completely 00000000000000100000000001110010 participation 00000000000111111010001110100111 Li 00101111111100010000000100001000 duties 00000000000111110110101000100011 expert 00000000000110001111100000010101 Michigan 00100000000110110111110001101000 bureau 00000000000000000000010001010101 focused 00000000000001000000100000110010 cosmetics 00000000000000001011111010110000 cell 00000000000000011001110000100001 raw 00000000000111101010101010110000 LTV 01000000000000000000000000000000 capped 00000000000111110100010100110010 democratic 00000000000000000000011000110000 deaths 00000000000111101111000001100011 Germans 00100000000000000111000010101000 Maine 00100000000111011111110001101000 premiums 00000000000111101101000100000011 garden 00000000000000000011111100100001 difficulty 00000000000100101110110100100111 mainframe 00000000000000011000010000110000 character 00000000000111111111110000000001 Viacom 00100000000111101001010100101000 abandoned 00000000001110010100010000110010 Denver 00100000000111101001111001101000 knew 00000000000111001100110111000010 Beach 00100000000001000011000010100101 Orange 00100000000100000010011010101000 Jim 00101111111000000000100100011000 pieces 00000000000111101111100100101111 Roman 00100000000110101011011010101000 poll 00000000000000001000100000110111 Ortega 00101111111101100000110010001000 noting 00000000000111110111111010000010 53 00000000000000000000000000000000 grants 00000000000000000001110100100011 steelmakers 00000000000111101111000001110011 onto 00000000000000001100000000001010 1990s 00000000000000000000000000000000 eager 00000000000111101000011000110010 urging 00000000000001000001110101000000 beat 00000000000111000110101110110010 110 00000000000000000000000000000000 fit 00000000000110111110010110110010 Kennedy 00101111111100100000011010001000 permit 00000000000011111011101110110010 supporting 00000000000001111011011101000000 football 00000000000000000001001100100001 64 00000000000000000000000000000000 registered 00000000000001101100010000110010 broadcasting 00000000000010010010010010110000 three-year 00000000000000000000000000000000 Press 00100000000111000100001011000001 totally 00000000000000111000000001110010 blue 00000000000000000110001000110000 shape 00000000000111101010110010110111 distributed 00000000000011000000110000110010 imported 00000000000011100001101001000000 typical 00000000000000101000011000010000 writing 00000000000111110110100001000000 body 00000000000111100110101001100111 southern 00000000000000000000110110101000 reinsurance 00000000000000010000010010110000 timing 00000000000111011001111000001111 Pa. 00100000000000000000000000000000 motion 00000000000111011101001011100111 recommended 00000000000000101101110111000010 owed 00000000000001011000110000110010 discussing 00000000000111001110010101000000 pattern 00000000000111101110100101100111 1.9 00000000000000000000000000000000 leverage 00000000000110101111110100100111 controversy 00000000000111101010111010100111 tone 00000000000110111101111101100111 Roger 00101111111000001010010110011000 stability 00000000000111100111111010100111 obvious 00000000000000000100001110010000 Newport 00100000000110101110011010101000 NCNB 01000000000000000000000000000000 IRA 01000000000000000011111100001000 argues 00000000000111111011010111000010 papers 00000000000110100110001000100011 Corry 00100000000000000000000000000000 succeeding 00001111111111110110011010000010 comparison 00000000000111111111001011010111 Pictures 00100000000000000000000001101001 robust 00000000000000110011100000010000 discontinued 00000000000000010100010001000000 solid 00000000000000100011100000010000 arms 00000000000000000000001010100001 thinking 00000000000011111111110000110010 Engelken 00100000000000000000000000000000 retire 00000000000110111101010110110010 Maybe 00100000000111011101000001110010 weight 00000000000100001111110100100111 Four 00100000000111101111011001010000 struck 00000000001111001001001000110010 eyes 00000000000111111111101101100011 excluding 00000000000111011001101001000010 collateral 00000000000111111100110100100111 predicting 00000000000111111110110101000000 leads 00000000110000000011000000010010 Kenneth 00101111111000001010000110011000 bankruptcy-law 00000000000000000000000000000000 turnover 00000000000111101110001110000111 Herald 00100000000001110011010001001000 upward 00000000000000000011010001000000 CNN 01000000000000000000000000000000 bidders 00000000000111101101011001110011 anticipation 00000000000111111110111001101111 statistics 00000000000000000000100001111001 wheat 00000000000010100011101110110000 Avenue 00100000000000000000010010100101 pointed 00000000000111000001001000110010 projected 00000000000000000101001001000000 lowest 00000000000000001010000011010000 link 00000000000111111110001010110111 Ronald 00101111111000000110110100011000 answers 00000000000111110111001000100011 Mazda 00100000000111111011011000101000 exist 00000000001001011101010110110010 winter 00000000000100101001010000010111 Nicholas 00101111111000001000001100011000 Parliament 00100000000111101101101101101000 concrete 00000000000000101011000000010000 Remic 00100000000001011000000110110000 turnaround 00000000000110111101101010100111 glass 00000000000000000011111010110000 Kemper 00100000000111100011000100101000 Delmed 00100000000000000000000000000000 developers 00000000000111000110010000110011 Profit 00100000000111101111110000000111 ride 00000000000111110111001010110111 emphasis 00000000000111111110100100100111 6.9 00000000000000000000000000000000 Panamanian 00100000000001000000010100110000 longtime 00000000000000000100101001110000 Gramm-Rudman 01000000000000000000000000000000 monitor 00000000000011111111110110110010 novel 00000000000111101110101000100001 referring 00000000000111111101111000110010 Disney 00101111111000001100000001001000 hospitals 00000000000111111010110001100011 102 00000000000000000000000000000000 67 00000000000000000000000000000000 Cohen 00101111111100101101100010001000 Philippines 00100000000111110111111110110011 Neither 00100000000000010000011011000000 125 00000000000000000000000000000000 slowed 00000000000010011010110000110010 69 00000000000000000000000000000000 Currently 00100000000000111000001001110010 category 00000000000111101101001101100111 author 00000000000111111111010000110101 barely 00000000001011100000001001110010 resolved 00000000000100010010110000110010 telling 00000000000111000000001101000000 Warren 00101111111000000001000100001000 peace 00000000000000000000100111111001 promote 00000000000110111111111110110010 otherwise 00000010000000000000001001110010 storage 00000000000000000010100001100001 outcome 00000000000111111001111000001111 probe 00000000000111101111110001100111 discussed 00000000000100010100010000110010 Technologies 00100000000000000010001011101001 8.5 00000000000000000000000000000000 causes 00000000000110100111000000010010 Nomura 00100000000001000100111000101000 250,000 00000000000000000000000000000000 Nabisco 00100000000111110011000001001000 teams 00000000000010101001110101100011 sanctions 00000000000110100011110000100011 deny 00000000000110010100100110110010 contractor 00000000000000010000101010110101 labor-management 00000000000000000000000000000000 slight 00000000000000100100100000010000 aides 00000000000000000000010110110101 Westinghouse 00100000000111111100100100101000 indications 00000000000111111101011110101111 Capitol 00101111111111101011101000101000 Va. 00100000000000000000000000000000 younger 00000000000000010010101000110000 everybody 00000000000010001010010001110010 Fees 00100000000111101011100100000011 cleared 00000000000011111001010000110010 helps 00000000000000001011010000110010 tentatively 00000000000001100001001001110010 fail 00000000000111000111010110110010 wild 00000000000000000100011010010000 copy 00000000000111111101111000111111 spirits 00000000000011011011111010110000 mature 00000000000111100101110110110010 Hunt 00101111111110001100000000001000 breakers 00000000000111111010011111010101 Marine 00100000000101000000011010110000 Imperial 00100000000111100001111000101000 1972 00000000000000000000000000000000 happy 00000000000111000111110000110010 modestly 00000000000010001000010001110010 Beverly 00100000000111110010011010101000 extensive 00000000000000000101010100010000 merge 00000000000111101011011110110010 disclosure 00000000000111101101011101001111 club 00000000000000000010010100000001 unfair 00000000000110101001000110010000 straight 00000000000000001000100001010000 fired 00000000000001010100010000110010 favorite 00000000000000000111110000000001 Jeffrey 00101111111000000010000110011000 busy 00000000000000010100011010010000 Northwest 00100000000111100111110110101000 packages 00000000000110111111110100100011 raises 00000100000010000011000000010010 Zealand 00100000000000110001011110000010 2019 00000000000000000000000000000000 vulnerable 00000000000011000110011110010000 Sterling 00100000000110101101101100101000 Edison 00100000000000000011010001001000 detailed 00000000000000001011000000010000 Bankruptcy 00100000000000000000010111100101 attempts 00000000000111111011011100100111 insisted 00000000000110011111110111000010 Vice 00101111110001001000000001110000 Within 00100000000000011101000000001010 Tennessee 00100000000110101110110001101000 casino 00000000000000010101111010110000 dropping 00000000000111111000100101000000 developments 00000000000111100111101010100011 Golden 00100000000101000010001000110000 false 00000000000000000001000110010000 restore 00000000000011010010111110110010 Aetna 00100000000000000101111000101000 arguments 00000000000111001111101000100011 Squibb 00100000000011111100111100101000 supporters 00000000000100000010000010110011 hundred 00000000000110101110000001010000 StatesWest 01000000000000000000000000000000 indictment 00000000000111100100100001100111 700 00000000000000000000000000000000 church 00000000000111101011110001000001 eliminated 00000000000000010100010000110010 reaching 00000000000111101100100101000000 degree 00000000000111110111011001000111 scheme 00000000000111101100100011100111 penalties 00000000000111100111110000100011 findings 00000000000111100110101000100011 charity 00000000000111110000100000100001 receiving 00000000000001000100100101000000 departments 00000000000100110001110100100011 Director 00100000000111111111111000110101 Cos. 00100000000000000000000000000000 tiny 00000000000000000101010000010000 barrel 00000000000111111111111001011111 separately 00001111111111111111111011101000 Besides 00100000000111101001101001000010 advised 00000000000010001101010000110010 Aerospace 00100000000011011111011010110000 4.7 00000000000000000000000000000000 Third-quarter 00100000000000000000000000000000 stuff 00000000000111100101111101100111 vary 00000000000000110000010110110010 cellular 00000000000000111101011010110000 Free 00100000000000000010101001000000 therefore 00000000000011101101000001110010 loan-loss 00000000000000000000000000000000 Connaught 00100000000001011110111100101000 Coke 00100000000010011110110100101000 2.7 00000000000000000000000000000000 struggling 00000000000111110110111000110010 districts 00000000000101100010000100100011 Old 00100000000111111111001001100010 3.7 00000000000000000000000000000000 revive 00000000000111111010111110110010 Iowa 00100000000111111111110001101000 associates 00000000000111101111101011101001 productivity 00000000000000001101011100000111 requested 00000000001011101001010000110010 obtained 00000000001010001001010000110010 Reynolds 00101111111100010111000001001000 Van 00101111111110111010001000110000 second-largest 00000000000000000000000000000000 survive 00000000000101111101010110110010 whites 00000000000111100000111000110011 incentive 00000000000000100111101100100111 brain 00000000000000111001110000100001 dismissed 00000000100001010100010000110010 mainframes 00000000000111111111111001100011 reality 00000000000111111001110101100111 sending 00000000000111100000001101000000 presidential 00000000000000000000111000110000 Who 00100000000000000000101001110010 opponents 00000000000111111010000010110011 aspects 00000000000111111111110100101111 Commodity 00100000000111101111111110110000 3.3 00000000000000000000000000000000 Mississippi 00100000000111011100110001101000 gyrations 00000000000110101111111010100111 subscribers 00000000000000001000000000110011 Roberts 00101111111100101010111000001000 3.8 00000000000000000000000000000000 weakening 00000000000001000111010001000000 Tax 00100000000000000000000001110001 2.6 00000000000000000000000000000000 Gandhi 00101111111110110000101010001000 guide 00000000000111110001111010110111 NASA 01000000000000000000000000000000 ticket 00000000000110011111100000100001 Unlike 00100000000110111001101001000010 Attorney 00100000000000001110110000110101 lots 00000000000111101001111000101111 2.8 00000000000000000000000000000000 Program 00100000000111101111100011100111 screen 00000000000111111001011000000001 vast 00000000000010010000100000010000 failing 00000000000111011010111000110010 Rey 00101111111100000110001010001000 asbestos 00000000000000000010010000100001 Allianz 00100000000000000000000000000000 140 00000000000000000000000000000000 Bancorp 00100000000000001011010001001000 expires 00000000001001100110001000110010 versions 00000000000111100101000100101111 display 00000000000111100010001010110111 wish 00000000000011011110000110110010 assumed 00000000000111010101110111000010 segments 00000000000111111100000100101111 190-point 00000000000000000000000000000000 veteran 00000000000111100010011100111111 rare 00000000000001000000011010010000 Senator 00100000000011001001001100001000 61 00000000000000000000000000000000 flexibility 00000000000111001111110100100111 rebels 00000000000101101100101110110011 realized 00000000000111110000110111000010 Lawyers 00100000000000000111000010110011 asset-backed 00000000000000000000000000000000 biotechnology 00000000000000010011011010110000 sentiment 00000000000111100110111010100111 technique 00000000000111100101000011100111 Nigel 00101111111011101010001010011000 engines 00000000000111110100101001100011 Tiger 00100000000010000100111000101000 respectively 00000000000111111111010011101000 Constitution 00100000000111101101111001000101 specifically 00000001000100000000001001110010 Funding 00100000000000000000100000111001 sat 00000000001110011110001000110010 foreign-exchange 00000000000000000000000000000000 treaty 00000000000111111010100011100111 danger 00000000000111111011110101100111 start-up 00000000000000000000000000000000 fueled 00000000000010100111010000110010 anyway 00000000000001100100010001110010 underwriter 00000000000000000001101000110101 brother 00000000000111101101111110000001 approached 00000000000010000101010000110010 teachers 00000000000011101100111000110011 sitting 00000000000111000011000001000000 dominated 00000000001111101111010000110010 Brands 00100000000110101110001010101000 complain 00000000000110011001100110110010 repurchase 00000000000000000001010101110111 outlets 00000000000111101000110010101001 violated 00000000000011101001010000110010 lists 00000000010011000111000000010010 counter 00000000000111111011110110110010 experiments 00000000000111001110001000100011 plays 00000000011111000111000000010010 K 00100000000000000000000000000000 greatest 00000000000000000101010011010000 bolster 00000000000101110010111110110010 scores 00000000000111101110100100101111 Mary 00101111111000000110000000011000 Far 00100000000111111101110001110010 ton 00000000000111110111000001000111 economics 00000000000111101110101101100001 subsequent 00000000000000000001101100010000 checks 00000000000111000000001000100011 barriers 00000000000110101011001000100011 stakes 00000000000111110100001110100111 Kansas 00100000000000010000011010101000 surveyed 00000000000100010000010001110010 explains 00000000000111111101011111000010 blow 00000000000111111001111000110111 Giuliani 00101111111001001000001010001000 3.9 00000000000000000000000000000000 Jenrette 00101111111000001011110001001000 permitted 00000000001001011000110000110010 disease 00000000000111111101110010100111 Sullivan 00101111111100101100111000001000 planners 00000000000000000111010110110101 bases 00000000000111100001010110001001 fixed-rate 00000000000000000000000000000000 Mobil 00100000000111101111011100101000 seller 00000000000111111100100101100111 Galileo 00100000000011000011101100101000 incest 00000000000000000000000000000000 Daily 00100000000000001101000101010000 reductions 00000000000111101111110110000011 5.5 00000000000000000000000000000000 71 00000000000000000000000000000000 lift 00000000000100110010010110110010 warrant 00000000000000000011011010110111 interesting 00000000000000000001001110010000 articles 00000000000111100101110101100011 politically 00000000000100000000000001110010 depends 00000000000000001000100000110010 restructure 00000000000111110110001110110010 Barry 00101111111000100101010100001000 Alexander 00101111111100101100000100001000 Upham 00101111111111100001111010101000 Unisys 00100000000101100110111100101000 founded 00000001010011000101010000110010 newsletter 00000000000000000001001101000001 Island 00100000000100000101000010100101 debts 00000000000111111111000111100011 Sports 00100000000001000000001010110000 surrounding 00000000000010010000000000001010 ideas 00000000000111101110100101100011 apparel 00000000000000100011111010110000 preparing 00000000000111100110111000110010 diversified 00000000000000000100101001000000 House-Senate 01000000000000000000000000000000 225 00000000000000000000000000000000 precious 00001111111101010111111110110000 whatever 00000000000000000011101101000010 penalty 00000000000000000011000001100111 steadily 00000000000001001000010001110010 Rouge 00100000000000001101100010100101 psyllium 00000000000001110110110000100001 strategist 00000000000110111101101110110101 Wedtech 00100000000110100011101100101000 appointment 00000000000111110111110001100111 reset 00000000000000001101100110110000 plaintiffs 00000000000111110110100110110011 duty 00000000000110001111110100100111 shall 00000000000000000011010110010010 Malaysia 00100000000111111100111101101000 coalition 00000000000100000101101001100111 Banks 00100000000110101110000001110011 League 00100000000111111111010100000001 WPP 01000000000000000000000000000000 Anderson 00101111111100101111100010001000 Malcolm 00101111111000000100001100011000 adjustable 00000000000111110001010011000111 Colorado 00100000000111010011110001101000 rumored 00000000000111010110111000110010 surprisingly 00000000000111001100000001110010 Akzo 00100000000110100110111100101000 guys 00000000000111101110000100110011 13th 00000000000000000000000000000000 missing 00000000000011011111100001000000 scene 00000000000111111110101101100111 northern 00000000000000100000110110101000 Line 00100000000111101110000000100111 inventory 00000000000000000101011100000111 Midwest 00100000000111101110001110101000 attached 00000000000011000100110000110010 Hahn 00101111111000100100000010001000 Spanish 00100000000001000110100100110000 Mayor 00100000000111111110010000110101 convinced 00000000000111110101110000110010 Steve 00101111111000100010001000011000 traditionally 00000000000001011000001001110010 3.6 00000000000000000000000000000000 judicial 00000000000000100000000000110000 seriously 00000000100000000000010001110010 inquiry 00000000000110111111110001100111 borrow 00000000000100111111001110110010 committees 00000000000000001001000001010101 covers 00000000000001000001000000010010 risky 00000000000110000001010010010000 injunction 00000000000111110110111000100111 Rowe 00101111111011011010011100001000 baby 00000000000010001101101000100001 financed 00000000000001000001110000110010 Boren 00101111111101110000111010001000 5.3 00000000000000000000000000000000 Any 00100000000000000000010100010100 switch 00000000000111111101111000110111 urban 00000000000100000000001000110000 seasonally 00000000000101001111001001110010 load 00000000000010001000010011000111 resolution 00000000000111100100110011100111 hire 00000000010100111111101110110010 necessarily 00000000000010010100001001110010 climb 00000000000111111100011000110111 organized 00000000000010001001101001000000 commodities 00000000000111111101101110110000 involvement 00000000000111111100001110100111 residential 00000000000000001111010000110000 row 00000000000111100111000001000111 achieve 00000000000011111111101110110010 assuming 00000000000111011101111010000010 master 00000000000110110011111000100001 performed 00000000001100010010110000110010 reportedly 00000000000000000110001001110010 secret 00000000000000001001111000010000 state-owned 00000000000000000000000000000000 long-distance 00000000000000000000000000000000 publication 00000000000110101011011010100111 bar 00000000000001000000000110110111 Small 00100000000000001001010000010000 attracted 00000000000001110111010000110010 improving 00000000000111010101010001000000 pays 00000000000110001101000000010010 cleanup 00000000000000000000111101001111 falls 00000000000011101000001000110010 neighborhood 00000000000111101110010000000001 financier 00001111111100001101100000110101 Others 00100000000000000110110010110011 controlling 00000000000001100000011100010000 taxable 00000000000000010000011100010000 admits 00000000000111010111010111000010 poison 00000000000100001100101000101000 studying 00000000000111101100010101000000 printing 00000000000011011011011010110000 clean 00000000000111101111110110110111 partial 00000000000000110000100000010000 produces 00000000000000001101000000010010 Pilson 00100000000000000000000000000000 kids 00000000000111100011111100110011 troops 00000000000101100010100000110011 worries 00000000000111101111011010101111 picked 00000000000111110011001000110010 fleet 00000000000111101110011000100001 businessmen 00000000000110100010011000110011 rallied 00000000000011000001000100110010 merged 00000000000001011010001001000000 FBI 01000000000000000000000000000000 USA 01000000000000000000000000000000 automatic 00000000000000001000101010110000 Seidman 00101111111000101011000010001000 refinery 00000000000111101110000010001001 excessive 00000000000000001001000110010000 well-known 00000000000000000000000000000000 rarely 00000000000100100000001001110010 Samuel 00101111111000001000001010011000 restricted 00000000001000000101101001000000 Jose 00101111111100000010000000011101 bondholders 00000000000111110110111000110011 dangerous 00000000000000010100010010010000 skeptical 00000000000111100111110000110010 Every 00100000000000000001000100010100 alleges 00000000000001111011010111000010 Urban 00100000000100000000001000110000 tells 00000000000101100011000000010010 Containers 00100000000111101101100111001001 Olivetti 00101111111100110111111010101000 4.2 00000000000000000000000000000000 equities 00000000000111101001011010100001 mountain 00000000000000000000110100100001 RATE 01000000000000001110101011000111 450 00000000000000000000000000000000 Society 00100000000111101011001001100111 Limited 00100000000001000000001001000000 curb 00000000000111100010111110110010 stress 00000000000111101110001010110111 pictures 00000000000000000000000001101001 Gov. 00100000000000000000000000000000 LONDON 01000000000111101111011001101000 3,000 00000000000000000000000000000000 MORTGAGE 01000000000000000100000110110000 foreigners 00000000000111011110111000110011 diluted 00000000000000111000010000110010 wages 00000000000111101111100100000011 climate 00000000000111111011101001100111 Ariz. 00100000000000000000000000000000 marked 00000000000001010111010000110010 pool 00000000000111001101100101100111 discipline 00000000000110111010011010100111 kinds 00000000000111111111100100101111 prepare 00000000000111000101001110110010 scenario 00000000000111011001111101100111 Waertsilae 00100000000000000000000000000000 bloc 00000000000101110101000010101000 3.4 00000000000000000000000000000000 retained 00000000100011101100010000110010 mention 00000000011111111111110110110010 negotiate 00000000000111111111011110110010 cards 00000000000111101101110001111001 Wilson 00101111111100100001001000001000 caution 00000000000111101100111010100111 Grenfell 00101111111000000111001001001000 streets 00000000000110111111111000001111 Gamble 00101111111111111011110001001000 withdrawal 00000000000111101110011101001111 count 00000000000111101100001000110111 68 00000000000000000000000000000000 Monieson 00100000000000000000000000000000 signaled 00000000000001000101110111000010 maintained 00000000000101110101110111000010 serving 00000000000011000100100101000000 page 00000000000100000111000001000111 defendant 00000000000111111101101010110101 greatly 00000000000000101000010001110010 famous 00000000000000011010000010010000 1973 00000000000000000000000000000000 7.5 00000000000000000000000000000000 Asked 00100000000111111101010000110010 Roh 00101111111000001000010110001000 stem 00000000000011010011110110110010 boards 00000000000111111010111101100011 liberal 00000000000000010010011000110000 legislators 00000000000000000101010010110011 consent 00000000000011000001000101001111 buys 00000000000001100101000000010010 notice 00000000000111001010011010100111 gotten 00000000000011111010110000110010 protests 00000000000111111010101000100011 reject 00000000011111111011111110110010 Day 00100000000111111111111000010111 requests 00000000000111101110100100011001 Chief 00101111111111111111111001110000 30-day 00000000000000000000000000000000 anybody 00000000000000011010010001110010 theater 00000000000100010001111010110000 Second 00100000000000000000001011010000 Maryland 00100000000111001111110001101000 tools 00000000000110100110011111001001 tracks 00000000001111101111000000010010 farmer 00000000000100100000110010110101 Texaco 00100000000111101101101100101000 breaking 00000000000111111100100001000000 1995 00000000000000000000000000000000 milk 00000000001100001011111010110000 zero-coupon 00000000000000000000000000000000 Interest 00100000000000000000000110100111 Sciences 00100000000000000010100001001001 black-and-white 00000000000000000000000000000000 Lebanon 00100000000111111101011101101000 pollution 00000000000111011101000011100001 justify 00000000000011101011111110110010 Glass 00100000000000000011111010110000 petroleum 00000000000000000111001010101000 governor 00000000000011101110010000110101 adjustments 00000000000111100001011000100011 wine 00000000000100010011111010110000 quotas 00000000000111100100100100100111 Taylor 00101111111100101100001000001000 located 00000000000001001100010000110010 transferred 00000000001011011000110000110010 threatening 00000000000110111010111000110010 pull 00000000000011011110101110110010 EDT 01000000000000000000000000000000 Earnings 00100000000011001010100000000111 agrees 00000000000111100111010111000010 wire 00000000000101001110000000100001 setback 00000000000111111101111010110101 investigating 00000000000111110100010101000000 consistently 00000000001000000001001001110010 protected 00000000000011010001110000110010 conceded 00000000000111001111110111000010 Contras 00100000000111111111101110110011 Deutsche 00100000000010010001111000101000 contained 00000000000110000001010000110010 lobbying 00000000000001000000110001000000 Total 00100000000000000001111100010000 respondents 00000000000000000000000110110011 discounting 00000000000111111111010001000000 assist 00000000000111100001111110110010 Estimated 00100000000111100011100111000010 emerged 00000000000000111110001000110010 airport 00000000000010101010111010000001 economies 00000000000111101101101101100011 plea 00000000000110100111001011100111 Stein 00101111111101101011000010001000 periods 00000000000111100101101001000111 lies 00000000001000100110001000110010 benefited 00000000000111111001100100110010 feared 00000000000101100111110111000010 persuade 00000000000100011111111110110010 Maynard 00101111111101101001000100001000 momentum 00000000000111100110110100100111 Lines 00100000000111100110000000100111 killing 00000000000111101110100001110111 eggs 00000000001010101111110101100011 academic 00000000000000000100000000110000 slowly 00000010100000000000010001110010 sweeping 00000000000100010001000000010000 pleased 00000000000111101101110000110010 pill 00000000000011010011010001001000 Justin 00100000000000000110111000011000 walls 00000000000111100111010101100011 flying 00000000001001001110100001000000 bikes 00000000000011001111101001100011 Procter 00101111111111110111111010101000 valuable 00000000000000000000010010010000 Bloomingdale 00100000000110111101111110101000 conglomerate 00000000000111101001101111110101 competitor 00000000000111101110111010110101 clearing 00000000000000010000000010110000 interviewed 00000000110011000000010000110010 Harry 00101111111000010000010000011000 lire 00000000000000000001100000001011 Polish 00100000000001111000010100110000 Quotron 00100000000001001100100100101000 violation 00000000000111111111111001101111 sex 00000000000000111011110000100001 Agriculture 00100000000111111011110110110000 maturing 00000000000000001000010100110010 lackluster 00000000000000001001100000010000 park 00000000000100000001000010100101 73 00000000000000000000000000000000 concessions 00000000000111101111011100000011 electrical 00000000000000100000101010110000 Electronics 00100000000000000111011010110000 specified 00000000000101010000011100010000 hefty 00000000000000100000100000010000 Posted 00100000000000010001010000110010 depending 00000000000111111000100000110010 recognized 00000000001101000010110000110010 quotations 00000000000111111010101111100011 highs 00000000000000000010111001000111 RATES 01000000000111111111101101000011 hardware 00000000000011101000111010110000 Sons 00101111111111111111110001001000 resort 00000000000111101001011000000001 impose 00000000000001011111101110110010 drew 00000000000001001011000000010010 PAPER 01000000000110100100111010110000 COMMERCIAL 01000000000001000011010000110000 Merksamer 00100000000000000000000000000000 method 00000000000111111110100101100111 Marcos 00101111111100001010100000001000 PRIME 01001111111111101100010110110000 carefully 00000000001000100000010001110010 racketeering 00000000000010100001000000110000 Hamilton 00101111111100110111001000001000 mart 00000000000111000111000001001000 rescue 00000000000000001000011110110111 Pinkerton 00100000000101110101111110101000 responsibilities 00000000000111111111011100100011 LBO 01000000000000000000000000000000 leasing 00000000000000000100000001100001 happening 00000000000111110001110110010000 funded 00000000010001000001110000110010 asks 00000000000111001111010111000010 audit 00000000000000101110111001100111 indexes 00000000000000001000101001110011 Intelligence 00100000000110110101000010110000 facts 00000000000111101111110101100011 graphics 00000000000000001010010010110000 ultimate 00000000000000010000010011010000 Honda 00100000000111110011011000101000 shortage 00000000000110110111101010100111 Dynamics 00100000000000010110010001001000 downtown 00000000000000101000001000110000 sectors 00000000000111101101000010100011 Saudi 00100000000111111000101101110000 document 00000000000111101010110011100111 abuse 00000000000111110100100010100111 receipts 00000000000100001000001100000011 2.1 00000000000000000000000000000000 Overall 00100000000000000000000100010000 star 00000000000000000010100100100001 lease 00000000000000000001000110110111 emerging 00000000000111111111100001000000 passenger 00000000000000000001010101010000 Showtime 00100000000111011000101101101000 adjustment 00000000000111101001001000111001 Exchequer 00101111111100010101000110010101 doctor 00000000000111101101110010110101 bearish 00000000000000000010101010010000 edge 00000000000101101110111001100111 1976 00000000000000000000000000000000 confusion 00000000000111111100111010100111 suggesting 00000000000111011111111010000010 Education 00100000000111101111101101100001 LeBow 01001111111100001000100010001000 Bartlett 00101111111110011100001000001000 extension 00000000000111101110111001100111 sole 00000000000000100000010011010000 absolutely 00000000000110100000000001110010 Ralph 00101111111000000001100010011000 notion 00000000000111111111110000001111 Missouri 00100000000110001111110001101000 theme 00000000000011111101101001100111 print 00000000000111101000110110110111 recommendations 00000000000111101010101000100011 CBOE 01000000000000000000000000000000 Carnival 00100000000111101000111010101000 crowd 00000000000111111101101101100111 Oklahoma 00100000000001001000011010101000 replacement 00000000000001000000100000100001 2000 00000000000000000000000000000000 Proceeds 00100000000111101110000100100111 structures 00000000000111000000110100100011 solution 00000000000111111111111101100111 Results 00100000000111101111100000100011 driven 00000000011111110010110000110010 essential 00000000000001000110001110010000 Fox 00100000000100111010010000001000 boosting 00000000000111101001011101000000 Appropriations 00100000000011000001001101010001 Investments 00100000000111101111100001101001 metropolitan 00000000000000001000001000110000 flag 00000000000111001111111000000001 shipped 00000000100011000000010000110010 expiration 00000000000000000111111101001111 mill 00000000000111101011000010001001 walk 00000000000111011110010110110010 stance 00000000000111100111101110100111 entry 00000000000110011111110001100111 odds 00000000000111111011010000100111 somebody 00000000000011001010010001110010 ordinary 00000000000000000001101000110000 relationships 00000000000111100000010000100111 1,500 00000000000000000000000000000000 Economists 00100000000000000000000000010011 polls 00000000000000000110001000100011 admitted 00000000000011101001110111000010 grounds 00000000000111111101101110100011 jet 00000000000110101010001010110000 liabilities 00000000000111111110000111100011 37.5 00000000000000000000000000000000 targeted 00000000010001101100010000110010 screens 00000000000100001110101001100011 foot 00000000000111101011000001000111 monitoring 00000000000000011110110001000000 mix 00000000000111011100100101100111 implications 00000000000111111111001110001111 Rights 00100000000100000010000100100111 Commercial 00100000000001000011010000110000 concedes 00000000000111110111010111000010 2.9 00000000000000000000000000000000 repeatedly 00000000000000000001001001110010 attended 00000000000000000101010000110010 adequate 00000000000000000000000110010000 meaning 00000000000111111111011110101111 unprecedented 00000000000000001000110100010000 Bruce 00101111111000000100010000011000 Roy 00101111111001000100000010011000 Mexican 00100000000000000011010100110000 suppliers 00000000000111111100010000110011 Museum 00100000000010100111010100000001 electricity 00000000000000001100010000100001 recall 00000000000111001011110110110010 films 00000000000011101111110101100011 officially 00000000000000100001001001110010 Club 00100000000000000010010100000001 Enterprises 00100000000000000000101000101001 fifth 00000000000100100111100011010000 Code 00100000000111111111101111010101 upset 00000000000111001101110000110010 structured 00000000000110000010110000110010 credit-card 00000000000000000000000000000000 integrated 00000000000110011001101010110000 apple 00000000000111101110100100101000 + 00000000000000000100010101010000 sizable 00000000000000000100100000010000 400,000 00000000000000000000000000000000 Commonwealth 00100000000111111000101000101000 advocates 00000000000000001100000010110011 nice 00000000000010000000011010010000 posting 00000000000000100100100101000000 hiring 00000000000010001110110001000000 Kellogg 00100000000111110001110000001000 Vietnam 00100000000110101110101101101000 Warsaw 00100000000000111001001100010000 ambitious 00000000000000000111110100010000 conflict 00000000000111011110110000100111 Jacobson 00101111111101001001001000001000 Milton 00101111111010001111000110011000 suitor 00000000000111011001101010110101 fat 00000000000000110101011010010000 measured 00000000000111000001110000110010 PS 01000000000000000000000000000000 Post 00100000000000000010011101110111 discussion 00000000000111101010011010100111 finds 00000000000100100011000000010010 TW 01000000000000000000000000000000 pit 00000000000000000011011001000111 Craig 00101111111000010100010100001000 stepped 00000000000111111011001000110010 staffers 00000000000000001000000010110011 focusing 00000000000111111100100000110010 struggle 00000000000111101100110000100111 granted 00000000000001111100010000110010 cool 00000000001011100101110110110010 confirm 00000000000101111100100110110010 pleaded 00000000000110000110010000110010 wealthy 00000000000001001000101000110000 adopt 00000000000101111111101110110010 reporter 00000000000111011101011110110101 percent 00000000000000000011100001010000 concentrated 00000000000111101100100000110010 respect 00000000000110111110000110110010 money-market 00000000000000000000000000000000 Trelleborg 00100000000000000000000000000000 repeated 00000000000000000000111001000000 ignored 00000000101000010100010000110010 L.J. 01000000000000000000000000000000 a.m 00000000000000000000000000000000 artist 00000000000111110101100000110101 predicts 00000000000111101111010111000010 compliance 00000000000011000001100000110010 shared 00000000010011010001110000110010 103 00000000000000000000000000000000 characters 00000000000101101111110101100011 acres 00000000000000000000011100001011 involves 00000000001000100001000000010010 accident 00000000000111101101111001100111 recognize 00000000000010111100100110110010 tougher 00000000000010000100001111000000 clothes 00000000000110001111110101100011 lunch 00000000000111111110000000100001 shelf 00000000000000011000001001000000 Metropolitan 00100000000000001000001000110000 adverse 00000000000000100000010100010000 cubic 00000000000000000110010101010000 1960s 00000000000000000000000000000000 explained 00000000000111001011110111000010 Delaware 00100000000111100111110001101000 Franklin 00101111111001101100110100101000 consequences 00000000000111111110001110001111 crimes 00000000000111011110100010100111 chosen 00000000000101110010110000110010 permits 00000000001011000111000000010010 dumped 00000000000100001100010000110010 forcing 00000000000111110011101101000000 Glenn 00101111111010010000000100001000 Conner 00101111111001010000001000001000 tool 00000000000100000110001000100001 discrimination 00000000000111001110100010100111 Dorrance 00100000000000000000000000000000 injuries 00000000000111111110100010100111 Geneva 00100000000111000001111001101000 seasonal 00000000000000010111010101010000 claiming 00000000000111101111111010000010 obligations 00000000000111111111111100000011 ounces 00000000000000000000010100001011 apartment 00000000000111101100101010000001 Real 00100000000010101111111000110000 prominent 00000000000000000100000010010000 Brussels 00100000000111111001111001101000 Bates 00101111111110000110110000001000 repeal 00000000000011010111110110110010 decrease 00000000000111111000111000110111 landing 00000000000000000111100000100001 formally 00000000010000000001001001110010 Human 00100000000010000101000000110000 Greece 00100000000111000011111101101000 fundamentals 00000000000111101000101010100011 skills 00000000000111101111011100100011 missile 00000000000000000010001010110000 elderly 00000000000111110110101000110000 generated 00000000000001100111010000110010 midst 00000000000111111100111100001111 budgets 00000000000111101001110100100011 considerably 00000000000111111000010001110010 independence 00000000000101001111110100100111 soft-drink 00000000000000000000000000000000 edged 00000000000000001011001000110010 170 00000000000000000000000000000000 negotiators 00000000000000100110100110110011 strip 00000000000100111111110100100001 operated 00000011000011001100010000110010 Cathay 00100000000000000000000000000000 Diego 00101111111100000001100000011101 belief 00000000000111111110110000001111 cent 00000000000000000000001010001011 Mikhail 00101111111000000000001010011000 Minnesota 00100000000110101111110001101000 smoking 00000000000001000110010000100001 stretch 00000000000011101011001010110111 lend 00000000001011101111001110110010 Hospital 00100000000000001000100000100001 Russian 00100000000110000001011000110000 arguing 00000000000111111011111010000010 representative 00000000000100100111110000110101 Microsoft 00100000000111101011111100101000 62.5 00000000000000000000000000000000 Lotus 00100000000100110010100100101000 ends 00000000000011100110001000110010 Leader 00100000000011000100000110110101 wall 00000000000111111111011110101000 eliminating 00000000000110001001011101000000 overhaul 00000000000111111111010100110111 8.45 00000000000000000000000000000000 Eagle 00100000000000001100100100100001 expenditures 00000000000111111100100000111001 weaken 00000000000111111100111110110010 Colgate 00100000000111110100110100101000 discounts 00000000000111101000111100000011 500-stock 00000000000000000000000000000000 rely 00000000000011110110110110110010 useful 00000000000011000000010010010000 contest 00000000000111111111110010110111 Raymond 00101111111000000100000010011000 calm 00000000000101100101110110110010 Mass 00100000000111101010110100100001 toll 00000000000111110011000011000111 rises 00000000000111100010010110000011 Part 00100000000111111111111101101111 removed 00000000000110010100010000110010 durable 00000000000010110001010000110000 angry 00000000000010011010110100010000 suspect 00000000000001011110000110110010 INC. 01000000000000000000000000000000 suffering 00000000000101111101100001000000 tremendous 00000000000000100000000000010000 Anthony 00101111111000001100100010011000 Rothschild 00100000000101110011000001001000 treat 00000000010111111011111110110010 Bradstreet 00101111111110111111110001001000 touch 00000000000011011110010110110010 Dun 00101111111111111111111010101000 completion 00000000000111101111011101001111 refinancing 00000000000111000000100111001111 year-end 00000000000000000000000000000000 rain 00000000000011101111110010100111 BankAmerica 01000000000111100011001100101000 cap 00000000000110100001001010110111 breaks 00000000000111101110110010000011 Netherlands 00100000000111100111011110110011 Backer 00101111111110000011101000101000 Executive 00101111111000000000000101110000 vaccine 00000000000101110010111010110000 keeps 00000000101000000011000000010010 amounted 00000000000000101001101000110010 Antonio 00101111111100000011000000011101 Protection 00100000000110101011000100100111 Zenith 00100000000101100011000100101000 Southeast 00100000000000001010001110101000 Statistics 00100000000000000000100001111001 charities 00000000000110011000111000110011 Swedish 00100000000000000110100100110000 Rated 00100000000111111100010100110010 specify 00000000000111101100011110110010 interim 00000000000000001000010100010000 giants 00000000000111101101000011110011 golden 00000000000101000010001000110000 77 00000000000000000000000000000000 eligible 00000000000010001110110000110010 Jewish 00100000000001000000101000110000 EST 01000000000000000000000000000000 combat 00000000000011000111000110110111 signals 00000000000000001111000000010010 creates 00000001010000000011000000010010 aftermath 00000000000110110101111000001111 Alex 00101111111000000001110000011000 informed 00000000000101001011110000110010 restrict 00000000000001011010111110110010 Gerald 00101111111000000010000010011000 dream 00000000000111111101000101100111 cigarettes 00000000000111000111111001100011 0.3 00000000000000000000000000000000 fare 00000000000000000000001111110111 affiliates 00000000000111101101101010110011 incurred 00000000110011101100010000110010 Rather 00100000000011101111110111000000 dominant 00000000000000011100011000010000 Affairs 00100000000111101100001011111001 consistent 00000000000011010001100000110010 conviction 00000000000111100111111101100111 participating 00000000000111111110010000110010 rural 00000000000010000000001000110000 Field 00100000000111101111101000000001 triple-A 01000000000000000000000000000000 explanation 00000000000111111101101100100111 Giant 00100000000100000000100100100001 studios 00000000000110100101110001100011 visited 00000010000001000101010000110010 conspiracy 00000000000111111011100010100111 distributor 00000000000111100110100001110101 experiment 00000000000111110101101000110111 introduction 00000000000111111110111000001111 Foundation 00100000000011100001010001010101 drawn 00000000000011110010110000110010 offsetting 00000000000000010011011101000000 Lane 00101111111010000000000100001000 strengthen 00000000000111110010111110110010 Fiat 00100000000111100111011100101000 mentioned 00000000010100010010110000110010 installed 00000000100000001100010000110010 ghost 00000000000111010110110000000001 youth 00000000000101101001110000000001 Kentucky 00100000000111101000110001101000 league 00000000000111111111010100000001 agricultural 00000000000000001001010000110000 Cable 00100000000000000101001010110000 Already 00100000000000011000001001110010 tries 00000000000111011100101000110010 train 00000000000111101111100110110111 Hudson 00101111111001010011010001001000 executed 00000000100100001100010000110010 reacted 00000000000001111011101000110010 encouraging 00000000000000000011110101000000 south 00000000000010000010000110101000 testify 00000001000101111101010110110010 lows 00000000000011001010111001000111 racial 00000000000000001000000000110000 enable 00000000000111101011101110110010 Puerto 00101111111011110011001101110000 Tandem 00100000000000011100100100101000 Treasurys 00100000000111101111111011100011 converted 00000000001010110010110000110010 Sacramento 00100000000110010101101001101000 Area 00100000000111101110011001100111 polyethylene 00000000000010000100011010110000 Advertising 00100000000000000001101010100001 legislature 00000000000000000010111001000101 mission 00000000000111101011101001100111 earning 00000000000111101000100101000000 anywhere 00000000000011010100010001110010 redemption 00000000000111100111110101001111 Dollar 00100000000111111111111101000101 institute 00000000000010001001010001010101 unveiled 00000000101111111001010000110010 mood 00000000000111110111111101100111 Saab 00100000000100101111111100101000 Harold 00101111111000001110000110011000 thousand 00000000000000000010000001010000 Pierce 00101111111111100000001000001000 Lake 00100000001000001000011010101000 prospective 00000000000000000110111000010000 Tandy 00100000001011101111111100101000 classic 00000000000000001100000010010000 reopen 00000000000111011011011110110010 CFCs 01000000000000000000000000000000 routes 00000000000111101100101001100011 seed 00000000000000011110110110110111 consolidated 00000000000000000000000100101000 Chevron 00100000000111110111011100101000 mortality 00000000000011000000011100000111 nearby 00000000000001001000001000110000 loose 00000000000000100010011010010000 Jackson 00101111111100100100101010001000 1977 00000000000000000000000000000000 Feb. 00100000000000000000000000000000 speak 00000000100111111101010110110010 Irish 00100000000000110010100100110000 Pfeiffer 00100000000000000000000000000000 Chicago-based 00100000000000000000000000000000 unspecified 00000000000000000001100100010000 furniture 00000000000001000011111010110000 consortium 00000000000111101111101001110101 loyal 00000000000000111100010010010000 storm 00000000000111101010101101100111 cotton 00000000000111110011101110110000 Equity 00100000000000000000011010100001 ministers 00000000000000000000100110010101 creation 00000000000111110100111000001111 sparked 00000000000011100111010000110010 chose 00000000000000110011101000110010 picking 00000000001111001110100001000000 withdraw 00000000001011111111001110110010 terrorism 00000000000110100011110010100111 protest 00000000000111101110110010110111 stressed 00000000000111100111110111000010 weakened 00000000000010000010111001000000 Alaska 00100000000111111110010001101000 denies 00000000100000100011000000010010 Marina 00100000000100010010111000101000 76 00000000000000000000000000000000 visible 00000000000000010000010010010000 Well 00100000000111101110110001110010 Chevrolet 00100000000000111011111100001000 Hughes 00100000000011001010111000101000 secure 00000000000011100101110110110010 full-year 00000000000000000000000000000000 pesticides 00000000000111011001111001100011 Oppenheimer 00101111111110110111111010101000 compiled 00000000001011101111010000110010 application 00000000000100111011111001100111 passing 00000000000111001110100001000000 Mellon 00100000000010110001111000101000 aim 00000000000111111100111010110111 judgment 00000000000111101111000001100111 Christian 00100000000000001010011000110000 basically 00000000101001000000001001110010 manner 00000000000111101111111101100111 stayed 00000000100111011110001000110010 powers 00000000000100000111111100100011 Dataproducts 00100000000000000000000000000000 complicated 00000000000000010010010010010000 advances 00000000000111101001111000100011 conversion 00000000000111101001011101001111 featuring 00000001000010010000000000001010 conclusion 00000000000111111101010000001111 Robertson 00101111111100101000101010001000 Professional 00100000000000010000101000110000 victim 00000000000111110011101000111111 performing 00000000000010001110100001000000 averaged 00000000000000000100100100110010 lucrative 00000000000010000000000010010000 calculations 00000000000111110100101000100011 wealth 00000000000111101101110010100111 die 00000000000101011101010110110010 sum 00000000000111101011101010001111 unusually 00000000000110001100000001110010 owning 00000000000001010011111101000000 dump 00000000000000011111110110110010 bonuses 00000000000111101110000100000011 ranks 00000000000110001111111101100011 shock 00000000000110110111001010110111 refuse 00000000000101110111010110110010 poorly 00000000011000000000010001110010 banned 00000000100000010100010000110010 Frederick 00101111111000001101000110011000 quotes 00000000010000001111000000010010 brewing 00000000000011001011011010110000 Williams 00101111111000100001001000001000 mere 00000000000000110010010000010000 stockholders 00000000000111101111111010110011 acted 00000000000100111110001000110010 spinoff 00000000000111111111101001001111 Heritage 00100000000100011100100100100001 window 00000000000111010011011000000001 arranged 00000000011111101100010000110010 baskets 00000000000111001011100100101111 examination 00000000000101111000111001100111 Partnership 00100000000110101111100011110101 doubts 00000000000111101110111010101111 Cranston 00101111111111100000111010001000 TVA 01000000000000000000000000000000 properly 00000001000010000000010001110010 complaint 00000000000111101010100001100111 tourists 00000000000101100000111000110011 employer 00000000000111111101100000110101 visitors 00000000000001100000111000110011 quit 00000000000010111010010110110010 De 00101111111000000010010101001000 acknowledges 00000000000111111101010111000010 era 00000000000111111111011001100111 Rochester 00100000000111111101101001101000 reverse 00000000001111111111110110110010 injured 00000000011111110100010000110010 Channel 00100000000100000001111000000001 freight 00000000000000100010001010110000 tower 00000000000000010011011000000001 Societe 00101111111010001100101000101000 pursuing 00000000000111011110010101000000 opposite 00000000000010100011010011010000 bargain 00000000000111011101101010110111 contain 00000000000000110001101110110010 cattle 00000000000000010001101110110000 Utilities 00100000000000000001110110110000 Republic 00100000000100100001100100100001 Berkeley 00100000000111000111101001101000 automobile 00000000000000001100001110110000 Nobody 00100000000100001010010001110010 string 00000000000111111111110101111111 Nearly 00100000000000000111000001110010 widened 00000000000000011010110000110010 quota 00000000000000000111100011000111 proceed 00000000000111011001010110110010 Stone 00100000001100100001000000001000 Elsewhere 00100000000111010100010001110010 contribution 00000000000111101011111100100111 Machinists 00100000000000011110100110110011 campaigns 00000000000111101100100100100011 barred 00000000010110010100010000110010 overcome 00000000000000110010010110110010 stemming 00000000000000000001100100110010 Louisville 00100000000111011101101001101000 minute 00000000000111111010011000010111 ITT 01000000000000000000000000000000 idle 00000000001100100101110110110010 disasters 00000000000111100101001010100011 enjoy 00000000000101110110100110110010 Asset 00100000000000000001001010100001 spill 00000000000101101001001010110111 preserve 00000000000011110010111110110010 execution 00000000000110001111111101001111 born 00000000000101110100010000110010 counts 00000000000000000000010100101111 van 00001111111110111010001000110000 sister 00000000000111100101011110000001 hurricane 00000000000100100101100100100001 stabilize 00000000000101011010111110110010 contribute 00000000000111010011001110110010 Rican 00101111111000010010110000011101 links 00000000000100111110110000100111 Universal 00100000000001010000001000110000 Whitbread 00100000000000000000000000000000 perform 00000000000110101111001110110010 favored 00000000001011101100010000110010 Evans 00101111111100100110001000001000 intend 00000000000111111011000110110010 Shell 00100000000000000000011000101000 businessman 00000000000111100110011110110101 emerge 00000000000010111101010110110010 painting 00000000000111111111111000000001 repay 00000000000110101110001110110010 debut 00000000000111011111011010100111 pro-choice 00000000000000000000000000000000 Milan 00100000000101001111111001101000 8.55 00000000000000000000000000000000 shoppers 00000000000001101100111000110011 solve 00000000001111111011111110110010 S.p 00100000000000000000000000000000 4.8 00000000000000000000000000000000 matching 00000000000001001011011101000000 Buying 00100000000111101101110001000000 Carter 00101111111000001100100000001000 guess 00000000000101011110000110110010 creditor 00000000000001010000111100010000 stuck 00000001000111110110010000110010 afraid 00000000000110011011110000110010 failures 00000000000011011110000010100111 clearance 00000000000100110101000100100111 tendered 00000000100111110100010000110010 liquid 00000000000001100010101010110000 contains 00000000000100100001000000010010 murder 00000000000101111111011010100111 grant 00000000000000001010000110110111 lock 00000000000100110110010110110010 summit 00000000000111101100101111111001 indicator 00000000000110101110111001100111 spin 00000000000111010101001110110010 yielding 00000000000111101100010100110010 Operating 00100000000000000000000101010000 sentenced 00000000000111111010010000110010 Polaroid 00100000000111101010101100101000 regulator 00000000000000100111110000110101 Amendment 00100000000011001100001000100111 arbitragers 00000000000110100110000011010011 feels 00000000100100100011000000010010 revolution 00000000000111110101101001100111 RICO 01001111111100001100110000011101 actively 00000000000000010111001001110010 emotional 00000000000000001011110100010000 2.25 00000000000000000000000000000000 sounds 00000000001011101000001000110010 concerning 00000000001100010000000000001010 transport 00000000000011001111100110110111 Motorola 00100000000110101011111100101000 perception 00000000000111101111110000001111 aluminum 00000000000000001100011010110000 alive 00000000000010101111111100110010 atmosphere 00000000000110100111111001100111 contractors 00000000000000000010010000110011 Honeywell 00100000000111100101011100101000 compound 00000000000111000001001010110111 stadium 00000000000001101011000100000001 Southwest 00100000000001100111110110101000 Later 00100000000000000010001001100010 franchisees 00000000000110010111110000110011 Deposit 00100000000000000000001110100001 talked 00000000001111101011101000110010 Rock 00100000000101101110001100100001 crunch 00000000000111100110101101100111 comedy 00000000000000100110101000100001 Circuit 00100000000000000101010111100101 formula 00000000000111101101000011100111 salary 00000000000000100111100011000111 mines 00000000000000001111110001111001 regarded 00000000000101000010110000110010 publish 00000000000110101111101110110010 sand 00000000000111000110000000001000 arrested 00000000010111110100010000110010 obviously 00000000010001000000001001110010 narrowed 00000000000001101010110000110010 sick 00000000000010000010011010010000 Macmillan 00100000000111111110101100101000 4.9 00000000000000000000000000000000 drops 00000000000111000111010010000011 Albert 00101111111000001000010000011000 affair 00000000000111101101100011100111 rush 00000000000110111101111010110111 withdrew 00000000000011001111111001000000 Quebecor 00100000000000000000000000000000 Bristol-Myers 01000000000000000000000000000000 Katz 00101111111001101101001000001000 drawing 00000000000101001110100001000000 cocoa 00000000000111010011101110110000 clothing 00000000000011000011111010110000 Moore 00101111111110101000001000001000 lobby 00000000000111001110110010110111 arrangements 00000000000111100100010000100111 blocks 00000000000000101010100100101111 communities 00000000000111100110110001100011 striking 00000000000010000001000010010000 welcome 00000000001111100101110110110010 adults 00000000000000000000001100110011 111 00000000000000000000000000000000 referred 00000000001111101100110000110010 Indosuez 00100000000000000000000000000000 Late 00100000000000000001010100110010 studied 00000010001011000101010000110010 Cancer 00100000000000000110110010100111 DPC 01000000000000000000000000000000 Nelson 00101111111110000000000100001000 Candlestick 00100000000000000000000000000000 HBO 01000000000000000000000000000000 latter 00000000000000110101100011010000 letting 00000000000111111000001101000000 cargo 00000000000001100010001010110000 Safety 00100000000000000000000011100001 responding 00000000001111111010111000110010 underwriting 00000000000000000100000010110000 hedge 00000000000111111110110010110111 HealthVest 01000000000000000000000000000000 regularly 00000000100010000000010001110010 Turkey 00100000000111001110111101101000 chamber 00000000000111100100010000110101 agenda 00000000000111111110101001100111 violate 00000000000100101001101110110010 insider 00000000000111101010011100010000 honor 00000000010011111111110110110010 restated 00000000000111001010001001000000 Consolidated 00100000000000000000000100101000 engage 00000000000111110001010110110010 gathering 00000000001000000010110001000000 270 00000000000000000000000000000000 Hastings 00100000001101011100111010001000 Television 00100000000000000000001010110000 Aeroflot 00100000000000000000000000000000 Alfred 00101111111000000000011110011000 stems 00000000000001000001100100110010 5.9 00000000000000000000000000000000 broadly 00000000000110101000010001110010 definition 00000000000111111000111000001111 Ingersoll 00101111111100001100111000001000 Palo 00101111111111111011101101110000 matched 00000000000011000001110000110010 tickets 00000000000111010001101001100011 NFL 01000000000000000000000000000000 rolling 00000000000000111010100001000000 horse 00000000000000010110001100100001 unsuccessful 00000000000010000001110100010000 Are 00100000000000000000000100010010 operational 00000000000010000010000000110000 Moon 00100000000111000001111000000001 Bally 00100000000111101011010100101000 attempted 00000000000111100111101000110010 deterioration 00000000000111111011101010100111 establishment 00000000000111001011101001100111 bitter 00000000000000100001000000010000 restored 00000010000111010100010000110010 disputes 00000000000111101000010000100111 3.2 00000000000000000000000000000000 rolled 00000000100101101001001000110010 unclear 00000000000111001110010001110010 depend 00000000000110110110110110110010 Let 00100000000111101010100110110010 band 00000000000111101110000100000001 drink 00000000000101011100110110110111 Rico 00101111111100001100110000011101 Madison 00100000000111111110011010101000 bus 00000000000000110101111010110000 0.7 00000000000000000000000000000000 dozens 00000000000111101110111000101111 efficiency 00000000000111111010011010100111 employed 00000000010011001100010000110010 waves 00000000000001001100110101100011 Finally 00100000010000000000001001110010 bright 00000000000000010101011010010000 illegally 00000000010000100001001001110010 legitimate 00000000000110000001000000010000 serves 00000000000010001101000000010010 user 00000000000000010000111000100001 bureaucracy 00000000000111100011101001100111 Seattle 00100000000000111111111001101000 Fuji 00100000000101001001111000101000 Per-share 00100000000000000000000000000000 covert 00000000000000011011110000110000 rejection 00000000000111110111111101001111 green 00000000000000001110010000001000 Applied 00100000000111100000110000110010 Fargo 00101111111101010011111010101000 guilders 00000000000000000110100000001011 demanded 00000000000000110101110111000010 Renaissance 00100000000110010001100100100001 Nippon 00100000000000011000101101110000 affecting 00000000000001010000000000001010 successfully 00000000000010000000010001110010 treasurer 00000000000111111111111011101101 Aviation 00100000000000001110010010110000 brothers 00001111111000000001100001001000 lifted 00000000000011010100010000110010 Packwood 00101111111101101011111010001000 chances 00000000000111111110101000001111 crack 00000000001111110110010110110010 Consumer 00100000000011010001010000110000 5.8 00000000000000000000000000000000 knowledge 00000000000111111111111110101111 roads 00000000000111111110111001100011 investment-grade 00000000000000000000000000000000 CFTC 01000000000000000000000000000000 Issues 00100000000110100000001011100011 7.2 00000000000000000000000000000000 phase 00000000000111110110001000110111 derivative 00000000000101000001000000110000 Jon 00101111111000000100110110011000 promotions 00000000000111100111110100100011 stolen 00000000000101001101101001000000 Mutual 00100000000001001001111110110000 remember 00000000000111110110100110110010 1.50 00000000000000000000000000000000 notified 00000000000110101101010000110010 Earth 00100000000111111100000000100101 pro 00000000011111001010010000010000 6.79 00000000000000000000000000000000 sites 00000000000010000000110100100011 wind 00000000000111001110110110110111 licenses 00000000000111011111110100100011 personally 00000001100010000000010001110010 attacks 00000000000111101111100100100111 accepting 00000000000111100110111101000000 qualify 00000000000111100101001110110010 Spiegel 00101111111100010100110000001000 exposed 00000000000101011000110000110010 lay 00000000000111011010010110110010 promoting 00000000000101010011111101000000 0.9 00000000000000000000000000000000 Arrow 00100000000111111001110100100001 appearance 00000000000110111011111001100111 Upjohn 00100000000101101110111100101000 1997 00000000000000000000000000000000 amended 00000000000000100100111001000000 Value 00100000000111111111110010001111 College 00100000000010000011000001000001 Norman 00101111111000000110010000011000 intention 00000000000111111000111100100111 oversees 00000000000101001101000000010010 drove 00000000000010100001001000110010 unexpected 00000000000000000110010100010000 likes 00000000000111110100101000110010 understanding 00000000000111111100111110101111 functions 00000000000111100011101010100011 0.5 00000000000000000000000000000000 IMF 01000000000000000000000000000000 fled 00000001001011000101010000110010 harvest 00000000000001011010011000100001 Tele-Communications 01000000000000000000000000000000 strongest 00000000000000000011010011010000 Jerry 00101111111000000110000110011000 Bernstein 00101111111100111110111000001000 Toshiba 00100000000110001011111100101000 Put 00100000000111111010010110110010 exception 00000000000111101111101100100111 1971 00000000000000000000000000000000 jail 00000000000111101011110101010111 Prudential 00100000000111001001111000101000 Lone 00100000000111001101011000110000 Edwards 00101111111111111111111000001000 anticipate 00000000000111110101000110110010 Don 00101111111000000000110000011000 breach 00000000000111111011111001101111 intervention 00000000000111100000110001100111 salaries 00000000000111100110100100000011 sixth 00000000000100100011001011010000 Boesky 00101111111100111001010010001000 sentence 00000000000110011011000001100111 Levine 00101111111100111001110010001000 Graphics 00100000000000001010010010110000 steelmaker 00000000000000001000100001110101 coast 00000000000000001001000010101000 Angeles-based 00100000000000000000000000000000 25,000 00000000000000000000000000000000 spirit 00000000000100111111111000001111 Bronx 00100000000111110110110001101000 40,000 00000000000000000000000000000000 cigarette 00000000000000000010001000100001 resumed 00000000000000011010001000110010 symbol 00000000000111011110110110110010 Working 00100000000111001001000001000000 9.5 00000000000000000000000000000000 disagree 00000000000100111001100110110010 averages 00000000000111100000101001110011 Majority 00100000000111101111111100111111 Gray 00101111111100100011000000001000 1970 00000000000000000000000000000000 lived 00000000000100011110001000110010 understood 00000000000111101100110000110010 planner 00000000000111101111010110110101 routine 00000000000011001001000000010000 wear 00000000001011101110101110110010 Amoco 00100000000111001001011100101000 absence 00000000000111111111001000001111 consisting 00000000000001011010101000101111 Church 00100000000111101011110001000001 Guard 00100000000110100110100001111001 announcing 00000000000111111100111101000000 categories 00000000000000000001000010100011 journalists 00000000000111101000111000110011 Network 00100000000111101111111100001001 connected 00000000000000110001100000110010 railroad 00000000000000000001111010110000 Utah 00100000000111101110110001101000 FUNDS 01000000000110100000000110011001 agreeing 00000000000101111010111000110010 1996 00000000000000000000000000000000 immune 00000000000100001011010101010000 comptroller 00000000000111110110010000110101 gift 00000000000111111010010000000001 remainder 00000000000111111110111100001111 territory 00000000000111101001101001100111 1969 00000000000000000000000000000000 rent 00000000000111011010100110110111 RNA 01000000000000000000000000000000 patient 00000000000111101011111000100001 proposing 00000000000111101010111000110010 equaling 00000000000000001000010101010000 cyclical 00000000000010110010000000110000 mounting 00000000000000001101010001000000 Grace 00100000000000000110010000001000 absorb 00000000000001111111101110110010 satisfy 00000000000111010011111110110010 Meredith 00101111111001101000000100001000 6.25 00000000000000000000000000000000 dated 00000000000011010100010100110010 refund 00000000000100101111001010110111 investigators 00000000000000000001010010110011 AB 01000000000000000000000000000000 Nicaraguan 00100000000010000001011000110000 0.1 00000000000000000000000000000000 surgery 00000000001111101101110010100111 backlog 00000000000111100011000101100111 federally 00000000010100101111001001110010 Having 00100000000111000010111000110010 Excluding 00100000000111011001101001000010 bench 00000000000101010110011000000001 challenges 00000000000111111011001000100011 brings 00000000011000000011000000010010 meantime 00000000000111011110101001101000 tested 00000000000110001100010000110010 6.6 00000000000000000000000000000000 conversations 00000000000111111100010000100111 regions 00000000000111100101000010100011 93 00000000000000000000000000000000 Through 00100000000000010001000000001010 zero 00000000000001100101110110110010 married 00000000001111110100010000110010 rushed 00000000000010101011101000110010 congressman 00000000000111101110011110110101 Pemex 00100000000000000000000000000000 Colombia 00100000000111101000111101101000 inadequate 00000000000111110001000110010000 constantly 00000000001011000000010001110010 EPA 01000000000000000000000000000000 manufacture 00000000000100110111110110110010 combine 00000000000111100110001110110010 Finland 00100000000111110010111101101000 notably 00000000000001111011000001110010 Christie 00100000000100011101111110101000 locations 00000000000000011100110001100011 displays 00000000011101000111000000010010 190 00000000000000000000000000000000 100-share 00000000000000000000000000000000 motor 00000000000000000010100001001000 neighborhoods 00000000000111000100110001100011 Wallach 00101111111100100110100010001000 Block 00100000000110111111110110110010 passage 00000000000111101011110101001111 defined 00000000000011000010110000110010 escape 00000000000101011111110110110010 FTC 01000000000000000000000000000000 Foster 00101111111100010000110000101000 Chamber 00100000000111100100010000110101 Right 00100000000111100100111000110010 Unless 00100000000000000110101001000010 Car 00100000000000000000001000100001 Carpenter 00101111111101000000001000001000 Fort 00100000000010111111001101110000 employs 00000000001001001101000000010010 computerized 00000000000000000010101010110000 eat 00000000000100111110101110110010 considers 00000000000000100011000000010010 cumulative 00000000000000000100100110110000 couples 00000000000000001001111100110011 Wisconsin 00100000000111001110110001101000 Whatever 00100000000000000011101101000010 restructured 00000000000011000010111001000000 mills 00000000000000001011100000101001 Semel 00100000000000000000000000000000 Policy 00100000000110001000000011111001 pork 00000000000101000100011010110000 parking 00000000000000000000100000100001 PepsiCo 01000000000101100111111100101000 charter 00000000000000000000000100100001 Consider 00100000000111100110100110110010 bushels 00000000000000000001000100001011 repairs 00000000000111011110001000100011 accommodate 00000000000101110111111110110010 throw 00000000000011101110101110110010 enterprises 00000000000000000000101000101001 song 00000000000110101110101000100001 upscale 00000000100001010000001000110000 bias 00000000000111101100100010100111 86 00000000000000000000000000000000 drilling 00000000000000000000000001100001 enacted 00000000000101111001010000110010 assessment 00000000000111001110111001100111 Oregon 00100000000111111100110001101000 high-quality 00000000000000000000000000000000 Kemp 00101111111100110000010010001000 Sometimes 00100000000001100000001001110010 array 00000000000111000110111001100111 conducting 00000000000111111100010101000000 vowed 00000000000111110111101000110010 desk 00000000000111101110001110000001 Arnold 00101111111000000000110100001000 seize 00000000001111100011111110110010 anymore 00000000001001100100010001110010 wins 00001000001010000011000000010010 Ad 00100000000000100000101010100001 Where 00100000000000000100101001000010 nonperforming 00000000000000000000101001000000 movements 00000000000111111110010010000011 reviewing 00000000000111111110010101000000 surface 00000000000111111110111000000001 Hawaii 00100000000111110001111001101000 Hotel 00100000000011100101111010110000 81 00000000000000000000000000000000 reaches 00000000010010000011000000010010 promising 00000000000000001100010010010000 savings-and-loan 00000000000000000000000000000000 4.4 00000000000000000000000000000000 Cuba 00100000000111100011111101101000 Back 00100000000000000000111100110010 discovery 00000000000111101100011101001111 DNA 01000000000000000000000000000000 methods 00000000000111101101111100100011 Arkansas 00100000000111011110110001101000 ringers 00000000000000000000000000000000 Bass 00100000000000011011000000001000 technologies 00000000000000000010001011101001 misleading 00000000000001010000000110010000 suggestions 00000000000110001011101000100011 300-a-share 00000000000000000000000000000000 CORP. 01000000000000000000000000000000 donated 00000000000101000100010000110010 topic 00000000000111101001111101100111 N.J 01000000000000000000000000000000 speculated 00000000000111000111110111000010 Goodson 00100000000000000000000000000000 Marvin 00101111111000000001000110011000 shuttle 00000000000000010001100011010000 bells 00000000000111110010001110110011 lately 00000000000011100100010001110010 79 00000000000000000000000000000000 commissioner 00000000000111011011110000110101 Rubicam 00101111111101111111110001001000 background 00000000000111111111100000000001 solutions 00000000000111100111001110100011 registration 00000000000000000100100011110101 doors 00000000000111101110101101100011 financial-services 00000000000000000000000000000000 strikes 00000000000111100111001000100011 pressing 00000000000011000100110101000000 Arab 00100000000000000011000100110000 tax-exempt 00000000000000000000000000000000 diminished 00000000000011010100111001000000 spots 00000000000111101101110101100011 Seagram 00100000000111101111101100101000 windows 00000000000111101011110101100011 path 00000000000111101011111101100111 publicity 00000000000110100110111010100111 Ginnie 00100000000001110000110101001000 unrelated 00000000001001100000111000110010 Lorenzo 00101111111100101000001010001000 occasionally 00000000001100100000001001110010 reactions 00000000000111000111001000100011 mandatory 00000000000010001001000000010000 Nynex 00100000000110100111111100101000 regard 00000000000111011110000110110010 avoided 00000000110000010100010000110010 Growth 00100000000111100000001010100111 transfers 00000000000110101010001000100011 designs 00000000011011000111000000010010 1978 00000000000000000000000000000000 knocked 00000000001011001001001000110010 constant 00000000000001101011000000010000 historical 00000000000000110010000000110000 indicted 00000000101111110100010000110010 Louis-Dreyfus 01000000000000000000000000000000 wars 00000000000111101101001111111001 science 00000000000100100100001101100001 exact 00000000000000000110000100010000 submit 00000000000110111011011110110010 losers 00000000000111101111101001110011 7.6 00000000000000000000000000000000 columns 00000000000101100001110101100011 Investor 00100000000001000010000000110101 Miss 00100000000111100011111100001000 Executives 00100000000000000000100010110011 seized 00000000100101000101010000110010 code 00000000000111111111101111010101 Dingell 00101111111100100110111010001000 debacle 00000000000111101011010001100111 techniques 00000000000111001111110100100011 contact 00000000000110011110110000100111 Travel 00100000000001000100000000100001 sank 00000000000001000001000100110010 Contra 00100000000000001011011000110000 switched 00000000000011101011101000110010 1998 00000000000000000000000000000000 publishes 00000000001000011101000000010010 counted 00000000011011001100010000110010 wisdom 00000000000101100011111001100111 publishers 00000000000011110000010000110011 diseases 00000000000111001010101010100011 Nor 00100000000000000000011011000000 explaining 00000000000111101101111010000010 forest 00000000000111110100011010110000 Bolar 00100000000010101101000100101000 ignoring 00000000000111101111011101000000 households 00000000000010010100101001100011 cultural 00000000000011000000000000110000 shifting 00000000000110110111100001000000 explore 00000000000110011011011110110010 Members 00100000000000000100001010110011 Toronto-based 00100000000000000000000000000000 GAF 01000000000000000000000000000000 preference 00000000000000000110110101010000 signing 00000000000111110010110001000000 borrowings 00000000000111111100000010100111 Kingdom 00100000000000000010001010101000 sponsor 00000000000111111110011110110111 Space 00100000000000000010111010110000 massacre 00000000000111001101010001100111 vacant 00000000000110000100110110010000 ozone 00000000000011001001110000100001 conservatives 00000000000111101111010110110011 counterparts 00000000000111111111110000110011 trail 00000000000010101001001010110111 high-tech 00000000000000000000000000000000 kicked 00000000001011101001001000110010 deeply 00000000000010000000000001110010 mass 00000000000111101010110100100001 PC 01000000000000000000000000000000 Telecommunications 00100000000010011011011010110000 arrived 00000000000010111110001000110010 anxiety 00000000000111100100111010100111 designer 00000000000000011000100100100001 battered 00000000000100110001110000110010 6.4 00000000000000000000000000000000 7.875 00000000000000000000000000000000 provider 00000000000111101111011000111111 squeezed 00000001001111110010110000110010 Stockholm 00100000000111110111111001101000 border 00000000000111110011111000000001 careful 00000000000010001010010010010000 heating 00000000000111111000011000101000 execute 00000000000111010011011110110010 sooner 00000000000000100101001111000000 jewelry 00000000010000001011111010110000 Panzhihua 00100000000000000000000000000000 rout 00000000000111111101010001100111 learning 00000000000111111100110101000000 Litigation 00100000000111101110100010100111 Long 00100000000000000000110001110010 half-hour 00000000000000000000000000000000 unexpectedly 00000000000011001100000001110010 Sansui 00100000000000000000000000000000 Jay 00101111111000100100000010011000 computing 00000000000000000110000001100001 quietly 00000010001000000000010001110010 superior 00000000000000001000001001000000 egg 00000000000000000110101100100001 I. 00101111111111000000111011011000 30,000 00000000000000000000000000000000 pursuit 00000000000110111101111000001111 expired 00000000000000100110001000110010 Rose 00100000000000000000000100110010 maintaining 00000000000111011111111101000000 collect 00000000000010111111001110110010 NATO 01000000000000000010011000101000 Heavy 00100000000000000010011100010000 north 00000000000111100011100110101000 writes 00000000000110111011010111000010 expertise 00000000000111111000001110100111 None 00100000000111101101101000101111 Del 00101111111011111100010100001000 assassination 00000000000000000101110101001111 pop 00000000000001000100110110110111 pitch 00000000000100110101111010110111 Dick 00101111111001000101000000011000 disappointment 00000000000110000110111010100111 dual 00000000000101110010000000110000 maturities 00000000000111101001101001000111 Achenbaum 00100000000000000000000000000000 Garcia 00101111111000100101110010001000 listen 00000000000111100111010110110010 artists 00000000000000000000000111101001 error 00000000000111100111111001100111 drought 00000000000111100011101101100111 Andrew 00101111111000000000001110011000 prosecution 00000000000111111111100010100111 recording 00000000000000000010110001000000 Similarly 00100000000111100111111011101000 massage 00000000000000000000000000000000 Municipal 00100000000000000000000110110000 Records 00100000000010010110001000100011 Iron 00100000000111000010001000110000 female 00000000000011110000101000110000 rid 00000000000000000000111000101111 Guber-Peters 01000000000000000000000000000000 Citizens 00100000000111111111100000110011 Stamford 00100000000111110101101001101000 consists 00000000000000000000101000101111 objective 00000000000101100111111001100111 recognition 00000000000110101010011010100111 content 00000000000110111111110100100111 Conn 00100000000000000000000000000000 context 00000000000111100110111000001111 launching 00000000000101101111111101000000 passengers 00000000000000010000000000110011 fusion 00000000000110110101110000100001 Brooklyn 00100000000111010001111001101000 Airport 00100000000010101010111010000001 ignore 00000000000101011111111110110010 soybean 00000000000000000011101110110000 bridges 00000000000101101010000000001000 Advanced 00100000000000000011101010110000 defended 00000000001010101101010000110010 objectives 00000000000111110101011100100011 Femina 00101111111110011100110010001000 Common 00100000000000000000110101010000 Della 00101111111001100110000010011000 Congressional 00100000000000000100111000110000 jurors 00000000000110110010100110110011 Daly 00101111111101000010000010001000 multiple 00000000000000101001111000010000 schedules 00000000000000011111011100100011 popularity 00000000000111001011011010100111 Clark 00101111111100001111001000001000 Brian 00101111111000010010000010011000 feature 00000000000111110010001010110111 promotional 00000000000110100000000000110000 repeat 00000000000101111111110110110010 Eli 00101111111001110010010000001000 engineered 00000000000100100001101001000000 Eurocom 00100000000000000000000000000000 betting 00000000000111111010110101000000 Alto 00101111111000000100100100011101 Cellular 00100000000000111101011010110000 Anheuser 00100000000010000100110100101000 protesters 00000000000110101100100000110011 mess 00000000000111110101101101100111 army 00000000000000000100101100100101 Otherwise 00100010000000000000001001110010 sheets 00000000000001000001100110111001 sidelines 00000000000111111111011110110011 questioned 00000000000111101101010000110010 influential 00000000000010000000110100010000 rough 00000000000000000010011010010000 thereby 00000000000011011101000001110010 Goldberg 00101111111111111111100010001000 scrutiny 00000000000011111110011010100111 Manila 00100000000111001111111001101000 presidency 00000000000111110011000001100111 dinner 00000000000111110000000000100001 Acceptance 00100000000111100001111001111001 Montreal 00100000000110101111111001101000 exemption 00000000000111111111101000111001 psychology 00000000000001101110111010100111 truth 00000000000111111101111101100111 blocking 00000000000000001111011101000000 Sanford 00101111111100110111100010011000 88 00000000000000000000000000000000 colony 00000000000111111111110111000101 Typical 00100000000000101000011000010000 near-term 00000000000000000000000000000000 pregnant 00000000000100010010101000110000 seemingly 00000000000110001000000001110010 bonus 00000000000000000010100011000111 shed 00000000000000101110001110110010 ally 00000000000110000110111001100111 four-year 00000000000000000000000000000000 Yale 00100000000000101111111000101000 contended 00000000000110101111110111000010 Notes 00100000000111111111111010000111 seconds 00000000000000000000011100011011 Vincent 00101111111001000011010100001000 sport 00000000000101011110011000000001 insiders 00000000000000100010000010110011 spur 00000000000100111100111110110010 Mills 00100000000000001011100000101001 stripped 00000000000011001011110000110010 initiatives 00000000000111101001111100100011 optical 00000000000000010010101010110000 glasnost 00000000000110101111110010100111 Manuel 00101111111001010100000010011000 Commodities 00100000000111111101101110110000 Benson 00101111111000000000000101001000 teacher 00000000000101101001011110110101 Following 00100000000000000110100000001010 banning 00000000001110010000000000001010 figured 00000000000111101000110111000010 imbalances 00000000000110100100100000100111 cabinet 00000000000000000000000010000001 Hartford 00100000000111101110101001101000 Mike 00101111111000000010001000011000 seeds 00000000001011110111110101100011 Previously 00100000000000001101001001110010 Zurich 00100000001111111111111001101000 investigations 00000000000111001011110000100011 Mather 00101111111011110111110001001000 yes 00000000000111110011111011101000 intellectual 00000000001000100000000000110000 profit-taking 00000000000000000000000000000000 Everybody 00100000000010001010010001110010 Politburo 00100000000000000101101100100101 comprehensive 00000000000001001011000000010000 Wellington 00100000001011111111111001101000 unconstitutional 00000000000010110000110110010000 interstate 00000000000001000001100001101000 Sydney 00100000000100111111111001101000 0.4 00000000000000000000000000000000 slip 00000011000101111101010110110010 hampered 00000000001101000001110000110010 heading 00000000000110001110100001000000 opens 00000010000010000011000000010010 wider 00000000000001000100001111000000 genuine 00000000000011101001000000010000 Merck 00100000000111111101110000001000 somewhere 00000000000101010100010001110010 column 00000000000011001010001000100111 interbank 00000000000001001111001001110010 wearing 00000000000011001100100101000000 filling 00000000000111110101101101000000 tanks 00000000000110001110111001100011 drain 00000000000110100011001010110111 hurting 00000000000111011000001101000000 Thrift 00100000000000000011000000100101 pulling 00000000000100001110100001000000 Take 00100000000111111100101110110010 Reebok 00100000000101101111010100101000 plunging 00000000000011001010010001000000 Everyone 00100000000001001010010001110010 apiece 00000000000000000001001001000111 asserts 00000000000111011011010111000010 deciding 00000000000011111010111000110010 components 00000000000111100111011111001001 Teddy 00100000000010100000001000011000 apples 00000000000110010111111001100011 sweetened 00000000000000001010001001000000 tuition 00000000000000001000011100000111 item 00000000000001100111111001100111 Monetary 00100000000000010011000000110000 speculative 00000000001000000010000000110000 Murray 00101111111100000000000100001000 Silicon 00100000000110111110011010101000 4.3 00000000000000000000000000000000 Dan 00101111111000000000100010011000 Taipei 00100000000011110111111001101000 DES 01001111111011001111001101110000 acceptable 00000000000000000001101110010000 existence 00000000000111101110111000001111 Arby 00100000000110011001111110101000 Cowboys 00100000000000001010000100000001 wrongdoing 00000000000110111101100010100111 gaining 00000000000000001000100101000000 solely 00000000000000001011000001110010 Mercury 00100000000111101111110110101000 slashed 00000000000011001011111001000000 orderly 00000000000010001000110100010000 minimal 00000000000000011010000000010000 entering 00000000000101011111111101000000 Suisse 00100000000111111111110001111001 advisory 00000000000000000011000010110000 defaults 00000000000111101000010000000011 invited 00000000001101011000110000110010 truly 00000000000000001000000001110010 reasonably 00000000000000101100000001110010 recommend 00000000000111101100100110110010 6,000 00000000000000000000000000000000 announcements 00000000000110101111101000100011 Deloitte 00101111111011000111110000101000 supercomputer 00000000000001000101011010110000 actor 00000000000111101110100000110101 handed 00000000000011001001001000110010 interviews 00000000000110111100010000100111 Buick 00100000000110100111111100001000 booming 00000000000011011001100000010000 Means 00100000000110010011000000010010 6.7 00000000000000000000000000000000 prolonged 00000000000000110001000000010000 5.2 00000000000000000000000000000000 requirement 00000000000111111100110011100111 lesson 00000000000111010111111101100111 Revco 00100000000010010111111100101000 detail 00000000000111111101110101010111 Few 00100000000111111111110001010000 Bork 00100000001111101010011010001000 2004 00000000000000000000000000000000 homeless 00000000000111000010101000110000 ice 00000000000111111110001100100001 Fireman 00100000000111111101111110101000 scandals 00000000000111100111011100100011 moral 00000000000111000000000000110000 Greenwich 00100000000111101001001001101000 Pope 00101111111111101010100000001000 reopened 00000101000111010100010000110010 Healthcare 00100000000000100001100000110000 fan 00000000000111101000010100000001 dubbed 00000000000110110101010000110010 disputed 00000000000000010101001001000000 override 00000000011101111111110110110010 Maidenform 00100000000101100100110100101000 Carlos 00101111111011111000000010011000 shake 00000000001111010110010110110010 foundation 00000000000011100001010001010101 apartheid 00000000000011011101110010100111 incident 00000000000111101101101000110111 leases 00000000010101000111000000010010 observed 00000000000110000111110111000010 tables 00000000000000001010001000100011 liquor 00000000000100001011111010110000 sessions 00000000000000010001000001100011 Leonard 00101111111000000100010100001000 Dole 00101111111100100110011010001000 Comprehensive 00100000000001001011000000010000 urge 00000000000110101100100110110010 2003 00000000000000000000000000000000 saving 00000000001111110010110001000000 Tower 00100000000000010011011000000001 salesman 00000000000111110111101110110101 Rosen 00101111111100100110111000001000 Mitsui 00100000000110001001111000101000 witnesses 00000000000000100000000110110011 imminent 00000000000010000110110100010000 IRAs 01000000000000000000000000000000 violence 00000000000101101011111010100111 tension 00000000000101111011111010100111 Nashua 00100000001001100111111001101000 satellite 00000000000000100000001010110000 shipyard 00000000000111101000110010001001 assigned 00000000000100111000110000110010 frozen 00000000000000000001101001000000 Early 00100000000000000011010100110010 Nothing 00100000000010000010010001110010 proper 00000000001010000001000000010000 removing 00000000000010101011111101000000 trigger 00000000000111010011110110110010 Five 00100000000111111110111001010000 1975 00000000000000000000000000000000 upper 00000000000000001011100011010000 consolidation 00000000000111001011101010100111 Unfortunately 00100000000111111011111011101000 flows 00000000000100010001101010001111 golf 00000000000000000110001100100001 distribute 00000000000111001010001110110010 medicine 00000000000111101111110010100111 HDTV 01000000000000000000000000000000 5.4 00000000000000000000000000000000 crowded 00000000000011010000000010010000 wary 00000000010111101011110000110010 fend 00000000000111110101001110110010 bike 00000000000000101100001000100001 choices 00000000000111100110001110100011 postponed 00000010000011010100010000110010 integration 00000000000110011100111001100111 dark 00000000000111111101011010010000 bidder 00000000000111101001001010110101 Cities 00100000000111101100010001100011 pharmaceuticals 00000000000111111011111010110000 Merkur 00100000000000000000000000000000 attracting 00000000000000011111111101000000 Avery 00100000011011000100000100001000 N. 00101111111011000010111011011000 listening 00000000001011101010111000110010 Lexus 00100000000001011100001000100001 asserted 00000000000111101011110111000010 finish 00000000001011110110010110110010 Beers 00101111111111111100111110000010 researcher 00000000000111111011101110110101 bargains 00000000000111101101001110100011 Pan 00100000000111111010110101001000 LDP 01000000000000000000000000000000 Independent 00100000000000000011101000110000 bottle 00000000000111111011000101100111 enhance 00000000000111011010111110110010 Carbide 00100000000000001101001010101000 Max 00100000000011001000001000011000 communist 00000000000011000011011000110000 74 00000000000000000000000000000000 willingness 00000000000111111101111100100111 gradually 00000000010011000000010001110010 promptly 00000011001000000000010001110010 abandon 00000000000111101010111110110010 phenomenon 00000000000110101011111101100111 command 00000000000111101111000110110111 Larry 00101111111000000010000000011000 interpreted 00000000001010000010110000110010 minds 00000000000111011110111101100011 Plant 00100000000111101111111010001001 automatically 00000000000111000000010001110010 male 00000000000001110000101000110000 manufactured 00000000000110000001101001000000 McDonnell 01001111111111111010111000101000 87 00000000000000000000000000000000 Joe 00101111111000000010010000011000 scared 00000000000011001101110000110010 physical 00000000000011001010000000110000 Colo. 00100000000000000000000000000000 grip 00000000000111111110000011000111 bolstered 00000000001101100111010000110010 anxious 00000000000111001000011000110010 inquiries 00000000000111110010101000100011 winners 00000000000111100111101001110011 Waste 00100000000111101111001010100001 LIBOR 01000000000111110001001010101000 Amsterdam 00100000000111111110111001101000 Pepsi 00100000000010001100110100101000 stiff 00000000000000001000000000010000 interpretation 00000000000111111100111001100111 Will 00100000000000000000001110010010 Tokyu 00100000000000000000000000000000 arrest 00000000000111010101111010110111 tends 00000000000111000001101000110010 specializes 00000000000101111110010000110010 helicopter 00000000000000001010001010110000 assembled 00000000101011001100010000110010 Decker 00101111111111101011110001001000 quantities 00000000000111111001101010001111 240 00000000000000000000000000000000 dialogue 00000000000101001110110000100111 drama 00000000000111010101101001100111 mistake 00000000000111001111101010110111 chunk 00000000000111111111001110111111 regardless 00000000000111111110101000101111 Solidarity 00100000000000000111010010100111 demanding 00000000000111110001110101000000 instrument 00000000000000011101011001100111 box 00000000000000011010000001000111 Norfolk 00100000000111101011000100101000 depositary 00000000000011100010111010101000 throwing 00000000011111110110100001000000 AZT 01000000000000000000000000000000 growers 00000000000001000100010000110011 Elizabeth 00101111111011000010100000011000 thereafter 00000000010010100100010001110010 145 00000000000000000000000000000000 Israeli 00100000000000010011010100110000 patents 00000000000111111110001000100011 cancel 00000000000001101111111110110010 constitute 00000000000111110001101110110010 Kabul 00100000000101000011111001101000 transition 00000000000101111101111101100111 administrator 00000000000110111111110000110101 toys 00000000000111101110111001100011 voluntary 00000000000110010001000000010000 magnetic 00000000000010110010101010110000 prosecutor 00000000000000001001101010110101 challenged 00000000000100000101010000110010 recommendation 00000000000111111100101011100111 editors 00000000000111100010101010110011 authors 00000000000010000001000110110011 commercials 00000000000101001111110101100011 Short 00100000000000000000000001101111 deficits 00000000000110101110100000100111 phones 00000000000111001110101001100011 Wathen 00100000000000000000000000000000 Order 00100000000111111111011101010111 niche 00000000000111011110110000000001 Morishita 00100000000000000000000000000000 defeat 00000000000111111011110010110111 fought 00000000001011000101010000110010 stemmed 00000000000000100001100100110010 establishing 00000000000011101111111101000000 simultaneously 00000001001000000000010001110010 channel 00000000000100000001111000000001 tentative 00000000000000001001001100010000 U.N. 01000000000000000000000000000000 spends 00000000000011001101000000010010 Richmond 00100000000111111111101001101000 Armstrong 00101111111100110010001000001000 entrepreneur 00000000000111100101100000110101 label 00000000000111011111111000000001 Walt 00101111111111110000101101110000 cope 00000000000100101001010110110010 Brewing 00100000000011001011011010110000 protecting 00000000000110001011011101000000 Chicken 00100000000110010100011010110000 Farm 00100000000000000111010000110000 Saks 00100000000010111000011010101000 hidden 00000000000010000001101001000000 copyright 00000000000110000001000000110000 Parker 00101111111110001000001000001000 describes 00000000010100100011000000010010 sometime 00000000000000000110001001100010 resorts 00000000000111000100111000101000 warm 00000000001000000100011010010000 wells 00001111111010101100010000001000 Austin 00100000000111100110101001101000 terminated 00000100001001010100010000110010 singer 00000000000111001101110000001000 800,000 00000000000000000000000000000000 Obviously 00100000010001000000001001110010 Gardens 00100000000111100001011000000001 Francis 00101111111001110100000010011000 unnecessary 00000000000000101010000110010000 odd 00000000000000010110110100010000 convention 00000000000111100001101100100101 saved 00000000000100011100010000110010 crops 00000000000111110010110001100011 Gordon 00101111111000010100000100001000 Coniston 00100000000001000011110000001000 transplants 00000000000001110001110010100111 87.5 00000000000000000000000000000000 hotels 00000000000111001010110001100011 longstanding 00000000000000101001000000010000 160 00000000000000000000000000000000 Peru 00100000000111000110111101101000 Iran 00100000000111101111101101101000 tasks 00000000000111100101101010100011 Ky. 00100000000000000000000000000000 K. 00101111111011000011111011011000 steam 00000000000111101011110000100001 tradition 00000000000111111101001001100111 McDonough 01000000000000000000000000000000 empire 00000000000111110000100100100001 8.40 00000000000000000000000000000000 Mountain 00100000000000000000110100100001 thanks 00000000000111110101111000110010 strict 00000000000010101001000000010000 Monte 00101111111100000101001000110000 fed 00000000000111101111110000100101 laid 00000000000111100001001000110010 Commodore 00100000000110101111010100101000 strain 00000000000101100111001010110111 stages 00000000000111101100000100101111 exceeding 00000000000001001001000000001010 entity 00000000000111001101011001100111 perceived 00000000000010000010110000110010 delegation 00000000000111011111101001100111 writers 00000000000110101111100110110011 tourist 00000000000000000010101100100001 attacked 00000000001010000101010000110010 capable 00000000000100011011110000110010 limiting 00000000000000001001011101000000 exempt 00000000000101010011110110110010 Ciba-Geigy 01000000000000000000000000000000 Oliver 00100000000000011000010100001000 redeem 00000000000111101110001110110010 Terry 00101111111000000000101000011000 Margaret 00101111111011001100001010011000 freeway 00000000000001000110111000000001 satisfied 00000000001111101101110000110010 rhetoric 00000000000101101001101001100111 Chandler 00101111111000011100001000001000 chairs 00000000001001000111000000010010 Supervision 00100000001111100110011010100111 optimism 00000000000111000110111010100111 Internal 00100000000000000101000100010000 7.90 00000000000000000000000000000000 feed 00000000000111111000110110110111 shoes 00000000000101101101110101100011 Laboratories 00100000000010000001001011101001 slipping 00000000000111011010010001000000 decides 00000000000111001011101000110010 marginal 00000000000010100000011100010000 Charlotte 00100000000111111011001001101000 hitting 00000000000111011000100101000000 outcry 00000000001111101011111001100111 smoke 00000000000110001110110110110111 FAA 01000000000000000000000000000000 predecessor 00000000000111111101011110000001 dependent 00000000000111101000100000110010 Philippine 00100000000000000000010100110000 receives 00000000000000011101000000010010 raider 00000000000111111000101010110101 Mips 00100000000000000000000000000000 inspired 00000000000111100111010000110010 beef 00000000000111101111010110110111 Pizza 00100000000111010011001010110000 explosion 00000000000110101111111001100111 7.7 00000000000000000000000000000000 integrity 00000000000111110110111000001111 adjust 00000000000111110010001110110010 Forest 00100000000111110100011010110000 emissions 00000000000101100101000100000111 sponsors 00000000000110010010000010110011 Banque 00101111111111010011101000101000 Nonetheless 00100000000111111110101011101000 spoke 00000000011110011110001000110010 airing 00000000000011100110110001000000 resignations 00000000000101011111111000001111 Drabinsky 00101111111110101100110010001000 memo 00000000000100101110001011100111 fines 00000000000111110111110000100011 issuing 00000000000000111111111101000000 casting 00000000000011010010110001000000 doubling 00000000000101101111010001000000 reader 00000000000111101010111000100001 Nestle 00100000000111111100101100101000 J.P. 01000000000000000000000000000000 witness 00000000000111101000101010110101 billing 00000000000001010010110001000000 Hitachi 00100000000111101110111100101000 element 00000000000110001110111001100111 fares 00000000000000001001000100000011 excellent 00000000000000000011110100010000 hair 00000000000111001111110000000001 procedural 00000000000000010000000000110000 ski 00000000000000100010101100100001 Gen-Probe 01000000000000000000000000000000 enhanced 00000000000010000100111001000000 Vitro 00100000000011001010111100101000 appliances 00000000000111001111011111001001 textile 00000000000010111011011010110000 daughter 00000000000111111101101110000001 mounted 00000000001000001100010000110010 alleging 00000000000000000111111010000010 Anchor 00100000000111110100100100100001 96 00000000000000000000000000000000 GTE 01000000000000000000000000000000 discrepancies 00000000000010101111111010100111 insolvent 00000000000000011000101001000000 write-downs 00000000000000000000000000000000 Given 00100000000111111100010000110010 Axa 00100000000000010001010100101000 settling 00000000000110111010100001000000 concede 00000000000100011001100110110010 mid-October 01000000000000000000000000000000 advising 00000000000000001000001101000000 wood 00001111111100001010111000101000 armed 00000000000000010001101010110000 revived 00000000000001100010111001000000 7.50 00000000000000000000000000000000 historically 00000000000111011000001001110010 redemptions 00000000000111101110110000000011 Income 00100000000111111111010101000111 layoffs 00000000000111001110000010100111 compare 00000000000111001011011110110010 Sweden 00100000000111100011011101101000 Hungarian 00100000000000101000010100110000 relating 00000000000010100000111000110010 topped 00000000001000000001010000110010 impeachment 00000000000000100001111000010000 satisfaction 00000000000111100100001110100111 Florio 00101111111100110010001010001000 Soon 00100000000010110000010001110010 oust 00000000000000101011111110110010 Gibbons 00100000000111101100111000101000 altogether 00000000000101100100010001110010 Iran-Contra 01000000000000000000000000000000 takeover-stock 00000000000000000000000000000000 disabled 00000000000110111010101000110000 text 00000000000111111001111101100111 Voice 00100000000111101001110000000001 advantages 00000000000111111111011110100011 confrontation 00000000000111001110110000100111 Bradley 00100000000000000000100100001000 postpone 00000000011011111011111110110010 catalog 00000000000001001011111010110000 Brazilian 00100000000000000111010100110000 Hilton 00100000000000110100111000101000 D.T. 01000000000000000000000000000000 dress 00000000000111110100110110110111 contributing 00000000000011101010111000110010 animals 00000000000111101011111001100011 Tampa 00100000000111101101101001101000 rice 00000000000100001100000000001000 suburban 00000000000000010000001000110000 opinions 00000000000110100011111101100011 spurred 00000000010011100111010000110010 hybrid 00000000000000001111100100100001 bears 00000000000100100111000000010010 pride 00000000000111011110110010100111 overtime 00000000000000000010000000100001 Square 00100000000000010010010101010000 deteriorating 00000000000000110101010001000000 Shevardnadze 00101111111111100000110010001000 temblor 00000000000000000000000000000000 liquidation 00000000000111101001110101001111 conversation 00000000000101011110110000100111 fault 00000000000111110001110101100111 9.6 00000000000000000000000000000000 Reuters 00100000001000000111111000101000 tumble 00000000000111111101101100110111 dry 00000000000000000001110110110111 mediator 00000000000000000000101010110101 Bennett 00101111111100001000100100001000 cycles 00000000000111011000001010100011 substitute 00000000000111001010110010110111 exceptions 00000000000111001111001110100011 centennial 00000000000000001010111010101000 Kasparov 00100000000000000000000000000000 ranges 00000000000000001011011001000111 enjoyed 00000000000110011100010000110010 Orleans 00100000000000001001011110000010 Individual 00100000000000001001101000110000 audiences 00000000000110011111110000110011 equally 00000000000001100000000001110010 tenure 00000000000111101011101110100111 priorities 00000000000111101101011100100011 deductions 00000000000111111101001100000011 files 00000000000111101110001000100011 Arts 00100000000111101010101101100001 supports 00000000001010000011000000010010 Annualized 00100000000011111001000101010000 procedure 00000000000111011101000011100111 Ward 00101111111100101100010000001000 folks 00000000000111101111000100110011 Should 00100000000000000001010110010010 Show 00100000000111101011110110110010 O. 00101111111010000001101011011000 NATIONAL 01000000000001000000011100110000 substance 00000000000101100101111101100111 N.Y 01000000000000000000000000000000 Interpublic 00100000000001011001010100101000 basketball 00000000000000001001001100100001 Ill 00100000000111001110110100100001 Critics 00100000000000000011000010110011 850 00000000000000000000000000000000 symptoms 00000000001111110111110101100011 4,000 00000000000000000000000000000000 carbon 00000000000101100100101010110000 Shares 00100000000000000000000001001011 8.3 00000000000000000000000000000000 Bentsen 00101111111100100010011010001000 whenever 00000000000011110110101001000010 outlays 00000000000111100110100000111001 balloon 00000000000111111011001010110111 Ramada 00100000000000111101111100101000 1.15 00000000000000000000000000000000 enforce 00000000000001101011111110110010 trim 00000000000111100110111110110010 Victor 00101111111000000000011000011000 beneficiaries 00000000000111101010001010110011 Antar 00101111111100110000110010001000 650 00000000000000000000000000000000 bureaucrats 00000000000111001010100000110011 Tenn. 00100000000000000000000000000000 Delicious 00100000000000000000000000000000 climbing 00000000000111101010010001000000 rebates 00000000000100000000001100000011 Contel 00100000000111100101111100101000 exercisable 00000000000011100110110000110010 prompting 00000000000111110110001101000000 View 00100000000111111111110101100111 tactics 00000000000111001111011100100011 omitted 00000000000111111011111001000000 airports 00000000000111101111010001100011 Colombian 00100000000000100000010100110000 Michelle 00101111111000001100001000011000 comply 00000000000110101001010110110010 circle 00000000000101001100110100100001 presidents 00000000000110110111111001001101 surveys 00000000000000101010001000100011 Kraft 00100000000111111010101100101000 Private 00100000000000000100010000110000 payroll 00000000000111011111100000100001 counting 00000000000111001000100000110010 prime-time 00000000000000000000000000000000 anticipates 00000000010000100011000000010010 retiring 00000000000111010111100001000000 proceeding 00000000000111100111000001000000 grows 00000000000001101000001000110010 severely 00000000001000000000010001110010 supplied 00000000000101100111010000110010 advise 00000000000111010001111110110010 NWA 01000000000000000000000000000000 Holiday 00100000000000011000000000100001 surely 00000001000001000000001001110010 Clean 00100000000111101111110110110111 animal 00000000000011101101110000100001 N.C. 01000000000000000000000000000000 returning 00000000000111111010111000110010 Family 00100000000111100011111100000001 PCs 01000000000000000000000000000000 contrary 00000000000111110100111000110010 frequent 00000000001110000001000000010000 bound 00000000001011001100110000110010 corner 00000000000111111111000101100111 depository 00000000000000010010000000100001 gallery 00000000000110111111100100000001 strengthened 00000000000001000010111001000000 Telesis 00100000000010000111110110101000 exclude 00000000000001011001101110110010 Sisulu 00100000000000000000000000000000 depreciation 00000000000111100111011100000111 evaluation 00000000000111111000111001100111 reluctance 00000000000111010111111100100111 Wayne 00101111111001001001010100001000 Building 00100000000111010010110001000000 13.8 00000000000000000000000000000000 comeback 00000000000111010011101010100111 speculate 00000000000111011001100110110010 informal 00000000000000101000010100010000 Pennzoil 00100000000111101100001100101000 Volokh 00100000000000000000000000000000 low-income 00000000000000000000000000000000 evaluate 00000000000111011111111110110010 perspective 00000000000111111110011110100001 reduces 00000100010010000011000000010010 Columbus 00100000000111111101001001101000 Minpeco 00100000000110001011101100101000 newsprint 00000000000000010100011010110000 comic 00000000000000000010001000110000 watches 00000000100111100111000000010010 dance 00000000000001000111111100100001 refunding 00000000000000101000000110110000 talent 00000000000111111011100000100001 practical 00000000000000001001000000010000 dictator 00000000000110101001000110110101 Hoffman 00101111111100101000100010001000 Clearly 00100000000101000000001001110010 reward 00000000000111111010110010110111 subsidized 00000000000001011001101001000000 bellwether 00000000000000010011011000010000 Shannon 00101111111111101110000100001000 Plan 00100000000111111111111011100111 owes 00000000001011001101000000010010 Yamaichi 00100000000010101100111000101000 releases 00000000000000001001010000100011 replied 00000000000111101010010111000010 Ways 00100000000111111111111110100011 Bonn 00100000000110100101101101101000 Computers 00100000000111100111111001100011 openly 00000000010100000001001001110010 instant 00000000000000110000010100010000 visits 00000000000110000111001000100011 aided 00000000000101001111010000110010 Microsystems 00100000000000010000100001001000 lucky 00000000000001000111000100101000 privilege 00000000000101101111101001100111 drinking 00000000000111101100110110110111 SDI 01000000000000000000000000000000 settlements 00000000000111000000010000100111 Federated 00100000000111101110001100101000 Simon 00101111111100001100011000001000 ranged 00000000000000011101100100110010 mortgage-backed 00000000000000000000000000000000 impending 00000000000000001100010100010000 deeper 00000000000000000001101111000000 propose 00000000000101100011001110110010 God 00100000000111001110101101101000 ordering 00000000000000101011111101000000 experiencing 00000000000111101010010101000000 Arabia 00100000000000000000000001001000 introducing 00000000000011010011111101000000 favors 00000001110000000011000000010010 pain 00000000000111111110110010100111 evident 00000000000111010001110110010000 Ed 00101111111000000001000000011000 single-A-2 01000000000000000000000000000000 single-A-3 01000000000000000000000000000000 1.125 00000000000000000000000000000000 tourism 00000000000111111011001101100001 affluent 00000000000001000110101000110000 missed 00000000000110000100010000110010 190.58-point 00000000000000000000000000000000 corruption 00000000000111110110100010100111 retains 00000001000100000011000000010010 Further 00100000000000000000101111000000 Khmer 00100000000100011010011010101000 warns 00000000000111100011010111000010 Europeans 00100000000111101010100110110011 mechanism 00000000000111110101000011100111 Xerox 00100000000111101111111100101000 vision 00000000000111101101100101100111 telex 00000000000001101110111100101000 opposes 00000000110100100011000000010010 withdrawn 00000000000101010100010000110010 meat 00000000000010111011111010110000 function 00000000000111111010001000110111 withdrawals 00000000000110111110010000000011 Sierra 00100000000110110000001000110000 Along 00100000000000000011100000110010 supermarket 00000000000000011001111010110000 Magazine 00100000000000000000111101000001 oversight 00000000000101101100100011100001 NL 01000000000000000000000000000000 Banc 00100000000111101110100001010000 anti-abortion 00000000000000000000000000000000 overhead 00000000000000000011011100000111 snapped 00000000000011111011001000110010 hate 00000000000010011110000110110010 Better 00100000000000000001001111000000 unique 00000000000001000000010010010000 midnight 00000000000111111010010000101000 Peterson 00101111111100111110000010001000 exclusively 00000000100000010000010001110010 destroyed 00000001000011010100010000110010 subjects 00000000000111101100000010100011 Lyonnais 00100000000111111011110001111001 proof 00000000000111101110011110101111 reveal 00000000000111001100100110110010 day-to-day 00000000000000000000000000000000 Bernard 00101111111000100010000010011000 alter 00000000000111110000111110110010 Whether 00100000000000000001001101000010 Kravis 00101111111000010001010000101000 nine-month 00000000000000000000000000000000 taste 00000000000111111110010000000001 recommends 00000000101100100011000000010010 issuance 00000000000111111101101001001111 lobbyist 00000000000111000010011110110101 survival 00000000000111111011011010100111 Lipper 00101111111111011111110000101000 combining 00000000000110101111111101000000 Reserves 00100000000111101111100111100011 nonetheless 00000000000111111110101011101000 petrochemical 00000000000010100000011010110000 containing 00000000100010010000000000001010 Cineplex 00101111111111100111101100101000 cooperative 00000000000000010000100000100001 boosts 00000000000000000000000010000011 4.25 00000000000000000000000000000000 91 00000000000000000000000000000000 perfect 00000000000000000000011010010000 comfort 00000000000110110111110100100111 gauge 00000000001101111111110110110010 Russell 00101111111001000001000100001000 resign 00000000010110111101010110110010 Steinberg 00101111111100011100100000001000 Senators 00100000000000000000100110110011 Edelman 00101111111100101010010010001000 radical 00000000000000010001000000010000 replacing 00000000000111100110001101000000 outsiders 00000000000110000111111000110011 funny 00000000000011110000011010010000 1.75 00000000000000000000000000000000 Portfolio 00100000000111101111000010000001 infected 00000000000010010001100000110010 tea 00000000000011010101101100100001 appealed 00000000000010111011101000110010 meets 00000110000010000011000000010010 Milken 00101111111110101000101010001000 length 00000000000101111111111000001111 challenging 00000000000000000001101101000000 Yang 00101111111100101111000100001000 intentions 00000000000111111110111101100011 attendants 00000000000000010111111001110011 marketer 00000000000111111110100001110101 images 00000000001111001111110101100011 desert 00000000000001001101110110101000 listing 00000000000111000010110001000000 editions 00000000000111110101100001000111 improper 00000000000000000110000110010000 translated 00000001101111110010110000110010 utilization 00000000000000000110110011000111 abortion-rights 00000000000000000000000000000000 Stewart 00101111111000100001000100001000 Provigo 00100000001010101111111100101000 senator 00000000000011001001001100001000 painful 00000000000010000001010010010000 beautiful 00000000000000011010011010010000 aims 00000000000111100110101000110010 lowering 00000000000111001011011101000000 mistakes 00000000000111100111011000100011 staged 00000000001101101001010000110010 1.05 00000000000000000000000000000000 philosophy 00000000000110101011101001100111 impressive 00000000000001000000110100010000 forest-products 00000000000000000000000000000000 waters 00000000000110000110000000001000 Beecham 00100000000001110011010100101000 attendance 00000000000001100110111100000111 Pfizer 00100000000011101110111100101000 warming 00000000000110110000110001000000 fate 00000000000111011110111000001111 psychological 00000000001100000010000000110000 perfectly 00000000000001011000000001110010 refining 00000000000111101100100001100001 Ashland 00100000000111101100011000101000 recycling 00000000010100000010110001000000 Investigation 00100000000111111101110001100111 Fried 00100000000000100010111000101000 exhibition 00000000000100101111111001100111 Football 00100000000000000001001100100001 Ted 00101111111000010000101000011000 179 00000000000000000000000000000000 memories 00000000000111111110100100101111 EMS 01000000000000000000000000000000 cross 00000000000110100010110100100001 plate 00000000000110011110111000000001 stalled 00000010000101010100010000110010 Hambrecht 00101111111110010111111010101000 dominate 00000000001001101011111110110010 Natural 00100000000110101101101010110000 shadow 00000000000110111001100101100111 department-store 00000000000000000000000000000000 Call 00100000000111111100000110110010 grim 00000000000000010010011010010000 Cambridge 00100000000111110110101001101000 messages 00000000000011101101110101100011 dive 00000000000111100101111000110111 availability 00000000000111000110111000001111 inches 00000000000000000010100100001011 Rogers 00101111111101111010001000001000 Medicare 00100000000000001000001011100001 Assistant 00100000000110000001001001110000 NSC 01000000000000000000000000000000 ongoing 00000000000000010000010100010000 Socialist 00100000000010001001011000110000 Gillette 00100000000111111011001100101000 Jr 00100000000000000000000000000000 vans 00000000000101101010111001100011 merit 00000000000111000110110100100111 conclude 00000000000100111100100110110010 episode 00000000000010101111111001100111 Fresenius 00100000000000000000000000000000 pressed 00000000001111101101010000110010 CALL 01000000000111111100000110110010 multiples 00000000000111111101011001101111 negotiable 00000000000111101011000001001000 prevented 00000001001111010100010000110010 endorsed 00000000110011000101010000110010 4.875 00000000000000000000000000000000 physician 00000000000101001101011110110101 Neil 00101111111000011000110110011000 ASSOCIATION 01000000000110101011110001010101 TRUST 01000000000000000001010001001000 regain 00000000000000011010111110110010 treasury 00000000000011001011000110110000 predictions 00000000000111111001010000100011 smoothly 00000011000101000000010001110010 Springs 00100000000000101000100010100101 Susan 00100000000000001000001000011000 printed 00000000001011000101101001000000 clause 00000000000000000010110011100111 receivables 00000000000111101000101111100011 Soup 00100000001011010001110000101001 select 00000000000111100110010110110000 clinical 00000000000000000101100000110000 maintains 00000000000011100011010111000010 Filipino 00100000000011011000101000110000 ring 00000000000110101111001010110111 Altman 00101111111100011110111000001000 environmentalists 00000000000110111000111000110011 devastating 00000000000011000001010010010000 soaring 00000000000000100010010001000000 agriculture 00000000000111111011110110110000 Richter 00101111111110011000000000001000 salespeople 00000000000001000100000000110011 rock 00000000000101101110001100100001 cites 00000000001100100011000000010010 wings 00000000000010001100110101100011 accrued 00000000000111111000011100010000 locked 00000000000011011110010000110010 BNL 01000000000000000000000000000000 transform 00000000000111001011111110110010 Midland 00100000000010100001111000101000 sea 00000000000000000000011010101000 shaken 00000000000010010001110000110010 Boyd 00101111111101100100000100001000 considerations 00000000000111110011101010100011 Straszheim 00101111111000000110010010001000 somehow 00000000100100000000001001110010 Gould 00101111111100011001110000001000 declares 00000000000111111111101111000010 Division 00100000000111101110011001110101 realistic 00000000000001001101010010010000 noticed 00000000000110110000110111000010 salesmen 00000000000101101110100000110011 skin 00000000000111111001110000100001 rewards 00000000000111001101111000100011 persistent 00000000000010001000000000010000 missiles 00000000000111101110010110001001 Lawmakers 00100000000000000100010010110011 Ray 00101111111000000011010100001000 literally 00000001001001000000001001110010 likelihood 00000000000111110111110000001111 justice 00000000000111101111110110110000 anger 00000000000111110100111010100111 boys 00000000000111100111100000110011 shortages 00000000000111101110011000100011 U.S.S.R. 01000000000000000000000000000000 gifts 00000000000111001111110101100011 adjusters 00000000000000000000000000000000 Beatrice 00100000000111111111001100101000 obtaining 00000000000001101111111101000000 Signal 00100000000111100111011010110111 preventing 00000000000010000011011101000000 journal 00000000000111101111011101000001 threats 00000000000101100111001000100011 Roth 00101111111001100110100010001000 aspect 00000000000111111011010000001111 columnist 00000000000111110100011110110101 processes 00000000000100001111000000010010 non-U.S. 01000000000000000000000000000000 Azoff 00100000000000000000000000000000 107 00000000000000000000000000000000 fancy 00000000000011101000001000110000 western 00000000000000000100110110101000 guard 00000000000110100110100001111001 equity-purchase 00000000000000000000000000000000 106 00000000000000000000000000000000 MiniScribe 01000000000011011100111100101000 Dozen 00100000000000000000010001010000 Friedman 00101111111101111111100010001000 ethics 00000000000111000111011001010001 conflicts 00000000000100100111111010100111 CS 01000000000000000000000000000000 Neal 00101111111000010101010100001000 issuers 00000000000111100110010000110011 instructions 00000000000111101100101000100011 Speaker 00101111111111111111010110010101 disarray 00000000000010000111111010100111 warnings 00000000000111001011101000100011 computer-driven 00000000000000000000000000000000 destroy 00000000001111101011111110110010 drag 00000000000110010110110110110010 Recently 00100000000000001001001001110010 p.m 00000000000000000000000000000000 boss 00000000000111111110101110000001 Sugarman 00101111111100100110010010001000 portable 00000000001000011000010000110000 Hunter 00101111111000011010000000001000 routinely 00000000001001100000001001110010 78 00000000000000000000000000000000 Hertz 00100000000110001101011100101000 strange 00000000000000001000011010010000 Weisfield 00100000000000000000000000000000 generic 00000000000000111000010000110000 liable 00000000000010111110110000110010 pills 00000000000011001011010001001000 proportion 00000000000111111111101010001111 unauthorized 00000000000000100000000110010000 London-based 00100000000000000000000000000000 beneficial 00000000000001000100001001000000 deduction 00000000000111111011101000111001 Goodwill 00100000000000101100100000100001 private-sector 00000000000000000000000000000000 Prince 00100000000111111011111100001000 drinks 00000000000101011101011111001001 Accounting 00100000000000000010000010110000 bargaining 00000000000000011000110001000000 proven 00000000000010101101101001000000 intraday 00000000000100110000000100010000 photos 00000000000011110111110101100011 reversal 00000000000111110101101010100111 assured 00000000000001011011110000110010 NIH 01000000000000000000000000000000 holiday 00000000000000011000000000100001 Perspective 00100000000111111110011110100001 errors 00000000000111110111011000100011 150,000 00000000000000000000000000000000 complains 00000000000111101011010111000010 tissue 00000000000101100000110000100001 flagship 00000000000000101010010011010000 Helmsley 00100000000101111100000000001000 Conference 00100000000000001000110001000111 fixed-income 00000000000000000000000000000000 imagine 00000000000110110110100110110010 12-year 00000000000000000000000000000000 Louisiana 00100000000110111111110001101000 chaos 00000000000101100111111010100111 inflation-adjusted 00000000000000000000000000000000 drivers 00000000000110100010100000110011 Funds 00100000000110100000000110011001 LBOs 01000000000000000000000000000000 barometer 00000000000111111111100000111111 hedging 00000000000000110010110001000000 definitely 00000000110001000000001001110010 Foley 00101111111101000100111010001000 harm 00000000000111100000111000110111 Travelers 00100000000011100001011000110011 Dave 00100000011000000010101000011000 microprocessor 00000000000000000010101000100001 processed 00000000000011001101101001000000 trees 00000000000111000111010101100011 isolated 00000000000100000101101001000000 Generale 00101111111111110000101000101000 Tony 00100000011000010000011000011000 extreme 00000000000000011011110100010000 accompanied 00000000000111111111010000110010 approaches 00000000000000001111001000100011 Infiniti 00100000000000011100001000100001 herself 00000000000000011011010001110010 Managers 00100000000000000001100010110011 8.2 00000000000000000000000000000000 Year 00100000000111111111111101100010 stick 00000010000101111101010110110010 revival 00000000000111010101101010100111 trips 00000000000110100111001000100011 remarkable 00000000000001000100000010010000 scrambling 00000000000111010110011000110010 prompt 00000000000001010011110110110010 breakdown 00000000000111101101101010100111 Finnish 00100000000001010110100100110000 gambling 00000000010100001011111010110000 slated 00000000000010010110111000110010 lung 00000000000000001000101011100001 write-off 00000000000000000000000000000000 deregulation 00000000000111001110011010100111 riding 00000000010110101110100001000000 suspend 00000000000100110110111110110010 kronor 00000000000000000010100000001011 PASOK 01000000000000000000000000000000 defeated 00000000010111111001010000110010 Lorentz 00100000000000000000000000000000 Medicine 00100000000111101111110010100111 Henderson 00101111111111011000001000001000 Greenville 00100000000111001111101001101000 Everything 00100000000000100010010001110010 Publishing 00100000000000100011011010110000 cheating 00000000000111110101100010100111 bugs 00000000000111111011010101100011 surfaced 00000000100001000110001000110010 waited 00000000100110011110001000110010 Eastman 00100000000011001100101101110000 Koreans 00100000000000000100100100110011 Koch 00101111111000100000001000001000 McGraw-Hill 01000000000000000000000000000000 N.V. 01000000000000000000000000000000 protein 00000000000111001010101000100001 trimmed 00000000000011010011111001000000 forfeiture 00000000000010000101101101001111 pack 00000000000111100111001010110111 treated 00000000100110010010110000110010 Skase 00100000000000000000000000000000 radiation 00000000000010001001110000100001 investigate 00000000000111011100011110110010 jurisdiction 00000000000111101110110000100111 Norcen 00100000000000000000000000000000 defects 00000000000111111001011000100011 treating 00000000000101000001111101000000 vital 00000000000000001100011000010000 Gillett 00100000011001110100110000001000 Stern 00101111111000000001000000001000 Andersson 00100000000000000000000000000000 cost-cutting 00000000000000000000000000000000 Am 00100000000000000100111110000010 pledged 00000000000111011011101000110010 bushel 00000000000111111111111011011111 opponent 00000000000011101011111001100111 socialism 00000000000111010111010010100111 platinum 00000000000110111111101110110000 influenced 00000000001001000001110000110010 Crane 00101111111101100010001000001000 fortunes 00000000000111101110011101100011 92 00000000000000000000000000000000 staying 00000000000111101111000001000000 industrialized 00000000000111001101000100110000 1.35 00000000000000000000000000000000 Meridian 00100000000000011001001010101000 Quebec 00100000000100101111111001101000 13.1 00000000000000000000000000000000 scrambled 00000000001110101011101000110010 Civil 00100000000000010001000000110000 Trinity 00100000000010001111000100101000 firmly 00000001000000000000010001110010 Ireland 00100000000111011101011101101000 Vermont 00100000000110111100110001101000 5.1 00000000000000000000000000000000 Huntsman 00100000000000000000000000000000 softening 00000000000111100111010001000000 Knight-Ridder 01000000000000000000000000000000 contracted 00000000101011101100010000110010 native 00000000000010110000101000110000 bearing 00000000000001000100100001000000 seven-day 00000000000000000000000000000000 commuters 00000000000000000000000000000000 AND 01000000000000000000000010000010 Land 00100000000101100101100000100001 distance 00000000000111101010001010110111 curtail 00000000000001111010111110110010 widen 00000000000110110110111110110010 fun 00000000000111011110110100100111 Eventually 00100000001000000000001001110010 coordinate 00000000000101010010111110110010 obstacle 00000000000111110111101100100111 Commons 00100000000111111011011110100001 eventual 00000000000000011000010100010000 exercised 00000011000011010100010000110010 83 00000000000000000000000000000000 Financing 00100000000000000000001000111001 Activity 00100000000111101100110001100111 Courter 00100000000000000000000000000000 Walker 00101111111000101011001000001000 Water 00100000000000000000110000100001 destruction 00000000000111001010111000001111 11.5 00000000000000000000000000000000 tank 00000000000000001001011000000001 outnumbered 00000000000010000001010000110010 softer 00000000000000010100001111000000 Agnelli 00101111111000000111000000001000 admit 00000000000111110000100110110010 targeting 00000000000011100111111101000000 RU-486 01000000000000000000000000000000 borrowers 00000000000111001111110000110011 discouraging 00000000000010001001010010010000 Murphy 00101111111100001000001000001000 Egg 00100000000000000110101100100001 Using 00100000000011000001111101000000 expectation 00000000000111110111010000001111 downgraded 00000000000111101111111001000000 commit 00000000000111011111001110110010 7.88 00000000000000000000000000000000 disposal 00000000000000010010011101001111 Engineering 00100000000001000001000001100001 myself 00000000000000111011010001110010 allocation 00000000000111101101110101001111 Fred 00101111111000000011100110011000 1.04 00000000000000000000000000000000 7.20 00000000000000000000000000000000 2,500 00000000000000000000000000000000 verdict 00000000000111111110100001100111 2.50 00000000000000000000000000000000 across-the-board 00000000000000000000000000000000 cautioned 00000000000110001111110111000010 inclined 00000000000110111100011000110010 vocal 00000000000000000011000010010000 fluctuations 00000000000111101001111110000011 marketed 00000000000010010000110000110010 homeowners 00000000000110100100111000110011 colors 00000000000100101111110101100011 interfere 00000000000100011001010110110010 appetite 00000000000111111110101100111001 lagged 00000000001011111010110000110010 finances 00000000000111101100101101100011 affidavit 00000000000110011111111001100111 Rich 00100000000111001010011010010000 pro-democracy 00000000000000000000000000000000 demonstrators 00000000000000101100100000110011 dismal 00000000000001010011100000010000 entities 00000000000110001010000100100011 Hispanic 00100000000011001000101000110000 completing 00000000000111101111111101000000 fires 00000000001011001111110101100011 Legal 00100000000100000000000000110000 grocery 00000000000000011101010000110000 economically 00000000001100000000000001110010 governing 00000010000010010000000000001010 fishing 00000000000000101000001010110000 0.25 00000000000000000000000000000000 identity 00000000000011100111111001100111 refunds 00000000000011110101001100000011 threw 00000000010011101001001000110010 monopoly 00000000000111001101001011100111 UAW 01000000000000000000000000000000 slash 00000000001111100110111110110010 occurs 00000000100000000110001000110010 Auto 00100000000000000000001110110000 pools 00000000000100101101110101100011 labeled 00000000000000110101010000110010 ethnic 00000000000100100000000000110000 Citibank 00100000000111111110110100101000 perestroika 00000000000101111111110010100111 passive 00000000000001010000011100010000 capability 00000000000111111111111000001001 capitalization 00000000000111111111100010001111 dog 00000000000111100000010000000001 province 00000000000111111101011001100111 marketers 00000000000000011000000010110011 advancing 00000000000001001110010001000000 excuse 00000000000111001111101100100111 Instruments 00100000000000000000110001111001 lie 00000000100101111101010110110010 headline 00000000000111010011111101100111 floating 00000000000001110000011100010000 demonstrations 00000000000111100010101000100011 draft 00000000000000000000011110110111 selection 00000000000111101111110101001111 Hearst 00100000000101110011111100101000 describe 00000000000100110110100110110010 pockets 00000000000111100011111101100011 fragile 00000000000001001001000010010000 frustrated 00000000000100110101110000110010 loses 00000110010010000011000000010010 processors 00000000000001100111110001100011 Agnos 00100000000000000000000000000000 full-time 00000000000000000000000000000000 bed 00000000000111111110010101010111 channels 00000000000111010111110100100011 cite 00000000000111001101000110110010 narrowing 00000000000110001111010001000000 Md. 00100000000000000000000000000000 unhappy 00000000000110101111110000110010 READY 01000000000001111100011000110010 Relations 00100000000111101101010011111001 dissident 00000000000000100000101000110000 LOAN 01000000000000000000001011100101 13.50 00000000000000000000000000000000 FOREIGN 01000000000000000010010000110000 High-grade 00100000000000000000000000000000 ''. 00000000000000000000000000000000 8.25 00000000000000000000000000000000 MONEY 01000000000111101110010100100111 U.S.A 01000000000000000000000000000000 Fulton 00101111111111111101010110110000 foods 00000000000000001110100000101001 sour 00000000000000011000011010010000 appearing 00000000000111100101000001000000 rubles 00000000000000000000011000001011 frustration 00000000000110110110111010100111 beauty 00000000000111001011111010110000 feelings 00000000000111111101111101100011 publications 00000000000111001100000010101001 free-market 00000000000000000000000000000000 Leslie 00101111111000011100000010011000 Mancuso 00100000000000000000000000000000 criteria 00000000000111101000011100100011 Medicaid 00100000000000011000001011100001 6.3 00000000000000000000000000000000 landscape 00000000000100101111101001100111 barring 00000000011100010000000000001010 flexible 00000000000000100010010010010000 lacks 00000000001100000011000000010010 rallies 00000000000111101010010000000011 authorization 00000000000000000011000100100111 earthquakes 00000000000000000000000000000000 fetch 00000000000111000011001110110010 contacts 00000000000111101100010000100111 Freeman 00101111111100111001100010001000 patterns 00000000000100000001111100100011 discounted 00000000000011000001101001000000 install 00000000001100111111101110110010 Indiana 00100000000110011111110001101000 Cie 00100000000000000000000000000000 Financiere 00101111111111101100101000101000 Unocal 00100000000011101111111100101000 Caribbean 00100000000111111011001110101000 10.2 00000000000000000000000000000000 crush 00000000001110111111110110110010 petition 00000000000111101110100001100111 desks 00000000000111111000000001100011 everywhere 00000000000001010100010001110010 swiftly 00000001000101000000010001110010 Richardson 00101111111011101101001000001000 responses 00000000000111001001101000100011 155 00000000000000000000000000000000 march 00000000000000000010011001100010 Dresdner 00100000000010001001111000101000 magnitude 00000000000111011101111000001111 wines 00000000001111101011110101100011 Marketing 00100000000000000000100001100001 tax-free 00000000000000000000000000000000 Thomson-CSF 01000000000000000000000000000000 approvals 00000000000111111001000100100111 Creek 00100000000000000010100010100101 medium 00000000000110111111100000100001 credited 00000000000100110110010000110010 Aircraft 00100000000000000110001010110000 small-business 00000000000000000000000000000000 engineer 00000000000111001011110000110101 entrepreneurs 00000000000110001000111000110011 bars 00000000000000100111000000010010 designated 00000000000101000001101001000000 Chiron 00100000000111001111111100101000 NEW 01000000000111101111100011110000 captured 00000000001000000101010000110010 stabilizing 00000000000001111111010001000000 smart 00000000000100001000011010010000 Sharp 00100000000000000000100000010000 Science 00100000000100100100001101100001 painted 00000000101000001100010000110010 lure 00000000010110111111110110110010 Looking 00100000000111101110110000110010 crazy 00000000000101110001110101001000 buoyed 00000000000101101111010000110010 lagging 00000000000000011101010001000000 shook 00000000001010001001001000110010 thrown 00000000001111110010110000110010 Guaranteed 00100000000010100001101001000000 precisely 00000000000111101100001001110010 Publications 00100000000111001100000010101001 Federation 00100000000110101101110001010101 chromosome 00000000000000000011111100010000 Pioneer 00100000000111101100100100100001 tire 00000000011000010100001110110000 arrange 00000000001011111111101110110010 Unilever 00100000000011001001010100101000 seven-year 00000000000000000000000000000000 camera 00000000000101010000101000100001 detergent 00000000000011001100001000100001 harsh 00000000000001000001000000010000 Share 00100000000111111111111000011111 Berry 00101111111100110000001000001000 Wood 00101111111100001010111000101000 Roe 00101111111011101010000100001000 spark 00000000000010010011110110110010 Representatives 00100000000110101110101010110011 confused 00000000000010010101110000110010 Barbara 00100000000000000001100000011000 blocked 00000000010000010100010000110010 plot 00000000000110111110111000000001 Bogart 00100000000000000000000000000000 Fitzwater 00101111111101001000001010001000 scenes 00000000000111101001110101100011 eating 00000000000011001110100001000000 pump 00000000001010110110010110110010 Peck 00101111111100011010111000001000 Media 00100000000000000011001010110000 Ratners 00100000000000000000000000000000 Reports 00100000000100101011010000100011 privatization 00000000000111100011110101001111 DeConcini 01001111111011110000111010001000 Whitten 00100000000000000000000000000000 Jeff 00100000000000000000001000011000 Arias 00101111111001101000001010001000 regulated 00000000000011000101101001000000 syndrome 00000000000111101111111111010101 imposing 00000000000100101111111101000000 voluntarily 00000000000101000000010001110010 exploit 00000000000100101011111110110010 Dentsu 00100000000000000000000000000000 Coleman 00101111111101001000001000001000 rents 00000000010100001111000000010010 react 00000000000110100111010110110010 featured 00000000011000000001010000110010 Memories 00100000000111111110100100101111 briefly 00000000001100100000010001110010 slate 00000000000111111011101000111111 relieved 00000000000111001011110000110010 swing 00000000000101101111001010110111 subsidy 00000000000000000000111000111001 8.8 00000000000000000000000000000000 pursued 00000110100111010100010000110010 confirmation 00000000000000000000011101001111 HK$ 01000000000000000000000000000000 Watson 00101111110100011100000010001000 BSN 01000000000000000000000000000000 Princeton 00100000000111101111111000101000 architecture 00000000000111110100001101100001 Middle 00100000000101111111100011010000 awful 00000000000000110110110100010000 Linda 00101111111000001000101000011000 Nobel 00100000000001000101011000010000 bull 00000000000111111110111110110000 neighbors 00000000000110101011110000110011 desirable 00000000000000101101010010010000 IMA 01000000000000000000000000000000 workstations 00000000000111101010111001100011 Learning 00100000000111111100110101000000 Simpson 00101111111110101100111010001000 Norton 00101111111011100001000100001000 correction 00000000000111101011101010100111 statute 00000000000111101111111010011001 Cheney 00101111111100101000111010001000 rushing 00000000000111100110011000110010 autumn 00000000000111101110010000010111 Facilities 00100000000111101101110100100011 Globe 00100000000000011111110000100101 damaging 00000000000000000111010010010000 bell 00000000000001001011001010110000 Dodge 00100000000011000011111100001000 Fair 00100000000000000001011010010000 convenience 00000000000001000101010000110000 mutual-fund 00000000000000000000000000000000 performers 00000000000111101011101001110011 embraced 00000010011011000101010000110010 chicken 00000000000110010100011010110000 Realty 00100000000010001010010010110000 Conservative 00100000000000001000011000110000 taxation 00000000000111100110011010100111 Pinnacle 00100000000000001111000110101000 certificate 00000000000111001010100101100111 Dell 00101111111110011001001000001000 Aristech 00100000000111110001010100101000 recovering 00000000000111111011100001000000 Tucson 00100000000111110101001000101000 unavailable 00000000000100111110110000110010 8.1 00000000000000000000000000000000 Toledo 00100000000110101101101001101000 Argentina 00100000000111111001111101101000 Manufacturing 00100000000000000000011010110000 describing 00000000000111111001101101000000 opposing 00000000000000001011011101000000 FASB 01000000000000000000000000000000 cholesterol 00000000000000001110010000100001 forget 00000000000111110011100110110010 Jefferies 00101111111011101111111010101000 12-month 00000000000000000000000000000000 550 00000000000000000000000000000000 Postal 00100000000111001011110000110000 leg 00000000000111100110111000111111 catastrophic 00000000000111000101000000110000 Banxquote 00100000000111101010010110110000 consist 00000000000001100100110111110111 Patrick 00101111111000001001010100001000 Ga. 00100000000000000000000000000000 Allied 00100000000001001110000100101000 laptop 00000000001010011000010000110000 Irvine 00100000000111111111001001101000 Up 00100000000000000000001100110010 Roebuck 00101111111111111101101001001000 Census 00100000000111101111110101100001 Capel 00101111111111111001101001001000 refugees 00000000000111000000100000110011 Rosenthal 00101111111111101110100010001000 Batman 00100000000000000000000000000000 pouring 00000000000001000111100001000000 Montgomery 00101111111000100100111000101000 Hammond 00101111111100100100001000001000 milestones 00000000000111111111110101101111 Yetnikoff 00100000000000000000000000000000 assess 00000000000111110010011110110010 Joel 00101111111000001100000010011000 strengthening 00000000000110000111010001000000 sequester 00000000000000000000000000000000 unveil 00000000000111110011011110110010 N.C 01000000000000000000000000000000 trials 00000000000111101010001000100011 manipulate 00000000000100111011111110110010 accurate 00000000000000000010001110010000 prestigious 00000000000010100100000010010000 Bros. 00100000000000000000000000000000 safer 00000000000000110101001111000000 Trans 00100000000000101001010100101000 US 01000000000000010001010001110010 Mosbacher 00101111110101001000000010001000 Fossett 00100000000000000000000000000000 ideological 00000000001100100000000000110000 splits 00000000000000110110000010100111 cushion 00000000000111011111110010110111 pros 00000000000111101010000010110011 Illuminating 00100000000000000011001001111001 activist 00000000000111100111000000110101 insisting 00000000000110001101111010000010 forever 00000000000000100100010001110010 viable 00000000000011010000010010010000 30-share 00000000000000000000000000000000 participated 00000000000111011110010000110010 Ocean 00100000000111110010001010110000 exists 00000000000100100110001000110010 soil 00000000000111100111010010100111 dipped 00000000000000110101000100110010 first-half 00000000000000000000000000000000 timetable 00000000000111111101001111100111 statistical 00000000000000000101000010110000 fits 00000001100010000011000000010010 Based 00100000000111111110100000110010 anniversary 00000000000000000000011101000111 taught 00000000000001000101010000110010 degrees 00000000000000000000000101011011 2001 00000000000000000000000000000000 Penney 00100000000001101011000001001000 J.C. 01000000000000000000000000000000 declaration 00000000000111101100001011100111 Appeals 00100000000000000000111111100101 upheld 00000000001111111001010000110010 HomeFed 01000000000000000000000000000000 Whittle 00100000000111000010110000001000 pregnancy 00000000000001111111110010100111 McDuffie 01000000000000000000000000000000 disposable 00000000000010111000010000110000 formation 00000000000111010110111000001111 collecting 00000000000010101111111101000000 associations 00000000000110101001110001010101 voices 00000000000101001001111101100011 aging 00000000000000100110101000110000 Beyond 00100000000000101001000000001010 sorts 00000000000111111111000100101111 Wis. 00100000000000000000000000000000 ourselves 00000000000000101011010001110010 Title 00100000000111110110100101100111 Inco 00100000000110101000111100101000 unfortunate 00000000000000100101110100010000 reconsider 00000000001111111010111110110010 ailing 00000000000000001100101001000000 Reform 00100000000111101010111000111001 Cabrera 00100000000000000000000000000000 shoulder 00000000000110110101111010110111 Intelogic 00100000000000000000000000000000 anticipating 00000000000111110110110101000000 Guzman 00100000000000000000000000000000 courtroom 00000000000000110011110000000001 ranking 00000000000111111001011000010000 monitored 00000000011010010001110000110010 moderately 00000000000110001000010001110010 disciplinary 00000000000001000001000000110000 Prof. 00100000000000000000000000000000 samples 00000000000100001010001000100011 collective 00000000000110110010000000110000 obstacles 00000000000110101111001000100011 compensate 00000000000111111001001110110010 lean 00000000000100100101110110110010 trash 00000000000110100000110000100001 175 00000000000000000000000000000000 shore 00000000001110110110010110110010 instituted 00000001110001101100010000110010 pricings 00000000000111111000011000100011 shutdown 00000000000111111111101101001111 fared 00000000011100010010110000110010 Takeover 00100000000000000010001100010000 Reliance 00100000000111111000010100101000 reversed 00000000000001111001010000110010 trademark 00000000000111100100100000100001 7.25 00000000000000000000000000000000 one-day 00000000000000000000000000000000 assurance 00000000000000011110010001110010 deliberately 00000000001110000001001001110010 Keystone 00100000000010001000111100101000 persons 00000000000000000001000100110011 solved 00000001000010010010110000110010 placement 00000000000111101000000100001001 standstill 00000000000000011001001100010000 heightened 00000000000001001101010001000000 2-for-1 00000000000000000000000000000000 Nancy 00101111111000000000001100011000 Greenberg 00101111111100110000100010001000 Roderick 00101111111000001110100010001000 slumped 00000000000010010001000100110010 stretched 00000000100001110010110000110010 valid 00000000000010010000010010010000 redeemed 00000000000110010000010000110010 1.02 00000000000000000000000000000000 terminal 00000000000110100100111000000001 bags 00000000000111000000000000100111 disobedience 00000000000000000000000000000000 theft 00000000000110111111100010100111 Furthermore 00100000000111111100101011101000 humor 00000000000101101111110010100111 breaker 00000000000111111010101011010101 alcohol 00000000000010000011110000100001 Leo 00101111111000010100000010011000 firmed 00000000000000100101000100110010 Newsweek 00100000000111111000110100101000 halts 00000000000111111010101001100010 Imports 00100000000111101100000100000111 prohibited 00000000100111010100010000110010 Jonathan 00101111111000000100010110011000 skidded 00000000000000010001000100110010 Weiss 00101111111110101011001000001000 rail 00000000000010000001111010110000 medium-sized 00000000000000000000000000000000 speaking 00000000000111111011000001000000 justified 00000000001011000001110000110010 welfare 00000000000000010000001011100001 arrive 00000000001101011101010110110010 gathered 00000000010000001100010000110010 Lazard 00101111111111100011011000101000 mystery 00000000000110001011111101100111 spreading 00000000000111001101010001000000 5.6 00000000000000000000000000000000 ink 00000000000110101101110100100001 Ten 00100000000111111100111001010000 Irving 00100000000011000001111000101000 converting 00000000000111111010001101000000 natural-gas 00000000000000000000000000000000 retreat 00000000000111110011101100110111 noncallable 00000000000111011110110000110010 anytime 00000000000000001110000000101010 Laff 00100000000000000000000000000000 collected 00000000100011001100010000110010 diplomatic 00000000000010000000000000110000 Consumers 00100000000111100010111000110011 implies 00000000000101010011000000010010 persuaded 00000000000010101101010000110010 objections 00000000000111110101101000100011 Hart 00101111111100110100101010001000 unsuccessfully 00000000000101000001001001110010 assumes 00000000011100100011000000010010 Broad 00100000000000000110100000010000 unload 00000000000100010110001110110010 tracked 00000000010101100111010000110010 Stoll 00100000000000000000000000000000 10.5 00000000000000000000000000000000 Intermediate 00100000000000000001101010101000 reviews 00000000000110111110001000100011 musical 00000000000000000000001100100001 stays 00000000000100101000001000110010 appreciate 00000000000111011110100110110010 lender 00000000000111100111101010110101 respected 00000000000001000001000010010000 PLO 01000000000000000000000000000000 pessimistic 00000000000011011111110000110010 Needham 00100000000111111100010000001000 concludes 00000000000111110011010111000010 Owen 00101111111001001000110010001000 relied 00000000000111000000100000110010 Palestinian 00100000000000000001011000110000 ASSETS 01000000000111111111110111100011 reacting 00000000001001101010111000110010 LYNCH 01000000000000000100001001001000 MERRILL 01000000000111111011100000101000 days. 00000000000000000000000000000000 knight 00000000000000001010000000001000 CORP 01000000000000000000000000000000 HOME 01000000000000000000010110100001 removal 00000000000111111111111101001111 laboratory 00000000000000111000100000100001 termed 00000000000111110101010000110010 OFFERED 01000000000110100000010000110010 INTERBANK 01000000000001001111001001110010 sponsored 00000000000011101111010000110010 EURODOLLARS 01000000000111111100101001100010 LATE 01000000000000000001010100110010 GEC 01000000000000000000000000000000 bank-backed 00000000000000000000000000000000 Negotiable 00100000000111101011000001001000 ACCEPTANCES 01000000000001010101010001001000 BANKERS 01000000000110101110001111110011 C.D.s 01000000000000000000000000000000 DEPOSIT 01000000000000000000001110100001 CERTIFICATES 01000000000111111111111100101111 pressured 00000000000111011000110000110010 TVS 01000000000000000000000000000000 licensed 00000000000111000101101001000000 attitudes 00000000000111101110111101100011 119 00000000000000000000000000000000 MTM 01000000000000000000000000000000 Between 00100000000000000011000000001010 rental 00000000000001100000001010110000 DISCOUNT 01000000000111110010010011000111 Prebon 00101111111000000011100101001000 Way 00100000000111111111111100010111 convince 00000000000110110111111110110010 1.85 00000000000000000000000000000000 hide 00000000000101011110101110110010 pair 00000000000111111110111101111111 nominal 00000000000011010000011100010000 Temple 00100000001100111100000000001000 visiting 00000000000000100110101001000000 Dunkin 00100000000111111111001111110011 Olympics 00100000000001000001010001100111 dismissal 00000000000111110011111101001111 Quist 00101111111111010111110001001000 unwilling 00000000000111100100011000110010 partially 00000000010000001011000001110010 desktop 00000000000101011000010000110000 70,000 00000000000000000000000000000000 Pharmaceutical 00100000000001011011011010110000 sue 00000000000110110110001110110010 freely 00000000011011000000010001110010 disks 00000000000011101111010100001001 barrier 00000000000111001101111101100111 Loral 00100000000110100011111100101000 lengthy 00000000000001001001000000010000 fibers 00000000000111100011011111001001 extending 00000000000110111001011101000000 Dale 00101111111001011100000010011000 smooth 00000000001001100101110110110010 pure 00000000000001000010011010010000 steal 00000000000011001110101110110010 la 00001111111111111001001101110000 fraudulent 00000000000000110000000110010000 Specialized 00100000000011000100101010110000 9.9 00000000000000000000000000000000 universities 00000000000111100101110001100011 enemy 00000000000011110111111001100111 escaped 00000011001011000101010000110010 Theatre 00100000000100000011000100000001 reckless 00000000000000111100000110010000 drafted 00000000000110111001010000110010 streamlining 00000000000101100111010001000000 child-care 00000000000000000000000000000000 Alberta 00100000000111100101101001101000 bourbon 00000000000001001100001000100001 reviewed 00000000000111010100010000110010 Blumenfeld 00100000000000000000000000000000 SmithKline 01001111111110101000100100101000 tonight 00000000000001101100010001110010 dramatically 00000000000001101000010001110010 diversification 00000000000010000001101000111001 8.9 00000000000000000000000000000000 Conservatives 00100000000111101111010110110011 walking 00000000010111110110100001000000 scientist 00000000000111111101011110110101 stepping 00000000001111110110100001000000 river 00000000000000000000100010100101 syndication 00000000000011110010100001100001 random 00000000000000100101011010101000 Minn. 00100000000000000000000000000000 Daimler-Benz 01000000000000000000000000000000 60,000 00000000000000000000000000000000 yellow 00000000000010111010001000110000 farms 00000000000001001001100000101001 purchasers 00000000000110100000100000110011 Rockwell 00100000000111101111010100101000 2.85 00000000000000000000000000000000 Boys 00100000000111100111100000110011 Montedison 00100000000111101011101100101000 Academy 00100000000110101110110001010101 knowing 00000000000111001101111010000010 industrywide 00000000000000010000000100010000 105 00000000000000000000000000000000 Del. 00100000000000000000000000000000 Wash. 00100000000000000000000000000000 incorporated 00000000001011011110010000110010 Kaufman 00101111111100001000111000001000 Battle 00100000000111111111110000100111 Riegle 00101111111111000110010010001000 catalyst 00000000000111101110100000100001 denying 00000000000101111001011101000000 index-arbitrage 00000000000000000000000000000000 winner 00000000000111101000100101100111 lacked 00000000000000111011000000010010 1929 00000000000000000000000000000000 hardest 00000000000000000100111000110010 Said 00100000000111111111110011000010 wondering 00000000001111001110010001110010 impression 00000000000111100111110000001111 renewing 00000000000000101101011101000000 offensive 00000000000011000011001100100111 freedoms 00000000000101110111101001100111 incorrectly 00000000000100000001001001110010 acknowledge 00000000000111110001100110110010 socialist 00000000000010001001011000110000 3.18 00000000000000000000000000000000 enthusiasm 00000000000111111101101100111001 exodus 00000000000111100100111001100111 Shortly 00100000000100110000010001110010 Embassy 00100000000111111100101100100101 1950s 00000000000000000000000000000000 assault 00000000000111111011100100100111 naval 00000000000000001011110000110000 Casualty 00100000000111101111101011100101 Man 00100000000111101110110010110101 devaluation 00000000000111000011101010100111 Worth 00100000000101000001110000011101 infrastructure 00000000000111110101001101100001 mount 00000000000111111111100110110111 spree 00000000000000010010001000100111 situations 00000000000111111100000010100011 felony 00000000000000010000010000010000 non-violent 00000000000000000000000000000000 faith 00000000000111110010001110100111 rumor 00000000000111011011111101100111 Fournier 00100000000000000000000000000000 implemented 00000000100011010100010000110010 Sunnyvale 00100000000111111100101001101000 disappointments 00000000000111111100010000000011 hole 00000000000111111001111010110101 clash 00000000000100001110110000100111 offshore 00000000000000100101101000110000 pose 00000000000110101001101110110010 examine 00000000000111011110011110110010 platform 00000000000111110011101001100111 prevents 00000000100000110001000000010010 Dreyfus 00100000000111110101011100101000 backers 00000000000011110010000010110011 deserve 00000000000111100011000110110010 Budapest 00100000000101010011111001101000 Pace 00100000000111101111011001000111 OK 01000000000000000000000000000000 resigning 00000000000011111011100001000000 curbs 00000000000111110110100100100111 rigid 00000000000111010101000000010000 7.10 00000000000000000000000000000000 Highland 00100000000001101010011010101000 Plans 00100000000111111110101000110010 naturally 00000001100100000000001001110010 score 00000000000111101111001010110111 critic 00000000000111110111110000110101 determining 00000000000111111001011101000000 undoubtedly 00000000011001000000001001110010 exciting 00000000000000001010001110010000 aviation 00000000000000001110010010110000 lifetime 00000000000111011011110000000001 proving 00000000000111000101110101000000 Employees 00100000000000000010000000110011 defending 00000000000111001001011101000000 spy 00000000000100001000001010110000 ousted 00000000000000111010010000110010 positioned 00000000010101101100110000110010 riders 00000000001001110111110101100011 tracking 00000000000111100010110001000000 Levy 00101111111101001010001000001000 marriage 00000000000111101011110000000001 Demand 00100000000111101110100100111001 mid-1990s 00000000000000000000000000000000 Robinson 00101111111100111010001000001000 attending 00000000000111101011100101000000 Exterior 00100000000000110010110100000001 criminals 00000000000101101100100000110011 Scoring 00100000001101101110100001000000 PWA 01000000000000000000000000000000 external 00000000000000001001000100010000 excitement 00000000000101110110111010100111 Saul 00101111111000100100011100001000 retreated 00000000000001010001000100110010 recommending 00000000000101000101110101000000 230 00000000000000000000000000000000 double-A 01000000000000000000000000000000 devoted 00000000000010001100110000110010 nervousness 00000000000101111110111010100111 O'Kicki 01000000000000000000000000000000 flew 00000000000000011100001000110010 alike 00000000001001010100010001110010 bleak 00000000000000000101100000010000 Lexington 00100000000101110111101001101000 significance 00000000000111111101111000001111 prosecutions 00000000000111010011110000100011 king 00001111111100100011100000001000 Kleinwort 00101111111111100101101000101000 lawn 00000000000111100100101010110000 Night 00100000000111101011110000010111 prescription 00000000000011011000010000110000 Arafat 00100000001111110000101010001000 allocated 00000000000010011000110000110010 floors 00000000000000001010000001100011 hell 00000000000111111111001010110111 occasions 00000000000110010100000010100011 damp 00000000000001000110111110110010 empty 00000000000000010011110100010000 decent 00000000000000000100101010010000 Typically 00100000010001100000001001110010 reconciliation 00000000000000000011111111111001 Herbert 00101111111000101000000010011000 600,000 00000000000000000000000000000000 tune 00000000000111101001001010110111 horizon 00000000000111110111111000000001 Kent 00101111111001000000000100001000 demonstrated 00000000000110110101110111000010 BILLS 01000000000100100100110010000111 maneuver 00000000000111001101111000110111 TREASURY 01000000000011001011000110110000 bay 00000000000000000001010010100101 undisclosed 00000000000000010001100100010000 contemporary 00000000000001101000001000110000 builds 00000000000000101101000000010010 fledgling 00000000000000111100010000110000 sympathetic 00000000000010010001010010010000 cutbacks 00000000000111110101011000100011 trained 00000000000001110100010000110010 Shaw 00101111111010101101001000001000 tariffs 00000000000111101110100100000011 cement 00000000000001010100011010110000 proud 00000000011111101011110000110010 generating 00000000000000010011110001000000 Venture 00100000000000010101000000100111 coins 00000000000100000111110001111001 bold 00000000000000011001000000010000 Researchers 00100000000000000110000010110011 resisted 00000100000111010100010000110010 propaganda 00000000000000110000001100100001 leased 00000000001111000101101001000000 entitled 00000000000111111000011000110010 apartments 00000000000111101010101001100011 neutral 00000000000010101100010010010000 demise 00000000000111110101011000001111 Ruth 00100000000101100011010100001000 proponents 00000000000001111010000010110011 intact 00000000000010100100010001110010 149 00000000000000000000000000000000 innocent 00000000000001100001110110010000 belong 00000000000111110011000110110010 Renault 00100000000101110011101100101000 reinforce 00000000000111011100111110110010 subsequently 00000000000000011001001001110010 8.05 00000000000000000000000000000000 Electronic 00100000000000000000101010110000 counseling 00000000000110000000101101100001 inability 00000000000111100111111100100111 ill 00000000000111001110110100100001 uncovered 00000001010001101100010000110010 induce 00000000000001010011111110110010 gear 00000000000111101000011001001001 polled 00000000001000010000010001110010 exploring 00000000000111101110010101000000 7.98 00000000000000000000000000000000 possibilities 00000000000111110111001110100011 boasts 00000000000100111011010111000010 nomination 00000000000111111111000001100111 besides 00000000000111101001101001000010 second-quarter 00000000000000000000000000000000 Leschly 00100000000000000000000000000000 creativity 00000000000111010110110010100111 Advisers 00100000000110101110010110110101 choosing 00000000000001111010111000110010 write-down 00000000000000000000000000000000 revamped 00000000000000100010111001000000 low-cost 00000000000000000000000000000000 Institutions 00100000000111101111011001110011 4.1 00000000000000000000000000000000 lent 00000000010011000100010000110010 miss 00000000000111100011111100001000 battery 00000000000011111111001000100001 7.3 00000000000000000000000000000000 Out 00100000000000000000011100110010 prospectus 00000000000111101110101111100111 elements 00000000000111100111100100101111 proteins 00000000000110011001111001100011 unsettled 00000000000011011101101001000000 solicitation 00000000000100001010001011100111 divestiture 00000000000111100011111101001111 demonstrate 00000000000001111100100110110010 Rubens 00100000000000000000000000000000 Crude 00100000000111101110011000101000 breakup 00000000000000000001110101001111 indexing 00000000000111101100111000111001 outright 00000000000000010000000110010000 Review 00100000000111111111111110110111 Would 00100000000000000000000110010010 NED 01001111111010010100001000011000 stunned 00000000001011001101110000110010 directed 00000000001110000101010000110010 hailed 00000000001110000010110000110010 corrected 00000000101111010100010000110010 reference 00000000000110110111111100100111 birth 00000000000000000101011011100001 Weyerhaeuser 00100000000101100010111100101000 Macy 00100000000111011101110000001000 McCain 01000000000000000000000000000000 far-reaching 00000000000000000000000000000000 Atlantis 00100000000011001011010100101000 Bobby 00100010111001100000001000011000 discourage 00000000001011101011111110110010 10.4 00000000000000000000000000000000 Newark 00100000000111011111101001101000 candy 00000000000000101011111010110000 profile 00000000000100101110111001000111 Gates 00101111111100000111001000001000 five-cent 00000000000000000000000000000000 proxy 00000000000000000110111000110000 intimate 00000000000001010000110100010000 shrinking 00000000000110001101010001000000 accelerated 00000000000000001100111001000000 nonprofit 00000000000000101100010000110000 Leningrad 00100000000100110011111001101000 7.1 00000000000000000000000000000000 Mario 00101111111011011110010000011000 115 00000000000000000000000000000000 inflated 00000000000000011001101001000000 cooperate 00000000000101101001010110110010 Orkem 00100000000000000000000000000000 ideal 00000000000000000110110100010000 delivering 00000000000001101011111101000000 actors 00000000000000000101000110110011 Goldsmith 00101111111110011000001010001000 Valhi 00100000000101101010111100101000 C 00100000000000000000000000000000 dubious 00000000010101000001000000010000 anti-takeover 00000000000000000000000000000000 Genentech 00100000000111011011001100101000 insulin 00000000000101100101110000100001 Bofors 00100000000100011100110100101000 counties 00000000000000001000110001100011 debt-limit 00000000000000000000000000000000 precedent 00000000000111101101111010110101 Benjamin 00101111111000000111010100001000 lobbyists 00000000000010010110000010110011 builders 00000000000000110111100000110011 toxin 00000000000000000000000000000000 bounce 00000000000111111000011000110111 catastrophe 00000000000111000010101101100111 anti-drug 00000000000000000000000000000000 underwritten 00000000000010101111010000110010 sustain 00000000000110110011111110110010 Hyundai 00100000000111010011011000101000 plain 00000000000011000010011010010000 accompanying 00000000000001110000000000001010 moments 00000000000111100100000010100011 Anne 00101111111000010000001000011000 disrupted 00000000011011010001110000110010 Mirage 00100000001001101010001010110000 beating 00000000000111011010100001000000 museum 00000000000010100111010100000001 reiterated 00000000000000000111110111000010 amendments 00000000000011011011001000100011 Semiconductor 00100000000000000101011010110000 300-day 00000000000000000000000000000000 accusations 00000000000111101100110000100011 forecasting 00000000000000001000110001000000 merchants 00000000000010000010101111110011 sworn 00000001000001110010110000110010 photographs 00000000000001111101110101100011 repaid 00000000001011000000010000110010 relies 00000000000001110000100000110010 erode 00000000000111000110111110110010 9.7 00000000000000000000000000000000 boxes 00000000000000110101110101100011 Afghanistan 00100000000111100101011101101000 Ruder 00101111111001101000110010001000 1960 00000000000000000000000000000000 Grumman 00100000000110100111011100101000 6.8 00000000000000000000000000000000 indefinitely 00000000001100100100010001110010 consumed 00000000001100001100010000110010 distributors 00000000000111010110010000110011 gray 00001111111100100011000000001000 Ann 00101111111010000011110000011000 minorities 00000000000111111100111000110011 omnibus 00000000000110111011101010100001 casualty 00000000000111101111101011100101 questionable 00000000000000001010000110010000 Courtaulds 00100000000000000000000000000000 Clara 00100000000000011000000001001000 softness 00000000000100111011111010100111 white-collar 00000000000000000000000000000000 Schwarz 00101111111010110101000010001000 Construction 00100000000000000000001001100001 fixed-price 00000000000000000000000000000000 teach 00000000000011111011111110110010 humans 00000000000111101100101101101000 containers 00000000000111101101100111001001 borough 00000000000001000010010000110101 8.75 00000000000000000000000000000000 Penn 00100000000010000010111000101000 bracing 00000000001111011110110000110010 denominations 00000000000000000011100100001011 tendency 00000000000110111101111100100111 Panamanians 00100000000001000111111000110011 Look 00100000000111110101010110110010 mid-1970s 00000000000000000000000000000000 addressed 00000000010110010010110000110010 Lantos 00100000000000000000000000000000 rational 00000000000000110000010010010000 performances 00000000000111111111011010100111 peaked 00000000000001000110001000110010 repayment 00000000000100000001111101001111 exceeds 00000000000011001001000000001010 Random 00100000000000100101011010101000 NBI 01000000000000000000000000000000 pachinko 00000000000000000000000000000000 overly 00000000000011011000000001110010 charts 00000000000110111010001000100011 decreased 00000000000000000001011001000000 Petrie 00101111111001000010110000001000 Cocom 00100000000001001100001011100001 speaker 00001111111111111111010110010101 parliamentary 00000000000000010000111000110000 high-school 00000000000000000000000000000000 drifted 00000000000000010011001000110010 300,000 00000000000000000000000000000000 1.20 00000000000000000000000000000000 dates 00000000000010001110001000100011 Birmingham 00100000000111110010101001101000 penny 00000000000111011111000001000111 neck 00000000000111111111010000000001 rebuild 00000000001011111010111110110010 wildly 00000000011000111000000001110010 confusing 00000000000011101001010010010000 gather 00000000000001011110101110110010 Indianapolis 00100000000110001111111001101000 Klein 00101111111110100000001000001000 liberals 00000000000111111000100110110011 narrowly 00000000001000100001001001110010 island 00000000000100000101000010100101 sad 00000000000001100010011010010000 devised 00000000001110111001010000110010 weigh 00000000000100101111001110110010 Namibia 00100000000111000001011101101000 auctions 00000000000111110100110100100011 stream 00000000000110101011011001000111 fast-growing 00000000000000000000000000000000 84 00000000000000000000000000000000 spreads 00000000000100000111001000100011 Par 00100000000111101101010000101000 pegged 00000000001111001100110000110010 Cosby 00100000000000010100100000001000 7.52 00000000000000000000000000000000 Personal 00100000000000001000010000110000 8,000 00000000000000000000000000000000 prohibit 00000000000111111001101110110010 restraint 00000000000111001000110001100111 1.10 00000000000000000000000000000000 clout 00000000000111110011110100100111 Recognition 00100000000110101010011010100111 beneath 00000000001010100001000000001010 racing 00000000000111100000110001000000 styles 00000000000000000001001001100111 Humana 00100000000110110111111100101000 conferees 00000000000000000100100110110011 Wachovia 00100000000000000000000000000000 violating 00000000000101111111011101000000 6.2 00000000000000000000000000000000 guerrillas 00000000000111101000101110110011 survived 00000000000101000101010000110010 crackdown 00000000000111110011001011100111 mall 00000000000111101100100000100001 sweet 00000000000100100110011010010000 Siemens 00100000000111101101111100101000 takeover-related 00000000000000000000000000000000 resist 00000000000011010011111110110010 brisk 00000000000000001111100000010000 terminals 00000000000111101110101001100011 daughters 00000000000111101010011100110011 killings 00000000000111111011110101100011 labels 00000000001110101111110101100011 1.19 00000000000000000000000000000000 Madrid 00100000000000001111111001101000 tightening 00000000000111000111010001000000 Hess 00101111111000001101111000001000 provisional 00000000000001101001001100010000 Burt 00101111111000000010001010011000 nights 00000000000000000000111100011011 Trotter 00100000000000000000000000000000 supervisor 00000000000111100111011110110101 Chile 00100000000111110011111101101000 withstand 00000000000111010111111110110010 friendship 00000000000001101110110000100111 Communication 00100000000011001010010010110000 backs 00000000010100100111000000010010 uncertainties 00000000000011101110111010100111 Sharon 00100000000111010010111000101000 Wheat 00100000000010100011101110110000 linking 00000011000010010000000000001010 Jupiter 00100000000000000000000000000000 setbacks 00000000000111011010011000100011 lesser 00000000000000111000010000010000 Global 00100000000001101010000000110000 troubling 00000000000000010101010010010000 longer-term 00000000000000000000000000000000 downgrade 00000000000111111111010101110111 new-issue 00000000000000000000000000000000 diabetics 00000000000000000000000000000000 Exports 00100000000111101110100100000111 135 00000000000000000000000000000000 10.6 00000000000000000000000000000000 linage 00000000000111111110101110111001 Generally 00100000000010100000001001110010 inevitably 00000000001100000000001001110010 Reed 00101111111100001010001000001000 aboard 00000000000001100001000000001010 government-owned 00000000000000000000000000000000 Mullins 00100000000000000000000000000000 Stock-index 00100000000000000000000000000000 enabled 00000000000010110111010000110010 bacteria 00000000000100111101110010100111 weapon 00000000000100111101111101100111 Dodd 00101111111111001100111010001000 overwhelming 00000000000000000101110100010000 pickup 00000000000001100000100000100001 teaches 00000011000011100011000000010010 prevailed 00000000110000000110001000110010 Hollander 00100000000000000000000000000000 Wade 00101111111110101110000100001000 franc 00000000000111101111001010101000 fierce 00000000000000110000000000010000 refusal 00000000000111110111111100100111 touched 00000000000101101001001000110010 Pretoria 00100000000111101010101101101000 testified 00000000000101000111110111000010 Highway 00100000000000000110010010110000 Serial 00100000000000011000000110110000 Maurice 00101111111000010110110110011000 assurances 00000000000111100111100110101111 Assets 00100000000111111111110111100011 Skipper 00100000000000000000000000000000 Thornburgh 00101111111010100101000010001000 Sandinista 00100000000100000001011000110000 inner 00000000000010101000001000110000 appellate 00000000000000000001100111100101 9.2 00000000000000000000000000000000 soldiers 00000000000100101110100000110011 modernize 00000000000011111010111110110010 Kaiser 00100000000110101010111000101000 broadcasts 00000000000101000101110101100011 S 00100000000000000000000000000000 Eric 00101111111000001001000110011000 midday 00000000000111011100010000101000 county 00000000000011000000110010100101 burned 00000000000101001100010000110010 Masson 00100000000000000000000000000000 exploded 00000000001110100110001000110010 stabilized 00000000000110111010110000110010 tree 00000000000111100100111000000001 superconductors 00000000000000011110111001100011 sun 00000000000111101111011000101000 intervene 00000000000101011001010110110010 notable 00000000000000100100000010010000 volunteer 00000000000000000000100110110111 telephones 00000000000111011110111001100011 charitable 00000000000101100000000000110000 illustrates 00000000000100010011000000010010 Shareholders 00100000000111101110111010110011 Papandreou 00101111111000000100001010001000 nationally 00000000000000010111000001000111 Mattel 00100000000111011011111100101000 Scotland 00100000000111101001011101101000 Sorrell 00101111111100100000001010001000 advocate 00000000000111101100011001101111 capitalism 00000000000111101110110010100111 disappear 00000000000100111101010110110010 2.75 00000000000000000000000000000000 artistic 00000000000000100100000000110000 Higher 00100000000000000000011111000000 Lomas 00101111111111101011111010101000 H&R 01000000000000000000000000000000 blames 00000000001111100011000000010010 gamble 00001111111111111011110001001000 fairness 00000000000000001111011011100001 Does 00100000000011101100111100010010 questioning 00000000000111101111010001000000 Chan 00100000000000000000000000000000 state-controlled 00000000000000000000000000000000 heels 00000000000111110101111000001111 mid-1980s 00000000000000000000000000000000 installations 00000000000111101100110100100011 unrest 00000000000111111011111010100111 Haven 00100000000000011001011110000010 Baxter 00101111111100110110110000001000 discouraged 00000000000010110001110000110010 Carol 00101111111000000111000000011000 masters 00000000000010001110000000001000 Nikko 00100000000000000100111000101000 8.375 00000000000000000000000000000000 scholars 00000000000100010010000010110011 spare 00000000000001000100101010110000 middle-class 00000000000000000000000000000000 plead 00000000000110011001010110110010 Pharmaceuticals 00100000000111111011111010110000 furs 00000000000000000000000000000000 taxpayer 00000000000011111010111000100001 upgrade 00000000011011111111110110110010 Noting 00100000000111110111111010000010 DaPuzzo 01001111111000100110000010001000 adopting 00000000000111111010111101000000 disruption 00000000000111000111101010100111 Democracy 00100000000111101011110010100111 Scottish 00101111111011010101001000110000 staffs 00000000000101111100111101100011 restriction 00000000000110111011001011100111 fails 00000000000010000001101000110010 tripled 00000000000100011010110000110010 Vargas 00101111111100100010101010001000 watchers 00000000000000010010000010110011 cans 00000000000110000001011111001001 bail 00000000000110001110101110110010 USIA 01000000000000000000000000000000 bounced 00000000000111001011001000110010 fashionable 00000000000001110100000010010000 sliding 00000000000010011010010001000000 classified 00000000000000011001000110010000 projection 00000000000111110011011010110111 Music 00100000000010000001111100100001 cure 00000000000111110111110010110111 girl 00000000000111101100110010110101 Seng 00100000000000000101100011010000 highways 00000000000110111110111001100011 Aside 00100000000000001001111100110010 relatives 00000000000101101011110000110011 narrator 00000000000110100110100001100111 Peladeau 00100000000000000000000000000000 dominance 00000000000111110000111001100111 actress 00000000000111101001100000110101 admitting 00000000000111011111010101010000 Posner 00101111111100111110101010001000 annualized 00000000000011111001000101010000 cleaner 00000000000000000111110110110111 circles 00000000000111101100000100100011 exotic 00000000001000010000001000110000 forgotten 00000001100010010010110000110010 unfairly 00000000100101000001001001110010 picks 00000000000001010011001000110010 15.6 00000000000000000000000000000000 dilemma 00000000000111110011111101100111 accelerate 00000000000110110010111110110010 minus 00000000000000100010011010000010 Polly 00100000000000000000000000000000 fraction 00000000000111111110101110111111 library 00000000000111111011010100000001 greenhouse 00000000010100011010000000110000 cable-TV 01000000000000000000000000000000 CMS 01000000000000000000000000000000 Va 00100000000000000000000000000000 fastest-growing 00000000000000000000000000000000 Good 00100000000000000000001010010000 facsimile 00000000000111100101010000110000 Too 00100000000000000110000001110010 Freedom 00100000000111011111110100100111 cleaning 00000000000011001110010110110111 700,000 00000000000000000000000000000000 less-developed 00000000000000000000000000000000 Guinness 00100000000111101001001100101000 legislator 00000000000000001010011110110101 rebate 00000000000000001111100011000111 admission 00000000000111000111111001100111 embarrassment 00000000000111101011101100100111 OSHA 01000000000000000100101100101000 recalled 00000110000111010100010000110010 Burmah 00100000000000000000000000000000 arbs 00000000000111111111100110110011 13.5 00000000000000000000000000000000 occasion 00000000000111111011101100100111 discover 00000000000110001011110110110010 clubs 00000000000000010110110001100011 earns 00000000001100011101000000010010 unknown 00000000000010010000110110010000 boring 00000000000111100110011010010000 Fisher 00101111111101000010001000001000 alliances 00000000000110001100010000100111 old-fashioned 00000000000000000000000000000000 hazards 00000000000111111011111000100011 dizzying 00000000000001001100100000010000 strapped 00000000001001011110110000110010 Belgium 00100000000111110001111101101000 radar 00000000000000011010001010110000 fruit 00000000000110111011111010110000 existed 00000000001100100110001000110010 restrictive 00000000000000000110010010010000 tapes 00000000000111110111010101100011 leftist 00000000000000010101011000110000 Police 00100000000000000000101100100101 discretion 00000000000111101011110100100111 bosses 00000000000111000101110000110011 Staff 00100000000011100011100010000001 Chugai 00100000000000000000000000000000 declaring 00000000000110101001111010000010 prevail 00000000000001111101010110110010 Pakistan 00100000000111001011111101101000 nose 00000000000111110111010000000001 discretionary 00000000000001011000010000110000 knocking 00000000001010101110100001000000 Holmes 00101111111100110111110010001000 nonrecurring 00000000000000101010010000010000 McGovern 01001111111010101000001010001000 premiere 00000000000011001100100101100111 appointments 00000000000100101111101000100011 8.70 00000000000000000000000000000000 sleep 00000000000111101110100010110111 in-house 00000000000000000000000000000000 affiliated 00000000000000100001100000110010 navy 00000000000000001100101100100101 principles 00000000000111111101011100100011 founding 00000000000000010110010011010000 forth 00000000000000101001111100110010 ridiculous 00000000000111000100110110010000 complaining 00000000000101111111110000110010 Eaton 00100000000110111011111100101000 jolt 00000000000100010101111010110111 Barre 00101111111100111000110010001000 searching 00000000000110111110110000110010 Enterprise 00100000000111110110101101100001 Matra 00100000000011001110111100101000 juice 00000000000011101010000010100101 would-be 00000000000000000000000000000000 accessories 00000000000111111111011111001001 desperate 00000000000000100000011010010000 pile 00000000000111111110101000111111 Cuban 00100000000000011011010100110000 supposedly 00000000011001100000001001110010 weighed 00000001000001001100010000110010 premier 00000000000011000010100100100001 specializing 00000000000001111110010000110010 semiannual 00000000000000011101000101010000 Kate 00100000000000000000000000000000 recorders 00000000001001100110100100001001 Diamond 00101111011000000110111000101000 page-one 00000000000000000000000000000000 laying 00000000000111111010100001000000 upside 00000000000111000100111000110010 limitations 00000000000111111010100100100111 punitive 00000000001000010000011100010000 earth 00000000000111111100000000100101 unconsolidated 00000000000000001000000100010000 vigorous 00000000000011001000000000010000 emphasized 00000000000110100111110111000010 recruiting 00000000001001110010110001000000 demonstration 00000000000111100011101010100111 Odeon 00101111111000011001101000101000 Satellite 00100000000000100000001010110000 Buffett 00101111111110111100100010001000 Domestic 00100000000000000001010000110000 Ore. 00100000000000000000000000000000 shrink 00000000000100011010111110110010 disorders 00000000000011000110101010100011 hat 00000000000110100011110000000001 classroom 00000000000111110011110000000001 McCall 01000000000000000000000000000000 electoral 00000000001110100000000000110000 finishing 00000000000000001110100001000000 Lorin 00100000000000000000000000000000 shield 00000000000000001000110100100001 Burlington 00100000000111010111000100101000 viruses 00000000000111111010111001100011 NRM 01000000000000000000000000000000 shaky 00000000000001001000101001000000 Stuart 00101111111000000111100010011000 exporters 00000000000111110110010000110011 shelves 00000000000111111010000001100011 Production 00100000000000000000000100000111 consequence 00000000000111111010111000111111 Analytical 00101111111000000000101001001000 filters 00000000000111100110111001100011 Angels 00100000000010100101110101100011 tighter 00000000000010100100001111000000 Woman 00100000000111100111110010110101 maximize 00000000000011011010111110110010 Superfund 00100000000011100001000000110000 burst 00000000000111100101011000111111 relevant 00000000000001100011001110010000 celebration 00000000000111010010100101100111 Kelly 00101111111100111111100010001000 Keith 00101111111000110100000010011000 bureaucratic 00000000001010100000000000110000 Prospect 00100000000111111111010000001111 kidney 00000000000000001110101011100001 Johns 00101111111111110111110000101000 races 00000000000111101000000110110011 Markey 00101111111111110011111010001000 Economics 00100000000111101110101101100001 epicenter 00000000000000000000000000000000 Texans 00100000000001010111111000110011 oral 00000000000000001010010100010000 municipals 00000000000111101011111011100011 V. 00101111111001000111101011011000 generates 00000000000010011101000000010010 Goodyear 00100000011111001011001100101000 Automotive 00100000000001010000101010110000 post-crash 00000000000000000000000000000000 Barclays 00100000000011110001111000101000 counterpart 00000000000111100101101001100111 Sells 00100000000100001101000000010010 U.S.A. 01000000000000000000000000000000 Adds 00100000000111111110010111000010 Assembly 00100000000000000000000001111001 Lord 00101111111000011011101000101000 computer-guided 00000000000000000000000000000000 sagging 00000000000000101011100000010000 inched 00000000001000001011001000110010 soliciting 00000000000000010011111101000000 Alliance 00100000000111101011011001100111 buildup 00000000000111011011101010100111 constituents 00000000000111110001110000110011 breakfast 00000000000010111010000000100001 conform 00000000000111010111010110110010 ball 00000000000110100010000000001000 Genetics 00100000000101100111100101100001 joins 00000001000001100011000000010010 injury 00000000000000000011001100100111 occupied 00000000000111000000101001000000 Institution 00100000000111001111011001100111 undertaken 00000000100010010010110000110010 vacation 00000000000000011110000000100001 clock 00000000000111111110001001000101 depression 00000000000111111001101101100111 rein 00000000000011001001010110110010 marking 00000000000111100100001101000000 Adobe 00100000000110101111100100101000 55,000 00000000000000000000000000000000 Iraq 00100000000111101001111101101000 iron 00000000000111000010001000110000 aired 00000001001011001100010000110010 concentrating 00000000000101111100100000110010 high-definition 00000000000000000000000000000000 rebuffed 00000000100001111001010000110010 Kohl 00101111111100000100010010001000 Runkel 00100000000000000000000000000000 worm 00000000000111010010111010110000 B-2 00100000000000000000000000000000 gainers 00000000000101101110101001110011 valuation 00000000000111101101010010001111 vacancy 00000000000000011000010011000111 seizure 00000000000111101011001101001111 portions 00000000000111110110100100101111 readily 00000001000100000000010001110010 G.m.b 00100000000000000000000000000000 efficiently 00000000100100000000010001110010 commonly 00000000000010100111001001110010 chart 00000000000100000011001010110111 Czechoslovakia 00100000000110001100111101101000 comparisons 00000000000100101100010000100111 Schering-Plough 01000000000000000000000000000000 autos 00000000000110000111111001100011 52-week 00000000000000000000000000000000 Times-Stock 01000000000000000000000000000000 logic 00000000000110110011101001100111 soften 00000000000111110100111110110010 Operations 00100000000111101111100000001001 shocked 00000000001111001101110000110010 exclusion 00000000000111111111100101001111 Boise 00100000000111101110011010101000 middlemen 00000000000110110100111000110011 DAX 01000000000000000000000000000000 Leon 00101111111000010001100010011000 0.6 00000000000000000000000000000000 format 00000000000111101001100011100111 diverted 00000000000000111000110000110010 broker-dealer 00000000000000000000000000000000 Sloan 00101111111000111101001000001000 1967 00000000000000000000000000000000 hazardous 00000000000000011000101010110000 paint 00000000000011011111100110110111 tour 00000000000101101000100101100111 mild 00000000000011010000100000010000 Avon 00100000000110111011010100101000 Sassy 00100000000000000000000000000000 welcomed 00000010000101000101010000110010 Occidental 00100000000111100000010100101000 turbulence 00000000001110101111111010100111 reservations 00000000000110101010010010111001 Institutes 00100000000110110101110001010101 ethical 00000000000010100000000000110000 oversee 00000000001011111011111110110010 Hoylake 00100000000110000111111000101000 Philips 00100000000111101101011100101000 mandated 00000000000010011001101001000000 Foothills 00100000000000000000000000000000 Nathan 00101111111101001000000100001000 luxury-car 00000000000000000000000000000000 presents 00000010010010000011000000010010 newer 00000000011000010000001000110000 marine 00000000000101000000011010110000 3.35 00000000000000000000000000000000 mental 00000000000101000101000000110000 innovative 00000000000011000000110100010000 Pa 00100000000000000000000000000000 Declining 00100000000000010010010001000000 scuttle 00000000000100100111111110110010 abuses 00000000000111101000100010100111 avoiding 00000000000110011111111101000000 teaching 00000000000111111010110001000000 aftershocks 00000000000000000000000000000000 scarce 00000000000111110001010010010000 furor 00000000000101101010111010100111 accurately 00000000001010000000010001110010 fuels 00000000000111110101011111001001 high-technology 00000000000000000000000000000000 Mackenzie 00101111111001111100111000001000 8.09 00000000000000000000000000000000 topics 00000000000111001000001010100011 firmer 00000000000000000000111111000000 Culture 00100000000111100011001001100111 1.11 00000000000000000000000000000000 TransCanada 01000000001111001000110100101000 duck 00000000000000010001110100100001 neighboring 00000000000000010000110110101000 1.22 00000000000000000000000000000000 tabloid 00000000000001000100101100100001 Aquino 00101111111000001001100110001000 buses 00000000000111101111111001100011 Clearing 00100000000000010000000010110000 arena 00000000000111110011011001100111 Arkla 00100000000111000100111100101000 sufficiently 00000000001000111000000001110010 reunification 00000000000001101001110010100111 exporter 00000000000111110111100001110101 vessels 00000000000111111011100110001001 harmful 00000000000000001001010010010000 urges 00000000000011100011000000010010 Institutional 00100000000000010001101000110000 Crossland 00100000000000000000000000000000 Laband 00100000000000000000000000000000 hinted 00000000000100100111110111000010 8.4 00000000000000000000000000000000 inefficient 00000000000001001100000110010000 freeze 00000000000111111010001010110111 traveling 00000000000101101111000001000000 citizen 00000000000111110111111000100001 marginally 00000000001000101000010001110010 dragged 00000000000001001001001000110010 unanimously 00000000010001100001001001110010 Scowcroft 00100000000100000110100000001000 wears 00001000000110000011000000010010 investigator 00000000000001100000100000010101 thick 00000000001110001100011010010000 closed-end 00000000000000000000000000000000 mayoral 00000000000000101000111000110000 haven 00000000000000011001011110000010 colon 00000000000111101010101011100001 violent 00000000000000000101000000010000 underwrite 00000000000100110110001110110010 printer 00000000000110100000111010110000 travelers 00000000000011100001011000110011 Gorky 00100000000000000000000000000000 payout 00000000000111101111100011000111 112 00000000000000000000000000000000 Theater 00100000000100010001111010110000 infant 00000000000000100010101000110000 phrase 00000000000111001011111101100111 aiming 00000000000011011110110000110010 Sandinistas 00100000000111101111011110110011 dynamic 00000000000010010000000010010000 defective 00000000000001101100000110010000 multimillion-dollar 00000000000000000000000000000000 Metromedia 00100000000101110100111100101000 automobiles 00000000000110101111111001100011 preparation 00000000000111111111011100111001 alert 00000000000111001000001010110111 Memphis 00100000000111110111101001101000 two-day 00000000000000000000000000000000 contingent 00000000000110101000100000110010 bipartisan 00000000000000000111000000010000 awaiting 00000000000000000110010101000000 advises 00000000001000100011000000010010 Former 00100000000000000000101001110000 enabling 00000000000000110000001101000000 Insurers 00100000000000000010100001110011 analyze 00000000000111110001111110110010 practiced 00000000100101101100010000110010 credentials 00000000000110100101101001100111 generations 00000000000110110011100100101111 Schwartz 00101111111101011011000010001000 leap 00000000000111101110011000110111 p53 00000000000000000000000000000000 BMC 01000000000000000000000000000000 lag 00000000000101000111001010110111 Monsanto 00100000000111100111111100101000 runaway 00000000000001010100100000010000 privacy 00000000000011111111110010100111 throws 00000010001110000011000000010010 semiconductors 00000000000111001110111001100011 18,000 00000000000000000000000000000000 reminder 00000000000111111101011000111111 revisions 00000000000111101101111000100011 modifications 00000000000111111010011000100011 Emhart 00100000000011000101111100101000 auctioned 00000000011011000000010000110010 port 00000000000000100000011010101000 Hiroshima 00100000000000000000000000000000 troop 00000000000000000011001010100001 median 00000000000000101100011100010000 cease-fire 00000000000000000000000000000000 boy 00000000000111101110000010110101 detected 00000000100110001100010000110010 globe 00000000000000011111110000100101 defenses 00000000000111111111100110001001 silly 00000000000010011000011010010000 helpful 00000000000011001000011110010000 staggering 00000000000001110100100000010000 suggestion 00000000000111111011110000001111 scams 00000000000000000000000000000000 MMI 01000000000000000000000000000000 ivory 00000000000111110110001110101000 wing 00000000000000100001001001100111 9:30 00000000000000000000000000000000 governors 00000000000000010010101010110011 soar 00000000010101111101010110110010 highlight 00000000010001111111110110110010 Silver 00100000000011101011101110110000 collectors 00000000000110010010100000110011 tires 00000000000110101110101001100011 Lufthansa 00100000000100111100110100101000 disproportionate 00000000000000000011010000010000 exported 00000000101011000000010000110010 historic 00000000000100110010000000110000 worrying 00000000000111011111110000110010 disciplined 00000000000010000101101001000000 poorest 00000000000111101011110011010000 Wilder 00100000000000000000000000000000 Opera 00100000000100100000001100100001 Corning 00100000000101101011010100101000 Profits 00100000000111101111110000000011 dogs 00000000000000101111110101100011 Almost 00100000000000001111000001110010 ratios 00000000000111111010111001000111 Regulatory 00100000000000000101000000110000 bag 00000000000111101011111000000001 adult 00000000000000000110101000110000 lying 00000000000111111111000001000000 syndicated 00000000001000001000001010110000 notification 00000000000000000101111101001111 Ivan 00101111111000000100001010011000 sweep 00000000000001101001001010110111 Keenan 00101111111100100101111010001000 Rio 00101111111101100100101000101000 consented 00000000000110111111101000110010 blast 00000000000111110001001010110111 universal 00000000000001010000001000110000 Local 00100000000000100100010000110000 grab 00000000000000011110101110110010 conservation 00000000000000001000101101100001 supplement 00000000100100111111110110110010 Iranian 00100000000000000010010100110000 qualified 00000000000000011100010010010000 crises 00000000000111110110011000100011 disrupt 00000000001001111010111110110010 orange 00000000000100000010011010101000 market-makers 00000000000000000000000000000000 deck 00000000000111110001111000000001 Mining 00100000000000000011011010110000 Coopers 00101111110011111111111010101000 evil 00000000000001000010101000110000 intervened 00000000000001101011101000110010 announcer 00000000000000101000110000010101 Hang 00100000000111010110110110110010 Chung 00101111111010110000000100001000 inappropriate 00000000000011111000110110010000 Erbamont 00100000000000000000000000000000 script 00000000000101101101111101100111 Representative 00100000000100100111110000110101 joke 00000000000110001111101010110111 fur 00000000001010001011111010110000 cancers 00000000000011100010001010100011 variations 00000000000111101000001010100011 inflationary 00000000000000010001000100010000 appealing 00000000000111101110001110010000 Wertheim 00101111110110100000010000001000 Coats 00100000001100111010000000001000 Metal 00100000000000110100011010110000 Cairo 00100000000100010011111001101000 Children 00100000000111101110111100110011 Salinas 00101111111100001000110010001000 parity 00000000000111101000110000100111 1930s 00000000000000000000000000000000 irresponsible 00000000000111110101000110010000 fallout 00000000000110100011001100100111 indirect 00000000000001010000010100010000 pesticide 00000000000000100001110000100001 taped 00000000000000100101101001000000 backup 00000000000000000110100000100001 inspector 00000000000000010010110000110101 Woolworth 00100000000111000010111100101000 jokes 00000000000110101101110101100011 recessions 00000000000011000101110101100011 7.4 00000000000000000000000000000000 totals 00000000000000001010100100110010 develops 00000000000000111101000000010010 ample 00000000000000000010000110010000 Searle 00100000000111001100110000001000 yourself 00000000000000001011010001110010 interpret 00000000010100111011111110110010 soybeans 00000000000111111111101110110000 emerges 00000000000000001100001000110010 tens 00000000000111101000111000101111 Southwestern 00100000000110110000110110101000 Chivas 00100000000000000000000000000000 50-50 00000000000000000000000000000000 diamond 00001111011000000110111000101000 Banknote 00100000000000000000000000000000 mirror 00000000000111111011010001001000 overseeing 00000000000001000011011101000000 Make 00100000000111111011101110110010 scope 00000000000111111111111000001111 insistence 00000000000111111000101011100111 proposes 00000000000000011100101000110010 Giovanni 00101111111110011000001000011000 ballot 00000000000111100010000001100111 stunning 00000000000000110100100000010000 suspects 00000000011111101111000000010010 Allied-Signal 01000000000000000000000000000000 raiders 00000000000111101011110000110011 Actually 00100001000000000000001001110010 communication 00000000000011001010010010110000 publicized 00000000000000001101010010010000 7.96 00000000000000000000000000000000 Advertisers 00100000000110110010111000110011 Graham 00101111111001010100000100001000 refer 00000000000110110111010110110010 2008 00000000000000000000000000000000 physicians 00000000000100111100111000110011 illustration 00000000000110101100111001100111 passion 00000000000111111110110000000001 Murdoch 00101111111100101000010010001000 fueling 00000000000001010111011101000000 employ 00000000000000100011001110110010 wishes 00000000000111000010101000110010 Parks 00100000000100000011000001111001 Daewoo 00100000000111110111011000101000 organizing 00000000010110000010110001000000 Read 00100000000101111010010110110010 billings 00000000000111111110011000000111 audio 00000000000000001101011010110000 Blair 00101111111100100111111000001000 careers 00000000000111101101011101100011 exchanged 00000000000010010000010000110010 toxic 00000000000000000100101010110000 Venice 00100000001101111111111001101000 consolidating 00000000000111010001011101000000 capture 00000000000100011111110110110010 Carat 00100000000000000000000000000000 rationale 00000000000111111001011100111001 Morton 00101111111101001000101000101000 Miami-based 00100000000000000000000000000000 frightened 00000000000110100101110000110010 understands 00000000001011100011000000010010 co-chief 00000000000000000000000000000000 first-quarter 00000000000000000000000000000000 Alar 00100000000110001010110010100111 lined 00000000000110110011001000110010 cruise 00000000000000000101110000110000 component 00000000000111100010100101100111 Armco 00100000000110110011111100101000 Peugeot 00100000000010000011111100101000 public-relations 00000000000000000000000000000000 stupid 00000000000100011000011010010000 layer 00000000000100110110111001000111 Hoechst 00100000000111001101011100101000 sends 00000000000100000011000000010010 Olympia 00101111111101111111111010101000 deliveries 00000000000111100010000100000111 route 00000000000111001110011000000001 justices 00000000000000001000100110110011 ruble 00000000000111111111101101000101 Enron 00100000000111111011111100101000 Nuclear 00100000000000000001110000110000 Vietnamese 00100000000000111000010100110000 cooperatives 00000000000111101001110001100011 Nevada 00100000000111111010110001101000 improves 00000111000010000011000000010010 Yes 00100000000111110011111011101000 shouted 00000000110110011110001000110010 profession 00000000000111111101000011100111 Games 00100000000001000100101001100011 galvanized 00000000000000000000000000000000 revealed 00000000000010000101110111000010 stimulate 00000000000110111100111110110010 embarrassing 00000000000011000110110100010000 bribe 00000000000111101101001101000111 Never 00100000000000000100001001110010 S.C. 01000000000000000000000000000000 sheer 00000000000101000010000000110000 tale 00000000000110101101100101100111 Prior 00100000000000011000111000110010 synthetic 00000000000100001100101010110000 stealing 00000000000100110011111101000000 104 00000000000000000000000000000000 Nations 00100000000000000000011101110011 Strategic 00100000000000010010000000110000 sections 00000000000111011100000100101111 Belo 00100000000100011110111100101000 Laboratory 00100000000000111000100000100001 enemies 00000000000111101011011101100011 Producers 00100000000111101110010000110011 Video 00100000000000001000001010110000 respective 00000000000000001011010010101000 bitterly 00000000001010000001001001110010 sing 00000000000100001110101110110010 eastern 00000000000000000011110110101000 Panetta 00100000000000000000000000000000 gridlock 00000000000000000000000000000000 enact 00000000001000111111101110110010 adequately 00000000000110000000010001110010 entitlement 00000000000000000000001101100001 Fine 00100000000000010010000001000111 Mulford 00101111111101011010110010001000 placing 00000000000110101011111101000000 fighter 00000000000001010010001010110000 handles 00000000001101001101000000010010 therapy 00000000000011100110011010100111 Burger 00101111111011011000011100001000 separation 00000000000111101111101101001111 overcapacity 00000000000111010111111010100111 flaws 00000000000111110001111000100011 practicing 00000000000010010001110101000000 Cascade 00100000000000000101100010100101 riskier 00000000000011010100001111000000 deemed 00000000001101111100010000110010 Sherman 00101111111000101101001000001000 Marlin 00101111111010110101101100011000 habits 00000000000000000101011100100011 lasted 00000000010000000110001000110010 FEMA 01000000000000000000000000000000 tensions 00000000000100101011111010100111 Circus 00100000001000001010100100100001 draws 00000000110100000011000000010010 Fire 00100000000111101110000110110111 hammered 00000000001001001001001000110010 Suzuki 00100000000111011011011000101000 Ontario 00100000000111001110101001101000 one-hour 00000000000000000000000000000000 Pretax 00100000000000000010000101010000 Pittston 00100000000111101010111100101000 Refcorp 00100000000000000000000000000000 generous 00000000000000000010010010010000 Al 00100000000000000101110000011000 rubble 00000000000000000000000000000000 breed 00000000000000000000001101110111 Luzon 00100000000000000000000000000000 tip 00000000000100101001001010110111 Yields 00100000000111101101000011000111 literature 00000000000111101101101101100001 Details 00100000000111101111001100101111 distributes 00000000000100011101000000010010 tremors 00000000000101001110010101100011 woes 00000000000111111101111000100011 S&Ls 01000000000000000000000000000000 Article 00100000000111101111001000100111 prudent 00000000000001110000010010010000 von 00001111111100111100010101001000 trusts 00000000000010110111000100100011 Rates 00100000000111111111101101000011 notebook 00000000000111111001110000000001 Lisa 00100000000001101000001000011000 sentences 00000000000100001100000001100111 Recent 00100000000000000000101100010000 Shapiro 00101111111010000110100010001000 Popular 00100000000000000010000010010000 Short-term 00100000000000000000000000000000 delta 00000000000111101100010001101000 uniform 00000000000110000101000000010000 initiated 00000000000010111001010000110010 Cambodia 00100000000110110101011101101000 troublesome 00000000001000010101010010010000 coupled 00000000000111111011100000110010 express 00000000000011000010001010101000 planted 00000000010100001100010000110010 tall 00000000000110001100011010010000 terrible 00000000001010001100011010010000 Alaskan 00100000000000001010010100110000 posed 00000000000000110111010000110010 joint-venture 00000000000000000000000000000000 representation 00000000000100100000001100100111 spun 00000000000011101001001000110010 flood 00000000000111111110111000111111 praised 00000000001111110101010000110010 Cie. 00100000000000000000000000000000 Interprovincial 00100000000000000000000000000000 temperatures 00000000000111101100100100000011 Kangyo 00100000000011111001111000101000 kroner 00000000000000000100100000001011 Indians 00100000000110100011100110110011 Mehta 00100000000101111000111010001000 8.02 00000000000000000000000000000000 volumes 00000000000110001100000100101111 owe 00000000000111011010101110110010 Raytheon 00100000000111111101111100101000 regulate 00000000010011111011111110110010 visitor 00000000000101100011001011100111 touting 00000000000110001111001101000000 Ind. 00100000000000000000000000000000 overdue 00000000000110010000011100010000 Californians 00100000000110100011011000110011 2005 00000000000000000000000000000000 pointing 00000000000111110111100001000000 Cambria 00100000000000000000000000000000 Shopping 00100000000000000000100101100001 contaminated 00000000000001010001101001000000 boomers 00000000000101100010010111110011 shaking 00000000010101101110100001000000 dispatched 00000011011011000101010000110010 nerves 00000000000111011101111101100011 Nev. 00100000000000000000000000000000 deferring 00000000000010110011011101000000 executing 00000000000111110101111101000000 Ana 00100000000000010010000001001000 undermine 00000000000101111100111110110010 detectors 00000000000000000001101111001001 Dallas-based 00100000000000000000000000000000 weighted 00000000000011101010001001000000 141.90 00000000000000000000000000000000 20-year 00000000000000000000000000000000 Ernst 00101111111011111111111010101000 photography 00000000000111100110001101100001 curbing 00000000000000111111011101000000 Can 00100000000000000000110110010010 2010 00000000000000000000000000000000 hero 00000000000111111011110000000001 high-priced 00000000000000000000000000000000 non-callable 00000000000000000000000000000000 109 00000000000000000000000000000000 skepticism 00000000000111101110111010100111 planet 00000000000111001101011000000001 Savaiko 00101111111101001010110010001000 attend 00000000000111111001011110110010 clerk 00000000000110111100011110110101 Vanguard 00100000000000100011010100101000 float 00000000001111111101010110110010 Communists 00100000000111101011011110110011 spoken 00000000101111110010110000110010 des 00001111111011001111001101110000 exchange-rate 00000000000000000000000000000000 scaled 00000000000010001001001000110010 directs 00000000011010000011000000010010 Rev. 00100000000000000000000000000000 mainstream 00000000000110100110101001000000 Women 00100000000111101100111100110011 shirts 00000000000011111111110101100011 champion 00000000000111101110000100100001 Scientists 00100000000001000110000010110011 chair 00000000000111110100010000000001 Charleston 00100000000111001101101001101000 hats 00000000000101000111110101100011 parallel 00000000000000000110101001000000 Ball 00100000000110100010000000001000 wires 00000000000100011111110101100011 boat 00000000000111111100001000100001 frenzy 00000000000111011010100101100111 accomplish 00000000000111010110100110110010 parliament 00000000000111101101101101101000 double-digit 00000000000000000000000000000000 adapted 00000000000111101000110000110010 stars 00000000000110101001110101100011 vague 00000000000100000100011010010000 achievement 00000000000110111111111001100111 unsolicited 00000000000000110001001100010000 Datapoint 00100000000111010011111100101000 Equitable 00100000000000011001111000101000 dealership 00000000000110101001110010001001 decliners 00000000000101111100101001110011 prohibits 00000000000000110001000000010010 high-end 00000000000000000000000000000000 outspoken 00000000000000010101110100010000 preserving 00000000000110011111011101000000 fabric 00000000000101011011111010110000 illness 00000000000111111010110010100111 aged 00000000000000000001100001000111 Neb. 00100000000000000000000000000000 haul 00000000001110011110010110110010 Retirement 00100000000000000000011011100001 smallest 00000000000001101010000011010000 coupons 00000000000111101100000100000011 relax 00000000000110101100111110110010 subscription 00000000000000110010000000100001 architect 00000000000111011111110000110101 spectacular 00000000000001101000000000010000 Morrison 00101111111100000010001000001000 Andress 00100000000000000000000000000000 altered 00000000000001011100111001000000 Materials 00100000000000000001000111001001 Aeronautics 00100000000110111111100000110000 elevators 00000000000111000111110001100011 -the 00000000000000000000000000000000 tapped 00000011000101000101010000110010 sums 00000000000111110111101010001111 widening 00000000000000000111010001000000 6.1 00000000000000000000000000000000 departures 00000000000111111000101000100011 Seven 00100000000111111001111001010000 Newhouse 00100000000100101000000000001000 Md 00100000000000000000000000000000 Sim 00100000000000000000000000000000 technological 00000000000100000010000000110000 9.75 00000000000000000000000000000000 -and 00000000000000000000000000000000 balked 00000000000111111001110100110010 liquidated 00000001000111010100010000110010 Falcon 00100000000011101110000000001000 earmarked 00000000000000111110110000110010 laboratories 00000000000010000001001011101001 Vila 00100000000000000000000000000000 downside 00000000000111000011111101100111 Gallagher 00101111111110000110100010001000 bowling 00000000000000000010001100100001 scare 00000000011111010110010110110010 Bozell 00100000000111110011110000101000 males 00000000000000010010011100110011 shifts 00000000000000100111001000100011 Trinova 00100000001110101010111100101000 Sutton 00101111111110000000001010001000 clutter 00000000000111111100110101100111 Bryant 00101111111100110100111010001000 AM 01000000000000000100111110000010 chancellor 00001111110111110010010110010101 Strong 00100000000000000001100000010000 colleges 00000000000111010110111000110011 Corr 00100000000000000000000000000000 Brunswick 00100000000000101001011110000010 7.95 00000000000000000000000000000000 jolted 00000000100111100111010000110010 neglected 00000000000111110101101001000000 Grant 00100000000000001010000110110111 surrender 00000000000100111111110110110010 accountants 00000000000111100110111000110011 Subcommittee 00100000000000000010000001010101 Freeport-McMoRan 01000000000000000000000000000000 Indonesia 00100000000111010011111101101000 Memotec 00100000000001111001000100101000 warn 00000000000011011001100110110010 countersuit 00000000000000000000000000000000 abruptly 00000000000110100000010001110010 pet 00000000010000010000001000110000 Dictaphone 00100000000000000000000000000000 BT 01000000000000000000000000000000 shippers 00000000000000001100010000110011 Roper 00100000000100100011101100101000 unprofitable 00000000000010000000101001000000 82 00000000000000000000000000000000 1.24 00000000000000000000000000000000 loved 00000000000110010000110111000010 predictable 00000000000001001001010010010000 facilitate 00000000000010101011111110110010 5.7 00000000000000000000000000000000 Enforcement 00100000000000000000010011100001 assumptions 00000000000111110000101000100011 Film 00100000000000000000101000100001 encountered 00000000001110011100010000110010 journalist 00000000000111000110011110110101 DD 01000000000000000000000000000000 illustrate 00000000000010011100100110110010 shy 00000000000110101010010110110010 misstated 00000000000000000011110100110010 distant 00000000000111110000000010010000 2018 00000000000000000000000000000000 Brawer 00100000000000000000000000000000 dressed 00000000001111011110010000110010 regret 00000000000110011110000110110010 NAHB 01000000000000000000000000000000 equipped 00000000000111110001100000110010 Donuts 00100000000111110001010000100011 Met 00100000000111110110010000110010 re-election 00000000000000000000000000000000 traveled 00000000001011101011101000110010 thrust 00000000000110101001001010110111 exceptionally 00000000000001001100000001110010 clouds 00000000000100011111000000010010 abrupt 00000000000000010100010100010000 brand-name 00000000000000000000000000000000 Stadium 00100000000001101011000100000001 infringement 00000000000000000110100010100111 adoption 00000000000111101110110101001111 hottest 00000000000001100000010011010000 Leading 00100000000000010000011000010000 Individuals 00100000000110101110111000110011 circulating 00000000000111010011000001000000 indirectly 00000000010000010000010001110010 Uniroyal 00100000011000111001111000101000 1966 00000000000000000000000000000000 Giorgio 00101111111101001010101010001000 contentious 00000000000000010100000010010000 Week 00100000000111111111110101100010 horrible 00000000000001101110011010010000 courses 00000000000111101011110100100011 Drew 00100000000001001011000000010010 packaged 00000000000110010001101001000000 Cox 00101111111100101001100010001000 expression 00000000000111101000111001100111 homelessness 00000000000000000000000000000000 struggles 00000000000111111111001000100011 End 00100000000111111111110100001111 fitness 00000000000000000100101101100001 titles 00000000000111010111010101100011 Jeep 00100000000000001110001000100001 photo 00000000000011010000100000100001 walked 00000000010111110001001000110010 20th 00000000000000000000000000000000 weaknesses 00000000000111100001111000100011 Stoltzman 00100000000000000000000000000000 Experts 00100000000000000000000010110011 Southmark 00100000000110101101111100101000 1.03 00000000000000000000000000000000 gradual 00000000000001010000100000010000 Anheuser-Busch 01000000000000000000000000000000 unfavorable 00000000000000100110010100010000 tumor 00000000000111001110110000100001 Helmut 00101111111000001110001010011000 prelude 00000000000111001101111100100111 preferences 00000000000111011011011100100011 cereal 00000000000110011011111010110000 dioxide 00000000000010001011011111001001 quantity 00000000000111111101101010001111 141.45 00000000000000000000000000000000 Benton 00101111111100011011111000001000 Exploration 00100000000110101001100001100001 Gabelli 00100000000000101010000000001000 bread 00000000000110111101110010100111 Seats 00100000000000101001000001100011 Direct 00100000000000000000011100010000 Dassault 00100000000000000000000000000000 laser 00000000000001000010101010110000 theories 00000000000110001001101000100011 fix 00000000001011111111110110110010 wiped 00000000000111010001001000110010 Liberal 00100000000000010010011000110000 uneasy 00000000000100011111110000110010 Di 00101111111010100101001000011000 8.30 00000000000000000000000000000000 Lauder 00100000000101011011000001001000 credible 00000000000011001101010010010000 precise 00000000000001101001000000010000 inherent 00000000000000001100110100010000 analyzed 00000111000111010100010000110010 stones 00000000001111100111110101100011 Storage 00100000000000000010100001100001 chairmen 00000000000110110110001010110011 widow 00000000000111101001011110000001 Cap 00100000000110100001001010110111 veterans 00000000000000100010111010110000 ACCOUNT 01000000000111101010111110111001 break-even 00000000000000000000000000000000 Fleet 00100000000111101110011000100001 implement 00000000000111101011111110110010 piano 00000000000010011000001100100001 Westmoreland 00100000000100110010111000101000 versus 00000000000000000000101010000010 delaying 00000000000000111001011101000000 mandate 00000000000111011101111010110111 commissioned 00000000000000100000010000110010 leather 00000000000000001010001100100001 Edwin 00101111111000000110011010011000 internationally 00000000010000100100010001110010 politician 00000000000111100011110010110101 Charlie 00100000000011000100100000011000 Boesel 00100000000000000000000000000000 Nationwide 00100000000000000001000001000111 Plaza 00100000000000000101010100000001 govern 00000000000010011110101110110010 short-lived 00000000000000000000000000000000 Retailers 00100000000111001110010000110011 reformers 00000000000111110000000110110011 recognizing 00000000000110001001111010000010 pour 00000000000010001010101110110010 Sens. 00100000000000000000000000000000 Clinton 00100000000001010000000100001000 evaluating 00000000000111110110010101000000 8.04 00000000000000000000000000000000 engaging 00000000000101011110010000110010 Ambassador 00100000000111111000001100100111 ghosts 00000000000000000000000000000000 reputable 00000000000000000000000000000000 issuer 00000000000111111111011001000101 brilliant 00000000000001000000000010010000 Timothy 00101111111000001001110110011000 Pete 00101111111001000000001000011000 lady 00000000000111101011110010110101 billed 00000000000110100010110000110010 Mich 00100000000000000000000000000000 distinctive 00000000000000110100000010010000 seasons 00000000000000000010011100011011 luck 00000000000111110110111010100111 long-awaited 00000000000000000000000000000000 fiercely 00000000000010101000000001110010 struggled 00000000001010101011101000110010 Sinyard 00100000000000000000000000000000 Tribune 00100000000001001011010001001000 angered 00000000000110110111010000110010 disruptions 00000000000111001111111000100011 accelerating 00000000000000001001010001000000 Falls 00100000000011101000001000110010 Certainly 00100000001011000000001001110010 beach 00000000000001000011000010100101 belongs 00000000000011100001101000110010 18.95 00000000000000000000000000000000 bottles 00000000000111001001011111001001 outer 00000000000100010000001000110000 Bloc 00100000000101110101000010101000 Current 00100000000000000001000011010000 designing 00000000000101001111111101000000 Speculation 00100000000111101101111010101111 lighter 00000000000011100100001111000000 consolidate 00000000000010011010111110110010 D 00100000000000000000000000000000 dedicated 00000000000101100000111000110010 diagnostic 00000000000010000010101010110000 everyday 00000000011010010000001000110000 Atlanta-based 00100000000000000000000000000000 Spencer 00101111111100101101110001001000 shots 00000000000000101101110101100011 streamline 00000000000101101100111110110010 palladium 00000000000000000000000000000000 Apparently 00100000000010000000001001110010 20.5 00000000000000000000000000000000 Danny 00101111111000000000011100001000 diet 00000000000101101010010000000001 convincing 00000000000000000011010010010000 Winter 00100000000100101001010000010111 mode 00000000000100001111101001100111 Angelo 00100000000000000000000000000000 injection 00000000000101100100111001100111 hurry 00000000000111111111101010110111 applying 00000000000111110010110101000000 1965 00000000000000000000000000000000 constituency 00000000000111000101101001100111 workstation 00000000000010111100001000100001 bankrupt 00000000000000010010110110010000 boiler 00000000000001101001111010110000 nasty 00000000000010010000011010010000 Things 00100000000111101111100110100011 Cigna 00100000000010101110111100101000 1.18 00000000000000000000000000000000 Rothschilds 00100000000000000000000000000000 Rostenkowski 00101111111100101010111010001000 leeway 00000000000101100111110100100111 Task 00100000000111010101100000110111 write-offs 00000000000000000000000000000000 kick 00000000000101010110010110110010 Worldwide 00100000000000011010010010110000 Russia 00100000000111111010101101101000 cease 00000000000110001001110110110010 donor 00000000000110101000111000100001 underestimated 00000000110101000101010000110010 Ideal 00100000000000000110110100010000 dignity 00000000000111011111110010100111 verge 00000000000111111111011100001111 tighten 00000000000111010010111110110010 subpoena 00000000000111101001111010110111 Laurence 00101111111000000111000110011000 LecTec 01000000000000000000000000000000 Persian 00100000000011001011100011010000 lab 00000000000010100000100000100001 Container 00100000000011000000011010110000 Espectador 00100000000000000000000000000000 supervisors 00000000000011010110101010110011 casinos 00000000000000010000110001100011 Nebraska 00100000000110111110110001101000 preceding 00000000000000000011010001100010 crew 00000000000000000011010100000001 declare 00000000001101101011111110110010 rank 00000000000111111010100110110111 Stanford 00100000000000000111111000101000 evolution 00000000000111110100111001100111 coordination 00000000000000100111111010100111 deferred 00000000000100010000011100010000 attributes 00000000011100100111000000010010 Doug 00101111111011100000001000011000 MedChem 01000000000000000000000000000000 Matsushita 00100000000111111000100100101000 unpaid 00000000000010110000011100010000 inherited 00000000110001101100010000110010 pickers 00000000000000000000000000000000 photographic 00000000000011110100101010110000 Freeway 00100000000001000110111000000001 intensify 00000000001010111010111110110010 spacecraft 00000000001100111010001010110000 Bradford 00101111111011001000000100001000 impressed 00000000000110110101110000110010 1.26 00000000000000000000000000000000 seventh 00000000000111101011100011010000 derived 00000000000011110001100100110010 Collins 00101111111101101000001000001000 necessity 00000000000111011111111000001111 frame 00000000000000000110111000000001 sedan 00000000000000011111101001100011 Brennan 00101111111000000101100010001000 Nielsen 00100000000011101011000001001000 Inland 00100000000111000010111000101000 specter 00000000000111111101011000001111 Jamaica 00100000000110100110101101101000 1906 00000000000000000000000000000000 minicomputers 00000000000111110101111001100011 Franco 00100000000001100010000100001000 1.55 00000000000000000000000000000000 FDIC 01000000000000000000000000000000 14.6 00000000000000000000000000000000 Batibot 00100000000000000000000000000000 Chiat 00101111111111011110110010001000 Rupert 00101111111011000110001010011000 Mo. 00100000000000000000000000000000 Singer 00100000000111001101110000001000 plight 00000000000111101011111000001111 measuring 00000000000010110010110001000000 Mahfouz 00100000000000000000000000000000 bricks 00000000000111100000111001100011 addressing 00000000000111101110111101000000 Gregory 00101111111001100101010100001000 enters 00000001110010000011000000010010 grades 00000000000111011011100100101111 automated 00000000000000101000101010110000 traffickers 00000000000111100111011100100101 vacated 00000000101001111001010000110010 tap 00000000000111001110101110110010 glory 00000000000100111111011010100111 excesses 00000000000100110111111000001111 pumped 00000000010101101001001000110010 wonderful 00000000000010001100011010010000 Marcus 00101111111101100000001000001000 mired 00000000000110011110010000110010 spooked 00000000010110100001110000110010 Assurance 00100000000000011110010001110010 timely 00000000000100000101000000010000 differ 00000000000001011000010110110010 Z 00100000000000000000000000000000 experimental 00000000000000000010101000110000 Eugene 00101111111000000101000110011000 principals 00000000000111110110101010110011 desperately 00000000001100000001001001110010 elimination 00000000000111001110111000001111 inaccurate 00000000000011100100000110010000 enterprise 00000000000111110110101101100001 NCR 01000000000000000000000000000000 novels 00000000000111111111110101100011 spouses 00000000000111101110011100110011 plagued 00000000001111000001110000110010 Brokers 00100000000000000000001101010011 slim 00000000000111101011100000010000 O'Brien 01001111111110001000100010001000 suburb 00000000000000000110010000110101 Winnebago 00100000000000000000000000000000 hunting 00000000011000000010110001000000 switching 00000000001111111010110001000000 chapter 00000000000000000001110001100010 objects 00000000000101101111001000100011 Venezuela 00100000000111100110111101101000 Joan 00100111111000000100111000011000 NASD 01000000000000000000000000000000 prevailing 00000000000000001111000011010000 plaintiff 00000000000111110101110000100101 absorbed 00000000001011001100010000110010 Rubbermaid 00100000000111011011101100101000 intensity 00000000000111011011111000001111 Consulting 00100000000001000000000010110000 scrapped 00000000010111010100010000110010 importing 00000000000011000011110001000000 continually 00000000101100000000010001110010 commentary 00000000000111001111001011100111 camps 00000000000100101110110110001001 Benefit 00100000000111100011110110110010 surviving 00000000000000010101100011010000 Wash 00100000000111111111110100100001 speaks 00000000000110011110001000110010 perceptions 00000000000111101011011010101111 materialized 00000000001010010010110000110010 sharper 00000000000000001100001111000000 U 00100000000000000000000000000000 buck 00000000000111111011000110110111 mile 00000000000111110100100001010000 undercut 00000000001000110010010110110010 Aer 00100000000000000000000000000000 Hotels 00100000000111001010110001100011 residence 00000000000110101001101001100111 subordinate 00000000000100101000001001000000 Pension 00100000000000000001111110110000 frantically 00000000000000000000000000000000 inevitable 00000000000011101010110110010000 babies 00000000000000101011011100110011 peaceful 00000000010001000001000000010000 landed 00000000011000001100010000110010 cry 00000000000001110011110110110010 shoot 00000000010111010110010110110010 borders 00000000000111100010111101100011 Presidents 00100000000110110111111001001101 triple 00000000000111001010011011000000 relieve 00000000000011100011111110110010 oils 00000000000111101111101111001001 Depression 00100000000111111001101101100111 Long-term 00100000000000000000000000000000 turf 00000000000001100010110000000001 Marsh 00101111110101101111111010101000 high-profile 00000000000000000000000000000000 enactment 00000000000111111100101101001111 floating-rate 00000000000000000000000000000000 ABM 01000000000000000000000000000000 fundamentally 00000000001010000000000001110010 four-day 00000000000000000000000000000000 Aluminum 00100000000000001100011010110000 sacrifice 00000000000001111111110110110010 Gelbart 00100000000000000000000000000000 diamonds 00000000000110110111111001100011 flowers 00000000000111101011010101100011 Soo 00100000000000010011101010101000 486 00000000000000000000000000000000 domestically 00000000000000111111111001100011 Mortgage-Backed 01000000000000000000000000000000 satisfactory 00000000000010100001010010010000 Nuovo 00100000000000000000000000000000 contention 00000000000111100111010000001111 Junk 00100000000000010000000110110000 debenture 00000000000000000000001010110001 adjusting 00000000000111110111110101000000 Lower 00100000000000000001011111000000 pie 00000000000000000001011000000001 displayed 00000000111000001100010000110010 Senior 00100000000110100111101001110000 1.42 00000000000000000000000000000000 80,000 00000000000000000000000000000000 grower 00000000000011100001100001110101 Barnett 00101111111000000010111000101000 Kean 00100000011100010101111010001000 underground 00000000000010100010101000110000 poised 00000000000101101100110000110010 dismiss 00000000000101101011111110110010 shah 00000000000111101110100000001000 880 00000000000000000000000000000000 Southam 00100000000000001100111100101000 mechanical 00000000000010100100101010110000 CO. 01000000000000000000000000000000 Ethics 00100000000111000111011001010001 Iverson 00100000000000000000000000000000 fetal-tissue 00000000000000000000000000000000 acid 00000000000100010000111011100001 journalism 00000000000000000101101101100001 jitters 00000000000111111001011010101111 swelled 00000000000001011010110000110010 futures-related 00000000000000000000000000000000 improperly 00000000000110000001001001110010 merits 00000000000110011101111000001111 Strip 00100000000100111111110100100001 Ellis 00101111111000100001111000001000 underscored 00000000001100100111010000110010 noon 00000000000101100100010000101000 summoned 00000000001111011000110000110010 roles 00000000000111000111101110100111 year-to-year 00000000000000000000000000000000 flawed 00000000000111001110110110010000 earliest 00000000000111111111010011010000 lifting 00000000000110101111010001000000 Which 00100000000111111111111001110010 swaps 00000000000110100000010000100111 graduates 00000000000101001000111000110011 incomplete 00000000000000110010000110010000 Kremlin 00100000000111111101110000100101 anti-virus 00000000000000000000000000000000 Investment-grade 00100000000000000000000000000000 Walters 00101111001000101100000010001000 Cypress 00100000000000110000100100101000 Ends 00100000000011100110001000110010 cracks 00000000000111111111111000100011 figuring 00000000000111110010100001000000 invented 00000000011011000101010000110010 machine-tool 00000000000000000000000000000000 nursing 00000000000111110000001010110000 Karen 00101111111000010100110110011000 Wilmington 00100000000111111011101001101000 McNamee 01000000000000000000000000000000 Kaye 00101111111001011101001000001000 vendors 00000000000110111100010000110011 waive 00000000000110110011011110110010 installment 00000000000000000101100001000111 Carla 00100000000000000000000000000000 judgments 00000000000111100000101000100011 distorted 00000000001110110001110000110010 capita 00000000000110111111000001000111 Wilbur 00101111111000010011010100001000 decree 00000000000100110110001011100111 furriers 00000000000000000000000000000000 prosperity 00000000000111000111111010100111 contracting 00000000000000000101100000111001 fortune 00000000000010001010000001000111 Abortion 00100000000000101001010000100001 Crown 00100000000000001000100100100001 Garden 00100000000000000011111100100001 theirs 00000000000101101001110010100111 Rome 00100000000101111111111001101000 notify 00000000001001100011111110110010 0.05 00000000000000000000000000000000 Artist 00100000000111110101100000110101 jittery 00000000000011001111110000110010 ISI 01000000000000000000000000000000 undervalued 00000000000001100000110110010000 Norway 00100000000111110110111101101000 drastically 00000000000100101000010001110010 fever 00000000000111101010001101100111 franchisee 00000000000111111001100001110101 275 00000000000000000000000000000000 diminish 00000000000111001010111110110010 gin 00000000000110110011111010110000 lasting 00000000000001100000000000010000 busiest 00000000000000000101110011010000 worsening 00000000000001100111010001000000 Greene 00101111111100110100011010001000 Belgian 00100000000000001110100100110000 7.8 00000000000000000000000000000000 1.65 00000000000000000000000000000000 7.92 00000000000000000000000000000000 chemistry 00000000000111110111001101100001 investment-banking 00000000000000000000000000000000 Dayton 00101111111110101000101000101000 Maria 00100000000001100110001000011000 unfortunately 00000000000111111011111011101000 Ackerman 00101111111100011111100010001000 decision-making 00000000000000000000000000000000 blessing 00000000000111101110101110100111 fights 00000000000000101110110000100111 closes 00000000010100000011000000010010 malls 00000000000111111011110100100011 vetoed 00000000001001101001010000110010 trucking 00000000000000111011011010110000 delighted 00000000000011101101110000110010 specialize 00000000000101001001010110110010 afterward 00000000001010100100010001110010 copying 00000000011100000010110001000000 Addison 00101111111010100100001000001000 Dillon 00100000000110000100110000101000 bother 00000000000111100101000110110010 Project 00100000000111101011100011100111 Vatican 00100000000011010001101011000101 Quayle 00101111111100111110111010001000 vested 00000000001110010000011100010000 1.8470 00000000000000000000000000000000 carpet 00000000000100111011111010110000 fulfill 00000000000100111110001110110010 fish 00000000000111101101100000100001 upheaval 00000000000110111011111010100111 Ron 00101111111010001000001000011000 Color 00100000000110101100001010110000 Rudolph 00101111111100110001101100011000 clues 00000000000111111111001110100011 GMAC 01000000000000000000000000000000 extradition 00000000000000000000000101001111 technicians 00000000000100001010000010110011 475 00000000000000000000000000000000 Warburg 00100000000000000110100000101000 differently 00000000000100100100010001110010 assassinations 00000000000110101101100010100111 Dong 00100000000000000000000000000000 companion 00000000000000010011110000000001 1.29 00000000000000000000000000000000 unidentified 00000000000000000101101000110000 non-performing 00000000000000000000000000000000 singled 00000000000110001001001000110010 innovation 00000000000001001111110010100111 enjoying 00000000000111101111000101000000 hurdles 00000000000111110101111000100011 responsive 00000000000111110110011110010000 Cup 00100000000000000010100101100111 panels 00000000000000101011000001010101 concert 00000000000111101011111100100001 Ryder 00100000000000100000100100101000 detailing 00000000011010010000000000001010 Thurmond 00100000000111111000111010001000 tenants 00000000000110111011110000110011 circulated 00000000000001010101110111000010 cautiously 00000001100000000000010001110010 compatible 00000000000110101101100000110010 disadvantage 00000000000110100111101010100111 Milwaukee 00100000000001111111111001101000 additions 00000000000110011111001000100011 literary 00000000000001100000000000110000 east 00000000000010000000001110101000 BPCA 01000000000000000000000000000000 reliance 00000000000111111000010100101000 acquires 00000000000000010101000000010010 Factory 00100000000111101010100000100001 WSJ 01000000000000000000000000000000 shelters 00000000000111111110001100000011 chooses 00000000000010000000101000110010 1.23 00000000000000000000000000000000 calendar 00000000000000001100000001000111 strategists 00000000000010010010000010110011 collar 00000000000000000010111000000001 lights 00000000000011001111110101100011 scrap 00000000010101111111110110110010 blank 00000000000000101000011010010000 slack 00000000000111110111100000010000 Afghan 00100000000000000111011000110000 39.55 00000000000000000000000000000000 ICI 01000000000000000000000000000000 13.4 00000000000000000000000000000000 similarly 00000000000111100111111011101000 Works 00100000000111101111000000010010 prepares 00000000000011010010101000110010 ethylene 00000000001001000100011010110000 capitalists 00000000000111101010111011101001 silent 00000000000000101000110110010000 newest 00000000000010010000010011010000 Enfield 00100000000000000000000000000000 Michel 00101111111000001100010100001000 Municipals 00100000000111101011111011100011 bets 00000000000111001011111101100011 artificial 00000000000001100000010100010000 hurdle 00000000000111111100111010110101 succession 00000000000110100101101010100111 tie 00000000000111010110010110110010 Lumpur 00100000000000000000000000000000 1.875 00000000000000000000000000000000 Kuala 00100000000000000000000000000000 yard 00000000000000011111000001000111 relying 00000000000111110000100000110010 deserves 00000000100100000011000000010010 someday 00000001010100000000001001110010 dangers 00000000000111111010111000001111 balanced 00000000000111010001010010010000 imposes 00000001010010000011000000010010 licensing 00000000000000000000100011100001 1963 00000000000000000000000000000000 budgetary 00000000001011100000000000110000 Technical 00100000000000000010000000110000 Calgary 00100000000111010110101001101000 refinance 00000000000110111110001110110010 Seita 00100000000000000000000000000000 implied 00000000000000000101100111000010 dust 00000000000111010111111000000001 massages 00000000000000000000000000000000 Property 00100000000111101001100000100001 potatoes 00000000000111110110111001100011 doldrums 00000000000111100101010001100111 House-passed 00100000000000000000000000000000 preamble 00000000000000000000000000000000 inner-city 00000000000000000000000000000000 refusing 00000000001111101010111000110010 Ralston 00101111111111010000100100101000 Phil 00101111111011000000001000011000 granting 00000000000000101111111101000000 Bebear 00100000000000000000000000000000 cameras 00000000000111111100101001100011 disturbing 00000000000100010001010010010000 deductible 00000000000110100110110000110010 8.60 00000000000000000000000000000000 characterized 00000000000101100010110000110010 walks 00000000000101111100001000110010 devote 00000000001111101111001110110010 FT-SE 01000000000000000000000000000000 Baldwin 00101111111110111000001000001000 deter 00000000000110101011111110110010 Harper 00101111111111011011111010101000 chartered 00001111111000010000101001000000 Fromstein 00100000000000000000000000000000 deficiency 00000000000000010000000111100101 L.A. 01000000000000000000000000000000 Scientific 00100000000001000001100000110000 exhibit 00000000000111101001101000110111 Fluor 00100000000111010101011100101000 1.80 00000000000000000000000000000000 deficiencies 00000000000111001010011000100011 Omaha 00100000000110111001101001101000 tailspin 00000000000111111111111100011111 Paso 00101111111100100010110000011101 undertaking 00000000011111100010110001000000 hence 00000000000111001101000001110010 undermined 00000000000000000001110000110010 Baum 00100000000000000000000000000000 spate 00000000000111111101110101111111 dreams 00000000000111110110111101100011 foster 00001111111100010000110000101000 spotted 00000010010101000101010000110010 Rate 00100000000000001110101011000111 dip 00000000000111110110011000110111 Morning 00100000000000000001110000010111 Citic 00100000000000000000000000000000 manipulation 00000000000110001110000010100111 Marc 00101111111000000000110110011000 workplace 00000000000001000000110000100001 yearly 00000000000001000101000101010000 executions 00000000000110001011110101100011 Wendy 00100000000110100101111110101000 Patterson 00101111110010101000000010001000 Crandall 00101111111100111100100010001000 Olympic 00100000000110000000001000110000 theatrical 00000000000010010000000000110000 brick 00000000000000100010001100100001 backdrop 00000000000111111111011101100111 hard-disk 00000000000000000000000000000000 Armonk 00100000000111110011101001101000 disclosures 00000000000111111100101000100011 ESB 01000000000000000000000000000000 price-earnings 00000000000000000000000000000000 two-part 00000000000000000000000000000000 Hopkins 00101111111000001010101001001000 Cotton 00100000000111110011101110110000 Macintosh 00100000000111011000010000110000 T-shirts 00100000000000000000000000000000 architects 00000000000111000010100000110011 Laurel 00100000100001011100010000001000 venture-capital 00000000000000000000000000000000 3.25 00000000000000000000000000000000 Pontiac 00100000000101111011111100001000 productive 00000000000000000001010010010000 object 00000000000111110101111010110111 scenarios 00000000000111000000001010100011 cooled 00000000010001110010110000110010 billionaire 00000000000000011010011110110101 poorer 00000000000010010100001111000000 seniority 00000000000101010001110000100001 sang 00000000000110100011010111000010 air-freight 00000000000000000000000000000000 LAC 01000000000010011001000100101000 threaten 00000000000110100011001110110010 Large 00100000000000000001010000010000 home-equity 00000000000000000000000000000000 bunch 00000000000111111111011101111111 Wohlstetter 00100000000000000000000000000000 Tisch 00101111111100011011000010001000 Cupertino 00100000000101110011101001101000 register 00000000000100011110010110110010 Marks 00100000000000000000000000001011 Hutchinson 00101111110100100100001000001000 driver 00000000000111101111111000100001 crystal 00000000000010001010001000110000 looms 00000000100101000110001000110010 large-scale 00000000000000000000000000000000 N.M. 01000000000000000000000000000000 coups 00000000000000000000000000000000 demonstrates 00000000000000110011000000010010 Duke 00100000000101001111111000101000 human-rights 00000000000000000000000000000000 Commerzbank 00100000000110111011011100101000 strictly 00000000000101011000000001110010 endanger 00000000000110111000111110110010 Six 00100000000111111111111001010000 Son 00100000000111111011111110000001 big-time 00000000000000000000000000000000 drill 00000000000001010111100110110111 plummet 00000001101101111101010110110010 M$ 00100000000000000000000000000000 dam 00000000000111000111111000000001 rolls 00000000100100001111000000010010 Rand 00100000000000000011000000001011 Kageyama 00100000000000000000000000000000 Castro 00101111111100011100000001001000 reflection 00000000000111110111011000111111 Reich 00101111111111111010100010001000 Fla 00100000000000000000000000000000 Citing 00100000000111111101011010000010 hang 00000000000111010110110110110010 Suez 00100000000111001000110100101000 Geoffrey 00101111111000000000011100011000 Schwab 00101111111100111100110000001000 Yorker 00100000000000111001011110000010 resembles 00000100100010000011000000010010 ages 00000000000000010001100001000111 MeraBank 01000000000100111000110100101000 averaging 00000000000000001100100100110010 1.07 00000000000000000000000000000000 Kevin 00101111111000000011000110011000 erosion 00000000000111011000111001100111 exercises 00000000000110111111000000010010 successes 00000000000111011101111000100011 hot-dipped 00000000000000000000000000000000 Neuberger 00100000000000000000000000000000 elite 00000000000001011011001100100111 televised 00000000000010000101000000010000 congressmen 00000000000110010110111000110011 interior 00000000000111100111110110110000 Seabrook 00100000000110111011100000100001 Marlowe 00100000000000000000000000000000 single-A 01000000000000000000000000000000 compact 00000000000100010000001010110000 Shop 00100000000111100011110001001000 Oak 00100111001100001110011010101000 Korotich 00100000000000000000000000000000 Chancery 00100000000000011001000111100101 reserved 00000000001110010000010000110010 behaved 00000000000000000000000000000000 Charter 00100000000000000000000100100001 Kim 00101111111000101000010100001000 bank-holding 00000000000000000000000000000000 arose 00000000000010000110001000110010 devastation 00000000000110000111111000001111 Elcotel 00100000000000000000000000000000 Hampton 00100000000111010000001000001000 Barron 00100000000111111001111110101000 atoms 00000000000000000000000000000000 restructurings 00000000000111110110000010100111 Convex 00100000000000000000000000000000 worthy 00000000001011101011110000110010 unanticipated 00000000000000000000000000000000 incredible 00000000000000100000110100010000 horses 00000000000010111101110101100011 tricky 00000000000100010101010010010000 Avis 00100000000000011110111100101000 mural 00000000000000000000000000000000 cough 00000000000111111111110110110111 eroding 00000000000111111101010001000000 sentencing 00000000000011101011000001100111 Kohlberg 00101111111111101100110100101000 Abramson 00101111111000001110000010001000 amazing 00000000000010101110110100010000 trustee 00000000000111011111101010110101 evenly 00000001010000010000010001110010 translate 00000000000111001010101110110010 broad-based 00000000000000000000000000000000 permanently 00000000000100000000010001110010 Chris 00100000000000000000100000011000 Jews 00100000000111100000100000110011 confidential 00000000000000111001000110010000 Chevy 00100000000000010111111100001000 trough 00000000000111111001101010100111 tumbling 00000000000000011010010001000000 Drilling 00100000000000000000000001100001 Outside 00100000000010110000000000001010 Toseland 00100000000000000000000000000000 Plains 00100000000000000000111110100101 packaged-goods 00000000000000000000000000000000 Duncan 00101111111110100100000100001000 protectionism 00000000000001101011110010100111 True 00100000000011000100010110010000 dating 00000000000000001111100001000000 1.36 00000000000000000000000000000000 uncomfortable 00000000000000011111110000110010 pledge 00000000000111111101111010110111 investigated 00000010100111010100010000110010 catching 00000000000110111110100001000000 tips 00000000000111101010110101100011 commenting 00000000000111110100100000110010 Eddie 00100000000010001100111110000010 inform 00000000000011100111111110110010 Gaubert 00101111111101111100110010001000 DIG 01000000001011010110010110110010 Deltacorp 00100000000000000000000000000000 handy 00000000000011100100111010000000 cup 00000000000000000010100101100111 1,200 00000000000000000000000000000000 committing 00000000000111011011111101000000 12.9 00000000000000000000000000000000 resident 00000000000011101101011110110101 standardized 00000000000110010101000000010000 antibody 00000000000000000110111010110000 corresponding 00000000000000001100100000010000 congress 00000000000111101111001101101000 Intergroup 00100000000110111011100000110000 Lynn 00101111111011000000000100001000 Egyptian 00100000000001001000010100110000 halls 00000000001001000111110101100011 Bar 00100000000001000000000110110111 schemes 00000000000111100000110100100011 remote 00000000000010100010011010010000 bomb 00000000000000000011111000000001 applicable 00000000000111100000111000110010 policyholders 00000000000100100011110000110011 examined 00000000001011010100010000110010 petrochemicals 00000000000101010011111010110000 Jacobs 00101111111100001001110010001000 upgrading 00000000000101111111010001000000 Aoun 00100000000000000000000000000000 Town 00100000000111101111110100000001 bans 00000000000101111111000000010010 prosecutorial 00000000000010011000000000110000 sweat 00000000000111110110110110110111 regained 00000000001011000100010000110010 videocassette 00000000001100001000001010110000 garbage 00000000000101101111110000100001 judiciary 00000000000111111101010101010001 polypropylene 00000000000110000100011010110000 financiers 00000000000111110100010000110011 capabilities 00000000000111110111110100100011 Bronfman 00101111111000001000100000001000 '80s 00000000000000000000000000000000 RISC 01000000001101001000001010110000 costing 00000000000000010000100101000000 hourly 00000000000000100101000101010000 inflows 00000000000111111001010000000011 Men 00100000000000000000111100110011 buried 00000000011100001100010000110010 depress 00000000000111011000111110110010 financings 00000000000111110000010000100111 lasts 00000000000101000110001000110010 franchisers 00000000000110101001111000110011 Prosecutors 00100000000000001001010010110011 Barrett 00101111111011011100001000001000 slot 00000000000000001010111000000001 heroes 00000000000101111001110101100011 Ironically 00100000000111111110111011101000 embryo 00000000000000000000000000000000 landmark 00000000000010100000000010010000 trails 00000001000010001111000000010010 Harrison 00101111111000100100000100001000 consume 00000000001100111111001110110010 headlines 00000000001100101111110101100011 unscrupulous 00000000000011011101101000110000 duty-free 00000000000000000000000000000000 Heller 00101111111010100101001000001000 375 00000000000000000000000000000000 Kan. 00100000000000000000000000000000 accords 00000000000100101010010000100111 goodwill 00000000000000101100100000100001 Cananea 00100000000000000000000000000000 tactical 00000000000000101101110000110000 participant 00000000000111101100111010110101 Tomorrow 00100000000000101100010001110010 hook 00000000000111001111001010110111 DEC 01000000000000000000000000000000 Joint 00100000000111101010111000110000 humanitarian 00000000000001011011110000110000 BART 01000000000000000000000000000000 Shamir 00101111111101100010010010001000 balls 00000000000001101001110101100011 cartel 00000000000111111111110100000101 bulls 00000000000000001100101001110011 royalties 00000000000111100100100100000011 listeners 00000000000000000011110000110011 rod 00000000000100000111111100001000 delicate 00000000000001010000000010010000 bullet 00000000000110111001111000000001 birthday 00000000000000000100000001000111 scary 00000000000111010110011010010000 energetic 00000000000001011000110100010000 confirms 00000000111100100011000000010010 Ogden 00101111111110101001000100001000 Jordan 00100000000111110110010000001000 midsized 00000000001000111000001010110000 Wyoming 00100000000111111110110001101000 proliferation 00000000000111111111010110111111 pot 00000000000110001101100101100111 skittish 00000000001110111111110000110010 TCI 01000000000000000000000000000000 Russians 00100000000111100110111110110011 POP 01000000000001000100110110110111 remodeling 00000000000111011110100001100001 Islands 00100000000000101101010100000001 N.H. 01000000000000000000000000000000 Jackie 00101111111001001001100010011000 multinational 00000000000000000011100100110000 PPI 01000000000000000000000000000000 confiscated 00000100010011010100010000110010 stark 00000000000100111100000000001000 composed 00000000000110001011110000110010 18.5 00000000000000000000000000000000 knowledgeable 00000000000101001111110000110010 Symbol 00100000000111011110110110110010 Jolla 00101111111000000110110000011101 PBS 01000000000000000000000000000000 Manpower 00100000000110111101011100101000 Digest 00100000000111001110100110110111 guerrilla 00000000000000010001011000110000 Marathon 00100000000000010000011000101000 Please 00100000000000111010100110110010 curtailed 00000000000000110100111001000000 effectiveness 00000000000111110010111000001111 thriving 00000000000010010101000010010000 irony 00000000000111101011110000001111 reeling 00000000000111100001100100110010 trailed 00000010110101000101010000110010 mobile 00000000000100110000001010110000 scattered 00000000000001001101101001000000 jeans 00000000000111011011111010110000 Gate 00100000000010100001111000000001 surpluses 00000000000110111000100000100111 morale 00000000000111101111011100000111 Coastal 00100000000000010111110110101000 identical 00000000001101100000111000110010 185 00000000000000000000000000000000 withheld 00000001000101010100010000110010 hall 00000000001100100100100000001000 assert 00000000000101011001100110110010 Mother 00100000000111100111011110000001 affidavits 00000000000000000000000000000000 Mayer 00101111111100100101001000001000 Haas 00101111111100100001110001001000 conclusions 00000000000111100100101000100011 liberalization 00000000000011100111111010100111 Koskotas 00100000000000000000000000000000 Ark. 00100000000000000000000000000000 nightmare 00000000000111111010101101100111 280 00000000000000000000000000000000 v. 00001111111001000111101011011000 tanker 00000000000100000100111000000001 Poles 00100000000110100000111000110011 Ortiz 00100000000000000000000000000000 legally 00000000001110000000000001110010 L.P. 01000000000000000000000000000000 260 00000000000000000000000000000000 hazardous-waste 00000000000000000000000000000000 PSE 01000000000000000000000000000000 vendor 00000000000010001100001000100001 endure 00000000001001101110101110110010 renew 00000000000101111010111110110010 sample 00000000000111011001100101100111 distressed 00000000000110001000101001000000 2007 00000000000000000000000000000000 revolutionary 00000000000001001001011000110000 Competition 00100000000111101101111010100111 Luis 00101111111001101100000010011000 mainstay 00000000000110111000100101100111 utterly 00000000000000101000000001110010 enjoys 00000100110010000011000000010010 wholly 00000000010000111000000001110010 measurements 00000000000111100010001000100011 flamboyant 00000000000010110001000010010000 exercising 00000000000110100101111101000000 flies 00000000010001000111000000010010 gum 00000000000000000010110000100001 A.C. 01000000000000000000000000000000 benefiting 00000000000111011001100100110010 N.V 01000000000000000000000000000000 Consultants 00100000000000001111000010110011 dollar-denominated 00000000000000000000000000000000 trains 00000000000111001011101001100011 toilet 00000000000001011111010000110000 EPO 01000000000000000000000000000000 propelled 00000000110100100111010000110010 suitors 00000000000111101100111001110011 free-lance 00000000000000000000000000000000 shorter 00000000000000100100001111000000 Sperry 00100000000101111100111100101000 royalty 00000000000000000000101011100001 lens 00000000000001000100001000100001 permitting 00000000001010010000000000001010 lacking 00000000000111001101110101000000 Emergency 00100000000001000000010100010000 NatWest 01000000000100101100111000101000 insufficient 00000000000001100000000110010000 unwanted 00000000000001110000010100010000 devise 00000000010000111111101110110010 collaboration 00000000000111110010110000100111 1.27 00000000000000000000000000000000 CityFed 01000000000011101111000100101000 advancers 00000000000100100001001001110011 Tire 00100000011000010100001110110000 Maxicare 00100000000110100111110110101000 reception 00000000000110011011111101100111 8.03 00000000000000000000000000000000 venerable 00000000010000011000001000110000 habit 00000000000111110100100101100111 trimming 00000000000111001101011101000000 Pat 00101111111001010110010000011000 pork-barrel 00000000000000000000000000000000 doubtful 00000000000101001110010001110010 12.7 00000000000000000000000000000000 0.8 00000000000000000000000000000000 capitalized 00000000000001111000010000110010 blueprint 00000000000111111100001111100111 Zoete 00101111111110101100111110000010 Wedd 00101111111001101010010010110000 sharing 00000000010000000010110001000000 non-food 00000000000000000000000000000000 poured 00000000001001101001001000110010 soda 00000000001011110011111010110000 probable 00000000000011101000000000010000 Burton 00101111111000110100000100001000 assure 00000000000110110100100110110010 prevention 00000000000000000011001001100001 threatens 00000000000011000001101000110010 usage 00000000000000000011010100000111 outflows 00000000000111111101010000000011 murdered 00000000100101110100010000110010 geared 00000000011011001100110000110010 12.6 00000000000000000000000000000000 Retail 00100000000000000101010000110000 bottling 00000000000000011000011010110000 sticking 00000000000110111101100001000000 outlined 00000000001010111001010000110010 inhibit 00000000000110011001101110110010 arbitration 00000000000000000000110011100001 artery 00000000001101000111111001100111 Including 00100000000011101111011010000010 Employers 00100000000111111110111000110011 burdens 00000000000111101100101110001111 singing 00000000001011111010110001000000 belts 00000000000000000001110101100011 modernization 00000000000010010001111101001111 Meese 00101111111100111000010010001000 bribery 00000000000000010110100010100111 Edisto 00100000000000000000000000000000 retaining 00000000000100010011111101000000 hanging 00000000000010010111100001000000 Ridley 00100000000000000000000000000000 attributable 00000000000111001100110000110010 A.P. 01000000000000000000000000000000 court-appointed 00000000000000000000000000000000 Larsen 00101111111100100010100010001000 summary 00000000000011001100011100010000 attracts 00000000001011100001000000010010 22.5 00000000000000000000000000000000 negotiation 00000000000111011010011010100111 Boone 00101111111011000010011100001000 Adm. 00100000000000000000000000000000 unfriendly 00000000000000101001001100010000 coatings 00000000000111101000101111001001 Have 00100000000000000000001100010010 Susie 00101111111000000101111000011000 printers 00000000000110101100000111001001 fronts 00000000000110110010000010100011 Adams 00101111111100000100101000001000 mailing 00000000000001110010110001000000 arms-control 00000000000000000000000000000000 foundations 00000000000110111011111101100011 Lion 00100000000111101111001011000101 Schroder 00101111110001101111111010101000 victories 00000000000111000001111000100011 single-A-1 01000000000000000000000000000000 Deukmejian 00101111111111011000001010001000 rubber 00001111111111011011110001001000 Employee 00100000000000000000000000110101 archrival 00000000000000100010100100100001 Vienna 00100000000011111111111001101000 unwelcome 00000000000010100001110100010000 Capcom 00100000000000000000000000000000 crews 00000000000010101111110101100011 23.5 00000000000000000000000000000000 Gannett 00100000000111111101011100101000 debates 00000000000101010110111010100111 Inflation 00100000000111101001011100000111 determination 00000000000111101111111100100111 Jacob 00101111111001110000000100001000 Pearce 00101111111001011010100010001000 ASKO 01000000000000000000000000000000 finger 00000000000111100011110000000001 loophole 00000000000111111000110011100111 waiver 00000000000110101001111101100111 Robins 00100000000111100110101100101000 teeth 00000000000110101001111101100011 minivans 00000000000110101010111001100011 Associated 00100000000000000001100000110010 defer 00000000000111101111001110110010 JAL 01000000000000000000000000000000 360 00000000000000000000000000000000 Realist 00100000000000000000000000000000 Thailand 00100000000110111100111101101000 outweigh 00000000000001111001101110110010 calculation 00000000000111100001111101100111 grade 00000000000000011101100001000111 broaden 00000000000110011010111110110010 Morita 00100000000000000000000000000000 Either 00100000000000000010011011000000 Wellcome 00100000000001100010111100101000 focuses 00000000000000000000100000110010 Judiciary 00100000000111111101010101010001 Jan 00100000000000010000111000011000 Odds 00100000000111111011010000100111 overruns 00000000000000000000001110000011 outsider 00000000000111111101101000100111 Catholic 00100000000000000100101000110000 Cray-3 00100000000000000000000000000000 centerpiece 00000000000111111011011000001111 380 00000000000000000000000000000000 digital 00000000000010001010100100101000 TRO 01000000000000000000000000000000 Westmin 00100000000000000000000000000000 weighs 00000000000001011101000000010010 infection 00000000000110111010110010100111 Butler 00101111111101101010001000001000 Had 00100000000000000000000000010010 Piper 00100000000100001111110000101000 deceptive 00000000000001110100000110010000 benign 00000000000011010001010010010000 pulls 00000000110101101001001000110010 subscribe 00000000000011010111010110110010 HHS 01000000000000000000000000000000 Mandela 00101111111111000110100010001000 Weil 00101111110110110101001000001000 propane 00000000000010110101010000110000 philosophical 00000000001111100000000000110000 Broadway 00100000000111101111111100100001 Murata 00100000000000000000000000000000 gubernatorial 00000000000000001000111000110000 violates 00000000010000010001000000010010 jetliner 00000000001110101010001010110000 Shanghai 00100011111111111010111110101000 towns 00000000000111100011110001100011 airplanes 00000000000111011111111001100011 Ivory 00100000000111110110001110101000 Pasadena 00100000000111101001101001101000 defunct 00000000000000000010101001110000 class-action 00000000000000000000000000000000 episodes 00000000000110000011100100101111 solo 00000000000000010010101100100001 resemble 00000000000011111001101110110010 Prize 00100000000110111010111010110101 1.82 00000000000000000000000000000000 disagreed 00000000001111110110010000110010 spouse 00000000000111100111010010110101 Transport 00100000000011001111100110110111 Menlo 00100000000010001010011010101000 tackle 00000000010111010111111110110010 35,000 00000000000000000000000000000000 Guaranty 00101111111000000000001001001000 3.75 00000000000000000000000000000000 last-minute 00000000000000000000000000000000 hectic 00000000000010011010011100010000 weakest 00000000000001000111010011010000 hunters 00000000000000100011101001110011 Book 00100000000111001100101000100001 punts 00000000000000000000000000000000 Andrews 00101111111100011010001000001000 wooing 00000000000000001001001101000000 8.33 00000000000000000000000000000000 Doordarshan 00100000000000000000000000000000 protects 00000000001000010001000000010010 corners 00000000000000111011100100101111 thwart 00000000000100110011111110110010 7.93 00000000000000000000000000000000 unacceptable 00000000000011001000110110010000 jumbo 00000000000001001010001010110000 sight 00000000000111111001011001101111 sabotage 00000000000111111111011110110111 bottled 00000000000111110011110110110111 athletes 00000000000111000110111000110011 Firms 00100000000110000100010011110011 loaded 00000000100011110110010000110010 terminate 00000000000111100011111110110010 diplomats 00000000000000001110000010110011 environmentally 00000000001110101000000001110010 Flight 00100000000111101000000000100001 specially 00000000000111001111001001110010 Caltrans 00100000000000000000000000000000 circuits 00000000000001100110000101001001 19.6 00000000000000000000000000000000 practically 00000000000000110111000001110010 worsen 00000000000101110100111110110010 Heights 00100000000000000011100010100101 Torrijos 00100000000000000000000000000000 Leaseway 00100000000000000000000000000000 ambassador 00000000000111111000001100100111 microprocessors 00000000000110010101111001100011 Quinlan 00100000000000000000000000000000 personal-computer 00000000000000000000000000000000 statutory 00000000000010011010000000110000 rescind 00000000011111010111111110110010 unified 00000000000011000001000010010000 single-family 00000000000000000000000000000000 breeding 00000000001100000010110001000000 Guy 00100000000111101010110010110101 Krasnoyarsk 00100000000111011010001010110000 9.8 00000000000000000000000000000000 Deaver 00101111111101101010101010001000 rash 00000000000111111111010101111111 allowance 00000000000111111011111000111001 pasta 00000000001110001011111010110000 arise 00000000000111001101010110110010 Lionel 00100000000000111000001000011000 MacDonald 01001111111100001010100010001000 capitalist 00000000000011100001011000110000 Thousands 00100000000111111111111000101111 5.94 00000000000000000000000000000000 Jenkins 00101111111100000100111010001000 Airline 00100000000000000001100000100101 themes 00000000000111110111110101100011 ranked 00000000110000001100010000110010 Warner-Lambert 01000000000000000000000000000000 sits 00000000000101001100001000110010 cross-border 00000000000000000000000000000000 packed 00000000000011110110010000110010 Portland 00100000000110011111101001101000 Washington-based 00100000000000000000000000000000 shifted 00000000001111111010110000110010 beleaguered 00000000000101101000101001000000 deviation 00000000000000000000000000000000 Sources 00100000000000000000001000010101 Steppenwolf 00100000000000000000000000000000 SHV 01000000000000000000000000000000 McLennan 01000000000000000000000000000000 94 00000000000000000000000000000000 1.12 00000000000000000000000000000000 plug 00000000000111101101111000110111 Templeton 00100000101000101001000000001000 Beebes 00100000000000000000000000000000 specialized 00000000000011000100101010110000 Burgess 00100000000000000000000000000000 dire 00000000000000000101001010010000 Yankee 00100000000000000001100100100001 advertisements 00000000000101101001110101100011 pits 00000000110100001111000000010010 village 00000000000111001111000100000001 income-tax 00000000000000000000000000000000 Salinger 00100000000000000000000000000000 athletic 00000000000000000011001100100001 2016 00000000000000000000000000000000 wanting 00000000000001101010111000110010 Leval 00100000000000000000000000000000 enthusiastic 00000000000010011111110000110010 Deng 00101111111100111000101010001000 flurry 00000000000111111110110101111111 namely 00000000000111111111101001000010 Toys 00100000000111101110111001100011 bothered 00000000000110011000110000110010 Amgen 00100000000110110000111100101000 metaphor 00000000000111100100111010110101 obligated 00000000000110011100011000110010 weird 00000000001000011110011010010000 competent 00000000000010110001010010010000 solar 00000000000000001101110000110000 1.54 00000000000000000000000000000000 applies 00000000000001000001101000110010 pre-trial 00000000000000000000000000000000 co-author 00000000000000000000000000000000 temptation 00000000000111011101111100100111 onerous 00000000000001000101001110010000 Leadbetter 00100000000000000000000000000000 capitalize 00000000000111100110110110110010 Stark 00100000000100111100000000001000 sky 00000000000111011110111000000001 flee 00000000000010101110101110110010 negligible 00000000000011011000000000010000 depletion 00000000000100100101000101001111 12.8 00000000000000000000000000000000 surrendered 00000000000111000100010000110010 fiber 00000000000111011000001010110000 pall 00000000000100110010111010100111 current-carrying 00000000000000000000000000000000 peddling 00000000000000001001110001000000 arranging 00000000000111001111111101000000 subtle 00000000000000010001010010010000 Mercedes 00100000000111010000000001000111 Light 00100000000111101011110001101111 root 00000000000100100111001010110111 1,400 00000000000000000000000000000000 thieves 00000000000111001101111000110011 Oy 00100000000000000000000000000000 swift 00000000000000100110011010010000 Customers 00100000000111101010110000110011 fabrication 00000000000000011001100001100001 ranch 00000000000111101100000100000001 savvy 00000000000111101000101000110000 binge 00000000000000010010011100100011 Nature 00100000000111111100111000001111 MEI 01000000000000000000000000000000 jailed 00000000010101110100010000110010 pencils 00000000001010011111110101100011 Knight 00100000000000001010000000001000 Corps 00100000000000101011000100001001 tightened 00000000000111100010111001000000 alleviate 00000000000110101010111110110010 Command 00100000000111101111000110110111 damn 00000000000101001000011010010000 approaching 00000000000000010011100001000000 contingency 00000000000000000101111110110000 portrait 00000000000111100010111000111111 coaches 00000000000110111001110101100011 Windsor 00100000000001001100101001101000 Partly 00100000000100001011000001110010 rebel 00000000000001110001011000110000 wipe 00000000000101001110101110110010 Redford 00100000000000000000000000000000 Publishers 00100000000011110000010000110011 550,000 00000000000000000000000000000000 O'Neill 01001111111101100000100010001000 stagnant 00000000000001100111100000010000 Elders 00100000000000001111111000101000 nickel 00000000000111101111101110110000 severance 00000000000000000000001011100001 malignant 00000000000000000000000000000000 faded 00000000010001000110001000110010 Nuys 00101111111001001111110100100001 commerce 00000000000111111111110110110000 Sunbelt 00100000001111101000110100101000 Erich 00101111111000000110000010011000 acquirer 00000000000111111001101100100111 19th 00000000000000000000000000000000 pipe 00000000000110000001111010110000 professors 00000000000100101100111000110011 Picop 00100000000000000000000000000000 Norwood 00100000000101001101001000001000 punish 00000000011010100011111110110010 practitioners 00000000000010000110100000110011 probability 00000000000111110011110000001111 148 00000000000000000000000000000000 Friday-the-13th 00100000000000000000000000000000 whooping 00000000000000000000000000000000 restoration 00000000000111101110101101001111 rocks 00000000011111100111110101100011 Utsumi 00100000000000000000000000000000 midyear 00000000000111110110010000101000 Depending 00100000000111111000100000110010 faculty 00000000000001000001000010000001 mismanagement 00000000000111101111100010100111 108 00000000000000000000000000000000 laughing 00000000000101001111000001000000 indexation 00000000000000000000000000000000 ambitions 00000000000111110010111101100011 tired 00000000001111101011110000110010 Tim 00101111111000100001111000011000 recreation 00000000000000000110001101100001 Accord 00100000000111101111011000100111 renewal 00000000000011110110101101001111 Louisiana-Pacific 01000000000000000000000000000000 425 00000000000000000000000000000000 denounced 00000010101011000101010000110010 pitching 00000000010010101110100001000000 Get 00100000000111111010101110110010 erased 00000011100111010100010000110010 outlawed 00000000000111111001101001000000 bite 00000000000111110011001010110111 subscriber 00000000000000001110111000100001 personality 00000000000111001011110000000001 pervasive 00000000000101110001010010010000 Uranium 00100000001101000100011010110000 one-half 00000000000000000000000000000000 etc 00000000000000000000000000000000 500-Stock 01000000000000000000000000000000 Braniff 00100000000111011111001100101000 abused 00000011000111010100010000110010 performer 00000000000111100101111010110101 '87 00000000000000000000000000000000 Brookings 00100000000000111001100011010000 gallons 00000000000000000001100100001011 Eight 00100000000111111110011001010000 roller-coaster 00000000000000000000000000000000 underwear 00000000010101101011111010110000 recoup 00000000001110101111001110110010 Geographic 00100000000000100010000000110000 Friend 00100000000111101011011110000001 UNESCO 01000000000000000000000000000000 Mideast 00100000000111111111011011000101 grabbed 00000001111011000101010000110010 Ever 00100000000000100100001001110010 Mitterrand 00101111111000101000001010001000 irrelevant 00000000000111100011110110010000 youngest 00000000000000000111010011010000 KGB 01000000000000000000000000000000 repairing 00000000000000100111111101000000 diversity 00000000000111000010111000001111 conferences 00000000000000001100110001000111 hung 00000000000100001001001000110010 flowing 00000000000000000111100001000000 Aichi 00100000000000000000000000000000 marched 00000000011011101001001000110010 Lama 00100000000000100011011110000111 Hydro-Quebec 01000000000000000000000000000000 hard-line 00000000000000000000000000000000 stockholder 00000000000001000000111100010000 Nimitz 00100000000000000000000000000000 meaningful 00000000000001001000000000010000 wherever 00000000000000101110101001000010 reinforcement 00000000000000000000000000000000 dealerships 00000000000111111110101001100011 educate 00000000010010111011111110110010 swelling 00000000000011011111010001000000 pro-life 00000000000000000000000000000000 technically 00000000001000001000000001110010 Bergsma 00100000000000000000000000000000 Ramirez 00100000001110001001111010001000 cheered 00000000000001010001110000110010 creatures 00000000001111000111110101100011 fanfare 00000000000110010110110100100111 Perlman 00100000000000000000000000000000 underscore 00000000000000011100100110110010 ocean 00000000000111110010001010110000 commute 00000000000000000000000000000000 debris 00000000000110100101110101100011 unpopular 00000000000011000001110100010000 Often 00100000000000100000001001110010 computer-assisted 00000000000000000000000000000000 lenses 00000000000001100101111001100011 insulation 00000000000111111011011111001001 recognizes 00000001001011100011000000010010 Airbus 00100000000000000110110100101000 keen 00000000000010000110001010010000 beings 00000000000101111101000100100111 Kume 00100000000000000000000000000000 DDB 01000000000000000000000000000000 mildly 00000000000111101000000001110010 memorandum 00000000000111100110001011100111 finishes 00000000101010000011000000010010 Weekes 00100000000000000000000000000000 G-7 00100000000000000000000000000000 postwar 00000000000000001000000011010000 gallon 00000000000111111111111101011111 batteries 00000000000111110111111001100011 replies 00000000000101100011010111000010 personal-injury 00000000000000000000000000000000 incumbent 00000000000111101110011000110000 OMB 01000000000000000000000000000000 neighbor 00000000000111111001011110000001 characteristic 00000000000111111100010101100111 Somalia 00100000000000000000000000000000 Minerals 00100000000101001011011010110000 sexual 00000000000100001000000000110000 butter 00000000000010011001011111001001 sunk 00000000001100111010110000110010 Palmer 00101111111100001011001000001000 Furukawa 00100000000000000000000000000000 tax-loss 00000000000000000000000000000000 TVs 01000000000000000000000000000000 8.15 00000000000000000000000000000000 prodding 00000000001011011111010001000000 Andreas 00101111111100110101010100001000 ENERGY 01000000000000010110010010110000 beta 00000000000000001011100000100001 fool 00000000000110001111001010110111 extract 00000000000100101111101110110010 8.06 00000000000000000000000000000000 cooking 00000000000101000010110001000000 Alice 00101111111000001001110000011000 Kane 00101111111010100110100010001000 importer 00000000000111101011100001110101 8.65 00000000000000000000000000000000 casual 00000000000100000001000000010000 wore 00000000000011001011000000010010 pitches 00000000000000010010110100100011 translation 00000000000010001001100101100111 relocation 00000000000111110011001001100001 accumulated 00000000000010101100010000110010 afloat 00000000000001000100010001110010 taxed 00000000000010010010110000110010 Traditional 00100000000000000000001000110000 collections 00000000000111100110001100000011 naming 00000000000110110011111101000000 hearts 00000000000111011010111101100011 restricts 00000000000001110001000000010010 bulletin 00000000000000000100000000110111 7.75 00000000000000000000000000000000 incidents 00000000000111101000000010100011 Richfield 00100000000111111010101010100101 muscle 00000000000111111111101001111001 gloomy 00000000000000001001001010010000 revise 00000000000110111010111110110010 grace 00000000000000000110010000001000 racked 00000000000001111011001000110010 intentionally 00000001100001000001001001110010 oriented 00000000000001110001010010010000 promoted 00000000001111010100010000110010 craft 00000000000111101101100110110111 Worse 00100000000000000101001111000000 Sohmer 00100000000000000000000000000000 Carson 00101111111100100010010000001000 Tucker 00101111111110110101001000001000 encourages 00000000000101100001000000010010 theaters 00000000000100100011110001100011 freed 00000001100011010100010000110010 answered 00000000001100000101010000110010 coping 00000000000011010101100000110010 processor 00000000000000100000100001110101 artificially 00000000000011000001001001110010 constructed 00000000010101001100010000110010 chaotic 00000000000000010001000010010000 constraints 00000000000111010110100100100111 A.G. 01000000000000000000000000000000 insure 00000000010110111011111110110010 scripts 00000000000001100011110101100011 MIPS 01000000000000000000000000000000 4.75 00000000000000000000000000000000 certified 00000000000111000001101001000000 lovely 00000000000111101110011010010000 incinerator 00000000000001101010001010110000 9.1 00000000000000000000000000000000 benefit-seeking 00000000000000000000000000000000 11.8 00000000000000000000000000000000 Criminal 00100000000000000001000000110000 Kurt 00101111111000001000110110011000 self-incrimination 00000000000000000000000000000000 simultaneous 00000000000011000001000000010000 calculate 00000000000111100010011110110010 Lesko 00100000000000000000000000000000 ensuring 00000000000111101001111010000010 Attorneys 00100000000000010111000010110011 rift 00000000000111111100110000100111 notwithstanding 00000000000010001000001001110010 punishable 00000000000000000000000000000000 Cruz 00101111111000011000001010001000 inch 00000000000111100011101000100111 absolute 00000000000000001101010100010000 repression 00000000000101001011111010100111 encouragement 00000000000110010111110100100111 Oh 00100000000111111010101011101000 refrigerators 00000000000111010110111001100011 Curry 00100000000000000000000000000000 feeding 00000000001110110010110001000000 blonde 00000000000000000000000000000000 tours 00000000000000000000010101100011 flavor 00000000000111101110110000000001 contacted 00000001110011000101010000110010 Agreement 00100000000111101111111000100111 municipalities 00000000000110101011110001100011 frustrating 00000000000101010001010010010000 revision 00000000000110010111101010100111 scholar 00000000000111011011011110110101 shocks 00000000000111111001111000100011 Blackstone 00100000000001001011010100101000 Days 00100000000000000000000000011011 organizational 00000000000011100000000000110000 divisive 00000000000001011001010010010000 sovereignty 00000000000111100011110010100111 hunt 00001111111110001100000000001000 surging 00000000000000001010010001000000 Connolly 00101111111101011100100010001000 Marxist 00100000000001000001011000110000 titled 00000000000010110101010000110010 standpoint 00000000000111110101001001100111 magic 00000000000111000011110000000001 zip 00000000000000000000100111100101 presentation 00000000000111011111001011100111 Revolution 00100000000111110101101001100111 endless 00000000000001000110110100010000 signature 00000000000111011101010000000001 susceptible 00000000000101001100011000110010 occasional 00000000000001001010010100010000 1.48 00000000000000000000000000000000 competes 00000000110011110110010000110010 federation 00000000000110101101110001010101 12.3 00000000000000000000000000000000 restoring 00000000000011100111011101000000 celebrate 00000000001101100011111110110010 third-largest 00000000000000000000000000000000 hopeful 00000000000110001111110000110010 installing 00000000000101111101111101000000 motive 00000000000111111110101100010111 Resource 00100000000010000110010010110000 dilute 00000000001101111010111110110010 undo 00000000001110100111111110110010 moreover 00000000000111111111101011101000 Patel 00100000000000000000000000000000 Stick 00100010000101111101010110110010 triggering 00000000000111100111111101000000 parks 00000000000100000011000001111001 bursts 00000000000110011101100100101111 quote 00000000000111000111001010110111 defaulted 00000000000111010100100000110010 vicious 00000000000100011110011010010000 R.H. 01000000000000000000000000000000 Trecker 00100000000000000000000000000000 alarm 00000000000110101101001100100111 slashing 00000000000101001101011101000000 Cornell 00100000000010010111111000101000 hacker 00000000000000000000000000000000 Tokyo-based 00100000000000000000000000000000 roots 00000000000110111100111101100011 phased 00000000010111110010110000110010 restricting 00000000000000000011011101000000 Craven 00100000000000000000000000000000 revoke 00000000001001100110111110110010 procurement 00000000000000000100100011100001 shelter 00000000000101011110110110110111 Bonwit 00100000000001101100101010110000 restraints 00000000000111011010100100100111 Jobs 00100000000000000000100001100011 cheapest 00000000000000010001010011010000 Unix 00100000000101100100100000100001 psychiatric 00000000000000010001100000110000 5.75 00000000000000000000000000000000 tube 00000000000001000100111000000001 secrets 00000000000110000111011100100011 prefers 00000000000000101100101000110010 fastest 00000000000111111110000011010000 parallels 00000000000001101010110000100111 Col. 00100000000000000000000000000000 compelling 00000000000000011101010010010000 cafeteria 00000000000001010001111010110000 Lily 00100000000101001101111100001000 1.43 00000000000000000000000000000000 Guangdong 00100000000000000000000000000000 Teller 00100000000100010011111111001001 hosts 00000000000111111111000000010010 cooperating 00000000000111011101100000110010 dependence 00000000000111011110100100100111 spite 00000000000111111111011001101111 unrealistic 00000000000001010101000110010000 guests 00000000000110110111110000110011 Egon 00100000000000000000000000000000 mothers 00000000000110100010011100110011 Willamette 00100000000000000000000000000000 bargain-hunting 00000000000000000000000000000000 spawned 00000000100100100111010000110010 Beginning 00100000000111101100111000110010 notorious 00000000000011101111000010010000 Fazio 00100000000000000000000000000000 flashy 00000000000110100101000010010000 Laidlaw 00100000000101000011000100101000 Likewise 00100000000111100110111011101000 Ga 00100000000000000000000000000000 12.4 00000000000000000000000000000000 vintage 00000000000000010000000001000111 endorsement 00000000000101001110111001100111 monitors 00000000000001000111000000010010 Rorer 00100000000010011011010100101000 prestige 00000000000111111111110010100111 contemplating 00000000000010010110010101000000 Seagate 00100000000110100000100100101000 CNW 01000000000000000000000000000000 Fletcher 00101111111000011000001000001000 Noranda 00100000000001000111111100101000 successors 00000000000110100011110000110011 designers 00000000000100001000010000110011 Vermont-Slauson 01000000000000000000000000000000 examiners 00000000000000000111010010110011 Bids 00100000000111100100001100011001 7.37 00000000000000000000000000000000 guest 00000000000000000011110000000001 sorry 00000000000000101111110000110010 66.7 00000000000000000000000000000000 deputies 00000000000111100110101010110011 mushrooms 00000000000000000000000000000000 outfit 00000000000111110101011001100111 please 00000000000000111010100110110010 beverage 00000000000001111011111010110000 bono 00000000000000000000000000000000 whatsoever 00000000011000100100010001110010 Currency 00100000000111101111011010100001 pretrial 00000000000000110101000000010000 Downey 00101111111001111101001000001000 Idaho 00100000000111111010101001101000 Agricole 00100000000000000000000000000000 11,000 00000000000000000000000000000000 Assuming 00100000000111011101111010000010 leaped 00000000000010000001000100110010 Reinvestment 00100000000000000101101011100001 bilateral 00000000000000111010000000110000 Verwoerd 00100000000000000000000000000000 disagreement 00000000000111010110111010100111 grossly 00000000000000011000000001110010 Liberty 00100000000111111100100100100001 Teamsters 00100000000000001101110100110000 Output 00100000000111101110110100000111 Tenneco 00100000001111101111111100101000 instructed 00000000001110101101010000110010 Inouye 00101111111100100000111010001000 exhausted 00000011100011010100010000110010 Vancouver 00100000000011111011101001101000 yielded 00000000000000110001000100110010 Nugget 00100000000010001111110100100001 conspiring 00000000000101101010111000110010 pawn 00000000000000000000000000000000 decisive 00000000001001000001000000010000 shaping 00000000000111101110100001000000 Pratt 00101111111101110111111010101000 Overseas 00100000000000000001011010100001 definitively 00000000011100100001001001110010 influx 00000000000111101100111001100111 Cook 00101111111100010111001000001000 Resorts 00100000000111000100111000101000 1.71 00000000000000000000000000000000 Valspar 00100000000000000000000000000000 coach 00000000000111100100011110110101 nonsense 00000000000111110101110010100111 Classic 00100000000000001100000010010000 overpriced 00000000000000000011110110010000 Moran 00101111111111100101001000001000 Beta 00100000000000001011100000100001 unwarranted 00000000000000001101000110010000 newcomers 00000000000111011100111000110011 dissent 00000000000110001111110010100111 Gintel 00100000000000000000000000000000 subway 00000000000010001000001010110000 tariff 00000000000000000000100011110001 freeways 00000000000000000000000000000000 tops 00000000010111100111000000010010 mountain-bike 00000000000000000000000000000000 entrepreneurial 00000000000011110010000000110000 '86 00000000000000000000000000000000 Burke 00101111111101111100100010001000 Taiwanese 00100000000000000111100100110000 longest 00000000000101110011010011010000 vigorously 00000010000001000000010001110010 holidays 00000000000011111101110101100011 modify 00000000000010111110001110110010 Ariz 00100000000000000000000000000000 Denver-based 00100000000000000000000000000000 pumping 00000000010111101110100001000000 Left 00100000000011000101010000110010 profitably 00000001010010000000010001110010 burn 00000000000110011110101110110010 21.5 00000000000000000000000000000000 flooded 00000001100011110110010000110010 Hasbro 00100000000110111000111100101000 45,000 00000000000000000000000000000000 Sr. 00100000000000000000000000000000 1.44 00000000000000000000000000000000 unlawful 00000000000000101111000110010000 Rubin 00101111111100011111000010001000 Lortie 00100000000000000000000000000000 shattered 00000000000111011101101001000000 markedly 00000000000010101000010001110010 arbitrator 00000000000111111011100000110101 resisting 00000000000110100110010101000000 phony 00000000000000001100000110010000 DAF 01000000000000000000000000000000 yeast 00000000000000000000000000000000 Arlington 00100000000101010011101001101000 8.7 00000000000000000000000000000000 lounge 00000000000111100101111000000001 remembered 00000000010001000010110000110010 heaviest 00000000000000101011010011010000 inning 00000000000010110010001000100111 deduct 00000000000000111111001110110010 Except 00100000000111110010011010000010 songs 00000000000111100001110101100011 affects 00000000000011100001000000010010 intellectual-property 00000000000000000000000000000000 implication 00000000000111100011110000001111 blunt 00000000000101000101110110110010 Initial 00100000000000000010000100010000 Llosa 00100000000000000000000000000000 Steelworkers 00100000000000100010001010101000 hype 00000000000110010110111010100111 shell 00000000000000000000011000101000 Easy 00100000000011000001011110010000 Asarco 00100000000111100011111100101000 del 00001111111011111100010100001000 Fernando 00100000000100000100000000011101 realization 00000000000111100101110000001111 poses 00000010000100000011000000010010 Rapid 00100000000000010000100000010000 jets 00000000000110001100101001100011 Kuwait 00100000000111011011111101101000 recreational 00000000000000111000001010110000 endangered 00000000001100000101101001000000 destroying 00000000000101101011111101000000 prediction 00000000000111111011111101100111 Storer 00100000000101000100110000001000 Norwegian 00100000000000100110100100110000 425,000 00000000000000000000000000000000 Case 00100000000111111111100001100111 supply-side 00000000000000000000000000000000 suspected 00000000000111101011110000110010 40-year-old 00000000000000000000000000000000 accusing 00000000000000000000101101000000 reimburse 00000000010010100011111110110010 jetliners 00000000000000101011101001100011 Sioux 00100000000010011000011010101000 Redmond 00100000000110111100101001101000 Esselte 00100000000000000000000000000000 guns 00000000000110101111110101100011 oversubscribed 00000000010001110100010000110010 guards 00000000000010100101000110001001 1.375 00000000000000000000000000000000 molecular 00000000011100011010000000110000 10.1 00000000000000000000000000000000 refuge 00000000000101100110110110111001 Developments 00100000000111100111101010100011 stir 00000000000100010110010110110010 Apogee 00100000000000000000000000000000 Hardiman 00101111111000000001000010001000 Portugal 00100000000111001001011101101000 ministries 00000000000100011010000100100011 Vogelstein 00100000000000000000000000000000 Cruise 00100000000000000101110000110000 incorrect 00000000000000100100000110010000 Sumitomo 00100000000011001001111000101000 Dakota 00100000000000011000010101101000 Magna 00100000000011110011010100101000 loopholes 00000000000111110110101110100011 audits 00000000000111010010001000100011 outset 00000000000111111101110000001111 pigs 00000000000000111111110010100111 Hot 00100000000000010001011010010000 0.01 00000000000000000000000000000000 accepts 00000000011000100011000000010010 closings 00000000000000010001000010100111 reminded 00000000000001001011110000110010 17.5 00000000000000000000000000000000 Treaty 00100000000111111010100011100111 brewer 00000000000111100101000001110101 H.F. 01000000000000000000000000000000 Ahmanson 00101111111111101101000001001000 Port 00100000000000100000011010101000 correspondent 00000000000000000010011110110101 resilience 00000000000101010011111010100111 plummeting 00000000000000111010010001000000 frequent-flier 00000000000000000000000000000000 drawings 00000000000111011101110101100011 bloody 00000000000000101010011010010000 playwright 00000000000111101111011110110101 Belli 00100000000000000000000000000000 Wanniski 00100000000000000000000000000000 Porter 00101111111111001001001000001000 infringed 00000000000101100000100000110010 accuse 00000000000111110010100110110010 Hubbard 00101111111000001110111000001000 13.2 00000000000000000000000000000000 museums 00000000000111101011110001100011 eighth 00000000000111000011100011010000 problematic 00000000000001010110010010010000 applicants 00000000000000000001000000110011 splitting 00000000000111101111001101000000 supportive 00000000011011101011110000110010 stretching 00000000000101011101100001000000 Give 00100000000111110011101110110010 commissioners 00000000000000000110010010110011 757 00000000000000000000000000000000 co-chairman 00000000000000000000000000000000 Einhorn 00101111111111001110100010001000 narrows 00000000000001011101000000001010 Nine-month 00100000000000000000000000000000 minimize 00000000000000111010111110110010 widens 00000000000001010110001111111001 outpaced 00000000001010000001010000110010 sinking 00000000000001100001111110110000 caller 00000000000111100101110010110101 142.10 00000000000000000000000000000000 1961 00000000000000000000000000000000 Minority 00100000000000000000101000110000 hint 00000000000111111011011010110111 Assurances 00100000000111100111100110101111 17.50 00000000000000000000000000000000 peaks 00000000000111100110111001000111 lineup 00000000000111100101100101100111 know-how 00000000000000000000000000000000 Centers 00100000000111101110010100100011 detect 00000000011100111111101110110010 Sherwin 00101111100101011100000010001000 rooted 00000000000010011110010000110010 honest 00000000000010010110110100010000 volunteers 00000000000110100111111000110011 implicit 00000000000010001100110100010000 Commissioner 00100000000111011011110000110101 strengths 00000000000111111100111101100011 desired 00000000011011000001000000010000 S.A 01000000000000000000000000000000 Newspapers 00100000000111001100110001100011 Yeutter 00101111111100000000001010001000 startling 00000000000000100000010010010000 Jaffray 00101111111011110101101001001000 Shack 00100000000001011011100100001001 attacking 00000000000000110100001101000000 Bells 00100000000111110010001110110011 yuppies 00000000000111100111111000110011 bang 00000000000111110111111010110101 bodies 00000000000111101101000100100011 wound 00000000001111111011001000110010 Vinson 00100000000000000000000000000000 See 00100000000111111110100110110010 stretches 00000001000101001111000000010010 legendary 00000000000011010100000010010000 bond-equivalent 00000000000000000000000000000000 refuses 00000000000111101100101000110010 seamen 00000000000100001011000001110011 haunts 00000000000000000000000000000000 woo 00001111111011001011110110110010 Initiative 00100000000000010100100011100111 transplant 00000000000000000110101011100001 Cadillac 00100000000111011011111100001000 assessing 00000000000110100001011101000000 laundry 00000000000100011000001010110000 2.87 00000000000000000000000000000000 dealt 00000000001011010110010000110010 Garrison 00101111111100010001110001001000 briefing 00000000000000001010110001000111 nevertheless 00000000000111110111101011101000 estimating 00000000000111000001111010000010 Against 00100000000000000000000000001010 foresee 00000000000111010101000110110010 anti-abortionists 00000000000000000000000000000000 criticize 00000000001000101011111110110010 Ken 00100000001000011000101000011000 Judicial 00100000000000100000000000110000 republic 00000000000100100001100100100001 freeing 00000000000111111100001101000000 heavier 00000000000001100100001111000000 6.90 00000000000000000000000000000000 ballooning 00000000000000000000000000000000 Ian 00101111111000010000110110011000 prevails 00000000011110000110001000110010 mentality 00000000000101001111101001100111 shortfall 00000000000110001101101010100111 ringing 00000000000010101110100001000000 disappears 00000000101000000110001000110010 diversifying 00000000000101100011100001000000 Hees 00100000000110000001010100101000 libel 00000000000000100001000000110000 asserting 00000000000111100111111010000010 deadlines 00000000000000100110011100100011 8.32 00000000000000000000000000000000 uncommon 00000000000111100111110110010000 warranty 00000000000000010000111000111001 austerity 00000000000000000000011000111001 Dearborn 00100000000111010111101001101000 closest 00000000000000001001010011010000 explosions 00000000000110110101100110001001 nurses 00000000000110101100111000110011 reruns 00000000000111000101110101100011 1990-model 00000000000000000000000000000000 tacked 00000000000010100000100000110010 drift 00000000000111100110011000110111 stop-loss 00000000000000000000000000000000 Saab-Scania 01000000000000000000000000000000 Leipzig 00100000000000000000000000000000 inspection 00000000000000001110111001100111 crossed 00000000101011000101010000110010 9.4 00000000000000000000000000000000 Zsa 00100000000000000000000000000000 youngsters 00000000000110100000100100110011 Mehl 00101111111011101000000010001000 customs 00000000000111101011110000110000 awareness 00000000000110001110011010100111 offenders 00000000000010001100111000110011 hypoglycemia 00000000000000000000000000000000 grave 00000000000010010100011000010000 intensive 00000000000000100100010100010000 nervously 00000001010000000000010001110010 syndicates 00000000000000111010000100100011 GATT 01000000000000000000000000000000 resale 00000000000111110111101101001111 soap 00000000000011000010101100100001 euphoria 00000000000000101110111010100111 Jefferson 00100111111110010010010000001000 Noxell 00100000000000000000000000000000 S.C 01000000000000000000000000000000 prepaid 00000000001100110000011100010000 spurring 00000000000100000101011101000000 drug-related 00000000000000000000000000000000 statutes 00000000000101001110011100100011 renamed 00000000001010100100010000110010 ancient 00000000000000001100001000110000 ironic 00000000000110101110110110010000 incomes 00000000000111100010100100000011 convictions 00000000000111100001101000100011 peculiar 00000000000000010100011000010000 minerals 00000000000101001011011010110000 Homes 00100000000000001000101001100011 Peruvian 00100000000001011000010100110000 strips 00000000000111101000010101100011 arising 00000000000000000011100100110010 Visa 00100000000001100010000000100001 Rick 00101111111000000001111000011000 Deputy 00100000000000000010001001110000 exclusivity 00000000000100011110011010100111 Shakespeare 00100000000001100000101100100001 McAlpine 01000000000000000000000000000000 withholding 00000000000110110000011100010000 selective 00000000000010001101010010010000 inspectors 00000000000000001101010010110011 homosexual 00000000000011101000101000110000 rocked 00000000101100100111010000110010 architectural 00000000000001110010101010110000 Welch 00101111111100011100000010001000 pullback 00000000000101101001101010100111 tumultuous 00000000000000000111101100010000 Freres 00101111111000011000100001001000 Copper 00100000000111111011101110110000 emergencies 00000000000111000011100010100111 18-a-share 00000000000000000000000000000000 endowment 00000000000110101111101110111001 sponsoring 00000000000011111101111101000000 breathing 00000000000000010010110001000000 clinic 00000000000111110110010100000001 supervision 00000000001111100110011010100111 7.9 00000000000000000000000000000000 1.34 00000000000000000000000000000000 Comex 00100000000100100111110000100101 prizes 00000000000110110000000001100011 steering 00000000000011111010110001000000 diverse 00000000000000001000000010010000 stereo 00000000000001010101011010110000 recorder 00000000000001100100100100001001 peripheral 00000000000000010100101010110000 suitable 00000000000001010000010010010000 fiduciary 00000000001001100000000000110000 construct 00000000000010101111101110110010 convenient 00000000000101000001010010010000 beaten 00000000100111110010110000110010 checking 00000000000000010100100001000000 Athletics 00100000000000000000000000000000 Bowes 00101111111001010000000101001000 Pitney 00101111111110101001101000101000 Voting 00100000000011001000111100010000 Goodman 00101111111100100010001000001000 backlogs 00000000000010000000111000000011 Crowd 00100000000111111101101101100111 cancellation 00000000000111111101111101001111 campus 00000000000111101111101001000001 loosen 00000000000101110110111110110010 Fujis 00100000000000000000000000000000 explicit 00000000000001100000110100010000 Jerome 00101111111000001100110110011000 special-interest 00000000000000000000000000000000 medium-term 00000000000000000000000000000000 developing-country 00000000000000000000000000000000 Sheraton 00100000000100111000001000110000 fax 00000000001000011000001010110000 Metals 00101111111010101000011110110000 disappeared 00000000000010100110001000110010 Leventhal 00100000000000000000000000000000 rulings 00000000000111100101101000100011 nominees 00000000000111000101101000100011 114 00000000000000000000000000000000 prosecuted 00000000011011010100010000110010 await 00000000000111110101011110110010 retreating 00000000000110011101100001000000 Conway 00101111111110100100000010001000 7.60 00000000000000000000000000000000 similarity 00000000000101010110110000100111 dumping 00000000000011110010110001000000 113 00000000000000000000000000000000 indictments 00000000000100111111110000100011 distinguish 00000000001000111111001110110010 sketchy 00000000000000000000000000000000 Gutfreund 00101111111000010000100010001000 caffeine-free 00000000000000000000000000000000 scramble 00000000000111111110000101010111 Measure 00100000000111111101110011100111 narrower 00000000000011000100001111000000 crumbling 00000000000110101010110001000000 abolish 00000000000110110001111110110010 nearing 00000000000011010110010101000000 liquidate 00000000000101111110001110110010 Shops 00100000000011101111110001100011 1.32 00000000000000000000000000000000 matches 00000000000000111111000000010010 periodic 00000000010011000001000000010000 Coliseum 00100000000011111010111000000001 invitation 00000000000111011011101100100111 relate 00000000000100110111010110110010 projecting 00000000000101100001110101000000 lung-cancer 00000000000000000000000000000000 catastrophes 00000000000000000000000000000000 postal 00000000000111001011110000110000 Survey 00100000000111101110100000110111 Matthews 00101111111111111011111010101000 northeast 00000000000111111010001110101000 bikers 00000000000000000000000000000000 Calif.-based 00100000000000000000000000000000 athletics 00000000000000000000000000000000 enthusiasts 00000000000011110000000010110011 adjacent 00000000000010010000111000110010 Reitman 00100000000000000000000000000000 Petrolane 00100000000000000000000000000000 Ernest 00101111111000011000000010011000 lobbied 00000000000001011110001000110010 Innopac 00100000000000000000000000000000 clean-air 00000000000000000000000000000000 2.58 00000000000000000000000000000000 Equitec 00100000000000000000000000000000 helm 00000000000110010111111000001111 bullets 00000000000100000101110101100011 Deal 00100000000111111110101010110111 precision 00000000000111010010101010110000 searched 00000001010101000101010000110010 Child 00100000000101101001111000100001 distinction 00000000000111111100101000010111 restrain 00000000001000111010111110110010 presumably 00000000010100000000001001110010 yards 00000000000000000010010100001011 case-by-case 00000000000000000000000000000000 indecent 00000000000000010011000110010000 1,800 00000000000000000000000000000000 comfortably 00000000011100000000010001110010 Milacron 00100000000011011011010001001000 sloppy 00000000000011001011000110010000 subsidize 00000000001011100011111110110010 touchy 00000000000001011101000010010000 1.46 00000000000000000000000000000000 unraveled 00000000000000000000000000000000 Caterpillar 00100000000110110101011100101000 exorbitant 00000000000000000000000000000000 Wyss 00101111111000001110110010001000 jobless 00000000000011010100010011000111 Fraser 00101111111100110110111000001000 eagerness 00000000000110110101111100100111 stricken 00000000011011100001110000110010 tended 00000000000110110111101000110010 Devices 00100000000111101101011001001001 Sasser 00100000000000000000000000000000 aids 00000000000010001110101000110000 Jamie 00100000000000101011111100001000 instantly 00000010101000000000010001110010 Salvador 00101111111100101000110000011101 plots 00000000001110100111110101100011 havoc 00000000000101101111111010100111 inserted 00000010100001001100010000110010 Conant 00100000000000000000000000000000 2.46 00000000000000000000000000000000 safeguards 00000000000101011111001000100011 entertaining 00000000000011010000110100010000 235 00000000000000000000000000000000 Octel 00100000000000000000000000000000 uptick 00000000000000000000000000000000 donation 00000000000001011111100011000111 Keefe 00100001111100101111110000101000 con 00000000000000001101001000110000 accountable 00000000000111001110110000110010 Accepted 00100000000000001001010000110010 Clifford 00101111111000110000000100001000 assessed 00000000000010001100010000110010 Beretta 00100000000111111100001010110000 eliminates 00000000000110100001000000010010 breath 00000000000111110110010000000001 listings 00000000000011000001000100001001 policy-making 00000000000000000000000000000000 clarification 00000000000111101001001101001111 portrayal 00000000000000000000000000000000 dissenters 00000000000000000000000000000000 42.5 00000000000000000000000000000000 chores 00000000000111101010110100100011 mph 00000000000000000000001001011011 canned 00000000000011010100101010110000 suspicion 00000000000111111110110101100111 Mattress 00100000000001011011010001001000 instances 00000000000110100000000010100011 Discovision 00100000000000000000000000000000 ESPN 01000000000000000000000000000000 acceptance 00000000000111100001111001111001 Commerciale 00101111111100001010101010001000 Mateo 00101111111100000001000000011101 Amdura 00100000000000000000000000000000 Doman 00100000000000000000000000000000 1.13 00000000000000000000000000000000 swapping 00000000000111111001110001000000 Kalikow 00101111111101100001000010001000 cloud 00000000000111100001001010110111 Grey 00100000000111100100010000001000 Berlitz 00100000000000000000000000000000 4.52 00000000000000000000000000000000 Suddenly 00100000000100000000001001110010 rocket 00000000000100011010001010110000 Specter 00100000000111111101011000001111 parade 00000000000111100100100101100111 money-losing 00000000000000000000000000000000 Okla. 00100000000000000000000000000000 disclosing 00000000000100001111111101000000 fleeting 00000000000000000000000000000000 pipelines 00000000000000101100010000110011 Healthdyne 00100000000000000000000000000000 stadiums 00000000000110011111110101100011 feat 00000000000111110100101101100111 scratch 00000000000111100100010001000000 sink 00000000000110010110010110110010 350,000 00000000000000000000000000000000 assertions 00000000000111111101101000100011 Guarantee 00100000000111110111011010110111 Dai-Ichi 01000000000000000000000000000000 flooding 00000000000011111111010001000000 admirable 00000000001111011000110100010000 16,000 00000000000000000000000000000000 calculates 00000000000101111011010111000010 Munich 00100000001001111111111001101000 serial 00000000000000011000000110110000 clerks 00000000000000101110000000110011 surrounded 00000000001101101111010000110010 proves 00000000001101010011000000010010 Judges 00100000000000000000010110110011 Officer 00101111111111111111111110011101 bizarre 00000000000001100000000010010000 one-fourth 00000000000000000000000000000000 6.20 00000000000000000000000000000000 120,000 00000000000000000000000000000000 Be 00100000000100101111100010110010 awards 00000000000000010000001000100011 twist 00000000000111001100111010110101 wives 00000000000111000010011100110011 177 00000000000000000000000000000000 Berkshire 00101111111110101001110110101000 508-point 00000000000000000000000000000000 Fortunately 00100000000111111010111011101000 besieged 00000000011111010001110000110010 Trudeau 00100000000000000000000000000000 crossing 00000000000100011010100001000000 Productions 00100000000000001011111011101001 grasp 00000000000111101111110010110111 guild 00000000000001000000001100100101 neutrons 00000000000000000000000000000000 Dover 00100000000110000111101001101000 rake 00000000000000000000000000000000 punishment 00000000000111111110100000111001 unjustified 00000000000110100101000110010000 ceramic 00000000000001010100101010110000 tightly 00000000000001100111001001110010 spiral 00000000000100101001101010100111 praise 00000000000111011110110010110111 newsletters 00000000000110001110000100100011 superconductor 00000000000001010100100000100001 Colgate-Palmolive 01000000000000000000000000000000 adversary 00000000000101110111111001100111 ordinarily 00000000011100000000001001110010 1.70 00000000000000000000000000000000 plumbing 00000000010110001011111010110000 defends 00000000010111100011000000010010 workout 00000000000000000000000000000000 Schaeffer 00100000000000000000000000000000 crushed 00000000011110010001110000110010 leery 00000000000101101011110000110010 X 00100000000000000000000000000000 S* 00100000000000000000000000000000 compounded 00000000000001101111010000110010 uninsured 00000000000001001010101000110000 D'Arcy 01001111111111000100110100101000 Wachter 00100000000000000000000000000000 lower-than-expected 00000000000000000000000000000000 576 00000000000000000000000000000000 mass-market 00000000000000000000000000000000 cheaply 00000001100100000000010001110010 Osaka 00100000001111100111111001101000 Cardillo 00100000000000000000000000000000 Scorpio 00100000000000000000000000000000 touted 00000000000001000010110000110010 Thi 00100000000000000000000000000000 makeup 00000000000110001011111000001111 liquidating 00000000000110010011011101000000 reinvest 00000000001001101111001110110010 bowed 00000000011111101001001000110010 spurned 00000000000100111001010000110010 Gene 00100000000100100011111100001000 day-care 00000000000000000000000000000000 tony 00000000011000010000011000011000 16.1 00000000000000000000000000000000 staging 00000000001111100010110001000000 bomber 00000000000010010010001010110000 money-management 00000000000000000000000000000000 romance 00000000000111100000101100100001 Nguyen 00100000000000000000000000000000 3.16 00000000000000000000000000000000 baseline 00000000000000000000000000000000 Palace 00100000000111001101000100000001 Lowe 00101111111110100101001000001000 Chiefs 00100000000000000111000000100111 tennis 00000000000000000101101100100001 isolation 00000000000110000111111010100111 Sprint 00100000000001101100111110000010 Hanson 00100000000100011010010000001000 celebrity 00000000000111010100000001000111 hovering 00000000000100001111000001000000 Gross 00100000000100001001010101010000 hepatitis 00000000000111111101110000100001 sagged 00000000000011010001000100110010 fray 00000000000111010010101101100111 Levitt 00101111111111101010100010001000 crown 00000000000000001000100100100001 Bert 00101111111000001011000110011000 prints 00000000000110011111000000010010 evasion 00000000000111111111110010000011 Disabilities 00100000000000000011100010100111 Utility 00100000000010100001000000100101 80486 00000000000000000000000000000000 shipment 00000000000111101111001101001111 robots 00000000000110100101111001100011 Kia 00100000000000000000000000000000 foreclosed 00000000000100001000101001000000 management-led 00000000000000000000000000000000 Estimates 00100000000111100011010000100011 Hart-Scott-Rodino 01000000000000000000000000000000 Eurodollar 00100000000000001000000110110000 appropriated 00000000000000000000010000110010 Hispanics 00100000000101111100111000110011 motivation 00000000000111010111110100100111 13.6 00000000000000000000000000000000 210 00000000000000000000000000000000 Provident 00100000000001111001111000101000 fake 00000000000001110010011010010000 stress-related 00000000000000000000000000000000 Donoghue 00100000000111011101111110101000 etc. 00000000000000000000000000000000 blind 00000000000010101101011010010000 persist 00000000100001111101010110110010 386 00000000000000000000000000000000 TRW 01000000000000000000000000000000 embarrassed 00000000000111000101110000110010 Xtra 00100000000000000000000000000000 540 00000000000000000000000000000000 Blockbuster 00100000000001001011100100100001 FERC 01000000000000000000000000000000 cater 00000000000101010111010110110010 50.3 00000000000000000000000000000000 Alabama 00100000000111110011110001101000 spokesmen 00000000000010101000000010110011 IPO 01000000000000000000000000000000 reinvestment 00000000000000000101101011100001 tolerate 00000000001011001111101110110010 assorted 00000000000000000101000011000000 marble 00000000000010100010001000110000 four-year-old 00000000000000000000000000000000 erupted 00000000001010100110001000110010 intellectuals 00000000000111111000111000110011 Cunningham 00101111111100111011100010001000 competitiveness 00000000000110100111111010100111 salvage 00000000000010111111110110110010 genetically 00000000000011001111001001110010 permissible 00000000000000010000110001000000 Tharp 00100000000000000000000000000000 widget 00000000000000000000000000000000 8.47 00000000000000000000000000000000 Pravda 00100000000110010110101101101000 unlimited 00000000000001000010010100010000 bloated 00000000000000111011100000010000 22.8 00000000000000000000000000000000 hangs 00000000000000111100001000110010 perjury 00000000000000100111100010100111 chase 00000000000111101000111000101000 topiary 00000000000000000000000000000000 waterworks 00000000000000000000000000000000 cogeneration 00000000000001100000011010110000 ... 00000000000001110100000101001000 constitution 00000000000111101101111001000101 privileges 00000000000111110110011100100011 Champion 00100000000111101110000100100001 auditors 00000000000101001010101010110011 Organizations 00100000000110010000000100100011 transformed 00000000010111010001001000110010 Canton 00100000000100010111101001101000 scaring 00000000000000000000000000000000 dismayed 00000000001101001101110000110010 OAS 01000000000000000000000000000000 dislike 00000000000000011110000110110010 flags 00000000000000111101110101100011 contractual 00000000000000101000000000110000 pennies 00000000000000000000000000000000 Randy 00101111111000010001111000011000 ear 00000000000101101111111001100111 Oberstar 00100000000000000000000000000000 speculator 00000000000110011111101110110101 classical 00000000000000100000001000110000 Samsung 00100000000011011101000100101000 Hut 00100000000000101000011010101000 Hans 00100000000000011110110110011000 lessons 00000000000011101001110101100011 Harbor 00100000000011000110000010100101 Edgar 00101111111000100000011100001000 musicians 00000000000010101100111000110011 Components 00100000000111100111011111001001 accountability 00000000000111011000011010100111 GRAINS 01001111111111011111101110110000 emotion 00000000000100011111110010100111 SOYBEANS 01000000000111111111101110110000 rand 00000000000000000011000000001011 polystyrene 00000000000000000000000000000000 Convention 00100000000111100001101100100101 tremor 00000000000000000000000000000000 Crusaders 00100000000000000000000000000000 offend 00000000000000100011111110110010 Sverdlovsk 00100000000000000000000000000000 gate 00000000000010100001111000000001 Genetic 00100000000000111000101010110000 breakthrough 00000000000111111011111010110101 breathtaking 00000000001000100001000000010000 portrayed 00000000000100000010110000110010 COPPER 01000000000111111011101110110000 universe 00000000000111101100101101100111 cables 00000000000111011011011111001001 fearing 00000000000110101101111010000010 richest 00000000000010000011110011010000 Picasso 00100000000101111001110010100111 lubricants 00000000000111100010101111001001 Reuter 00101111111000011001001000001000 Tiananmen 00100000000101111010011010101000 robot 00000000000010000100001000100001 fatal 00000000000000001101011010010000 Action 00100000000111101110110001100111 Bougainville 00100000011110000100011010110000 snack-food 00000000000000000000000000000000 powerhouse 00000000000111000011100100100001 Manic 00100000011000011010000000110000 Mines 00100000000000001111110001111001 Century 00100000000000000010000001000111 McCarthy 01001111111101001100100010001000 Adolph 00100000000111010100111000101000 Ethiopia 00100000000111010101011101101000 influences 00000000001110011111000000010010 differentials 00000000000000000001001110000011 gut 00000000001000100101110110110010 10.77 00000000000000000000000000000000 recycled 00000000001010101101101001000000 tolerance 00000000000111011110011010100111 shooting 00000000000110101110100001000000 void 00000000000111110000111000110111 UFO 01000000000000000000000000000000 spurt 00000000000111110101101100110111 Eduard 00101111111000100110000010011000 Goupil 00100000000000000000000000000000 57-year-old 00000000000000000000000000000000 communists 00000000000111101011011110110011 Concord 00100000000111000010101001101000 Mengistu 00100000000100011111111010001000 underscores 00000000000110000011000000010010 hazard 00000000000111110111010110111001 sharpest 00000000000000101010000011010000 divide 00000000000100011110101110110010 carry-forward 00000000000000000000000000000000 obliged 00000000000010000100011000110010 jeopardize 00000000000111111000111110110010 8.35 00000000000000000000000000000000 Institut 00101111111011110100010110110000 Brouwer 00101111010110101100000010001000 Hatch 00100000000101101100111010001000 vivid 00000000000010000011000010010000 Ivy 00100000000000000000101100100001 input 00000000000001100111110100100111 gossip 00000000000111101100001100100001 Bruno 00101111111100100010000100001000 sitcom 00000000000000000000000000000000 compromises 00000000000110101111111000100011 deployed 00000000010110001100010000110010 importantly 00000000000010010001001110010000 1.16 00000000000000000000000000000000 dogged 00000000110101010001110000110010 Convenience 00100000000001000101010000110000 CEO 01000000000000000000000000000000 entrenched 00000000000010010000110100010000 chorus 00000000000111100000100101100111 Houston-based 00100000000000000000000000000000 Fairfax 00100000000111101001110000001000 dangerously 00000000000000111100000001110010 Allan 00101111111001001100000010011000 cosmetic 00000000000001111010000000110000 Ehrlich 00100000000000000000000000000000 brains 00000000000111101011111101100011 Ben 00101111111000000011000000011000 glamorous 00000000000010101001000010010000 38.5 00000000000000000000000000000000 surprises 00000000000101000111001000100011 vegetables 00000000000111001010111001100011 accomplished 00000000000001010010110000110010 precipitous 00000000000000010100100000010000 magnified 00000000000000000000000000000000 cooling 00000000000100010010110001000000 roller 00000000010101101010101010110000 pitched 00000000101001101100010000110010 conditional 00000000000000000100100000110010 elegant 00000000000010100110110100010000 rampant 00000000000100101101010001000000 Cos 00100000000000000000000000000000 Consequently 00100000000111111000101011101000 delegate 00000000000011000100100110110111 Woods 00101111111101101101110001001000 illustrated 00000000010101000001110000110010 preclude 00000000000101111001101110110010 prosperous 00000000000000001001000010010000 hemorrhaging 00000000000000000000000000000000 expenditure 00000000000100101010100000111001 Daffynition 00100000000000000000000000000000 Rodeo 00100000000000000000000000000000 enables 00000000001101100001000000010010 updated 00000000000000100110111001000000 Laura 00101111111011010000001000011000 disk-drive 00000000000000000000000000000000 Jamaican 00100000000000000000000000000000 Mobile 00100000000100110000001010110000 speeches 00000000000110100101101000100011 Arena 00100000000111110011011001100111 Keeping 00100000000111111011101101000000 reversing 00000000000111111110001101000000 Advancing 00100000000001001110010001000000 tragedy 00000000000111011010101101100111 paralyzed 00000000010101010001110000110010 restrained 00000000010010010001110000110010 Ore 00100000000000111110110100100001 Spalding 00100000000000000000000000000000 crashes 00000000000111110000101001110011 Ark 00100000000000000000000000000000 Carr 00101111111111011100100010001000 unreasonable 00000000000010010101000110010000 proclaimed 00000000000010100101110111000010 attribute 00000000000111000101000110110010 glossy 00000000011110010000001000110000 Top 00100000000000000001011000010000 negotiator 00000000000010000111101110110101 weighing 00000000000010010010010101000000 Countries 00100000000000000000001101110011 recital 00000000000000000000000000000000 perpetual 00000000010100010000001000110000 Jewelers 00100000000000000000000000000000 Dorfman 00101111111000000110110010001000 deprived 00000000001010101011110000110010 switches 00000000000111110010100100001001 Eddington 00100000000000000000000000000000 Waxman 00101111111100110000111010001000 pencil 00000000000110101100110000000001 sleeping 00000000000000000011000001000000 Duff 00101111111111010111111010101000 Phelps 00101111111100001101110001001000 mundane 00000000000000001000010010010000 Rhone-Poulenc 01000000000000000000000000000000 ratified 00000000010001111001010000110010 Arabs 00100000000110101101000110110011 tag 00000000000111111111111110000011 Specifically 00100001000100000000001001110010 Minella 00100000000000000000000000000000 garage 00000000000001000011100000100001 Mead 00100000000100100111111100101000 equivalents 00000000000000000000101001101001 ominous 00000000000000011000110100010000 2006 00000000000000000000000000000000 airwaves 00000000000111111111001110110011 portraying 00000000000110111001001101000000 legitimacy 00000000000100010111111000001111 Omnicom 00100000000000011001010100101000 affordable 00000000000111001101001110010000 Robin 00101111111001001000001000011000 mistakenly 00000000001001000001001001110010 Colo 00100000000000000000000000000000 Due 00100000000000000000010100110010 Tyler 00101111111010101010000100001000 instrumentation 00000000000111101110100001100001 outperform 00000000001010100011111110110010 surveillance 00000000000000000100001101100001 Garbage 00100000000101101111110000100001 explosive 00000000000001010110110100010000 placements 00000000000111101000100100001001 downright 00000000011011101000000001110010 Roosevelt 00101111111000000110010000101000 prohibition 00000000000111111100000001100111 high-interest 00000000000000000000000000000000 Wilfred 00100000000000000000000000000000 Midler 00100000000000000000000000000000 Brooke 00101111111100101000000100001000 launches 00000000000100111111000000010010 Baby 00100000000010001101101000100001 excluded 00000100100111010100010000110010 contending 00000000000111111101111010000010 Convertible 00100000000000000001100110110000 patience 00000000000111110110110100100111 pioneer 00000000000111101100100100100001 Byrd 00101111111100100100011010001000 Shane 00100000000000000000000000000000 Enviropact 00100000000000000000000000000000 undeveloped 00000000001000011100101010110000 compelled 00000000000000011100011000110010 rallying 00000000000110000011100001000000 rosy 00000000000000000011001010010000 Emerson 00100000000101110000100100101000 curve 00000000000000000010001000100111 life-insurance 00000000000000000000000000000000 11.7 00000000000000000000000000000000 7.42 00000000000000000000000000000000 18.7 00000000000000000000000000000000 AN 01000000000000000000000001010100 amusing 00000000000011000110110110010000 multibillion-dollar 00000000000000000000000000000000 DJIA 01000000000000000000000000000000 examiner 00000000000010000010110000110101 supplying 00000000000000000001111101000000 footing 00000000000110101010110000100111 CNBC 01000000000000000000000000000000 Ohbayashi 00100000000000000000000000000000 Cause 00100000000111110011110110110010 arrives 00000000000010011000001000110010 Berman 00101111111101100011100010001000 medication 00000000000110010110111001100011 2.19 00000000000000000000000000000000 13-week 00000000000000000000000000000000 Merchants 00100000000010000010101111110011 potato 00000000000000010001110000100001 Austrian 00100000000000001000010100110000 BanPonce 01000000000000000000000000000000 F 00100000000000000000000000000000 Lyondell 00100000000000000000000000000000 Midwestern 00100000000000111101000100110000 low-interest 00000000000000000000000000000000 snags 00000000000111101000011000100011 invites 00000000000010010001000000010010 pertussis 00000000000000000000000000000000 repaired 00000011011001010100010000110010 1,850 00000000000000000000000000000000 updating 00000000000000000000000000000000 oldest 00000000000111100110110011010000 deficit-cutting 00000000000000000000000000000000 Basin 00100000000010000100100010100101 Cheer 00100000001100010110010110110010 hesitate 00000000000111011011000110110010 non-recurring 00000000000000000000000000000000 Tribe 00101111111110101011111010001000 shame 00000000000111011111101010110111 convey 00000000001110111011111110110010 Calgary-based 00100000000000000000000000000000 Garratt 00100000000000000000000000000000 airplane 00000000000110110110001010110000 220 00000000000000000000000000000000 divest 00000000000110010011111110110010 confined 00000000000101001100110000110010 mighty 00000000000000111000011010010000 new-home 00000000000000000000000000000000 Interior 00100000000111100111110110110000 unsafe 00000000000011001101000110010000 prepayment 00000000000000000001101011100001 Cane 00100000000110000111101110110000 unity 00000000000111110001110010100111 198 00000000000000000000000000000000 on-site 00000000000000000000000000000000 lobbies 00000000000111011010110100100011 lower-priced 00000000000000000000000000000000 coated 00000000000000100101010000110000 civilian 00000000000000000111110000110000 headaches 00000000000111110010011000100011 richer 00000000000000001001001111000000 manageable 00000000000011100110010010010000 Schulof 00100000000000000000000000000000 Fairfield 00100000000111011010101001101000 Pharmacia 00100000000000000000000000000000 Timbers 00100000000000000000000000000000 Ventures 00100000000000000001000000100111 civic 00000000001101100000000000110000 pale 00000000000011010110011010010000 Hancock 00101111111111111000001000001000 intensifying 00000000000000101101010001000000 R.I. 01000000000000000000000000000000 Providence 00100000000111010101101001101000 middleman 00000000000111101100101010110101 Crime 00100000000101111101110010100111 Falconbridge 00100000000110010101111100101000 shipbuilding 00000000000000001011011010110000 looming 00000000000000001011100001000000 manufactures 00000000001010011101000000010010 DWG 01000000000000000000000000000000 Sandra 00101111111000000001110110011000 747 00000000000000000000000000000000 foreign-currency 00000000000000000000000000000000 law-enforcement 00000000000000000000000000000000 Yield 00100000000111111110110110110010 165 00000000000000000000000000000000 Kobe 00100000000101100010111000101000 Nadeau 00100000000000000000000000000000 showroom 00000000000011010001111010110000 Gerard 00101111111001110101100010011000 14.5 00000000000000000000000000000000 appliance 00000000000000011011111010110000 Flom 00101111111010110111110001001000 annuities 00000000000111010111111001100011 Manitoba 00100000000101000111111001101000 chunks 00000000000111101001100100101111 Monica 00100000000001011000000001001000 mouth 00000000000111101101011110000001 lips 00000000000111110001011110000001 Zeta 00100000000000000000000000000000 BP 01000000000000000000000000000000 hub 00000000000000000000001010000001 sideline 00000000000000000000000000000000 seal 00000000000100100000100110110111 blaming 00000000000111101000001101000000 advertised 00000000000111110001101001000000 cocaine 00000000000000001010110000100001 upbeat 00000000000001100001110100010000 unpublished 00000000000000000000000000000000 chapters 00000000000000001100000001100011 Politics 00100000000111101110010010100111 Game 00100000000111101011101101100111 labs 00000000000110100100110001100011 scored 00000000000001101001010000110010 roadways 00000000000000000000000000000000 miners 00000000000000011000000000110011 Richards 00101111111110001000000100001000 truce 00000000000111101110010011001111 Ferguson 00101111111101101110100010001000 three-quarters 00000000000000000000000000000000 educated 00000000000111111110110100010000 resuming 00000000001101111011011101000000 10.3 00000000000000000000000000000000 forests 00000000000110110100110001100011 Businessland 00100000000111010100111100101000 Burns 00101111111100100111001000001000 childhood 00000000000111000110110000000001 SKF 01000000000000000000000000000000 when-issued 00000000000000000000000000000000 junk-holders 00000000000000000000000000000000 brushed 00000000000000000000000000000000 approves 00000000000000111001010000110010 METALS 01001111111010101000011110110000 2.625 00000000000000000000000000000000 PRECIOUS 01001111111101010111111110110000 wrapped 00000000001011111011001000110010 Lancaster 00100000000100101111101001101000 discarded 00000000101001010100010000110010 reoffered 00000000000111100111110100110010 retinoblastoma 00000000000000000000000000000000 Oakes 00100000000000000000000000000000 330 00000000000000000000000000000000 deadly 00000000000001010100000010010000 limbo 00000000000111111000110101010111 Broderick 00100000000000000000000000000000 span 00000000000000100101001010110111 Ing 00101111111111001101000100001000 high-performance 00000000000000000000000000000000 fin-syn 00000000000000000000000000000000 unofficial 00000000000000010110010100010000 F-14 00100000000000000000000000000000 modified 00000000000011000100111001000000 deteriorated 00000000000001111010110000110010 blue-collar 00000000000000000000000000000000 long-range 00000000000000000000000000000000 75,000 00000000000000000000000000000000 miracle 00000000000111101100001101100111 Frankly 00100000000111101000001001110010 stumbled 00000000000101111011001000110010 Owens-Corning 01000000000000000000000000000000 customary 00000000000011110100000010010000 consumer-products 00000000000000000000000000000000 Villanova 00100000000000000000000000000000 Nintendo 00100000000101100011011100101000 outline 00000000000101010111110110110010 1920s 00000000000000000000000000000000 outrage 00000000000010101110111010100111 Gogh 00101111111001000001110100100001 Seymour 00101111111001001000000100001000 characterize 00000000000110000011111110110010 assortment 00000000000101010100111001100111 colorful 00000000000010110100000010010000 Gallery 00100000000110111111100100000001 regular-season 00000000000000000000000000000000 Box 00100000000000011010000001000111 editorial-page 00000000000000000000000000000000 2.375 00000000000000000000000000000000 maneuvering 00000000000011010111110100100111 Reflecting 00100000000111111011011010000010 motivated 00000000000101000001110000110010 Beirut 00100000000111101011111001101000 inspire 00000000000101101111101110110010 recipients 00000000000111101110001010110011 Engineers 00100000000000010110000000110011 highlighted 00000000010111100111010000110010 notions 00000000000110000011111101100011 Behind 00100000000010100001000000001010 worrisome 00000000010000000101010010010000 scholarship 00000000000000001111001101100001 Opponents 00100000000111111010000010110011 reap 00000000000111001111101110110010 fence 00000000000111001001111000000001 2,400 00000000000000000000000000000000 earthquake-related 00000000000000000000000000000000 profoundly 00000000001000101000000001110010 leisure 00000000000000110011001010110000 loading 00000000000001111110110110110111 ports 00000000000111100111110001100011 prostitution 00000000000111111001110010100111 girlfriend 00000000000111111010111110000001 Daikin 00100000000000000000000000000000 Lloyds 00100000000001001001111000101000 trafficking 00000000000111110101011100100101 Sung 00100001100101110100010000110010 tally 00000000000111100010001000110111 Solar 00100000000000001101110000110000 Comptroller 00100000000111110110010000110101 diversify 00000000000110010010111110110010 hastily 00000000001011000001001001110010 Ekco 00100000000000000000000000000000 LDC 01000000000000000000000000000000 justifies 00000101010110000011000000010010 Work 00100000000111111111100010110111 refineries 00000000000101100111110001100011 Carolinas 00100000000000000000000000000000 clobbered 00000000010010000001110000110010 Died 00100000000110111110001000110010 roadway 00000000000100001111000100101000 blows 00000000000110101111000000010010 Plus 00100000000000000010011010000010 foes 00000000000101101010000010110011 scheduling 00000000000110110010110001000000 half-dozen 00000000000000000000000000000000 Owners 00100000000010001111100000110011 Sheller-Globe 01000000000000000000000000000000 forthcoming 00000000000011001001010010010000 trap 00000000000110100101001010110111 Axa-Midi 01000000000000000000000000000000 Test 00100000000111101010111110110111 exposures 00000000000101010000010000100111 ingredients 00000000000111100001101010100011 resentment 00000000000110101110111010100111 arrival 00000000000111111001011010100111 eroded 00000000000111111110111001000000 Boskin 00101111111100110110101010001000 frequency 00000000000110011011111000001111 ninth 00000000000110101011100011010000 sandwich 00000000000011100101111000000001 swimming 00000000000001100010101100100001 Doyle 00101111111110010000001000001000 CWA 01000000000000000000000000000000 dose 00000000000111111000111000111111 alarmed 00000000000111100101110000110010 VAX 01000000000010011000010000110000 girls 00000000000111101101111100110011 dashed 00000000010101010100010000110010 swamped 00000000010110101101110000110010 Underwriters 00100000000110100100101001110011 skilled 00000000000101001000101000110000 premises 00000000000110100100111101100011 shouting 00000000011111100110100001000000 speeding 00000000000111100110100001000000 conduit 00000000000110110011101110110101 celebrating 00000000000111101100001101000000 Halloween 00100000000000010110000000100001 phoned 00000000001011101101010000110010 attach 00000000000101001111101110110010 Omni 00100000000100110001111010110000 illusion 00000000000111101101110000001111 39,000 00000000000000000000000000000000 instruction 00000000000000001100001101100001 midtown 00000000000110010000001000110000 novelist 00000000000101100111011110110101 romantic 00000000000000001011011010010000 lets 00000000001100100001000000010010 gun 00000000000111101000010000000001 posture 00000000000111001011101110100111 reads 00000000100010000011000000010010 shrank 00000000000011011010110000110010 Cech 00100000000000000000000000000000 Turnpike 00100000000000011110010011010000 ADRs 01000000000000000000000000000000 Pickens 00101111111100111100100000001000 stockbrokers 00000000000000000000101111110011 emotionally 00000000000001001000000001110010 gestures 00000000000011011111001000100011 noise 00000000000000000001110000100001 statewide 00000000000000100101000000010000 dial 00000000000111101001110110110111 interrupted 00000100010111010100010000110010 Dominion 00100000000000000111000100101000 claimants 00000000000111110101100110110011 monopolies 00000000000111111111100000100001 concentration 00000000000111110011011010100111 1.17 00000000000000000000000000000000 taping 00000000010011100010110001000000 corrupt 00000000000001111000101000110000 bribed 00000000000000000000000000000000 continental 00000000000111101011110110101000 clarify 00000000000111101010011110110010 21.3 00000000000000000000000000000000 reinvested 00000000111011000000010000110010 fleets 00000000000111111011101001100011 specifics 00000000000011101110001100101111 7.82 00000000000000000000000000000000 buffer 00000000000000000001110101010000 Marietta 00101111111111100101001000110000 built-in 00000000000000000000000000000000 en 00000000000000100010001000110000 Surely 00100001000001000000001001110010 Regional 00100000000000001100010000110000 death-penalty 00000000000000000000000000000000 occurring 00000000101100001100010000110010 disappearance 00000000000101100111111000001111 sights 00000000000111000011111101100011 1.21 00000000000000000000000000000000 stone 00000000001100100001000000001000 Amid 00100000000000000010100000001010 rebuilding 00000000000100000010110001000000 occupation 00000000000110101111101001100111 distinct 00000000000010010000010000010000 Werner 00101111111100101110000100001000 imprisonment 00000000000111110100111000111001 320 00000000000000000000000000000000 codes 00000000000000101001011100100011 Maclean 00101111111111100100001000011000 acceleration 00000000000110010110111001100111 Whittington 00100000000000000000000000000000 Insight 00100000000100100100111001100111 piled 00000000000111101011001000110010 Friends 00100000000110100111110000110011 booked 00000000001110001100010000110010 translations 00000000000000000000111001101001 educators 00000000000000000100111000110011 inject 00000000010111101111101110110010 depended 00000000000001100000100000110010 intermediate 00000000000000000001101010101000 wooden 00000000000000001010001000110000 dairy 00000000000011100100011010110000 Violetta 00100000000000000000000000000000 bread-and-butter 00000000000000000000000000000000 meals 00000000000010101101110101100011 88.12 00000000000000000000000000000000 Remember 00100000000111110110100110110010 urgency 00000000000011110111110100100111 dragging 00000000011111101110100001000000 Demler 00101111111000010001000010001000 terrorist 00000000000000001001011000110000 1.49 00000000000000000000000000000000 photograph 00000000000111101011001000111111 fingers 00000000000100000111111101100011 U.S.-Soviet 01000000000000000000000000000000 3.69 00000000000000000000000000000000 contraceptive 00000000000000000010001011100001 fertilizer 00000000001000001011111010110000 self-employed 00000000000000000000000000000000 Stephens 00101111111101001101110001001000 ai 00000000000111111101111100010010 reassuring 00000000000011110000010010010000 perfume 00000000000010010011111010110000 Tae 00101111111100110100011100100101 tainted 00000000010000010101101001000000 calamity 00000000000111111000101101100111 resolutions 00000000000100000011101000100011 Glazer 00101111111011001110100010001000 emergence 00000000000110011111111000001111 pocket 00000000000111100111010000000001 geography 00000000000111101011010010100111 Elliott 00101111111000000010100100001000 Hawaiian 00100000000010110000001000110000 Schwartau 00100000000000000000000000000000 bookings 00000000000000000000010100011001 bleeding 00000000000111100001110000100001 heir 00000000000111100011001100100111 amend 00000000001110111010111110110010 dying 00000000000111101101000001000000 junior 00000000000000110000101000110000 openness 00000000000110111111110010100111 tailored 00000000011101101100110000110010 surgical 00000000000000001100101010110000 drawbacks 00000000000111111100011000100011 steeper 00000000000001001100001111000000 four-game 00000000000000000000000000000000 Orders 00100000000000000000000100011001 incur 00000000000110000011001110110010 Employment 00100000000000000000001100000111 specifications 00000000000111010111011100100011 IMS 01000000000000000000000000000000 define 00000000001010101011111110110010 Corrupt 00100000000001111000101000110000 9000 00000000000000000000000000000000 legislatures 00000000000000000011010010110011 playoffs 00000000000000000000000000000000 FM 01000000000000000000000000000000 1.06 00000000000000000000000000000000 Record 00100000000111101111111100010000 Automobile 00100000000000001100001110110000 Comair 00100000000000000000000000000000 Kao 00100000000000000000000000000000 Software 00100000000000000000111010110000 Combined 00100000000000000110001001000000 shedding 00000000000111011001110001000000 concluding 00000000000110111001111010000010 pipes 00000000000111100111101111001001 LSI 01000000000000000000000000000000 WHEN 01000000000000000000101001000010 stressing 00000000000111011001111010000010 Ferdinand 00101111111001110100011100001000 FirstSouth 01000000000000000000000000000000 scant 00000000000000000010110000010000 18.65 00000000000000000000000000000000 blanket 00000000000000011100100000100001 remembers 00000001000011100011000000010010 remarked 00000000000111010111110111000010 19.7 00000000000000000000000000000000 slackened 00000000000000000000000000000000 Taft 00100000000101100100110000001000 Rahn 00100000000000000000000000000000 Sagan 00100000000000000000000000000000 Boulder 00100000000111100111101001101000 advocating 00000000000111000011111101000000 Beth 00101111111000011110001000011000 Try 00100000000110111111010110110010 harbor 00000000000011000110000010100101 questionnaire 00000000000111100010001011100111 BRIEFS 01001111111110011111101110110000 builder 00000000000111101101000001110101 killer 00000000000100100100001100100001 1,100 00000000000000000000000000000000 26.5 00000000000000000000000000000000 Theodore 00101111111000011001110110011000 FK-506 01000000000000000000000000000000 dependents 00000000000111011110011100110011 Wichita 00100000000001111011101001101000 Medellin 00100000000000000000000000000000 dull 00000000000111100010011010010000 drum 00000000010110010110010110110010 Additionally 00100000000111111011101011101000 intolerable 00000000000000010011001110010000 absent 00000000011000010100010000110010 audited 00000000001010010001101001000000 Bay-area 00100000000000000000000000000000 30.6 00000000000000000000000000000000 Ultimately 00100000000000000000001001110010 remark 00000000000111101101111101100111 fasteners 00000000000000000000000000000000 cost-of-living 00000000000000000000000000000000 Matilda 00100000000000000000000000000000 Oscar 00101111111000001100001100011000 publicist 00000000000110111011011110110101 virtual 00000000000001101010010000010000 Mo 00100000000000000000000000000000 clever 00000000000001010000011010010000 emigration 00000000000010101100011100000111 Holt 00101111111100010111000010001000 Fruit 00100000000110111011111010110000 19.95 00000000000000000000000000000000 negligence 00000000000110011111100010100111 premature 00000000000111110101110110010000 Troubled 00100000000001000000101001000000 rage 00000000000111110010111010100111 Petco 00100000000000000000000000000000 bone 00000000000000101001110000100001 faulty 00000000000000101100000110010000 Greek 00100000000010100001011000110000 tarnished 00000000110110000001110000110010 Empire 00100000000111110000100100100001 salmonella 00000000000000100101110000100001 1-2-3 00000000000000000000000000000000 installation 00000000000111111001111101001111 torn 00000000001001110010110000110010 distributions 00000000000100000010001100000011 409 00000000000000000000000000000000 deductibility 00000000000101001111111000001111 Magellan 00100000000001010001111110110000 subpoenas 00000000000101100110110100011001 Arctic 00100000000011110010001000110000 sprawling 00000000010010010000001000110000 inception 00000000000111111111011110100111 full-fledged 00000000000000000000000000000000 Chambers 00100000000100110100110111110011 diaper 00000000000000100101011010110000 Beefeater 00100000000000000000000000000000 saddled 00000000000101110110010000110010 Quina 00100000000000000000000000000000 quoting 00000000000110111100001101000000 depicted 00000000000000000010110000110010 Whittaker 00100000001011001010111100101000 Elaine 00101111111000000100011000011000 abstract 00000000000000001110110100010000 Bruyette 00101111111111111100101001001000 Concerned 00100000000111110111110000110010 fulfilling 00000000000111100101011101000000 Morgenzon 00100000000000000000000000000000 Chuck 00100000000000000001101000011000 measurement 00000000000010101000100001100001 till 00000000000000010110000000101010 Corsica 00100000000000000000000000000000 Yorkshire 00100000000000000000000000000000 treats 00000100000110000011000000010010 4.92 00000000000000000000000000000000 mulling 00000000000111100010010101000000 24-hour 00000000000000000000000000000000 forefront 00000000000111111110101100001111 CPI 01000000000000000000000000000000 Cherokee 00100000000000111001010100101000 Oracle 00100000000110001100100100101000 Going 00100000000111101110011000110010 bore 00000000000001101011000000010010 Akron 00100000000111111110001001101000 Moss 00101111111110101010100010001000 Mafia 00100000000011001010101000110000 Register 00100000000100011110010110110010 prisons 00000000000011100111110001100011 NRDC 01000000000000000000000000000000 respectable 00000000000000110111100000010000 rig 00000000000110110110110110110111 340 00000000000000000000000000000000 stock-fund 00000000000000000000000000000000 markdowns 00000000000111101111010000000011 backlash 00000000000111101110101010100111 Hoelzer 00100000000000000000000000000000 Isler 00100000000000000000000000000000 criticisms 00000000000111111011101000100011 Dreyer 00100000000000000000000000000000 penetrate 00000000000101100111111110110010 sensational 00000000000000000000000000000000 restitution 00000000000000101011001100000011 refrain 00000000000110010011110110110010 Authorities 00100000000000000010010010110011 PR 01000000000000000000000000000000 go-ahead 00000000000000000000000000000000 Cela 00100000000000000000000000000000 Margin 00100000000000000001100011000111 dominates 00000010110010000011000000010010 Touche 00101111111111100100010000101000 computer-aided 00000000000000000000000000000000 Arco 00100000000111101100010100101000 1949 00000000000000000000000000000000 appreciated 00000000000010010001101001000000 intelligent 00000000000010100000110100010000 DeVoe 01000000000000000000000000000000 connecting 00000000000000011010110001000000 Corcoran 00100000000000000000000000000000 meaningless 00000000000010100011110110010000 continuation 00000000000111111111101110111111 Store 00100000000000000101111010110000 rear 00000000000100001010001000110000 buy-and-hold 00000000000000000000000000000000 first-time 00000000000000000000000000000000 Candela 00100000000000000000000000000000 flush 00000000000101111101100000110010 neatly 00000001111100000000010001110010 meters 00000000000000101111000001000111 seismic 00000000000000000000000000000000 minimum-wage 00000000000000000000000000000000 contested 00000000000001000101101001000000 abundant 00000000000000001111110010010000 IG 01000000000000000000000000000000 Metall 00100000000000000000000000000000 heady 00000000000000110010011010010000 coordinator 00000000000110100111110000110101 skiers 00000000000000000000000000000000 mad 00000000000001110000011010010000 hints 00000000000111101100011110101111 Basir 00100000000000000000000000000000 voiced 00000000000011010001010000110010 extends 00000001000010000011000000010010 emphasize 00000000000110001100100110110010 Bumiputra 00100000000000000000000000000000 Mail 00100000000101101110000000100001 two-step 00000000000000000000000000000000 mid-November 01000000000000000000000000000000 Westridge 00100000000000000000000000000000 17.6 00000000000000000000000000000000 threshold 00000000000111001010101101100111 combines 00000000001111100001000000010010 Hedges 00100000000111111101000001111001 Faced 00100000000011010110010000110010 jackets 00000000000001100111110101100011 materialize 00000000110111111101010110110010 prescribed 00000000000100001101101001000000 logical 00000000000000100000000010010000 mink 00000000000000100110101100100001 Kerry 00101111111001010010000100001000 Schlumberger 00100000000110110100111100101000 Did 00100000000111101110111100010010 psychologist 00000000000111110101011110110101 honestly 00000000111000000000010001110010 searches 00000000000101100010001000100011 timidity 00000000000111100011111010100111 provinces 00000000000110000101011101110011 forge 00000000000110011110010110110010 Occupational 00100000000110100101000000110000 reclaim 00000000000000000000000000000000 attraction 00000000000111101111111001100111 tags 00000000000111101100111110000011 IAFP 01000000000000000000000000000000 Egypt 00100000000111111011111101101000 Figure 00100000000111101111001000110111 merchandising 00000000000000010000100001100001 downs 00000000000111111011001001100001 ups 00000000001111110011111010110000 Corn 00100000000110100001101110110000 self-interest 00000000000000000000000000000000 Superior 00100000000000001000001001000000 Veterans 00100000000000100010111010110000 Bullock 00101111111110001110000010001000 aesthetic 00000000000010001000000000110000 canal 00000000000000000111001010100101 disorder 00000000000011011111110010100111 best-known 00000000000000000000000000000000 Haskins 00101111111100101111101001001000 feedlots 00000000000111111111101000000111 tritium 00000000000000000000000000000000 muster 00000000001101101110101110110010 dissidents 00000000000111110100100110110011 leaks 00000000000101111101110101100011 integrate 00000000000111010110111110110010 Izvestia 00100000000000000000000000000000 towards 00000000000011000001000000001010 mega-issues 00000000000000000000000000000000 Enserch 00100000000000000000000000000000 winds 00000000000111100111000000010010 coffers 00000000000111111010011100100011 Finkelstein 00100000000000000000000000000000 viability 00000000000111110010011000001111 Toy 00100000000000010011111010110000 Environment 00100000000111110111011001100111 Claiborne 00101111111000010100000001001000 Scenario 00100000000111011001111101100111 Johnston 00101111111110111111100010001000 Montana 00100000000110011100110001101000 Coda 00100000000000000000000000000000 locally 00000000001100100001001001110010 8.85 00000000000000000000000000000000 Miss. 00100000000000000000000000000000 Southeastern 00100000000000101000110110101000 bullion 00000000000000000001011110110000 disgorge 00000000000000000000000000000000 bracket 00000000000111111111100110000011 variables 00000000000110110111001010100011 190.58 00000000000000000000000000000000 F-16 00100000000000000000000000000000 national-security 00000000000000000000000000000000 opted 00000000001110111011101000110010 harvested 00000001100001001100010000110010 thumb 00000000000111110111110010100111 steer 00000000000001111011101110110010 Nora 00100000000000000000000000000000 154 00000000000000000000000000000000 trainer 00000000000000101111011110110101 sounded 00000000001100101000001000110010 seldom 00000000000101100000001001110010 blockbuster 00000000000001001011100100100001 ropes 00000000000111101011100000100001 ducks 00000000000111011011010101100011 Projects 00100000000111101111110100100011 wide-ranging 00000000000000000000000000000000 conspired 00000000000110011111101000110010 small-town 00000000000000000000000000000000 adversely 00000000010010000000010001110010 consisted 00000000000000000100101000101111 carpets 00000000000000000000000000000000 268 00000000000000000000000000000000 feeds 00000100001110000011000000010010 Export 00100000000000000011000100010000 allocate 00000000000111110111001110110010 Hopwood 00101111111100111111110001001000 Toubro 00100000000000000000000000000000 brave 00000000000010110010011010010000 notebooks 00000000000000000000000000000000 presumed 00000000000110110101110110010000 gates 00001111111100000111001000001000 Rafale 00100000000000000000000000000000 reinforced 00000000000100100111010000110010 Canaan 00100000000000000000000000000000 scuttled 00000001001011010100010000110010 government-controlled 00000000000000000000000000000000 stockpiles 00000000000111111100010100000111 intangible 00000000000001100000101001000000 pleasure 00000000000111101111010000000001 chronic 00000000000001110010000000110000 Islamic 00100000000000100001011000110000 counterproductive 00000000000011011000110110010000 Briggs 00100000000000000000000000000000 supervised 00000000010101000101010000110010 1964 00000000000000000000000000000000 compliment 00000000000000000000000000000000 insult 00000000000111000011101100100111 Lesk 00100000000000000000000000000000 Durkin 00100000000000000000000000000000 orthodox 00000000000000011001011000110000 punch 00000000000101001111001010110111 Sri 00101111111000010011001101110000 regrets 00000000000111101110011010101111 singers 00000000000110110111110101100011 Violin 00100000000010001010101100100001 violin 00000000000010001010101100100001 trespass 00000000000000000000000000000000 Kessler 00101111111110111100000010001000 nearest 00000000000011010000010011010000 Ambrosiano 00101111111000100111010001001000 inefficiency 00000000000111111011010010100111 Valentine 00100000000000000000000000000000 DEA 01000000000000000000000000000000 guideline 00000000000000000000000000000000 Honduras 00100000000111110101011101101000 Detrex 00100000000000000000000000000000 astronauts 00000000000000001000011100110011 Cummins 00100000000011100010111000101000 Escort 00100000000000000011100110110111 Fujisawa 00100000000000000000000000000000 frankly 00000000000111101000001001110010 Design 00100000000111001100011110110111 ward 00001111111100101100010000001000 misrepresentations 00000000000100110111100010100111 pauses 00000000010101101111000000010010 balloting 00000000000111101100010001100111 Coates 00100000000000000000000000000000 dancing 00000000000111101010001100100001 U.S.-backed 01000000000000000000000000000000 warehouses 00000000000111111011110001100011 7.97 00000000000000000000000000000000 Olin 00100000000000010111111100101000 Brotherhood 00100000000111111111011110100001 Ship 00100000000111101101000110110111 two-hour 00000000000000000000000000000000 refined 00000000000111011001101001000000 crudes 00000000000100000101011011100011 constructive 00000000000001000001010010010000 accuracy 00000000000111010010111000001111 normalcy 00000000000000000000000000000000 stranger 00000000000111101100111100010111 deliberate 00000000001101000001000000010000 dolls 00000000001000100101110101100011 adjuster 00000000000000000000000000000000 Bancroft 00100000000111110011010100101000 conservatorship 00000000000000000000000000000000 Filipinos 00100000000010011100111000110011 sings 00000000100011100011000000010010 dispose 00000000000110010111110110110010 callers 00000000000000100110111000110011 Bologna 00100000000000000000000000000000 lion 00000000000111101111001011000101 boast 00000000000111101011011010110111 Klerk 00101111111000101100111110000010 1.5765 00000000000000000000000000000000 Tesoro 00100000000110100011010100101000 142.75 00000000000000000000000000000000 Proponents 00100000000001111010000010110011 430 00000000000000000000000000000000 shrift 00000000000000000000000000000000 inconceivable 00000000001101001110010001110010 63.52 00000000000000000000000000000000 Legent 00100000000000000000000000000000 flap 00000000000101010010111010100111 skyrocketing 00000000000010111010010001000000 Greg 00101111111010000000001000011000 environments 00000000000111111010110100100011 Libya 00100000000110011100111101101000 regulating 00000000000011010011011101000000 Sen 00100000000000000000000000000000 knock 00000000000001001110101110110010 ecological 00000000000101011000000000110000 whiskey 00000000000101110011111010110000 FOR 01000000000000000000000100001010 Especially 00100000000111111011000001110010 Finnair 00100000000000000000000000000000 suspicious 00000000000011101011110000110010 Bickwit 00100000000000000000000000000000 Parenthood 00100000000000000000000000000000 donating 00000000000000000000000000000000 segregation 00000000000110110011111010100111 IN 01000000000000000000000001001010 inviting 00000000000011000100001101000000 O'Connell 01001111110101111100000010001000 loser 00000000000111111000111010110101 unloading 00000000000111101001110001000000 15.5 00000000000000000000000000000000 nerve 00000000000110110001110000100001 Included 00100000000000100001010000110010 750,000 00000000000000000000000000000000 quantitative 00000000011010011010000000110000 stopping 00000000001001111011011101000000 Release 00100000000111101001111101110111 Mack 00101111111001101001001000001000 fragrance 00000000000100101011111010110000 589 00000000000000000000000000000000 honesty 00000000000010011111110010100111 sporting 00000000000010010010101010110000 suspending 00000000000011111011011101000000 wasted 00000000011011000100010000110010 Fernandez 00101111111001100111000010001000 Conasupo 00100000000000000000000000000000 depositors 00000000000111000111110000110011 aroused 00000000001111100111010000110010 workings 00000000000101010110011000001111 Bahamas 00100000000111111101111110110011 cracked 00000000010111101001001000110010 export-control 00000000000000000000000000000000 bumpy 00000000000000000000000000000000 hand-held 00000000000000000000000000000000 Cynthia 00101111111000001011110110011000 spectrum 00000000000111011100111001100111 Carroll 00101111111011100100000100001000 unwillingness 00000000000111101101111100100111 chilling 00000000000000111010000000010000 COMPANIES 01000000000110100100100011110011 Pact 00100000000111101110111000100111 paychecks 00000000000010100100111101100011 toppled 00000001001101000101010000110010 conciliatory 00000000011111000001000000010000 carpeting 00000000000011101011111010110000 slice 00000000000111101101011000111111 resurgence 00000000000110110101101010100111 theoretical 00000000010010011010000000110000 evacuation 00000000000000000110001011100001 payouts 00000000000111100011001100000011 KLM 01000000000000000000000000000000 flopped 00000000010101000110001000110010 orbit 00000000000111100010110101010111 lapses 00000000000111011100011000100011 bran 00000000000000000000000000000000 Called 00100000000011010101010000110010 Otto 00101111111010100001001010011000 magnate 00001111111100111111110000110101 26-week 00000000000000000000000000000000 Tenders 00101111111111111111110100011001 hydrogen 00000000000111011110110000100001 arteries 00000000000110101101110010100111 lining 00000000000111001010100001000000 Abbie 00100000000000000000000000000000 rattled 00000000000000000000000000000000 Monterrey 00100000000000000000000000000000 mouse 00000000000111011110000000001000 INDUSTRIES 01000000000111101100100000101001 136 00000000000000000000000000000000 1.08 00000000000000000000000000000000 ugly 00000000000010110101110100010000 Seaman 00100000000000111001000000001000 Morristown 00100000000110110101101001101000 naked 00000000000011010010011010010000 islands 00000000000000101101010100000001 229 00000000000000000000000000000000 worthless 00000000000001100100110110010000 stimulators 00000000000000000000000000000000 retrieve 00000000100101101111101110110010 Asea 00101111111011000100010000101000 1.76 00000000000000000000000000000000 Boveri 00101111111011010001000101001000 2.35 00000000000000000000000000000000 Buddy 00100000000010101011111100001000 Deere 00101111111111001011111010101000 Hammack 00100000000000000000000000000000 realities 00000000000110101011111000001111 Boyer 00100000000000000000000000000000 chasing 00000000000000000011000101000000 legality 00000000000111100101011000001111 Imo 00100000000111011110111100101000 anti-competitive 00000000000000000000000000000000 AMERICAN 01000000000000000000010110101000 kickbacks 00000000000111111011001100000011 Walnut 00100000000000000000000000000000 Recovery 00100000000111001111101010100111 inexpensive 00000000000000000111001110010000 Networks 00100000000111101110110100001001 11.25 00000000000000000000000000000000 deliberations 00000000000111100011010000100111 regulates 00000000011000010001000000010010 escrow 00000000000000010011101010100001 Connie 00100000000000000000000000000000 depth 00000000000111100010111000001111 Could 00100000000000000000100110010010 Aga 00100000000000000000000000000000 Khan 00100000000101111011000001001000 Marous 00100000000000000000000000000000 disabilities 00000000000000000011100010100111 Combustion 00100000000110111010011010110000 Mount 00100000000111111111100110110111 Pons 00100000000000000000000000000000 Patent 00100000000000101000100000100001 Vickers 00101111111110100100101000101000 positively 00000001001000010000010001110010 well-being 00000000000000000000000000000000 IFI 01000000000000000000000000000000 nominee 00000000000111111111101010110101 21.7 00000000000000000000000000000000 high-grade 00000000000000000000000000000000 missions 00000000000111100011110100100011 harmed 00000000101101010001110000110010 1.30 00000000000000000000000000000000 rider 00000000000000000000000000000000 Shea 00101111111110010100111000001000 Cherry 00100000000111010010001000110000 Uncle 00100000001110000010111000101000 143 00000000000000000000000000000000 full-sized 00000000000000000000000000000000 7.30 00000000000000000000000000000000 legacy 00000000000111010100100101100111 advent 00000000000110010101111000001111 Drugs 00100000000110100111111001100011 sailing 00000000000001100111000001000000 prize 00000000000110111010111010110101 centered 00000000000000011100100000110010 naczelnik 00000000000000000000000000000000 intensified 00000000000000010100111001000000 countryside 00000000000111111101001110110011 hog 00000000000000001111101110110000 Advisory 00100000000000000011000010110000 anthrax 00000000000000000000000000000000 revolving 00000000000001001111010000110000 27.1 00000000000000000000000000000000 Agents 00100000000000000011100000110011 roofing 00000000000000000000000000000000 14.1 00000000000000000000000000000000 supplemental 00000000000000011010010000010000 frivolous 00000000000000100010000110010000 celebrated 00000000000001000001101001000000 drugstore 00000000000001011001111010110000 bankruptcy-court 00000000000000000000000000000000 1.56 00000000000000000000000000000000 potent 00000000000001100100000010010000 company-owned 00000000000000000000000000000000 aspirations 00000000000111010010111101100011 surgeon 00000000000000001010110000110101 voter 00000000000000000000111000100001 gerrymandering 00000000000111001010110010100111 CAT 01000000000111110010010000000001 Acadia 00100000000000000000000000000000 Less 00100000000000000000100111000000 equality 00000000000111001111111010100111 mom 00000000000010111111110010100111 wealthier 00000000000010110100001111000000 patented 00000000000011101101101001000000 envy 00000000000111111010110101100111 Ridge 00100000000011101010100010100101 Fame 00100000000100101111110010100111 foil 00000000000111100111100110110111 non-profit 00000000000000000000000000000000 Jerusalem 00100000000111000011111001101000 10-day 00000000000000000000000000000000 27.9 00000000000000000000000000000000 catastrophic-illness 00000000000000000000000000000000 Readers 00100000000111110111110000110011 awaits 00000000111010000011000000010010 AFL-CIO 01000000000000000000000000000000 144 00000000000000000000000000000000 initiate 00000000000011001111101110110010 forfeit 00000000000110001110001110110010 hypothetical 00000000000110000101000010010000 Lighting 00100000000011011010010010110000 employing 00000000000000000101111101000000 Bryan 00101111111000000110100100001000 minimills 00000000000000000000000000000000 uprising 00000000000111100111101001100111 1.52 00000000000000000000000000000000 504 00000000000000000000000000000000 collateralized 00000000000011100010100110110000 Novello 00100000000000000000000000000000 sociologist 00000000000100011011011110110101 tactic 00000000000110111001111101100111 moderates 00000000000111101110000110110011 Sununu 00101111110100111100000010001000 functioning 00000000000111110111010001000000 rode 00000000001101001011000000010010 rewrite 00000001100010111111110110110010 rejecting 00000000000100101011111101000000 anti-government 00000000000000000000000000000000 substantive 00000000000100010101000000010000 programmers 00000000000001101100010000110011 assisting 00000000000111011100001101000000 Levin 00101111111011100110100010001000 faltered 00000000110101000110001000110010 Kirk 00101111111000001101010100001000 submarine 00000000001101101010001010110000 subdued 00000000000010111010011100010000 Quickview 00100000000000000000000000000000 upgraded 00000000000111110011111001000000 intensely 00000000010010101000000001110010 sway 00000000000111100110110010110111 Sky 00100000000111011110111000000001 dock 00000000000111101100000001111001 Micro 00100000000000010010011010110000 crashed 00000000000110100110001000110010 ABA 01000000000000000000000000000000 billion-dollar 00000000000000000000000000000000 9.3 00000000000000000000000000000000 Pipeline 00100000000100000001111010110000 sympathy 00000000000110000110110100100111 condemning 00000001111010010000000000001010 fluid 00000000000110110100101010110000 taxi 00000000000000011000101000110000 11.4 00000000000000000000000000000000 incapable 00000000001000101011110000110010 sacrificing 00000000000001100001111101000000 Cathcart 00100000000000000000000000000000 slopes 00000000000000000000000000000000 sensible 00000000000010110000010010010000 vaccines 00000000000101111010111001100011 topple 00000000011101010111111110110010 Willkie 00101111111100010100010000101000 clue 00000000000111111010111100010111 intriguing 00000000000000100001001110010000 elephant 00000000000000111100001100100001 0.60 00000000000000000000000000000000 computerizing 00000000000111110001111101000000 gently 00000000001101000000010001110010 recordings 00000000001100100101110101100011 barrage 00000000000111110100111000111111 pronounced 00000000000110010001010010010000 Comsat 00100000000100010011111100101000 provoked 00000000011011100111010000110010 respectability 00000000000000000000000000000000 contrasts 00000000000000011011100000110010 reminds 00000000000101001011000000010010 ripe 00000000000001011110110000110010 Whitney 00101111111000101111110001001000 Super 00100000000000010001001000110000 'We 01000000000000000000000000000000 controllers 00000000000000001010000000110011 doctrine 00000000000111110001000011100111 skiing 00000000000111000000101100100001 Geduld 00100000000000000000000000000000 Was 00100000000000000000100000010010 fad 00000000000111100100101101100111 beliefs 00000000000111001110111101100011 homer 00000000000000000000000000000000 ** 00000000000000000000000000000000 erroneous 00000000000000010100000110010000 DLJ 01000000000000000000000000000000 reins 00000000000111100011000011000111 reasoning 00000000000110111011111101100111 lottery 00000000000000110000100000100001 impetus 00000000000111001011101100100111 brunt 00000000000111111110001100001111 prerogatives 00000000000000000000000000000000 Think 00100000000111111111100110110010 Sikes 00100000000000000000000000000000 amortization 00000000000111101101100101001111 Disease 00100000000111111101110010100111 Cilcorp 00100000000000000000000000000000 8.42 00000000000000000000000000000000 accuses 00000000100001100011000000010010 certainty 00000000000111111110010101100111 relaxing 00000000000001011111010001000000 0.03 00000000000000000000000000000000 jammed 00000000010011110110010000110010 7:30 00000000000000000000000000000000 pediatric 00000000000000000000000000000000 republics 00000000000111100011000110110101 swell 00000000000111001101110110110010 325 00000000000000000000000000000000 Roberti 00100000000000000000000000000000 simpler 00000000000000010101001111000000 seizing 00000000000110100111111101000000 expelled 00000010010111010100010000110010 Cutler 00101111111101001100111000001000 Ala 00100000000000000000000000000000 H.H. 01000000000000000000000000000000 Courts 00100000000011000010010110110011 Nye 00100000000000000000000000000000 absences 00000000000000000000000000000000 Martha 00100000100000000110001000011000 flat-rolled 00000000000000000000000000000000 quadrupled 00000000000100111010110000110010 condemn 00000000001000100011111110110010 Taking 00100000000111111010100101000000 Managua 00100000000111100001101101101000 Seventh 00100000000111101011100011010000 Half 00100000000111111111111011101111 closure 00000000000111101101111101001111 radios 00000000000110110110111001100011 1.8340 00000000000000000000000000000000 talents 00000000000101101101111101100011 gripes 00000000000111111100111010101111 selections 00000000000011000110010101100011 Cara 00100000000000000000000000000000 H 00100000000000000000000000000000 physics 00000000000000001011001101100001 drafting 00000000000101110010110001000000 passes 00000000011000001111000000010010 Carriers 00100000000111100100101011110011 Developers 00100000000111000110010000110011 Unicorp 00100000000000100111110110101000 bowl 00000000000001101100100010110101 overbuilt 00000000000001011101101001000000 rollers 00000000000000000000000000000000 hotel-casino 00000000000000000000000000000000 Being 00100000000000000011001001110010 Bronner 00100000000000000000000000000000 laundering 00000000000000010001011110110111 identifying 00000000000000110011111101000000 Knopf 00100000000111111111100101011000 conceptual 00000000000000000000000000000000 foreseeable 00000000000110100101100011010000 Sit 00100000000111111011010110110010 ideology 00000000000101001111110010100111 resemblance 00000000000110010101111100100111 Albany 00100000000111111111000001101000 14.7 00000000000000000000000000000000 Professor 00100000000111111111011000110101 UBS 01000000000000000000000000000000 thwarted 00001100001011010100010000110010 Fashion 00100000000011100100111100100001 mysterious 00000000000011100100000010010000 Trouble 00100000000000100110110100100111 seizures 00000000000110001101100010100111 believing 00000000000110111101111010000010 observes 00000000000111111001011111000010 117 00000000000000000000000000000000 T-bills 00100000000000000000000000000000 Terrizzi 00100000000000000000000000000000 Bundesbank 00100000000111101110110000100101 discrepancy 00000000000111111010101000010111 run-up 00000000000000000000000000000000 Paterson 00100000000000000000000000000000 Final 00100000000000010000000011010000 MIT 01000000000000000000000000000000 evolved 00000001100001110010110000110010 peoples 00000000000111010100100100100001 distress 00000000000000000111111010100111 TPA 01000000000000000000000000000000 dried 00000000000111011011001000110010 dialysis 00000000000000000000000000000000 sporadic 00000000000001011000000000010000 Reupke 00100000000000000000000000000000 flowed 00000000001001101000001000110010 Southland 00100000000111001111101100101000 instrumental 00000000100001110100010000110010 wool 00000000001001110011111010110000 trapped 00000001100001110100010000110010 Hathaway 00101111111001010010001010101000 exaggerated 00000000000110110001110000110010 objected 00000000000111011111101000110010 flocked 00000000001100101011101000110010 five-member 00000000000000000000000000000000 156.7 00000000000000000000000000000000 pants 00000000000100001101110101100011 unused 00000000101001010000001000110000 doomed 00000000000111111110110110010000 accessible 00000000000111111101001110010000 Parents 00100000000111100111110000110011 independently 00000000001100000000010001110010 Hyde 00100000000010101010011010101000 haunted 00000000001100101111010000110010 non-financial 00000000000000000000000000000000 1.58 00000000000000000000000000000000 culmination 00000000000000000000000000000000 Younkers 00100000000000000000000000000000 exile 00000000000111111001110101010111 insider-trading 00000000000000000000000000000000 slumping 00000000000001011010010001000000 booklets 00000000000000000000000000000000 7.78 00000000000000000000000000000000 3.10 00000000000000000000000000000000 205 00000000000000000000000000000000 pizza 00000000000111010011001010110000 Atlas 00100000000111111111011100101000 diplomat 00000000000111101011101110110101 worthwhile 00000000000000001110011110010000 overstated 00000000000010100010111001000000 Gatward 00100000000000000000000000000000 19th-century 00000000000000000000000000000000 volunteered 00000000001100111011101000110010 coincidence 00000000000111110101101010110111 Poughkeepsie 00100000000000000000000000000000 managements 00000000000010001011110000110011 astonishing 00000000000001001000110100010000 Buy 00100000000111111100001110110010 remedy 00000000000111011010110010110111 Messiah 00100000000000000000000000000000 mimic 00000000001101100111111110110010 Hyman 00101111111101000010100010001000 Bare-Faced 01000000000000000000000000000000 Cabernet 00100000000000000000000000000000 stampede 00000000000101001101001010110111 inclination 00000000000111110101111100100111 Buffalo 00100000000111101010101001101000 Sidley 00100000000000000000000000000000 Heinemann 00100000000000000000000000000000 data-processing 00000000000000000000000000000000 Legg 00101111111111110110101100011000 two-tier 00000000000000000000000000000000 conception 00000000000111111011100101001111 Farrell 00101111111111010000100010001000 general-purpose 00000000000000000000000000000000 Castle 00101111111111110011111010101000 Studies 00100000000100111000001000100011 TO 01000000000000000000000101010010 1.69 00000000000000000000000000000000 thoughtful 00000000001010010101000010010000 reviving 00000000000111100111011101000000 upstart 00000000000111101101101000110000 duo 00000000000000000000000000000000 Mueller 00101111111100111101001000001000 Hirsch 00101111111100110000111000001000 echo 00000000000111001110011010101000 Anything 00100000000000010010010001110010 refiners 00000000000110101100010000110011 solicit 00000000000010010011011110110010 aliens 00000000000110010100111000110011 wedge 00000000000011010110110000100111 fractionally 00000000000000000000000000000000 acquitted 00000000000100101011110000110010 mushroomed 00000000000000000000000000000000 Bauman 00100000000000000000000000000000 fund-raising 00000000000000000000000000000000 speeds 00000000000111001111000000010010 mail-order 00000000000000000000000000000000 Lavelle 00100000000000000000000000000000 Failure 00100000000111111110111100100111 Bausch 00100000000000000000000000000000 jacket 00000000000111010001011000000001 Close 00100000000111111010110110110010 impatient 00000000000001001111110000110010 advertisement 00000000000111111010101000100111 tumor-suppressor 00000000000000000000000000000000 outperformed 00000000010100000001010000110010 planting 00000000001010110010110001000000 prone 00000000000111001100011000110010 part-time 00000000000000000000000000000000 Von 00101111111100111100010101001000 Alvin 00101111111000000101000010011000 Ky 00100000000000000000000000000000 entice 00000000000001111011111110110010 confessed 00000000001010111011101000110010 1.40 00000000000000000000000000000000 detective 00000000000010110010011110110101 2.02 00000000000000000000000000000000 mediocre 00000000000000100111100000010000 Judith 00101111110000110110001000011000 outfits 00000000010001100111110101100011 Nonperforming 00100000000000000000101001000000 Jeremy 00101111111000001010110110011000 semiannually 00000000000000000000000000000000 GAO 01000000000000000000000000000000 Liberties 00100000000000001100000100100111 fruitless 00000000000000000000000000000000 dictate 00000000000100011100100110110010 gentle 00000000000001101000011010010000 Speaking 00100000000111111011000001000000 vacuum 00000000000000111100001000100001 coordinated 00000000000001010001000000010000 REITs 01000000000000000000000000000000 Baltic 00100000000110001101011000110000 drastic 00000000000011000000000000010000 governed 00000000001110010001110000110010 Kay 00101111111111000000000100001000 contemplated 00000000000011011101001001000000 kitchen 00000000000101101111111000000001 Bunker 00101111111001110110000000001000 proceeded 00000000000110101011101000110010 Stevenson 00101111110000110101001000001000 abolished 00000001110111010100010000110010 upstairs 00000000000000010101110110010000 40.1 00000000000000000000000000000000 hears 00000000110101100011000000010010 Unable 00100000000111110100011000110010 deflator 00000000000111111111111110000111 unraveling 00000000000110011111010001000000 unwise 00000000000010110111110110010000 Hugh 00101111111000111100000010011000 22.6 00000000000000000000000000000000 recipe 00000000000111110101111010110101 receiver 00000000000111011011101010110101 tunnel 00000000000000101010111000000001 mineral 00000000000001010010101010110000 floppy 00000000001100011000001010110000 10.8 00000000000000000000000000000000 Powell 00101111111011001000100010001000 Hercules 00100000000111011101011100101000 uranium 00000000001101000100011010110000 rewarding 00000000001110010101010010010000 shutting 00000000000101101110100001000000 Re 00101111111111101010011100001000 facto 00001111110101101100111110000010 ours 00000000000111110111010010100111 refers 00000000000111100001101000110010 glare 00000000000000000000000000000000 Transit 00100000000001000110010010110000 awaited 00000001111111010100010000110010 flaw 00000000000111011000111010110101 criticizes 00000001100001100011000000010010 Shere 00100000000000000000000000000000 favorably 00000000110000010000010001110010 Schuster 00101111111101110111110001001000 Prentice 00100000000000000000000000000000 Meador 00100000000000000000000000000000 electronically 00000001110000010000010001110010 Macrodantin 00100000000000000000000000000000 organize 00000000001110101111101110110010 snack 00000000000111010101010000110000 ballpark 00000000000111011110001101100111 whichever 00000000000000000010011001110010 divergence 00000000000000000000000000000000 Ala. 00100000000000000000000000000000 momentary 00000000000000000000000000000000 PIK 01000000000000000000000000000000 subjected 00000000000110100100011000110010 preoccupied 00000000001111110101100000110010 analyzing 00000000000010001111111101000000 market-share 00000000000000000000000000000000 sons 00001111111111111111110001001000 Himont 00100000000110001111111100101000 U.K 01000000000000000000000000000000 Willis 00101111111110101010000100001000 aligned 00000000011011110110010000110010 A.H. 01000000000000000000000000000000 GASB 01000000000000000000000000000000 termination 00000000000111111110101101001111 Syrian 00100000000001000100010100110000 fruits 00000000000111110111111000001111 concession 00000000000111101111001011100111 pullout 00000000000111100110001101001111 Shin 00100000000000000100000000001000 streak 00000000000100110001001001111001 Albuquerque 00100000000110011011101001101000 Avondale 00100000000000000000000000000000 towel 00000000000110111101111000000001 scam 00000000000111011100101101100111 19.2 00000000000000000000000000000000 captain 00000000000111111111111000100001 burdened 00000000000110001101110000110010 F-20 00100000000000000000000000000000 dictators 00000000000000000000000000000000 tab 00000000000111101010001111100111 extensions 00000000000110110010001000100011 face-to-face 00000000000000000000000000000000 battled 00000000000111000101010000110010 Together 00100000000000000011111100110010 pin 00000000010011010110010110110010 liked 00000000000110111000110111000010 establishes 00000000001110100001000000010010 chefs 00000000000000000000000000000000 ferry 00000000000011110111100110110111 integrating 00000000000111011101011101000000 uncle 00000000001110000010111000101000 Clarkson 00100000000000000000000000000000 Brewery 00100000000111000001111010110000 Ames 00100000000100011011110000001000 Petersburg 00100000000111111101111011101000 Stroh 00100000000001101001000100101000 Traffic 00100000000111100001101110000111 Gartner 00100000000000001100111000101000 digs 00000000011101001111000000010010 proposition 00000000000010000000000001000111 8.20 00000000000000000000000000000000 eaten 00000001010001110010110000110010 greedy 00000000000011001000011010010000 rows 00000000000111101011000100101111 campaigned 00000000011001011110001000110010 Brent 00100000000000110000011100001000 pro-union 00000000000000000000000000000000 7,000 00000000000000000000000000000000 comprise 00000000000000001001101110110010 Louis-based 00100000000000000000000000000000 gang 00000000000111101010010100000001 directory 00000000000000011000001010110000 Accor 00100000000000000000000000000000 pared 00000000000111011111111001000000 Annual 00100000000000000001000101010000 U.S.-made 01000000000000000000000000000000 adventure 00000000000111011100001100100001 assignment 00000000000011101111111001100111 obscure 00000000000011010110110100010000 Bakker 00101111111100110110001010001000 Faberge 00100000000000000000000000000000 slew 00000000000111111101010101111111 lumber 00000000000011010100011010110000 introductions 00000000000111110100000000100111 Alley 00101111111000110000000000001000 timber 00000000000011000100011010110000 Earl 00101111111000101100000010011000 2.77 00000000000000000000000000000000 Machinery 00100000000011001011111010110000 Sidhpur 00100000000000000000000000000000 fame 00000000000100101111110010100111 14.2 00000000000000000000000000000000 309 00000000000000000000000000000000 creeping 00000000000110111011100001000000 Jean 00100000000000001000111000011000 gangs 00000000000111011100100000110011 completes 00000011000100000011000000010010 Gramm 00101111111000101100111010001000 partisan 00000000011001000001000000010000 Rudman 00101111111111111011111010001000 lightning 00000000000000101111100100100001 reasoned 00000000000101010111110111000010 stamps 00000000000111101011111111001001 Traub 00100000000000000000000000000000 eight-year 00000000000000000000000000000000 tide 00000000000111111001100101100111 wondered 00000000000111110100110111000010 Eurobonds 00100000000111111111011010000111 McCormick 01001111111000010000111000001000 painfully 00000000000100001000000001110010 Hesse 00100000100110000100001000001000 shied 00000000000010101010010110110010 Barclay 00101111111000010101001000001000 burning 00000000001111010010110001000000 Anyone 00100000000000101010010001110010 fossil 00000000000000001010101010110000 batch 00000000000111111110011000111111 cultures 00000000000111111011101010100011 database 00000000000011100101011010110000 Des 00101111111011001111001101110000 1.77 00000000000000000000000000000000 Secret 00100000000000001001111000010000 255 00000000000000000000000000000000 NEWS 01000000000111110111000011000001 7.45 00000000000000000000000000000000 prepayments 00000000000000000000000000000000 impressionist 00000000000000011110101100100001 '70s 00000000000000000000000000000000 Christies 00100000000000000000000000000000 Rainbow 00100000000010100100100000100001 247 00000000000000000000000000000000 collapsing 00000000000110101010010001000000 decidedly 00000000000110101000000001110010 950 00000000000000000000000000000000 keyboard 00000000000111101101011000000001 accustomed 00000000000111010100011000110010 Tass 00100000000000000000010000001000 23,000 00000000000000000000000000000000 arrogant 00000000000111010110110110010000 vulnerability 00000000000110011101111100100111 providers 00000000000111110011110100100011 77-year-old 00000000000000000000000000000000 willful 00000000000000001111000110010000 Abby 00101111111010000001011100001000 tenfold 00000000000000011010011011000000 confirming 00000000000110000001111010000010 centuries 00000000000000000000010100111011 Margins 00100000000000010000001000000011 twists 00000000000101100110010101100011 14.8 00000000000000000000000000000000 1948 00000000000000000000000000000000 strikers 00000000000010100110100000110011 thoughts 00000000000111101001111101100011 Pritzker 00100000001000011000000000001000 retirees 00000000000101101100111000110011 16.2 00000000000000000000000000000000 Military 00100000000000000011110000110000 higher-priced 00000000000000000000000000000000 6.76 00000000000000000000000000000000 Feldman 00101111111000000111000010001000 secretaries 00000000000111111110101010110011 omit 00000000000110100110111110110010 attractions 00000000000100101001110101100011 applause 00000000000101110110011010100111 Ground 00100000000111111110110100100111 tuned 00000000000001110000110000110010 connections 00000000000101101100010000100111 absurd 00000000000111101111010110010000 7.15 00000000000000000000000000000000 tossed 00000000000011011001001000110010 1962 00000000000000000000000000000000 ripped 00000000011101101001001000110010 contents 00000000000111110001111000001111 Istat 00100000000000000000000000000000 misled 00000000000000101101010000110010 harshly 00000001110100000000010001110010 Basic 00100000000000001010000000110000 Rice 00100000000100001100000000001000 Ready 00100000000001111100011000110010 assemble 00000000001001111111101110110010 neat 00000000000101010110011010010000 Graduate 00100000000101100000010001000001 Bros 00100000000000000000000000000000 ludicrous 00000000000110111101110110010000 9,000 00000000000000000000000000000000 fearful 00000000000110101011110000110010 posing 00000000000110000100100101000000 camp 00000000000000000001000001100111 now-defunct 00000000000000000000000000000000 courthouse 00000000000000000000001111010101 Primerica 00100000000110001101111100101000 nagging 00000000000000100100011000010000 domination 00000000000101110100111001100111 little-known 00000000000000000000000000000000 censorship 00000000000001100110011010100111 recalling 00000000000010100100100101000000 Powers 00100000000100000111111100100011 vessel 00000000000111101011011001000101 ordinance 00000000000111100010111000100111 handicapped 00000000000111111010101000110000 chlorofluorocarbons 00000000000111111101111001100011 Campaign 00100000000011000111000001100111 767 00000000000000000000000000000000 diversion 00000000000111101010111000001111 exacerbated 00000000011101100111010000110010 subordinates 00000000000100111011110000110011 symbolic 00000000000000010101000000010000 mathematics 00000000000111110110001101100001 Rural 00100000000010000000001000110000 precious-metals 00000000000000000000000000000000 Machine 00100000000001001000101000100001 UV-B 01000000000000000000000000000000 Shore 00100000001110110110010110110010 Purchase 00100000000111101111110101110111 dumb 00000000000010001000011010010000 loath 00000000000111101100011000110010 upturn 00000000000111111101001010100111 appearances 00000000000101101111101000100011 mechanisms 00000000000111111110011100100011 Fleming 00100001111000011100000101001000 posters 00000000000111100111110101100011 bandwagon 00000000000111110110001101100111 Telecom 00100000000111001001001010101000 zone 00000000000100101001101001100111 bout 00000000000111111100111000111111 revamping 00000000000111011111010001000000 greeted 00000001000011110110010000110010 advertise 00000000000110000110101110110010 councils 00000000000101010101110001100011 bat 00000000000111110101011000000001 recurring 00000000000000011000000000010000 soul 00000000000111111101010000000001 Francisco-based 00100000000000000000000000000000 distributing 00000000000011001111111101000000 harmony 00000000000101111111111010100111 virtues 00000000000111101010011000001111 pesetas 00000000000000000101100000001011 intrusion 00000000000101001111110001100111 -a 00000000000000000000000000000000 Wild 00100000000000000100011010010000 numbered 00000000000000001001101001000000 grandchildren 00000000000101100011110000110011 47-year-old 00000000000000000000000000000000 acknowledging 00000000000111111100111010000010 lands 00000000000000001011110100100011 unfilled 00000000000111111000000110110000 handsome 00000000000000010101010000010000 transporting 00000000000110100001111101000000 45-year-old 00000000000000000000000000000000 eases 00000010011010000011000000010010 Platt 00101111110100101000000010001000 Chemicals 00100000000001111111111010110000 Nazionale 00100000000000000000000000000000 unnamed 00000000000010101101101000110000 interference 00000000000011000111111010100111 misconduct 00000000000111011111100010100111 ceilings 00000000000111100011100100100111 payrolls 00000000000011010101010100000111 Purchasing 00100000000111101111110001000000 satisfying 00000000000000100101110110110010 Putnam 00100000001100000111111000101000 topping 00000000000111101101001101000000 188 00000000000000000000000000000000 sigh 00000000000111111110010101111111 bearings 00000000010010001011111010110000 elect 00000000000101000011001110110010 unborn 00000000000011011010101000110000 forecasters 00000000000000000000001000010011 Chip 00100000000000001000001000100001 highest-quality 00000000000000000000000000000000 equation 00000000000111101001011001100111 20.9 00000000000000000000000000000000 Teagan 00100000000000000000000000000000 jumping 00000000000110100111100001000000 atmospheric 00000000000000001101000000110000 glad 00000000000000110101110000110010 viewpoint 00000000000110100101001001100111 resistant 00000000000000001100011000110010 lid 00000000000111111011001011100111 sealed 00000000000111001101101001000000 agendas 00000000000000000000000000000000 Salt 00100000001111110101100110101000 parental 00000000000010100101000000110000 landfill 00000000000001011100100000100001 hill 00001111111000010100000101001000 skyrocketed 00000000000111110001000100110010 Country 00100000000111111111101111000101 essence 00000000000111111110011001101111 Honolulu 00100000000110010011111001101000 misses 00000101000010000011000000010010 generators 00000000000111110110011111001001 Rifenburgh 00100000000000000000000000000000 tilt 00000000000101100101001010110111 mania 00000000000000001010111000100111 Camp 00100000000000000001000001100111 Austria 00100000000111100010111101101000 craze 00000000000111100101100011100111 commanding 00000000000000001110101001000000 temperature 00000000000001100110100011100001 Trustcorp 00100000010111111010111100101000 diesel 00000000000000110010001010110000 wheels 00000000000111101100110101100011 logo 00000000000111110001011000000001 Florence 00100000000010101100000100001000 concealing 00000000000111101101111101000000 L'Oreal 01000000000000000000000000000000 protracted 00000000010000110001000000010000 single-handedly 00000000000000000000000000000000 bacterium 00000000000000000000000000000000 assisted 00000000011011101100010000110010 Abrams 00101111111100110101100010001000 hopefully 00000000000101101101000001110010 direct-mail 00000000000000000000000000000000 3,500 00000000000000000000000000000000 Virgin 00100000000111001001000000001000 hurts 00000011000010000011000000010010 Esso 00100000000000000000000000000000 retaliation 00000000000111000011110000100011 supercomputers 00000000000111010101111001100011 crystals 00000000001101110111110101100011 Phillip 00101111111000001001010110011000 appease 00000000000011000011111110110010 Underwood 00101111110101110101001000001000 complicate 00000000000101101010111110110010 Minneapolis-based 00100000000000000000000000000000 foam 00000000000001001100101010110000 achieving 00000000000111110011111101000000 refinanced 00000001011001010100010000110010 crusade 00000000000111110100000001100111 prototype 00000000000111101101010000000001 245 00000000000000000000000000000000 prisoner 00000000000111111110111000100001 shortcomings 00000000000111101010011000100011 195 00000000000000000000000000000000 Lipton 00101111111000000000111000001000 addresses 00000000001100100111000000010010 sluggishness 00000000000101110011111010100111 lauded 00000000000000000000000000000000 Deb 00100000011011011000001000110000 cost-sharing 00000000000000000000000000000000 relation 00000000000111111100111101010111 examples 00000000000111100110100100101111 relinquish 00000000000101101110001110110010 Legislation 00100000000111101110010011100111 370 00000000000000000000000000000000 212 00000000000000000000000000000000 W.R. 01000000000000000000000000000000 Randolph 00101111111000000101000100001000 Builders 00100000000000110111100000110011 populist 00000000000001000110011000110000 invests 00000000001101011110010000110010 picket 00000000000000011011100011010000 Song 00100000000110101110101000100001 inclusion 00000000000110110111111000001111 apt 00000000000111111001011000110010 dusty 00000000010110010000001000110000 1.64 00000000000000000000000000000000 asbestos-related 00000000000000000000000000000000 smokers 00000000000000101100111000110011 ignorance 00000000000111101111111000001111 attractiveness 00000000000110000101111000001111 clinics 00000000000111010011110100100011 1956 00000000000000000000000000000000 Barber 00101111111000001011010100001000 nowhere 00000000001101010100010001110010 nonexecutive 00000000000000000000000000000000 separating 00000000000000001101011101000000 shakeout 00000000000111001101101010100111 Pierre 00101111111111111100000010011000 La. 00100000000000000000000000000000 custody 00000000000110011010011010100111 Amman 00100000000100010100001000001000 Potlatch 00100000000000000000000000000000 screening 00000000000110000010110001000000 Romano 00101111111100001110000100001000 Andy 00101111111001001101001000011000 Michelin 00100000000011100011010100101000 Cablevision 00100000000000101010010010110000 beats 00000001001010000011000000010010 drunk 00000000000000110100011010010000 Heebner 00100000000000000000000000000000 dies 00000000000111011111000000010010 aborted 00000000000000000011001001000000 Taj 00101111111110001100011110110011 trusted 00000000001011011101101001000000 Korowin 00100000000000000000000000000000 Tyco 00100000000001011100100100101000 privatized 00000000000111100000101001000000 Rabkin 00100000000000000000000000000000 heed 00000000000000111111110110110010 Dimensions 00100000000111101000000100101111 Matchbox 00100000000000000000000000000000 denouncing 00000000000000100001001101000000 Rosenblatt 00100000000000000000000000000000 USFL 01000000000000000000000000000000 Longman 00100000000000000000000000000000 furious 00000000000110111110110110010000 wastewater 00000000000000000000000000000000 Cole 00101111111110000000001000001000 Poquet 00100000000000000000000000000000 Rumors 00100000000111101111111010101111 aggregates 00000000000111101101100001111001 inference 00000000000000000000000000000000 Sweig 00100000000000000000000000000000 Cluett 00100000000000000000000000000000 Dalkon 00100000000111100010001000110000 Shield 00100000000000001000110100100001 SWAPO 01000000000000000000000000000000 Eidsmo 00100000000000000000000000000000 arts 00000000000111101010101101100001 calculating 00000000000111011111011101000000 scarcely 00000001011001000000001001110010 Regatta 00100000000000000000000000000000 Farmington 00100000000000000000000000000000 abandoning 00000000000111100001011101000000 emeritus 00000000000000000000011000110101 robbed 00000000000000000000000000000000 embargo 00000000000111111010111000100111 profound 00000000000000101000000000010000 morally 00000000101000101000000001110010 imagination 00000000000111111011111101100011 suing 00000000000110101101001101000000 falsely 00000000010100100001001001110010 Gitano 00100000000000000000000000000000 rhythm 00000000000110110001110010100111 clears 00000011110010000011000000010010 Gibson 00101111111101011000001000001000 3:30 00000000000000000000000000000000 NCAA 01000000000000000000000000000000 devastated 00000000110111010001110000110010 overvalued 00000000000011000011110110010000 extraordinarily 00000000000101001100000001110010 Fenton 00100000000000000000000000000000 Kimball 00100000000000000000000000000000 11.3 00000000000000000000000000000000 Made 00100000000011011100010000110010 decade-long 00000000000000000000000000000000 Exporting 00100000000111110011110001000000 Valdez 00100000000000010010110110000000 Dunn 00101111111101011100111000001000 Calloway 00100000000000000000000000000000 215 00000000000000000000000000000000 butler 00001111111101101010001000001000 SsangYong 01000000000000000000000000000000 invade 00000000010100100011111110110010 Jayark 00100000000000000000000000000000 destabilizing 00000000000010011001010010010000 administrators 00000000000000100110000010110011 9.50 00000000000000000000000000000000 wildlife 00000000000010010001100000110000 thread 00000000000111101000110101100111 MLX 01000000000000000000000000000000 0.19 00000000000000000000000000000000 Brokerage 00100000000000001000000010110000 Guterman 00100000000000000000000000000000 Laurie 00101111111001111000001000011000 tangible 00000000000010011000000000010000 forming 00000000000111010011111101000000 8.6 00000000000000000000000000000000 Lucky 00100000000001000111000100101000 Unilab 00100000000000000000000000000000 opera 00000000000100100000001100100001 1.45 00000000000000000000000000000000 1.37 00000000000000000000000000000000 distinguished 00000000000000010110101001000000 Chestman 00100000000000000000000000000000 verbal 00000000000100011000000000110000 possess 00000000000100101110101110110010 McKinney 01000000000000000000000000000000 fixing 00000000011110000010110001000000 cornerstone 00000000000111111110001110111111 excited 00000000000110011111110000110010 removes 00000000000100010001000000010010 CACI 01000000000000000000000000000000 ANR 01000000000000000000000000000000 Mahal 00101111111001110011010101010000 Compared 00100000000111111111100000110010 Lentjes 00100000000000000000000000000000 crocidolite 00000000000000000000000000000000 anti-dumping 00000000000000000000000000000000 sweaters 00000000000111111100111001100011 resilient 00000000000000000000000000000000 Furlaud 00100000000000000000000000000000 Morningstar 00100000000000000000000000000000 Lorillard 00100000000000000000000000000000 Ishihara 00100000000000000000000000000000 EEOC 01000000000000000000000000000000 forum 00000000000110010011101001100111 Petipa 00100000000000000000000000000000 Geva 00100000000000000000000000000000 Westchester 00100000000110011010011010101000 Auvil 00100000000000000000000000000000 Myerson 00101111111101100110111000001000 Garza 00100000000000000000000000000000 mains 00000000000000000000000000000000 rerun 00000000000000000000000000000000 Cooperman 00100000000000000000000000000000 consequent 00000000000000000000000000000000 McKesson 01000000000111001000111100101000 Maxtor 00100000000000000000000000000000 Stookey 00100000000000000000000000000000 Garzarelli 00101111111001001110101010001000 Hoare 00101111111110001101101000101000 Point-Pepperell 01000000000000000000000000000000 Farley 00101111111100010000001000001000 Sumatra 00100000000000000000000000000000 Intan 00100000000000000000000000000000 O'Linn 01000000000000000000000000000000 Kamp 00100000000000000000000000000000 2657.38 00000000000000000000000000000000 BancOklahoma 01000000000000000000000000000000 2:30 00000000000000000000000000000000 Flat 00100000000010000001110110010000 Zycher 00100000000000000000000000000000 Chinn 00101111111111011001000010001000 Ibbotson 00100000000000000000000000000000 Weisman 00101111111000101110000010001000 Allday 00100000000000000000000000000000 Nucor 00100000000000000000000000000000 326 00000000000000000000000000000000 IBC 01000000000000000000000000000000 Rianta 00100000000000000000000000000000 Lingus 00100000000000000000000000000000 Ovcharenko 00100000000000000000000000000000 McGowan 01001111111101111010100010001000 Lung 00100000000000001000101011100001 candidacy 00000000000111110111000001100111 blip 00000000000111000101101010100111 McGill 01000000000001101000010000001000 Note 00100000000111101111011010110111 BroadBeach 01000000000000000000000000000000 Linear 00100000000100010000101100101000 passwords 00000000000000000000000000000000 plantation 00000000000000000000000000000000 Elkhorn 00100000000000000000000000000000 Parsow 00100000000000000000000000000000 Matthew 00101111111000001110110110011000 1.8685 00000000000000000000000000000000 thrill 00000000000110010000100101100111 CPAs 01000000000000000000000000000000 Wertheimer 00100000000000000000000000000000 Environmentalism 00100000000000000000000000000000 8.53 00000000000000000000000000000000 Billy 00100000001000000011100000011000 announces 00000000001101100011000000010010 Lamb 00100000000010101110000000001000 Mastergate 00100000000000000000000000000000 2638.73 00000000000000000000000000000000 Harlem 00100000000110100100110001101000 McDermott 01001111111101000000000100001000 Rush 00100000000110111101111010110111 Bailey 00101111111101101111100010001000 Front 00100000000111111101111001101111 bust 00000000000111010111001010110111 Calabasas 00100000000000000000000000000000 2,700 00000000000000000000000000000000 Jimmy 00101111111111111000011100001000 Success 00100000000111110111011010100111 2.80 00000000000000000000000000000000 Fiorini 00100000000000000000000000000000 prescriptions 00000000001101100010001000100011 CDL 01000000000000000000000000000000 Shipments 00100000000111101111110100000111 market-making 00000000000000000000000000000000 Bulgaria 00100000000111001010111101101000 hinder 00000000000110000110111110110010 Fremont 00100000000101010111101001101000 varying 00000000000000011001000011000000 spreadsheet 00000000000000110000111010110000 fashioned 00000000011101101100010000110010 Karalis 00100000000000000000000000000000 greenmail 00000000000010101111110010100111 fizzled 00000000110001000110001000110010 patron 00000000000111111100101010110101 double-decker 00000000000000000000000000000000 denial 00000000000111111110100101001111 Taxpayers 00100000000111101100111000110011 1.8667 00000000000000000000000000000000 0.95 00000000000000000000000000000000 harms 00000000000000000000000000000000 air-traffic 00000000000000000000000000000000 Freind 00100000000000000000000000000000 offending 00000000000000001011110001000000 digits 00000000000000001011101010110101 deterring 00000000000000000111111101000000 smiled 00000000100101011110001000110010 dilutive 00000000000000000000000000000000 Clough 00101111110100001100000010001000 Canelo 00101111111010010001000010001000 allay 00000000000100011011111110110010 peers 00000000000100101011110000110011 Tulsa 00100000000110111011101001101000 -are 00000000000000000000000000000000 resource 00000000000010000110010010110000 wrestling 00000000000111110101100000110010 census 00000000000111101111110101100001 Biscuits 00100000000000000000011011101001 FileNet 01000000000000000000000000000000 ruptured 00000000000000000000000000000000 dwellings 00000000000000000000000000000000 boundaries 00000000000111000010111101100011 constituencies 00000000000111111011000100100011 1.8485 00000000000000000000000000000000 ARCO 01000000000111101100010100101000 Ruvolo 00100000000000000000000000000000 negatively 00000000011000010000010001110010 STORES 01000000000110100000100010101001 E-mail 00100000000000000000000000000000 Safeco 00100000000000000000000000000000 affirmative 00000000000011000001000000110000 Programs 00100000000111101100010100100011 budge 00000000111001111101010110110010 retrofit 00000000000000000000000000000000 Wheeler 00101111111011101101101001001000 Paramount-MCA 01000000000000000000000000000000 Kellner 00101111100000101100000010001000 alarming 00000000000011100110110100010000 Garth 00100000000000000000000000000000 Poodle 00100000001001111010011010101000 Ashton-Tate 01000000000000000000000000000000 computer-security 00000000000000000000000000000000 = 00000000000000000000000000000000 flesh 00000000000111101111000010110111 Rainman 00100000000000000000000000000000 giveaways 00000000000000000000000000000000 Arbel 00100000000000000000000000000000 offing 00000000000111111110011110110011 irrational 00000000000110000100110100010000 Cubs 00100000000000010111110000100101 articulate 00000000000001000101110110110010 swung 00000000000000010101101000110010 Camden 00100000000111101011101001101000 Tan 00101111111111100100101000101000 Ottawa 00100000000111100111111001101000 Spending 00100000000000000000000000111001 thinly 00000000000101100111001001110010 Ngoc 00100000000000000000000000000000 Varity 00100000001101001010111100101000 avert 00000000000000111111101110110010 6.80 00000000000000000000000000000000 efficiencies 00000000000111101101001000000011 viral 00000000001111000010000000110000 Purnick 00100000000000000000000000000000 Galoob 00100000000000000000000000000000 2683.20 00000000000000000000000000000000 Cawthorn 00100000000000000000000000000000 Monarch 00100000000111111100110100101000 enforcers 00000000000000000000000000000000 Gargan 00100000000000000000000000000000 compulsive 00000000000000000000000000000000 hostage 00000000000000100000110001000000 dimension 00000000000010101101101001100111 thicker 00000000000011110100001111000000 Broker 00100000000011100011101110110101 Fleischmann 00100000000000000000000000000000 chemists 00000000000000000000000000000000 Born 00100000000101110100010000110010 Byron 00100000000000001011111100001000 SciMed 01000000000000000000000000000000 Rockford 00100000000101101111101001101000 quest 00000000000111111111001111100111 due-process 00000000000000000000000000000000 Mansion 00100000000111011110010100000001 Anacomp 00100000000000000000000000000000 168 00000000000000000000000000000000 Harbors 00100000000000000010000001111001 satire 00000000001101111001110010100111 Books 00100000000111101111100101100011 worlds 00000000000111011111000100101111 Ca 00100000000111111111111100010010 housewares 00000000000011010011111010110000 directories 00000000000111100111101001100011 comforting 00000000001000011001010010010000 Nichols 00101111111101100110100010001000 patrols 00000000000111110001100110001001 zinc 00000000000110100100011010110000 Forster 00101111111101101100111000001000 2.875 00000000000000000000000000000000 Lonrho 00100000000011100101101100101000 rewarded 00000001011111010100010000110010 marketable 00000000000010001100111000101000 receptor 00000000000000000000000000000000 Immunex 00100000000010101010111100101000 frightening 00000000000001001011010010010000 tendering 00000000000110111001110001000000 Shattuck 00100000000000000000000000000000 Aldus 00100000000000000000000000000000 percentages 00000000000111100010100000100011 transferring 00000000000110000001111101000000 well-intentioned 00000000000000000000000000000000 peasant 00000000000000101000101000110000 runway 00000000000111101001111000000001 Berbera 00100000000000000000000000000000 justification 00000000000111111011011100111001 passionate 00000000000100000101000010010000 Cubans 00100000000011100101100110110011 Fidel 00101111111011101000101101110000 barges 00000000000000000000000000000000 Asman 00100000000000000000000000000000 tame 00000000000110100101110110110010 Were 00100000000000000000010100010010 Peasants 00100000000111100100111000110011 world-class 00000000000000000000000000000000 Ranch 00100000000111101100000100000001 academy 00000000000110101110110001010101 Landry 00101111000110101100000010001000 Aikman 00101111111101110001110001001000 301 00000000000000000000000000000000 Tomlin 00101111111010110000000010001000 bureaus 00000000000000011110000100100011 Everett 00101111111100110000000100001000 Lippens 00100000000000000000000000000000 Economy 00100000000111111111111001000101 Tana 00100000000000000000000000000000 ``... 00000000000000000000000000000000 Fridays 00100000000000000000000000000000 Argentine 00100000000000000110010100110000 UPS 01000000001111110011111010110000 consult 00000000000110101011011110110010 repayments 00000000000111111001001100000011 Concerto 00100000000101100010010100000001 Artists 00100000000000000000000111101001 Similar 00100000000000000000010000010000 overwhelmingly 00000000011000100001001001110010 budding 00000000000000000010011000010000 JSP 01000000000000000000000000000000 bribes 00000000000100101010000100000011 Studios 00100000000110100101110001100011 converter 00000000000000000000000000000000 Statistical 00100000000000000101000010110000 assign 00000000011011101111101110110010 winding 00000000010111100110100001000000 reformer 00000000000111111011011110110101 provoke 00000000100011101111101110110010 Churchill 00101111111101101000101010001000 Diana 00100000001000000001001000011000 Deltec 00100000000000000000000000000000 ferroelectric 00000000000000000000000000000000 toothpaste 00000000001101110011111010110000 unpredictable 00000000000011100001110100010000 Boris 00101111111000101010001000011000 vodka 00000000000111101110110000100001 Movieline 00100000000000000000000000000000 Lakes 00100000000001010110110100100001 Va.-based 00100000000000000000000000000000 guaranteeing 00000000000001010011011101000000 Victorian 00100000011001010000001000110000 Kurzweil 00100000000000000000000000000000 expedite 00000000000101000110111110110010 back-office 00000000000000000000000000000000 Westamerica 00100000000000000000000000000000 Heating 00100000000111111000011000101000 friend-of-the-court 00000000000000000000000000000000 Spokesmen 00100000000010101000000010110011 glamour 00000000000111101111100000100001 plentiful 00000000000111011011010010010000 bombed 00000000111011000101010000110010 Segundo 00100000000000000000000000000000 terrific 00000000001000001100011010010000 6.50 00000000000000000000000000000000 Brody 00101111111000000100000010001000 Goodrich 00100000011111000011000001001000 debt-laden 00000000000000000000000000000000 spilled 00000000010001101001001000110010 1959 00000000000000000000000000000000 reckons 00000000000000000000000000000000 incompetent 00000000000110111101000110010000 4:30 00000000000000000000000000000000 disgruntled 00000000000000001000101000110000 revoked 00000010100101010100010000110010 Alexandria 00100000000110110011101001101000 Ely 00101111111011000110000010001000 1.14 00000000000000000000000000000000 undemocratic 00000000000000000000000000000000 excise 00000000001010110000011100010000 Smurfit 00100000000000000000000000000000 Stalinist 00100000000000000000000000000000 c 00000000000000000000000000000000 parcel 00000000000111100010101011000001 walkout 00000000000110111101101010110111 transmissions 00000000000111111011111111001001 1.47 00000000000000000000000000000000 Jerell 00100000000000000000000000000000 1.95 00000000000000000000000000000000 unnecessarily 00000000000000000000000000000000 readings 00000000001001100010001000100011 year-before 00000000000000000000000000000000 Beam 00100000000110100011000110110111 frontier 00000000000000000110100100100001 Brown-Forman 01000000000000000000000000000000 Nick 00100000000010110001111000011000 Byrne 00101111111111111000100010001000 Novell 00100000000000000000000000000000 peninsula 00000000000111111101100010100101 Marin 00100000000000000000000000000000 high-flying 00000000000000000000000000000000 Coleco 00100000000001100111000100101000 connects 00000000000000000000000000000000 ramps 00000000000000000000000000000000 withdrawing 00000000000100111101100001000000 substitutes 00000000000111000011001110100011 World-wide 00100000000000000000000000000000 low-priced 00000000000000000000000000000000 motion-picture 00000000000000000000000000000000 personalities 00000000010111100111110101100011 battery-operated 00000000000000000000000000000000 Fantasy 00100000000111111010001100100001 Boies 00100000000000000000000000000000 Stronach 00100000000000000000000000000000 Firm 00100000000110101111111011110101 advertiser 00000000000000011001100000110101 2662.91 00000000000000000000000000000000 26.23 00000000000000000000000000000000 Aztar 00100000000000000000000000000000 immigrants 00000000000110101000111000110011 Nuveen 00101111111010011111111010101000 Bard 00100000000000000000000000000000 Koenig 00100000000000000000000000000000 570 00000000000000000000000000000000 Gruberova 00100000000000000000000000000000 convene 00000000000111100011011110110010 shareholding 00000000000001100111101001100111 Euro 00100000010100011000001000110000 granite 00000000000001101010101100100001 resurrect 00000000000000000000000000000000 2.62 00000000000000000000000000000000 apparatus 00000000000100110111101001100111 progressed 00000000000000111010110000110010 STOCK 01000000000111111111101101010000 124 00000000000000000000000000000000 Traviata 00100000000000000000000000000000 Adding 00100000000111111110111010000010 Ludcke 00101111111101111010110001001000 recoveries 00000000000111101011010000000011 Vista 00100000000111101101010100101000 aftershock 00000000000000000000000000000000 Normally 00100000000011100000001001110010 videotape 00000000001010001000001010110000 Threlkeld 00100000000000000000000000000000 guarded 00000000000000111001101001000000 waivers 00000000000110110011001100000011 incompetence 00000000000010100101110010100111 2659.22 00000000000000000000000000000000 Corazon 00101111111001000010001100011000 Paxus 00100000000000000000000000000000 Foote 00101111111110010111110000101000 FCB 01000000000000000000000000000000 bonanza 00000000000111100010111010110101 syndicator 00000000000011000111110000110101 plotting 00000000000000101010111000110010 Directors 00100000000000000100101010110011 heavy-duty 00000000000000000000000000000000 Cyanamid 00100000000111100010001010101000 Orr 00100000000000000000000000000000 defraud 00000000000111000011111110110010 valuations 00000000001101110010001000100011 Train 00100000000111101111100110110111 lofty 00000000000001100001000000010000 Lowell 00101111111000011000111000011000 crippled 00000000000100010001110000110010 idealistic 00000000000000000000000000000000 profit-sharing 00000000000000000000000000000000 Proposition 00100000000010000000000001000111 Leisure 00100000000000110011001010110000 Shale 00100000000000000000000000000000 47.6 00000000000000000000000000000000 CO 01001111111111111110110001001000 low-end 00000000000000000000000000000000 festival 00000000000111101001010100000001 shoe 00000000011100001011111010110000 Wars 00100000000111101101001111111001 F.W. 01000000000000000000000000000000 Recruit 00100000000101101010100110110111 signaling 00000000000111001001111010000010 Retired 00100000000111100110101001000000 Banker 00100000000110101111001110110101 Coldwell 00100000000001010001100010110000 Kriz 00100000000000000000000000000000 salmon 00000000000111110001101100100001 thoroughbred 00000000000001011000001000110000 70.5 00000000000000000000000000000000 flatly 00000000000011100001001001110010 HyperCard 01000000000000011110101101101000 resell 00000000000111001110001110110010 slightest 00000000000000000010100011010000 Dogs 00100000000000101111110101100011 Emeryville 00100000000000000000000000000000 Gilbert 00101111111000010000000100001000 14.75 00000000000000000000000000000000 2.38 00000000000000000000000000000000 Mickey 00100000000000100000001000011000 Meagher 00101111111111010101101001001000 Arps 00100000000001000101101001001000 Skadden 00100000000110111011110000101000 charm 00000000000111110110110010100111 vehemently 00000000101001100001001001110010 Farr 00101111111011100100111000001000 cartridge 00000000000000000000000000000000 minicomputer 00000000000000010101011010110000 Earthquake 00100000000000101111111001100111 pent-up 00000000000000000000000000000000 voice-activated 00000000000000000000000000000000 900,000 00000000000000000000000000000000 worded 00000000000000000110111001000000 265 00000000000000000000000000000000 imaginative 00000000000001110000110100010000 24.9 00000000000000000000000000000000 snow 00000000000000000110000000001000 Zipper 00100000000000000000000000000000 elusive 00000000000011110000110100010000 latitude 00000000000111100111110100100111 behest 00000000000111101101011000001111 cellular-phone 00000000000000000000000000000000 socially 00000000000010001000000001110010 13,000 00000000000000000000000000000000 overturn 00000000000001100011111110110010 quieted 00000000000000000000000000000000 5.50 00000000000000000000000000000000 bicycle 00000000000000100110001000100001 Amdahl 00100000000111011011011100101000 Initially 00100000100000000000001001110010 Butcher 00101111111111100011111010101000 Tariff 00100000000000000000100011110001 Ferruzzi 00100000000001000011011000101000 Beghin-Say 01000000000000000000000000000000 stating 00000000000010011001111010000010 annuity 00000000000001000100010010110000 anew 00000000011010100100010001110010 Biden 00101111111100101100011010001000 Wilmer 00100000000000000000000000000000 Les 00100000000111101110010000011000 Warehouse 00100000000010010001111010110000 resurgent 00000000000000000000000000000000 Solo 00100000000000010010101100100001 17.95 00000000000000000000000000000000 Year-earlier 00100000000000000000000000000000 consents 00000000000101101101000100100111 Dubinsky 00100000000000000000000000000000 Heinz 00100000000111010011000001001000 X-rays 00100000000000000000000000000000 DRAMs 01000000000111000101111001100011 Polls 00100000000000000110001000100011 outages 00000000000000000000000000000000 Montagu 00101111111100101011000001001000 Strauss 00101111111101111011000010001000 Recreation 00100000000000000110001101100001 videos 00000000000100101100110101100011 transforms 00000000000000000000000000000000 reactors 00000000000111111001100110001001 Planners 00100000000000000111010110110101 Guillermo 00100000000000000000000000000000 wash 00000000000111111111110100100001 directive 00000000000111100110110011100111 corps 00000000000000101011000100001001 Rules 00100000000000100000111100100011 likewise 00000000000111100110111011101000 suites 00000000000000001111100100001001 occupancy 00000000000000000000010110100111 expands 00000000001110000011000000010010 Drive 00100000000101110110010110110010 hitter 00000000000000000000000000000000 survives 00000100101110000011000000010010 GenCorp 01000000000111111111101100101000 ex-dividend 00000000000000000000000000000000 jazz 00000000000010010000001100100001 erupt 00000000101001111101010110110010 120-a-share 00000000000000000000000000000000 advocacy 00000000000001000011100000110101 generic-drug 00000000000000000000000000000000 stole 00000000000010111011000000010010 battling 00000000000110100001110101000000 tinkering 00000000000110100101100000110010 Bumpers 00101111111111110000111010001000 preferential 00000000000000001100011100010000 Packwood-Roth 01000000000000000000000000000000 Making 00100000000111111111111101000000 Funny 00100000000011110000011010010000 Katzenstein 00100000000000000000000000000000 grid 00000000000000000000000000000000 Bianchi 00100000000000000000000000000000 Letter 00100000000111111110001011100111 Desert 00100000000001001101110110101000 2200 00000000000000000000000000000000 Manager 00100000000000010010101000110101 Amira 00100000000000000000000000000000 pause 00000000000110111111101010110111 Lucy 00100000000000000000000000000000 Akio 00100000000000000000000000000000 expressions 00000000000111111101100100101111 Wrap 00100000110110010110010110110010 coin 00000000000000000011100000100001 reformulated 00000000000000000000000000000000 sandwiches 00000000001000011111110101100011 Stop 00100000000110101001110110110010 Mercedes-Benz 01000000000000000000000000000000 behave 00000000000011111101010110110010 investigative 00000000000000001101000010110000 pains 00000000000001011111001000100011 Go 00100000000111101011010110110010 trustees 00000000000110001110101010110011 Bias 00100000000111101100100010100111 1.8355 00000000000000000000000000000000 2653.28 00000000000000000000000000000000 stringent 00000000000001000110010010010000 protested 00000000000111000101110111000010 Bangkok 00100000000110110011111001101000 inflict 00000000000000000000000000000000 Tourism 00100000000111111011001101100001 Prix 00100000000000000000000000000000 terribly 00000000000010101100000001110010 first-ever 00000000000000000000000000000000 pistons 00000000000000000000000000000000 futuristic 00000000000000000000000000000000 Harvey 00101111111000010001010100001000 composer 00000000000111100010011110110101 displaying 00000000000111010101111101000000 EDS 01000000000000000000000000000000 outflow 00000000000111111110111101000111 energies 00000000000111011011111101100011 Litvack 00100000000000000000000000000000 memorable 00000000000000000111000010010000 conflicting 00000000000000001000000110010000 dishonesty 00000000000000000000000000000000 strained 00000000001010010001110000110010 safeguard 00000001110100111111110110110010 Kozinski 00100000000000000000000000000000 Czech 00100000000101001101011000110000 enjoined 00000000110011010100010000110010 Scandinavian 00100000000011000101110110101000 frenetic 00000000000000000000000000000000 rings 00000000000010011111000000010010 Agricultural 00100000000000001001010000110000 commonplace 00000000000111010100110110010000 Selling 00100000000111000001110001000000 Tramp 00100000000000000000000000000000 transmitted 00000000010000000001110000110010 Wolfgang 00100000000000000011100010011000 Harlan 00100000000000000000000000000000 masses 00000000000101101111111000001111 Kyle 00100000000000000000000000000000 transformation 00000000000111001011111000001111 East-West 01000000000000000000000000000000 Deep 00100000000000000110000000010000 Peace 00100000000000000000100111111001 beaches 00000000000111010111110101100011 7.85 00000000000000000000000000000000 pumps 00000000000111100101011111001001 Hence 00100000000111001101000001110010 mellow 00000000000000000000000000000000 Older 00100000000010000010101000110000 Americas 00100000000100110101110101000001 reassured 00000000010010101101110000110010 queen 00000000000100110001100100100001 Beale 00100000000000000000000000000000 mornings 00000000000000000000000000000000 meager 00000000000001101100100000010000 1.8353 00000000000000000000000000000000 Village 00100000000111001111000100000001 glut 00000000000111100111101010100111 41.60 00000000000000000000000000000000 populated 00000000000000101001101001000000 Diversified 00100000000000000100101001000000 141.52 00000000000000000000000000000000 1.6145 00000000000000000000000000000000 7.32 00000000000000000000000000000000 7.89 00000000000000000000000000000000 stripping 00000000000101111001001101000000 condemned 00000011101011000101010000110010 dropout 00000000000101100000010011000111 extraneous 00000000000000000000000000000000 reimbursed 00000010001011010100010000110010 enacting 00000000000110001011111101000000 giveaway 00000000000100001001101010100111 china 00000000000111110111111101101000 Environmentalists 00100000000110111000111000110011 10.9 00000000000000000000000000000000 defrauding 00000000000101100011011101000000 Furlett 00101111111101100010101010001000 murky 00000000000001000110011010010000 indoor 00000000011100010000001000110000 16.4 00000000000000000000000000000000 cable-television 00000000000000000000000000000000 21.2 00000000000000000000000000000000 stopgap 00000000000000000000000000000000 anti-crime 00000000000000000000000000000000 Staten 00100000000000000000000000000000 1.72 00000000000000000000000000000000 Figures 00100000000110101100100000100011 Feshbach 00100000000000000000000000000000 1.60 00000000000000000000000000000000 18.50 00000000000000000000000000000000 Masius 00101111111000100100010000101000 enviable 00000000000000001001110100010000 presided 00000000001111011110001000110010 Story 00100000000111100110111101100111 cash-strapped 00000000000000000000000000000000 NRC 01000000000000000000000000000000 Sidney 00101111111000010001110110011000 mileage 00000000000000001000111000111001 debating 00000000000111100110010101000000 marches 00000000000000000000000000000000 Amvest 00100000000000000000000000000000 Nutritional 00100000000011010001100000110000 jam 00000000000000010110110110110111 foolish 00000000000011001100011110010000 goodies 00000000000000000000000000000000 2014 00000000000000000000000000000000 Holland 00101111111101111000001000001000 7.01 00000000000000000000000000000000 0.10 00000000000000000000000000000000 aggravate 00000000000000000000000000000000 substituted 00000000001100010000010000110010 Predictably 00100001110100000000001001110010 rendering 00000000001111101010110001000000 firing 00000000001011110010110001000000 pare 00000000000010111010111110110010 approving 00000000000001001111111101000000 Kawasaki 00100000000101110010111000101000 silence 00000000000101101110111010100111 6,250,000 00000000000000000000000000000000 contamination 00000000000111101001100010100111 dawn 00000000000111101100010000101000 substances 00000000000111000110011111001001 solvents 00000000000000000000000000000000 reluctantly 00000000001101000001001001110010 freer 00000000000001000110101001000000 intervening 00000000000110101111000001000000 stubbornly 00000000001001100001001001110010 Barnhardt 00100000000000000000000000000000 kicker 00000000000000000000000000000000 Burroughs 00100000000110010000111100101000 million-share 00000000000000000000000000000000 Selkin 00100000000000000000000000000000 ambivalent 00000000000001011111110000110010 kidnapping 00000000000111101011101101001111 2.04 00000000000000000000000000000000 Lt. 00100000000000000000000000000000 countered 00000000010111110110010000110010 chew 00000000111010010110010110110010 liberty 00000000000111111100100100100001 height 00000000000100011111111000001111 wise 00000000001100000100011010010000 accrue 00000000000110010011001110110010 laugh 00000000000100110101010110110010 statue 00000000000110111101100101100111 disguised 00000000001000000010110000110010 Isabella 00100000000000000000000000000000 Claudio 00100000000000000000000000000000 productions 00000000000000001011111011101001 surpass 00000000000101010110001110110010 referendum 00000000000110011111001011100111 references 00000000000101111111001000100011 3.52 00000000000000000000000000000000 pessimism 00000000000101110010111010100111 17.2 00000000000000000000000000000000 2613.73 00000000000000000000000000000000 Inside 00100000000100110000000000001010 sparking 00000000000001001001001101000000 whereby 00000000101010010000000000001010 Gallup 00100000000000111000111000110000 43.5 00000000000000000000000000000000 Paying 00100000000111000110100101000000 stumble 00000011010101111101010110110010 Mitsukoshi 00100000000000000000000000000000 locks 00000000001000011111000000010010 uproar 00000000001110000111111001100111 expiring 00000000000000001100010100110010 WHO'S 01000000000000000000000000000000 Asahi 00100000000101101001111000101000 Aska 00100000000000000000000000000000 extortion 00000000000111010011100010100111 spared 00000000011001010100010000110010 buzz 00000000000000000000000000000000 18.4 00000000000000000000000000000000 unsold 00000000000010000110101001000000 cocktail 00000000000001011010000000100001 Guinea 00100000000001101001011110000010 Weirton 00100000000000000000000000000000 Mass.-based 00100000000000000000000000000000 servants 00000000000111110011110000100011 prey 00000000000101110000001100100111 conceal 00000000000101100011111110110010 siphoned 00000000000000000000000000000000 bureaucrat 00000000000111100001010010110101 colonial 00000000000000100100100100100001 morality 00000000000111011111010010100111 supervising 00000000001011111011011101000000 modernized 00000000000000000000000000000000 WEFA 01000000000000000000000000000000 BethForge 01000000000000000000000000000000 Leigh-Pemberton 01000000000000000000000000000000 overstate 00000000000000000000000000000000 Continued 00100000000000001000111000110010 underline 00000000000000000000000000000000 Influenced 00100000001001000001110000110010 pollen 00000000000000000000000000000000 Racketeer 00100000001111001111001001110010 presage 00000000000000000000000000000000 horn 00001111111101101111111010101000 Francois 00101111111001000010101100011000 longing 00000000000000000000000000000000 Shipbuilding 00100000000000001011011010110000 Schroders 00100000000000000000000000000000 Increasingly 00100000000000010000000001110010 Volkswagen 00100000000111100110111100101000 Prizm 00100000000000000000000000000000 explicitly 00000000000001000001001001110010 AS 01000000000000000000000001101010 Gasoline 00100000000000001001101110110000 casts 00000111110010000011000000010010 Woo 00101111111011001011110110110010 southwest 00000000000001100111110110101000 overwhelmed 00000000000110010001110000110010 Flying 00100000001001001110100001000000 Keep 00100000000111111101111110110010 Happy 00100000000111000111110000110010 Use 00100000000111110111110110110010 safely 00000000100101000000010001110010 AGIP 01000000000000000000000000000000 low-sulfur 00000000000000000000000000000000 boasted 00000000000101110111110111000010 Above 00100000000000011001000000001010 governmental 00000000000011000101000000110000 math 00000000000011011111001101100001 lecture 00000000000110011011001011100111 late-night 00000000000000000000000000000000 prosecuting 00000000001111111011011101000000 purely 00000000000111011000000001110010 reassessment 00000000000000000000000000000000 brightest 00000000000011110001010011010000 12.45 00000000000000000000000000000000 defenders 00000000000111000010000010110011 stabbed 00000000000000000000000000000000 disparate 00000000000011010000010000010000 Ganes 00100000000000000000000000000000 immunity 00000000000100101111110100100111 Kinder-Care 01000000000000000000000000000000 curriculum 00000000000111100010011000100001 promoter 00000000000111100101011110110101 robberies 00000000000000000000000000000000 selecting 00000000000101100111111101000000 inconsistent 00000000000110111101100000110010 proudly 00000000000111000001001001110010 herbicide 00000000000110101111100000100001 arrests 00000000000111101000101000100011 vault 00000000000101110010100110110111 4.50 00000000000000000000000000000000 boats 00000000000111011100101001100011 rigs 00000000000111100010110100100011 hunger 00000000000100001111110010100111 coaster 00000000010010000101001111001001 soup 00000000001011010001110000101001 prod 00000000001101010111111110110010 Andersen 00101111111111111011001000110000 edging 00000000000011100011100001000000 dunes 00000000000000000000000000000000 drilled 00000000001101100000010000110010 Sharpshooter 00100000000000000000000000000000 homework 00000000000111001101110010100111 Unice 00100000000000000000000000000000 1989-90 00000000000000000000000000000000 biological 00000000000010001010000000110000 repurchased 00000000000110100100010000110010 14.3 00000000000000000000000000000000 Amicable 00100000001010011000110100010000 year-on-year 00000000000000000000000000000000 11.9 00000000000000000000000000000000 copied 00000110001011010100010000110010 cemetery 00000000000111111100111000000001 Governor 00100000000011101110010000110101 motives 00000000000111110111111101100011 rays 00000000001101101001111111001001 Lomb 00100000000000000000000000000000 8.28 00000000000000000000000000000000 cautions 00000000000011111011010111000010 Hibor 00100000000000000000000000000000 5.80 00000000000000000000000000000000 141.70 00000000000000000000000000000000 Naval 00100000000000001011110000110000 responsibly 00000000000000000000000000000000 minimizing 00000000000011110111011101000000 offense 00000000000111101000110001100111 relaxation 00000000000111111010101101001111 Step 00100000000111111110011000110111 Danish 00100000000000010110100100110000 blunted 00000000000000000000000000000000 originated 00000001001001001100010000110010 guidance 00000000000111101111110010111001 Key 00100000000000001000011000010000 parked 00000011001001001100010000110010 reinstatement 00000000000111111011101101001111 garner 00000000000111110000100110110111 unexplained 00000000000000000000000000000000 286 00000000000000000000000000000000 plateau 00000000000111010000101101100111 Analysis 00100000000111100110111001100111 oxygen 00000000000111000001110000100001 pressuring 00000000000010100100001101000000 pollutants 00000000000110100111100110001001 accompanies 00000000000111011001000000010010 sanguine 00000000000010111111110000110010 Milpitas 00100000000110110100101001101000 coaching 00000000000000000000000000000000 Schools 00100000000111101100110001100011 252 00000000000000000000000000000000 Pattison 00100000000000000000000000000000 smelter 00000000000111101011110010001001 ABB 01000000000000000000000000000000 121 00000000000000000000000000000000 tempting 00000000000110010101010010010000 nears 00000010010110000011000000010010 spell 00000000001100011110010110110010 Nikon 00100000000000000000000000000000 15.2 00000000000000000000000000000000 DFC 01000000000000000000000000000000 80%-owned 00000000000000000000000000000000 Mulroney 00101111111100100001110010001000 Meet 00100000000111110111011110110010 ardent 00000000000100011000110100010000 2002 00000000000000000000000000000000 U.S.-based 01000000000000000000000000000000 Supply 00100000000000010000111110110111 moratorium 00000000000111100011001011100111 fetal 00000000000000011110110000100001 Kerr-McGee 01000000000000000000000000000000 slowest 00000000000011101010000011010000 2.30 00000000000000000000000000000000 Huntington 00100000000110111010011010101000 embroiled 00000000001001011110010000110010 Township 00100000000000000110010100000001 Ned 00101111111010010100001000011000 nominated 00000000000101111010010000110010 Live 00100000001111011101010110110010 Itel 00100000000111011000111100101000 hostages 00000000000111100010100000110011 Broadcast 00100000000000010100001010110000 uncharted 00000000000000000000000000000000 Myron 00100000000000000000000000000000 Egan 00100000000000000000000000000000 SAS 01000000000000000000000000000000 dean 00001111111100011111101000101000 bankruptcies 00000000000111101001111001100011 Down 00100000000000000001001100110010 conserve 00000000000101101111001110110010 corrections 00000000000111111100101101100001 Unit 00100000000111101111111001110101 unregulated 00000000000101001000101001000000 MMS 01000000000000000000000000000000 nonfinancial 00000000000000000010001110110000 1.39 00000000000000000000000000000000 3.23 00000000000000000000000000000000 Jennison 00100000000000000000000000000000 beneficiary 00000000000111111010100101100111 Wildlife 00100000000010010001100000110000 Winnick 00100000000000000000000000000000 Investigators 00100000000000000001010010110011 disposing 00000000000111110110111000101111 Tonkin 00100000000000000000000000000000 speedy 00000000000010010101000000010000 resumption 00000000000111111110010110111111 kidnapped 00000000110001110100010000110010 regards 00000000000001100011000000010010 handicap 00000000000101100101111010110111 near-record 00000000000000000000000000000000 nine-member 00000000000000000000000000000000 7.51 00000000000000000000000000000000 reassigned 00000000001000011000110000110010 phases 00000000000110110111000100101111 Maguire 00100000000000000000000000000000 foreign-policy 00000000000000000000000000000000 pledges 00000000000001111111001000100011 writings 00000000000111001001111101100011 disability 00000000000000000100101011100001 Petrochemical 00100000000010100000011010110000 USI 01000000000000000000000000000000 funnel 00000000000001101111001110110010 corporate-finance 00000000000000000000000000000000 grandiose 00000000000000000000000000000000 meltdown 00000000000111101101010001100111 9.80 00000000000000000000000000000000 infringe 00000000001101010110110110110010 Baseball 00100000000000000000111100100001 mailed 00000000000101100000010000110010 groundwork 00000000000111111101011100111001 understandable 00000000000111000111110110010000 reveals 00000000000011010011000000010010 whack 00000000000000000000000000000000 gender 00000000000001010110100101010001 Era 00100000000111111111011001100111 remarkably 00000000000100101100000001110010 Shaffer 00101111101100101100000010001000 obsolete 00000000000001000100000110010000 Base 00100000000111100001110011000111 authoritarian 00000000000000100101011000110000 reinforcing 00000000000010110101011101000000 Someone 00100000000000001010010001110010 liberalized 00000000000111101010111001000000 Garry 00100000000000000000000000000000 blew 00000000000101001001001000110010 daunting 00000000000001110001000010010000 second-biggest 00000000000000000000000000000000 Grasso 00101111110110101100000010001000 balk 00000000000110010101010110110010 panicky 00000000000000000000000000000000 harbors 00000000000000000010000001111001 leaking 00000000001110101110100001000000 co-owner 00000000000000000000000000000000 Reagan-era 00100000000000000000000000000000 Casey 00101111111100100101100010001000 14-year-old 00000000000000000000000000000000 misdeeds 00000000000110110111100010100111 family-planning 00000000000000000000000000000000 supermarkets 00000000000000010011001010110000 stamping 00000000001000100000011010110000 redesigned 00000000000001101010001001000000 smell 00000000000001010111110110110010 Estee 00100000000000000000000000000000 JUDGE 01000000001000000000001100001000 Palm 00100000000000011110011010101000 disdain 00000000000111111010011100111001 counters 00000000000001100011010111000010 personal-care 00000000000000000000000000000000 Perry 00101111111110100001000100001000 championship 00000000000000011010001100100001 commuter 00000000000000010100010000110000 wreckage 00000000000000000000000000000000 convened 00000000001100111001010000110010 Prague 00100000000001000111111001101000 gatherings 00000000001110100010001000100011 Bromwich 00100000000000000000000000000000 narcotics 00000000000000110010111010110000 Cooper 00101111111100101011110000001000 Rubber 00101111111111011011110001001000 kid 00000000000111100001110010110101 third-party 00000000000000000000000000000000 Yamamoto 00100000000000000000000000000000 injected 00000000100001001100010000110010 Nadir 00100000000000000000000000000000 map 00000000000111101100100101100111 Revenues 00100000000111101100001100000011 objection 00000000000110010111111100100111 consultation 00000000000111011010110000100111 Baird 00101111111100100100011000001000 Cash 00100000000011101111110110110001 fiction 00000000000000101111110010100111 Tell 00100000000111111010100110110010 28.4 00000000000000000000000000000000 belonging 00000000001111100000111000110010 Rising 00100000000000000010010001000000 tongue 00000000000111001100110000000001 Greens 00100000000111111011001110110011 la-la 00000000000000000000000000000000 collapses 00000000000000000000000000000000 timid 00000000010111100101010010010000 Electron 00101111111111101100111110000010 majors 00000000000111111010111110110011 Thermo 00101111111000001100110101001000 whipsawed 00000000000000000000000000000000 equals 00000000000000001010011010000010 rocky 00000000000010000010001000110000 wonders 00000000000111010000110111000010 Milunovich 00100000000000000000000000000000 cheer 00000000001100010110010110110010 7.03 00000000000000000000000000000000 hamper 00000000000011101010111110110010 C.J. 01000000000000000000000000000000 fastball 00000000000000000000000000000000 Rubel 00100000000000000000000000000000 raid 00000000000111011101111000110111 ambiguous 00000000000010101101001110010000 wrangling 00000000000100010010111010100111 1.8415 00000000000000000000000000000000 142.85 00000000000000000000000000000000 cassette 00000000000010111000001010110000 redeeming 00000000000101101011011101000000 redesign 00000000000111101101011110110111 Natick 00100000000000000000000000000000 Twelve 00100000000110101111000011000000 flattened 00000000000000000000000000000000 triumph 00000000000111111101100101100111 gearing 00000000000111011110100001000000 282 00000000000000000000000000000000 puzzled 00000000000110101101110000110010 shutdowns 00000000000001001000000010100111 crafted 00000111010111010100010000110010 megawatts 00000000000000000000110100001011 turbine 00000000000000000100100001100001 stripes 00000000000100101101111101100011 minors 00000000000000000000000000000000 liberation 00000000000000000110110100100001 overthrow 00000001010110111111110110110010 township 00000000000000000110010100000001 moderation 00000000000100101111111010100111 Nationale 00101111111000100000010101001000 chocolate 00000000011000001011111010110000 frantic 00000000010111000001000000010000 Wilshire 00100000000000010110100010100101 vividly 00000001010101000000010001110010 visually 00000000000000000000000000000000 belt 00000000000000010101110001111001 regains 00000000000000000000000000000000 Volcker 00101111111100101110110010001000 realizes 00000000111011100011000000010010 chlorine 00000000000000000000000000000000 salt 00000000001111110101100110101000 middle-aged 00000000000000000000000000000000 20-stock 00000000000000000000000000000000 fertilizers 00000000000111101100111001100011 NV 01000000000000000000000000000000 monster 00000000000111100101010000000001 arbitrager 00000000000111101011100000110101 prose 00000000000101101100110000000001 earnest 00000000000110000011111001101000 backgrounds 00000000000111100000111101100011 commander 00000000000101111111110000110101 subscriptions 00000000000111110000101111100011 shells 00000000000111111111101001100011 12,000 00000000000000000000000000000000 alien 00000000000100001001001110010000 Hells 00100000000000000000000000000000 pig 00000000000010110000101100100001 artillery 00000000000000101010001010110000 Automatic 00100000000000001000101010110000 feud 00000000000100101110110000100111 Suburban 00100000000000010000001000110000 44.3 00000000000000000000000000000000 California-based 00100000000000000000000000000000 942 00000000000000000000000000000000 BioSciences 01000000000000000000000000000000 broadcasters 00000000000110110110111000110011 accidents 00000000000111100000100010100111 shirt 00000000000110101110111000000001 traditions 00000000000111101101111101100011 loud 00000000000110110000011010010000 coats 00000000001100111010000000001000 conditioned 00000000000110111100100000110010 million-plus 00000000000000000000000000000000 288 00000000000000000000000000000000 originations 00000000000111110001110001010101 consequently 00000000000111111000101011101000 perverse 00000000011000000101010010010000 tending 00000000000001101100110000110010 guessed 00000000000110100000110111000010 documentary 00000000000111001110101000100001 490 00000000000000000000000000000000 exonerated 00000000000000000000000000000000 roofs 00000000000000000000000000000000 48-year-old 00000000000000000000000000000000 Baring 00100000000011000111011000101000 unduly 00000000010000101000000001110010 systematic 00000000000101000101000000010000 Mushkat 00100000000000000000000000000000 burgeoning 00000000000001000000100000010000 paradox 00000000000111001001111101100111 spotty 00000000000001000101110110010000 hard-hit 00000000000000000000000000000000 unscathed 00000000000000000000000000000000 wad 00000000000000000000000000000000 unloaded 00000000001111000000010000110010 roof 00000000000111101110111000000001 lap 00000000000111110101010000000001 phasing 00000000000011101110100001000000 Small-business 00100000000000000000000000000000 inundated 00000000000000000000000000000000 Bombay 00100000000000100111111001101000 Delhi 00100000000001001001011110000010 folk 00000000000000010100001100100001 treacherous 00000000000010010101010010010000 cereals 00000000000101101100111001100011 Driscoll 00100000000000000000000000000000 resumes 00000000001100001111000000010010 Bakes 00100000000000000000000000000000 15-year 00000000000000000000000000000000 Blum 00101111111101101010000010001000 guilt 00000000000010100110100010100111 51-year-old 00000000000000000000000000000000 nickname 00000000000100101101111101100111 Wine 00100000000100010011111010110000 solidify 00000000000000000000000000000000 turbines 00000000000110101101010001001001 161 00000000000000000000000000000000 pacts 00000000000101110000010000100111 exceedingly 00000000000001101100000001110010 0.88 00000000000000000000000000000000 halting 00000000000010101011011101000000 Completion 00100000000111101111011101001111 resolving 00000000000111000011011101000000 territories 00000000000000111100101111100011 protesting 00000000000010000101110101000000 detained 00000000110101110100010000110010 Comments 00100000000111111111101000100011 B.V. 01000000000000000000000000000000 Challenge 00100000000111111011111010110111 Remics 00100000000100111010111001100011 Fiscal 00100000000000000000110001100010 snag 00000000000111000000111010110101 complied 00000000101011110110010000110010 8.27 00000000000000000000000000000000 Maier 00101111111100010000000010001000 observer 00000000000001000101011001100111 staunchly 00000000000000000000000000000000 10th 00000000000000000000000000000000 west 00000000000111110000101110101000 waved 00000000001010011001001000110010 jumps 00000000000111101010111110000011 GDP 01000000000000000000000000000000 Pipe 00100000000110000001111010110000 Schaefer 00101111111110000110000010001000 Sound 00100000000110101110110110110111 Stealth 00100000000101101010001010110000 10-a-share 00000000000000000000000000000000 knees 00000000000111001000111101100011 Guffey 00100000000000000000000000000000 organized-crime 00000000000000000000000000000000 Aaron 00101111111011011001110000011000 big-ticket 00000000000000000000000000000000 Isaac 00101111111111101000000100001000 Official 00100000000000000000000000010101 Hallwood 00100000000001000101010100101000 Jacques 00101111111001000110000010011000 doorstep 00000000000000000000000000000000 Shelby 00101111111011011011010100001000 Donnelley 00100000000010101011000001001000 Marriott 00100000000100000111111100101000 Basham 00100000000000000000000000000000 UBS-Phillips 01000000000000000000000000000000 whopping 00000000000111100111111100010000 122 00000000000000000000000000000000 1.93 00000000000000000000000000000000 Eggs 00100000001010101111110101100011 witnessing 00000000000111110111000101000000 implicated 00000000111111110100010000110010 mice 00000000000111111001110101100011 biologists 00000000000110001010000010110011 polyps 00000000000111110001011100110011 2.53 00000000000000000000000000000000 Knudson 00100000000000000000000000000000 tragic 00000000000000001100011010010000 births 00000000000111110110101001100011 suppressor 00000000000000000000000000000000 rivalry 00000000000111011100110000100111 discoveries 00000000000111000010011000100011 640 00000000000000000000000000000000 60-day 00000000000000000000000000000000 Cetus 00100000000111110110111100101000 8.10 00000000000000000000000000000000 Tyre 00100000000000000000000000000000 endorsing 00000000000111000101111101000000 Felipe 00100000000000000000000000000000 Retin-A 01000000000000000000000000000000 skittishness 00000000000000000000000000000000 Laughlin 00100000000000000000000000000000 N 00100000000000000000000000000000 amassed 00000000000110001001010000110010 basing 00000000000011100001011101000000 heated 00000000000001110000000000010000 donate 00000000000010101111001110110010 stirred 00000000001011100111010000110010 opportunistic 00000000000111100100110100010000 fret 00000000000000111001100110110010 touching 00000000010011100110100001000000 Wales 00100000000101111010010101101000 bailouts 00000000000000000000000000000000 abnormal 00000000000000000011010100010000 ribbons 00000000000000000000000000000000 Woodbridge 00100000000000000000000000000000 answering 00000000000110010010110001000000 closet 00000000000111110101110000000001 Months 00100000000000000000000001111011 transit 00000000000001000110010010110000 guided 00000000011101000001110000110010 cartoons 00000000000111001101110101100011 happily 00000001101100000000010001110010 IFAR 01000000000000000000000000000000 burglary 00000000000000000000000000000000 anxieties 00000000000111111110110010101111 foundering 00000000000000000000000000000000 Itoh 00101111111100111100111000001000 Travis 00100000000000000000000000000000 down-payment 00000000000000000000000000000000 18.1 00000000000000000000000000000000 buckle 00000000000000000000000000000000 Wharton 00100000000111010111111000101000 imagined 00000000000110110100110111000010 understated 00000000000000110110111001000000 Reproductive 00100000000000000000000000000000 time-consuming 00000000000000000000000000000000 demographic 00000000000001011010000000110000 proprietary 00000000000010000100101010110000 setup 00000000000000000000000000000000 presentations 00000000000001011001101000100011 niches 00000000000111101110101010100011 weeklong 00000000000000111010010000010000 interest-bearing 00000000000000000000000000000000 Dodgers 00100000000011110000101100100101 Norwest 00100000000111111110111100101000 30-second 00000000000000000000000000000000 Automated 00100000000000101000101010110000 Sale 00100000000111111111111001001111 boutique 00000000000110101001100100100001 162 00000000000000000000000000000000 mold 00000000000111111101001010110111 clear-cut 00000000000000000000000000000000 undertake 00000000010011101111101110110010 realism 00000000000110111011110010100111 Deputies 00100000000111100110101010110011 solvent 00000000000111001000101001000000 revealing 00000000000111100001110101000000 societies 00000000000000101010000100100011 prop 00000000000110110110010110110010 collector 00000000000011010010011110110101 supervisory 00000000000000000001100011100001 mint 00000000000111101111001000100101 3:15 00000000000000000000000000000000 12-point 00000000000000000000000000000000 aggravated 00000000101111010001110000110010 directing 00000000000010000001011101000000 caring 00000000000101011110110000110010 leaked 00000000000001000001001000110010 Quick 00100000000001100000010000010000 annoyed 00000000000000101101110000110010 entries 00000000000000111001110101100011 imbalance 00000000000110101100100000100111 Properties 00100000000110101101110000001001 Customs 00100000000111101011110000110000 wreck 00000001010010111111110110110010 faithful 00000000000011010100011010010000 administered 00000000000011001001110000110010 juries 00000000000111101011010010110011 enhances 00000110101110000011000000010010 murders 00000000000010110111110101100011 varied 00000000000000010101101001000000 cruel 00000000000010100110011010010000 churches 00000000000111000110110001100011 misinterpreted 00000000000000000000000000000000 ringer 00000000000000000000000000000000 contradictory 00000000000000110100000110010000 Anglia 00100000000000000000000000000000 Hines 00101111111000000101001000001000 Open 00100000000111101101110110110010 paints 00000000111100001111000000010010 2.60 00000000000000000000000000000000 medicines 00000000000110000110111001100011 antibiotic 00000000000001000111111001100111 Nashville 00100000000110011101101001101000 saves 00001100000110000011000000010010 subsidizing 00000000000000000101011101000000 reforming 00000000000100110101011101000000 Syndicate 00100000000111101011000010000001 dialing 00000000000000000000000000000000 vengeance 00000000000111111111111010011111 graduate 00000000000101100000010001000001 hires 00000000011100001111000000010010 Student 00100000000000010010111000100001 YOU 01000000000000000001000111110010 17,000 00000000000000000000000000000000 survivors 00000000000111100110100000110011 burns 00001111111100100111001000001000 anonymity 00000000000100000101011110100001 dwarf 00000000000001001011110110110010 skip 00000000001110101110101110110010 shrinkage 00000000000110101001101010100111 plausible 00000000000000101011010010010000 bouncing 00000000000111010011100001000000 demon 00000000000000000000000000000000 vicar 00000000000000000000000000000000 skeptics 00000000000000001010000010110011 Somerset 00100000001001011011101001101000 na 00000000000000000000000000000000 gon 00000000000000000000000000000000 exit 00000000000010111011001100100111 roommate 00000000000000000000000000000000 Unemployment 00100000000010100001011100000111 gimmicks 00000000000111100010011100100011 Clayton 00101111111011011001001100011000 Planning 00100000000111101100110001000000 36.6 00000000000000000000000000000000 breadth 00000000000110111011111000001111 all-out 00000000000000000000000000000000 contraction 00000000000110101101101010100111 post-World 01000000000000000000000000000000 hooked 00000000001101001100010000110010 adept 00000000000111001101110100110010 heighten 00000000001010000110111110110010 beside 00000000011010100001000000001010 5.25 00000000000000000000000000000000 21.1 00000000000000000000000000000000 28.7 00000000000000000000000000000000 Marwick 00101111111111101000000101001000 Peat 00101111111000010101101000101000 offshoot 00000000000110001100111001100111 pushes 00000110100010000011000000010010 conduits 00000000000000000000000000000000 Perritt 00100000000000000000000000000000 Stockholders 00100000000111101111111010110011 behaving 00000000000000000000000000000000 Philadelphia-based 00100000000000000000000000000000 tad 00000000000000000000000000000000 139 00000000000000000000000000000000 Chandross 00100000000000000000000000000000 Donovan 00101111111001010000100010001000 harbinger 00000000000111111111100101111111 microphone 00000000000111001010111000000001 80-point 00000000000000000000000000000000 backfire 00000000001001111101010110110010 Export-Import 01000000000000000000000000000000 growth-stock 00000000000000000000000000000000 7.94 00000000000000000000000000000000 buyout 00000000000000000101001111001111 8.01 00000000000000000000000000000000 176 00000000000000000000000000000000 Bache 00100000000000011011000001001000 servicing 00000000001110000010110001000000 Dame 00100111111000010010001010101000 Verdi 00100000000000000000000000000000 poet 00000000000111101010011110110101 strains 00000000000011111111001000100011 Spring 00100000000111111101110000010111 unsettling 00000000000000000101001110010000 Alden 00100000000000000000000000000000 Monroe 00100000000000001000000100001000 90,000 00000000000000000000000000000000 Carnegie 00100000000001010000011100001000 Parkway 00100000000000000000000000000000 Homestake 00100000000110100011000100101000 prominently 00000001101000000000010001110010 Tenn 00100000000000000000000000000000 counterrevolutionary 00000000000000000000000000000000 rebellion 00000000000101100111101001100111 189 00000000000000000000000000000000 afterwards 00000000000000000000000000000000 Side 00100000000111100111001001100111 high-level 00000000000000000000000000000000 Newton 00101111111011001101001000001000 infusion 00000000000111110101101010001111 Premier 00100000000011000010100100100001 scrutinized 00000000011000000001110000110010 cherished 00000000000010010001000010010000 erratic 00000000000011100000110100010000 luncheon 00000000000000000110110001000111 repercussions 00000000000111111101001110001111 WDB 01000000000000000000000000000000 monetarist 00000000000000000000000000000000 stagflation 00000000000000000000000000000000 negatives 00000000000111111110110101100011 imply 00000000000110011100100110110010 Palestinians 00100000000010110000011100110011 inept 00000000000000000000000000000000 myths 00000000000110111111110101100011 tail 00000000000010101010111000000001 experiences 00000000000111101010111101100011 Machiguenga 00100000000000000000000000000000 jungle 00000000000111111001111000000001 suspensions 00000000000000000000000000000000 Triton 00100000000001001101010100101000 primitive 00000000000010011001000010010000 destiny 00000000000110101011111101100011 Helen 00100000000001001100111000011000 hesitation 00000000000000000000000000000000 gesture 00000000000111110101111101100111 two-week 00000000000000000000000000000000 booking 00000000000110111010110001000000 packs 00000001100111001111000000010010 smile 00000000000111111101101010110111 Georgetown 00100000000000010111111000101000 reminding 00000000000000111001001101000000 swallowed 00000010011001001100010000110010 listened 00000000000101101011101000110010 exposing 00000000000111010001001101000000 7,500 00000000000000000000000000000000 affiliation 00000000000011111101110000100111 anonymous 00000000000000010101101000110000 Kloves 00100000000000000000000000000000 Marion 00101111111100000001110000001000 Sanwa 00100000000011101001111000101000 autonomy 00000000000111011011110100100111 Deborah 00100000000000010010110110011000 unstable 00000000000010010001110100010000 Simonds-Gooding 01000000000000000000000000000000 data-storage 00000000000000000000000000000000 emphasizing 00000000000000001111111101000000 bicycles 00000000000111100010111001100011 five-day 00000000000000000000000000000000 Guide 00100000000111110001111010110111 Lybrand 00101111111110110111110001001000 wait-and-see 00000000000000000000000000000000 thinner 00000000000000000000000000000000 insulting 00000000000000000000000000000000 marching 00000000000110100111000001000000 shaped 00000000001001001100010000110010 Antarctica 00100000000000000000000000000000 11.6 00000000000000000000000000000000 scrutinizing 00000000000010110010010101000000 amazement 00000000000000000000000000000000 validity 00000000000111111010011000001111 ploy 00000000000111100100111101100111 emphasizes 00000000101011100011000000010010 derivatives 00000000000111111010100110001001 favorites 00000000000110111111111101100011 Twenty-First 01000000000000000000000000000000 Stovall 00100000000000000000000000000000 Granville 00100000000000000000000000000000 cart 00000000000111101101111000000001 thrive 00000010010101111101010110110010 subminimum 00000000000000000000000000000000 Newmark 00100000000000000000000000000000 Standards 00100000000100100110111100100011 oversold 00000000000110011110110110010000 Blunt 00100000000101000101110110110010 29.4 00000000000000000000000000000000 3.19 00000000000000000000000000000000 pinpoint 00000000000111100100011110110010 fold 00000000000101001011110110110010 prowess 00000000000111010111101001100111 courage 00000000000111000111110100100111 fine-tuning 00000000000000000000000000000000 factions 00000000000011000011000100100011 ceased 00000000000000111010001000110010 Soweto 00100000000000000000000000000000 right-wing 00000000000000000000000000000000 Kathryn 00100000000000000000000000000000 appropriators 00000000000000000000000000000000 Population 00100000000111101010011000100001 21.4 00000000000000000000000000000000 Sept 00100000000000000000000000000000 Bolivia 00100000000111010010111101101000 weary 00000000010101101011110000110010 stumbling 00000000000001010000110001000000 waived 00000010011001010100010000110010 blending 00000000000000000000000000000000 17.3 00000000000000000000000000000000 Petroleos 00101111111111011100101000101000 43,000 00000000000000000000000000000000 openings 00000000000000001000000001100011 cast-iron 00000000000000000000000000000000 oddly 00000000110101101000000001110010 receivership 00000000000111110000110101010111 solicited 00000000000010101001010000110010 funneled 00000000010111000000010000110010 470 00000000000000000000000000000000 zoning 00000000000000000101100011100001 realty 00000000000010001010010010110000 prisoners 00000000000111101111000100100011 attendant 00000000000000000101111001110011 famed 00000000000000000000000000000000 Voyager 00100000000111000100100000100001 incorporates 00000000000000000000000000000000 manpower 00000000000110111101011100101000 faults 00000001010101001111000000010010 mentally 00000000000001100010001000110000 lighting 00000000000011011010010010110000 plaid 00000000000000000000000000000000 yanked 00000000000000000000000000000000 chest 00000000000100000010010000000001 elementary 00000000000001111101000100110000 necessities 00000000000000000000000000000000 broadest 00000000000000001100010011010000 Fischer 00101111111001101110100010001000 foremost 00000000000111101110010011010000 resin 00000000000000000000000000000000 severity 00000000000111111110011000001111 R.D. 01000000000000000000000000000000 quicker 00000000000001001001001111000000 Schneider 00101111111100101101001000001000 self-serving 00000000000000000000000000000000 greed 00000000000111001111110010100111 Regal 00100000000001000100000001000111 taboo 00000000000000000000000000000000 20.125 00000000000000000000000000000000 62.875 00000000000000000000000000000000 Bancorp. 00100000000000000000000000000000 Deseret 00100000000000000000000000000000 leaping 00000000000111111010010001000000 atop 00000000000000111101000000001010 treatments 00000000000110100000110100100011 embraces 00000000000000000000000000000000 brakes 00000000000111110101110101100011 impaired 00000000000100000001110000110010 11.1 00000000000000000000000000000000 viewing 00000000010111100010110001000000 dissemination 00000000000000000000000000000000 languages 00000000000000010100110001100011 patch 00000000000010001011110100100001 VOA 01000000000000000000000000000000 solving 00000000000110001101011101000000 166 00000000000000000000000000000000 requesting 00000000000000000101110101000000 deepening 00000000000000111101010001000000 124,875 00000000000000000000000000000000 trivial 00000000001100010101010010010000 restraining 00000000001000000011010101010000 lifts 00000100010110000011000000010010 reshaping 00000000000000000000000000000000 410 00000000000000000000000000000000 skill 00000000000111111011010000000001 Summer 00100000000111111111110000010111 Pepperidge 00100000000000000000000000000000 Jesse 00101111111011001010010000011000 applaud 00000000000111110111100110110010 teen-age 00000000000000000000000000000000 7.80 00000000000000000000000000000000 7.55 00000000000000000000000000000000 8.48 00000000000000000000000000000000 1.88 00000000000000000000000000000000 draining 00000000000001101110100001000000 142 00000000000000000000000000000000 midmorning 00000000000111111101011001101000 recruited 00000001000101000101010000110010 assessments 00000000000111100001010000100011 qualities 00000000000111111100001010100011 pretext 00000000000111111000111100010111 ego 00000000000010001111111001100111 purse 00000000000111100101011000000001 domain 00000000000111001111111001100111 species 00000000000011101010000010100011 presumption 00000000000000000000000000000000 swallow 00000000000101101110101110110010 framers 00000000000100101111111000001111 Confederation 00100000000111101101111000001111 nominate 00000000011010111011111110110010 appoint 00000000001101111111101110110010 rehabilitation 00000000000000000011001101100001 conjunction 00000000000011111101100000110010 Undersecretary 00100000000111100111110110010101 probes 00000000000110001010001000100011 legs 00000000000110011010111101100011 invisible 00000000000010110000110100010000 visual 00000000001101000010000000110000 flashes 00000000010101001111000000010010 diagnosis 00000000000110110110011010100111 disapproved 00000000000000000000000000000000 Hun 00100000000000000000000000000000 Sihanouk 00100000000000000000000000000000 Cambodian 00100000000100000101011000110000 suppose 00000000000111011111100110110010 vetoes 00000000000000000000000000000000 discharge 00000000000111110100011110110111 Asia-Pacific 01000000000000000000000000000000 liberalize 00000000000111101000111110110010 plainly 00000000111001000000001001110010 hospitalized 00000000001001110100010000110010 stroke 00000000000111101101110000000001 pioneers 00000000000111101000100000110011 Mingo 00100000000000000000000000000000 replaces 00000000010100010001000000010010 Thanksgiving 00100000000110100110000000100001 wishing 00000000001100101010111000110010 Belt 00100000000000010101110001111001 strokes 00000000000110010000010101100011 Pilots 00100000000000010000100110110011 examining 00000000000110110110010101000000 Examiner 00100000000010000010110000110101 Nearby 00100000000001001000001000110000 dailies 00000000000101000111110001100011 Reps. 00100000000000000000000000000000 comprises 00000000000001100001000000010010 Taxation 00100000000111100110011010100111 Pryor 00101111111110101001111010001000 216 00000000000000000000000000000000 update 00000001100100111111110110110010 randomly 00000001110101000000010001110010 thorough 00000000000000000101010010010000 wounds 00000000001100011111110101100011 accomplishments 00000000000111111111011101100011 ambulance 00000000000010001010001010110000 delight 00000000000111100010110101100111 Riese 00100000000000000000000000000000 nameplate 00000000000000000000000000000000 Orlando 00100000000111111001101001101000 anti-apartheid 00000000000000000000000000000000 racism 00000000000111111111010010100111 in-depth 00000000000000000000000000000000 Drogoul 00100000000000000000000000000000 Banca 00101111111011110101001000011000 Hammersmith 00100000000000000000000000000000 superpower 00000000000000001000110110110000 loosely 00000000000001000111001001110010 auditor 00000000000111000110101010110011 Nation 00100000000111111111111111000101 communism 00000000000111001110110010100111 immense 00000000000010000100010100010000 confesses 00000000000000100011010111000010 Stanza 00100000000000000000000000000000 subcompact 00000000000011111010001010110000 Corporations 00100000000111101111110001110011 clocks 00000000000000000000000000000000 Again 00100000000000000100010001110010 stacked 00000000011001001100010000110010 trendy 00000000001001010000001000110000 portray 00000000001010111011111110110010 fourth-largest 00000000000000000000000000000000 nostalgic 00000000000000000000000000000000 Yasuda 00100000000111011100010000001000 sleek 00000000000111000111011010010000 sung 00000001100101110100010000110010 Vanderbilt 00100000000011010111111000101000 arsenals 00000000000111101101100110001001 forbidding 00000001101010010000000000001010 authorize 00000000001010111111101110110010 indexers 00000000000000000000000000000000 discriminatory 00000000000000010010000110010000 virtue 00000000000111111111101100111111 Ashurst 00100000000000000000000000000000 concealed 00000000111111010100010000110010 homeland 00000000000111001111101001100111 marital 00000000000111011000000000110000 nullify 00000000000000000000000000000000 reverts 00000000000000000000000000000000 jeopardy 00000000000111111010110101010111 Paulo 00100000000000001001000000011101 TNT 01000000000000000000000000000000 Tourist 00100000000000000010101100100001 Province 00100000000111111101011001100111 Study 00100000000111101111100000110111 locales 00000000000000000000000000000000 English-language 00100000000000000000000000000000 responds 00000000000010100011010111000010 followers 00000000000111101001110000110011 lavish 00000000001010010000001000110000 Father 00100000000111111111101110000001 Buyers 00100000000111101101100000110011 undergoing 00000000000111010010010101000000 religious 00000000000101000000000000110000 religion 00000000000101101011110010100111 Unification 00100000000000010101101101001111 Getting 00100000000111101000000101000000 flown 00000000000111111100100001010000 defect 00000000000111101001101010110111 157 00000000000000000000000000000000 amass 00000000000000000000000000000000 noble 00000000000001000110000000001000 invariably 00000000010101100000001001110010 oat 00000000000000110111101110110000 stellar 00000000000000010111100000010000 Marketers 00100000000000011000000010110011 Tide 00100000000111111001100101100111 high-volume 00000000000000000000000000000000 tastes 00000000000100101001111101100011 youths 00000000000100101101011100110011 Goya 00100000000000000000000000000000 irregularities 00000000000111100111111000100011 Jake 00101111111011101000001000011000 chassis 00000000000011000000011111001001 hiding 00000000000100101110100001000000 Barr 00101111111010011100001000001000 alongside 00000000000000110001000000001010 budgeted 00000000000111000000010000110010 locate 00000000000110100011111110110010 Western-style 00100000000000000000000000000000 Truck 00100000000000011000001000100001 all-time 00000000000000000000000000000000 13.625 00000000000000000000000000000000 Pittsburgh-based 00100000000000000000000000000000 stresses 00000000001011010011000000010010 unfocused 00000000000000000000000000000000 Supporters 00100000000100000010000010110011 steered 00000000001000011100010000110010 Springfield 00100000000010111011101001101000 condominium 00000000000001001001111010110000 D.C 01000000000000000000000000000000 do-it-yourself 00000000000000000000000000000000 EG&G 01000000000000000000000000000000 Debenture 00100000000000000000001010110001 di 00001111111010100101001000011000 echoed 00000000110111100111010000110010 1.31 00000000000000000000000000000000 Treatment 00100000000111110010011010100111 Wastewater 00100000000000000000000000000000 99.75 00000000000000000000000000000000 251 00000000000000000000000000000000 culprit 00000000000111101000101100010111 resiliency 00000000000000000000000000000000 accountant 00000000000111101100110000110101 Armenian 00100000000001110100010100110000 Cockburn 00101111111101110111000010001000 jolts 00000000000100111111001000100011 farther 00000000000000000010101111000000 Visitors 00100000000001100000111000110011 Moslems 00100000000110111110100000110011 feasible 00000000000011011110110110010000 breathed 00000000000000000000000000000000 re-elected 00000000000000000000000000000000 divorced 00000000000011000110101001000000 Ebensburg 00100000000000000000000000000000 Fear 00100000000111101110000110110010 6.40 00000000000000000000000000000000 7.74 00000000000000000000000000000000 imperial 00000000000111100001111000101000 seated 00000000000000100111000001000000 49.9 00000000000000000000000000000000 creators 00000000000111100101111101100011 bind 00000000000111111001001010110111 3.43 00000000000000000000000000000000 Pencil 00100000000110101100110000000001 32.5 00000000000000000000000000000000 Wakeman 00100000000000000000000000000000 complexes 00000000000000011011110001100011 menu 00000000000111000100100101100111 dish 00000000000111011101011000000001 cream 00000000000000000001010100000001 Voters 00100000000000000001011000110011 inventor 00000000000101000111110000110101 endorse 00000000001110101011111110110010 Panisse 00100000000000000000000000000000 Chez 00100000000000000000000000000000 Transmission 00100000000000010100100001100001 Bowl 00100000000001101100100010110101 118 00000000000000000000000000000000 downgrading 00000000000111111111110111001111 Groupe 00100000000111000111111100101000 IOUs 01000000000000000000000000000000 boon 00000000000111111111011100010111 Sandy 00100000000000111010001000011000 Melloan 00100000000000000000000000000000 compromised 00000000010111010001110000110010 fascinating 00000000000001000101000010010000 rebounding 00000000000101111011100001000000 Veraldi 00100000000000000000000000000000 neglect 00000000000110111110011010100111 creator 00000000000101010111111000001111 beeper 00000000000000000000000000000000 birds 00000000001000101111110101100011 1940s 00000000000000000000000000000000 pollution-control 00000000000000000000000000000000 6.70 00000000000000000000000000000000 hormone 00000000000000001100100000100001 Hymowitz 00100000000000000000000000000000 accompany 00000000000111100011101110110010 unanimous 00000000000000001101000000010000 reliable 00000000000000100001010010010000 anti-miscarriage 00000000000000000000000000000000 noticeably 00000000000000000000000000000000 predictably 00000001110100000000001001110010 dilution 00000000000110000111101010100111 Dalton 00101111111110001101001000001000 reassure 00000000000010111011111110110010 3.40 00000000000000000000000000000000 Abraham 00101111111000000001110100001000 shakeup 00000000000000000000000000000000 surges 00000000000111011010011110000011 rub 00000000011110010110010110110010 2.68 00000000000000000000000000000000 Asians 00100000000111001100111000110011 tearing 00000000000110000110100001000000 hovered 00000000000111000110001000110010 suite 00000000000111101001000010000001 cover-up 00000000000000000000000000000000 wield 00000000100001101111101110110010 grandfather 00000000000111110011011110000001 1.63 00000000000000000000000000000000 Verit 00100000000000000000000000000000 pivotal 00000000000000000100011000010000 morass 00000000000111000000101101100111 slick 00000000000110011000011010010000 full-page 00000000000000000000000000000000 fishermen 00000000000110001100100000110011 Baden-Wuerttemberg 01000000000000000000000000000000 paved 00000011110101000101010000110010 Greeniaus 00101111110001001100000010001000 onetime 00000000000001011010010000010000 Pedersen 00100000000000000000000000000000 lousy 00000000000000000001001010010000 Gardner 00101111111101101101001000001000 Refining 00100000000111101100100001100001 Z. 00101111111111110010101011011000 well-heeled 00000000000000000000000000000000 dispersant 00000000000000000000000000000000 DSM 01000000000000000000000000000000 introduces 00000001010101100011000000010010 trailer 00000000000001110100001000100001 Cantor 00100000000000000000000000000000 quantify 00000000000111110100011110110010 reimbursement 00000000000000000001011000111001 Educational 00100000000000010100000000110000 Prime-1 00100000000000000000000000000000 chilled 00000000000010010101101001000000 501 00000000000000000000000000000000 bureaucracies 00000000000100010100110100100011 Raising 00100000000011010010011101000000 Station 00100000000111101001110100001001 Emerging 00100000000111111111100001000000 Guadalajara 00100000000000000000000000000000 pleas 00000000000110000011101000100011 Rohs 00100000000000000000000000000000 GSX 01000000000000000000000000000000 prescribe 00000000000010111011101110110010 Diet 00100000000101101010010000000001 141.80 00000000000000000000000000000000 Witnesses 00100000000000100000000110110011 144.5 00000000000000000000000000000000 158 00000000000000000000000000000000 nudge 00000000010010010110010110110010 Wedding 00100000000111100010110000000001 Coin 00100000000000000011100000100001 Gilchrist 00101111110100001000000010001000 insects 00000000000110110111111000110011 purchaser 00000000000111111011101010110101 138 00000000000000000000000000000000 Won 00100000001111101001010000110010 Sohn 00100000000000000000000000000000 jams 00000000000000000000000000000000 1,300 00000000000000000000000000000000 shoreline 00000000000000000000000000000000 breast 00000000000111101001001011100001 genius 00000000000111101111101001100111 slope 00000000000000111000011010101000 lithographs 00000000000000000000000000000000 Dali 00100000000000000000000000000000 ragged 00000000000000000000000000000000 propped 00000000000110111011001000110010 collectively 00000000101100000000001001110010 albeit 00000000000111011011000001110010 scholarly 00000000000000011000000000110000 Niciporuk 00100000000000000000000000000000 Moines 00101111111100110000110000011101 Donohoo 00100000000000000000000000000000 outpost 00000000000111100001011001100111 explanations 00000000000111101110101110100011 objectivity 00000000000000000000000000000000 shopper 00000000000111100110111000100001 Doubleday 00100000000111001111111010101000 Includes 00100000000000000001000000010010 Cape 00100000000111110000001000110000 BTR 01000000000000000000000000000000 gay 00000000000000100101001000110000 Continent 00100000000111111000111001000101 pillar 00000000000000000000000000000000 Anglo 00100000000111101110100110101000 Coxon 00100000000000000000000000000000 360-day 00000000000000000000000000000000 365-day 00000000000000000000000000000000 156 00000000000000000000000000000000 51-day 00000000000000000000000000000000 mud 00000000000111101100110000100001 microscope 00000000000000000000000000000000 Casablanca 00100000000000000000000000000000 hemisphere 00000000000111111001001100100101 texts 00000000000111011110010101100011 21.9 00000000000000000000000000000000 restarted 00000000000000000000000000000000 notch 00000000000111111111111111011011 114.3 00000000000000000000000000000000 bogus 00000000000000011010000110010000 1968 00000000000000000000000000000000 townships 00000000000111110110010010110101 accruing 00000000000000000000000000000000 American-made 00100000000000000000000000000000 184 00000000000000000000000000000000 Cleopatra 00100000000000000000000000000000 267 00000000000000000000000000000000 tumors 00000000000111011001111000100011 Josephine 00100000000000000000000000000000 thief 00000000000111111100010010110101 Dana 00100000000010001111111100001000 Hayes 00101111111110101001001000001000 Chilean 00100000000000010100010100110000 PACs 01000000000111101100010000110011 intruder 00000000000000000000000000000000 1.28 00000000000000000000000000000000 top-selling 00000000000000000000000000000000 Finding 00100000000111111011110101000000 combustion 00000000000110111010011010110000 discovering 00000000000111111001110101000000 Beneficial 00100000000001000100001001000000 diving 00000000001101111010110001000000 preceded 00000000010100100111010000110010 languishing 00000000000110001111000001000000 MNC 01000000000000000000000000000000 Seib 00101111111100101001000010001000 slept 00000000000010011110001000110010 corporates 00000000000000000000000000000000 Leavitt 00100000000000000000000000000000 stepped-up 00000000000000000000000000000000 doubted 00000000000100110111110111000010 re-examine 00000000000000000000000000000000 government-sponsored 00000000000000000000000000000000 SUGAR 01000000000000001011101110110000 screamed 00000000000000000000000000000000 Belgique 00101111111100001100111110000010 outrageous 00000000000000100011001110010000 probing 00000000000010100101110101000000 Raleigh 00100000000111001001101001101000 fragmented 00000000000111001001000010010000 contender 00000000000111001111101010110101 flame 00000000000111100101110000000001 tangled 00000000000011001101000010010000 felonies 00000000000000000000000000000000 Kimbrough 00100000000000000000000000000000 NIL 01000000000000000000000000000000 So-called 00100000000000000000000000000000 Meantime 00100000000111011110101001101000 Sara 00101111111111110010111000101000 Campaneris 00100000000000000000000000000000 loads 00000000000111101111001000000011 imperative 00000000000111111101110110010000 Bourse 00100000000000000000011000100101 innings 00000000000000000000000000000000 Adler 00101111111100100011111000001000 525 00000000000000000000000000000000 Merchant 00100000000011010000111100110000 gargantuan 00000000000000000000000000000000 cynical 00000000000001101011010010010000 shout 00000001010101111101010110110010 Mort 00100000000000000000000000000000 nightly 00000000000001011101000101010000 skewed 00000000010110000001110000110010 dismantle 00000000011110111011111110110010 at-market 00000000000000000000000000000000 W.Va 01000000000000000000000000000000 Englund 00100000000000000000000000000000 proclaims 00000000000001000011010111000010 2012 00000000000000000000000000000000 laughed 00000000010010011110001000110010 Marie 00100000000111111010001000011000 penchant 00000000000111111110011100111001 entangled 00000000000000000000000000000000 credit-rating 00000000000000000000000000000000 blackened 00000000000000000000000000000000 Cars 00100000000000000000001001100011 Dempsey 00101111111101011000100010001000 Amerada 00101111111111110011010000101000 Whiting 00100000000000000000000000000000 commanders 00000000000000000110100110001001 collaborating 00000000000000000000000000000000 Joshua 00101111111010101000001000011000 complicity 00000000000000000000000000000000 comedies 00000000000111010100010101100011 folding 00000000011011100010110001000000 NMTBA 01000000000000000000000000000000 Editor 00100000000111111110011000110101 17.4 00000000000000000000000000000000 Naturally 00100001100100000000001001110010 rescheduled 00000000001000010000010000110010 Gillespie 00101111111100000110100010001000 foresees 00000000010101100011000000010010 shivers 00000000000000000000000000000000 Nixdorf 00100000000001010000100100101000 Arbitragers 00100000000110100110000011010011 Salembier 00100000000000000000000000000000 presses 00000000001010011111000000010010 paltry 00000000000001011100100000010000 hospitable 00000000000011010101010010010000 16.3 00000000000000000000000000000000 133 00000000000000000000000000000000 Logan 00101111111101111001001000001000 24.5 00000000000000000000000000000000 Giddings 00101111111010101111111010101000 128 00000000000000000000000000000000 Years 00100000000000000000000000111011 du 00001111111001110011110101001000 recessionary 00000000000000000000000000000000 stoppage 00000000000000000000100001010111 Domenici 00101111111110111000111010001000 Grove 00100000000000011010100010100101 Lac 00100000000010011001000100101000 state-of-the-art 00000000000000000000000000000000 Tyszkiewicz 00100000000000000000000000000000 runner 00000000000111100101010010110101 replay 00000000000111111001001000111111 quashed 00000000000000000000000000000000 62,000 00000000000000000000000000000000 Atkins 00101111111110011100100010001000 Alpha 00100000000011110010101010110000 reminiscent 00000000000000101011110000110010 adapt 00000000000111101111010110110010 glorious 00000000000100000110011010010000 Steinbach 00100000000000000000000000000000 fund-raiser 00000000000000000000000000000000 Analyst 00100000000111101111111100110101 forma 00000000011000101101000101010000 Palmero 00100000000000000000000000000000 exemptions 00000000000111101101001100000011 electrodes 00000000000000000000000000000000 Panhandle 00100000000111111001001010101000 Added 00100000000111101100010111000010 273 00000000000000000000000000000000 Cosmos 00100000000010011100010000001000 norms 00000000000101010011011100100011 0.15 00000000000000000000000000000000 inflow 00000000000111101001101010001111 disagrees 00000000000110110110010000110010 mentor 00000000000111110010100100100001 Lance 00101111111000010010000100001000 Harken 00100000000000000000000000000000 connect 00000000000110001011011110110010 grounding 00000000000000000000000000000000 televisions 00000000000001011111101001100011 conscientious 00000000000000000000000000000000 pastry 00000000000000000000000000000000 SIBV-MS 01000000000000000000000000000000 Rod 00100000000100000111111100001000 four-month 00000000000000000000000000000000 computer-related 00000000000000000000000000000000 divert 00000000011000111111101110110010 higher-cost 00000000000000000000000000000000 pennant 00000000000000000011100100100001 wholesalers 00000000000111001100010000110011 vanished 00000000001000000110001000110010 debt-financed 00000000000000000000000000000000 recipes 00000000000101100011110101100011 bands 00000000000011010101110101100011 hard-currency 00000000000000000000000000000000 robbers 00000000000000000000000000000000 fielded 00000000001100101001010000110010 Sheffield 00100000000000000000000000000000 wallet 00000000000000000000000000000000 Heine 00100000000110101111101001101000 choppy 00000000000111011010011100010000 420 00000000000000000000000000000000 Illustrated 00100000010101000001110000110010 Rajiv 00100000000000000000000000000000 stinging 00000000000000000000000000000000 Viroqua 00100000000000000000000000000000 patrons 00000000000111000110100000110011 fitting 00000000000010100101000010010000 softened 00000000000011011010111001000000 45.3 00000000000000000000000000000000 cookbook 00000000000000000000000000000000 assertion 00000000000111111001010000001111 specialties 00000000000111101111010011001001 1.01 00000000000000000000000000000000 Shulman 00100000000000000000000000000000 Privatization 00100000000111100011110101001111 2.79 00000000000000000000000000000000 buoyant 00000000000001110011100000010000 Hansen 00101111111111101000100010001000 inverse 00000000000000000000000000000000 franchised 00000000000001100101010000110000 8:30 00000000000000000000000000000000 company-operated 00000000000000000000000000000000 lags 00000000100110000011000000010010 pitcher 00000000000011101111011110110101 Beverage 00100000000001111011111010110000 overshadowed 00000000000101010001110000110010 bits 00000000000110101011100100101111 Markese 00100000000000000000000000000000 Dodger 00100000000000000000000000000000 capsules 00000000000110110101110101100011 MTV 01000000000000000000000000000000 Lyphomed 00100000000101010011111100101000 scoffs 00000000001101101000001000110010 Closely 00100000000111111111001001110010 lover 00000000000111100001011110000001 showers 00000000000111001011110101100011 possessions 00000000000000000000000000000000 eclectic 00000000000000000000000000000000 gem 00000000000111000001100101100111 28.5 00000000000000000000000000000000 decorated 00000000011110110110010000110010 boosters 00000000000010010000100000110011 Restaurant 00100000000000010001111010110000 bid-wanted 00000000000000000000000000000000 experimenting 00000000000111100101100000110010 equilibrium 00000000000001001111111001100111 et 00000000000001111010010010110000 Conn.-based 00100000000000000000000000000000 49.4 00000000000000000000000000000000 223 00000000000000000000000000000000 cataract 00000000000000000000000000000000 flextime 00000000000000000000000000000000 spurted 00000000000010110001000100110010 13.7 00000000000000000000000000000000 severed 00000000000000000011111001000000 41-year-old 00000000000000000000000000000000 classifications 00000000000000000000000000000000 CALIFORNIA 01000000000111111101110001101000 motorists 00000000000000001100111000110011 bored 00000000000001100101110000110010 refrigeration 00000000000110011111100001100001 masseurs 00000000000000000000000000000000 357 00000000000000000000000000000000 bass 00000000000000011011000000001000 top-performing 00000000000000000000000000000000 tissues 00000000000111100111001010100011 unprepared 00000000001010011110110000110010 Conrail 00100000000101001100110100101000 manifest 00000000000000000000000000000000 2645.08 00000000000000000000000000000000 11th 00000000000000000000000000000000 120-day 00000000000000000000000000000000 Quest 00100000000111111111001111100111 Firestone 00100000000111101011001100101000 physically 00000000000010011000000001110010 three-fourths 00000000000000000000000000000000 1.91 00000000000000000000000000000000 remedies 00000000000111111011011100100011 Westminster 00100000000010010011100000110000 accordingly 00000000000111101101101011101000 Cathedral 00100000000111111110010100000001 couriers 00000000000100110100100000110011 SA 01000000000000000000000000000000 pricey 00000000000000111111000010010000 aerobics 00000000000000000000000000000000 reshaped 00000000000000000000000000000000 indicative 00000000001101101011110000110010 Sindona 00100000000000000000000000000000 Nazer 00101111111000011110110010001000 QVC 01000000000000000000000000000000 L 00100000000000010101111110101000 subgroups 00000000000000000000000000000000 competence 00000000000110011111110010100111 Denmark 00100000000111001100111101101000 Winners 00100000000111100111101001110011 ruining 00000000000111000111001101000000 7.65 00000000000000000000000000000000 bucked 00000000000011101101000000001010 Barksdale 00100000000000000000000000000000 poker 00000000000000001000101100100001 burner 00000000000111101101000001000111 242 00000000000000000000000000000000 26.9 00000000000000000000000000000000 Reader 00100000000111101010111000100001 Forces 00100000000111100000010110001001 M.D 01000000000000000000000000000000 dissolve 00000000010000111011111110110010 Conlon 00100000000000000000000000000000 Lipstein 00100000000000000000000000000000 ceremony 00000000000010000011001011100111 wrapping 00000000000000000000000000000000 legitimize 00000000000111000100111110110010 freshman 00000000000100101000101000110000 Boston-based 00100000000000000000000000000000 Oct 00100000000000000000000000000000 inspections 00000000000110011110001000100011 streamlined 00000000010011100101010010010000 auto-industry 00000000000000000000000000000000 Kids 00100000000111100011111100110011 dissolved 00000001010111010100010000110010 Anton 00100000000000000000000000000000 spiraling 00000000000000000000000000000000 Weinstein 00101111101000101100000010001000 7.35 00000000000000000000000000000000 1.79 00000000000000000000000000000000 LaBonte 01000000000000000000000000000000 traps 00000000000111101110010101100011 Tina 00100000000000000000000000000000 traced 00000000000011110000110000110010 recruits 00000000101100001111000000010010 disbanding 00000000000000000000000000000000 Brozman 00100000000000000000000000000000 mafia 00000000000011001010101000110000 Golenbock 00100000000000000000000000000000 Ba-3 00100000000000000000000000000000 Whitman 00101111111001101111000100001000 Choice 00100000000111101010111101100111 constituent 00000000000110101101011000110000 transmission 00000000000000010100100001100001 infectious 00000000000000100101000000110000 Tommy 00101111111000110010111000011000 mischief 00000000000000000000000000000000 2,064 00000000000000000000000000000000 door-to-door 00000000000000000000000000000000 Ries 00100000000000000000000000000000 NKF 01000000000000000000000000000000 skirt 00000001000010111111110110110010 invent 00000000000110101010101110110010 cardiovascular 00000000000010101100101010110000 judged 00000000000010110000110000110010 chambers 00000000000100110100110111110011 142.43 00000000000000000000000000000000 bargain-basement 00000000000000000000000000000000 arsenal 00000000000001101111111001100111 shorts 00000000000110100010110101100011 1.8578 00000000000000000000000000000000 450,000 00000000000000000000000000000000 feuding 00000000000100110110110000100111 conflict-of-interest 00000000000000000000000000000000 hindered 00000000000010000001110000110010 commercialize 00000000000000000000000000000000 spokesperson 00000000000000000000000000000000 Shultz 00101111111100101100001010001000 buttons 00000000000101000001110101100011 awesome 00000000000010011000110100010000 Redevelopment 00100000000000010011001001100001 ketchup 00000000000000000000000000000000 0.82 00000000000000000000000000000000 Woodland 00100000000000110110011010101000 interstates 00000000000000000000000000000000 Salem 00100000000111000101001000001000 alienating 00000000000000001100001101000000 finals 00000000000000000000000000000000 Memorial 00100000000000001010000000100001 Copyright 00100000000110000001000000110000 Performance 00100000000111101101011010100111 Yonehara 00100000000000000000000000000000 criminality 00000000000110110101110010100111 7.19 00000000000000000000000000000000 Bechtel 00100000000001010011010100101000 Sawyer 00101111110010101100000010001000 stops 00000000001000001111000000010010 58.9 00000000000000000000000000000000 46-year-old 00000000000000000000000000000000 Ladenburg 00100000000011101011110000101000 oil-field 00000000000000000000000000000000 747-400 00000000000000000000000000000000 double-A-minus 01000000000000000000000000000000 Managing 00100000000000000000001001110000 2.73 00000000000000000000000000000000 dips 00000000000000000000000000000000 leagues 00000000000111111101101001110011 Shrontz 00100000000000000000000000000000 Watkins 00101111110000100000000010001000 slows 00000010100010000011000000010010 denominated 00000000000001011110010000110010 sweeps 00000001001111001111000000010010 year-to-date 00000000000000000000000000000000 Trial 00100000000111100110000001100111 halved 00000010110111010100010000110010 vacancies 00000000000000000000000001100011 editing 00000000001011100010110001000000 22.4 00000000000000000000000000000000 undetermined 00000000000000000101100100010000 tack 00000000000101001001111010110111 consummated 00000001011010010010110000110010 contributor 00000000000111011111111100100111 737 00000000000000000000000000000000 start-ups 00000000000000000000000000000000 Bock 00100000000000000000000000000000 Maury 00100000000000000000000000000000 presently 00000000000001010100001001110010 pinning 00000000000000000000000000000000 hasty 00000000001101001101000000010000 appraisals 00000000000111110010001000100011 cheated 00000001101001110100010000110010 Skokie 00100000000111110100101001101000 reassurance 00000000000000000000000000000000 overhang 00000000000000000000000000000000 defrauded 00000000000100101101010000110010 dancers 00000000000110110000100000110011 catheter 00000000000000000000000000000000 Quarterly 00100000000000010101000101010000 condemnation 00000000000010100001001101001111 stiffer 00000000000011001100001111000000 present-day 00000000000000000000000000000000 Priam 00100000000000000000000000000000 edible 00000000000000000000000000000000 salvaged 00000000000000000000000000000000 23.25 00000000000000000000000000000000 allegation 00000000000111110001010000001111 allegiance 00000000000110111011110100100111 849 00000000000000000000000000000000 Sitting 00100000000111000011000001000000 counteract 00000000001111001011111110110010 identifies 00000001000110000011000000010010 coffin 00000000000000000000000000000000 stalemate 00000000000111010110110000100111 modern-day 00000000000000000000000000000000 Howell 00101111111111100111110001001000 indifference 00000000000110100111110100100111 honey 00000000000110010000101100100001 citations 00000000000100100011101000100011 lingering 00000000000010101000000000010000 Waggoner 00100000000000000000000000000000 spectators 00000000000000000000111000110011 whispering 00000000000000000000000000000000 acre 00000000000111111100101000100111 Nova 00100000000111100010100100101000 BSB 01000000000000000000000000000000 0.13 00000000000000000000000000000000 nicely 00000000110010000000010001110010 ghostbusting 00000000000000000000000000000000 321 00000000000000000000000000000000 Middletown 00100000000000000000000000000000 Freight 00100000000000100010001010110000 entitle 00000000000001011011101110110010 Marty 00101111111000000100001000011000 Phibro 00100000000000000000000000000000 inmates 00000000000000011100100000110011 pyramids 00000000000000000000000000000000 Aluminium 00101111111000110100010001001000 Alcan 00101111111111001000100100101000 PipeLines 01000000000000101100010000110011 17.9 00000000000000000000000000000000 pursuant 00000000000100001001111000110010 legerdemain 00000000000000000000000000000000 precaution 00000000000000000000000000000000 Midway 00100000000101000111110110101000 crushing 00000000000001110100011000010000 Sante 00100000000000000000000000000000 32.6 00000000000000000000000000000000 wiping 00000000100111000110100001000000 wholesaler 00000000000111100011100001110101 Vail 00100000000000000000000000000000 2.125 00000000000000000000000000000000 jealousy 00000000000000000000000000000000 busily 00000000000000000000000000000000 Raptopoulos 00100000000000000000000000000000 resold 00000000011111000000010000110010 5.42 00000000000000000000000000000000 delegates 00000000000000000110000000110011 Pell 00101111111111101001111010001000 11.2 00000000000000000000000000000000 housewife 00000000000111100001011110110101 eyebrows 00000000000100011111111101100011 drifting 00000000000111100011100001000000 decks 00000000000000000000000000000000 Stories 00100000000000001111110101100011 5.32 00000000000000000000000000000000 Skeptics 00100000000000001010000010110011 Ghostbusters 00100000000000000000000000000000 Kern 00101111111101011100001000001000 Sanger 00100000000000000000000000000000 Cone 00101111111001101000101001001000 Smithsonian 00100000000000111101100011010000 evidenced 00000000100010000001110000110010 specials 00000000000001110111110101100011 conservatism 00000000000101011111110010100111 haunting 00000000000000000000000000000000 propulsion 00000000000001011010001010110000 Sidewalk 00100000000011110110111000000001 muse 00000000000000000000000000000000 23.8 00000000000000000000000000000000 sequel 00000000000111111010001011100111 enforcing 00000000000011101011111101000000 1.53 00000000000000000000000000000000 worse-than-expected 00000000000000000000000000000000 petitions 00000000000100011001101000100011 underpin 00000000000000000000000000000000 Hammacks 00100000000000000000000000000000 Foot 00100000000111101011000001000111 Zell 00101111111110110110010010001000 tenor 00000000000111100111110000110101 Stinnett 00100000000000000000000000000000 bode 00000000000000010000000110111001 6.31 00000000000000000000000000000000 moderate-income 00000000000000000000000000000000 slammed 00000000000000000000000000000000 FINANCIAL 01000000000000000000100000110000 AUS 01000000000000000000000000000000 debt-ridden 00000000000000000000000000000000 furnace 00000000000000000101111000000001 programmed 00000000000000011000110000110010 nets 00000000110111001111000000010010 logistics 00000000000000010111101010100001 implementing 00000000000111101011111101000000 Lidgerwood 00100000000000000000000000000000 brass 00000000000000110010001100100001 Yamatake-Honeywell 01000000000000000000000000000000 Political 00100000000000000000000000110000 software-development 00000000000000000000000000000000 unreported 00000000001000110000011100010000 racehorse 00000000000000000000000000000000 Related 00100000000000000000111000110010 stomach 00000000000111101011010000000001 horror 00000000000111110100001100100001 bones 00000000000110000001110101100011 4.05 00000000000000000000000000000000 Lin 00100000000101001001110000001000 34.2 00000000000000000000000000000000 2.27 00000000000000000000000000000000 Offices 00100000000111000101000001100011 single-A-minus 01000000000000000000000000000000 2.56 00000000000000000000000000000000 31-year-old 00000000000000000000000000000000 Oaks 00100000000000000001011011101001 7.61 00000000000000000000000000000000 dangling 00000000000100100011100001000000 mettle 00000000000000000000000000000000 silicon 00000000000110111110011010101000 Ciba 00100000000000000100011011000000 Debt 00100000000000000000000010110001 2015 00000000000000000000000000000000 9.35 00000000000000000000000000000000 Pool 00100000000111001101100101100111 Bancshares 00100000000000000000001100101001 rollback 00000000000101111001101010100111 2.45 00000000000000000000000000000000 flower 00000000000000110000101100100001 determines 00000000011011100011000000010010 cosmic 00000000000000000000000000000000 ears 00000000000111100111111101100011 kindly 00000000000010010110011010010000 Trace 00100001000100111111110110110010 conscious 00000000000001010001010010010000 leveling 00000000000110100110100001000000 traces 00000000000010001111000000010010 whitewash 00000000000000000000000000000000 51.75 00000000000000000000000000000000 '60s 00000000000000000000000000000000 10.05 00000000000000000000000000000000 four-part 00000000000000000000000000000000 prevalent 00000000000111110011001110010000 Reuben 00100000000000000000000000000000 Railway 00100000000110010001111010110000 Thornton 00100000000101100000010000001000 496 00000000000000000000000000000000 cups 00000000000001000000101111001001 confidentiality 00000000000000001000100011100001 Internationale 00100000000000000000000000000000 Pakistani 00100000000001101000010100110000 telemarketers 00000000000000000000000000000000 car-rental 00000000000000000000000000000000 Meek 00101111111001011000000000001000 privatize 00000000000100100011111110110010 staffer 00000000000000001011010110110101 vacationers 00000000000000000000000000000000 IBJ 01000000000000000000000000000000 smells 00000000000110101000001000110010 hypocrisy 00000000000111111010111010100111 Parcel 00100000000111100010101011000001 Stephanie 00100000000000000000000000000000 Alternatively 00100000000111111000111011101000 Janney 00101111111111011000010000101000 enhancement 00000000000000000100111001100111 laptops 00000000000010101000111001100011 inflate 00000000000111100000111110110010 railroads 00000000000111101101100001110011 perpetuate 00000000000000000000000000000000 obsession 00000000000101101110110000100111 Riley 00101111111010101000000010001000 Inns 00100000000111100101111011101001 purses 00000000000000000000000000000000 Freud 00100000000000000000000000000000 Bud 00100000000000011011111100001000 tycoon 00000000001000000111110000110101 1987-88 00000000000000000000000000000000 ponder 00000000000110001110100110110010 cleaner-burning 00000000000000000000000000000000 adopts 00000000000000000000000000000000 Salon 00100000000000000000000000000000 swaying 00000000000000000000000000000000 Regarding 00100000100110010000000000001010 viewership 00000000000000000000000000000000 Yorkers 00100000000001011001011110000010 orchestras 00000000000000000000000000000000 nosedive 00000000000111110001101100110111 four-megabit 00000000000000000000000000000000 tin 00000000001011000100011010110000 stung 00000000100110000001110000110010 handout 00000000000000000000000000000000 inching 00000000000000000000000000000000 batting 00000000000000000000000000000000 pooled 00000000000000000000000000000000 snap 00000000100110010110010110110010 pins 00000000001011111011110101100011 shunned 00000011010101000101010000110010 Rental 00100000000001100000001010110000 tidal 00000000000000000000000000000000 snaps 00000000000101000011010111000010 Celimene 00100000000000000000000000000000 bombs 00000000000001001100000110001001 Transamerica 00100000000111100010111100101000 judging 00000000000101011101000001110010 contemplate 00000000000100001110100110110010 container 00000000000011000000011010110000 correctly 00000000000100100001001001110010 IF 01000000000000101010101001000010 zoomed 00000000000001110001000100110010 2.07 00000000000000000000000000000000 Shimbun 00100000000011001011000001001000 jeweler 00000000000000000000000000000000 imitation 00000000000110000100111001100111 Lagnado 00100000000000000000000000000000 Matt 00100000000001010100001000011000 Therefore 00100000000011101101000001110010 ballplayers 00000000000000000000000000000000 academia 00000000000111111100011101101000 nursing-home 00000000000000000000000000000000 Kalamazoo 00100000000000000000000000000000 diabetes 00000000000101101101110010100111 McNamara 01000000000000000000000000000000 shady 00000000000000000000000000000000 rethink 00000000000110001100111110110010 Mich.-based 00100000000000000000000000000000 Syracuse 00100000000110011100101001101000 insuring 00000000000000000000000000000000 Twenty 00100000000111101111000011000000 reorganized 00000000000010101010001001000000 parody 00000000000110110000100101100111 time-limited 00000000000000000000000000000000 Waltham 00100000001101011011101001101000 2.08 00000000000000000000000000000000 intricate 00000000000101011000110100010000 perchlorate 00001111111101110001111111001001 Nev 00100000000000000000000000000000 pensions 00000000000111111000000100000011 Heard 00100000000111110110110111000010 networking 00000000000011110111100001100001 distinctions 00000000000111010000010000100111 perfection 00000000000000000000000000000000 Counsel 00100000000000001110001000110101 fabled 00000000000000000000000000000000 Adam 00101111111000010001110000011000 Holders 00100000000111101110011010110011 observations 00000000000110100011101000100011 5.70 00000000000000000000000000000000 2.33 00000000000000000000000000000000 overturned 00000000110001111001010000110010 Willard 00101111111000010011100010011000 crashing 00000000000000100011100001000000 393 00000000000000000000000000000000 integral 00000000000000000011001110010000 retiree 00000000000000011110111000100001 railings 00000000000000000000000000000000 precipitated 00000000111100100111010000110010 37-year-old 00000000000000000000000000000000 insurgents 00000000000101111101011110110011 towers 00000000000011110010111000101000 multinationals 00000000000111101111100011110011 liquidator 00000000000000000000000000000000 reignited 00000000000000000000000000000000 160,000 00000000000000000000000000000000 Bridges 00100000000101101010000000001000 3.20 00000000000000000000000000000000 realizing 00000000000111111001111010000010 forgo 00000000000110111011111110110010 pitfalls 00000000000111110100011000100011 Sigoloff 00101111111000101000000010001000 British-based 00100000000000000000000000000000 telemarketing 00000000000000000000000000000000 colored 00000000000001100010101000110000 quell 00000000000010100011111110110010 670 00000000000000000000000000000000 mathematical 00000000000110010000000000110000 Dellums 00100000000000000000000000000000 large-capitalization 00000000000000000000000000000000 Namibian 00100000000000000000000000000000 continuously 00000011101000000000010001110010 131 00000000000000000000000000000000 Natwest 00100000000100101100111000101000 misguided 00000000000000011011010010010000 one-fifth 00000000000000000000000000000000 NO 01000000000000000000001100010100 buzzing 00000000000000000000000000000000 observe 00000000000111101110100110110010 destructive 00000000000000001011010010010000 Towers 00100000000011110010111000101000 reputations 00000000000101101000111101100011 2.15 00000000000000000000000000000000 Grimm 00100000000000000000000000000000 remembering 00000000000010010101110101000000 Arabian 00100000000000000100000001001000 incredibly 00000000000110101100000001110010 Marunouchi 00100000000000000000000000000000 4.35 00000000000000000000000000000000 Logic 00100000000110110011101001100111 EAST 01000000000010000000001110101000 speculating 00000000000110111111110000110010 nurseries 00000000000000000000000000000000 Chaplin 00100000000000000000000000000000 twisted 00000000001110011101101001000000 alleys 00000000000000000000000000000000 depleted 00000000001001000101101001000000 Oshkosh 00100000000000000000000000000000 terrorists 00000000000111101110100000110011 railway 00000000000110010001111010110000 ushered 00000000000000000000000000000000 Stan 00101111101001001100001000011000 hamstrung 00000000000000000000000000000000 franchiser 00000000000111111111100001110101 ambition 00000000000101111011110100100111 wit 00000000000011110001110010100111 Monitor 00100000000011111111110110110010 austere 00000000000000000000000000000000 Moslem 00100000000000110001011000110000 rulers 00000000000111100101000110110101 principally 00000000001000001011000001110010 Railroad 00100000000000000001111010110000 Dorgan 00100000000111011000111010001000 Wis 00100000000111011101101001001000 RTZ 01000000000000000000000000000000 jealously 00000000000000000000000000000000 indebted 00000000000100011000010000110010 Kimmel 00100000000000000000000000000000 ESOP 01000000000000000000000000000000 3.55 00000000000000000000000000000000 unresolved 00000000000000000100110110010000 debt-reduction 00000000000000000000000000000000 Crum 00100000000000000000000000000000 reckon 00000000000000000000000000000000 4.55 00000000000000000000000000000000 standby 00000000000000111111010000110000 instability 00000000000111011111111010100111 distilled 00000000000000000000000000000000 covenants 00000000000111001100010000100111 45.2 00000000000000000000000000000000 receivers 00000000000100111100110101100011 oil-producing 00000000000000000000000000000000 expressing 00000000000000101111011101000000 revelations 00000000000111101001101000100011 simmering 00000000000101101101010001000000 co-founded 00000000000000000000000000000000 Irwin 00101111111001100100000010011000 Congressman 00100000000111101110011110110101 posturing 00000000000011001110111010100111 on-again 00000000000000000000000000000000 off-again 00000000000000000000000000000000 gases 00000000000110010011011111001001 surpassed 00000000000100000001010000110010 Mariotta 00100000000000000000000000000000 forcefully 00000000110100000000010001110010 stimulating 00000000000010000101011101000000 accumulating 00000000000011000001010101000000 preferred-stock 00000000000000000000000000000000 common-stock 00000000000000000000000000000000 Miles 00100000000000000000000100001011 ERC 01000000000000000000000000000000 diverting 00000000000000100011011101000000 Pauline 00100000000000000000000000000000 anti-Japanese 01000000000000000000000000000000 scammers 00000000000000000000000000000000 reorganize 00000000000100111010111110110010 virulence 00000000000000000000000000000000 2,800 00000000000000000000000000000000 Interleukin-3 00100000000000000000000000000000 @ 00000000000000000000000000000000 desecration 00000000000000000000000000000000 Sandoz 00100000000100001111111100101000 unravel 00000000000110110100111110110010 documented 00000000000100010001101001000000 Frenzy 00100000000111011010100101100111 390,000 00000000000000000000000000000000 cheese 00000000000111101011111010110000 Algom 00100000000000000000000000000000 Feeding 00100000001110110010110001000000 2.55 00000000000000000000000000000000 buffet 00000000000000000000000000000000 automation 00000000000000010000011001100001 refocusing 00000000000000000000000000000000 575 00000000000000000000000000000000 Chapman 00101111111100101010001000001000 boycott 00000000000111110010100101100111 complements 00000000000000000000000000000000 evade 00000000001101111011111110110010 healing 00000000001011101010110001000000 ITC 01000000000000000000000000000000 hegemony 00000000000000000000000000000000 admissions 00000000000000000000011101100001 hyperinflation 00000000000000000000000000000000 debtor 00000000000111101101000100110000 guise 00000000000000000000000000000000 defines 00000000001001100011000000010010 untapped 00000000000000000000000000000000 Horton 00101111111110101000100010001000 brink 00000000000111111111001100001111 cue 00000000000111111110001111100111 32,000 00000000000000000000000000000000 injuring 00000000000001011101000001110010 oversaw 00000100011010000011000000010010 Peoples 00100000000111010100100100100001 Inner 00100000000010101000001000110000 Inn 00100000000000000000111011101001 per-capita 00000000000000000000000000000000 basement 00000000000111110011000101100111 488 00000000000000000000000000000000 By-Products 01000000000000000000000000000000 renowned 00000000000010101111000010010000 Tyson 00100000000111101011001000001000 SAB 01000000000000000000000000000000 ESOPs 01000000000000000000000000000000 Running 00100000000111111110100001000000 OKC 01000000000000000000000000000000 scotch 00000000000110100000101100100001 Petrus 00100000000000000000000000000000 endured 00000000001110101001010000110010 ouster 00000000000101101111110001100111 Baron 00101111111000100001100000001000 seating 00000000000000010100100000100001 discontinue 00000000000100000110111110110010 wrecked 00000000000000000000000000000000 journey 00000000000110101101111101100111 Socialists 00100000000111111100011110110011 Nov 00100000000000000100011001100010 elder 00001111111101100010101000110000 IATA 01000000000000000000000000000000 Lesser 00100000000000111000010000010000 unaware 00000000010011101011110000110010 Wedel 00100000000000000000000000000000 632 00000000000000000000000000000000 Champlain 00100000000000000000000000000000 Sayles 00100000000000000000000000000000 outraged 00000000000101001101110000110010 Loomis 00100000000000000000000000000000 Nazis 00100000000111100100011110110011 classics 00000000000011001101110101100011 3.625 00000000000000000000000000000000 8.26 00000000000000000000000000000000 McAfee 01000000000000000000000000000000 cronies 00000000000101010011110000110011 Fields 00100000000000001001110001111001 inflammatory 00000000000000000011101011100001 pragmatic 00000000000010001001000010010000 heap 00000000000000101101001010110111 ribozymes 00000000000000000000000000000000 indifferent 00000000000110110011110110010000 shovels 00000000000000000000000000000000 Claude 00100000000000000101100000011000 acquirers 00000000000111101001100000110011 squeezing 00000000000111001001001101000000 lungs 00000000000101001000111101100011 brawl 00000000000000000000000000000000 stifle 00000000000010100111111110110010 circumvent 00000000000000111011111110110010 Consortium 00100000000111101111101001110101 Schuette 00100000000000000000000000000000 brethren 00000000000111010011110000110011 cousin 00000000000111101001111110000001 variation 00000000000111100101101010100111 solidly 00000000110000101000000001110010 album 00000000000100101000001000100111 heck 00000000000111110001111110101000 Borden 00100000000110100101011100101000 Ehlers 00100000000000000000000000000000 occupying 00000000000001011101111101000000 Antitrust 00100000000010000001000000110000 canning 00000000000000000000000000000000 altering 00000000000001100001011101000000 Backhaus 00100000000000000000000000000000 Margeotes 00100000000000000000000000000000 Zilligen 00100000000000000000000000000000 Talcott 00100000000000000000000000000000 Cosmetics 00100000000000001011111010110000 horns 00000000000110110011111101100011 descending 00000000000000000000000000000000 Asher 00101111111000010100111010011000 heights 00000000000000000011100010100101 Philippe 00100000000000000000000000000000 ROTC 01000000000000000000000000000000 Newsday 00100000000111111110001010000001 Amish 00100000000000000000000000000000 sticker 00000000000011001010110011000111 honed 00000000000000000000000000000000 Griffin 00101111111100100000010010001000 2.63 00000000000000000000000000000000 50.1 00000000000000000000000000000000 whimsical 00000000000010010011000010010000 28.6 00000000000000000000000000000000 Bowles 00101111111111001111110001001000 gloom 00000000000101111010111010100111 Cresson 00100000000000000000000000000000 approximate 00000000000111101000000100010000 Lauderdale 00100000000101010110110000011101 Hawkins 00101111111011111101001000001000 recruiter 00001111111111101100011000110101 tenders 00001111111111111111110100011001 browsing 00000000000000000000000000000000 32.8 00000000000000000000000000000000 labor-intensive 00000000000000000000000000000000 Presidio 00100000000111101000011000101000 163 00000000000000000000000000000000 Rabinowitz 00100000000000000000000000000000 Bachmann 00100000000000000000000000000000 Grady 00100000000000000000000000000000 Catherine 00100000000000000000000000000000 Playmates 00100000000000000000000000000000 proportions 00000000000111100000001010100011 1953 00000000000000000000000000000000 Woodward 00101111111111110100111000001000 Bowder 00100000000000000000000000000000 trans-Atlantic 01000000000000000000000000000000 sexy 00000000000001110110011010010000 nonstop 00000000000010011000001010110000 differing 00000000000000101000010000010000 bypass 00000000000010011111110110110010 1955 00000000000000000000000000000000 132 00000000000000000000000000000000 cash-rich 00000000000000000000000000000000 O'Connor 01001111111001000000100010001000 Lahus 00100000000000000000000000000000 nurse 00000000000111101010010010110101 Rocha 00100000000000000000000000000000 heritage 00000000000100011100100100100001 avoidance 00000000000111111100111000111001 Scripps 00101111111101010010111000101000 brew 00000000000100101101001010110111 12.75 00000000000000000000000000000000 Kroger 00100000000110101101011100101000 Unitil 00100000000000000000000000000000 Hubert 00101111111001011010001000011000 McMaster 01000000000000000000000000000000 witch 00000000000000101010101100100001 Napa 00100000000000000000000000000000 paper-products 00000000000000000000000000000000 bombshell 00000000000000000000000000000000 national-service 00000000000000000000000000000000 Lieberman 00101111111011100101001000001000 seniors 00000000000000000001111000110011 reinstated 00000000001001111001010000110010 principal-only 00000000000000000000000000000000 interest-only 00000000000000000000000000000000 mercury 00000000000111101111110110101000 Jennifer 00100000000000000000000000000000 Treybig 00100000000000000000000000000000 diagnosed 00000000001101110100010000110010 Pulp 00100000001000000100011010110000 overwhelm 00000000000000000000000000000000 pen 00000000000011101100111110000010 promoters 00000000000000101000100000110011 Schlesinger 00101111111110011010100010001000 Iraqi 00100000000000010010010100110000 artwork 00000000000000000000000000000000 Tempe 00100000000000000000000000000000 Robinson-Humphrey 01000000000000000000000000000000 unanswered 00000000000000011101110110010000 Minuteman 00100000000000000000000000000000 stereotypes 00000000000000000000000000000000 simmer 00000000000000000000000000000000 damped 00000000001001100111010000110010 History 00100000000111111111001001100111 tumult 00000000000000000000000000000000 catering 00000000001011100000111000110010 FSLIC 01000000000000000000000000000000 Sundance 00100000000000000000000000000000 generation-skipping 00000000000000000000000000000000 Bloch 00101111111111001100110010001000 entitles 00000000001010100001000000010010 consciousness 00000000000111100001101001100111 7.54 00000000000000000000000000000000 dissents 00000000000000000000000000000000 scream 00000000000000000000000000000000 Blackmun 00101111111011011010101010001000 Orthodox 00100000000000011001011000110000 Rosie 00100000000000000000000000000000 Greeks 00100000000000000000000000000000 Nihon 00100000000111101011001101110000 Keizai 00100000000000000000000000000000 Throughout 00100000000001001101000000001010 480 00000000000000000000000000000000 Weatherford 00100000000000000000000000000000 Fiero 00100000000001100000000001000111 landowners 00000000000110001100111000110011 COCOA 01000000000111010011101110110000 wiggle 00000000000000000000000000000000 HOFI 01000000000000000000000000000000 physicist 00000000000111010101011110110101 recruitment 00000000000111110010101101001111 autographed 00000000000000000000000000000000 Syms 00100000000000000000000000000000 Attack 00100000000111111101100100100111 Peltz 00101111110001111100000010001000 Karatz 00100000000000000000000000000000 akin 00000000000111011100011000110010 Janus 00100000000000000000000000000000 handsomely 00000000111000010000010001110010 prefecture 00000000000000000000000000000000 Clarcor 00100000000000000000000000000000 Govett 00101111111001110000000101001000 1.86 00000000000000000000000000000000 15.7 00000000000000000000000000000000 tablets 00000000000111100010100110001001 Marines 00100000000111101110100110110011 mansion 00000000000111011110010100000001 Rank 00100000000111111010100110110111 situated 00000001011001001100010000110010 Kid 00100000000111100001110010110101 Spanish-language 00100000000000000000000000000000 extinction 00000000000000000000000000000000 one-yen 00000000000000000000000000000000 Atsushi 00100000000000000000000000000000 U.S.-Japan 01000000000000000000000000000000 consumer-electronics 00000000000000000000000000000000 Derek 00101111111000000010110110011000 rebut 00000000000111000100011110110010 peanuts 00000000001111110101110010100111 2569.26 00000000000000000000000000000000 Around 00100000000000100001000000001010 Succeeding 00101111111111110110011010000010 20-a-share 00000000000000000000000000000000 cola 00000000000000010011100100100001 gold-mining 00000000000000000000000000000000 Maxus 00100000000111001001000100101000 glance 00000000000111111111100100010111 Omnicare 00100000000000000000000000000000 4.12 00000000000000000000000000000000 Cold 00100000000000000101011010010000 tabs 00000000000000000010100100100111 reply 00000000000101110101111010110111 ailment 00000000001011000111111001100111 scans 00000000000000000000000000000000 Alliant 00100000000000000000000000000000 spells 00001001010110000011000000010010 Frawley 00100000000000000000000000000000 Ilford 00100000000000000000000000000000 untrue 00000000000111110111110110010000 Agfa 00100000000000000000000000000000 organs 00000000000111101100001010100011 preoccupation 00000000000110100110110000100111 Waterford 00100000000000000000000000000000 carnage 00000000000000000000000000000000 2.65 00000000000000000000000000000000 Colton 00100000000000000000000000000000 excessively 00000000010011101000000001110010 lunchtime 00000000000000000000000000000000 tense 00000000000100001100011010010000 transcript 00000000000111100001100101100111 Loewi 00100000000000000000000000000000 390 00000000000000000000000000000000 Catholics 00100000000111000100111000110011 creature 00000000000111101001011000111111 evolve 00000000000110111011010110110010 front-page 00000000000000000000000000000000 Thieme 00100000000000000000000000000000 Perrier 00100000000000000000000000000000 excludes 00000000001001100001000000010010 Cardinal 00100000000001011011111100001000 Holy 00100000000001100001011000110000 Circle 00100000000101001100110100100001 preferring 00000000000100101010111000110010 Japanese-owned 00100000000000000000000000000000 Progress 00100000000111101001111010100111 McMeel 01000000000000000000000000000000 converts 00000000000000011111000000010010 afforded 00000000001110110111010000110010 Torstar 00100000000010011010111100101000 shorting 00000000000000000000000000000000 directionless 00000000000000000000000000000000 photographers 00000000000111101101111000110011 cumbersome 00000000000110111011010010010000 hysteria 00000000000001001110111010100111 Newspaper 00100000000000000000001101000001 retires 00000000011111011110001000110010 capital-punishment 00000000000000000000000000000000 76.50 00000000000000000000000000000000 Mochida 00100000000000000000000000000000 22.125 00000000000000000000000000000000 warehouse-club 00000000000000000000000000000000 Saltzburg 00100000000000000000000000000000 masseuse 00000000000000000000000000000000 24,000 00000000000000000000000000000000 swept 00000000000001101001001000110010 Tariffs 00100000000111101110100100000011 Settlement 00100000000111101110110011001111 Rawls 00100000000000000000000000000000 receipt 00000000000111110111001101001111 clogged 00000000000001001001101001000000 2.23 00000000000000000000000000000000 stock-price 00000000000000000000000000000000 awarding 00000000001101110010110001000000 travels 00000000000111111100001000110010 Misawa 00100000000000000000000000000000 Tabak 00101111111010100100010000101000 GPA 01000000000000000000000000000000 underpinned 00000000000000000000000000000000 19.50 00000000000000000000000000000000 soluble 00000000000000000000000000000000 unconventional 00000000000000011101110100010000 disruptive 00000000000011110101010010010000 miniature 00000000000101000000001000110000 AmeriGas 01000000000010000001111100001000 1923 00000000000000000000000000000000 McCoy 01001111111110001001000010001000 Wadsworth 00100000000000000000000000000000 lengthened 00000000000000000000000000000000 Amcore 00100000000000000000000000000000 Longer 00100000000000111110010001110010 relentlessly 00000010110101000000010001110010 3.90 00000000000000000000000000000000 panicking 00000000000000000000000000000000 Gurria 00100000000000000000000000000000 state-run 00000000000000000000000000000000 82.8 00000000000000000000000000000000 mankind 00000000000111111110101101101000 Wireless 00101111111001110111110001001000 Eslinger 00100000000000000000000000000000 Antolini 00100000000000000000000000000000 Baxley 00100000000000000000000000000000 clips 00000000000111000111110101100011 predicament 00000000000111110000111101100111 Sao 00100000000111110000001101110000 fostered 00000000111111100111010000110010 Neff 00101111111101111100000010001000 Xinhua 00100000000000001000011000101000 workweek 00000000000011100001101001000111 CAE 01000000000000000000000000000000 unfit 00000000000000000000000000000000 ingredient 00000000000110100100111001100111 Negotiations 00100000000111111111010000100111 Metamucil 00100000000000000000000000000000 Portrait 00100000000111100010111000111111 Preti 00100000000000000000000000000000 Cincinnati-based 00100000000000000000000000000000 49.8 00000000000000000000000000000000 extrusion 00000000000000000000000000000000 24.8 00000000000000000000000000000000 Liz 00101111111111100000101101110000 tumbles 00000000000000000000000000000000 biography 00000000000111110000111000111111 discredited 00000000000100011101101001000000 Meyer 00101111111001001000100010001000 bare 00000000000011110010011010010000 Negus 00100000000000000000000000000000 pico 00000000000000000000000000000000 pertinent 00000000000000001011001110010000 CFC 01000000000000000000000000000000 schoolteacher 00000000000000000000000000000000 muni 00000000000000000000000000000000 338 00000000000000000000000000000000 Garfield 00100000000000000000000000000000 hammer 00000000000101000100100000001000 1.78 00000000000000000000000000000000 trickle 00000000000111101010011000110111 purged 00000000000000000000000000000000 Miranda 00100000000001101000000000001000 quotation 00000000000000010000010010111001 interruption 00000000000101000100111001100111 genuinely 00000000000001111000000001110010 56.875 00000000000000000000000000000000 Starpointe 00100000000000000000000000000000 Interactive 00100000000010010100101010110000 concentrations 00000000000111101111111001000111 best-performing 00000000000000000000000000000000 Hachette 00100000000110000101011100101000 Nogales 00100000000000000000000000000000 deprive 00000000000000011011101110110010 grabbing 00000000000010100111111101000000 slapped 00000011011001001100010000110010 intervals 00000000000000000000000000000000 antibodies 00000000000011001111111001100011 rebounds 00000000000000000001011110000011 9.45 00000000000000000000000000000000 NOW 01000000000000001000001001110010 onslaught 00000000000111001100111001100111 manually 00000000000000000000000000000000 best-selling 00000000000000000000000000000000 cooler 00000000000000100001111010110000 railcars 00000000000000000000000000000000 loom 00000000000001101101001010110111 plaster 00000000000100101000010110000000 non-seamen 00000000000000000000000000000000 729 00000000000000000000000000000000 top-tier 00000000000000000000000000000000 five-point 00000000000000000000000000000000 Scudder 00100000000000000100010000101000 modification 00000000000111101101001101001111 unsupported 00000000000000000000000000000000 Bearings 00100000010010001011111010110000 one-inch 00000000000000000000000000000000 fullest 00000000000000000000000000000000 shuffle 00000000000111010101111000110111 outstripped 00000000001100000001010000110010 overreacting 00000000000110100110011000110010 resent 00000000000110101110100110110010 waiving 00000000000000000000000000000000 406 00000000000000000000000000000000 reparations 00000000000000000000000000000000 416 00000000000000000000000000000000 pay-in-kind 00000000000000000000000000000000 LAW 01000000000001000000000010011001 8.12 00000000000000000000000000000000 crest 00000000000100010010010100000001 paragraph 00000000000111100100011000010111 Non-interest 00100000000000000000000000000000 unilateral 00000000000001000010000000110000 Gabriel 00101111111000001100000100001000 Talk 00100000000111111111000101010111 striving 00000000000110110110111000110010 Hold 00100000000111111110101110110010 allocating 00000000000011110011111101000000 restatement 00000000000111111101001001001111 anthers 00000000000000000000000000000000 catastrophic-care 00000000000000000000000000000000 brokerages 00000000000111101000000001110011 malpractice 00000000000100100001000000110000 Russo 00101111111110100100001000001000 surtax 00000000000101011011001011100111 enclosed 00000000000000000000000000000000 educating 00000000000000101001001101000000 Floor 00100000000111101101011001000111 2.44 00000000000000000000000000000000 Langton 00100000000000000000000000000000 hikers 00000000000000000000000000000000 Brace 00101111111000000100101000101000 predominantly 00000000000111001111000010010000 Starr 00101111010010101100000010001000 LeBaron 01000000000000100000000001000111 cost-effective 00000000000000000000000000000000 Rohm 00100000000000000000000000000000 Norris 00101111111101001010100010001000 McLaughlin 01001111111101001111000010001000 Aurora 00100000000000000000000000000000 Shidler 00100000000000000000000000000000 Barnicle 00100000000000000000000000000000 Percival 00100000000000000000000000000000 Responding 00100000001111111010111000110010 Harcourt 00100000011111011011010100101000 10.43 00000000000000000000000000000000 pension-fund 00000000000000000000000000000000 dreamed 00000000000111011000110111000010 Leasing 00100000000000000100000001100001 juggle 00000000000000000000000000000000 Wellman 00100000000000000000000000000000 probation 00000000000111111000111000111001 Hale 00101111111000111000111000001000 Karl 00101111111000011001010100001000 one-month 00000000000000000000000000000000 divorce 00000000000111000111111000100001 Siegel 00101111111100101100100010001000 30-point 00000000000000000000000000000000 historians 00000000000000100000000010110011 gimmickry 00000000000000000000000000000000 diaries 00000000000101100111110101100011 unpleasant 00000000000000100001110100010000 Melamed 00101111111100001010110010001000 cycling 00000000000000000000000000000000 Schulte 00101111111101111111000100001000 Chilmark 00100000000000000000000000000000 Bicycle 00100000000000100110001000100001 secrecy 00000000001011100110011010100111 awkward 00000000000000100110110100010000 identification 00000000000000000110011010100111 fervor 00000000000110100111101001100111 30-minute 00000000000000000000000000000000 low-risk 00000000000000000000000000000000 1:30 00000000000000000000000000000000 1,900 00000000000000000000000000000000 Volatility 00100000000111101011111010100111 Rita 00100000000000000000000000000000 barn 00000000000000001010011000000001 prized 00000000000011001000101001000000 metallurgical 00000000000000010010111000101000 expansive 00000000000000100100110100010000 Tet 00100000000000000000000000000000 17.01 00000000000000000000000000000000 Janet 00101111111000011010001000011000 twin-engine 00000000000000000000000000000000 Fukuyama 00100000000000000000000000000000 satisfies 00000001101110000011000000010010 Ethyl 00100000001011011010111100101000 clearer 00000000000000010001001111000000 Version 00100000000111101111101000111111 Damascus 00100000000110110110101101101000 OEX 01000000000000000000000000000000 Arab-sponsored 00100000000000000000000000000000 discredit 00000000000101001011111110110010 high-speed 00000000000000000000000000000000 3.64 00000000000000000000000000000000 prostitute 00000000000000000000000000000000 FmHA 01000000000000000000000000000000 titanium 00000000000100001010101010110000 dons 00000000000000000000000000000000 0.24 00000000000000000000000000000000 208 00000000000000000000000000000000 362 00000000000000000000000000000000 Newcastle 00101111111100010111110001001000 Interferon 00100000000111101101111111001001 decimal 00000000000000000000000000000000 Canal 00100000000000000111001010100101 seedy 00000000000000000000000000000000 22.25 00000000000000000000000000000000 Endowment 00100000000110101111101110111001 17th-century 00000000000000000000000000000000 Moliere 00100000000000000000000000000000 54,000 00000000000000000000000000000000 coveted 00000000000000010001101001000000 interiors 00000000000111101101101111001001 enhancing 00000000000111101011011101000000 cyclosporine 00000000000000000000000000000000 Starzl 00100000000000000000000000000000 Trek 00100000000111111101111111111001 boxy 00000000000000000000000000000000 one-quarter 00000000000000000000000000000000 Barakat 00101111111101100010000010001000 Tunick 00100000000000000000000000000000 rookie 00000000000000000000000000000000 piles 00000000000111100100000100101111 souvenir 00000000000011101000101100100001 Ruskin 00100000000000000000000000000000 sponsorship 00000000000111111110001101001111 Bertussi 00100000000000000000000000000000 Greve 00100000000000000000000000000000 chanted 00000000000000000000000000000000 Granges 00100000000000101010111100101000 Luxembourg 00100000000100000011111001101000 divergent 00000000000000110000010000010000 Barco 00100000000000000000000000000000 furnaces 00000000000000001001101111001001 Quackenbush 00100000000000000000000000000000 Phoenix-based 00100000000000000000000000000000 Wong 00100000000000000000000000000000 sticks 00000000110111100111000000010010 dominating 00000000000010100011011101000000 Ameritech 00100000000111101011011100101000 roof-crush 00000000000000000000000000000000 SAVINGS 01000000000000000000111011100101 3.125 00000000000000000000000000000000 Crest 00100000000100010010010100000001 accumulation 00000000000110111000111001100111 Lombardi 00100000000000000000000000000000 fatalities 00000000000110100011101001100011 Delchamps 00100000000100010011101100101000 sedans 00000000000000000000000000000000 uphill 00000000000000010001110100010000 Accumulation 00100000000110111000111001100111 Oxnard 00100000000000000000000000000000 glitzy 00000000000000000000000000000000 parochial 00000000000010001000101000110000 coupe 00000000000110100110101001100011 Hicks 00101111111100111110011000001000 33,000 00000000000000000000000000000000 transforming 00000000000111011111001101000000 delinquent 00000000000000001000101001000000 Bulgarian 00100000000000000000000000000000 Turks 00100000000111101101100110110011 two-month 00000000000000000000000000000000 AC&R 01000000000000000000000000000000 Paris-based 00100000000000000000000000000000 Oakar 00100000000000000000000000000000 nail 00000000011011010110010110110010 Revlon 00100000000001011011010100101000 3.46 00000000000000000000000000000000 bakeries 00000000000110111110011110101001 unveiling 00000000000111101111000001110111 canvas 00000000000111101010110000000001 dynamics 00000000000000010110010001001000 Parent 00100000000111111100010000110101 Nigeria 00100000000111011100111101101000 spies 00000000000110100100100000110011 USDA 01000000000000000000000000000000 upswing 00000000000100101100111001100111 ENI 01000000000000000000000000000000 30.1 00000000000000000000000000000000 Trident 00100000000111111101110000110000 Mission 00100000000111101011101001100111 depressing 00000000000001110101010001000000 Lichtblau 00100000000000000000000000000000 AEW 01000000000000000000000000000000 mobilized 00000000000000000000000000000000 moon 00000000000111000001111000000001 Europa 00100000000000000000000000000000 Turnover 00100000000111101110001110000111 Per 00100000000000000000010101010000 outbreak 00000000000101101100111001100111 Kramer 00101111111111110000000100001000 curbed 00000000000011110100111001000000 2643.65 00000000000000000000000000000000 contempt 00000000000111101110111000111001 Equus 00100000000000000000000000000000 FMC 01000000000000000000000000000000 textiles 00000000000111110011111010110000 puzzle 00000000000110111101001010110111 IBM-compatible 01000000000000000000000000000000 money-transfer 00000000000000000000000000000000 Saskatchewan 00100000000111100100110001101000 exporting 00000000000111110011110001000000 inventiveness 00000000000000000000000000000000 organic 00000000000010011100101010110000 1989A 01000000000000000000000000000000 gracefully 00000000000000000000000000000000 universally 00000000110001101000000001110010 convent 00000000000000000000000000000000 Thurber 00100000000000000000000000000000 D.C.-based 01000000000000000000000000000000 waning 00000000000010000111110110010000 Conversely 00100000000111110010111011101000 sexes 00000000000000000000000000000000 impress 00000000011100111011111110110010 Amtrak 00100000000000111000101100100101 pioneered 00000001110101000101010000110010 revolt 00000000000111110001101010100111 Troy 00100000000101111011101001101000 Pilevsky 00100000000000000000000000000000 Seeking 00100000000011001110111000110010 reimbursements 00000000000100000001001100000011 fading 00000000000011011011100001000000 38,000 00000000000000000000000000000000 policy-makers 00000000000000000000000000000000 professes 00000000000000000000000000000000 paths 00000000001011100111110101100011 confronted 00000000100111110110010000110010 Kaminski 00100000000000000000000000000000 roiling 00000000000000000000000000000000 complexity 00000000000111111011111000001111 Levinson 00100000000000000000000000000000 Renee 00100000000000000000000000000000 youthful 00000000000001000011000010010000 Businesses 00100000000111100110010001100011 marijuana 00000000000100110111110000100001 crude-oil 00000000000000000000000000000000 Flint 00100000000110100111101001101000 managerial 00000000000111100000000000110000 3.36 00000000000000000000000000000000 protections 00000000000111110111011100100011 licensee 00000000000111110100101010110101 underneath 00000000111010100001000000001010 Soviet-style 00100000000000000000000000000000 Zurkuhlen 00100000000000000000000000000000 Bermuda 00100000000101100111111001101000 Herman 00101111111000100011010100001000 lyrics 00000000000011000111110101100011 confuse 00000000000000100111111110110010 valuing 00000000000111001111001101000000 Helena 00100000000101000100110001101000 stock-picking 00000000000000000000000000000000 16.5 00000000000000000000000000000000 turboprop 00000000000000000000000000000000 eerie 00000000000110011000110100010000 polished 00000000000110000110011010010000 Ruby 00100000000000000000000000000000 XR4Ti 01000000000000000000000000000000 Edsel 00100000000000000000000000000000 high-yielding 00000000000000000000000000000000 customized 00000000000000111100101010110000 teller 00000000000100010011111111001001 academics 00000000000111101110011000110011 appropriately 00000000010100000000010001110010 52.2 00000000000000000000000000000000 T-shirt 00100000000000000000000000000000 Afrikaner 00100000000000000000000000000000 conducts 00000000000110011101000000010010 mistrust 00000000001101100110011010100111 Watergate 00100000000111111000110110110000 Magazines 00100000000110111100110001100011 Downing 00100000000111101101001011110111 Afrikaners 00100000000000000000000000000000 filmed 00000001110001110100010000110010 Sheep 00100000000111010010101100100001 raped 00000000000000000000000000000000 Hendrik 00100000000000000000000000000000 socalled 00000000000000000000000000000000 Forbes 00100011111100010001110000001000 amending 00000000000000000000000000000000 Settle 00100000000111101111011110110010 Score 00100000000111101111001010110111 gasolines 00000000000000000000000000000000 cleaners 00000000000111001000000001111001 stimulated 00000000011100100111010000110010 chronicle 00000000000011101100111101110111 durable-goods 00000000000000000000000000000000 propping 00000000000000000000000000000000 Processing 00100000000000000010000001100001 kit 00000000000000011010100000001000 idled 00000000000000001101101001000000 Sherwood 00101111111001101100111000101000 Buckley 00101111111111111100100010001000 Famous 00100000000000011010000010010000 Wacoal 00100000000000000000000000000000 Sally 00100000000000000010111000011000 graduation 00000000000111110110000000100001 123 00000000000000000000000000000000 alternate 00000000000000100010010100010000 refocus 00000000000101010110110110110010 Klute 00100000000000000000000000000000 boots 00000000000111011001110101100011 parlors 00000000000000000000000000000000 M&A 01000000000000000000000000000000 round-trip 00000000000000000000000000000000 Wagoneer 00100000000000000000000000000000 selectively 00000011010101000000010001110010 dispatch 00000000000111000111100110110111 Gabor 00100000000000000000000000000000 tribute 00000000000110101101111100100111 E 00100000000000000000000000000000 Aussedat 00100000000000000000000000000000 TransAtlantic 01000000000001001000001010110000 Timken 00100000000000000000000000000000 sweepstakes 00000000000000000000000000000000 Salzman 00101111111101110110010010001000 Cipher 00100000000000000000000000000000 tankers 00000000000110101110100000110011 lieu 00000000000111110111011001101111 Pegasus 00100000000000000000000000000000 battles 00000000000110001110110000100111 anti-nuclear 00000000000000000000000000000000 destination 00000000000111111000100101100111 I-880 00100000000000000000000000000000 Grusin 00100000000000000000000000000000 rescissions 00000000000000000000000000000000 dissatisfied 00000000000111000101100000110010 peace-keeping 00000000000000000000000000000000 minimalist 00000000000000000000000000000000 recognizable 00000000000000000000000000000000 McNally 01000000000000000000000000000000 maitre 00000000000000000000000000000000 Claims 00100000000111101110110000100011 Love 00100000000100111110000110110010 toll-free 00000000000000000000000000000000 Dance 00100000000001000111111100100001 Lonski 00101111001001001100000010001000 dwindled 00000000001001111010110000110010 czar 00000000000101100111110000110101 iceberg 00000000000111111001011001100111 fixtures 00000000000000000101110011001001 weeklies 00000000000000000000000000000000 Ahmad 00100000000000000000000000000000 1.8300 00000000000000000000000000000000 141.65 00000000000000000000000000000000 recourse 00000000000111100110101100010111 wonderfully 00000000000000000000000000000000 Syria 00100000000111111010111101101000 PACIFIC 01000000000100101001001010101000 Tibet 00100000000111111000101101101000 tax-writing 00000000000000000000000000000000 undercurrent 00000000000000000000000000000000 Accordingly 00100000000111101101101011101000 3.06 00000000000000000000000000000000 Mortimer 00100000000000000000000000000000 damper 00000000000101001111001011100111 lawful 00000000000000000000000000000000 1979-80 00000000000000000000000000000000 NewsEdge 01000000000000000000000000000000 necks 00000000000000000000000000000000 nuisance 00000000000111101100111000100001 Traditionally 00100000000001011000001001110010 intentional 00000000000000000000000000000000 Ella 00100000000000000000000000000000 grievances 00000000000111101011101000100011 Fitzgerald 00101111111100000110111000001000 FADA 01000000000000000000000000000000 Josh 00100000000000000000000000000000 Genscher 00100000000000000000000000000000 militant 00000000000010010100000010010000 slogan 00000000000110011001111101100111 snagged 00000000000000000000000000000000 melt 00000000000000000000000000000000 retrofitting 00000000000000000000000000000000 slabs 00000000000000000000000000000000 seething 00000000000000000000000000000000 CML 01000000000000000000000000000000 Planned 00100000000000001001001001000000 hopelessly 00000000001011101000000001110010 Carrion 00100000000000000000000000000000 coastal 00000000000000010111110110101000 immigration 00000000000100000001000000110000 Ma 00100000000000000000000000000000 3.92 00000000000000000000000000000000 grievance 00000000000000001111001011100111 Rafael 00101111111100000101000000011101 Veronis 00100000000000000000000000000000 Whelen 00100000000000000000000000000000 wallpaper 00000000000000000000000000000000 724.4 00000000000000000000000000000000 219 00000000000000000000000000000000 enduring 00000000000000110000110100010000 Betsy 00100000000000000000000000000000 looting 00000000000000000000000000000000 2.11 00000000000000000000000000000000 1958 00000000000000000000000000000000 unitholders 00000000000000000000000000000000 Verne 00100000000000000000000000000000 55-year-old 00000000000000000000000000000000 quickest 00000000000000000000000000000000 pollster 00001111111110101010011110110101 likened 00000000001011110101010000110010 flirting 00000000000000000000000000000000 life-style 00000000000000000000000000000000 15.3 00000000000000000000000000000000 fluke 00000000000000000000000000000000 honeymoon 00000000000111111000000001100111 McKinsey 01001111111010010111111010101000 Say 00100000000111111101100110110010 behind-the-scenes 00000000000000000000000000000000 thugs 00000000000000000000000000000000 chickens 00000000000110100001110101100011 Sichuan 00100000000000000000000000000000 revising 00000000000101111011011101000000 suppressed 00000000101011010100010000110010 Industrials 00101111111000000101110110110000 Howe 00101111111000101110001010001000 Estimate 00100000000111111001011010110111 Barring 00100000011100010000000000001010 enhancements 00000000000111111110001010100011 Birnbaum 00101111111001011010000010001000 Main 00100000000000000100010011010000 Libyans 00100000000000000000000000000000 Biehl 00101111111100011100111000001000 soundtrack 00000000000000000000000000000000 66.8 00000000000000000000000000000000 miscalculated 00000000000000000000000000000000 much-larger 00000000000000000000000000000000 depict 00000000000010001001101110110010 bra 00000000000110101001110000000001 ensuing 00000000000000011000000011010000 Americana 00100000000000000000000000000000 Congressmen 00100000000110010110111000110011 near-monopoly 00000000000000000000000000000000 commented 00000000000110110111110111000010 naive 00000000000111001000011010010000 Tonight 00100000000001101100010001110010 wounded 00000001000001110100010000110010 disconnected 00000000000000000000000000000000 button 00000000000110100011001011100111 callable 00000000000101100110110000110010 Audit 00100000000000101110111001100111 lifelong 00000000000000001100101001110000 visibility 00000000000110011011011010100111 Batchelder 00101111111001011110110010001000 spotlight 00000000000111110101111000110111 3.65 00000000000000000000000000000000 635 00000000000000000000000000000000 evacuated 00000000000000000000000000000000 Noble 00100000000001000110000000001000 fools 00000000001010100101110010100111 influence-peddling 00000000000000000000000000000000 Electrical 00100000000000100000101010110000 survivor 00000000000111100011101010110101 distracting 00000000000000000000000000000000 Gadhafi 00100000000111110001111010001000 worms 00000000000011100011110101100011 81.6 00000000000000000000000000000000 thirtysomething 00000000000000000000000000000000 Edge 00100000000101101110111001100111 Len 00100000000000000000000000000000 Planters 00100000000000000001001010101000 record-keeping 00000000000000000000000000000000 pellets 00000000000000000000000000000000 Kimberly-Clark 01000000000000000000000000000000 bunny 00000000000000000000000000000000 Ski 00100000000000100010101100100001 sadly 00000000000011001000001001110010 Waite 00101111111010010101111110101000 43.50 00000000000000000000000000000000 Textron 00100000000111111100111100101000 221 00000000000000000000000000000000 boardroom 00000000000000000000000000000000 Grossman 00101111111110010000100010001000 Ferro 00100000000000000000000000000000 conscience 00000000000111110001001001100111 hopeless 00000000000100110110011010010000 Hochiminh 00100000000000000000000000000000 Finanziaria 00100000000110111100100001001000 dictatorship 00000000000110110111101001100111 Carew 00100000000000000000000000000000 reformist 00000000001101010000000000110000 Nghe 00100000000000000000000000000000 just-ended 00000000000000000000000000000000 guinea 00000000000001101001011110000010 folded 00000000101001001100010000110010 Hanoi 00100000000110000110101101101000 laughs 00000000000011001111000000010010 grapevine 00000000000000000000000000000000 285 00000000000000000000000000000000 two-year-old 00000000000000000000000000000000 dental 00000000000001010001100000110000 Gauloises 00100000000000000000000000000000 Libyan 00100000000000000100010100110000 2.29 00000000000000000000000000000000 3.13 00000000000000000000000000000000 thoroughly 00000010000101000000010001110010 Judging 00100000000101011101000001110010 staid 00000000000000001101000010010000 mid-range 00000000000000000000000000000000 126 00000000000000000000000000000000 Hospitals 00100000000111111010110001100011 Age 00100000000000000000100001000111 healthier 00000000000000011100001111000000 Save 00100000000011111111001110110010 3.31 00000000000000000000000000000000 equaled 00000000001110000001010000110010 simplify 00000000000100110100111110110010 appalled 00000000000001001101110000110010 dearth 00000000000111111111100110111111 Liu 00101111111101011001000100001000 contagious 00000000000000000000000000000000 kills 00000000001100010001000000010010 Jane 00100111111000000000111000011000 drop-off 00000000000000000000000000000000 enthusiastically 00000001011100000000010001110010 fivefold 00000000001110101000010001110010 invoke 00000000001110100011111110110010 sorghum 00000000000000000000000000000000 tribe 00001111111110101011111010001000 remind 00000000000110011010100110110010 spelling 00000000000100100100110000001000 Account 00100000000111101010111110111001 evaluated 00000010011011010100010000110010 Sugar 00100000000000001011101110110000 touches 00000001000111001111000000010010 space-based 00000000000000000000000000000000 up-front 00000000000000000000000000000000 hospitalization 00000000001110100101110010100111 Warshaw 00100000000000000000000000000000 stalling 00000000000100000110100001000000 560 00000000000000000000000000000000 Tonka 00100000000000111110111100101000 cheat 00000000001010010110010110110010 parachute 00000000000011101111110100100001 Tootal 00100000000000000000000000000000 unleashed 00000000001001101100010000110010 Maalox 00100000000000000000000000000000 Cortese 00100000000000000000000000000000 updates 00000000010111001111000000010010 framed 00000010111001001100010000110010 Pamela 00100000001010100100001000011000 Ogonyok 00100000000000000000000000000000 Montgoris 00100000000000000000000000000000 collects 00000000001110011101000000010010 noncriminal 00000000000000000000000000000000 paired 00000000011101110110010000110010 Franciscans 00100000000000000000000000000000 time-honored 00000000000000000000000000000000 Taxes 00100000000000000000110100000011 verification 00000000000000001001100011100001 dentists 00000000000100001100111000110011 41.8 00000000000000000000000000000000 ladies 00000000000000110010011100110011 Notre 00100111111111100101110110101000 Glauber 00100000000000000000000000000000 Biscayne 00100000000000000000000000000000 hobby 00000000000111101110101100100001 Coalition 00100000000100000101101001100111 Vernon 00100000000000000000110100101000 undersecretary 00000000000111100111110110010101 Lauren 00101111111101001001000100001000 Erotic 00100000000000000000000000000000 high-stakes 00000000000000000000000000000000 boiler-room 00000000000000000000000000000000 tax-deferred 00000000000000000000000000000000 confronting 00000001010010010000000000001010 Sala 00100000000000000000000000000000 Davidson 00101111111101001110100010001000 united 00000000000111111101110110101000 novelistic 00000000000000000000000000000000 old-line 00000000000000000000000000000000 Englewood 00100000000111010011101001101000 feminist 00000000000111110000000000110000 relates 00000000000001100001101000110010 palm 00000000000000011110011010101000 KLUC 01000000000000000000000000000000 stockholdings 00000000000000000000000000000000 visions 00000000000111001111000100101111 broadening 00000000000100100111010001000000 ratification 00000000000111101001111101001111 Payments 00100000000111101111101100000011 forgetting 00000000000000000000000000000000 refurbishing 00000000000000000000000000000000 long-simmering 00000000000000000000000000000000 glue 00000000000110100000111101100111 16.7 00000000000000000000000000000000 slips 00000000000101001111000000010010 Smalling 00100000000000000000000000000000 Thorp 00100000000000000000000000000000 Taco 00100000001110110010001000110000 slaughter 00000000000110111011011010100111 log 00000000000000001101001010110111 supply-demand 00000000000000000000000000000000 Weekly 00100000000000000101000101010000 expose 00000000000111100111111110110010 respects 00000000000110111010000010100011 offspring 00000000000110001000111101100011 28.75 00000000000000000000000000000000 Swissair 00100000001011101000110100101000 neutron 00000000000000000000000000000000 1.0 00000000000000000000000000000000 masonry 00000000000000000000000000000000 profited 00000000101111011110001000110010 infamous 00000000000011111111000010010000 vain 00000000000111101000111101010111 Term 00100000000111101101101001000111 huddled 00000000001010011110001000110010 Canter 00100000000000000000000000000000 disastrous 00000000000111000001010010010000 Oriani 00100000000000000000000000000000 Cordis 00100000000000000000000000000000 echoing 00000000000111111110100000001010 shrewd 00000000000000100101000010010000 non-deductible 00000000000000000000000000000000 cheers 00000000000100100111110101100011 binding 00000000000000011001010010010000 seminars 00000000000011111001110101100011 birth-control 00000000000000000000000000000000 Potential 00100000000000000010111000010000 Ty 00100000000000000000000000000000 juggling 00000000000000000000000000000000 squad 00000000000111100110110100000001 insidious 00000000000000000000000000000000 vastly 00000000001100101000010001110010 hobbled 00000000000000000000000000000000 Gottesman 00100000000000000000000000000000 MARKET 01000000000000000000000001011001 merging 00000000000111101110001101000000 postponement 00000000000111111111001001001111 crowds 00000000000111110001110101100011 Mid-Century 01000000000000000000000000000000 balance-of-payments 00000000000000000000000000000000 sophistication 00000000000001010111110100100111 Klauser 00100000000000000000000000000000 rendered 00000010001001001100010000110010 discriminating 00000000000111110111000001000000 pointedly 00000011010001000001001001110010 materially 00000000000100011000000001110010 Crescott 00100000000000000000000000000000 distancing 00000000000000000000000000000000 Advisors 00100000000100000111000101101001 Eisenberg 00101111111100011110000010001000 Schulman 00101111111000101100000010001000 progressive 00000000000000000110011000110000 Solomon 00101111111100001000000100001000 Sobel 00100000000000000000000000000000 Sculley 00101111111100100101000010001000 price-cutting 00000000000000000000000000000000 4.07 00000000000000000000000000000000 Israelis 00100000000110111010100110110011 Volvo 00100000000110000000110100101000 2.06 00000000000000000000000000000000 1.38 00000000000000000000000000000000 wasteful 00000000000010001011000110010000 Comfort 00100000000110110111110100100111 tropical 00000000110001010000001000110000 67-year-old 00000000000000000000000000000000 armies 00000000000111100111011101100011 Losses 00100000000111101111100000000011 Brierley 00100011111000010011111000101000 so-so 00000000000000000000000000000000 C-17 00100000000000000000000000000000 swoon 00000000000000000000000000000000 Olson 00101111111100100000100010001000 21.8 00000000000000000000000000000000 999 00000000000000000000000000000000 shaved 00000000000000000000000000000000 brush 00000000000111101101110110110111 sewing 00000000000000010101010000110000 nicknamed 00000000000000000000000000000000 reinforces 00000000010110000011000000010010 Youth 00100000000101101001110000000001 chiefly 00000000000000101011000001110010 futile 00000000000001000101010010010000 nuances 00000000000000000000000000000000 dispel 00000000010100011011111110110010 290 00000000000000000000000000000000 objectionable 00000000000000101011001110010000 PPG 01000000000000000000000000000000 foreseen 00000000111010010010110000110010 Than 00100000000000000000001110000010 Personnel 00100000000000001001101101100001 S.G. 01000000000000000000000000000000 roadblocks 00000000000000000000000000000000 Pressure 00100000000111101110100100100111 dare 00000000000000000010000110110010 Shippers 00100000000000001100010000110011 USAA 01000000000000000000000000000000 Hundreds 00100000000111101101111000101111 mindless 00000000000000000000000000000000 life-threatening 00000000000000000000000000000000 Westwood 00100000000110110011010100101000 Adults 00100000000000000000001100110011 liar 00000000000000000000000000000000 Appellate 00100000000000000001100111100101 quack 00000000000000000000000000000000 trait 00000000000000000000000000000000 866 00000000000000000000000000000000 non-duck 00000000000000000000000000000000 kylix 00000000000000000000000000000000 unethical 00000000000001001011000110010000 Isle 00100000000000000000000000000000 first-year 00000000000000000000000000000000 curator 00000000000110000111110000110101 preferably 00000000000101111011000001110010 Leucadia 00100000000110101001111000101000 repeating 00000000000111001100001101000000 expressly 00000001000001000001001001110010 LaSalle 01000000000000000000000000000000 excision 00000000000000000000000000000000 Vision 00100000000111101101100101100111 Strategy 00100000000111111111101001100111 Calor 00100000000000000000000000000000 malice 00000000000000000000000000000000 Chubb 00100000000111110000111100101000 Olsen 00101111111101111111000010001000 DARPA 01000000000000000000000000000000 circumspect 00000000000000000000000000000000 homosexuals 00000000000101011100111000110011 Wardair 00100000000000000000000000000000 custom 00000000000001111000001010110000 invite 00000000000101111011101110110010 Brook 00100111001011110001100010100101 Seasons 00100000000000000010011100011011 Restaurants 00100000000111101111110001100011 grateful 00000000000111010011110110010000 charming 00000000000111010000011010010000 stigma 00000000000110011000111101100111 53.7 00000000000000000000000000000000 Pearson 00100000000111111001110000001000 newcomer 00000000000111110111011110110101 maze 00000000000111100111001000111111 animation 00000000000000010100101100100001 hoped-for 00000000000000000000000000000000 downbeat 00000000000000000000000000000000 Point 00100000000111101110010011011011 25.8 00000000000000000000000000000000 Fatah 00100000000000000000000000000000 nostalgia 00000000000110101001110010100111 cartoon 00000000000000000001101100100001 undefined 00000000000000000000000000000000 scorn 00000000000000000000000000000000 blankets 00000000000000000000000000000000 myriad 00000000000111111001000011000000 Caa 00100000000000000000000000000000 B-3 00100000000000000000000000000000 herd 00000000000111110000011000100001 resurfaced 00000000000000000000000000000000 IT 01000000000000000000000011110010 Liability 00100000000010000101101000111001 sketches 00000000000110000110010101100011 encircling 00000000000000000000000000000000 bred 00000000101101101100010000110010 accordance 00000000000111100001100000110010 spinal 00000000000000000000000000000000 provincial 00000000000000011100010000110000 Clinic 00100000000111110110010100000001 Iwai 00100000000000000000000000000000 8.325 00000000000000000000000000000000 freezes 00000000000101100111000000010010 infants 00000000000101001110011100110011 8.17 00000000000000000000000000000000 8.08 00000000000000000000000000000000 woke 00000000000000000000000000000000 administer 00000000000101000011111110110010 talk-show 00000000000000000000000000000000 Nissho 00100000000000000000000000000000 i 00000000000000000000100111110010 PNC 01000000000000000000000000000000 Nam 00100000000101110100000000001000 handlers 00000000000000001000100110001001 lurched 00000000000000000000000000000000 mountains 00000000000111111101110101100011 6.30 00000000000000000000000000000000 civilians 00000000000000000100011100110011 Liberation 00100000000000000110110100100001 Documents 00100000000110101110001000100011 muted 00000000000010100110110110010000 Caesars 00100000000000101011010100101000 unfounded 00000000000011000101000110010000 Nuggets 00100000000000000000000000000000 conditioners 00000000000111111110000001010111 reservation 00000000000000010001001010110000 decreasing 00000000000110111101010001000000 fertilized 00000000000000000000000000000000 Bynoe 00100000000000000000000000000000 bitterness 00000000000110111110111010100111 Fraud 00100000000010000010100010100111 Carboni 00100000000000000000000000000000 43%-owned 00000000000000000000000000000000 Ind 00100000000000000000000000000000 LaGuardia 01000000000000000000000000000000 Fulbright 00100000000000000000000000000000 sweeten 00000000000111101100111110110010 Athens 00100000000111110011111001101000 wording 00000000000111110110011000001111 gaming 00000000000011000110010010110000 plywood 00000000001010000100011010110000 unwieldy 00000000000000000000000000000000 male-sterile 00000000000000000000000000000000 needing 00000000000000010100100101000000 embarrass 00000000011001111011111110110010 beverages 00000000000001101111011111001001 zones 00000000000000000010110100100011 alarms 00000000000001101111000000010010 mapping 00000000000000000110100001000000 enforced 00000101100111010100010000110010 co-chairmen 00000000000000000000000000000000 endorsements 00000000000110000101110101100011 Seventeen 00100000000110111000110100101000 Embarcadero 00100000000000000000000000000000 preserved 00000100110111010100010000110010 Cemetery 00100000000111111100111000000001 clientele 00000000000101111101101001100111 130,000 00000000000000000000000000000000 Putting 00100000000111110111101101000000 neared 00000000001000101001010000110010 1.8400 00000000000000000000000000000000 elevator 00000000000010010101011001100111 malicious 00000000000000000000000000000000 helicopters 00000000000111101011101001100011 thereof 00000000000000000000000000000000 Emanuel 00100000000000001110001000011000 Sumita 00101010001010100000001010001000 skier 00000000000000000000000000000000 disposed 00000000000010101011110000110010 multimillion 00000000000000011011100000010000 dementia 00000000000000000000000000000000 antique 00000000000000110000001000110000 Cushman 00101111111100010111111010101000 Telelawyer 00100000000000000000000000000000 distracted 00000000000111010001110000110010 warfare 00000000000110101011100110001001 six-year 00000000000000000000000000000000 Janachowski 00100000000000000000000000000000 Barris 00100000000000000101000100101000 briefcase 00000000000111100100110000000001 Weaver 00101111111110101110000010001000 cardiac 00000000000001110000000000110000 172 00000000000000000000000000000000 naphtha 00000000000000000000000000000000 vows 00000000000111110010101000110010 cracker 00000000000000000000000000000000 secretly 00000000011100000001001001110010 chaired 00000000000100101111010000110010 Glaser 00100000000000000000000000000000 appropriation 00000000000000000001000011010001 backfired 00000000011100000110001000110010 Pound 00100000000111111111011000010111 Millicom 00100000000111011010111100101000 adhesive 00000000000000000000000000000000 take-or-pay 00000000000000000000000000000000 sightings 00000000000110110011000100101111 254 00000000000000000000000000000000 molecule 00000000000000000000000000000000 Ailes 00100000000000000000000000000000 Armed 00100000000000010001101010110000 disturbed 00000000000010110101110000110010 Sonnett 00100000000000000000000000000000 maneuvers 00000000000111101110110100100011 cranes 00000000000000000000000000000000 unease 00000000000100001110111010100111 identities 00000000000100101000111101100011 Ohio-based 00100000000000000000000000000000 Pay 00100000000111111101001110110010 facial 00000000000000000000000000000000 1.67 00000000000000000000000000000000 Quite 00100000000000000000000001110010 ventilation 00000000000000001011100011100001 deteriorate 00000000001110111101010110110010 Texan 00100000000100101111011110110101 inspect 00000000000000111110001110110010 Broader 00100000000000011000001111000000 stockbroker 00000000000011100111011110110101 Exabyte 00100000000000000000000000000000 Plastics 00100000000011111011111010110000 firsthand 00000000000000101001001111000000 1.625 00000000000000000000000000000000 24-month 00000000000000000000000000000000 lonely 00000000000011101000011010010000 Boulevard 00100000000111110110100010100101 ferocious 00000000000000000000000000000000 robbery 00000000000010010011100010100111 Haagen 00100000000000000000000000000000 reassume 00000000000000000000000000000000 misdemeanor 00000000000001010000010000010000 sustainable 00000000000001010111100000010000 insures 00000000000010100001000000010010 24.4 00000000000000000000000000000000 reappearance 00000000000000000000000000000000 127 00000000000000000000000000000000 franchises 00000000000010000111110100100011 memos 00000000000111100011101000100011 1947 00000000000000000000000000000000 inspected 00001000001011010100010000110010 journalistic 00000000000011110000000000110000 lured 00000000001100011100010000110010 eternal 00000000000010000100110100010000 renovate 00000000000000000000000000000000 co-founder 00000000000000000000000000000000 foul 00000000000000100001110110110111 Marcel 00100000001111111011100010011000 pianist 00000000000101101111011110110101 240,000 00000000000000000000000000000000 proration 00000000000000000000000000000000 Reiss 00100000000000000000000000000000 butcher 00001111111111100011111010101000 lightly 00000000000110100111001001110010 famine 00000000000111001011010010100111 Tigrean 00100000000000000000000000000000 Rocky 00100000000010000010001000110000 Loeb 00101111111010001010100010001000 Ruffo 00100000000000000000000000000000 Angell 00101111111000000101001010001000 ripple 00000000000000011101001010110111 attorney-client 00000000000000000000000000000000 proponent 00000000000111101101001100111111 confrontational 00000000000100000101010010010000 emotions 00000000000111010111111101100011 buffeted 00000000111101010001110000110010 Gilmore 00100000000000000000000000000000 motorist 00000000000000000000000000000000 footage 00000000000001000111110101100011 Coelho 00100000011111111010101010001000 rightly 00000010001001000001001001110010 Glazier 00100000000000000000000000000000 diplomacy 00000000000010001111110010100111 vacating 00000000000110110100100101000000 copyrights 00000000000111001001111001100011 Allstate 00100000000100001001111000101000 lawmaker 00000000000000010010011110110101 construed 00000000001001000010110000110010 broker-dealers 00000000000000000000000000000000 informally 00000000010101000001001001110010 metro 00000000000011010111110110101000 Dallara 00100000000000000000000000000000 Whitford 00100000000000000000000000000000 quarterback 00000000000111000101011110110101 Millis 00101111111010101100000010001000 withhold 00000000001111001111101110110010 inheritance 00000000000101001011100000100001 rank-and-file 00000000000000000000000000000000 alumni 00000000000000000010001101100001 Yankelovich 00100000000000000000000000000000 1.90 00000000000000000000000000000000 lovable 00000000000000000000000000000000 Oji 00100000000000000000000000000000 cornered 00000000000000000000000000000000 Bigger 00100000000000000110001111000000 Rapanelli 00100000000000000000000000000000 convict 00000000000101101000100110110111 Folk 00100000000000010100001100100001 non-strategic 00000000000000000000000000000000 suppression 00000000000111101101101101001111 stature 00000000000011110111101001100111 Universities 00100000000111100101110001100011 Led 00100000000001011011010000110010 designation 00000000000101010000100101100111 Alcee 00100000000000000000000000000000 playground 00000000000000000000000000000000 310 00000000000000000000000000000000 colleague 00000000000111101100011110110101 fliers 00000000000001110100000000110011 back-up 00000000000000000000000000000000 bestowed 00000000110001001100010000110010 current-account 00000000000000000000000000000000 Haiti 00100000000111010110111101101000 progresses 00000000000000000000000000000000 Guardian 00100000000111110111100100100001 16.6 00000000000000000000000000000000 Beaver 00100000000101010110011010101000 disturb 00000000000000000000000000000000 Shields 00101111111001101001000000001000 screaming 00000000001111100110100001000000 Rapids 00100000000111110110100110010101 seriousness 00000000000111101110011000001111 Lebanese 00100000000001010001011000110000 steeply 00000000001011001000010001110010 long-running 00000000000000000000000000000000 Israeli-Palestinian 01000000000000000000000000000000 W 00100000000000000000000000000000 risked 00000000000001111010001000110010 monumental 00000000001100011101000000010000 Angel 00100000000101101011111100001000 bow 00000000000111011110011010101000 landslide 00000000000000000100010011000111 refugee 00000000000011000001011000110000 Juilliard 00100000000000000000000000000000 mimics 00000000000000000000000000000000 leaning 00000000000111100111100001000000 rhythmic 00000000000000000000000000000000 Gottlieb 00101111111101000111000010001000 adamant 00000000000111010111110000110010 forgiven 00000000000100010000010000110010 ante 00000000000111110001111000110111 1.41 00000000000000000000000000000000 tract 00000000000111101110110100000001 Veslefrikk 00100000000000000000000000000000 Sox 00100000000000000111110100100001 mound 00000000000000000000000000000000 puttable 00000000000000000000000000000000 146 00000000000000000000000000000000 excerpts 00000000000100010011110110110010 capitalistic 00000000000100011101000010010000 Picture 00100000000111100110100101100111 4.15 00000000000000000000000000000000 8.24 00000000000000000000000000000000 thefts 00000000000000000000000000000000 unheard 00000000011101101011110000110010 inkling 00000000000000000000000000000000 Baa-2 00100000000000000000000000000000 Morrissey 00100000000000000000000000000000 lays 00000000000101110001001000110010 D&B 01000000000000000000000000000000 Sago 00100000000000000000000000000000 diminishing 00000000000011011101010001000000 clashed 00000000001011110110010000110010 touring 00000000000000100101110101000000 Geo 00100000000101000100110100101000 single-A-plus 01000000000000000000000000000000 26.50 00000000000000000000000000000000 Cobb 00100000000000000000000000000000 contests 00000000000111111110000001100011 dash 00000000000000100100000001000111 Rambo 00100000000111100111011010010000 Julius 00101111111000100100101000101000 Baer 00101111111100010011010001001000 logged 00000000000000000000000000000000 7.62 00000000000000000000000000000000 Pricing 00100000000000000011000011100001 Inventories 00100000000111101101110100000111 Economist 00101111111000000000000100110101 Doctrine 00100000000111110001000011100111 provoking 00000000000010111101111101000000 name-dropping 00000000000000000000000000000000 Erik 00100000000000000000000000000000 Beauregard 00100000000000000000000000000000 cleaned 00000000000110001011001000110010 Randall 00101111111000100001100010011000 flip 00000000000010001011001010110111 Option 00100000000111011111101100100111 borrower 00000000000111100001101010110101 lively 00000000000010010010011010010000 feisty 00000000000011101001000010010000 Gibraltar 00100000000011100011000100101000 Revson 00100000000000000000000000000000 Asquith 00100000000000000000000000000000 levy 00001111111101001010001000001000 champions 00000000010010001111000000010010 stored 00000010000001001100010000110010 Pyszkiewicz 00100000000000000000000000000000 COMPUTER 01000000000000000001011010110000 high-powered 00000000000000000000000000000000 forged 00000000100001101100010000110010 Lever 00100000000110101110000000001000 sore 00000000000000101110011010010000 depositions 00000000000101000011101000100011 Roberto 00100000000000010101100010011000 Edelson 00100000000000000000000000000000 Linden 00100000000100000100001000001000 Vanity 00100000000111101000010000001000 pigment 00000000000000000000000000000000 ultraviolet 00000000001010011100101010110000 forward-rate 00000000000000000000000000000000 25th 00000000000000000000000000000000 Dougherty 00100000000000000000000000000000 advocated 00000000001101101100010000110010 274 00000000000000000000000000000000 Generali 00100000000111110010111100101000 pillars 00000000000000000000000000000000 crumble 00000000000000000000000000000000 5,500 00000000000000000000000000000000 McKinnon 01001111111000000100000101001000 chalked 00000000000000000000000000000000 Coffee 00100000000100111001101110110000 89.6 00000000000000000000000000000000 whip 00000000000000000010000110110101 Dorsey 00100000000000000000000000000000 Sherry 00101111111011001110000100001000 courting 00000000000110000001110101000000 poster 00000000000100011010001011100111 Mr 00100000000000000000000000000000 arbitrary 00000000000001000000000110010000 Abbott 00100000000101111011110000001000 detergents 00000000000000000000000000000000 Kroll 00100000000000000000000000000000 tractor 00000000000000000100001000100001 orchestra 00000000000111111001110100000001 fiasco 00000000000111010100101101100111 booth 00000000000100100000000000001000 Parts 00100000000110101111110111001001 stymied 00000000001000000001110000110010 Jude 00100000000000000000000000000000 radically 00000000001010101000010001110010 rats 00000000000111000110111001100011 essays 00000000001110000101110101100011 Forrester 00100000000000000000000000000000 wastes 00000000000111100011111111001001 definite 00000000001011000001000000010000 arbitrarily 00000000000000000000000000000000 how-to 00000000000000000000000000000000 GM-Jaguar 01000000000000000000000000000000 seasoned 00000000000111101000000110110000 Pohs 00100000000000000000000000000000 cellular-telephone 00000000000000000000000000000000 dresses 00000000001101000111110101100011 hitches 00000000000000000000000000000000 starving 00000000000010101110101001000000 Poore 00100000000000000000000000000000 snapshots 00000000000000000000000000000000 266 00000000000000000000000000000000 Rifkin 00100000000000000000000000000000 darling 00000000000111110001101000111111 Crete 00100000000000000000000000000000 Altogether 00100000000101100100010001110010 Toni 00101111111011001010111000011000 reconsidered 00000000000000000000000000000000 Magnin 00100000000000000000000000000000 20.4 00000000000000000000000000000000 recounts 00000011010011100011000000010010 Counting 00100000000111001000100000110010 importers 00000000000111100100010000110011 discontinuing 00000000000000000000000000000000 Orioles 00100000000000000000000000000000 reseller 00000000000000000000000000000000 14.9 00000000000000000000000000000000 low-margin 00000000000000000000000000000000 8.125 00000000000000000000000000000000 seminar 00000000000100111011001011100111 25.2 00000000000000000000000000000000 BIP 01000000000000000000000000000000 2.40 00000000000000000000000000000000 Berliner 00100000000000000000000000000000 abating 00000000000000000000000000000000 Off 00100000000000000000101100110010 Drake 00100000000000001000010000001000 finest 00000000000000000111110011010000 N.H 01000000000000000000000000000000 closed-door 00000000000000000000000000000000 sins 00000000000111100100111101100011 Butterfinger 00100000000000000000000000000000 aspiring 00000000000000110101101000110000 LifeSavers 01000000000000000000000000000000 sidewalks 00000000000000000000000000000000 Gerry 00101111111111100000000100001000 Gerstner 00100000000000000000000000000000 Aid 00100000000111100100001100100111 Continuing 00100000000000000000010001000000 15.1 00000000000000000000000000000000 Hershey 00100000000111000011000100101000 LDI 01000000000000000000000000000000 chairmanship 00000000000110101111110001100111 53.9 00000000000000000000000000000000 Sonata 00100000000000000000000000000000 IDS 01000000000000000000000000000000 Greenfield 00101111111100100011000010001000 tile 00000000000010100100001000100001 golf-ball 00000000000000000000000000000000 RCA 01000000000000000000000000000000 overcharged 00000110101011010100010000110010 Qantas 00100000000000000000000000000000 Shuman 00100000000000000000000000000000 Oncotech 00100000000000000000000000000000 2036 00000000000000000000000000000000 estates 00000000000111110011110001100011 boilers 00000000000000000000000000000000 rekindle 00000000000000000000000000000000 panicked 00000000001010001001101001000000 worsened 00000000000101011010110000110010 42.9 00000000000000000000000000000000 Triad 00100000000000000001100110101000 Non-performing 00100000000000000000000000000000 developing-nation 00000000000000000000000000000000 evaluations 00000000000011110010001000100011 Tatzel 00100000000000000000000000000000 contingency-fee 00000000000000000000000000000000 Reduction 00100000000111101111101010100111 Election 00100000000000000010010001100111 mayoralty 00000000000000000000000000000000 Norwalk 00100000000000111011101001101000 Leibler 00100000000000000000000000000000 63-year-old 00000000000000000000000000000000 Agnew 00101111111000000010001010001000 Huber 00101111111100110010100010001000 enzymes 00000000000000000000000000000000 Mulhouse 00100000000000000000000000000000 Units 00100000000000000000010000001001 Mineworkers 00100000000000000000000000000000 Striking 00100000000010000001000010010000 twisting 00000000000110101001110001000000 Gelb 00100000000000000000000000000000 satisfactorily 00000000000000000000000000000000 91-day 00000000000000000000000000000000 37.6 00000000000000000000000000000000 Espy 00100000000000000000000000000000 Colin 00101111111000000011010110011000 Tunica 00100000000000000000000000000000 194 00000000000000000000000000000000 Lamm 00100000000000000000000000000000 fatality 00000000000111111100010011000111 182-day 00000000000000000000000000000000 7.962 00000000000000000000000000000000 Newbridge 00100000000000000000000000000000 phosphide 00000000000000000000000000000000 phosphine 00000000000000000000000000000000 amateur 00000000000000000111101000110000 fumigants 00000000000000000000000000000000 buckled 00000000000000000000000000000000 warranties 00000000000100001001001100000011 Calderon 00100000000000000000000000000000 crutches 00000000000000000000000000000000 Loews 00100000000111110100111100101000 surreal 00000000000000000000000000000000 Lite 00101111111011000110000000101001 OCR 01000000000000000000000000000000 Elkus 00100000000000000000000000000000 Chappell 00100000000001110100001000001000 ballets 00000000000000000000000000000000 ballet 00000000000011001101001100100001 tenant 00000000000111101110111000100001 outbid 00000000000000111010010110110010 405 00000000000000000000000000000000 Tewary 00100000000000000000000000000000 mid-afternoon 00000000000000000000000000000000 119.88 00000000000000000000000000000000 2,002 00000000000000000000000000000000 spins 00000000000000000000000000000000 miscarriages 00000000000000000000000000000000 Clothing 00100000000011000011111010110000 Baa-1 00100000000000000000000000000000 Responses 00100000000111001001101000100011 pollsters 00000000000000101101100110110011 cessation 00000000000000000000000000000000 Opportunity 00100000000111111111101100100111 Dash 00100000000000100100000001000111 9.625 00000000000000000000000000000000 Lemon 00100000000110001010001000110000 inserts 00000000000000000000000000000000 cuckoo 00000000000000000000000000000000 free-standing 00000000000000000000000000000000 nests 00000000000000000000000000000000 Shortridge 00100000000000000000000000000000 acceptances 00000000000001010101010001001000 Help 00100000000000000001110110110010 tricks 00000000000110111110010101100011 Umkhonto 00100000000000000000000000000000 Holston 00100000000000000000000000000000 Kwan 00100000000000000000000000000000 Seattle-based 00100000000000000000000000000000 Turtles 00100000000000000000000000000000 Ninja 00100000000000000000000000000000 excite 00000000000000000000000000000000 Gear 00100000000111101000011001001001 Rattner 00100000000000000000000000000000 weakens 00000000101110000011000000010010 raft 00000000000111111100010101111111 uranium-recovery 00000000000000000000000000000000 Fenerty 00100000000000000000000000000000 Team 00100000000111100111110100000001 Jaworski 00100000000000000000000000000000 Goldfein 00100000000000000000000000000000 dormant 00000000000011001111110110010000 eclipse 00000000000000000000000000000000 Kuhn 00101111111100110001110001001000 Mitsotakis 00100000000000000000000000000000 Ritterman 00100000000000000000000000000000 Soap 00100000000011000010101100100001 Taurus 00100000000010001010100001100001 displaced 00000000010110010001110000110010 exploited 00000011010111010100010000110010 trainers 00000000000000000000000000000000 Sands 00100000000111000111110100100001 Aermacchi 00100000000000000000000000000000 AGF 01000000000000000000000000000000 Aspen 00100000000111011100110100101000 underdeveloped 00000000000011111011110001000000 Fitchburg 00100000000000000000000000000000 look-alike 00000000000000000000000000000000 Kitamura 00100000000000000000000000000000 Iken 00100000000000000000000000000000 Nedelya 00100000000000000000000000000000 Lutsenko 00100000000000000000000000000000 Fleckenstein 00100000000000000000000000000000 crippling 00000000000001010100011000010000 Wilber 00100000000000000000000000000000 GI 01000000000000000000000000000000 Savoca 00100000000000000000000000000000 Thames 00100000000000000000000000000000 tracing 00000000001011001010110001000000 commodity-chemical 00000000000000000000000000000000 high-ranking 00000000000000000000000000000000 shrinks 00000000000000101000001000110010 sprung 00000000001100111011001000110010 exacerbates 00000000000000000000000000000000 litigants 00000000000111110010000110110011 Etzioni 00100000000000000000000000000000 violently 00000000000000000000000000000000 portables 00000000000000000000000000000000 left-wing 00000000000000000000000000000000 Harrisburg 00100000000000000000000000000000 Ahold 00100000000000011010111100101000 Vitarine 00100000000000000000000000000000 spooks 00000000000000000000000000000000 Nesbit 00100000000000000000000000000000 deadlocked 00000000101001110100010000110010 Curzio 00100000000000000000000000000000 Bowman 00101111111010100100000010001000 Whereas 00100000000111111001101001000010 briefed 00000000001100101101010000110010 HN 01000000000000000000000000000000 dancer 00000000000110101001011110110101 sitcoms 00000000000000000000000000000000 tremendously 00000000100001101000000001110010 carcinogenic 00000000000000000000000000000000 outlay 00000000000100001101101010001111 Bayer 00100000000111111011011100101000 focal 00000000000000000000000000000000 Wyse 00100000000110101100100100101000 origin 00000000000111110111101001100111 tick 00000000000000000000000000000000 Atherton 00100000000000000000000000000000 Amos 00100000000000000000000000000000 PacifiCare 01000000000000000000000000000000 repudiate 00000000000000000000000000000000 rug 00000000000000110110111000000001 polyurethane 00000000000000000000000000000000 2.61 00000000000000000000000000000000 N.M 01000000000000000000000000000000 Justices 00100000000000001000100110110011 AIM 01000000000111111100111010110111 coolants 00000000000000000000000000000000 414 00000000000000000000000000000000 computer-market 00000000000000000000000000000000 landlords 00000000000001011100111000110011 Peoria 00100000000011011011101001101000 molecules 00000000000111101110100110001001 Babylonian 00100000000000000000000000000000 Relational 00100000000000000000000000000000 3,200 00000000000000000000000000000000 Riccardo 00100000000000000000000000000000 A-body 00100000000000000000000000000000 air-conditioned 00000000000000000000000000000000 passions 00000000000011100100111101100011 Seelenfreund 00100000000000000000000000000000 Sheldon 00101111111000100101100010011000 erect 00000000010001101111101110110010 4.65 00000000000000000000000000000000 698 00000000000000000000000000000000 wheat-growing 00000000000000000000000000000000 Cossiga 00100000000000000000000000000000 Fortney 00100000000000000000000000000000 superconcentrates 00000000000000000000000000000000 superconcentrated 00000000000000000000000000000000 Shamrock 00101111011111101000100100101000 851 00000000000000000000000000000000 distort 00000000001001111011111110110010 Atco 00100000000000000000000000000000 Otradovec 00100000000000000000000000000000 850,000 00000000000000000000000000000000 shopping-center 00000000000000000000000000000000 Birtcher 00100000000000000000000000000000 Surprisingly 00100000000111001100000001110010 144.17 00000000000000000000000000000000 1.9083 00000000000000000000000000000000 Rudnick 00100000000000000000000000000000 Microdyne 00100000000000000000000000000000 Gruntal 00101111111011010111111010101000 Equity-Income 01000000000000000000000000000000 chef 00000000000001011010011110110101 Awad 00100000000000000000000000000000 BMP 01000000000000000000000000000000 Latchford 00100000000000000000000000000000 compositions 00000000000000000000000000000000 spaces 00000000000010110000110100100011 froth 00000000000111101111010100100111 Marilyn 00100000000011110000001000011000 Conde 00101111111111000011001000101000 bulging 00000000000000001010101001000000 myth 00000000000111000101111101100111 Attempts 00100000000111111011011100100111 Nast 00101111111000111010010001001000 thumbs 00000000000000000000000000000000 absenteeism 00000000000111111111111100000111 Zhang 00100000000000000000000000000000 17,500 00000000000000000000000000000000 Timex 00100000000000000000000000000000 Bidermann 00100000000000000000000000000000 cuisine 00000000000011011010110100000001 vanilla 00000000000100101010101100100001 Regan 00101111111100011100010010001000 teeming 00000000000000000000000000000000 lengths 00000000000111011111001000100011 chess 00000000000000001100001100100001 maneuvered 00000000000000000000000000000000 mediation 00000000000000101010100101100101 Perkin-Elmer 01000000000000000000000000000000 impasse 00000000000111111011101000100111 brokered 00000000000111010000011100010000 bees 00000000000111111000100000110011 i860 00000000000000000000000000000000 flair 00000000000111101000111010110101 anticompetitive 00000000000000000000000000000000 Halsey 00100000000000000000000000000000 Birkel 00100000000000000000000000000000 Gatoil 00100000000000000000000000000000 Bogota 00100000000000000000000000000000 monochrome 00000000000000000000000000000000 bishop 00001111111101011010000000001000 ADT 01000000000000000000000000000000 BMA 01000000000000000000000000000000 102.06 00000000000000000000000000000000 1987-style 00000000000000000000000000000000 shareholder-rights 00000000000000000000000000000000 Nobuto 00100000000000000000000000000000 416,290,000 00000000000000000000000000000000 awash 00000000000111101110010000110010 VA 01000000000000000000000000000000 localities 00000000000111101111010010110011 Tests 00100000000101101010001000100011 Something 00100000000000000010010001110010 dishwasher 00000000000000000000000000000000 Evening 00100000000000001000110000010111 Bluefield 00100000000000000000000000000000 Lurie 00101111111110001000000010001000 Seafirst 00100000000100111100111100101000 46.3 00000000000000000000000000000000 brandy 00000000000000000000000000000000 dispute-settlement 00000000000000000000000000000000 Spirits 00100000000011011011111010110000 2163.4 00000000000000000000000000000000 Bergen 00100000000001001010011010101000 Alcohol 00100000000010000011110000100001 rum 00000000000000000000000000000000 cost-control 00000000000000000000000000000000 Palamara 00100000000000000000000000000000 4.17 00000000000000000000000000000000 folklore 00000000000000000000000000000000 Suntory 00100000000011111010111100101000 Kirin 00100000000000000000000000000000 chords 00000000000000000000000000000000 Starkov 00100000000000000000000000000000 fireproofing 00000000000000000000000000000000 Afanasyev 00100000000000000000000000000000 Fakty 00100000000000000000000000000000 Argumenty 00100000000000000000000000000000 sacks 00000000000000000000000000000000 6.03 00000000000000000000000000000000 4.56 00000000000000000000000000000000 arrears 00000000000111111111001100000011 47.1 00000000000000000000000000000000 sawmill 00000000000000000000000000000000 Talbot 00101111111101111101110001001000 Rehabilitation 00100000000000000011001101100001 Sterba 00100000000000000000000000000000 Centennial 00100000000000001010111010101000 51.6 00000000000000000000000000000000 loan-guarantee 00000000000000000000000000000000 52.7 00000000000000000000000000000000 1.8655 00000000000000000000000000000000 141.50 00000000000000000000000000000000 Auditorium 00100000000111001001011001100111 Mondays 00100000000111010011101001100010 unofficially 00000000000000000000000000000000 Ballet 00100000000011001101001100100001 forceful 00000000000000111001000010010000 M4 00100000000000000000000000000000 Tegal 00100000000000000000000000000000 Scherer 00100011111101111100110000001000 glitches 00000000000111001100011000100011 palms 00000000000000000000000000000000 Au 00100000000111100011001101110000 outstripping 00000000000000000000000000000000 Rehnquist 00101111111000001100111010001000 aisle 00000000000000000000000000000000 186 00000000000000000000000000000000 previous-year 00000000000000000000000000000000 heralded 00000001011001101100010000110010 pinched 00000000000000000000000000000000 222.875 00000000000000000000000000000000 Fourth 00100000000000000011011011010000 Feinman 00100000000000000000000000000000 Derr 00100000000000000000000000000000 mechanically 00000000000000000000000000000000 bites 00000000001101001111000000010010 Wal-Mart 01000000000000000000000000000000 322 00000000000000000000000000000000 exhaust 00000000000111110001110110110111 4.76 00000000000000000000000000000000 MacInnis 01000000000000000000000000000000 Massage 00100000000000000000000000000000 2029 00000000000000000000000000000000 coercion 00000000000101011011110010100111 Humphrey 00101111111110100000000100001000 137 00000000000000000000000000000000 ventilated 00000000000000000000000000000000 grand-jury 00000000000000000000000000000000 soot 00000000000000000000000000000000 3.30 00000000000000000000000000000000 Kenyon 00101111111111001111101001001000 b 00000000000000000000000000000000 Crary 00100000000000000000000000000000 plastic-bodied 00000000000000000000000000000000 transferable 00000000000000000000000000000000 Kingston 00100000001100011011101001101000 recombinant 00000000001000101100101010110000 Compound 00100000000111000001001010110111 UGI 01000000000000000000000000000000 viewer 00000000000010000110111000100001 chop 00000000000000000000000000000000 greatness 00000000000000000000000000000000 sizzling 00000000000011111100100000010000 IPOs 01000000000000000000000000000000 postponing 00000000000011001011111101000000 R.P. 01000000000000000000000000000000 Kossuth 00100000000000000000000000000000 Dreman 00101111111011010000110010001000 induced 00000000001110011000110000110010 mute 00000000000000000000000000000000 7.458 00000000000000000000000000000000 dictation 00000000000000000000000000000000 Alcoa 00100000000010000100111100101000 Helionetics 00100000000000000000000000000000 simulators 00000000000000010000111001110011 curators 00000000000000000000000000000000 mastered 00000000000011111100010000110010 Brenda 00101111111001010000001000011000 less-profitable 00000000000000000000000000000000 cachet 00000000000111101101001110100111 toes 00000000000110101101111101100011 Payson 00100000000000000000000000000000 subtract 00000000000000000000000000000000 -one 00000000000000000000000000000000 triple-A-rated 01000000000000000000000000000000 Malizia 00100000000000000000000000000000 Kristol 00101111111100110001000010001000 7.272 00000000000000000000000000000000 Geiger 00100000000000000000000000000000 Raeder 00100000000000000000000000000000 internally 00000000001000100100010001110010 picocassette 00000000000000000000000000000000 microcassette 00000000000000000000000000000000 distributable 00000000000000000000000000000000 McCraw 01000000000000000000000000000000 money-fund 00000000000000000000000000000000 41.4 00000000000000000000000000000000 Dalai 00100000000111001101100011010000 Peterpaul 00100000000000000000000000000000 second-worst 00000000000000000000000000000000 sift 00000000000000000000000000000000 descent 00000000000110010111101001100111 liftoff 00000000000000000000000000000000 35-year-old 00000000000000000000000000000000 depths 00000000000111100111111000001111 Monsky 00101111011001001100000010001000 deflated 00000000000000000000000000000000 Citadel 00100000000100101011000100101000 tempt 00000000000000111011101110110010 eats 00000011010110000011000000010010 Hard 00100000000000000000111110010000 Oncor 00100000000000000000000000000000 sticky 00000000001110011110011010010000 L.L. 01000000000000000000000000000000 smartest 00000000000000000000000000000000 arb 00000000000011000001011001100111 extinguish 00000000000000000000000000000000 blink 00000000000110101101001010110111 bottomed 00000000001111101001001000110010 Biny 00100000000000000000000000000000 downsizing 00000000000010011110011010100111 invaded 00000010111011000101010000110010 Johnstown 00100000000000000000000000000000 44.5 00000000000000000000000000000000 38.4 00000000000000000000000000000000 investigates 00000000000000000000000000000000 Wiedemann 00100000000000000000000000000000 Redfield 00100000000000000000000000000000 guts 00000000000100110111110100100111 ABC-TV 01000000000000000000000000000000 Biondi 00101111111011111100000010001000 Living 00100000000011000001000001000000 substituting 00000000000111100001111101000000 Rosenbach 00100000000000000000000000000000 213 00000000000000000000000000000000 glycols 00000000000000000000000000000000 sleazy 00000000001110011100011010010000 shampoo 00000000011101101011111010110000 retribution 00000000000000000000000000000000 Cuomo 00101111111100100000101010001000 526 00000000000000000000000000000000 biting 00000000000001011010100001000000 bats 00000000000000000000000000000000 securities-law 00000000000000000000000000000000 multi-crystal 00000000000000000000000000000000 Arpanet 00100000000000000000000000000000 abrasive 00000000000001001110110100010000 felon 00000000000000000000000000000000 penny-stock 00000000000000000000000000000000 drugstores 00000000000110001001111001100011 Campo 00100000000000000000000000000000 217 00000000000000000000000000000000 defied 00000000000000101001010000110010 box-office 00000000000000000000000000000000 Cunin 00100000000000000000000000000000 sails 00000000000000000000000000000000 -if 00000000000000000000000000000000 Oversight 00100000000101101100100011100001 Kandahar 00100000000000000000000000000000 brigade 00000000000001010111101001100111 Sovran 00100000000000000000000000000000 fountain 00000000000111010110011010101000 SBA 01000000000000000000000000000000 Disneyland 00100000000111110000101100100001 trappings 00000000000000000000000000000000 1.57 00000000000000000000000000000000 RICOed 01000000000000000000000000000000 peril 00000000000111110100110101100111 wished 00000000000100111011101000110010 forfeitures 00000000000000000000000000000000 now-standard 00000000000000000000000000000000 stationery 00000000000101101011111010110000 overreacted 00000000000000000000000000000000 60.25 00000000000000000000000000000000 Bike 00100000000000101100001000100001 staunch 00000000000001001100011000010000 extort 00000000000000000000000000000000 Biking 00100000000000000000000000000000 anti-bike 00000000000000000000000000000000 artifacts 00000000000000000000000000000000 terror 00000000000011101001110010100111 19-month-old 00000000000000000000000000000000 rangers 00000000000000000111101010101000 47,000 00000000000000000000000000000000 clutching 00000000000000000000000000000000 Gorman 00100000000000000000000000000000 Archer-Daniels-Midland 01000000000000000000000000000000 strengthens 00000110001110000011000000010010 shine 00000000000110100010100110110111 reaffirmed 00000000000111101011111001000000 uniforms 00000000000110011110010101100011 embrace 00000000001001111111110110110010 blends 00000000000000000000000000000000 Masahiro 00100000000000000000000000000000 Gaskin 00100000000000000000000000000000 recouped 00000000010111000100010000110010 newscast 00000000000000000000000000000000 line-up 00000000000000000000000000000000 animated 00000000000000101000110100010000 satirical 00000000000000000000000000000000 RBS 01000000000000000000000000000000 Wald 00100000000000000000000000000000 Yoneyama 00101111010010010100000010001000 Upon 00100000000001000001000000001010 161.5 00000000000000000000000000000000 detriment 00000000000111011011011000001111 Smale 00100000000000000000000000000000 Womack 00100000000000000000000000000000 220,000 00000000000000000000000000000000 NCI 01000000000000000000000000000000 well-balanced 00000000000000000000000000000000 insurance-company 00000000000000000000000000000000 impeccable 00000000000000000000000000000000 Whenever 00100000000011110110101001000010 blowing 00000000000101111110100001000000 Blandon 00100000000000000000000000000000 title-insurance 00000000000000000000000000000000 rigors 00000000000111111110011100001111 single-B-1 01000000000000000000000000000000 single-B 01000000000000000000000000000000 factoring 00000000000010101011111010110000 Wittgreen 00100000000000000000000000000000 25-year-old 00000000000000000000000000000000 151 00000000000000000000000000000000 8.22 00000000000000000000000000000000 off-exchange 00000000000000000000000000000000 achievements 00000000000111101111011101100011 five-hour 00000000000000000000000000000000 G-2 00100000000000000000000000000000 single-B-plus 01000000000000000000000000000000 cache 00000000000000000000000000000000 Ifint 00100000000000000000000000000000 tenth 00000000000111111110100101111111 Chiriqui 00100000000000000000000000000000 relayed 00000000000000000000000000000000 8.56 00000000000000000000000000000000 decries 00000000000000000000000000000000 Cullinet 00100000000101100000100100101000 Matagorda 00100000000000000000000000000000 turnabout 00000000000000000000000000000000 columnists 00000000000000000000000000000000 paralysis 00000000000100110111110010100111 outlawing 00000000000000000000000000000000 Lopid 00100000000000000000000000000000 mandating 00000000110010010000000000001010 rescinding 00000000000000000000000000000000 fore 00000000000000000000000000000000 clamp 00000000000000000000000000000000 24.875 00000000000000000000000000000000 Balcor 00100000000011111111111100101000 Carlyle 00100000000101110011010100101000 Carlucci 00101111111010001000001010001000 Prop. 00100000000000000000000000000000 corridor 00000000000100001001111000000001 Tait 00100000000000000000000000000000 firefighters 00000000000000011101111000110011 Atari 00100000000000100011111100101000 misrepresentation 00000000000110100011100010100111 272,000 00000000000000000000000000000000 99.1875 00000000000000000000000000000000 Pty. 00100000000000000000000000000000 8.95 00000000000000000000000000000000 Obermaier 00100000000000000000000000000000 Lombardo 00100000000000000000000000000000 Edelstein 00100000000000000000000000000000 undertakings 00000000000000000000000000000000 Postels 00100000000000000000000000000000 Gutfreunds 00100000000000000000000000000000 4.67 00000000000000000000000000000000 Postel 00100000000000000000000000000000 lends 00000000011110000011000000010010 floated 00000000000000011100010000110010 Relocation 00100000000111110011001001100001 borrows 00000000000101011101000000010010 lowly 00000000000000000000000000000000 refiner 00000000000111110111110001111001 37.1 00000000000000000000000000000000 Coal 00100000000001000100011010110000 Reedy 00100000000000000000000000000000 Berthold 00100000000000000000000000000000 6.15 00000000000000000000000000000000 Egnuss 00100000000000000000000000000000 2.21 00000000000000000000000000000000 100-stock 00000000000000000000000000000000 Unitrode 00100000000000000000000000000000 AVX 01000000000000000000000000000000 Transgenic 00100000000000000000000000000000 wrecking 00000000000000000000000000000000 Worcester 00100000000110111000101001101000 8.90 00000000000000000000000000000000 Amstrad 00100000000000000000000000000000 959.3 00000000000000000000000000000000 88.12-point 00000000000000000000000000000000 647.33 00000000000000000000000000000000 65.7 00000000000000000000000000000000 222 00000000000000000000000000000000 up-or-down 00000000000000000000000000000000 2.57 00000000000000000000000000000000 Impact 00100000000111111111101110001111 100.4 00000000000000000000000000000000 Hartt 00100000000000000000000000000000 7.227 00000000000000000000000000000000 Permanente 00100000000000000000000000000000 9.39 00000000000000000000000000000000 Eward 00100000000000000000000000000000 Pepper 00100000000111101100111010001000 experimented 00000000010010110110010000110010 extradited 00000000000000000000000000000000 headway 00000000000000110110110100100111 fluctuate 00000000010001111101010110110010 Trustco 00100000000000010010010001001000 Kerschner 00100000000000000000000000000000 9.06 00000000000000000000000000000000 payola 00000000000000000000000000000000 B.F. 01000000000000000000000000000000 deplorable 00000000000000000000000000000000 Boehringer 00100000000000000000000000000000 oak 00000111001100001110011010101000 178 00000000000000000000000000000000 nicknames 00000000000000000000000000000000 Lenny 00100000000000000000000000000000 superintendents 00000000000000000000000000000000 uninvited 00000000000010110001110100010000 Homecoming 00100000000000000000000000000000 Pinter 00100000000000000000000000000000 overboard 00000000000000010010111100110010 shapes 00000000001111001111000000010010 unrealized 00000000000000000110000101010000 Diaper 00100000000000100101011010110000 loves 00000000100101100011000000010010 flashing 00000000000100010110100001000000 hoarding 00000000000000000000000000000000 withstood 00000000000000000000000000000000 quo 00000000000000000100000001111001 gouging 00000000000000000000000000000000 liver 00000000000100001100101011100001 Moleculon 00100000000000000000000000000000 Jelenic 00100000000000000000000000000000 cloth 00000000000011100101110000100001 Safra 00101111111010100010101010001000 snatched 00000000000000000000000000000000 galleries 00000000000010111001110101100011 Irises 00100000000000000000000000000000 landfills 00000000000100110111110001100011 253 00000000000000000000000000000000 upshot 00000000000111111001110000001111 imaging 00000000000000000001100001100001 Emma 00100000000000000000000000000000 intrigue 00000000000100001010111010100111 restructures 00000000000000000000000000000000 Figgie 00101111111100111100111000101000 Controls 00100000000010000111000000010010 Faulding 00100000000000000000000000000000 720,000 00000000000000000000000000000000 resonance 00000000000101001101001111001001 Treasure 00100000000111000100101100100001 Hogan 00101111111111111101001000001000 Toussie 00100000000000000000000000000000 low-budget 00000000000000000000000000000000 846 00000000000000000000000000000000 uncharacteristically 00000000000000000000000000000000 Tacoma 00100000000111000100101001101000 beloved 00000000000000000000100010010000 Drago 00100000000000000000000000000000 rush-hour 00000000000000000000000000000000 double-decking 00000000000000000000000000000000 dismissing 00000000000000101100001101000000 TECHNOLOGY 01000000000001010100111010110000 inserting 00000000000000000000000000000000 minority-owned 00000000000000000000000000000000 399 00000000000000000000000000000000 SYSTEMS 01000000000001000000000001001001 Francois-Poncet 01000000000000000000000000000000 notoriously 00000000000111101100000001110010 153 00000000000000000000000000000000 Scotts 00100000000000000000000000000000 Lott 00100000000000000000000000000000 610 00000000000000000000000000000000 installments 00000000000110000011100011000111 6,500 00000000000000000000000000000000 fiber-optic 00000000000000000000000000000000 bailed 00000000000111011101001000110010 Lenders 00100000000111111110010000110011 Platinum 00100000000110111111101110110000 converters 00000000000000000000000000000000 philosophies 00000000000000000000000000000000 mitigate 00000000001110010111111110110010 Sasea 00100000000000000000000000000000 Tartan 00100000000000000000000000000000 Ikegai-Goss 01000000000000000000000000000000 illiquid 00000000000000000000000000000000 sturdy 00000000000010011110011010010000 7.81 00000000000000000000000000000000 Starting 00100000000110011100111000110010 coupon-equivalent 00000000000000000000000000000000 smack 00000000000000000000000000000000 receptive 00000000000011111110011110010000 GDR 01000000000000000000000000000000 kinder 00000000000111111011011010010000 A&M 01000000000000000000000000000000 163-member 00000000000000000000000000000000 moniker 00000000000000000000000000000000 prince 00000000000111111011111100001000 Patients 00100000000000100000011100110011 spotting 00000000000000000000000000000000 terrifying 00000000000000000000000000000000 crisis-management 00000000000000000000000000000000 emigres 00000000000000000000000000000000 double-deck 00000000000000000000000000000000 absorbs 00000000000000000000000000000000 Graeme 00100000000000000000000000000000 15.75 00000000000000000000000000000000 Libor 00100000000111110001001010101000 gloves 00000000000001111001110101100011 catapult 00000000000000000000000000000000 Reilly 00101111111100101000000010001000 Hoyt 00100000000000000000000000000000 2.51 00000000000000000000000000000000 dent 00000000000111101000111000110111 Folgers 00100000000000000000000000000000 BBDO 01000000000000000000000000000000 Loom 00100000000001101101001010110111 devotion 00000000000111100101111100100111 Plummer 00100000000000000000000000000000 598 00000000000000000000000000000000 tallest 00000000000000000000000000000000 Creative 00100000000001001010000000110000 44.125 00000000000000000000000000000000 eyeing 00000000000000000000000000000000 persisted 00000000010100000110001000110010 Knudsen 00101111111011101101010000101001 Atkinson 00101111111100011101001000001000 86.50 00000000000000000000000000000000 breach-of-contract 00000000000000000000000000000000 580 00000000000000000000000000000000 rerouting 00000000000000000000000000000000 AEG 01000000000000000000000000000000 million-a-year 00000000000000000000000000000000 29.6 00000000000000000000000000000000 bystanders 00000000000000000000000000000000 untold 00000000000000000000000000000000 Jazz 00100000000010010000001100100001 Photography 00100000000111100110001101100001 all-white 00000000000000000000000000000000 deaf 00000000000011000110011010010000 Ottoman 00100000000000000000000000000000 Marysville 00100000000111101111101001101000 Diamond-Star 01000000000000000000000000000000 microscopic 00000000000001111000001000110000 14th 00000000000000000000000000000000 Breene 00100000000000000000000000000000 acrimony 00000000000000000000000000000000 1.92 00000000000000000000000000000000 anecdotal 00000000000000000000000000000000 9.33 00000000000000000000000000000000 Money-fund 00100000000000000000000000000000 Bonfire 00100000000000000000000000000000 Vanities 00100000000000000000000000000000 Bright 00100000000000010101011010010000 Proteins 00100000000110011001111001100011 fiberglass 00000000010110000100011010110000 liquefy 00000000000000000000000000000000 Beau 00100000000000000000000000000000 396,000 00000000000000000000000000000000 seductive 00000000000000000000000000000000 Ballhaus 00100000000000000000000000000000 establishments 00000000000100000111110001100011 cooked 00000000110101001100010000110010 pondering 00000000000010100010010101000000 bribing 00000000000000000000000000000000 undamaged 00000000000000000000000000000000 bogged 00000000000110101001001000110010 Bears 00100000000100100111000000010010 Appleyard 00100000000000000000000000000000 15.8 00000000000000000000000000000000 research-and-development 00000000000000000000000000000000 76.5 00000000000000000000000000000000 Savageau 00100000000000000000000000000000 Bosch 00100000000111111100111010001000 mysteriously 00000000000000000000000000000000 Sleeping 00100000000000000011000001000000 Andre 00101111111000001110000010011000 herds 00000000000111011111111101100011 Additional 00100000000000000000100100010000 Diamandis 00100000000000000000000000000000 mishandled 00000000000011110101101001000000 washed 00000000010110101001001000110010 Datatronic 00100000000000000000000000000000 multilateral 00000000000111110010000000110000 Roulac 00100000000000000000000000000000 43-year-old 00000000000000000000000000000000 hemoglobin 00000000000000000000000000000000 APPLE 01000000000111101110100100101000 Mastro 00100000000000000000000000000000 Bilzerian 00101111111100101101110010001000 ballots 00000000000001100111000001100011 magistrate 00000000000000000101001100001000 Neptune 00100000000000000000000000000000 confidant 00000000000111100110101100111111 plutonium 00000000000000111010110000100001 Jovian 00100000000000000000000000000000 moons 00000000000000000000000000000000 wealthiest 00000000000011010011110011010000 Butz 00100000000000000000000000000000 murderer 00000000000000000000000000000000 Barrier 00100000000111001101111101100111 inmate 00000000000000010111100000110101 Pettee 00100000000000000000000000000000 nationalist 00000000000101000001011000110000 Payne 00101111110100110101001000001000 entrust 00000000000000000000000000000000 Varian 00100000000000000010110000001000 flier 00000000000000010000111101100111 27.8 00000000000000000000000000000000 brewers 00000000000111001010000001110011 Allied-Lyons 01000000000000000000000000000000 Angola 00100000000111101101011101101000 Krat 00100000000000000000000000000000 rails 00000000000000000000000000000000 5.27 00000000000000000000000000000000 unharmed 00000001111001110100010000110010 Prideaux 00100000000000000000000000000000 Cessna 00100000000000000000000000000000 laced 00000000001010110101100000110010 51.1 00000000000000000000000000000000 fetuses 00000000000010000110011100110011 health-conscious 00000000000000000000000000000000 parental-consent 00000000000000000000000000000000 Secaucus 00100000000111011011101001101000 reassess 00000000000000000000000000000000 stirring 00000000000011100110100001000000 Leche 00100000000000000000000000000000 Fresca 00100000000000000000000000000000 short-run 00000000000000000000000000000000 butterfat 00000000000000000000000000000000 Gras 00101111111000001001101100100101 fast-paced 00000000000000000000000000000000 comparative 00000000000010111010000000110000 ONE 01000000000000000000000000010100 'S 01000000000000000000000110000010 Jewelry 00100000010000001011111010110000 Makers 00100000000111100111100111110011 Copy 00100000000111111101111000111111 grips 00000000000001001001010110110010 Belmont 00100000000000000000000000000000 Desc 00100000000000000000000000000000 Affiliated 00100000000000100001100000110010 uninspired 00000000000000000000000000000000 augment 00000000000000000000000000000000 1,600 00000000000000000000000000000000 Crisco 00100000000000000000000000000000 1.51 00000000000000000000000000000000 Regalia 00101111111101000110001010001000 Accessories 00100000000111111111011111001001 Landesbank 00100000000000000000000000000000 Trifari 00100000000000000000000000000000 Monet 00100000000000000000000000000000 pirates 00000000000000000000000000000000 steadfastly 00000000000101100001001001110010 friction 00000000000110101110110000100111 stroll 00000000000000000000000000000000 jewels 00000000000111110110110101100011 contributors 00000000000111100011110000110011 perennial 00000000000001000100011000010000 Mame 00100000000000000000000000000000 doorway 00000000000000000000000000000000 cracking 00000000001111101110100001000000 gripping 00000000000000000000000000000000 Bolinas 00100000000000000000000000000000 checked 00000000110100001100010000110010 232.3 00000000000000000000000000000000 derail 00000000000101110011111110110010 79.4 00000000000000000000000000000000 26.3 00000000000000000000000000000000 motivate 00000000011100100011111110110010 Engine 00100000000001000010001010110000 third-period 00000000000000000000000000000000 Keller 00101111111000111110100010001000 counterclaim 00000000000000000000000000000000 computer-integrated-manufacturing 00000000000000000000000000000000 4.68 00000000000000000000000000000000 grapple 00000000000100001001010110110010 populations 00000000000101011100100000110011 spraying 00000000000000000000000000000000 dispersants 00000000000000000000000000000000 P 00100000000000011001011100110011 Meson 00100000000000000000000000000000 preposterous 00000000000001110101110110010000 Vic 00100000000000000000000000000000 Twenty-five 00100000000000000000000000000000 Beer 00100000000000111011111010110000 rejects 00000010000011100011000000010010 strife 00000000000111001011111010100111 Rex 00101111111011010100001000011000 Amtech 00100000000000000000000000000000 MD-80 01000000000000000000000000000000 elective 00000000000000000000000000000000 comrades 00000000000111000011110000110011 countermeasures 00000000000000000000000000000000 Aruba 00100000000000000000000000000000 comprising 00000000111010010000000000001010 non-accrual 00000000000000000000000000000000 Neave 00100000000000000000000000000000 compel 00000000000110011011101110110010 65-day 00000000000000000000000000000000 four-door 00000000000000000000000000000000 dismantled 00000010010011010100010000110010 40-year 00000000000000000000000000000000 takeoff 00000000000111100110000000100001 carbon-dioxide 00000000000000000000000000000000 Senshukai 00100000000000000000000000000000 cockpit 00000000000111010011110000000001 Rangel 00100000000000000000000000000000 chloride 00000000000011100011111001001001 reinforcements 00000000000000000000000000000000 carve 00000000000010001110101110110010 whipping 00000000000000000000000000000000 ignores 00000110110010000011000000010010 CompuServe 01000000000000000000000000000000 CDA 01000000000000000000000000000000 tax-preparation 00000000000000000000000000000000 Sol 00100000000000000000000000000000 producer-price 00000000000000000000000000000000 deeds 00000000000111100100010101100011 conferring 00000000000000000000000000000000 CSC 01000000000000000000000000000000 convenes 00000000000000000000000000000000 Examples 00100000000111100110100100101111 Mubarak 00101111110000001001110110001000 449.3 00000000000000000000000000000000 49-nation 00000000000000000000000000000000 Mitsuoka 00100000000000000000000000000000 20.2 00000000000000000000000000000000 -including 00000000000000000000000000000000 0.28 00000000000000000000000000000000 solicitations 00000000000111001010001000100011 2.82 00000000000000000000000000000000 2.86 00000000000000000000000000000000 Location 00100000000111011101001001100111 Renzas 00100000000000000000000000000000 Perkins 00101111111110111101001000001000 Dumez 00100000000000000000000000000000 well-servicing 00000000000000000000000000000000 auxiliary 00000000000000000000000000000000 gray-market 00000000000000000000000000000000 carved 00000000001101101001001000110010 wraps 00000000000000000000000000000000 Bateman 00100000000000000000000000000000 Chronicle 00100000000011101100111101110111 stately 00000000000000000000000000000000 graying 00000000000001111110101001000000 10.75 00000000000000000000000000000000 incentive-backed 00000000000000000000000000000000 Marinaro 00100000000000000000000000000000 banner 00000000000000000100100100100001 gentlemen 00000000000111100110011100110011 genocide 00000000000000000000000000000000 Mao 00100000000111101001000100001000 monastery 00000000000000000000000000000000 Rent 00100000000111011010100110110111 coordinates 00000000000000000000000000000000 heaved 00000000000000000000000000000000 gambler 00000000000111111110011111000101 Staar 00100000000000000000000000000000 automated-teller 00000000000000000000000000000000 Hayward 00100000000110110001101001101000 gravely 00000000000000000000000000000000 early-morning 00000000000000000000000000000000 begging 00000000000000100001110101000000 Departments 00100000000100110001110100100011 subvert 00000000000000000000000000000000 staffing 00000000000000001101100011100001 export-oriented 00000000000000000000000000000000 woods 00001111111101101101110001001000 self-proclaimed 00000000000000000000000000000000 193.3 00000000000000000000000000000000 Reidy 00101111101100001100000010001000 Ryan 00101111111111101100001000001000 5.39 00000000000000000000000000000000 Leach 00101111111011011101001000001000 compensatory 00000000000010010000011100010000 hurricanes 00000000000111110011110000110011 storms 00000000011110100111110101100011 maps 00000000000010001101110101100011 impeded 00000000000000000000000000000000 intolerably 00000000000000000000000000000000 Maloney 00100000000000000000000000000000 Deloitte-Touche 01000000000000000000000000000000 Covert 00100000000000011011110000110000 Fault 00100000000111110001110101100111 persona 00000000000000000000000000000000 hotly 00000000000101000111001001110010 allotment 00000000000100010100111001100111 tongue-in-cheek 00000000000000000000000000000000 452 00000000000000000000000000000000 Digate 00100000000000000000000000000000 Pinpoint 00100000000111100100011110110010 Amram 00100000000000000000000000000000 Directorate 00100000000000010001101100100101 personalized 00000000000000000000000000000000 Volokhs 00100000000000000000000000000000 sewage 00000000000000001000110000100001 muck 00000000000000000000000000000000 increments 00000000000111101100001100101111 137.4 00000000000000000000000000000000 pass-through 00000000000000000000000000000000 remotely 00000000001101101000000001110010 litmus 00000000000000000101110000100001 Eddy 00100000000000000000000000000000 inefficiencies 00000000000111011000011000100011 3.05 00000000000000000000000000000000 donnybrook 00000000000000000000000000000000 doubters 00000000000000000000000000000000 Zuckerman 00101111111101101100000010001000 translator 00000000000111101011011110110101 right-to-life 00000000000000000000000000000000 miserable 00000000000001001110011010010000 visa 00000000000001100010000000100001 co-workers 00000000000000000000000000000000 doll 00000000000000100000111000000001 inexperienced 00000000000111000100110100010000 piers 00000000000000000000000000000000 Strange 00100000000000001000011010010000 1957 00000000000000000000000000000000 Spoon 00100000000000000000000000000000 index-fund 00000000000000000000000000000000 Injury 00100000000000000011001100100111 765 00000000000000000000000000000000 Giffen 00100000000000000000000000000000 lamented 00000000000100010111110111000010 four-color 00000000000000000000000000000000 27.6 00000000000000000000000000000000 Numerous 00100000000000101001000011000000 Breakers 00100000000111111010011111010101 filtering 00000000000000000000000000000000 Jihad 00100000000000000000000000000000 785 00000000000000000000000000000000 Sluggish 00100000000000001011100000010000 13.35 00000000000000000000000000000000 Married 00100000001111110100010000110010 TVX 01000000000000000000000000000000 dislikes 00000000000000000000000000000000 Cristiani 00100000000000000000000000000000 rioting 00000000001111110111111010100111 gist 00000000000000000000000000000000 strongman 00000000000110101011000110110101 reservoir 00000000000101001001101010100111 Martinez 00101111111101011110101010001000 wandering 00000000110111000110100001000000 idiots 00000000000000000000000000000000 Duarte 00101111110000000000110110001000 Pascal 00100000000000000000000000000000 Gemina 00100000000000000000000000000000 Antonini 00100000000000000000000000000000 tailor-made 00000000000000000000000000000000 Steidtmann 00100000000000000000000000000000 off-price 00000000000000000000000000000000 134 00000000000000000000000000000000 Nahas 00100000000000000000000000000000 31.1 00000000000000000000000000000000 spares 00000000000000000000000000000000 Vector 00100000000000000000000000000000 Keizaikai 00100000000000000000000000000000 Shioya 00100000000000000000000000000000 Wah 00100000000000000000000000000000 formulating 00000000000011011101111101000000 1950 00000000000000000000000000000000 Ignatius 00100000000000000000000000000000 cooperatively 00000000000000000000000000000000 Sino-British 01000000000000000000000000000000 gravy 00000000000000000000000000000000 Juliano 00100000000000000000000000000000 Rivkin 00100000000000000000000000000000 Sherlund 00101111111101011100000010001000 62.8 00000000000000000000000000000000 Circulation 00100000000111110111100011000111 correlation 00000000000111000110110000100111 brokering 00000000000101101010110001000000 Mist 00100000000000000000000000000000 Gorillas 00100000000000000000000000000000 Boehm 00100000000000000000000000000000 cop 00000000000101110010011110110101 14,000 00000000000000000000000000000000 protocol 00000000000011010111101001100111 thunder 00000000000001011010011010101000 debt-equity 00000000000000000000000000000000 Sarah 00100000001011000010111000011000 countersued 00000000000000000000000000000000 smash 00000000000000000000000000000000 name-droppers 00000000000000000000000000000000 tantamount 00000000000101101100011000110010 performs 00000011010010000011000000010010 Dirks 00100000000000000000000000000000 Venezuelan 00100000000000110110100100110000 20s 00000000000000000000000000000000 Liza 00100000000000000000000000000000 praising 00000000000000011111001101000000 millionaires 00000000000000000000000000000000 multiply 00000000001000011110010110110010 soccer 00000000000000100000101100100001 perks 00000000000111111111010101100011 tonnage 00000000000000000000000000000000 Appalachia 00100000000000000000000000000000 1,620 00000000000000000000000000000000 irresistible 00000000000001000011001110010000 terse 00000000000000001110111000110000 impulse 00000000000110001111111001100111 Zalubice 00100000000000000000000000000000 MADD 01000000000000000000000000000000 Houston-Montgomery 01000000000000000000000000000000 Hughey 00100000000000000000000000000000 Bridget 00100000000000000000000000000000 raking 00000000000000000000000000000000 55.7 00000000000000000000000000000000 obstruction 00000000000111111010111000101111 ever-narrowing 00000000000000000000000000000000 Confair 00100000000000000000000000000000 superiority 00000000000011100111101001100111 Liquidity 00100000000000001010011010100111 Erie 00100000000111010001101001101000 3.03 00000000000000000000000000000000 comedian 00001111111100111111011110110101 Harley-Davidson 01000000000000000000000000000000 syndicating 00000000000000000000000000000000 co-head 00000000000000000000000000000000 crawl 00000000000111101000011000110111 Checchi 00101111111101100110110010001000 overlooking 00000000001000110000000000001010 politicized 00000000000000000000000000000000 Westin 00100000000000011000001000110000 Flynn 00101111111111111001000010001000 okay 00000000000111110011110110010000 Thal 00100000000000000000000000000000 masse 00000000001000000001110100100001 villages 00000000000110111011110001100011 Across 00100000000110100001000000001010 Winston 00101111111000010010111000011000 Dukakis 00101111111100101100101010001000 stacking 00000000000000000000000000000000 one-stop 00000000000000000000000000000000 Getty 00100000000111110110011000101000 Trenton 00100000000000000000000000000000 staffed 00000000000011100001110000110010 Ehman 00100000000000000000000000000000 Petronas 00100000000000000000000000000000 Pet 00100000010000010000001000110000 paid-up 00000000000000000000000000000000 WORKERS 01000000000000000000000000110011 finalized 00000000011010010010110000110010 6.07 00000000000000000000000000000000 Stock-market 00100000000000000000000000000000 state-appointed 00000000000000000000000000000000 colas 00000000000000000000000000000000 29.7 00000000000000000000000000000000 572 00000000000000000000000000000000 banana 00000000000011011101011000110000 Microwave 00100000000011000010101010110000 secretary-general 00000000000000000000000000000000 McGrath 01001111111101001011001000001000 7.84 00000000000000000000000000000000 soldier 00000000000111101111010010110101 recounted 00000000000000000000000000000000 unfinished 00000000000100011010101000110000 McBride 01000000000000000000000000000000 courtyard 00000000000000000000000000000000 lake 00000000001000001000011010101000 conceived 00000001101011000101010000110010 payoff 00000000000111011101111101100111 Westborough 00100000000000000000000000000000 generalize 00000000000000000000000000000000 Carder 00100000000000000000000000000000 maxim 00000000000000000000000000000000 34,000 00000000000000000000000000000000 USACafes 01000000000000000000000000000000 7.63 00000000000000000000000000000000 Knowlton 00101111111101010111110001001000 mainframe-class 00000000000000000000000000000000 1.81 00000000000000000000000000000000 Deerfield 00100000000000000000000000000000 196 00000000000000000000000000000000 peripherals 00000000000111101110110001001001 -such 00000000000000000000000000000000 summed 00000000000000000000000000000000 shipyards 00000000000110001110001001101001 bundles 00000000000000000000000000000000 Sagos 00100000000000000000000000000000 Lew 00101111111000010001000100001000 lords 00000000000111001101100010100111 Signore 00100000000000000000000000000000 foiled 00000000000000000000000000000000 Mattausch 00100000000000000000000000000000 notices 00000000000010001010001000100011 raping 00000000000000000000000000000000 double-edged 00000000000000000000000000000000 late-afternoon 00000000000000000000000000000000 injecting 00000000000000000000000000000000 tracts 00000000000111001011000100101111 finely 00000000000000000000000000000000 Schreibman 00100000000000000000000000000000 Furs 00100000000000000000000000000000 Accords 00100000000100101010010000100111 markkaa 00000000000000000000000000000000 53.1 00000000000000000000000000000000 careened 00000000000000000000000000000000 Lambda 00100000000000000000000000000000 300ZX 01000000000000000000000000000000 O'Donnell 01001111111110101000000010001000 HDTVs 01000000000000000000000000000000 Pao 00100000000000000000000000000000 routed 00000000000000000000000000000000 Motion 00100000000111011101001011100111 awry 00000000000000000000000000000000 expedited 00000000000000010010010100010000 Kollmorgen 00100000000000000000000000000000 Chris-Craft 01000000000000000000000000000000 470.80 00000000000000000000000000000000 antacid 00000000000000000000000000000000 shoulders 00000000000111101000111101100011 R 00100000000000000000000000000000 illnesses 00000000000111110010101010100011 infighting 00000000000111001110111010100111 variable-rate 00000000000000000000000000000000 illustrations 00000000000000000000000000000000 Helsinki 00100000001001000111111001101000 uninformed 00000000000000000000000000000000 drab 00000000000000000000000000000000 victimized 00000000000000000000000000000000 Chosen 00100000000101110010110000110010 bath 00000000000000111100100000100001 Soren 00100000000000000000000000000000 Blodgett 00100000000000000000000000000000 suckers 00000000000000000000000000000000 affirmative-action 00000000000000000000000000000000 budged 00000000111101000110001000110010 chic 00000000000001100110011010010000 insights 00000000000110001101110101100011 registrants 00000000000000000000000000000000 freshmen 00000000000000000000000000000000 post-1987 00000000000000000000000000000000 880,000 00000000000000000000000000000000 exempting 00000000000000000000000000000000 Yellow 00100000000010111010001000110000 citizenship 00000000000111100110110010100111 cooks 00000000000000000000000000000000 laborers 00000000000111110110100000110011 Amway 00100000000011011010111100101000 deceased 00000000000100111110101001000000 den 00000000000000000000000000000000 yacht 00000000000111000111101100100001 varieties 00000000000000010111000100101111 sideways 00000000000000101011111100110010 professions 00000000000111110110001010100011 catfish 00000000000111001000101100100001 soundness 00000000000111001111011000001111 zeros 00000000000000000000000000000000 Sinfonia 00100000000000000000000000000000 shocking 00000000001011100101010010010000 illegitimate 00000000000000001010101000110000 DeLay 01000000000111111100111000110111 flourished 00000000001101000110001000110010 roster 00000000000111110000100101100111 McClelland 01000000000000000000000000000000 entertain 00000000111011101111101110110010 stint 00000000000111111011101110100111 grandmother 00000000000111100110111110000001 restyled 00000000000000000000000000000000 Nichol 00100000000000000000000000000000 NASAA 01000000000000000000000000000000 28.1 00000000000000000000000000000000 fog 00000000000101010000110000000001 styling 00000000000000100111110010100111 wisely 00000000111001100001001001110010 pursuits 00000000000000000000000000000000 financial-planning 00000000000000000000000000000000 blind-sided 00000000000000000000000000000000 minicars 00000000000000000000000000000000 instructs 00000000000000000000000000000000 Limit 00100000000111111111110110110010 UP 01000000000000000000001100110010 sniffs 00000000000000000000000000000000 autograph 00000000000000000000000000000000 asphalt 00000000000000000000000000000000 Furniture 00100000000001000011111010110000 CalMat 01000000000111000101011100101000 Wolfe 00101111011101101100000010001000 Harty 00100000000000000000000000000000 differs 00000000000000010001100100110010 oversized 00000000001101010010101000110000 denounce 00000000011000100011111110110010 LME 01000000000000000000000000000000 slaughtered 00000000000000000000000000000000 fireworks 00000000001011000111110101100011 Livestock 00100000000001001111101110110000 hoard 00000000000100000001101010001111 disenchanted 00000000000101010101100000110010 commemorative 00000000000000000000000000000000 contradictions 00000000000110110111111010100111 conceding 00000000000111100001111010000010 2.70 00000000000000000000000000000000 sneaked 00000000000000000000000000000000 noncontract 00000000000000000000000000000000 watt 00001111111111000000001010001000 electrolytic 00000000000000000000000000000000 Purina 00101111111000100010010001001000 ADN 01000000000000000000000000000000 hills 00000000000000001100000010100101 749 00000000000000000000000000000000 lingerie 00000000000000000000000000000000 Miguel 00101111111000000000000000011101 microcomputer 00000000000000110101011010110000 Terra 00100000011000001111000100001000 Alusuisse 00100000000000000000000000000000 nowadays 00000000000110111100010001110010 Lep 00100000000000000000000000000000 Univision 00100000000111000111111000101000 Warnaco 00100000000000000000000000000000 Corolla 00100000001101111010001010110000 392 00000000000000000000000000000000 Playtex 00100000000010000111111000101000 showrooms 00000000000111111110110000001001 contiguous 00000000000000000000000000000000 Willmott 00100000000000000000000000000000 reckoning 00000000000000000000000000000000 Basf 00100000000000000000000000000000 piling 00000000011011100110100001000000 drying 00000000001111011110100001000000 rye 00000000000000000000000000000000 SE 01000000000001101111000001000111 '90s 00000000000000000000000000000000 Oka 00100000000000000000000000000000 overarching 00000000000000000000000000000000 21st 00000000000000000000000000000000 erase 00000000001100011011111110110010 far-flung 00000000000000000000000000000000 38.8 00000000000000000000000000000000 hunk 00000000000000000000000000000000 livelihood 00000000000000000000000000000000 versa 00001111110110110111111011001101 Chi 00101111111010101011010001001000 six-figure 00000000000000000000000000000000 hogs 00000000000110110101111001100011 0.32 00000000000000000000000000000000 368 00000000000000000000000000000000 adjudicator 00000000000000000000000000000000 fictional 00000000000000011111000010010000 differential 00000000000110000111001010110111 freight-transport 00000000000000000000000000000000 abound 00000000000000010110001000110010 Trucking 00100000000000111011011010110000 bottoming 00000000000000000000000000000000 367.30 00000000000000000000000000000000 abated 00000000000000000000000000000000 hollow 00000000000111011000011010010000 alternating 00000000000000000000000000000000 Dillow 00100000000000000000000000000000 quacks 00000000000000000000000000000000 Lakeland 00100000000000000000000000000000 Regulators 00100000000000000000010010110011 settings 00000000000111100110001010100011 727 00000000000000000000000000000000 Braidwood 00100000000000000000000000000000 harangues 00000000000000000000000000000000 Rowland 00101111111000101001000100001000 wrath 00000000000111111111011000001111 Harsco 00100000000000000000000000000000 Posix 00100000000000000000000000000000 Weston 00101111111000110101001000001000 impeached 00000000000000000000000000000000 full-scale 00000000000000000000000000000000 appraisal 00000000000000110100111001100111 roll-call 00000000000000000000000000000000 1,040 00000000000000000000000000000000 devoid 00000000000000000000000000000000 Approximately 00100000000000010111000001110010 Bloomfield 00100000000111011010011010101000 candid 00000000000001100101010010010000 2689.14 00000000000000000000000000000000 stalwarts 00000000000000000000000000000000 3000 00000000000000000000000000000000 Loggia 00100000000000000000000000000000 Carmine 00100000000000000000000000000000 gospel 00000000000111110110110000000001 soured 00000000000000010110111001000000 Garman 00100000000000000000000000000000 Iceland 00100000001101000111111001101000 Braintree 00100000000000000000000000000000 seafood 00000000000000100100011010110000 XL 01000000000000000000000000000000 microelectronics 00000000000011101011011010110000 gilt 00000000000111010010111110110000 designate 00000000000100000011001110110010 Felix 00101111111000010110001000011000 Fredric 00101111111000111011110110011000 Frost 00100000000111001110000000001000 AIW 01000000000000000000000000000000 Garber 00100000000000000000000000000000 Lavoro 00100000000000000000000000000000 Riviera 00100000000000000000000000000000 distinctively 00000000000000000000000000000000 extremes 00000000000111010100000100101111 stale 00000000000000000000000000000000 cynicism 00000000000110111010111010100111 courtrooms 00000000000000000000000000000000 Supervisors 00100000000011010110101010110011 Hoover 00100000000000111010100000001000 calculator 00000000000000000000000000000000 960 00000000000000000000000000000000 outlining 00000011010010010000000000001010 dearly 00000000000000000000101110111001 Card 00100000000000000001110001111001 Sitco 00100000000000000000000000000000 Lai 00100000000000000000000000000000 Givaudan 00100000000000000000000000000000 Solarz 00100000000000000000000000000000 pinch 00000000000101111101001010110111 residual 00000000000100011010000000110000 1.09 00000000000000000000000000000000 merchandisers 00000000000000010101000000101001 Betty 00100000000000000100101000011000 cake 00000000000110101001111000000001 Woodstream 00100000000000000000000000000000 bakeware 00000000000000000000000000000000 Bhutto 00100000000000000000000000000000 294 00000000000000000000000000000000 Species 00100000000011101010000010100011 Endangered 00100000001100000101101001000000 sexually 00000000001110001000000001110010 humanity 00000000000111001001110010100111 riots 00000000000001000111111010100111 bakery 00000000000100011011111010110000 predetermined 00000000000000000000000000000000 porcelains 00000000000000000000000000000000 shorter-term 00000000000000000000000000000000 credit-easing 00000000000000000000000000000000 snowballed 00000000000000000000000000000000 14.06 00000000000000000000000000000000 Ammann 00100000000000000000000000000000 mysteries 00000000000111000110011000001111 non-invasive 00000000000000000000000000000000 Serious 00100000000000000100000000010000 Manley 00101111111111001011001000001000 leveraged-buy-out 00000000000000000000000000000000 waits 00000000010110011110001000110010 58,000 00000000000000000000000000000000 accomplishment 00000000000110110111111001100111 finger-pointing 00000000000000000000000000000000 strings 00000000000111111000010101100011 Stronger 00100000000000001000001111000000 thinned 00000000000000000000000000000000 bumble 00000000000000000000000000000000 slogans 00000000000110100111110101100011 Champs 00100000000000000000000000000000 Muniak 00100000000000000000000000000000 Radzymin 00100000000000000000000000000000 Cervantes 00100000000000000000000000000000 Mirror 00100000000111111011010001001000 Spartan 00100000001110111000001000110000 stationed 00000001010001110100010000110010 superficial 00000000000100011101000000010000 mercy 00000000000100001111111000001111 glued 00000000000000000000000000000000 machinist 00000000000000000000000000000000 mid-September 01000000000000000000000000000000 Names 00100000000110101111111101100011 Barnum 00100000000000000000000000000000 recapitalizations 00000000000110001100111001100011 GRE 01000000000000000000000000000000 headlined 00000000000000000000000000000000 Bacarella 00100000000000000000000000000000 leaner 00000000000001010100001111000000 pragmatism 00000000000000000000000000000000 cash-flow 00000000000000000000000000000000 kicking 00000000010001101110100001000000 centralized 00000000000010000101010010010000 Underclass 00100000000000000000000000000000 mob 00000000000000001101010000000001 10:40 00000000000000000000000000000000 retail-sales 00000000000000000000000000000000 Sajak 00100000000000000000000000000000 Assume 00100000000111100100100110110010 bloodbath 00000000000000000000000000000000 armored 00000000000111111010001010110000 beers 00001111111111111100111110000010 braced 00000000001011011110110000110010 ravaged 00000000001111100001110000110010 victor 00001111111000000000011000011000 Gainen 00100000000000000000000000000000 Ingram 00100000000000000000000000000000 gratuities 00000000000000000000000000000000 Garcias 00100000000000000000000000000000 76,000 00000000000000000000000000000000 watts 00001111111000001001000000001000 IL-4 01000000000000000000000000000000 Ah 00100000000111111001101011101000 asthma 00000000000000000000000000000000 allergies 00000000000000000000000000000000 irreparable 00000000000000000000000000000000 downgrades 00000000000110100110000000100011 newsroom 00000000000000000000000000000000 foreclosures 00000000000111000110000010100111 anemic 00000000000001111000110100010000 Marrie 00100000000000000000000000000000 72.2 00000000000000000000000000000000 immoral 00000000000110010011110110010000 defections 00000000000111101010000010100111 propagandists 00000000000000000000000000000000 single-B-2 01000000000000000000000000000000 resettable 00000000000000000000000000000000 obnoxious 00000000000000000000000000000000 windfall 00000000000000010011100011000111 spas 00000000000000000000000000000000 acute 00000000000001100110110100010000 addiction-treatment 00000000000000000000000000000000 unemployed 00000000000101001010101000110000 Grants 00100000000000000001110100100011 pleasing 00000000000010010110010010010000 replenished 00000000000000000000000000000000 busier 00000000000000000000000000000000 beefed 00000000000111110111001000110010 Watts 00101111111000001001000000001000 robotic 00000000000000000000000000000000 rotting 00000000000000000000000000000000 plush 00000000010001011000001000110000 475,000 00000000000000000000000000000000 rained 00000000000000000000000000000000 sunshine 00000000000111001111000100101000 3.45 00000000000000000000000000000000 policeman 00000000000111100011011110110101 castle 00001111111111110011111010101000 fractured 00000000000000011101101001000000 emphatically 00000000000000000000000000000000 routing 00000000000000000000000000000000 sales-tax 00000000000000000000000000000000 destinations 00000000000110101111110001100011 clouded 00000000001111010001110000110010 barge 00000000000000001101111010110000 19.3 00000000000000000000000000000000 Avions 00100000000000000000000000000000 fanciful 00000000000000000000000000000000 Rage 00100000000111110010111010100111 diapers 00000000000100101001111001100011 Emirates 00100000000111111100111101110011 Really 00100000000000010100001001110010 production-sharing 00000000000000000000000000000000 quarter-to-quarter 00000000000000000000000000000000 Blanchard 00101111111011101000001010001000 ineptitude 00000000000101000011111010100111 left-right 00000000000000000000000000000000 3.53 00000000000000000000000000000000 imprisoned 00000001010101110100010000110010 obscurity 00000000000000000000000000000000 Somali 00100000000000000000000000000000 Zacks 00100000000110100100110100101000 trespassing 00000000000000000000000000000000 droves 00000000000111111000011001101111 filers 00000000000111010100100000110011 persuading 00000000000000000100001101000000 Gitanes 00100000000000000000000000000000 co-production 00000000000000000000000000000000 wrongly 00000000010001000001001001110010 endeavor 00000000000101000111111001100111 sapped 00000000001000100111010000110010 embarked 00000000000011100000100000110010 RMS 01000000000000000000000000000000 Belding 00100000000000000000000000000000 media-buying 00000000000000000000000000000000 allowable 00000000000000011000000100010000 magical 00000000000010110110011010010000 TCMP 01000000000000000000000000000000 Peanuts 00100000001111110101110010100111 bulbs 00000000000000000001111001100011 Colodny 00100000000000000000000000000000 contrasted 00000000000000001011100000110010 enjoin 00000000000001100111111110110010 Gatos 00100000000000000000000000000000 testers 00000000000000001000111001100011 hoopla 00000000000000000000000000000000 readership 00000000000000000000000000000000 Scandinavia 00100000000001110001111110110000 Observers 00100000000000000000000100010011 Pearl 00100000000100101010011010101000 midafternoon 00000000000110000100010000101000 33.3 00000000000000000000000000000000 editorially 00000000000000000000000000000000 40.4 00000000000000000000000000000000 wrongful 00000000000000000011000110010000 curry 00000000000000000000000000000000 platforms 00000000000111110010110100100011 Administrators 00100000000000100110000010110011 smattering 00000000000000000000000000000000 Concerns 00100000000111101110100100100011 15.125 00000000000000000000000000000000 new-found 00000000000000000000000000000000 Hearings 00100000000111101011010000100111 fattened 00000000000000000000000000000000 Industrie 00100000000111111000010000101000 Waterbury 00100000000000000000000000000000 Voss 00100000000000000000000000000000 beasts 00000000000000000000000000000000 Spendthrift 00100000001001101111111100101000 waving 00000000000111000110100001000000 Hulings 00100000000000000000000000000000 Bel 00100000000000000000000000000000 insulated 00000011100101010100010000110010 conventional-arms 00000000000000000000000000000000 racehorses 00000000000000000000000000000000 McCabe 01001111111111110100001000001000 Catherall 00100000000000000000000000000000 Misanthrope 00100000000000000000000000000000 50.6 00000000000000000000000000000000 Safeway 00100000000000011101000100101000 overdone 00000000000111010101110110010000 Schweppes 00101111111000111101101000101000 Cadbury 00101111111111001111001100101000 Teresa 00100000000000000000000000000000 small-denomination 00000000000000000000000000000000 blips 00000000000000000000000000000000 repossessed 00000000000000000000000000000000 bucks 00000000000111100010000001100011 Hostile 00100000000000000101001100010000 1934 00000000000000000000000000000000 Givens 00100000000000000000000000000000 manipulative 00000000000000000000000000000000 Victoria 00100000000010111101111100001000 rigor 00000000000000000000000000000000 Summerfolk 00100000000000000000000000000000 bastion 00000000000000000000000000000000 tear 00000000010100010110010110110010 Special 00100000000000000010010000010000 cognoscenti 00000000000000000000000000000000 rigorous 00000000000011010101000000010000 businesslike 00000000000000000000000000000000 Stage 00100000000111101110101101100111 re-evaluate 00000000000000000000000000000000 nettlesome 00000000000000000000000000000000 complying 00000000000111010101100000110010 Dooling 00100000000000000000000000000000 meddling 00000000000111101100001110100111 Wallop 00101111111011000000001010001000 5.91 00000000000000000000000000000000 3.84 00000000000000000000000000000000 Fat 00100000000000110101011010010000 7.31 00000000000000000000000000000000 parkway 00000000000000000000000000000000 Rodriguez 00101111111100101111000010001000 cushioned 00000000000000000000000000000000 Parkways 00100000000000000000000000000000 1990-2002 00000000000000000000000000000000 lien 00000000000000001011100011000111 bathrooms 00000000000000000000000000000000 livestock 00000000000001001111101110110000 Broward 00100000000000011010011010101000 price-depressing 00000000000000000000000000000000 ruin 00000000110100111111110110110010 upheavals 00000000000000000000000000000000 conductor 00000000000001111111110000110101 reconstructed 00000000000000000000000000000000 sided 00000000000010110110010000110010 riches 00000000000101110111110010100111 hackles 00000000000000000000000000000000 Kleiber 00100000000000000000000000000000 theorist 00000000000000000000000000000000 4,500 00000000000000000000000000000000 Insider 00100000000111101010011100010000 compiling 00000000000111001001111101000000 Lothson 00100000000000000000000000000000 recoverable 00000000010010101101101001000000 ceramics 00000000000010001011111010110000 Toto 00100000000000000000000000000000 Vaezi 00100000000000000000000000000000 Mahmoud 00100000000000000000000000000000 Mad 00100000000001110000011010010000 Festival 00100000000111101001010100000001 composers 00000000000110011100111000110011 beset 00000000001001101111010000110010 anguish 00000000000111000011110010100111 Haag 00100000000000000000000000000000 geographic 00000000000000100010000000110000 Willens 00100000000000000000000000000000 1930 00000000000000000000000000000000 59.9 00000000000000000000000000000000 Notice 00100000000111001010011010100111 Blandings 00100000000000000000000000000000 clauses 00000000000010001011011100100011 38-year-old 00000000000000000000000000000000 droughts 00000000000000000000000000000000 MORE 01000000000000000000000111000000 abatement 00000000000000000000000000000000 compounding 00000000000111101110100000001010 toil 00000000000000000000000000000000 innovations 00000000000111111001101010100011 99.1 00000000000000000000000000000000 nationalized 00000000000001100101101001000000 swamp 00000000000111111010011110110111 wander 00000000000000000000000000000000 oasis 00000000000000000000000000000000 Oranjemund 00100000000000000000000000000000 Garrett 00101111111000100000000100001000 Thanks 00100000000111110101111000110010 jewel 00000000000111110111011111111001 Lives 00100000000111001111111101100011 wedged 00000000000000000000000000000000 Cannon 00100000000010101011010100101000 336 00000000000000000000000000000000 renovation 00000000000000000110101101001111 *RSB* 01000000000000000000000000000000 Bretz 00101111111000011010000010001000 uninterrupted 00000000000000011010010100010000 Oddly 00100000110101101000000001110010 Titanium 00100000000100001010101010110000 RMI 01000000000000000000000000000000 vindication 00000000000000000000000000000000 capital-goods 00000000000000000000000000000000 465 00000000000000000000000000000000 faltering 00000000000011111011100000010000 Quarter 00100000000111111100110010010111 usefulness 00000000000111101111011000001111 1,250,000 00000000000000000000000000000000 Clients 00100000000111101110110000110011 mismatch 00000000000000000000000000000000 Safe 00100000000011000000011010010000 EARNINGS 01000000000011001010100000000111 Satoshi 00101010001100010000101100011000 spurts 00000000000000111111001000100011 constitutes 00000000000111100001000000010010 Carmon 00100000000000000000000000000000 counterterrorism 00000000000000000000000000000000 powder 00000000000111001110111000000001 backbone 00000000000111110011011000001111 greeting 00000000000000010010000100110001 hugging 00000000000000000000000000000000 furnished 00000000010111000101010000110010 amasses 00000000000000000000000000000000 three-year-old 00000000000000000000000000000000 pleasantries 00000000000000000000000000000000 8.13 00000000000000000000000000000000 3.33 00000000000000000000000000000000 Mainstream 00100000000110100110101001000000 stalwart 00000000000000000000000000000000 Fowler 00101111111000000110100010001000 mate 00000000000000000001101110111001 Murakami 00100000000000000000000000000000 similarities 00000000000111101010110000100111 shakes 00001100010110000011000000010010 Landfill 00100000000001011100100000100001 7.986 00000000000000000000000000000000 8.292 00000000000000000000000000000000 minimill 00000000000000000000000000000000 Johnny 00101111111011011100111000011000 writedowns 00000000000000000000000000000000 Goode 00101111111000010010100010001000 Expenses 00100000000111111110001000000011 289 00000000000000000000000000000000 Kennametal 00100000000000000000000000000000 FIRM 01000000000110101111111011110101 CHICAGO 01000000000111111110100001101000 Muramatsu 00100000000000000000000000000000 rounded 00000000000010001010010110110010 Bunny 00100000000000000000000000000000 Merhige 00100000001111010100111010001000 WHO 01000000000000000000101001110010 Aslanian 00100000000000000000000000000000 disorderly 00000000000000000000000000000000 Slate 00100000000111111011101000111111 imperialists 00000000000000000000000000000000 Buchner 00100000000000000000000000000000 SoundView 01000000000000000000000000000000 optional 00000000000000011100000110010000 refreshing 00000000000000000000000000000000 3090 00000000000000000000000000000000 whisper 00000000000000000000000000000000 one-party 00000000000000000000000000000000 infringes 00000000000000000000000000000000 wiretap 00000000000000000000000000000000 bond-trading 00000000000000000000000000000000 Invest 00100000000111111001010110110010 minuscule 00000000000010111000000000010000 pretend 00000000000111011100100110110010 cares 00000000000111111100110111000010 Wussler 00100000000000000000000000000000 belie 00000000000000000000000000000000 Herzog 00101111111000110010111000101000 protective 00000000000000100100101010110000 Buzzy 00100000000000000000000000000000 E.E. 01000000000000000000000000000000 sheep 00000000000111010010101100100001 discard 00000000000000000000000000000000 Poll 00100000000000001000100000110111 louder 00000000000000000000000000000000 duly 00000011101001000001001001110010 disapproval 00000000000111110011001101001111 Loss 00100000000111101111111101000111 shelved 00000000100101010100010000110010 impulses 00000000000000000000000000000000 recession-resistant 00000000000000000000000000000000 Denny 00100000000111101001111110101000 Tierney 00101111111110001101000010001000 Bauer 00101111111101110000001000001000 usurp 00000000000000000000000000000000 Juan 00101111111100000110000000011101 prohibiting 00000001001010010000000000001010 Grubman 00101111111100111010010010001000 underscoring 00000000000111111001001101000000 17.8 00000000000000000000000000000000 engulfed 00000000000000000000000000000000 Salvadoran 00100000000001000101011000110000 continuous 00000000000101000001000000010000 24th 00000000000000000000000000000000 shun 00000000000001001001101110110010 muscles 00000000000111110011111101100011 steals 00000000000000000000000000000000 Ariel 00100000000000000000000000000000 Oneida 00100000000000000000000000000000 Breweries 00100000000011101011000000101001 Fanuc 00100000000000000000000000000000 proviso 00000000000000000000000000000000 exacerbate 00000000000010000110111110110010 neurologist 00000000000000000000000000000000 shipbuilder 00000000000000000000000000000000 Blue-chip 00100000000000000000000000000000 0.53 00000000000000000000000000000000 boundary 00000000000000110010011000100001 chauffeur 00000000000000000000000000000000 1900s 00000000000000000000000000000000 Freightways 00100000000000000000000000000000 envisioned 00000000111011101100010000110010 Probably 00100000000011000000001001110010 limbs 00000000000000000000000000000000 scaled-down 00000000000000000000000000000000 reopening 00000000001111011111010001000000 embattled 00000000000011100000101001000000 inquiring 00000000000000000000000000000000 Nunn 00100000001100100100111010001000 censored 00000000000000000000000000000000 B2 00100000000000000000000000000000 Ba3 00100000000000000000000000000000 arrivals 00000000000000001001101001100011 sensation 00000000000111110000101101100111 climbs 00000000000101101000001000110010 bales 00000000000000000001010100001011 arriving 00000000000111101011000001000000 Soybean 00100000000000000011101110110000 jerked 00000000000000000000000000000000 Offshore 00100000000000100101101000110000 tethered 00000000000000000000000000000000 fluent 00000000000000000000000000000000 releasing 00000000000010110011111101000000 exhausting 00000000000000000000000000000000 abusive 00000000000000000001100110010000 evolutionary 00000000000000000000000000000000 ESPs 01000000000000000000000000000000 Carlton 00101111111001100000000100001000 hierarchy 00000000000010110111101001100111 attaching 00000000000000000000000000000000 Wa 00100000000000000000000000000000 unnerved 00000000110000100111010000110010 Werke 00101111111010000111101110000111 contractions 00000000000000000000000000000000 Motoren 00101111111101111000000001001000 Bayerische 00101111111010000100101101110000 shrugged 00000000001110001001001000110010 Sekisui 00100000000000000000000000000000 index-linked 00000000000000000000000000000000 Tacker 00100000000000000000000000000000 jargon 00000000000001110111101001100111 pacemakers 00000000000000000000000000000000 38.50 00000000000000000000000000000000 beefing 00000000010111011110100001000000 226.3 00000000000000000000000000000000 Lampoon 00100000000000000000000000000000 four-page 00000000000000000000000000000000 2.17 00000000000000000000000000000000 regroup 00000000000000000000000000000000 31.3 00000000000000000000000000000000 605 00000000000000000000000000000000 flash 00000000000100000111001010110111 Reinsurance 00100000000000010000010010110000 ruthless 00000000000111011111000010010000 informing 00000000000000000001001101000000 splendidly 00000000000000000000000000000000 timed 00000000010001101100110000110010 mask 00000000000100001111001010110111 exclaims 00000000000111111100011111000010 X-ray 00100000000000000000000000000000 dedication 00000000000111010101111100100111 Trying 00100000000111111110011000110010 41.3 00000000000000000000000000000000 10.625 00000000000000000000000000000000 Applebaum 00100000000000000000000000000000 outage 00000000000000000000000000000000 humble 00000000000011011000011010010000 service-center 00000000000000000000000000000000 Konheim 00100000000000000000000000000000 Barnard 00101111111100110010111010001000 Alamos 00100000000000000000000000000000 Bloom 00101111111100110101110010001000 clad 00000000001000011110010000110010 64.9 00000000000000000000000000000000 periodically 00000001001100000000010001110010 scares 00000000000000000000000000000000 mafias 00000000000000000000000000000000 Modern 00100000000000000100001000110000 presale 00000000000000000000000000000000 SALES 01000000000111101110111000000111 brochures 00000000000000010011010101100011 topaz 00000000000000000000000000000000 HEALTH 01000000000000001001100000110000 gurus 00000000000000000000000000000000 co-managing 00000000000000000000000000000000 cured 00000001101010010010110000110010 EARTHQUAKE 01000000000000101111111001100111 Pointe 00100000000000000000000000000000 grandparents 00000000000111011011110000110011 applauded 00000000000110010101010000110010 masked 00000000110101101100010000110010 challengers 00000000000000011100111000110011 line-item-veto 00000000000000000000000000000000 countrymen 00000000000000000000000000000000 dreaded 00000000000000000000000000000000 warriors 00000000000000000000000000000000 blown 00000000001101001001001000110010 ashore 00000000000000000000000000000000 thirds 00000000000000010100011101111011 Objections 00100000000111110101101000100011 BANK 01000000000100101110000001100101 courted 00000001000001000101010000110010 drowned 00000000000000000000000000000000 after-hours 00000000000000000000000000000000 diversions 00000000000000000000000000000000 Motel 00100000000000001001111010110000 seven-year-old 00000000000000000000000000000000 ushers 00000000000000000000000000000000 clarinetist 00000000000000000000000000000000 knights 00000000000000000000000000000000 hotel-casinos 00000000000000000000000000000000 Baja 00100000000000000000000000000000 Ernesto 00100000000000000000000000000000 crap 00000000000000000000000000000000 48,000 00000000000000000000000000000000 Smaller 00100000000000010000001111000000 Excalibur 00100000000000000000000000000000 concerted 00000000011101000001000000010000 sidestep 00000000001011010111111110110010 masquerading 00000000000000000000000000000000 Gortari 00101111111010101100111110000010 yuppie 00000000000000000001101000010000 outpatient 00000000000100100101000000110000 12th 00000000000000000000000000000000 Welfare 00100000000000010000001011100001 spoiled 00000000000110011101101001000000 Revolutionary 00100000000001001001011000110000 52-year-old 00000000000000000000000000000000 658 00000000000000000000000000000000 lightweight 00000000001101011100101010110000 interactive 00000000000010010100101010110000 ADS 01000000000111101111000101100011 External 00100000000000001001000100010000 affordability 00000000000000000000000000000000 junk-mail 00000000000000000000000000000000 business-to-business 00000000000000000000000000000000 portrays 00000010100011100011000000010010 228 00000000000000000000000000000000 catalogs 00000000000100100001110101100011 mailers 00000000000000000110000100100011 devalued 00000000000000001010111001000000 shade 00000000000111101101001010110111 implanted 00000000000000000000000000000000 hedges 00000000000111111101000001111001 folly 00000000000111000101001001100111 velvet 00000000000000000000000000000000 fragments 00000000000011100111110101100011 Undeterred 00100000000000000000000000000000 gardens 00000000000111100001011000000001 Parke 00100000000000000000000000000000 BPC 01000000000000000000000000000000 weaving 00000000001101001010110001000000 Battery 00100000000011111111001000100001 fantasies 00000000000000000000000000000000 -to 00000000000000000000000000000000 interest-free 00000000000000000000000000000000 Leveraged 00100000000111101010111100010000 grandson 00000000000111111001101000111111 Leverage 00100000000110101111110100100111 guarding 00000000000000000000000000000000 8.21 00000000000000000000000000000000 contributes 00000000000000100001101000110010 Holliston 00100000000111111111110101011111 Kerkorian 00101111111110101000001010001000 Golf 00100000000000000110001100100001 Voices 00100000000101001001111101100011 chill 00000000000100111101001010110111 nemesis 00000000000000000000000000000000 Enough 00100000000000000110010001110010 unproductive 00000000000000000000000000000000 kicks 00000000110101001111000000010010 s 00000000000000000000000000000000 relish 00000000000101001110100110110010 Sonny 00100000000000000000000000000000 10-11 00000000000000000000000000000000 utter 00000000000010100101110110110010 Witness 00100000000111101000101010110101 Athena 00100000000000000000000000000000 campuses 00000000000100011100111000110011 1.5820 00000000000000000000000000000000 Schimmel 00100000000000000000000000000000 Lithox 00100000000000000000000000000000 Lego 00100000000000000000000000000000 eloquently 00000000000000000000000000000000 lazy 00000000000110010110011010010000 sighs 00000000000111110110011111000010 adaptation 00000000000110010100111001100111 Dad 00100000000111101110011110000001 Animals 00100000000111101011111001100011 Kaplan 00101111111100101001001000001000 Kirkpatrick 00100000000111111101111010001000 meal 00000000000111111010011000100001 burnt 00000000000000000000000000000000 Uncertainty 00100000000111111110111010100111 Petersen 00101111111100011010100010001000 dirty 00000000000000011101011010010000 vaults 00000000000000000000000000000000 Dalbar 00100000000000000000000000000000 Previous 00100000000000000000000011010000 Horn 00101111111101101111111010101000 puckish 00000000000000000000000000000000 26,000 00000000000000000000000000000000 brilliantly 00000000000000000000000000000000 stalls 00000001011111001111000000010010 relaxed 00000000000011110001010010010000 steroids 00000000000110111010111001100011 Advance 00100000000111101111001001101111 Clements 00101111111010011101001000001000 materialistic 00000000000000000000000000000000 Kakita 00100000000000000000000000000000 Methodist 00100000000000001100110001101000 Death 00100000000111101111011010100111 Keteyian 00100000000000000000000000000000 SMU 01000000000000000000000000000000 casualties 00000000000111110000100000110011 confided 00000000000000000000000000000000 semblance 00000000000000000000000000000000 Delaney 00101111111100000001001000001000 Allowing 00100000000000010000001101000000 fantasy 00000000000111111010001100100001 skid 00000000000100000101001010110111 Gomez 00101111111101001100110010001000 embodied 00000000000000000000000000000000 747-400s 00000000000000000000000000000000 unrealistically 00000000000000000000000000000000 groceries 00000000000101111100111001100011 Daihatsu 00100000000000000000000000000000 snail 00000000000111111111011111000101 Acura 00100000000000000001111100001000 8.07 00000000000000000000000000000000 8.575 00000000000000000000000000000000 Haussmann 00100000000000000000000000000000 V-6 00100000000000000000000000000000 watering 00000000000000000000000000000000 176.1 00000000000000000000000000000000 piston 00000000000000000000000000000000 two-stroke 00000000000000000000000000000000 abolition 00000000000111101001111000001111 insulate 00000000010101111011111110110010 Bach 00100000000000000000000000000000 aquarium 00000000000000000000000000000000 air-conditioning 00000000000000000000000000000000 punching 00000000000000000000000000000000 options-trading 00000000000000000000000000000000 stray 00000000000000000011110110110111 qualifications 00000000000110011011111101100011 spills 00000001010111001111000000010010 Fuel 00100000000000000000110110110111 Ballard 00100000000000000000000000000000 envision 00000000000100101110100110110010 18th 00000000000000000000000000000000 food-service 00000000000000000000000000000000 upstream 00000000000000000000000000000000 2,100 00000000000000000000000000000000 Stevric 00100000000000000000000000000000 cleverly 00000000000000000000000000000000 twin 00000000010001010000001000110000 lopsided 00000000000000000000000000000000 newscasts 00000000000000000000000000000000 hurried 00000000000000000000000000000000 transcripts 00000000000000000000000000000000 self-destructive 00000000000000000000000000000000 Anna 00100000000110101100000100001000 libraries 00000000000111101101110001100011 possession 00000000000111101111100000101111 Glaxo 00100000000000110111111000101000 Altimari 00100000000000000000000000000000 Miner 00100000000100101110010010110101 J.D. 01000000000000000000000000000000 biographer 00000000000111101111110110000001 bigotry 00000000000000000000000000000000 weddings 00000000000000000000000000000000 heirs 00000000000111111111111101100011 Norwitz 00100000000000000000000000000000 computer-maintenance 00000000000000000000000000000000 irked 00000000000000000000000000000000 flavors 00000000000000000011110001100011 cherry 00000000000111010010001000110000 patrol 00000000000000001010100110110111 Dixon 00101111111111000000001000001000 Kolber 00100000000000000000000000000000 ethos 00000000001001101011111001100111 norm 00000000000111100000110011100111 Judy 00101111110000110000001000011000 well-paid 00000000000000000000000000000000 overproduction 00000000000100001011111010100111 inexorable 00000000000000000000000000000000 Scotia 00100000000000011010010001001000 receivable 00000000000000010000100000100111 ex-President 01000000000000000000000000000000 risking 00000000000011100100100101000000 spearheaded 00000000000000100111010000110010 admittedly 00000011000000000000001001110010 co-sponsored 00000000000000000000000000000000 obsessed 00000000000011110101100000110010 looser 00000000000000000000000000000000 tacitly 00000000000000000000000000000000 Sutro 00100000000000000000000000000000 grumble 00000000000000000000000000000000 retarded 00000000000000000000000000000000 Place 00100000000111101111110101010111 gunned 00000000100110101001001000110010 intimidation 00000000000101100111100010100111 spontaneously 00001010011000000000010001110010 wields 00000000000000000000000000000000 full-length 00000000000000000000000000000000 McMillin 01001111011100101100000010001000 47.125 00000000000000000000000000000000 co-sponsor 00000000000000000000000000000000 3.375 00000000000000000000000000000000 misrepresented 00000110110111010100010000110010 controversies 00000000000110101010111010100111 memorabilia 00000000000000000000000000000000 desk-top 00000000000000000000000000000000 Brand 00100000000000000000011000100001 20.3 00000000000000000000000000000000 bargained 00000000000000000000000000000000 28,000 00000000000000000000000000000000 poignant 00000000000100000111000010010000 fiscal-first 00000000000000000000000000000000 lush 00000000000000000000000000000000 super 00000000000000010001001000110000 implying 00000000000111110001111010000010 dividing 00000000000000011100001101000000 dictated 00000000011101010001110000110010 53-year-old 00000000000000000000000000000000 dirt 00000000000001101001110000100001 Kabel 00100000000000000000000000000000 9.25 00000000000000000000000000000000 8.59 00000000000000000000000000000000 461 00000000000000000000000000000000 valves 00000000000111111100101111001001 Duriron 00100000000000000000000000000000 family-owned 00000000000000000000000000000000 Amazing 00100000000010101110110100010000 mentions 00000001111011100011000000010010 comedic 00000000000000000000000000000000 Thin 00100000000111111010011100010000 commentators 00000000000110000010000010110011 Gotlieb 00100000000000000000000000000000 departed 00000110010111010100010000110010 wicked 00000000000000000000000000000000 repel 00000000010110010111111110110010 Sex 00100000000000111011110000100001 Male 00100000000001110000101000110000 kingpins 00000000000000000000000000000000 50-a-share 00000000000000000000000000000000 Epilepsy 00100000000000000000000000000000 psychoanalyst 00000000000000000000000000000000 Fedders 00100000000000000000000000000000 Nightline 00100000000000000000000000000000 sculpture 00000000000111101010111000000001 unfolding 00000000001001011111010001000000 13.75 00000000000000000000000000000000 modifies 00000000000000000000000000000000 hitch 00000000000111110100111010110101 Swavely 00100000000000000000000000000000 good-natured 00000000000000000000000000000000 Peripherals 00100000000111101110110001001001 blue-chips 00000000000000000000000000000000 virility 00000000000000000000000000000000 Holler 00100000000000000000000000000000 101,250 00000000000000000000000000000000 Gradmann 00100000000000000000000000000000 0.12 00000000000000000000000000000000 well-to-do 00000000000000000000000000000000 22.2 00000000000000000000000000000000 134.8 00000000000000000000000000000000 cardboard 00000000000111010000101100100001 Reaching 00100000000111101100100101000000 favoring 00000000010010010000000000001010 verbatim 00000000000000000000000000000000 233 00000000000000000000000000000000 defaulting 00000000000000000000000000000000 smoother 00000000000000000000000000000000 telephoned 00000000000011101101010000110010 Lights 00100000000011001111110101100011 busted 00000000000000000000000000000000 middle-income 00000000000000000000000000000000 inconclusive 00000000000000000101110110010000 toying 00000000001101110101100000110010 1.73 00000000000000000000000000000000 tar 00000000000111000101110000100001 foreclosure 00000000000000011001111000010000 59.4 00000000000000000000000000000000 documenting 00000000000000000000000000000000 cute 00000000000011100110011010010000 Horse 00100000000000010110001100100001 Greenspon 00101111110100111000000010001000 Ira 00100000000000000011111100001000 belly 00000000000000000011111110110000 bacon 00000000000111110000000000001000 inadequacy 00000000000000000000000000000000 Wilmouth 00100000000000000000000000000000 bubble 00000000000111011001111000000001 enjoyable 00000000000000000000000000000000 Senate-passed 00100000000000000000000000000000 0.43 00000000000000000000000000000000 Y 00100000000000000000000000000000 non-voting 00000000000000000000000000000000 Osborne 00101111100010101100000010001000 0.31 00000000000000000000000000000000 2.05 00000000000000000000000000000000 decorative 00000000000000101010101010110000 linger 00000000011101111101010110110010 34.6 00000000000000000000000000000000 40.6 00000000000000000000000000000000 207 00000000000000000000000000000000 193 00000000000000000000000000000000 35.2 00000000000000000000000000000000 martial 00000000000111000001000000110000 compromising 00000000000000000000000000000000 honored 00000000000001101101110000110010 fury 00000000000000000000000000000000 Dresden 00100000000000000000000000000000 respiratory 00000000000001100101000000110000 improbable 00000000000000110001001110010000 differed 00000000000011011110001000110010 refrigerator 00000000000101111101111000000001 Savin 00100000000110010100111100101000 torrid 00000000000000000000000000000000 clipped 00000000000000000000000000000000 sparkling 00000000001000011100011010010000 contract-drilling 00000000000000000000000000000000 superb 00000000001100001100011010010000 4.20 00000000000000000000000000000000 oh 00000000000111111010101011101000 46.9 00000000000000000000000000000000 Hydro 00100000000011101011010001001000 68.5 00000000000000000000000000000000 Ruiz 00101111111010000110000010001000 961 00000000000000000000000000000000 3.60 00000000000000000000000000000000 gulf 00000000000100100110001110101000 vagaries 00000000000000000000000000000000 Lintas 00100000000111000111101110110000 45-a-share 00000000000000000000000000000000 cousins 00000000000111001100100000110011 angle 00000000000011000111111001100111 Marie-Louise 01000000000000000000000000000000 aberration 00000000000111111000101000100111 Bottling 00100000000000011000011010110000 Movie 00100000000011011000101000100001 657 00000000000000000000000000000000 2-1 00000000000000000000000000000000 Marron 00101111111001011100000010001000 collaborated 00000000000000000000000000000000 labor-backed 00000000000000000000000000000000 Parsippany 00100000001111011011101001101000 MEMOS 01000000000111100011101000100011 MINOR 01000000000000001010000000010000 overriding 00000000001000011000110100010000 fighters 00000000000000000000110110001001 plotters 00000000000000000000000000000000 Rahway 00100000000000000000000000000000 nominations 00000000000111000011101000100011 Catastrophic 00100000000111000101000000110000 Kingsbridge 00100000000000000000000000000000 botched 00000000000000000000000000000000 impede 00000000001100111011111110110010 rejoin 00000000000000000000000000000000 remorse 00000000000000000000000000000000 NAM 01000000000101110100000000001000 revamp 00000000000100101100111110110010 undesirable 00000000000010000101000110010000 0.20 00000000000000000000000000000000 lodged 00000000000000000110010000110010 infections 00000000000100111010110010100111 disposals 00000000000000000000000000000000 shrunk 00000000000111011010110000110010 unsure 00000000001010111111110000110010 1.99 00000000000000000000000000000000 trade-offs 00000000000000000000000000000000 Enimont 00100000000000000000000000000000 Heyden 00100000000000000000000000000000 der 00001111111001100001110100100001 cookie 00000000001000101011111010110000 surpassing 00000000000111100111011010000010 accumulate 00000000000111101000001110110010 flawless 00000000000000000000000000000000 Jeancourt-Galignani 01000000000000000000000000000000 nuts 00000000000101100101110010100111 bolts 00000000000111100011010101100011 M'Bow 01000000000000000000000000000000 COMMUNICATIONS 01000000000010000010010010110000 puzzling 00000000000000100100110110010000 Sofitel 00100000000000000000000000000000 straightforward 00000000000011100101010010010000 equitable 00000000000000011001111000101000 Salvation 00100000000111100001111000010000 non-cash 00000000000000000000000000000000 10.7 00000000000000000000000000000000 operatives 00000000000100101010000010110011 fills 00000000110010000011000000010010 Laidig 00100000000000000000000000000000 Patriarca 00100000000000000000000000000000 lieutenants 00000000000000000000000000000000 yelled 00000000000000000000000000000000 Attention 00100000000111101101110100100111 bugged 00000001000101110100010000110010 professed 00000000000000000000000000000000 Budweiser 00100000000000000000000000000000 defender 00000000000111101111001100111111 unwritten 00000000000001011010010100010000 Pirko 00100000000000000000000000000000 kidnapper 00000000000000000000000000000000 waging 00000000000111110010010101000000 Thunderbird 00100000000000000000000000000000 hawk 00000000000000011010001000110000 Vandenberg 00100000000000000000000000000000 examinations 00000000000110100010001000100011 Rayburn 00100000000000000000000000000000 cooperated 00000000001110110110010000110010 underwent 00000000001011001011000000010010 2.41 00000000000000000000000000000000 Charities 00100000000110011000111000110011 containerboard 00000000000000000000000000000000 8.31 00000000000000000000000000000000 ramp 00000000000111101011110110110111 mechanics 00000000000111101100100000110011 Bedford 00100000000111000110101001101000 improprieties 00000000000101000111100010100111 stock-repurchase 00000000000000000000000000000000 gung-ho 00000000000000000000000000000000 precarious 00000000000111100101010010010000 Wachtel 00101111111110100010101010001000 ALPA 01000000000000000100110100101000 resounding 00000000000000000000000000000000 Wasserstein 00101111111100100110101010001000 1,859 00000000000000000000000000000000 investigational 00000000000000000000000000000000 anti-viral 00000000000000000000000000000000 Modzelewski 00100000000000000000000000000000 INVESTMENT 01000000000001000000100010110000 ridicule 00000000000111110010110010110111 MacMillan 01000000000111111110101100101000 Bloedel 00100000000000100001101000101000 37.75 00000000000000000000000000000000 singling 00000000011111000110100001000000 Chiusano 00100000000000000000000000000000 indecency 00000000000000000000000000000000 containment 00000000000000000000011111111001 Stung 00100000100110000001110000110010 outweighed 00000000010000100111010000110010 misuse 00000000000111110011011001101111 Compare 00100000000111001011011110110010 cop-killer 00000000000000000000000000000000 digest 00000000000111001110100110110111 microchip 00000000000000001100001000100001 sentimental 00000000000010001011011010010000 Rodgers 00101111000010101100000010001000 Cecin 00100000000000000000000000000000 tepid 00000000000000000000000000000000 get-out-the-vote 00000000000000000000000000000000 4.03 00000000000000000000000000000000 Medco 00100000000000000000000000000000 33.25 00000000000000000000000000000000 hammering 00000000000000000000000000000000 ideals 00000000000100001000111101100011 jugs 00000000000000000000000000000000 99.8 00000000000000000000000000000000 first-home 00000000000000000000000000000000 cloture 00000000000000000000000000000000 filibuster 00000000000111110111101010110111 scorecard 00000000000000000000000000000000 Leona 00100000000000000000000000000000 Freedman 00101111111001001110100010001000 Glen 00101111111001110000001000011000 leisurely 00000000000000000000000000000000 nonunion 00000000000001101000101000110000 brutal 00000000000111000001000000010000 slaps 00000000000000000000000000000000 costumes 00000000000111110011010101100011 prostitutes 00000000000110000000111000110011 confronts 00000000000000000000000000000000 adhesives 00000000000111110111111010110000 Ellen 00101111111011010100111000011000 refocused 00000000000000000000000000000000 reprieve 00000000000000000000000000000000 Rep 00100000000000000000000000000000 vogue 00000000000110011111111001101000 ambiguities 00000000000000000000000000000000 shiny 00000000000000000111011010010000 trepidation 00000000000000000000000000000000 balking 00000000000000000000000000000000 reeled 00000000000000000000000000000000 bond-price 00000000000000000000000000000000 assembling 00000000000000001001111101000000 bolstering 00000000000111001111011101000000 laboring 00000000000000000000000000000000 blitz 00000000000111111010000001100111 1.83 00000000000000000000000000000000 Bouygues 00100000000100101110110000001000 decay 00000000000100100101110010100111 30.2 00000000000000000000000000000000 ordeal 00000000000001101011111001100111 Taken 00100000000111110010110000110010 whacked 00000000000000000000000000000000 56.9 00000000000000000000000000000000 interrogated 00000000000000000000000000000000 CVN 01000000000000000000000000000000 snakes 00000000000000000000000000000000 flashlights 00000000000000000000000000000000 donors 00000000000111010111110000110011 rang 00000000001010111011001000110010 spaghetti 00000000000000000000000000000000 fact-finding 00000000000000000000000000000000 Hormats 00100000000000000000000000000000 Tiffany 00101111111111011111111010101000 Isetan 00100000000000000000000000000000 patriotic 00000000000110011000000000110000 garnered 00000000001001000100010000110010 realm 00000000000111011110011000001111 anti-smoking 00000000000000000000000000000000 308.32 00000000000000000000000000000000 defying 00000000000111001101001101000000 downplayed 00000000000000000000000000000000 Marlboro 00100000000001110101001000110000 Cholet 00100000000000000000000000000000 Grobstein 00100000000000000000000000000000 Bad 00100000000000000000101010010000 Nolan 00100000000000000000000000000000 gardening 00000000000001111000101100100001 nutrition 00000000000000010011001101100001 literacy 00000000000000001110001101100001 recipient 00000000000111101001100101100111 403 00000000000000000000000000000000 Acting 00100000000001000000000001000000 daytime 00000000000100011000001000110000 shoestring 00000000000000000000000000000000 ambivalence 00000000000000000000000000000000 innocence 00000000000101111010110010100111 dialects 00000000000000000000000000000000 inferior 00000000000000010101001110010000 lump-sum 00000000000000000000000000000000 comparing 00000000000110001111111101000000 Private-sector 00100000000000000000000000000000 fortunate 00000000000101101111110000110010 statist 00000000000000000000000000000000 gossipy 00000000000000000000000000000000 Kori 00100000000000000000000000000000 cohesive 00000000000000000000000000000000 machikin 00000000000000000000000000000000 brushes 00000000000000000000000000000000 116 00000000000000000000000000000000 Telos 00100000000000000000000000000000 Salvatori 00100000000000000000000000000000 QuesTech 01000000000000000000000000000000 medium-size 00000000000000000000000000000000 tubes 00000000000111001011101111001001 W.J. 01000000000000000000000000000000 framework 00000000000111010011101001100111 mixture 00000000000111111101101000111111 Ethan 00101111111011111010011000011000 informative 00000000000110000101010010010000 plowed 00000000001110101001001000110010 alcoholism 00000000000111001011110010100111 addicted 00000000000000000000000000000000 rim 00000000000011000111110110101000 favoritism 00000000000000000000000000000000 unencumbered 00000000000000000000000000000000 Reese 00100000000000000000000000000000 18.75 00000000000000000000000000000000 enlarged 00000000000000111010111001000000 sewers 00000000000000000000000000000000 glimpses 00000000000000000000000000000000 unfolds 00000000000000000000000000000000 spirited 00000000000110000111000010010000 idealism 00000000000000000000000000000000 spewing 00000000000000000000000000000000 critique 00000000000111010000100101100111 choking 00000000000000000000000000000000 obfuscation 00000000000000000000000000000000 Thief 00100000000111111100010010110101 opium 00000000000000000000000000000000 allure 00000000000111000101111000001111 Ali 00100000000101100001010100001000 Thalmann 00101111111111011111101001001000 Hassan 00100000000010111001000100001000 precluded 00000000000000000000000000000000 salaried 00000000000101101000101000110000 detrimental 00000000000100011001010010010000 pummeled 00000000000000000000000000000000 imposition 00000000000111000101011000001111 feasibility 00000000000011010101111101001111 governance 00000000000111010101001001100111 Leahy 00101111111101010100111010001000 laudable 00000000000000000000000000000000 Practices 00100000000111101111111100100011 monopolize 00000000000000000000000000000000 yearning 00000000000000000000000000000000 10.59 00000000000000000000000000000000 Melvyn 00101111111000010100001000011000 Kyu 00100000000000000000000000000000 Colinas 00100000000000000000000000000000 Staley 00100000000000001100110000001000 salon 00000000000000000000000000000000 Skills 00100000000111101111011100100011 flatten 00000000000000000000000000000000 bug 00000000000111010101011000000001 graders 00000000000000000000000000000000 successive 00000000000000000011101100010000 32-bit 00000000000000000000000000000000 16-bit 00000000000000000000000000000000 impediment 00000000000111010111101100100111 dazzling 00000000000001100101000010010000 80386 00000000000000000000000000000000 crib 00000000000110101000110000000001 Slater 00100000000000000000000000000000 Stuart-James 01000000000000000000000000000000 8.625 00000000000000000000000000000000 Particularly 00100000000110111011000001110010 486-based 00000000000000000000000000000000 uncanny 00000000000000000000000000000000 Archuleta 00100000000000000000000000000000 notifying 00000000000101000001001101000000 securing 00000000000001100111111101000000 symptom 00000000000111111101001000111111 low-ability 00000000000000000000000000000000 coke 00000000000010011110110100101000 derives 00000000000001010001100100110010 boil 00000000000000000000000000000000 counterbid 00000000000000000000000000000000 harsher 00000000000010101100001111000000 eve 00000000000111011010111000001111 flourishing 00000000000111100101000010010000 Fairless 00100000000000000000000000000000 dawning 00000000000000000000000000000000 cushioning 00000000000110001010110001000000 cows 00000000000100111001110101100011 second-half 00000000000000000000000000000000 551 00000000000000000000000000000000 LIT 01000000000010111001101001000000 repeats 00001010010110000011000000010010 vigor 00000000000111110011111010100111 Unions 00100000000111101111100110110011 Harwood 00100000000000000000000000000000 firmness 00000000000011111111111010100111 Bus 00100000000000110101111010110000 tubular 00000000000000000000000000000000 exchangeable 00000000000111101111100110110000 Grain 00100000000000000101101110110000 ballooned 00000000000101111010110000110010 R.I 01000000000000000000000000000000 Suominen 00100000000000000000000000000000 Eggers 00100000000000000000000000000000 Pine 00100000000000110010001000110000 markka 00000000000000000000000000000000 inequities 00000000000000000000000000000000 TWO 01000000000111101011101001010000 Improvement 00100000000111111111001010100111 commentator 00000000000111111010011110110101 slimmer 00000000000001110100001111000000 F-15 00100000000000000000000000000000 31.2 00000000000000000000000000000000 33-year-old 00000000000000000000000000000000 3.68 00000000000000000000000000000000 3.87 00000000000000000000000000000000 Logistics 00100000000000010111101010100001 abrasives 00000000000000000000000000000000 20.6 00000000000000000000000000000000 Evidence 00100000000111101111101110101111 Ondaatje 00100000000000000000000000000000 divestitures 00000000000111110000000010100111 Exit 00100000000010111011001100100111 40th 00000000000000000000000000000000 264 00000000000000000000000000000000 Bluff 00100000000110111001110100100001 legend 00000000000111000000000001000111 batter 00000000000000000000000000000000 runners 00000000000010100100100000110011 beforehand 00000000000000000000000000000000 Branca 00100000000000000000000000000000 Krebs 00101111111010000010100010001000 playoff 00000000000100001000101100100001 Polo 00100000001000001110100000001000 1951 00000000000000000000000000000000 50th 00000000000000000000000000000000 Carnegie-Mellon 01000000000000000000000000000000 eccentric 00000000001101011000110100010000 Jurisprudence 00100000000101011001101001100111 gadgets 00000000000000000000000000000000 non-convertible 00000000000000000000000000000000 Alongside 00100000000000110001000000001010 overhauled 00000000000010010010111001000000 mop 00000000000000000000000000000000 sanctioned 00000100101011010100010000110010 interventions 00000000000111011000110001100111 deepest 00000000000000100111010011010000 superintendent 00000000000000111111110000110101 Crestmont 00100000000000000000000000000000 21.25 00000000000000000000000000000000 Stand 00100000000111111101010110110010 lasers 00000000000110001010111001100011 circus 00000000001000001010100100100001 Membership 00100000000100111100001100100111 Academic 00100000000000000100000000110000 SONG 01000000000110101110101000100001 Nerds 00100000000000000000000000000000 radicals 00000000000100101000100000110011 biology 00000000000011100111001101100001 27.5 00000000000000000000000000000000 conditioning 00000000000111111111000001010111 Freshman 00100000000100101000101000110000 Junior 00100000000000110000101000110000 student-athlete 00000000000000000000000000000000 entrance 00000000000000001111111001100111 Cannell 00100000000000000000000000000000 Students 00100000000000000000011000110011 intercollegiate 00000000000000000000000000000000 disarm 00000000000000000000000000000000 trumpeting 00000000000000000000000000000000 Personally 00100001100010000000010001110010 rationalize 00000000000000000000000000000000 environmentalism 00000000000000000000000000000000 unsound 00000000000000000000000000000000 outdoor 00000000000001110100101010110000 riveting 00000000000000000000000000000000 shredded 00000000000000000000000000000000 wilderness 00000000000000100010110000000001 Tomsho 00100000000000000000000000000000 relinquished 00000000000111100011111001000000 prematurely 00000100011000000000010001110010 McCammon 01000000000000000000000000000000 720 00000000000000000000000000000000 salvo 00000000000000000000000000000000 verdicts 00000000000011001010001000100011 Inter 00100000000111111111100001010111 allege 00000000000011111001100110110010 Strasbourg 00100000000000000000000000000000 messenger 00000000000101100101111000000001 confer 00000000000000000000000000000000 rapid-fire 00000000000000000000000000000000 trays 00000000000000000000000000000000 Harkins 00100000000000000000000000000000 Essentially 00100000001001000000001001110010 facade 00000000000000000000000000000000 enrollment 00000000000101100100011100000111 M 00100000000000000000000000000000 assistants 00000000000000010011110000110011 SS 01000000000000000000000000000000 squads 00000000000000000000110110111001 witnessed 00000000001010101001010000110010 Nazi 00100000000111000001011000110000 Elie 00100000000000000000000000000000 Pissocra 00100000000000000000000000000000 bacterial 00000000000101100101000000110000 Ordinarily 00100000011100000000001001110010 Leemans 00100000000000000000000000000000 privileged 00000000000010000101000010010000 electrogalvanized 00000000000000000000000000000000 inducing 00000000000000000000000000000000 non-toxic 00000000000000000000000000000000 poultry 00000000000110001011111010110000 Bon 00100000000000000000000000000000 allowances 00000000000111001010111100000011 aftertax 00000000000000000000000000000000 frees 00000000000000000000000000000000 controller 00000000000111101111110000110101 Huggins 00100000000000000000000000000000 sidewalk 00000000000011110110111000000001 HAS 01000000000000000000010000010010 sterilizing 00000000000000000000000000000000 Peninsula 00100000000111111101100010100101 6.99 00000000000000000000000000000000 scanners 00000000000010100101111111001001 Encouraged 00100000000101010101110000110010 lightest 00000000000000000000000000000000 Bello 00100000000000000000000000000000 cadet 00000000000000000000000000000000 trick 00000000000111110010101101100111 proclaim 00000000000011011100100110110010 Hawthorne 00100000000000000000000000000000 Lopez 00101111111001110010000100001000 springing 00000000000000000000000000000000 duplicate 00000000011001111111110110110010 Cultural 00100000000011000000000000110000 commercially 00000000000010100000000001110010 iced 00000000000000000000000000000000 beans 00000000000000101100010001111001 salad 00000000000111111101011000000001 cook 00001111111100010111001000001000 pleasant 00000000000000010000011010010000 oil-service 00000000000000000000000000000000 G 00100000000100010101111110101000 wildcat 00000000000000000000000000000000 Swanson 00101111011000101100000010001000 irritates 00000000001101110001000000010010 fifth-largest 00000000000000000000000000000000 arched 00000000000000000000000000000000 dusk 00000000000000000000000000000000 hybrids 00000000000000000000000000000000 gingerly 00000000000000000000000000000000 six-day 00000000000000000000000000000000 ladder 00000000000110110101001001100111 polish 00000000000001111000010100110000 spray 00000000000000111110110110110111 aflatoxin 00000000000110011011110010100111 railing 00000000000000000000000000000000 Gustafson 00100000000000000000000000000000 Calgene 00100000000000000000000000000000 soggy 00000000000000000000000000000000 ornamental 00000000000000000000000000000000 stock-trading 00000000000000000000000000000000 helplessly 00000000000000000000000000000000 Huge 00100000000000000010100000010000 breakdowns 00000000000000000000000000000000 lubricant 00000000000000000000000000000000 9.81 00000000000000000000000000000000 Bavaria 00100000000000000000000000000000 4.97 00000000000000000000000000000000 6.45 00000000000000000000000000000000 528 00000000000000000000000000000000 1,015 00000000000000000000000000000000 32.99 00000000000000000000000000000000 443 00000000000000000000000000000000 traveler 00000000000011000110010010110101 organ 00000000000110001010001011100001 4.375 00000000000000000000000000000000 2.28 00000000000000000000000000000000 3,300 00000000000000000000000000000000 sociology 00000000000011010010001101100001 Mostly 00100000000111101011000001110010 incorporate 00000000000011101111101110110010 self-esteem 00000000000000000000000000000000 Baltimore-based 00100000000000000000000000000000 cared 00000000000111111010110111000010 2023 00000000000000000000000000000000 defeats 00000000000010011111001000100011 three-part 00000000000000000000000000000000 triple-B-plus 01000000000000000000000000000000 attaches 00000000000000000000000000000000 3.50 00000000000000000000000000000000 Jujo 00100000000000011111010000110000 Hongkong 00101111111011000011111010101000 complementary 00000000000000000100010000010000 Efforts 00100000000111111101011100100111 month-to-month 00000000000000000000000000000000 18.9 00000000000000000000000000000000 broadened 00000000000111100100111001000000 wheelchair 00000000000100101100110000000001 superiors 00000000000111111011110000110011 12:01 00000000000000000000000000000000 hungry 00000000000111101110110110010000 maiden 00000000000000000000000000000000 2.14 00000000000000000000000000000000 wobbly 00000000000000000000000000000000 steadied 00000000000000000000000000000000 Soares-Kemp 01000000000000000000000000000000 Francoise 00100000000000000000000000000000 essay 00000000000111100010001000100111 sequence 00000000000110101001100101100111 chiefs 00000000000000000111000000100111 ZBB 01000000000000000000000000000000 progressively 00000000000111001000010001110010 understate 00000000000000000000000000000000 Whip 00100000000000000010000110110101 graph 00000000000000000000000000000000 forging 00000000000001001011111101000000 overreact 00000000000000000000000000000000 human-based 00000000000000000000000000000000 intermediate-term 00000000000000000000000000000000 17-year-old 00000000000000000000000000000000 in-state 00000000000000000000000000000000 305 00000000000000000000000000000000 Bakersfield 00100000000000000000000000000000 Dudley 00101111111000001111100010011000 Eppel 00101111110011001110110010001000 peeled 00000000000000000000000000000000 Poverty 00100000000111101011011100000111 IV 01000000000000000000000000000000 Temple-Inland 01000000000000000000000000000000 Clarke 00101111111000010001100010001000 wicker 00000000000000000000000000000000 teen 00000000111001010000001000110000 authorizing 00000000010110010000000000001010 prosper 00000000101101111101010110110010 allotments 00000000000111101110010000100011 eight-year-old 00000000000000000000000000000000 southeastern 00000000000000101000110110101000 sharecroppers 00000000000000000000000000000000 ponds 00000000000000000000000000000000 Traxler 00100000000000000000000000000000 Democratic-controlled 00100000000000000000000000000000 Holly 00100000000110100111000100101000 life-of-contract 00000000000000000000000000000000 subcommittees 00000000000000000000000000000000 retrenchment 00000000000101001101101010100111 BUSH 01001111111100101001000110001000 GORBACHEV 01001111111100111111010010001000 varies 00000000000000101100001000110010 escaping 00000000000101010100100101000000 blockade 00000000000111110100110010100111 oceans 00000000000000000000000000000000 caps 00000000011001000111000000010010 warmed 00000000000000000000000000000000 Achievement 00100000000110111111111001100111 legalizing 00000000000000000000000000000000 Forum 00100000000110010011101001100111 hydraulic 00000000000000011010101010110000 DC-10 01000000000000000000000000000000 majority-owned 00000000000000000000000000000000 understatement 00000000000000000000000000000000 ebullient 00000000000101100100110100010000 linkages 00000000000100010000010000100111 Jarrett 00101111001010101100000010001000 crumbled 00000000000000000000000000000000 2791.41 00000000000000000000000000000000 f-As 01000000000000000000000000000000 e-In 01000000000000000000000000000000 c-Translated 01000000000000000000000000000000 b-As 01000000000000000000000000000000 Flexible 00100000000000100010010010010000 Closed 00100000000000000000110100110010 dealer-to-dealer 00000000000000000000000000000000 unadited 00000000000000000000000000000000 graduated 00000000010111011110001000110010 AMT 01000000000000000000000000000000 classmates 00000000000101000011110000110011 outskirts 00000000000000000000000000000000 champagne 00000000000111111000001100100001 possessing 00000000000000000000000000000000 1989B 01000000000000000000000000000000 10-year-old 00000000000000000000000000000000 quiz 00000000000101101101001010110111 possessed 00000000000111100100110111000010 titans 00000000000000000000000000000000 238 00000000000000000000000000000000 yardstick 00000000000111001000111101100111 weights 00000000000000000000000000000000 seas 00000000000111011001001001100111 Rhode 00100000000011111010011010101000 0.45 00000000000000000000000000000000 2596.72 00000000000000000000000000000000 Houghton 00100000111100100000000100001000 Leominster 00100000000000000000000000000000 aggregate 00000000000000001100000100010000 attrition 00000000000111100110000010100111 Jovanovich 00101111111110010011010001001000 4.90 00000000000000000000000000000000 Fundamental 00100000000000101010000000110000 enticed 00000000000000000000000000000000 currency-exchange 00000000000000000000000000000000 Eurobond 00100000000000000010111110110000 wood-products 00000000000000000000000000000000 raged 00000000001001000110001000110010 bird 00000000000111001100000000001000 locking 00000000000101100110100001000000 374 00000000000000000000000000000000 penetrated 00000000000000000000000000000000 wet 00000000000000011110011010010000 fifth-grade 00000000000000000000000000000000 out-of-state 00000000000000000000000000000000 fundraising 00000000000000000000000000000000 lax 00000000000111111001010010010000 ascending 00000000000000000000000000000000 Ajinomoto 00100000000000000000000000000000 66.5 00000000000000000000000000000000 Kofcoh 00100000000000000000000000000000 283.7 00000000000000000000000000000000 15-a-share 00000000000000000000000000000000 fleeing 00000000000111111100100101000000 N.A. 01000000000000000000000000000000 Reichmann 00100000000000011000000000001000 46.2 00000000000000000000000000000000 Increasing 00100000000000000101010001000000 persists 00000000000100000110001000110010 campaigning 00000000000111110101000001000000 Glucksman 00100000000000000000000000000000 wavering 00000000000000000000000000000000 hunky-dory 00000000000000000000000000000000 undermining 00000000000111111011011101000000 showcase 00000000000111110010011110110111 Texas-based 00100000000000000000000000000000 teen-agers 00000000000000000000000000000000 coolly 00000001011000010000010001110010 elevated 00000000000011111010111001000000 fulfilled 00000011110111010100010000110010 11.95 00000000000000000000000000000000 aiding 00000000000101100001011101000000 entitling 00000000000000000000000000000000 super-majority 00000000000000000000000000000000 Webb 00101111111111000001000100001000 reinsurers 00000000000000000000000000000000 Berger 00101111111100101010000010001000 Ownership 00100000000000000000000010100111 Yukon 00100000000000000000000000000000 post-split 00000000000000000000000000000000 INTERNATIONAL 01000000000000000001010010110000 seesaw 00000000000000000000000000000000 52.9 00000000000000000000000000000000 71.9 00000000000000000000000000000000 Merger 00100000000111101010100011001111 318 00000000000000000000000000000000 Elected 00100000000111011010010000110010 ammonium 00001111111010001010101010110000 suspicions 00000000000111101101011010101111 pave 00000000000011100110111110110010 monolithic 00000000000010100001000010010000 Model 00100000000000000000000001000111 Instrument 00100000000000011101011001100111 GRiD 01000000000000000000000000000000 tardy 00000000000000000000000000000000 62-year-old 00000000000000000000000000000000 megabyte 00000000000001001000000001000111 hard-charging 00000000000000000000000000000000 microprocessor-based 00000000000000000000000000000000 renegotiated 00000000000011010010111001000000 Vaux 00100000000000000000000000000000 Labatt 00100000000000000000000000000000 Wednesdays 00100000000000000000000000000000 Offered 00100000000110100000010000110010 Carmichael 00100000000000000000000000000000 Door 00100000000111011011111000000001 stricter 00000000000010001100001111000000 Mel 00101111111000001010001000011000 Fortune 00100000000010001010000001000111 admired 00000000000000100101010000110010 Lack 00100000000111111111111110111111 Phyllis 00100000000000000000000000000000 authenticity 00000000000111111001011000001111 dramatization 00000000000000000000000000000000 Lawrenson 00100000000000000000000000000000 recruit 00000000000101101010100110110111 ,... 00000000000000000000000000000000 813 00000000000000000000000000000000 combing 00000000000000000000000000000000 toughest 00000000000000010011010011010000 Willie 00101111111001010010111000011000 microcomputers 00000000000000000000000000000000 Alton 00100000000000000000000000000000 audition 00000000000000000000000000000000 Minutes 00100000000000000000001100011011 57th 00000000000000000000000000000000 Nowhere 00100000001101010100010001110010 cost-conscious 00000000000000000000000000000000 Scarborough 00100000000000000000000000000000 Shriver 00101111111110101111111010101000 starring 00000000000000010110011010000010 delivers 00000111010010000011000000010010 Diane 00101111110000010010001000011000 defuse 00000000000110011011111110110010 Corporation 00100000000111101111101001000101 3.04 00000000000000000000000000000000 CDC 01000000000000000000000000000000 bombing 00000000000000000010010101001111 civil-rights 00000000000000000000000000000000 horizons 00000000000000001011011011101001 Lieber 00100000000000000000000000000000 re-enactment 00000000000000000000000000000000 structuring 00000000000111011101111101000000 725 00000000000000000000000000000000 24.2 00000000000000000000000000000000 for-profit 00000000000000000000000000000000 watchdog 00000000000001101101000010110000 industrialists 00000000000111110111111000110011 liberalizing 00000000000111110111011101000000 evolving 00000000000001111101010001000000 buzzword 00000000000000000000000000000000 milling 00000000000010100101010000110000 machining 00000000000000010001100101100001 Fond 00100000001110101011110000110010 303 00000000000000000000000000000000 buoy 00000000000100100110111110110010 Triangle 00100000000000100001000100101000 Pechiney 00100000001010011010111100101000 Kahan 00101111110110111100000010001000 muddied 00000000000000000000000000000000 debtors 00000000000111101100000001110011 Hemisphere 00100000000111111001001100100101 49.7 00000000000000000000000000000000 Kelley 00101111111110100110100010001000 unattractive 00000000000010110011001110010000 anti-monopoly 00000000000000000000000000000000 frank 00001111111000000010010100001000 scoops 00000000000000000000000000000000 suicide 00000000000000100011110010100111 motions 00000000000101100011101000100011 distraction 00000000000000000000000000000000 stave 00000000000110110101001110110010 NESB 01000000000000000000000000000000 factually 00000000101100101000000001110010 directives 00000000000010010011101000100011 farming 00000000000000101000001100100001 Morocco 00100000000111010100111101101000 aloft 00000000000000111011111100110010 Nacional 00101111111100111100101000101000 fluctuation 00000000000111011011111010100111 Import 00100000000000000001000100010000 souring 00000000000000000000000000000000 57.50 00000000000000000000000000000000 disposition 00000000000111111110101001001111 Sass 00101111111001010110001010001000 bombers 00000000000111100110000110001001 constrained 00000000100101010001110000110010 Huntsville 00100000000101101011101001101000 smiles 00000000100101001111000000010010 oats 00001111111111110010010001001000 3.80 00000000000000000000000000000000 Flakes 00100000000000000000000000000000 Cheerios 00100000000000000000000000000000 antagonize 00000000000000000000000000000000 bend 00000000000111001110010110110010 fathers 00000000000111100010110001100011 Babies 00100000000000101011011100110011 specifying 00000000000000000000000000000000 Form 00100000000111111111111101110111 replete 00000000000000000000000000000000 ramifications 00000000000111111011001110001111 arcane 00000000000000101100110100010000 passport 00000000000111010101010000000001 speakers 00000000000111110010110101100011 Crawford 00101111111100100100000010001000 soothe 00000000011110010111111110110010 reconsideration 00000000000000000000000000000000 Accounts 00100000000111100000001110111001 budgeting 00000000000011110000110001000000 Suns 00100000000000000000000000000000 synergy 00000000000001010110110000100111 teaming 00000000000000000000000000000000 understandably 00000000111100000000001001110010 Tool 00100000000100000110001000100001 Silas 00100000000000000000000000000000 8.52 00000000000000000000000000000000 correspondence 00000000000111001010110000100111 Medtronic 00100000000000000000000000000000 puny 00000000000000000000000000000000 Beckman 00101111111001000010010001001000 hops 00000000000000000000000000000000 Wessels 00100000000000000000000000000000 modeled 00000000000010110000100000110010 hesitantly 00000010111001000001001001110010 screeching 00000000000110110000010000010000 Raul 00101111111001000110001100011000 Newmont 00100000000010101011000100101000 Turkish 00100000000000011000010100110000 libertarians 00000000000000000000000000000000 czars 00000000000000000000000000000000 fragility 00000000000111011111011000001111 quitting 00000000000110100011100001000000 celebrities 00000000000111011000111000110011 unwind 00000000000000000000000000000000 quipped 00000000000000000000000000000000 spanking 00000000000000000000000000000000 butt 00000000000000000000000000000000 fountains 00000000000000000000000000000000 unjust 00000000000000000000000000000000 edgy 00000000000000000000000000000000 suited 00000000001101101100110000110010 olds 00000000000000000000000110000000 NORC 01000000000000000000000000000000 greats 00000000000000000000000000000000 duration 00000000000111010111111000001111 unknowns 00000000000000000000000000000000 payers 00000000000000000000000000000000 Denise 00100000000000000000000000000000 decreases 00000000000111101110101110000011 lighten 00000000000000000000000000000000 dishes 00000000000001000101110101100011 washing 00000000001111001010110001000000 Sutcliffe 00100000000000000000000000000000 replacements 00000000000111100010101110100011 Weekend 00100000000111101111010000010111 assailed 00000000000000000000000000000000 reaped 00000000000110101001010000110010 lecturer 00000000000000000000000000000000 Protocol 00100000000011010111101001100111 Scotto 00101111111100111010110010001000 Tories 00100000000111110100011110110011 grueling 00000000000000001110011010010000 Horne 00100000000000000000000000000000 index-related 00000000000000000000000000000000 strenuously 00000010011001000001001001110010 exchequer 00001111111100010101000110010101 instinctive 00000000000000000000000000000000 Araskog 00101111111110011000100010001000 Writers 00100000000110101111100110110011 Guild 00100000000001000000001100100101 derision 00000000000000000000000000000000 3.28 00000000000000000000000000000000 accelerates 00000000000000000000000000000000 queries 00000000000110111001101000100011 harass 00000000000000000000000000000000 impediments 00000000000000000000000000000000 Darkhorse 00100000000000000000000000000000 Samnick 00100000000000000000000000000000 Poindexter 00100000000111111111111010001000 Adviser 00100000000111111100110110110101 infuse 00000000000000000000000000000000 punishing 00000000000000110101011101000000 intellectually 00000000111000101000000001110010 stratospheric 00000000000000000000000000000000 American-style 00100000000000000000000000000000 unplanned 00000000000000000000000000000000 Rubenstein 00100000000000000000000000000000 Maybelline 00100000000000000000000000000000 overlap 00000000000111110101001010110111 opulent 00000000010101011000001000110000 pink 00000000000110000010001000110000 Hanifen 00100000000000000000000000000000 Fingers 00100000000100000111111101100011 Olay 00100000000000000000000000000000 referrals 00000000000111110001001100000011 intuition 00000000000000000000000000000000 culprits 00000000000000000000000000000000 blend 00000000000111011000100101100111 Tropics 00100000000000000000000000000000 chemist 00000000000111001001011110110101 18-year-old 00000000000000000000000000000000 cruising 00000000000000110110100001000000 teenage 00000000000000000000000000000000 Anglo-Dutch 01000000000000000000000000000000 pneumonia 00000000000111110011010010100111 bombarded 00000000000000000000000000000000 stock-manipulation 00000000000000000000000000000000 mistrials 00000000000000000000000000000000 NBC-TV 01000000000000000000000000000000 out-of-court 00000000000000000000000000000000 Concern 00100000000100000000100111110101 balloons 00000000001010100101110101100011 settles 00000101010010000011000000010010 1.74 00000000000000000000000000000000 Gerhard 00101111111111111111101100011000 2.90 00000000000000000000000000000000 Imhoff 00100000000000000000000000000000 Weakness 00100000001111111111111010100111 gleeful 00000000000000000000000000000000 market-maker 00000000000000000000000000000000 apology 00000000000111100011101100100111 municipality 00000000000111110100010010110101 39.8 00000000000000000000000000000000 jettisoning 00000000000000000000000000000000 Foreigners 00100000000111011110111000110011 mini-component 00000000000000000000000000000000 demolished 00000000000000000000000000000000 15-day 00000000000000000000000000000000 gas-fired 00000000000000000000000000000000 die-hard 00000000000000000000000000000000 PAPERS 01000000000110100110001000100011 Backe 00100000000000000000000000000000 Bouillaire 00100000000000000000000000000000 brainchild 00000000000000000000000000000000 interpretations 00000000000111101101000100101111 10-month 00000000000000000000000000000000 Journalism 00100000000000000101101101100001 operative 00000000000001100111110000110101 home-building 00000000000000000000000000000000 Dresser 00100000000000100011000100101000 tides 00000000000000000000000000000000 5th 00000000000000000000000000000000 anti-Soviet 01000000000000000000000000000000 Vladimir 00100000000110010101111000011000 transported 00000000101111000000010000110010 Heidelberg 00100000000000000000000000000000 manners 00000000000111101111010101100011 Caution 00100000000111101100111010100111 Structural 00100000001001000010000000110000 commendable 00000000000000000000000000000000 Players 00100000000111100110001001110011 Deposits-a 00100000000000000000000000000000 spiked 00000000000000100110110110110111 Bonnie 00101111111000001000011000011000 Sometime 00100000000000000110001001100010 a-Average 01000000000000000000000000000000 repurchasing 00000000000000000000000000000000 CRA 01000000000000000000000000000000 b-Current 01000000000000000000000000000000 tore 00000000001111110001001000110010 35.7 00000000000000000000000000000000 tax-rate 00000000000000000000000000000000 unaffiliated 00000000000000000000000000000000 anchor 00000000000111110100100100100001 Cabinet 00100000000000000000000010000001 overtures 00000000000110000101101000100011 18.375 00000000000000000000000000000000 15.50 00000000000000000000000000000000 unbelievable 00000000000010010101110110010000 irritation 00000000000000001110111010100111 chilly 00000000000000000000000000000000 egos 00000000000111110100111101100011 macroeconomic 00000000000000011011000000110000 Shilling 00101111111011100110101010001000 balancing 00000000000010010010110001000000 2.22 00000000000000000000000000000000 overhauling 00000000000111110101011101000000 carry-forwards 00000000000000000000000000000000 slow-growing 00000000000000000000000000000000 defense-electronics 00000000000000000000000000000000 screwed 00000000000000000000000000000000 fabricate 00000000000000000000000000000000 outdated 00000000000001011100000110010000 39-year-old 00000000000000000000000000000000 Ultimate 00100000000000010000010011010000 merchant-banking 00000000000000000000000000000000 prominence 00000000000111011011011010100111 frames 00000000001010100111110101100011 Goldinger 00100000000000000000000000000000 overlook 00000000010101010111111110110010 wheel 00000000000111001001100101100111 Inspectorate 00100000000000000000000000000000 rocking 00000000001100000110100001000000 Broberg 00100000000000000000000000000000 1.8500 00000000000000000000000000000000 DAT 01000000001110011000001010110000 143.80 00000000000000000000000000000000 copyrighted 00000000001110011100101010110000 Assessment 00100000000111001110111001100111 submitting 00000000000111111101111101000000 requisite 00000000000000000000000000000000 Nike 00100000000110010011111100101000 piecemeal 00000000000010011101000000010000 courier 00000000000001001010010010110000 10:30 00000000000000000000000000000000 Speed 00100000000111101110110110110111 variable 00000000001110110000011100010000 Afterward 00100000001010100100010001110010 McGwire 01000000000000000000000000000000 61-year-old 00000000000000000000000000000000 tapping 00000000000111000111111101000000 187 00000000000000000000000000000000 Rolling 00100000000000111010100001000000 Todd 00101111111001100001000100001000 internationalization 00000000000000000000000000000000 Rickey 00100000000000000000000000000000 ultimatum 00000000000101000011111001100111 Different 00100000000000001000010000010000 pre-emptive 00000000000000000000000000000000 elephants 00000000011001100111110101100011 Snyder 00101111111110001001001000001000 renaissance 00000000000110010001100100100001 140,000 00000000000000000000000000000000 shuttered 00000000000011100101101001000000 podium 00000000000111111111010011001111 exiled 00000000000110010010101000110000 stopper 00000000000000000000000000000000 Roughly 00100000000000100111000001110010 Riordan 00101111111001000101000100001000 Founded 00100001010011000101010000110010 Bullocks 00100000000000000000000000000000 Patricia 00101111111000000001010110011000 Y&R 01000000000000000000000000000000 hands-on 00000000000000000000000000000000 dining 00000000000001111001111010110000 aisles 00000000000000000000000000000000 Somewhere 00100000000101010100010001110010 OECD 01000000000000000000000000000000 Keynesian 00100000001001010000000000110000 satellite-TV 01000000000000000000000000000000 shores 00000000000100111100111101100011 impervious 00000000000000000000000000000000 definitions 00000000000111001101100100101111 microwave 00000000000011000010101010110000 confront 00000000001100101011111110110010 summarily 00000000110000000000010001110010 reigning 00000000000000000000000000000000 aramid 00000000000000000000000000000000 1,700 00000000000000000000000000000000 philosophers 00000000000000000000000000000000 polyester 00000000001001011100101010110000 rude 00000000000111110110011010010000 scraps 00000000000000000000000000000000 Strieber 00100000000000000000000000000000 fumes 00000000000110001111000000010010 spenders 00000000000000000000000000000000 hardy 00000000000001101110000000001000 2.95 00000000000000000000000000000000 276.8 00000000000000000000000000000000 ammunition 00000000000110001111111001100011 baseman 00000000000000000000000000000000 sidelined 00000000000000000000000000000000 newsstands 00000000000000000000000000000000 1942 00000000000000000000000000000000 592 00000000000000000000000000000000 ON 01000000000000000000010000001010 Ventura 00100000000000000000000000000000 videocassettes 00000000000101011100111001100011 depicts 00000000000000000000000000000000 Daimler 00100000000101110111111100101000 gilts 00000000000011001111110010100111 gainer 00000000000111010100111010110101 brow 00000000000000000000000000000000 Bristol 00100000000100000111101001101000 Brae 00100000000000000000000000000000 non-binding 00000000000000000000000000000000 Indexing 00100000000111101100111000111001 Conseco 00100000000000000000000000000000 Billings 00100000000111111110011000000111 FIRST 01000000000000000000000111010000 Tinker 00101111110010110101001000001000 224 00000000000000000000000000000000 Blues 00100000000111101111101101000001 rentals 00000000000111100011101111001001 3-for-2 00000000000000000000000000000000 menswear 00000000000000000000000000000000 intimidating 00000000000000000000000000000000 mystique 00000000000000000000000000000000 cashed 00000000100101001100010000110010 bounces 00000000000000000000000000000000 knot 00000000000000000000000000000000 streamed 00000000000000000000000000000000 pitchers 00000000000000000000000000000000 Montreal-based 00100000000000000000000000000000 token 00000000001000001101000000010000 transports 00000000000000000000000000000000 laggard 00000000000000111101000010010000 peer 00000000000000000111110000100001 envelope 00000000001011110111111001100111 CreditWatch 01000000000000001010010011010000 ACQUISITION 01000000000111101111110001001111 70.1 00000000000000000000000000000000 Expect 00100000000111111101000110110010 Ketchum 00101111111110111001001000001000 motel 00000000000000001001111010110000 473 00000000000000000000000000000000 lighted 00000000000000000000000000000000 spectacle 00000000000111100110011000001111 ribs 00000000000000000000000000000000 Amy 00101111111000111100001000011000 Anglo-French 01000000000000000000000000000000 Bermuda-based 00100000000000000000000000000000 sin 00000000000110110000000001000111 brutally 00000000000000000000000000000000 sack 00000000000110110100000000001000 Stena 00100000000000000000000000000000 Floyd 00101111111000011100000100001000 Tiphook 00100000000000000000000000000000 portraits 00000000000111101101100100101111 Protestants 00100000000000000000000000000000 963 00000000000000000000000000000000 policewoman 00000000000000000000000000000000 9-11 00000000000000000000000000000000 one-shot 00000000000000000000000000000000 Althea 00100000000000000000000000000000 dramas 00000000010010100111110101100011 bouts 00000000000110001101100100101111 knocks 00000000000000000000000000000000 Cayne 00100000000000000000000000000000 Contracts 00100000000000000001000100011001 occupant 00000000000000000000000000000000 concurrent 00000000000011111000010000110000 realists 00000000000000000000000000000000 Hurley 00100000000000000000000000000000 fruition 00000000000000000000000000000000 sovereign 00000000000100011000101000110000 uneven 00000000000110100100110100010000 velocity 00000000000100011111011000001111 copier 00000000000000011101011010110000 rear-seat 00000000000000000000000000000000 12.2 00000000000000000000000000000000 copiers 00000000000010000101111001100011 poison-pill 00000000000000000000000000000000 complexities 00000000000111001111111000001111 NFIB 01000000000000000000000000000000 Fabulous 00100000000101011000011010010000 Carolyn 00100000000000000000000000000000 mental-health 00000000000000000000000000000000 Alltel 00100000000101100100111100101000 pickups 00000000000010101111101001100011 Rail 00100000000010000001111010110000 audible 00000000000000000000000000000000 incidental 00000000000000000000000000000000 Surveys 00100000000000101010001000100011 Crowntuft 00100000000000000000000000000000 turban 00000000000000000000000000000000 induces 00000000000000000000000000000000 Jath 00100000000000000000000000000000 buttress 00000000000000000000000000000000 non-prescription 00000000000000000000000000000000 bladder 00000000000000000000000000000000 attests 00000000000000000000000000000000 Psyllium 00100000000001110110110000100001 DOT 01000000010010000010110001000000 Krishnamurthy 00100000000000000000000000000000 health-food 00000000000000000000000000000000 parlance 00000000000000000000000000000000 flea 00000000000000000000000000000000 lull 00000000000111101001101100110111 stunt 00000000000001001101001010110111 airborne 00000000000000001110001010110000 Foret 00100000000000000000000000000000 PRODUCTS 01000000000000000000000011001001 rock'n 00000000000000000000000000000000 historian 00000000000110100010011110110101 i.e. 00000000000000000000000000000000 instinct 00000000000011001111111001100111 souls 00000000000000100100111101100011 Walk 00100000000111011110010110110010 Analog 00100000000000000000000000000000 Stag 00100000000000000000000000000000 Beech 00100000000001100010111000101000 nightclub 00000000000000000000000000000000 Leap 00100000000111101110011000110111 ballistic 00000000000000010101110000110000 astute 00000000000001001100110100010000 powered 00000000001010101111010000110010 530 00000000000000000000000000000000 sensed 00000000000110100100110111000010 comparatively 00000000000111111100000001110010 E.W. 01000000000000000000000000000000 albums 00000000000000000110101001100011 solvency 00000000000000000111101101001111 proficient 00000000000000000000000000000000 scrapping 00000000000011000101011101000000 62%-owned 00000000000000000000000000000000 markdown 00000000000000000000000000000000 balloonists 00000000000000000000000000000000 cutback 00000000000111011101101010100111 exceptional 00000000000000010000110100010000 53.3 00000000000000000000000000000000 Ginn 00100000000000000000000000000000 Jaya 00100000000000000000000000000000 hot-air 00000000000000000000000000000000 endings 00000000000000000000000000000000 Irian 00100000000000000000000000000000 temblors 00000000000000000000000000000000 feeble 00000000000101001101000000010000 Algeria 00100000000111100001111101101000 scaling 00000000000111011101100001000000 sailors 00000000000000100100100000110011 Romanee-Conti 01000000000000000000000000000000 accompaniment 00000000000000000000000000000000 Tache 00100000000000000000000000000000 Israeli-occupied 00100000000000000000000000000000 relocate 00000000000111010110001110110010 Pushkin 00100000000000000000000000000000 legalization 00000000000111100111000101001111 Roederer 00100000000000000000000000000000 MasterCard 01000000000101111100110100101000 Monogram 00100000000000000000000000000000 Cristal 00100000000000000000000000000000 doomsayers 00000000000000000000000000000000 polling 00000000000000000010100101100001 flagging 00000000000001011011100000010000 McFall 01000000000000000000000000000000 short-covering 00000000000000000000000000000000 Chateau 00100000000000000000000000000000 sunny 00000000000001000011011010010000 rendition 00000000000000000000000000000000 unnerving 00000000000000000000000000000000 Sinatra 00100000000000000000000000000000 tout 00000000001010100111111110110010 Higgins 00101111111100100010111000001000 sparks 00000000000000000000010010000000 spectacularly 00000000000000000000000000000000 Champagne 00100000000111111000001100100001 110.6 00000000000000000000000000000000 complement 00000000000111011110001110110010 tacit 00000000000000011101000000010000 5.99 00000000000000000000000000000000 Hambros 00100000000000000000000000000000 Certificates 00100000000111111111111100101111 Asset-Backed 01000000000000000000000000000000 pledging 00000000001101101010111000110010 reselling 00000000000000000000000000000000 acid-rain 00000000000000000000000000000000 swear 00000000000000000000000000000000 Scottsdale 00100000000111101100101001101000 9.78 00000000000000000000000000000000 kidding 00000000000001001110010001110010 protege 00000000000111111110001100111111 service-industry 00000000000000000000000000000000 Seeing 00100000000111111001000101000000 cult 00000000000110101001010000000001 '40s 00000000000000000000000000000000 '50s 00000000000000000000000000000000 grapes 00000000000111001011010101100011 borne 00000000110001110010110000110010 skins 00000000000000000000000000000000 Raw-steel 00100000000000000000000000000000 awfully 00000000000001111100000001110010 six-packs 00000000000000000000000000000000 subcontractors 00000000000101011011110000110011 coal-fired 00000000000000000000000000000000 graveyard 00000000000000000000000000000000 78.8 00000000000000000000000000000000 non-striking 00000000000000000000000000000000 inaccurately 00000000000000000000000000000000 interrupting 00000000000000000000000000000000 Canepa 00100000000000000000000000000000 astronomical 00000000000000000000000000000000 3.72 00000000000000000000000000000000 unfolded 00000000000000000000000000000000 heroic 00000000000001011001000010010000 Blaine 00100000000000000000000000000000 Shelly 00100000000000000000000000000000 acclaim 00000000000000000000000000000000 Signs 00100000000111101101111110101111 reinstate 00000000000011001110001110110010 moderated 00000000000000000000000000000000 drug-interdiction 00000000000000000000000000000000 disband 00000000000000000000000000000000 strike-force 00000000000000000000000000000000 autonomous 00000000000010001000101001000000 G.D. 01000000000000000000000000000000 16.375 00000000000000000000000000000000 3.41 00000000000000000000000000000000 Guides 00100000000010111111000000010010 3.85 00000000000000000000000000000000 112.5 00000000000000000000000000000000 Placement 00100000000111101000000100001001 Depot 00100000000111101100111110000010 57.5 00000000000000000000000000000000 Balzac 00100000000000000000000000000000 lit 00000000000010111001101001000000 apologies 00000000000111111111001100010111 Presse 00100000000000000000000000000000 diners 00000000000110111100100000110011 Copperweld 00100000000000000000000000000000 Nesbitt 00100000000000000000000000000000 porch 00000000000000000000000000000000 vertical 00000000000111000010000000110000 sanitation 00000000000000110001100000110000 Carver 00101111111110011101001000001000 Gaylord 00101111111100011000010000001000 liquefied 00000000000000000000000000000000 briskly 00000000010001000000010001110010 tangle 00000000000000000000000000000000 Roche 00100000000101101011000001001000 Amazon 00100000000000000000000000000000 bickering 00000000000110010010111010100111 Minna 00100000000000000000000000000000 Depositary 00100000000011100010111010101000 whereas 00000000000111111001101001000010 Receipts 00100000000100001000001100000011 --$ 00000000000000000000000000000000 deleted 00000011001011010100010000110010 cascade 00000000000000000101100010100101 Lima 00100000000001100111111001101000 25.6 00000000000000000000000000000000 extracted 00000001100101010100010000110010 chromosomes 00000000000000000000000000000000 Jew 00100000000111111110010010110101 haunt 00000000000011011011101110110010 lethal 00000000001000000101010010010000 Equally 00100000000001100000000001110010 Mergers 00100000000111101110000010100111 cancerous 00000000000000000000000000000000 2645.90 00000000000000000000000000000000 Face 00100000000000000000000011110111 packet 00000000000000000000000000000000 uncover 00000000010001010111111110110010 23.3 00000000000000000000000000000000 evaporated 00000000010110000110001000110010 Costanza 00100000000000000000000000000000 154.2 00000000000000000000000000000000 imperialism 00000000000000000000000000000000 Sulya 00100000000000000000000000000000 blatant 00000000000001111010000000010000 3.27 00000000000000000000000000000000 burdensome 00000000000001100001010010010000 Monopolies 00100000000111111111100000100001 c-Yields 01000000000000000000000000000000 weekly-average 00000000000000000000000000000000 lest 00000000000111111110101001000010 blunder 00000000000000000000000000000000 9.86 00000000000000000000000000000000 consulted 00000000000001110110010000110010 Agent 00100000000111101011110000110101 251.2 00000000000000000000000000000000 affirmed 00000000011111111001010000110010 stamp 00000000000011101001001010110111 storytelling 00000000000000000000000000000000 acne 00000000000111000110101000110000 doses 00000000000111111110000100101111 Otero 00100000000000000000000000000000 Westport 00100000000101011011101001101000 Criticism 00100000000111110110011010100111 modes 00000000000000000000000000000000 narrative 00000000000011000101010000000001 counterpoint 00000000000000000000000000000000 audacious 00000000000000000000000000000000 19.5 00000000000000000000000000000000 J.L. 01000000000000000000000000000000 Ayer 00100000000110110011000001001000 pre-tax 00000000000000000000000000000000 hamburger 00000000011110001011111010110000 tasteless 00000000000000000000000000000000 encounters 00000000000000110000010000100111 storytellers 00000000000000000000000000000000 pushy 00000000000000000000000000000000 self-congratulatory 00000000000000000000000000000000 flashed 00000000000000000000000000000000 unlawfully 00000000000000000000000000000000 sub-Saharan 01000000000000000000000000000000 Koito 00100000000000000000000000000000 subcompacts 00000000000000000000000000000000 filler 00000000000000000000000000000000 Preston 00101111111010001000000100001000 windshield 00000000000000000000000000000000 tie-up 00000000000000000000000000000000 sorting 00000000011011101110100001000000 belonged 00000000000101100001101000110010 crumpled 00000000000000000000000000000000 tucked 00000000001011011001001000110010 MITI 01000000000000000000000000000000 bulletins 00000000000000000000000000000000 Kuwaiti 00100000000000010000010100110000 treasures 00000000000000000000000000000000 Eve 00100000000111011010111000001111 warehouse 00000000000010010001111010110000 misplaced 00000000000000000000000000000000 Gauguin 00100000000000000000000000000000 value-added 00000000000000000000000000000000 Krisher 00100000000000000000000000000000 research-based 00000000000000000000000000000000 unenthusiastic 00000000000000000000000000000000 antiquities 00000000000000000000000000000000 newsworthy 00000000000000000000000000000000 Newman 00101111111111001010100010001000 214 00000000000000000000000000000000 ADB 01000000000000000000000000000000 program-bashing 00000000000000000000000000000000 Absolutely 00100000000110100000000001110010 stand-alone 00000000000000000000000000000000 Wakui 00100000000000000000000000000000 about-face 00000000000000000000000000000000 Tomash 00100000000000000000000000000000 pullbacks 00000000000000000000000000000000 stockpile 00000000000001000010011000100001 fourth-biggest 00000000000000000000000000000000 Rifkind 00100000000000000000000000000000 vertically 00000000000000000000000000000000 globally 00000000010110100100010001110010 26.7 00000000000000000000000000000000 service-sector 00000000000000000000000000000000 25.4 00000000000000000000000000000000 Spectator 00100000000111110010001010101000 ultrasound 00000000000000000000000000000000 Stearn 00100000000000000000000000000000 forbids 00000000010000110001000000010010 ineffective 00000000000111100110110110010000 three-dimensional 00000000000000000000000000000000 menstrual 00000000000000000000000000000000 pairs 00000000000000000100000100101111 Nikolai 00100000000000000000000000000000 transfusion 00000000000000000000000000000000 dug 00000000101101101001001000110010 luring 00000000000110001001001101000000 consumer-goods 00000000000000000000000000000000 kanji 00000000000000000000000000000000 umbrella 00000000001011101011111001100111 Dome 00100000000111111011010100101000 notebook-sized 00000000000000000000000000000000 supervise 00000000010111001011111110110010 Kyoto 00100000000000000000000000000000 clerical 00000000000110101000101000110000 Dozens 00100000000111101110111000101111 Jacksonville 00100000000111011001101001101000 monetarists 00000000000000000000000000000000 Ratings 00100000000111101011000011000111 Seniors 00100000000000000001111000110011 Various 00100000000000001001000011000000 spreadsheets 00000000000111101000111001100011 genteel 00000000000100010101000010010000 SFE 01000000000000000000000000000000 transmit 00000000101011101111101110110010 9.32 00000000000000000000000000000000 communicate 00000000000111100001010110110010 Hiroshi 00100000000000000000000000000000 real-life 00000000000000000000000000000000 racks 00000000000000000000000000000000 rattle 00000000000000000000000000000000 vacations 00000000000111000111101001100011 Productivity 00100000000000001101011100000111 computerize 00000000000000000000000000000000 Kuehn 00100000000000000000000000000000 Dickens 00100000000000000000000000000000 powerhouses 00000000000000000000000000000000 people... 00000000000000000000000000000000 1.5795 00000000000000000000000000000000 waned 00000000011101000110001000110010 predictive 00000000000000000000000000000000 open-market 00000000000000000000000000000000 Rubendall 00100000000000000000000000000000 lukewarm 00000000000000001101001010010000 pitted 00000000000000000000000000000000 rate-sensitive 00000000000000000000000000000000 Forge 00100000000110011110010110110010 peg 00000000101100111111110110110010 31.25 00000000000000000000000000000000 flourish 00000001001101111101010110110010 risk-free 00000000000000000000000000000000 multifamily 00000000000111111111010000110000 Newly 00100000000000001111001001110010 Contrary 00100000000111110100111000110010 suffers 00000000000010111100001000110010 Send 00100000000010111110101110110010 non-communist 00000000000000000000000000000000 corporatist 00000000000000000000000000000000 Mussolini 00100000000000000000000000000000 unite 00000000001010101110101110110010 unification 00000000000000010101101101001111 rifles 00000000000111101111111111001001 envisaged 00000000000000000000000000000000 nationalistic 00000000000001010000000000110000 corporatism 00000000000000000000000000000000 Tsao 00100000000000000000000000000000 tenets 00000000000000000000000000000000 bent 00000000000110110100100000110010 Evan 00101111111001001010001000011000 addicts 00000000000111101101100010100111 joy 00000000000111101010010000001000 cornfield 00000000000000000000000000000000 pistols 00000000000000000000000000000000 232 00000000000000000000000000000000 flipped 00000000000000000000000000000000 Ranieri 00101111111001111100000010001000 self 00000000000000111110101100100001 readiness 00000000000110001101111100100111 embassy 00000000000111111100101100100101 Sure 00100000000000001110010001110010 encounter 00000000000010011110010110110010 rap 00000000000111111101110000000001 Papua 00100000000000000000000000000000 Mint 00100000000111101111001000100101 individually 00000000000110100100010001110010 demographics 00000000000110001011111101100011 Wako 00100000000000000000000000000000 925 00000000000000000000000000000000 lessen 00000000001100111010111110110010 tipped 00000000111101101001001000110010 Japanese-managed 00100000000000000000000000000000 5.16 00000000000000000000000000000000 Iacocca 00101111111110001000001010001000 Risk 00100000000111111111010101100111 Physicians 00100000000100111100111000110011 Best 00100000000000000001010011010000 wrap 00000000110110010110010110110010 preset 00000000000000000000000000000000 robes 00000000000000000000000000000000 toxic-waste 00000000000000000000000000000000 Passenger 00100000000000000001010101010000 periodicals 00000000000000000000000000000000 NAACP 01000000000000000000000000000000 Attendants 00100000000000010111111001110011 Burr 00100000000000000000000000000000 eagerly 00000001110010000000010001110010 Nine 00100000000111111101111001010000 racially 00000000010001101000000001110010 top-level 00000000000000000000000000000000 racist 00000000000010101110011010010000 Administrator 00100000000110111111110000110101 non-farm 00000000000000000000000000000000 Ottoni 00100000000000000000000000000000 espionage 00000000000110001011100010100111 grisly 00000000000000000000000000000000 Stardent 00100000000000000000000000000000 killers 00000000000000000000000000000000 151,000 00000000000000000000000000000000 misinterpret 00000000000000000000000000000000 herald 00000000000001110011010001001000 castigating 00000000000000000000000000000000 entail 00000000000100011001101110110010 sounding 00000000011110101110100001000000 decentralized 00000000010010000101010010010000 Jenks 00100000000000000000000000000000 appalling 00000000000011001100110110010000 Sherwin-Williams 01000000000000000000000000000000 rung 00000000000000000000000000000000 Sundays 00100000000111110011101001100010 tunes 00000000000110100110010101100011 Dae 00101111111111000101001000110000 envoy 00000000000111000000001100100111 firming 00000000000011100111010001000000 30.4 00000000000000000000000000000000 wrinkle 00000000000000000000000000000000 8.61 00000000000000000000000000000000 jacking 00000000000000000000000000000000 Legislature 00100000000000000010111001000101 promotes 00000000011100010001000000010010 impractical 00000000000111011010011110010000 Ringers 00100000000000000000000000000000 IS 01000000000000000000001000010010 vowing 00000000000010101010111000110010 staple 00000000000110011101100101100111 renegotiate 00000000000110010110001110110010 caustic 00000000000000001101010000110000 Kensington 00100000000000000000000000000000 stagnation 00000000000110001011111010100111 critically 00000000000100111000000001110010 Fang 00100000000000000000000000000000 sentiments 00000000000110101001101000100011 Salim 00100000000000000000000000000000 belfry 00000000000000000000000000000000 Silva 00101111111101000000001010001000 da 00001111111001000011010101001000 Collor 00100000000000000000000000000000 centrist 00000000000000000100011000110000 Whoever 00100000000111001010010001110010 watered-down 00000000000000000000000000000000 CHECKOFF 01000000000111111111010101000101 Perez 00101111111101111100101000101000 M.B.A. 01000000000000000000000000000000 opting 00000000000000000000000000000000 Perrin 00100000000001101001010100001000 Dorothy 00101111111001101010001000011000 CORPORATE 01000000000000000000010000110000 Buck 00100000000111111011000110110111 401 00000000000000000000000000000000 circumventing 00000000000000000000000000000000 balances 00000000000100001010001100000011 625 00000000000000000000000000000000 crane 00001111111101100010001000001000 ritual 00000000000111001101110000000001 smiling 00000000000110100011000001000000 deluge 00000000000111111110000110111111 2603.48 00000000000000000000000000000000 supreme 00000000000111111111110111100101 wrestle 00000000000000000000000000000000 admonition 00000000000001000011111001100111 therapeutic 00000000001100011010000000110000 unruly 00000000000000000000000000000000 propel 00000000000110011000111110110010 worship 00000000000001001001001010110111 cats 00000000000111000001110101100011 cord 00000000000000000000000000000000 dwindling 00000000000001011101010001000000 774 00000000000000000000000000000000 684 00000000000000000000000000000000 inexplicably 00000000000000000000000000000000 happenings 00000000000000000000000000000000 rat 00000000000010000000101100100001 forays 00000000000100001111110001100111 bested 00000000000000000000000000000000 Torrington 00100000000000000000000000000000 Streets 00100000000110111111111000001111 proliferating 00000000000110101101010001000000 musician 00000000000001101111011110110101 Busch 00101111111100011100001000001000 178.5 00000000000000000000000000000000 starters 00000000000111111111100111101000 Opinion 00100000000111100011111001100111 Concerning 00100000001100010000000000001010 dowdy 00000000000000000000000000000000 ASA 01000000000000000000000000000000 toast 00000000000000000000000000000000 Clubs 00100000000000010110110001100011 Quality 00100000000111101110000011100001 paycheck 00000000000000000000000000000000 homemaker 00000000000000000000000000000000 serene 00000000000000000000000000000000 sphere 00000000000111111001001001100111 fudge 00000000000000000000000000000000 applauds 00000000000000000000000000000000 Fitness 00100000000000000100101101100001 exaggerate 00000000000000000000000000000000 63.6 00000000000000000000000000000000 rides 00000001100101001111000000010010 grease 00000000000100100011101100100001 0.02 00000000000000000000000000000000 tuna 00000000000100101011100000100001 jumbos 00000000000000000000000000000000 Panelli 00100000000000000000000000000000 fainting 00000000000000000000000000000000 Bang 00100000000111110111111010110101 26.8 00000000000000000000000000000000 rife 00000000010101110110010000110010 sculptures 00000000001001100111110101100011 183 00000000000000000000000000000000 complications 00000000000111010010011000100011 experimentation 00000000000111011011010010100111 exhibitions 00000000000010010011110101100011 faint 00000000000000111100011010010000 food-processing 00000000000000000000000000000000 tractors 00000000000110111011101001100011 mating 00000000000000000000000000000000 organisms 00000000000111101111001010100011 Biotechnology 00100000000000010011011010110000 foothold 00000000000111011011101110100111 16.9 00000000000000000000000000000000 Fewer 00100000000000000001000111000000 120.7 00000000000000000000000000000000 KPMG 01000000000000000000000000000000 Roland 00101111111001100101100010011000 33.6 00000000000000000000000000000000 5.43 00000000000000000000000000000000 exits 00000000001100100010001000100011 248 00000000000000000000000000000000 38.2 00000000000000000000000000000000 Always 00100000000000110100001001110010 .. 00000000000000000000000000000000 Sino-U.S. 01000000000000000000000000000000 Upper 00100000000000001011100011010000 slowdowns 00000000000000000000000000000000 Mortgage-backed 00100000000000000000000000000000 chain-store 00000000000000000000000000000000 parcels 00000000000111110100000100101111 Dillard 00100000000100101010110000001000 invention 00000000000110000111111001100111 locals 00000000000000000010100110110011 telegraph 00001111111111101111110001001000 father-in-law 00000000000000000000000000000000 choke 00000000000000010110010110110010 well-connected 00000000000000000000000000000000 Canonie 00100000000000000000000000000000 profiting 00000000000000000000000000000000 glowing 00000000000010001101000000010000 leaf 00000000000000001001110100100001 Confidence 00100000000111101110001110100111 7.99 00000000000000000000000000000000 E.F. 01000000000000000000000000000000 drubbing 00000000000000000000000000000000 caveat 00000000000000000000000000000000 off-balance 00000000000000000000000000000000 imperfect 00000000000000000000000000000000 St 00100000000000000000000000000000 Norberto 00100000000000000000000000000000 Merry 00100000001001011000001000110000 Sutherland 00101111111011101110000010001000 word-processing 00000000000000000000000000000000 soprano 00000000000111101001111100001000 Legend 00100000000111000000000001000111 Anita 00100000000000000000000000000000 Esther 00100000000000000000000000000000 7.77 00000000000000000000000000000000 Kan 00100000000000000000000000000000 Zulu 00100000000000000000000000000000 accolade 00000000000000000000000000000000 Eliot 00100000000100111000000100001000 exhaustive 00000000000000101110010100010000 repurchases 00000000000000001000000010100111 271 00000000000000000000000000000000 safest 00000000000001010111010011010000 Tong 00100000000000000000000000000000 Mulberry 00100000000000000000000000000000 197 00000000000000000000000000000000 beamed 00000000011100101001001000110010 11.0 00000000000000000000000000000000 2233.9 00000000000000000000000000000000 acclaimed 00000000001000010001101001000000 evenings 00000000000000001100010101100011 one-eighth 00000000000000000000000000000000 4,400 00000000000000000000000000000000 Sanders 00101111111001100101001000001000 hosting 00000000000000000000000000000000 Pieces 00100000000111101111100100101111 2,120 00000000000000000000000000000000 Kajima 00100000000000000000000000000000 outlooks 00000000000000000000000000000000 32-a-share 00000000000000000000000000000000 erasing 00000000000000000000000000000000 Mellor 00100000000000000000000000000000 22.78 00000000000000000000000000000000 266.66 00000000000000000000000000000000 Luciano 00100000000000000000000000000000 Brecht 00100000000000000000000000000000 nose-dived 00000000000000000000000000000000 Plays 00100000011111000111000000010010 duke 00000000000101001111111000101000 jester 00000000000000000000000000000000 Workplace 00100000000001000000110000100001 Winchester 00100000000111011000101001101000 65th 00000000000000000000000000000000 Aviva 00100000000000000000000000000000 coloratura 00000000000000000000000000000000 grounded 00000011100001001100010000110010 fractional 00000000000000000000000000000000 42.25 00000000000000000000000000000000 Coach 00100000000111100100011110110101 Japanese-Americans 01000000000000000000000000000000 internment 00000000000000000000000000000000 Decades 00100000000000010100010011111011 pre-merger 00000000000000000000000000000000 Formally 00100000010000000001001001110010 adjudicators 00000000000000000000000000000000 ensures 00000000000111010011000000010010 abandons 00000000000000000000000000000000 Il 00100001100011001101001000110000 expediting 00000000000000000000000000000000 Gaming 00100000000011000110010010110000 commits 00000000000000000000000000000000 Return 00100000000111111111100101010111 Ulysses 00100000000000000000000000000000 reopens 00000000000000000000000000000000 Brechtian 00100000000000000000000000000000 Yusen 00100000000000000000000000000000 Connors 00101111111001011001001000001000 LaLonde 01000000000000000000000000000000 appointees 00000000000111110011010110110101 enlightening 00000000000000000000000000000000 Brick 00100000000000100010001100100001 exacerbating 00000000000000000000000000000000 36.50 00000000000000000000000000000000 fingerprint 00000000000000000000000000000000 crimping 00000000000000000000000000000000 Gramm-Rudman-Hollings 01000000000000000000000000000000 rescinded 00000010101011010100010000110010 Fabian 00100000000000000000000000000000 Amfac 00100000000111101001111100101000 countenance 00000000000000000000000000000000 insubordination 00000000000000000000000000000000 shadows 00000000000101001111011000001111 Hollings 00101111111110100000111010001000 nonpartisan 00000000000111010110011000110000 amused 00000000001111100101110000110010 overzealous 00000000001101010100110100010000 Jerritts 00100000000000000000000000000000 slam-dunk 00000000000000000000000000000000 refractory 00000000000000000000000000000000 non-automotive 00000000000000000000000000000000 uneventful 00000000000000000000000000000000 Briscoe 00100000000000000000000000000000 auto-emissions 00000000000000000000000000000000 scrubbers 00000000000011000101110010100111 Crosby 00101111111011110000001000001000 linen 00000000000000000000000000000000 Quack 00100000000000000000000000000000 1,111 00000000000000000000000000000000 sprout 00000000000000000000000000000000 accommodative 00000000000000000000000000000000 entitlements 00000000000000000000000000000000 hatched 00000000000000000000000000000000 stylistic 00000000000000000000000000000000 378 00000000000000000000000000000000 towering 00000000000000000000000000000000 stipulated 00000000000001100101110111000010 federalized 00000000000000000000000000000000 ennui 00000000000000000000000000000000 unopposable 00000000000000000000000000000000 cheerfully 00000000000000000000000000000000 intellect 00000000000100001001110010100111 flock 00000000000110010101111010110111 intimately 00000000000000000000000000000000 downturns 00000000000111111000001010100011 close-up 00000000000000000000000000000000 formulation 00000000000100100111111000001111 counterattack 00000000000000000000000000000000 amazed 00000000000011100101110000110010 McInnes 01000000000000000000000000000000 Gilder 00100000000000000000000000000000 welcoming 00000000000000000000000000000000 organizer 00000000000011100111110000110101 populating 00000000000000000000000000000000 617 00000000000000000000000000000000 mistaken 00000000000000001110110110010000 Petrovich 00100000000000000000000000000000 Messinger 00100000000000000000000000000000 Scientific-Atlanta 01000000000000000000000000000000 Norcross 00100000001000011011101001101000 Streep 00100000000000000000000000000000 Meryl 00100000000000000000000000000000 Detroit-based 00100000000000000000000000000000 biennial 00000000000000000000000000000000 plunges 00000000000111111011011110000011 savings-type 00000000000000000000000000000000 self-conscious 00000000000000000000000000000000 animal-rights 00000000000000000000000000000000 enlist 00000000001001100111111110110010 appended 00000000000000000000000000000000 Brissette 00100000000000000000000000000000 punk 00000000000000000000000000000000 decadence 00000000000000000000000000000000 ambiguity 00000000000000000000000000000000 prohibitively 00000000000000010010100111000000 specs 00000000000000000000000000000000 animosity 00000000000000000000000000000000 afflicted 00000000000110010110010000110010 laureate 00000000000000000000000000000000 intrinsic 00000000000000000000000000000000 Nash 00101111111110110001000100001000 resourceful 00000000000000000000000000000000 repainted 00000000000000000000000000000000 non-advertising 00000000000000000000000000000000 Helpern 00100000000000000000000000000000 marry 00000000000110101110101110110010 Campbell-Mithun 01000000000000000000000000000000 13.65 00000000000000000000000000000000 Jonas 00100000000000000000000000000000 76.8 00000000000000000000000000000000 Campbell-Mithun-Esty 01000000000000000000000000000000 standardize 00000000000000000000000000000000 slippage 00000000000110111001101010100111 market-moving 00000000000000000000000000000000 UNIX 01000000000101100100100000100001 Paluck 00100000000000000000000000000000 33.1 00000000000000000000000000000000 beads 00000000000000000000000000000000 phenomenal 00000000000000000111100000010000 41.2 00000000000000000000000000000000 160.1 00000000000000000000000000000000 21.6 00000000000000000000000000000000 6.52 00000000000000000000000000000000 9.90 00000000000000000000000000000000 -which 00000000000000000000000000000000 Orson 00100000000000000000000000000000 Labouisse 00100000000000000000000000000000 69-26 00000000000000000000000000000000 93-day 00000000000000000000000000000000 Kerr 00101111111101101000000100001000 single-digit 00000000000000000000000000000000 conspire 00000000000000000000000000000000 8.98 00000000000000000000000000000000 tirelessly 00000000000000000000000000000000 344 00000000000000000000000000000000 guesswork 00000000000000000000000000000000 37.50 00000000000000000000000000000000 interpreter 00000000000000000000000000000000 directorial 00000000000000000000000000000000 Unitel 00100000000000000000000000000000 1933 00000000000000000000000000000000 impromptu 00000000000000000000000000000000 3.09 00000000000000000000000000000000 4.48 00000000000000000000000000000000 116.9 00000000000000000000000000000000 5.63 00000000000000000000000000000000 addiction 00000000000111100100110010100111 Liquid 00100000000001100010101010110000 nude 00000000000100010110011010010000 Aim 00100000000111111100111010110111 unsuspected 00000000000000000000000000000000 Olga 00100000000000000000000000000000 112.9 00000000000000000000000000000000 Lucio 00100000000000000000000000000000 70.2 00000000000000000000000000000000 T-bond 00100000000000000000000000000000 maid 00000000000001000110000000100001 voluptuous 00000000000000000000000000000000 1230.80 00000000000000000000000000000000 undulate 00000000000000000000000000000000 11.04 00000000000000000000000000000000 miniseries 00000000000111101010101000100001 pimp 00000000000000000000000000000000 Favorite 00100000000000000111110000000001 DeSoto 01000000000000000000000000000000 23.1 00000000000000000000000000000000 32.71 00000000000000000000000000000000 Gliedman 00100000000000000000000000000000 Advancers 00100000000100100001001001110011 18.3 00000000000000000000000000000000 obscene 00000000000100101101000110010000 licking 00000000000000000000000000000000 164,830,000 00000000000000000000000000000000 619 00000000000000000000000000000000 478 00000000000000000000000000000000 insanity 00000000000000000000000000000000 17.1 00000000000000000000000000000000 Kluge 00101111111110100001000010001000 Rymer 00100000000000000000000000000000 nurtured 00000000111001101100010000110010 orphans 00000000000000000000000000000000 Glasnost 00100000000110101111110010100111 Seasonal 00100000000000010111010101010000 unworthy 00000000000000000000000000000000 subscribes 00000000000000000000000000000000 pluses 00000000000000000000000000000000 ONCE 01000000000000001000011011000000 CPC 01000000000000000000000000000000 Grigoli 00100000000000000000000000000000 Saint 00101111111100000101101000101000 undistinguished 00000000000000000000000000000000 preach 00000000000000000000000000000000 praises 00000011100011100011000000010010 Ivern 00100000000000000000000000000000 Admittedly 00100011000000000000001001110010 recycles 00000000000000000000000000000000 smartly 00000000000000000000000000000000 discriminate 00000000000110001001010110110010 nifty 00000000000000000000000000000000 Godown 00100000000000000000000000000000 nondeductible 00000000000000000000000000000000 piggybacking 00000000000000000000000000000000 OTS 01000000000000000000000000000000 60-vote 00000000000000000000000000000000 superimposed 00000000000000000000000000000000 Osamu 00100000000000000000000000000000 lexicon 00000000000000000000000000000000 specialty-chemicals 00000000000000000000000000000000 cruisers 00000000000000000000000000000000 Invariably 00100000010101100000001001110010 liquid-crystal 00000000000000000000000000000000 whirlwind 00000000000000000000000000000000 disarmament 00000000000111111110110110110000 signal-processing 00000000000000000000000000000000 225.5 00000000000000000000000000000000 courtesy 00000000000000011111110010100111 cathode-ray 00000000000000000000000000000000 363 00000000000000000000000000000000 persuasion 00000000000011111001110010100111 gritty 00000000001100010101000010010000 147 00000000000000000000000000000000 northeastern 00000000000000001000110110101000 Greer 00100000000000000000000000000000 active-matrix 00000000000000000000000000000000 Shapovalov 00100000000000000000000000000000 amicable 00000000001010011000110100010000 Magnascreen 00100000000000000000000000000000 23.9 00000000000000000000000000000000 fighter-plane 00000000000000000000000000000000 unwary 00000000000000000000000000000000 Imaging 00100000000000000001100001100001 Ovonic 00100000000000000000000000000000 Planar 00100000000000000000000000000000 scheming 00000000000000000000000000000000 Photonics 00100000000000000000000000000000 ceded 00000000000000000000000000000000 27-year 00000000000000000000000000000000 bless 00000000000000000000000000000000 18.6 00000000000000000000000000000000 Nestor 00100000000000000000000000000000 4.74 00000000000000000000000000000000 4400 00000000000000000000000000000000 cliched 00000000000000000000000000000000 PegaSys 01000000000000000000000000000000 492 00000000000000000000000000000000 fraught 00000000000001110101100000110010 housewives 00000000000111101111111000110011 fly-by-night 00000000000000000000000000000000 nicked 00000000000000000000000000000000 Distance 00100000000111101010001010110111 Partnerships 00100000000110101110000011110101 8.00 00000000000000000000000000000000 MAY 01000000000000000000000010010010 Zeidner 00100000000000000000000000000000 2.54 00000000000000000000000000000000 Renoir 00100000000000000000000000000000 McChesney 01000000000000000000000000000000 hard-bitten 00000000000000000000000000000000 editorials 00000000000011100101110101100011 Supplemental 00100000000000011010010000010000 junkets 00000000000000000000000000000000 most-recent 00000000000000000000000000000000 broker-sold 00000000000000000000000000000000 thank 00000000000110111010100110110010 risk-averse 00000000000000000000000000000000 durables 00000000000100101110010011001001 altitude 00000000001111000111111001100111 entwined 00000000000000000000000000000000 hindering 00000000000000000000000000000000 better-than-expected 00000000000000000000000000000000 Petit 00100000000000000000000000000000 non-Communist 01000000000000000000000000000000 stop-gap 00000000000000000000000000000000 murals 00000000000000000000000000000000 threemonth 00000000000000000000000000000000 Six-month 00100000000000000000000000000000 Edmund 00101111111000011100110110011000 chided 00000000000000000000000000000000 Geffen 00100000000000000000000000000000 pulse 00000000000111101100110000000001 peals 00000000000000000000000000000000 n 00000000000000000000000000000000 Museums 00100000000111101011110001100011 enroll 00000000000000000000000000000000 Hildebrandt 00100000000000000000000000000000 rowing 00000000000000000000000000000000 ate 00000000000111011011000000010010 Henning 00100000000000000000000000000000 Foremost 00100000000111101110010011010000 poisoning 00000000000001000111111111001001 7.41 00000000000000000000000000000000 Pepsi-Cola 01000000000000000000000000000000 basics 00000000000111100001101000110111 26th 00000000000000000000000000000000 Trinidad 00100000000000000000000000000000 Newgate 00100000000000000000000000000000 Glacier 00100000000000000000000000000000 175,240,000 00000000000000000000000000000000 galling 00000000000000000000000000000000 Trans-Alaska 01000000000000000000000000000000 highlights 00000000100010001111000000010010 health-club 00000000000000000000000000000000 memberships 00000000000111111100000001100011 smokescreen 00000000000000000000000000000000 constituted 00000000000001100001010000110010 Mannesmann 00100000000000000000000000000000 capacitors 00000000000000000000000000000000 Kamm 00100000000000000000000000000000 Sporting 00100000000010010010101010110000 Goods 00100000000101101110110011001001 hobbling 00000000000000000000000000000000 garages 00000000000000000000000000000000 Centronics 00100000000000000000000000000000 timberlands 00000000000000000000000000000000 Sport 00100000000101011110011000000001 yelling 00000000000000000000000000000000 protestors 00000000000000000000000000000000 Halliburton 00100000000110101110111100101000 accede 00000000000000000000000000000000 information-services 00000000000000000000000000000000 stationary 00000000000111001000001010110000 Nipsco 00100000000000000000000000000000 Devario 00100000000000000000000000000000 Igdaloff 00100000000000000000000000000000 Polygram 00100000000100100110110000100001 Mouse 00100000000111011110000000001000 12,190,000 00000000000000000000000000000000 invoked 00000001011011000101010000110010 dials 00000000000000000000000000000000 inconsistencies 00000000000000000000000000000000 Islander 00100000000000000000000000000000 muscular 00001111111010111011110000110000 couch 00000000000011001111110110110111 hangover 00000000000000000000000000000000 male-dominated 00000000000000000000000000000000 suntan 00000000001111111010001000110000 swim 00000000000101001001001010110111 detention 00000000000000001111110010100111 Physical 00100000000011001010000000110000 commemorate 00000000000000000000000000000000 agreeable 00000000000000000000000000000000 Grenada 00100000000101111011110010100111 collages 00000000000000000000000000000000 Greetings 00100000000110110010001010101000 seduce 00000000000000000000000000000000 395 00000000000000000000000000000000 aerobic 00000000000010110110101010110000 200,000-share 00000000000000000000000000000000 ebb 00000000000000000000000000000000 Viyella 00100000000000000000000000000000 juices 00000000000000000000000000000000 65,000 00000000000000000000000000000000 178.375 00000000000000000000000000000000 government-appointed 00000000000000000000000000000000 Joyce 00101111111010100000000100001000 civilized 00000000000000010101000010010000 Toronto-Dominion 01000000000000000000000000000000 Reagan-Bush 01000000000000000000000000000000 bureau-sponsored 00000000000000000000000000000000 capacity-expansion 00000000000000000000000000000000 Kochan 00100000000000000000000000000000 pizzazz 00000000000000000000000000000000 librarian 00000000000000000000000000000000 attends 00000001110011100011000000010010 rekindling 00000000000000000000000000000000 moderating 00000000000000000000000000000000 0.06 00000000000000000000000000000000 macho 00000000000000010110011010010000 prayer 00000000000101010001101100100001 Suffice 00100000000000010111010110110010 skipping 00000000000000000000000000000000 Curran 00100000000000000000000000000000 RV 01000000000000000000000000000000 Bowater 00100000000001100001000100101000 95.4 00000000000000000000000000000000 decency 00000000001100100101110010100111 62.25 00000000000000000000000000000000 conversions 00000000000111101010011100100011 64-year-old 00000000000000000000000000000000 bowls 00000000000000000000000000000000 stairs 00000000001110011111110101100011 WXRK 01000000000000000000000000000000 siding 00000000001110110101100000110010 dissatisfaction 00000000000100011110110000100111 grinding 00000000000001110110100001000000 ignited 00000000011111100111010000110010 cab 00000000000001111100001000100001 lanes 00000000001010110111110101100011 loosening 00000000000110100111010001000000 phantom 00000000000001111001111000010000 Hnilica 00100000000000000000000000000000 7.91 00000000000000000000000000000000 10.37 00000000000000000000000000000000 Biological 00100000000010001010000000110000 prosecute 00000000010110100011111110110010 Future 00100000000001001101111000010000 Jos 00100000000000000000000000000000 Clothiers 00100000000000000000000000000000 Owings 00100000000000000000000000000000 solicits 00000000000000000000000000000000 derogatory 00000000000000000000000000000000 decelerating 00000000000101111010010001000000 476.5 00000000000000000000000000000000 waffled 00000000000000000000000000000000 CalFed 01000000000010111110111100101000 173.1 00000000000000000000000000000000 reciting 00000000000000000000000000000000 alloy 00000000000001100011000100100001 MD-11 01000000000000000000000000000000 platitudes 00000000000000000000000000000000 demons 00000000000000000000000000000000 poltergeists 00000000000000000000000000000000 harried 00000000000000000000000000000000 Alfredo 00100000000000000000000000000000 AH-64 01000000000000000000000000000000 devils 00000000000000000000000000000000 Apache 00100000000111111111010100101000 rechargeable 00000000000000000000000000000000 178.9 00000000000000000000000000000000 173.5 00000000000000000000000000000000 general-election 00000000000000000000000000000000 defense-oriented 00000000000000000000000000000000 Paranormal 00100000000000000000000000000000 congregation 00000000000000000000000000000000 Vicar 00100000000000000000000000000000 Fiorello 00100000000000000000000000000000 Siegal 00100000000000000000000000000000 horrors 00000000000110001111011000001111 re-entered 00000000000000000000000000000000 T-45 00100000000000000000000000000000 also-ran 00000000000000000000000000000000 bedeviled 00000000000000000000000000000000 Breeders 00100000000000000000000000000000 Brink 00100000000111111111001100001111 tabloids 00000000000000000000000000000000 toehold 00000000000101011001101010100111 nod 00000000000111100101111010110111 long-deferred 00000000000000000000000000000000 sacked 00000000000000000000000000000000 Devon 00100000000000000000000000000000 Ages 00100000000000010001100001000111 ghostbusters 00000000000000000000000000000000 3-4 00000000000000000000000000000000 CRI 01000000000000000000000000000000 staggered 00000000000000110000011100010000 Jessica 00100000000000000000000000000000 arch 00000000000110100001111100001000 breeder 00000000000000000000000000000000 Educators 00100000000000000100111000110011 6,400 00000000000000000000000000000000 oaks 00000000000000000001011011101001 Hummerstone 00100000000000000000000000000000 breeders 00000000000000000000000000000000 1,013 00000000000000000000000000000000 Perella 00101111111011001001111000001000 Mediation 00100000000000101010100101100101 stainless 00000000000110110010111000101000 100.2 00000000000000000000000000000000 Frederic 00101111111000010011110110011000 Contributing 00100000000011101010111000110010 Writing 00100000000111110110100001000000 daylight 00000000000000000000000000000000 boulevard 00000000000111110110100010100101 Quixote 00100000000000000000000000000000 ardor 00000000000000000000000000000000 Dartmouth 00100000000001010111111000101000 Graves 00101111111100011100000000001000 vicars 00000000000000000000000000000000 redevelopment 00000000000000010011001001100001 footsteps 00000000000000000000000000000000 strong-willed 00000000000000000000000000000000 recollection 00000000000111110001110000001111 pokes 00000000000000000000000000000000 42-year 00000000000000000000000000000000 acquisitive 00000000000000000000000000000000 vicinity 00000000000000000000000000000000 135.9 00000000000000000000000000000000 emission 00000000000000000011100011100001 spire 00000000000000000000000000000000 Worried 00100000000111111111110000110010 stubborn 00000000000010000111000010010000 918 00000000000000000000000000000000 subtracted 00000000000000000000000000000000 picnic 00000000000000000000000000000000 mid-1990 00000000000000000000000000000000 sprinkle 00000000000000000000000000000000 sixth-largest 00000000000000000000000000000000 pedestrian 00000000000000000000000000000000 110.9 00000000000000000000000000000000 1466.29 00000000000000000000000000000000 thoroughbreds 00000000000000000000000000000000 Industrielle 00100000000000000000000000000000 20-story 00000000000000000000000000000000 untrustworthy 00000000000000000000000000000000 126,630,000 00000000000000000000000000000000 debunk 00000000000000000000000000000000 Covia 00100000000000000000000000000000 Vortex 00100000000000000000000000000000 burial 00000000000000000000000000000000 pub 00000000000001110001111010110000 disproportionately 00000000001010101000000001110010 Giraffe 00100000000000000000000000000000 27.4 00000000000000000000000000000000 Quilted 00100000000000000000000000000000 mahogany 00000000000000000000000000000000 curtains 00000000000000000000000000000000 coordinating 00000000000111110110010110110000 Trabold 00100000000000000000000000000000 Monetta 00100000000000000000000000000000 exorcism 00000000000000000000000000000000 undiversified 00000000000000000000000000000000 Ravitch 00100000000000000000000000000000 52.8 00000000000000000000000000000000 pruned 00000000000000000000000000000000 2.32 00000000000000000000000000000000 203 00000000000000000000000000000000 25.5 00000000000000000000000000000000 shuffling 00000000001001001010110001000000 9.53 00000000000000000000000000000000 9.51 00000000000000000000000000000000 Litchfield 00100000000000000000000000000000 shielded 00001001001011010100010000110010 Diversification 00100000000010000001101000111001 McKenna 01000000000000000000000000000000 clergyman 00000000000000000000000000000000 revisit 00000000000000000000000000000000 sobering 00000000000000000000000000000000 Gaffney 00101111110011111100000010001000 demonic 00000000000000000000000000000000 wheezing 00000000000000000000000000000000 thoughtless 00000000000000000000000000000000 171 00000000000000000000000000000000 demotion 00000000000000000000000000000000 slap 00000000000111100101001010110111 pragmatist 00000000000000000000000000000000 6.75 00000000000000000000000000000000 moonlighting 00000000000000000000000000000000 tenacious 00000000000000000000000000000000 Paperboard 00100000000010100100011010110000 praying 00000000000000000000000000000000 writhing 00000000000000000000000000000000 Ringing 00100000000010101110100001000000 entrepreneurship 00000000000011101011110010100111 revitalization 00000000000111011001101101001111 halve 00000000000000000000000000000000 holy 00000000000001100001011000110000 discontinuance 00000000000101010111011000001111 grinds 00000000000000000000000000000000 raiding 00000000000111101011110001000000 paper-company 00000000000000000000000000000000 psychic 00000000000000000000000000000000 Kathleen 00101111111000000110110110011000 50.875 00000000000000000000000000000000 patterned 00000000000000000000000000000000 bartenders 00000000000000000000000000000000 worst-case 00000000000000000000000000000000 doughnut 00000000000000000000000000000000 ASCAP 01000000000000000000000000000000 Islamabad 00100000000000000000000000000000 Reserved 00100000001110010000010000110010 auditing 00000000000001001100000010110000 nuance 00000000000000000000000000000000 91.7 00000000000000000000000000000000 writeoffs 00000000000000000000000000000000 shareholdings 00000000000111100101111001101001 chin 00000000000111111000111110000001 8,500 00000000000000000000000000000000 conspirators 00000000000100000111100010100111 Heileman 00101111111100111001000100101000 430,000 00000000000000000000000000000000 stuffed 00000000000010001101101001000000 525,000 00000000000000000000000000000000 Alsthom 00100000000000000000000000000000 Xiaoping 00101111111011000100000001100111 247.3 00000000000000000000000000000000 aplenty 00000000000000000000000000000000 waste-to-energy 00000000000000000000000000000000 dived 00000000000000000000000000000000 informational 00000000000101010000000000110000 sure-fire 00000000000000000000000000000000 nonessential 00000000000000000000000000000000 rains 00000000000111101100110000000011 whipsaw 00000000000000000000000000000000 Denlea 00100000000000000000000000000000 Yuri 00100000000011110101111000011000 high-rises 00000000000000000000000000000000 evenhanded 00000000000000000000000000000000 promissory 00000000000000000101100110110000 truthful 00000000000000000000000000000000 earners 00000000000111101111101110000011 Yamatake 00100000000000000000000000000000 oily 00000000000000000000000000000000 Espana 00100000000000000000000000000000 lone 00000000000111001101011000110000 LIMITED 01000000000001000000001001000000 girding 00000000000000000000000000000000 Dry 00100000000000000001110110110111 Outplacement 00100000000001010100000010110000 disregard 00000000000111001111110010110111 Olshan 00100000000000000000000000000000 lower-level 00000000000000000000000000000000 popularized 00000000000000000000000000000000 Molloy 00100000000000000000000000000000 stirrings 00000000000000000000000000000000 pajama 00000000000000000000000000000000 high-visibility 00000000000000000000000000000000 Pleasant 00100000000000010000011010010000 Lupel 00100000000000000000000000000000 Fully 00100000000000000111001001110010 Bertolotti 00100000000000000000000000000000 Yuzek 00100000000000000000000000000000 PARTNERS 01000000000110101010000011101001 J.M. 01000000000000000000000000000000 spurn 00000000000000000000000000000000 political-corruption 00000000000000000000000000000000 extorting 00000000000010110111011101000000 burger 00001111111011011000011100001000 Quinn 00101111111110111110000010001000 Fast-food 00100000000000000000000000000000 Tufts 00100000000001000111111000101000 Gains 00100000000111111110100000000011 78.4 00000000000000000000000000000000 65.6 00000000000000000000000000000000 Slowing 00100000000111001111010001000000 stalked 00000000000110011001001000110010 in-office 00000000000000000000000000000000 wrists 00000000000000000000000000000000 pesatas 00000000000000000000000000000000 72.5 00000000000000000000000000000000 ejected 00000000000000000000000000000000 Hyatt 00100000000100001110000000001000 infrequent 00000000000000000000000000000000 51.50 00000000000000000000000000000000 victorious 00000000000000000000000000000000 gilded 00000000000000000000000000000000 Greenshields 00100000000000000000000000000000 touts 00000000000000000000000000000000 populous 00000000000000100001000010010000 ushering 00000000000000000000000000000000 overcharge 00000000000000000000000000000000 ill-fated 00000000000000000000000000000000 mudslinging 00000000000000000000000000000000 whoever 00000000000111001010010001110010 inverted 00000000000000011011001110010000 confessions 00000000000000000000000000000000 Repsol 00100000000000000000000000000000 purportedly 00000001111100000000001001110010 illicit 00000000000000000100000110010000 signatures 00000000000000000100000001100011 Entex 00100000000000000000000000000000 Shreveport 00100000000000000000000000000000 tempted 00000000000011000100011000110010 interpreting 00000000000111110011011101000000 passel 00000000000000000000000000000000 pay-as-you-go 00000000000000000000000000000000 Move 00100000000111111111111000110111 81,000 00000000000000000000000000000000 Claridge 00100000000101100111111100001000 overpaid 00001101001011010100010000110010 mammoth 00000000000000101100100000010000 runoff 00000000000000000000000000000000 deceived 00000000000000000000000000000000 Brizola 00100000000000000000000000000000 bronze 00000000000001010000101100100001 anxiously 00000000000000000000000000000000 Altos 00100000000000000000000000000000 cabinets 00000000000000000000000000000000 sewer 00000000000010001100101010110000 Subsequent 00100000000000000001101100010000 Chong 00100000000000000000000000000000 Disk 00100000000010101000001000100001 Nugent 00101111111101011111111010101000 Organizing 00100000010110000010110001000000 echelons 00000000000000000000000000000000 Honolulu-based 00100000000000000000000000000000 thug 00000000000000000000000000000000 Mabon 00100000000000000000000000000000 ills 00000000000111111011001010100011 Jason 00100000000000000000000000000000 Sarney 00101111111000001010010110001000 Aerojet 00100000000000000000000000000000 stipulation 00000000000000000000000000000000 Receptech 00100000000000000000000000000000 Lizhi 00100000000000000000000000000000 interleukin-4 00000000000000000000000000000000 Hemming 00100000000000000000000000000000 organ-transplant 00000000000000000000000000000000 deregulate 00000000001111101010111110110010 sheltered 00000000011000100101101001000000 double-B 01000000000000000000000000000000 2149.3 00000000000000000000000000000000 4.83 00000000000000000000000000000000 99.3 00000000000000000000000000000000 unoccupied 00000000000000000000000000000000 deposited 00000000111100001100010000110010 deterrents 00000000000111110011001100100111 condominiums 00000000000110101101111001100011 Foulds 00100000000000000000000000000000 massively 00000000000000000000000000000000 convulsions 00000000000000000000000000000000 embracing 00000000000101001011111101000000 356 00000000000000000000000000000000 busts 00000000000010010111110001100011 rope 00000000000111110100111000000001 694 00000000000000000000000000000000 Gasich 00100000000000000000000000000000 110-story 00000000000000000000000000000000 257.8 00000000000000000000000000000000 Abbot 00100000000000000000000000000000 Bum 00100000000000000000000000000000 swindled 00000000000000000000000000000000 miniscule 00000000000000000000000000000000 twin-jet 00000000000000000000000000000000 past-due 00000000000000000000000000000000 99.14 00000000000000000000000000000000 Doonesbury 00100000000000000000000000000000 Dear 00100000000001010010011010010000 portends 00000000000000000000000000000000 reign 00000000000111110011101110100111 161.1 00000000000000000000000000000000 Medstone 00100000000000000000000000000000 misstatements 00000000000000000000000000000000 4.93 00000000000000000000000000000000 56.25 00000000000000000000000000000000 Smaby 00100000000000000000000000000000 position... 00000000000000000000000000000000 not-for-profit 00000000000000000000000000000000 certificate-of-need 00000000000000000000000000000000 1.62 00000000000000000000000000000000 Hallingby 00100000000000000000000000000000 Palicka 00100000000000000000000000000000 Burnand 00100000000000000000000000000000 lithotripter 00000000000000000000000000000000 Brantford 00100000000000000000000000000000 smashing 00000000000000000000000000000000 Wakefield 00101111111110111101110001001000 A&W 01000000000000000000000000000000 4,900 00000000000000000000000000000000 new-generation 00000000000000000000000000000000 administers 00000000000111001101000000010010 Tip 00100000000100101001001010110111 Doctors 00100000000110000010111000110011 marvelously 00000000000000000000000000000000 326,000 00000000000000000000000000000000 Zones 00100000000000000010110100100011 beaming 00000000000000000000000000000000 Photo 00100000000011010000100000100001 4,830 00000000000000000000000000000000 rounds 00000000000010010011100100101111 Merritt 00100000000110111011000001001000 cash-interest 00000000000000000000000000000000 increment 00000000000000000000000000000000 fastener 00000000000000000000000000000000 Zone 00100000000100101001101001100111 nest 00000000000111001110101100100001 grass 00000000000001100001111000000001 second-story 00000000000000000000000000000000 Trim 00100000000111100110111110110010 Bills 00100000000100100100110010000111 Bobar 00100000000000000000000000000000 camouflaged 00000000011011100101101001000000 toe 00000000000110000101111010110111 Grahams 00100000000000000000000000000000 Grieco 00100000000000000000000000000000 Franz 00100000000111110101010100001000 Steinkuehler 00100000000000000000000000000000 closed-circuit 00000000000000000000000000000000 Matanky 00100000000000000000000000000000 Chips 00100000000111101001110110001001 proprietors 00000000000000000000000000000000 depart 00000000011001111101010110110010 low-crime 00000000000000000000000000000000 encumbered 00000000000000000000000000000000 burglaries 00000000000000000000000000000000 dexterity 00000000000000000000000000000000 crime-ridden 00000000000000000000000000000000 Den 00100000000000000000000000000000 Batten 00100000000000000000000000000000 Norske 00100000000000000000000000000000 Stelco 00100000000000000000000000000000 153.3 00000000000000000000000000000000 parakeet 00000000000000000000000000000000 old-time 00000000000000000000000000000000 ticking 00000000000000000000000000000000 deteriorates 00000000000000000000000000000000 30.3 00000000000000000000000000000000 Oslo 00100000000101011111111001101000 SPCA 01000000000000000000000000000000 retrieved 00000000000000000000000000000000 72.3 00000000000000000000000000000000 anti-discrimination 00000000000000000000000000000000 blurred 00000000000000000000000000000000 statistician 00000000000000000000000000000000 coating 00000000000111001101010001100001 Cleveland-based 00100000000000000000000000000000 Grohl 00100000000000000000000000000000 USG 01000000000000000000000000000000 13.81 00000000000000000000000000000000 building-materials 00000000000000000000000000000000 re-enter 00000000000000000000000000000000 aroma 00000000000000000000000000000000 Fiechter 00100000000000000000000000000000 Kanon 00100000000000000000000000000000 Carre 00101111110000101100111110000010 Franciscan 00100000000000000000000000000000 punished 00000001010010010010110000110010 Enichem 00100000000000000000000000000000 oblivious 00000000000000000000000000000000 dances 00000000011010100111110101100011 upsets 00001010001010000011000000010010 Necci 00100000000000000000000000000000 three-day 00000000000000000000000000000000 warm-up 00000000000000000000000000000000 four-star 00000000000000000000000000000000 Adjusters 00100000000000000000000000000000 Latour 00100000000000000000000000000000 Stock-fund 00100000000000000000000000000000 scrape 00000000000000000000000000000000 347 00000000000000000000000000000000 restart 00000000010100111111110110110010 108.3 00000000000000000000000000000000 99.7 00000000000000000000000000000000 raided 00000000001101000101010000110010 redefine 00000000000000000000000000000000 fund-research 00000000000000000000000000000000 pay-TV 01000000000000000000000000000000 Valerie 00100000000000000000000000000000 canceling 00000000000110010011111101000000 fiddle 00000000000111010111101010110111 lawmaking 00000000000000000000000000000000 Shicoff 00100000000000000000000000000000 Dark 00100000000111111101011010010000 guilder 00000000000000000000000000000000 wage-earning 00000000000000000000000000000000 kettle 00000000000000000000000000000000 Perpetual 00100000010100010000001000110000 typhoons 00000000000000000000000000000000 277 00000000000000000000000000000000 nationalists 00000000000111111110000110110011 47.4 00000000000000000000000000000000 upholding 00000010010010010000000000001010 accommodated 00000000000000000000000000000000 Anglo-American 01000000000000000000000000000000 right-hand 00000000000000000000000000000000 shouts 00000000011111100111000000010010 trotted 00000000000000000000000000000000 Finks 00100000000000000000000000000000 nitrofurantoin 00000000000000000000000000000000 159.7 00000000000000000000000000000000 macrocrystalline 00000000000000000000000000000000 14.43 00000000000000000000000000000000 Crusader 00100000000000000000000000000000 ill-suited 00000000000000000000000000000000 Copiague 00100000000000000000000000000000 fairer 00000000000000000000000000000000 F-18s 00100000000000000000000000000000 Rafales 00100000000000000000000000000000 peal 00000000000000000000000000000000 tempered 00000000000110000001110000110010 2.12 00000000000000000000000000000000 Norwich 00100000000000000000000000000000 Aslacton 00100000000000000000000000000000 Garland 00100000000000000000000000000000 Voter 00100000000000000000111000100001 discordant 00000000000000000000000000000000 manual 00000000000011101100100000100001 Lawrenceville 00100000000000000000000000000000 Yves 00101111111011111011101100101000 162,000 00000000000000000000000000000000 gunmen 00000000000000001100100000110011 apologists 00000000000000000000000000000000 77.7 00000000000000000000000000000000 Strom 00100000000000000000000000000000 whimper 00000000000000000000000000000000 ESP 01000000000000000000000000000000 invincible 00000000000000000000000000000000 symbolism 00000000000000000000000000000000 invitations 00000000000000011111001000100011 full-blown 00000000000000000000000000000000 chat 00000000000111101101101010110111 inequality 00000000000000000000000000000000 assures 00000000010001100011000000010010 instituting 00000000000000000000000000000000 dreadful 00000000000000010111011010010000 Dassault-Breguet 01000000000000000000000000000000 aggravating 00000000000000000000000000000000 mitigating 00000000000000000000000000000000 reintroduced 00000000000000000000000000000000 F-18 00100000000000000000000000000000 ham 00000000001110110011111010110000 repackaged 00000000000000000000000000000000 7.87 00000000000000000000000000000000 chastises 00000000000000000000000000000000 potholes 00000000000000000000000000000000 Stellar 00100000000000010111100000010000 cascading 00000000000000000000000000000000 kingdom 00000000000000000010001010101000 5.163 00000000000000000000000000000000 Piedmont 00100000000110101011000100101000 Ardent 00100000000100011000110100010000 Al-Chalabi 01000000000000000000000000000000 Orrin 00100000000000000000000000000000 loafers 00000000000000000000000000000000 cheaters 00000000000000000000000000000000 evoke 00000000000000000000000000000000 99.95 00000000000000000000000000000000 43.875 00000000000000000000000000000000 rigged 00000000010111110101101001000000 untrained 00000000000000000000000000000000 Lightfoot 00100000000000000000000000000000 50.7 00000000000000000000000000000000 7.70 00000000000000000000000000000000 7.71 00000000000000000000000000000000 Dauchy 00100000000000000000000000000000 futures-investment 00000000000000000000000000000000 raging 00000000000001101101010001000000 Chex 00100000000000000000000000000000 government-approved 00000000000000000000000000000000 Hurwitz 00101111111101101001000010001000 Mix 00100000000111011100100101100111 indomitable 00000000000000000000000000000000 cashing 00000000000100011110010000110010 Sayers 00100000000000000000000000000000 loathed 00000000000000000000000000000000 Snoopy 00100000000000000000000000000000 evinced 00000000000000000000000000000000 torture 00000000000101110001110010100111 256 00000000000000000000000000000000 deterrent 00000000000111111010000110001001 Hartnett 00100000000000000000000000000000 peculiarities 00000000000000000000000000000000 Schulz 00100000000000000000000000000000 Colonial 00100000000000100100100100100001 flip-flop 00000000000000000000000000000000 aerial 00000000000000000000000000000000 tie-ins 00000000000000000000000000000000 jurisdictional 00000000000000000000000000000000 Rewards 00100000000111001101111000100011 well-intended 00000000000000000000000000000000 152,000 00000000000000000000000000000000 Fifteen 00100000000111011111000011000000 long-delayed 00000000000000000000000000000000 Britton 00100000000000000000000000000000 ranches 00000000000000000000000000000000 Raoul-Duval 01000000000000000000000000000000 securities-industry 00000000000000000000000000000000 Hammerschmidt 00100000000000000000000000000000 viewpoints 00000000000000000000000000000000 petitioned 00000000000101101101010000110010 SIA 01000000000000000000000000000000 judgeships 00000000000000000000000000000000 Eritreans 00100000000000000000000000000000 Redwood 00100000000000011000011010101000 2-3 00000000000000000000000000000000 Tigreans 00100000000000000000000000000000 ten 00000000000111111100111001010000 Eritrea 00100000000000000000000000000000 Ababa 00100000000000000000000000000000 simplicity 00000000000001100111110010100111 scrupulous 00000000000000000000000000000000 21.44 00000000000000000000000000000000 Addis 00100000000000000000000000000000 bolted 00000000000000000000000000000000 sell-offs 00000000000000000000000000000000 Eritrean 00100000000000000000000000000000 liberated 00000000000000000000000000000000 'Em 01000000000000000010000101001000 Ethiopian 00100000000001011100010100110000 BAKER 01001111111100100001001010001000 Reading 00100000000111101110110001000000 Foxmoor 00100000000000000000000000000000 sprightly 00000000000000000000000000000000 authorizes 00000000001000110001000000010010 Coudert 00100000000000000000000000000000 wigs 00000000000000000000000000000000 spelled 00000000001111010001001000110010 Haile 00100000000000000000000000000000 painters 00000000000000000000000000000000 capacities 00000000000000000000000000000000 shacks 00000000000000000000000000000000 grabs 00000000000111110011010001110010 accidentally 00000000111100000000010001110010 discourages 00000000000011110001000000010010 Elaborating 00100000000000000000000000000000 Gersony 00100000000000000000000000000000 clan 00000000000000000000000000000000 abortionist 00000000000000000000000000000000 mirrors 00000000001100011111000000010010 compartment 00000000000110100011011000000001 Somalis 00100000000000000000000000000000 computer-software 00000000000000000000000000000000 clipboard 00000000000000000000000000000000 Daytona 00100000000000000000000000000000 wasteland 00000000000000000000000000000000 gawky 00000000000000000000000000000000 preview 00000000000101110000100101100111 Lutz 00100000000000000000000000000000 Hampster 00100000000000000000000000000000 circuit-breaker 00000000000000000000000000000000 creations 00000000000110001101111101100011 Intermec 00100000000000000000000000000000 Sabrina 00100000000000000000000000000000 synchronized 00000000000000000000000000000000 Kenosha 00100000000111100010101001101000 cassettes 00000000000110000111110101100011 980.2 00000000000000000000000000000000 Siad 00100000000000000000000000000000 Michaelson 00100000000000000000000000000000 facilitating 00000000000011010101011101000000 7.79 00000000000000000000000000000000 Lori 00100000000000000000000000000000 brutality 00000000000000000000000000000000 pharmacies 00000000000000000000000000000000 excel 00000000000101001011111100001000 unintended 00000000000011010010010100010000 lash 00000000000000000000000000000000 foreign-aid 00000000000000000000000000000000 fetus 00000000000000000000000000000000 20-point 00000000000000000000000000000000 Rachel 00100000000000000000000000000000 Brookline 00100000000000000000000000000000 Krampe 00100000000000000000000000000000 constitutionality 00000000000111010101111000001111 arisen 00000000001101111010110000110010 anti-Noriega 01000000000000000000000000000000 buoying 00000000000000000000000000000000 reinstating 00000000000000000000000000000000 slides 00000000000001100010001000100011 5-4 00000000000000000000000000000000 depressant 00000000000000000000000000000000 Blondes 00100000000000000000000000000000 Peng 00100000000000000000000000000000 shorten 00000000001110100110111110110010 disregarded 00001011001011010100010000110010 110,000 00000000000000000000000000000000 walkouts 00000000000000000000000000000000 hobbles 00000000000000000000000000000000 smaller-than-expected 00000000000000000000000000000000 273,000 00000000000000000000000000000000 44,000 00000000000000000000000000000000 LAWMAKERS 01000000000000000100010010110011 125,000 00000000000000000000000000000000 electric-utility 00000000000000000000000000000000 sting 00000000000110001010111000000001 542 00000000000000000000000000000000 Carney 00100000000000000000000000000000 105.4 00000000000000000000000000000000 15.25 00000000000000000000000000000000 Galle 00100000000000000000000000000000 Beal 00100000000000000000000000000000 367 00000000000000000000000000000000 429 00000000000000000000000000000000 brown-tobacco 00000000000000000000000000000000 overseen 00000000001110101111010000110010 leapfrog 00000000000000000000000000000000 39.25 00000000000000000000000000000000 locating 00000000000010000111111101000000 mid-size 00000000000000000000000000000000 582 00000000000000000000000000000000 inexorably 00000000000000000000000000000000 leaned 00000000000000000000000000000000 embark 00000000000000000000000000000000 Waldorf 00100000000000000000000000000000 reshuffle 00000000000000000000000000000000 inquired 00000000000000000000000000000000 pursues 00000010010011100011000000010010 Lonesome 00100000000000000000000000000000 Dove 00100000000111110100000000001000 Abortion-rights 00100000000000000000000000000000 soviets 00000000000111101111111110110011 Leave 00100000000101111110101110110010 dressmaking 00000000000000000000000000000000 Resistance 00100000000111001011001100100111 -for 00000000000000000000000000000000 candles 00000000000000000000000000000000 Schramm 00100000000000000000000000000000 DeFazio 01000000000000000000000000000000 handwritten 00000000000000000000000000000000 Jeb 00100000000000000000000000000000 109.85 00000000000000000000000000000000 Compliance 00100000000011000001100000110010 flirted 00000000000000000000000000000000 needy 00000000000111001010101000110000 Nassau 00100000000000000000000000000000 Gaston 00101111111000101000101100011000 Newsprint 00100000000000010100011010110000 Julia 00100000000000000000000000000000 six-cent 00000000000000000000000000000000 superseded 00000000000000000000000000000000 light-wave 00000000000000000000000000000000 revenue-raising 00000000000000000000000000000000 Kendrick 00100000000000000000000000000000 insolvency 00000000000101111110011010100111 evaders 00000000000000000000000000000000 feckless 00000000000000000000000000000000 emboldened 00000000000101100001110000110010 Sylvia 00100000000000000000000000000000 Oriental 00100000000001000000001000110000 feats 00000000000000000000000000000000 compilation 00000000000000000000000000000000 brightened 00000000000000000000000000000000 fascist 00000000000000000000000000000000 short-range 00000000000000000000000000000000 Dolan 00100000000000000000000000000000 unmarked 00000000000000000000000000000000 890 00000000000000000000000000000000 cloak 00000000000000000000000000000000 deflect 00000000000000011011111110110010 practitioner 00000000000000000000000000000000 730 00000000000000000000000000000000 perceive 00000000000101101110100110110010 Hours 00100000000000000000000100011011 registrations 00000000000000000000000000000000 impair 00000000001110000110111110110010 Graduates 00100000000101001000111000110011 careless 00000000000000000000000000000000 Liptak 00100000000000000000000000000000 35.75 00000000000000000000000000000000 galvanizing 00000000000000000000000000000000 misdemeanors 00000000000000000000000000000000 implicitly 00000001010001000001001001110010 2:43 00000000000000000000000000000000 tendencies 00000000000111100011011100100011 Takeover-stock 00100000000000000000000000000000 multiparty 00000000000000000000000000000000 arson 00000000000000000000000000000000 ShareData 01000000000000000000000000000000 trashing 00000000000000000000000000000000 fringes 00000000000110110111011000001111 re-establish 00000000000000000000000000000000 consummate 00000000001101100101110110110010 debt-to-equity 00000000000000000000000000000000 5.09 00000000000000000000000000000000 Zeffirelli 00100000000000000000000000000000 31.4 00000000000000000000000000000000 public-works 00000000000000000000000000000000 unadjusted 00000000000000111000000100010000 Forget 00100000000111110011100110110010 jeopardizing 00000000000000000000000000000000 374.6 00000000000000000000000000000000 Roach 00101111111000001001001000001000 stimuli 00000000000000000000000000000000 non-residential 00000000000000000000000000000000 uninformative 00000000000000000000000000000000 69.6 00000000000000000000000000000000 23.4 00000000000000000000000000000000 discourse 00000000000011001010111010100111 prodded 00000001000111000101010000110010 programmer 00000000000101111011011110110101 bullhorns 00000000000000000000000000000000 tangential 00000000000000000000000000000000 Euromarket 00100000000000000101011010100001 picketing 00000000000000000000000000000000 equate 00000000000000000000000000000000 Rosa 00100000000000101000000001001000 accomplishes 00000000000000000000000000000000 pinpointed 00000000000000000000000000000000 construe 00000000000000000000000000000000 tie-in 00000000000000000000000000000000 reminders 00000000000000000000000000000000 Outstanding 00100000000111111111111000011101 communications-network 00000000000000000000000000000000 non-life 00000000000000000000000000000000 1,680 00000000000000000000000000000000 subcontract 00000000000000000000000000000000 refurbishment 00000000000000000000000000000000 disturbances 00000000000111100100011000100011 Taisho 00100000000000000000000000000000 Dictionary 00100000000111101011110100000001 1,940 00000000000000000000000000000000 financial-data 00000000000000000000000000000000 680 00000000000000000000000000000000 Mandle 00100000000000000000000000000000 Technically 00100000001000001000000001110010 accommodations 00000000000111110111000001100011 735 00000000000000000000000000000000 scenery 00000000000000000000000000000000 savers 00000000000000000001101111110011 captive 00000000000111101110101001000000 Shokubai 00100000000000000000000000000000 self-styled 00000000000000000000000000000000 circuit-board 00000000000000000000000000000000 lowest-rated 00000000000000000000000000000000 Vichy 00100000000000000000000000000000 23.7 00000000000000000000000000000000 home-run 00000000000000000000000000000000 hitters 00000000000111101001101001110011 thoroughfare 00000000000000000000000000000000 deductibles 00000000000000000000000000000000 cultivated 00000000111101101100010000110010 limp 00000000000000000000000000000000 Hardly 00100001100001000000001001110010 test-drive 00000000000000000000000000000000 Sealey 00100000000000000000000000000000 Jahn 00100000000000000000000000000000 692 00000000000000000000000000000000 highest-rated 00000000000000000000000000000000 Ganis 00101111111011101100000010001000 Gumbel 00100000000000000000000000000000 Tele1st 00100000000000000000000000000000 Bargain 00100000000111011101101010110111 Borough 00100000000001000010010000110101 Showa 00100000000000000000000000000000 low-power 00000000000000000000000000000000 Fulham 00100000000000000000000000000000 passbook 00000000000000000000000000000000 crept 00000000000100001011001000110010 get-together 00000000000000000000000000000000 observing 00000000000111101001110101000000 Kawasaki-Rikuso 01000000000000000000000000000000 Long-Term 01000000000000000000000000000000 second-level 00000000000000000000000000000000 buttressed 00000000000000000000000000000000 analogous 00000000000000000000000000000000 Spielberg 00101111111100111100000010001000 Teikoku 00100000000000000000000000000000 capital-markets 00000000000000000000000000000000 solicitor 00000000000000111010110000110101 sharpening 00000000000000000000000000000000 Hafer 00100000000000000000000000000000 dueling 00000000000000000000000000000000 relentless 00000000000010100001000000010000 amateurs 00000000000111010100111000110011 PriMerit 01000000000000000000000000000000 Chatsworth 00100000000000000000000000000000 975 00000000000000000000000000000000 avenues 00000000000111111011001110100011 gut-wrenching 00000000000000000000000000000000 103.1 00000000000000000000000000000000 Ill.-based 00100000000000000000000000000000 minicrash 00000000000000000000000000000000 seaborne 00000000000000000000000000000000 Mediterranean 00100000000111110010001110101000 purposely 00000000000000000000000000000000 unseated 00000000000000000000000000000000 75-year-old 00000000000000000000000000000000 65.4 00000000000000000000000000000000 ramparts 00000000000000000000000000000000 unstoppable 00000000000000000000000000000000 transitional 00000000001001001101000000010000 captivating 00000000000111110011000010010000 Hallmark 00100000000000000010010100110001 Kurland 00100000000000000000000000000000 outposts 00000000000100011000111101100011 bludgeon 00000000100110111111110110110010 Marschalk 00100000000000000000000000000000 crapshoot 00000000000110000111101010110111 racket 00000000000000000000000000000000 Takashi 00100000000000000000000000000000 49,000 00000000000000000000000000000000 erred 00000000011010011110001000110010 com 00000000000110101010010010110000 Chabrol 00100000000000000000000000000000 pany 00000000000000000000000000000000 allergy 00000000000000000000000000000000 5:30 00000000000000000000000000000000 ace 00000000000110100011011100100001 Q45 00100000000000000000000000000000 wags 00000000000101010010000010110011 pundits 00000000000110101010000010110011 palace 00000000000111001101000100000001 Taps 00100000000000000000000000000000 D'Amico 01000000000000000000000000000000 symbols 00000000000111111010110101100011 fences 00000000000110110000010000100111 Civic 00100000001101100000000000110000 glaze 00000000000000000000000000000000 Sentra 00100000000000000000000000000000 Madonna 00100000000000000000000000000000 Mignanelli 00100000000000000000000000000000 now-shaky 00000000000000000000000000000000 relaunched 00000000000000000000000000000000 incompatible 00000000001011110101100000110010 countless 00000000000000000111000011000000 drapes 00000000000000000000000000000000 McCann-Erickson 01000000000000000000000000000000 reschedule 00000000000001001110001110110010 wedded 00000000000100101100011000110010 carrot 00000000000111011101111000000001 hugely 00000000000000000000000000000000 13.15 00000000000000000000000000000000 new-model 00000000000000000000000000000000 one-tenth 00000000000000000000000000000000 Eyes 00100000000111111111101101100011 Omron 00100000000000000000000000000000 Balmy 00100000000000000000000000000000 Krishna 00100000000000000000000000000000 redefinition 00000000000000000000000000000000 S-Cargo 01000000000000000000000000000000 WTI 01000000000000000000000000000000 Epson 00100000000000000000000000000000 clones 00000000000111001001110101100011 tilted 00000000000000000000000000000000 Shipping 00100000001001000010110001000000 insulating 00000000000000000000000000000000 tooth 00000000000100100101110000100001 hideaway 00000000000000000000000000000000 predecessors 00000000000101111011110000110011 bash 00000000000010101101001010110111 944 00000000000000000000000000000000 pre-approved 00000000000000000000000000000000 Towns 00100000000111100011110001100011 squared 00000000000000000000000000000000 sporty 00000000000110001000001010110000 free-enterprise 00000000000000000000000000000000 237,960,000 00000000000000000000000000000000 coherent 00000000001111000001000000010000 refurbished 00000000000000000000000000000000 382 00000000000000000000000000000000 Brean 00100000000000000000000000000000 scooped 00000000000000000000000000000000 Synergistics 00100000000000000000000000000000 excursions 00000000000000000000000000000000 shaving 00000000000001001010110001000000 Josephthal 00100000000000000000000000000000 witches 00000000000000000000000000000000 top-management 00000000000000000000000000000000 compatibility 00000000000110111010110000100111 speedometer 00000000000000000000000000000000 dashboard 00000000000000000000000000000000 bundling 00000000000000000000000000000000 14-year 00000000000000000000000000000000 30-year-old 00000000000000000000000000000000 Balfour 00100000000000000000000000000000 Maclaine 00100000000000000000000000000000 prostaglandin 00000000000000000000000000000000 competed 00000000001001011110001000110010 rigidity 00000000000000000000000000000000 Worst 00100000000000001111010011010000 235,000 00000000000000000000000000000000 glamorize 00000000000000000000000000000000 nominally 00000000011101101000000001110010 analgesic 00000000000000000000000000000000 Nausea 00100000000010010111110010100111 vomiting 00000000000000000000000000000000 razor-thin 00000000000000000000000000000000 Norsk 00100000000010000100101000101000 briefings 00000000000101010011101000100011 Marston 00100000000000000000000000000000 Driskill 00100000000000000000000000000000 researched 00000000101101000101010000110010 fertility 00000000000000001010011100000111 suppress 00000000000101010111111110110010 Yutaka 00100000000000000000000000000000 minicar 00000000000000000000000000000000 Maxima 00100000000000000000000000000000 loosened 00000000000000000000000000000000 iota 00000000000000000000000000000000 Lancet 00100000000000000000000000000000 5.35 00000000000000000000000000000000 vocalist 00000000000000000000000000000000 decades-old 00000000000000000000000000000000 duplicated 00000000000000000000000000000000 monkeys 00000000000000000000000000000000 chopsticks 00000000000000000000000000000000 casually 00000001000001000000010001110010 vaginal 00000000000000000000000000000000 badges 00000000000000000000000000000000 undergo 00000000001011101111101110110010 swarm 00000000000000000000000000000000 backwards 00000000000000000000000000000000 traditionalists 00000000000000000000000000000000 Wide 00100000000010000000100000010000 Timber 00100000000011000100011010110000 subsidizes 00000000000000000000000000000000 contraceptives 00000000000000000000000000000000 clogging 00000000000000000000000000000000 suburbs 00000000000111101101011001100111 derisively 00000000000000000000000000000000 Amax 00100000000000011011000100101000 subtitled 00000000000000000000000000000000 old-style 00000000000000000000000000000000 0.16 00000000000000000000000000000000 thrash 00000000000000000000000000000000 DRUG 01000000000000001010111010110000 5.92 00000000000000000000000000000000 dinosaurs 00000000000000000000000000000000 short-selling 00000000000000000000000000000000 Wrong 00100000000001000000110110010000 Davies 00101111111101111000100010001000 segregated 00000000001000100101101001000000 6.84 00000000000000000000000000000000 Groundwater 00100000000110110000110000100001 three-judge 00000000000000000000000000000000 50.9 00000000000000000000000000000000 pelvic 00000000000000000000000000000000 Harland 00100000000000000000000000000000 rehearing 00000000000111001001101010100111 UNITED 01000000000111111101110110101000 Stockbrokers 00100000000000000000101111110011 high-rise 00000000000000000000000000000000 tarnish 00000000000000000000000000000000 feminists 00000000000000000000000000000000 Frankel 00101111111111110010100010001000 Thielsch 00100000000000000000000000000000 Sigler 00100000000000000000000000000000 utterances 00000000000000000000000000000000 fostering 00000000000000000000000000000000 testimonial 00000000000000000000000000000000 35.50 00000000000000000000000000000000 88.8 00000000000000000000000000000000 Q. 00101111111111011110101011011000 festivities 00000000000101001011110101100011 logs 00000000011011100111110101100011 affirmation 00000000000000000000000000000000 Marcoses 00100000000000000000000000000000 Takeshi 00100000000000000000000000000000 108.4 00000000000000000000000000000000 market-opening 00000000000000000000000000000000 fraudulently 00000000100011000001001001110010 natives 00000000000011101000100000110011 trampling 00000000000000000000000000000000 pleadings 00000000000000000000000000000000 orchestrated 00000000010101101100010000110010 677 00000000000000000000000000000000 16.05 00000000000000000000000000000000 rollbacks 00000000000000000000000000000000 Lords 00100000000111001101100010100111 Tracy 00101111111000011111000100001000 30s 00000000000000000000000000000000 Bulls 00100000000000001100101001110011 disbursed 00000000000000000000000000000000 concerts 00000000000000100101110101100011 anti-programmers 00000000000000000000000000000000 Tully 00101111111010000100001000001000 Petty 00100000000000101101001000110000 Aviv 00100000000000010011010001001000 Tel 00100000000111111100101000101000 Zarett 00101111111000110010110001001000 37.8 00000000000000000000000000000000 reactor 00000000000111101110110010001001 Moshe 00100000000000000000000000000000 Lease 00100000000000000001000110110111 Bodner 00100000000000000000000000000000 antagonistic 00000000000000000000000000000000 757-200s 00000000000000000000000000000000 Topix 00100000000000000000000000000000 ebbs 00000000000010100110111000000001 submarines 00000000000111000011100110001001 Wise 00100000001100000100011010010000 good-faith 00000000000000000000000000000000 distasteful 00000000000000000000000000000000 Delivery 00100000000000000000101110000111 rule`` 00000000000000000000000000000000 conspicuous 00000000000000101001000010010000 Hurd 00100000000000000000000000000000 continent 00000000000111111000111001000101 bankroll 00000000000000000000000000000000 1,640 00000000000000000000000000000000 cropped 00000000001110111011001000110010 7.73 00000000000000000000000000000000 Kirgizia 00100000000000000000000000000000 Yitzhak 00101111111010011111001010011000 Attic 00100000000000000000000000000000 first-rate 00000000000000000000000000000000 Alert 00100000000111001000001010110111 18.8 00000000000000000000000000000000 tent 00000000000000001100110000000001 25.7 00000000000000000000000000000000 Troops 00100000000101100010100000110011 widgets 00000000000000000000000000000000 Jean-Pierre 01000000000000000000000000000000 hampering 00000000000000000000000000000000 Chester 00100000000000000110011010101000 Scare 00100000011111010110010110110010 pest-control 00000000000000000000000000000000 Hal 00101111111010000110100000011000 Cult 00100000000110101001010000000001 27-year-old 00000000000000000000000000000000 ``` 00000000000000000000000000000000 leveraging 00000000000000000000000000000000 fundamentalist 00000000000001101101011000110000 84.3 00000000000000000000000000000000 desires 00000000000110111010111101100011 Heathrow 00100000000101001110010000101000 auto-loan 00000000000000000000000000000000 Panda 00100000000000000000000000000000 Tong'Il 01000000000000000000000000000000 concentrates 00000000000111010000100000110010 Tagliabue 00100000000000000000000000000000 Rozelle 00100000000000000000000000000000 Valued 00100000000011000001110100110010 REAL 01000000000010101111111000110000 ESTATE 01000000000100010000001100011101 Laser 00100000000001000010101010110000 crates 00000000000000000000000000000000 Reducing 00100000000111111111011101000000 77.3 00000000000000000000000000000000 Arbitrage 00100000000000000000111010100001 Insiders 00100000000000100010000010110011 crooked 00000000000000000000000000000000 baggage 00000000000111110011110000100001 Inspector 00100000000000010010110000110101 initiating 00000000000110111101111101000000 heyday 00000000000111000111111000001111 70.9 00000000000000000000000000000000 Unificationist 00100000000000000000000000000000 Bromley 00100000000000000000000000000000 Elanco 00100000000000000000000000000000 5.41 00000000000000000000000000000000 westward 00000000000000000000000000000000 Norwegians 00100000000000000000000000000000 pittance 00000000000000000000000000000000 fund-raisers 00000000000000000000000000000000 dropouts 00000000000000000000000000000000 Mecca 00100000000110100011111001101000 loathsome 00000000000000000000000000000000 labeling 00000000001010000010110001000000 Parfums 00100000000000000000000000000000 Valentino 00100000000000000000000000000000 80.3 00000000000000000000000000000000 reputed 00000000000001101100011000010000 bombings 00000000000111111100100000110011 Perches 00100000000000000000000000000000 Trevino 00100000000000000000000000000000 Ramon 00100000000000000000000000000000 Moonies 00100000000000000000000000000000 abduction 00000000000111110011110001100111 bicentennial 00000000000000100001010011010000 Tax-exempt 00100000000000000000000000000000 trafficker 00000000000000000000000000000000 Shiites 00100000000000000000000000000000 65,200 00000000000000000000000000000000 500-seat 00000000000000000000000000000000 Snow 00100000000000000110000000001000 fixes 00000000000000000000000000000000 painter 00000000000001100111011110110101 Caspar 00101111111001010011111100011000 disrupting 00000000000000000000000000000000 slats 00000000000000000000000000000000 felons 00000000000000000000000000000000 unscheduled 00000000000001110001110100010000 upholstery 00000000000000000000000000000000 evangelist 00001111111110100001100000110101 flaps 00000000000111011011110101100011 Solidarity-led 00100000000000000000000000000000 fooling 00000000000001010110100001000000 Haberle 00100000000000000000000000000000 abolishing 00000000000000000000000000000000 454 00000000000000000000000000000000 0.26 00000000000000000000000000000000 loudest 00000000000000000000000000000000 marred 00000000011110000001110000110010 envelopes 00000000000010100111110101100011 Shiite 00100000000111000101011000110000 Julian 00101111111000110101100010011000 aunt 00000000000111110001111100001000 biased 00000000000111110110110110010000 halves 00000000000111100011000100101111 37-a-share 00000000000000000000000000000000 counterclaims 00000000000000000000000000000000 studiously 00000000000000000000000000000000 blasts 00000000000111111101100110001001 clarified 00000000111011010100010000110010 clippings 00000000000000000000000000000000 14.99 00000000000000000000000000000000 trade-off 00000000000000000000000000000000 Twins 00100000000001001101100110110011 Tracers 00100000000000000000000000000000 323s 00000000000000000000000000000000 ratify 00000000001111010111111110110010 toiletries 00000000000010110011111010110000 NT&SA 01000000000000000000000000000000 larger-than-normal 00000000000000000000000000000000 678 00000000000000000000000000000000 refillable 00000000000000000000000000000000 windshields 00000000000000000000000000000000 DESPITE 01000000000111110110100000001010 litany 00000000000000000000000000000000 securely 00000000000000000000000000000000 raids 00000000000111101000100100100111 roadblock 00000000000111110000111010110101 Durable 00100000000010110001010000110000 hay 00000000000000001110000000001000 5.435 00000000000000000000000000000000 323 00000000000000000000000000000000 Bronco 00100000000000000000000000000000 buyback 00000000000000000000000101110111 tamer 00000000000000000000000000000000 explosively 00000000000000000000000000000000 self-regulatory 00000000000000000000000000000000 Bowery 00100000000000000000000000000000 undisputed 00000000000000000000000000000000 veer 00000000000000000000000000000000 open-ended 00000000000000000000000000000000 shake-up 00000000000000000000000000000000 zoo 00000000000101010001111010110000 motifs 00000000000000000000000000000000 Renk 00100000000000000000000000000000 uphold 00000000000110100111111110110010 Lawson-Walters 01000000000000000000000000000000 Breaking 00100000000111111100100001000000 watchdogs 00000000000110000011011100100011 two-tiered 00000000000000000000000000000000 Browns 00100000000000101000101100100101 Swank 00100000000000000000000000000000 Relief 00100000000111111010111000111001 discontent 00000000000111011110111010100111 Crystal 00100000000010001010001000110000 escalated 00000000000000011010111001000000 Fears 00100000000111101110101010101111 executes 00000000000000000000000000000000 scoff 00000000000011010101010110110010 Watanabe 00100000000000000000000000000000 Rill 00100000000000000000000000000000 opportunists 00000000000000000000000000000000 costume 00000000000111011110101100100001 Lecheria 00100000000000000000000000000000 bucking 00000000000000000000000000000000 Milk 00100000001100001011111010110000 vitally 00000000000000000000000000000000 rancor 00000000000000000000000000000000 TWA 01000000000000000000000000000000 soaking 00000000000000000000000000000000 Barely 00100000001011100000001001110010 Johnnie 00100000000000000000000000000000 Kavanagh 00100000000000000000000000000000 McGuigan 01000000000000000000000000000000 drinker 00000000000000000000000000000000 Ballot 00100000000111100010000001100111 Schmidt 00101111111111100110100010001000 sharks 00000000000000000000000000000000 Rustin 00100000000000000000000000000000 beds 00000000000111100101101001100011 Debate 00100000000111101000111010100111 Citizen 00100000000111110111111000100001 industry-funded 00000000000000000000000000000000 quake-related 00000000000000000000000000000000 functioned 00000000000000000000000000000000 chasers 00000000001101101011110101100011 Jerrold 00101111111000101101100010011000 whiz 00000000000000111011011110110101 BK 01000000000000000000000000000000 Doubles 00100000000111111010011011000000 reportage 00000000000000000000000000000000 double-C 01000000000000000000000000000000 perceives 00000000000000000000000000000000 Offer 00100000000111111111110111100111 Frequent 00100000001110000001000000010000 public-service 00000000000000000000000000000000 unfettered 00000000000000000000000000000000 uncovering 00000000000100000111111101000000 governmental-affairs 00000000000000000000000000000000 coattails 00000000000000000000000000000000 self-regulation 00000000000000000000000000000000 Yates 00101111000100001100000010001000 frighten 00000000000100011011101110110010 enlightened 00000000001110011000110100010000 Brigham 00100000000000000000000000000000 Stieglitz 00100000000000000000000000000000 sequels 00000000000000000000000000000000 testifying 00000000000111100011000001000000 Cedar 00100000000000001000010110110000 Shining 00100000000000000110011010010000 declarations 00000000000111010011101000100011 Talks 00100000000111101111010000100111 bellies 00000000000010111011101011001001 newsman 00000000000111001111011110110101 baseless 00000000000000000000000000000000 fetching 00000000000000000000000000000000 non-alcoholic 00000000000000000000000000000000 Frankenberry 00100000000000000000000000000000 306 00000000000000000000000000000000 Constable 00100000000000000000000000000000 RADIO 01000000000000000100001010110000 wig 00000000000000000000000000000000 415 00000000000000000000000000000000 Racing 00100000000111100000110001000000 adventures 00000000000111101100111101100011 hilarious 00000000000000000000000000000000 product-related 00000000000000000000000000000000 Rheingold 00100000000000000000000000000000 Rexall 00100000000000000000000000000000 Barth 00100000000000000000000000000000 Liquidating 00100000000110010011011101000000 E.R. 01000000000000000000000000000000 Kligman 00100000000000000000000000000000 alerts 00000000000000000000000000000000 Lawsuits 00100000000110101011110000100011 storyteller 00000000000000000000000000000000 Patents 00100000000111111110001000100011 alternates 00000000000000000000000000000000 Telepictures 00100000000000000001101000101000 Contractors 00100000000000000010010000110011 windfalls 00000000000000000000000000000000 harness 00000000000000000000000000000000 278.7 00000000000000000000000000000000 Lorimar 00100000000111110100101100101000 DIALING 01000000000000000000000000000000 Burbank 00100000000111001010101001101000 Brief 00100000000000010011000000010000 Lavery 00100000000000000000000000000000 duplicity 00000000000000000000000000000000 chatter 00000000000000000000000000000000 dreamy 00000000000000000000000000000000 46.1 00000000000000000000000000000000 Colleges 00100000000111010110111000110011 acrimonious 00000000000011011000110100010000 herbicides 00000000000000000000000000000000 Landmark 00100000000010100000000010010000 underperforming 00000000000000100000101001000000 Yokohama 00100000000000000000000000000000 migrate 00000000000000000000000000000000 Yoshio 00100000000000000000000000000000 cautiousness 00000000000000000000000000000000 poking 00000000000000000000000000000000 high-water 00000000000000000000000000000000 far-left 00000000000000000000000000000000 95.2 00000000000000000000000000000000 rejuvenation 00000000000000000000000000000000 joblessness 00000000000000000000000000000000 samurai 00000000000010001110111000000001 disgraceful 00000000000000000000000000000000 intermittent 00000000000000011110010100010000 elitists 00000000000000000000000000000000 accusers 00000000000000000000000000000000 reaffirming 00000000000000000000000000000000 Secondly 00100000000000000000000000000000 starved 00000000001100011110110000110010 85.7 00000000000000000000000000000000 irritated 00000000010100101101110000110010 22.75 00000000000000000000000000000000 Officially 00100000000000100001001001110010 54-year-old 00000000000000000000000000000000 Furey 00100000000000000000000000000000 capital-to-asset 00000000000000000000000000000000 shove 00000000000000000000000000000000 Leming 00100000000000000000000000000000 liberalism 00000000000111001111010010100111 MEDICINE 01000000000111101111110010100111 faction 00000000000110001011101001100111 Liberals 00100000000111111000100110110011 Pettit 00100000000000000000000000000000 bandages 00000000000000000000000000000000 Nicole 00100000000000000000000000000000 Elco 00100000000000000000000000000000 sustains 00000000000000000000000000000000 76.6 00000000000000000000000000000000 ankle 00000000000000000000000000000000 embody 00000000000000000000000000000000 a-Discounted 01000000000000000000000000000000 b-Week 01000000000000000000000000000000 prompts 00000000000000000000000000000000 detectable 00000000000000000000000000000000 Proleukin 00100000000000000000000000000000 alley 00001111111000110000000000001000 24.7 00000000000000000000000000000000 combinations 00000000000001001100010000100111 originators 00000000000000000000000000000000 32.2 00000000000000000000000000000000 Tokio 00100000000000000000000000000000 protocols 00000000000000000000000000000000 expeditiously 00000000000001110000010001110010 exploiting 00000000000111001011111101000000 19.25 00000000000000000000000000000000 SERVICES 01000000000011101110011101001001 fruitful 00000000000000000000000000000000 36.9 00000000000000000000000000000000 disposables 00000000000000000000000000000000 Tiny 00100000000000000101010000010000 Rosenblum 00101111111101000000000010001000 16.75 00000000000000000000000000000000 Tots 00100000000000000000000000000000 streptokinase 00000000000100101001110010100111 Polystyrene 00100000000000000000000000000000 Georgeson 00100000000000000000000000000000 stop-motion 00000000000000000000000000000000 672 00000000000000000000000000000000 Nader 00101111111111101100110010001000 Smelting 00100000000000000000000000000000 Elisa 00100000000000000000000000000000 throwaway 00000000000011001000001010110000 Istituto 00100000000000000000000000000000 3.56 00000000000000000000000000000000 headache 00000000000111011100111010110101 Kato 00100000000000000000000000000000 529.32 00000000000000000000000000000000 outlet 00000000000111100101011001100111 dice 00000000000000000000000000000000 Profit-taking 00100000000000000000000000000000 vexed 00000000000000000000000000000000 pottery 00000000000000000000000000000000 loss-making 00000000000000000000000000000000 missionaries 00000000000000000000000000000000 Grover 00100000000000000000000000000000 likeness 00000000000000000000000000000000 Sigmund 00100000000000000000000000000000 54.5 00000000000000000000000000000000 Addressing 00100000000111101110111101000000 schizophrenic 00000000000000000000000000000000 644 00000000000000000000000000000000 847 00000000000000000000000000000000 Wellesley 00100000000110011000101001101000 55.2 00000000000000000000000000000000 51.3 00000000000000000000000000000000 indigenous 00000000000000000000000000000000 ornaments 00000000000000000000000000000000 unleash 00000000000001101111101110110010 manuevering 00000000000000000000000000000000 misrepresenting 00000000000000000000000000000000 Sole 00100000000000100000010011010000 Machiguengas 00100000000000000000000000000000 Siena 00100000000000000000000000000000 Cranston-Mitchell 01000000000000000000000000000000 McIntyre 01001111111011110100001000001000 anti-cancer 00000000000000000000000000000000 Master 00100000000110110011111000100001 oncogenes 00000000000000000000000000000000 Keogh 00100000000000000000000000000000 Summers 00100000000100101011111010001000 JCP 01000000000000000000000000000000 Arighi 00100000000000000000000000000000 flats 00000000000100100001110100100001 noodles 00000000000000000000000000000000 Fitch 00100000000000000000000000000000 Reames 00100000000000000000000000000000 British-owned 00100000000000000000000000000000 depositing 00000000000000000000000000000000 reliably 00000000000000000000000000000000 Underwriting 00100000000000000100000010110000 10.48 00000000000000000000000000000000 gratification 00000000000000000000000000000000 Dryja 00100000000000000000000000000000 31,329 00000000000000000000000000000000 Broder 00101111111100110110000010001000 upper-income 00000000000000000000000000000000 half-an-hour 00000000000000000000000000000000 Colony 00100000000111111111110111000101 Colon 00100000000111101010101011100001 Complete 00100000000111110101110110110010 59-year-old 00000000000000000000000000000000 Hadson 00100000000000000000000000000000 70.3 00000000000000000000000000000000 scourges 00000000000000000000000000000000 268.3 00000000000000000000000000000000 2008-2009 00000000000000000000000000000000 inherit 00000000001100100111111110110010 36.625 00000000000000000000000000000000 theorized 00000000000000000000000000000000 40.9 00000000000000000000000000000000 75.1 00000000000000000000000000000000 doubly 00000000000000000000000000000000 Occasionally 00100000001100100000001001110010 carefree 00000000000000000000000000000000 Cavenee 00100000000000000000000000000000 assemblies 00000000000111111110101111001001 overruled 00000000011001111001010000110010 riveted 00000000000000100000100000110010 eruption 00000000000000000000000000000000 16.8 00000000000000000000000000000000 single-B-3 01000000000000000000000000000000 Auctions 00100000000111110100110100100011 47.5 00000000000000000000000000000000 adapting 00000000000000000000000000000000 mirroring 00000000000000000000000000000000 identifiable 00000000000000000000000000000000 Silverman 00101111110000101100000010001000 Existing 00100000000000000011000011010000 doctoral 00000000000000000110010000010000 extricate 00000000000000000000000000000000 Gardiner 00101111111001110100001000001000 Legislators 00100000000000000101010010110011 electrically 00000000001001101000000001110010 Gradually 00100000010011000000010001110010 hurling 00000000010010000110100001000000 malignancy 00000000000000000000000000000000 14.25 00000000000000000000000000000000 blase 00000000000000000000000000000000 Millen 00100000000000000000000000000000 overflowing 00000000000000110101100000110010 tandem 00000000000000011100100100101000 sharpen 00000000000111010100111110110010 grass-roots 00000000000000000000000000000000 metaphors 00000000000000000000000000000000 172.5 00000000000000000000000000000000 better-known 00000000000000000000000000000000 Weinberg 00101111111100100000000010001000 entombed 00000000000000000000000000000000 Taccetta 00100000000000000000000000000000 Edinburgh 00100000000000000000000000000000 Skanska 00100000000000000000000000000000 Amazonia 00100000000000000000000000000000 ditch 00000000000101010101111010110111 tomb 00000000000000000000000000000000 isolate 00000000001001010111111110110010 sublime 00000000000001010011000010010000 nonvoting 00000000000100001110110101010000 Sand 00100000000111000110000000001000 glasses 00000000000100111101110101100011 Built 00100000000111001100010000110010 cedar 00000000000000001000010110110000 Keffer 00100000000000000000000000000000 Agnellis 00100000000000000000000000000000 starter 00000000000000000000000000000000 Known 00100000000111000010110000110010 Citation 00100000000111101000000001100111 869 00000000000000000000000000000000 crystal-lattice 00000000000000000000000000000000 demeanor 00000000000101010111101001100111 bid-to-cover 00000000000000000000000000000000 reiterating 00000000000000000000000000000000 257 00000000000000000000000000000000 arrogance 00000000000111111000110010100111 Kazis 00100000000000000000000000000000 passers-by 00000000000000000000000000000000 repackaging 00000000000000000000000000000000 Bognato 00100000000000000000000000000000 corpus 00000000000111110010111100010000 Zero-coupon 00100000000000000000000000000000 discern 00000000000000000000000000000000 referral 00000000000101111100111000100001 Queen 00100000000100110001100100100001 short-sellers 00000000000000000000000000000000 tapestry 00000000000000000000000000000000 Dain 00101111111101000100010000101000 Bosworth 00101111111011011100111000001000 Certain 00100000000000000001000011000000 dutifully 00000000000000000000000000000000 Sunbird 00100000000000000000000000000000 Fahrenheit 00100000000111111101101001100010 drought-related 00000000000000000000000000000000 Active 00100000000000000110011100010000 Prospective 00100000000000000110111000010000 Papetti 00100000000000000000000000000000 100-Share 01000000000000000000000000000000 curled 00000000000000000000000000000000 hyping 00000000000000000000000000000000 motors 00000000000000011110010001001000 magnets 00000000000111100011001111001001 order-taking 00000000000000000000000000000000 enlisted 00000000001001000101010000110010 sipped 00000000001010111011000000010010 97.75 00000000000000000000000000000000 lip 00000000000000111011110000110000 pretense 00000000000111101001110000001111 R.R. 01000000000000000000000000000000 flat-footed 00000000000000000000000000000000 shelled 00000000000000101001001000110010 Inquiry 00100000000110111111110001100111 taint 00000000000000000000000000000000 chopping 00000000000000000000000000000000 undercutting 00000000000111000101011101000000 Path 00100000000111101011111101100111 bedrock 00000000000000000000000000000000 Determining 00100000000111111001011101000000 150-member 00000000000000000000000000000000 Danville 00100000000000000000000000000000 Deacon 00100000000000000000000000000000 Size 00100000000111111111101000001111 circulars 00000000000000000000000000000000 interviewing 00000000000111100101001101000000 1.61 00000000000000000000000000000000 136.4 00000000000000000000000000000000 weekday 00000000000111010110000000100001 high-cost 00000000000000000000000000000000 brash 00000000000110101000011010010000 stonemason 00000000000000000000000000000000 sulfur-dioxide 00000000000000000000000000000000 fixture 00000000000000000000000000000000 Winnipeg 00100000000000000000000000000000 Integra 00100000000000000000000000000000 executive-model 00000000000000000000000000000000 Kiep 00100000000000000000000000000000 e 00000000000000000000000000000000 WASHINGTON 01000000000111111111111001101000 fallback 00000000000000000000000000000000 246 00000000000000000000000000000000 stern 00001111111000000001000000001000 2.88 00000000000000000000000000000000 configuration 00000000000000000000000000000000 BCE 01000000000000000000000000000000 reshuffling 00000000000111111111100111001111 Ingalls 00100000000000000000000000000000 Litton 00100000000001100011000100101000 1991-2000 00000000000000000000000000000000 Storyteller 00100000000000000000000000000000 limited-partnership 00000000000000000000000000000000 13.94 00000000000000000000000000000000 15.375 00000000000000000000000000000000 Forman 00101111111011110000001010001000 stump 00000000000000000000000001100111 Kerlone 00100000000000000000000000000000 hypertension 00000000000001001001110010100111 German-built 00100000000000000000000000000000 Vt. 00100000000000000000000000000000 Mediobanca 00100000000000000000000000000000 corrective 00000000000000111000000000110000 age-bias 00000000000000000000000000000000 pistol 00000000000111101011001011100111 market-based 00000000000000000000000000000000 Kimba 00100000000000000000000000000000 eradicate 00000000000000000000000000000000 surreptitiously 00000000000000000000000000000000 jurisdictions 00000000000111100110000100100011 reappointed 00000000000000000000000000000000 A-D 01000000000000000000000000000000 enlarge 00000000000111010000111110110010 vendetta 00000000000000000000000000000000 unhappiness 00000000000111110100110000100111 demagoguery 00000000000000000000000000000000 1991-1999 00000000000000000000000000000000 Stirling 00100000000000000000000000000000 clean-up 00000000000000000000000000000000 scoffed 00000000000000000000000000000000 Conversation 00100000000101011110110000100111 cinematic 00000000000000000000000000000000 479 00000000000000000000000000000000 Dixie 00100000000101000111111000101000 needlessly 00000000000000000000000000000000 knit 00000000000100100101101001000000 80.8 00000000000000000000000000000000 Brevetti 00100000000000000000000000000000 console 00000000000011000100001110110111 Kilpatrick 00100000000000000000000000000000 Barcelona 00100000000111010111111001101000 333 00000000000000000000000000000000 dummy 00000000000000011101010000010000 disquieting 00000000000000000000000000000000 oppression 00000000000110110111110010100111 1992-1999 00000000000000000000000000000000 LeGere 01000000000000000000000000000000 Ransom 00100000000100101110000000001000 2017 00000000000000000000000000000000 Allegheny 00100000000111001111010100101000 SHORT 01000000000000000000000001101111 trumpet 00000000001100111111110110110010 7.40 00000000000000000000000000000000 disservice 00000000000000000000000000000000 activated 00000111001011010100010000110010 410,000 00000000000000000000000000000000 Published 00100000000111100000010000110010 water-treatment 00000000000000000000000000000000 receptionist 00000000000000000000000000000000 adorned 00000000000000000000000000000000 le 00000000000100010001010101001000 Image 00100000000111111111111001100111 potted 00000000000000000000000000000000 Svenska 00100000000000000000000000000000 honoring 00000000000000000000000000000000 Crutcher 00100000000000000000000000000000 loaned 00000000000000000000000000000000 Greenery 00100000000000000000000000000000 dirtiest 00000000000000000000000000000000 Sixth 00100000000100100011001011010000 cavalier 00000000000111000100000001000111 52.4 00000000000000000000000000000000 Cabernets 00100000000000000000000000000000 UniFirst 01000000000000000000000000000000 sensibility 00000000000000000000000000000000 garment 00000000000001011011111010110000 airliners 00000000000111000110101001100011 dulled 00000000000000000000000000000000 one-upsmanship 00000000000000000000000000000000 Virtue 00100000000111111111101100111111 Buchwald 00100000000000000000000000000000 Crozier 00100000000000000000000000000000 believer 00000000000111100111111010110101 31.75 00000000000000000000000000000000 Suzanne 00101111111000100101111000011000 Lodge 00100000000101111001100010100101 post-Watergate 01000000000000000000000000000000 etiquette 00000000000000000000000000000000 Lees 00100000000000000000000000000000 Happened 00100000000111100110001000110010 avid 00000000001100011000110100010000 bovine 00000000000000000000000000000000 Salvagni 00100000000000000000000000000000 improvisation 00000000000000000000000000000000 dinners 00000000000101101111110001100011 Suppliers 00100000000111111100010000110011 1,816,000 00000000000000000000000000000000 unsteady 00000000000000000000000000000000 savviest 00000000000000000000000000000000 mementos 00000000000000000000000000000000 ever-changing 00000000000000000000000000000000 raw-materials 00000000000000000000000000000000 Counterpoint 00100000000000000000000000000000 stewed 00000000000000000000000000000000 institutes 00000000000110110101110001010101 440 00000000000000000000000000000000 looseleaf 00000000000000000000000000000000 Offering 00100000000111101111110001110111 Lindsey 00101111111110001100110010001000 dessert 00000000000000000000000000000000 priceless 00000000000000000000000000000000 Koppel 00100000000000000000000000000000 Allergan 00100000000000000000000000000000 Mankiewicz 00100000000000000000000000000000 Robbie 00100000000000000000000000000000 3.74 00000000000000000000000000000000 807 00000000000000000000000000000000 outpace 00000000000001100110111110110010 Westcoast 00100000000101101111000100101000 Arkoma 00100000000000000000000000000000 Trunkline 00100000000000000000000000000000 0.84 00000000000000000000000000000000 unmanned 00000000000100111010001010110000 Hillary 00100000000000000000000000000000 ex-wife 00000000000000000000000000000000 Ravenspurn 00100000000000000000000000000000 71%-owned 00000000000000000000000000000000 goods-producing 00000000000000000000000000000000 5.33 00000000000000000000000000000000 Hermitage 00100000000101011110101000100001 low-paid 00000000000000000000000000000000 C.R. 01000000000000000000000000000000 Independence 00100000000101001111110100100111 virgin 00000000000111001001000000001000 intermission 00000000000000000000000000000000 Pittsburg 00100000000000000000000000000000 8.63 00000000000000000000000000000000 cavernous 00000000000000000000000000000000 Jesperson 00100000000000000000000000000000 3.39 00000000000000000000000000000000 Linger 00100000011101111101010110110010 Superdome 00100000000000000000000000000000 McNair 01000000000000000000000000000000 mainline 00000000000000000000000000000000 propriety 00000000000000000000000000000000 relevance 00000000000011100111110100100111 off-budget 00000000000000000000000000000000 Vega 00100000000000000000000000000000 Haskayne 00100000000000000000000000000000 Interhome 00100000000000000000000000000000 1,828,000 00000000000000000000000000000000 Newt 00100000000000000000000000000000 Gingrich 00100000000100011100111010001000 mid-August 01000000000000000000000000000000 emcee 00000000000000000000000000000000 civilization 00000000000111111001010010100111 perch 00000000000000000000000000000000 82.2 00000000000000000000000000000000 mid-June 01000000000000000000000000000000 25.875 00000000000000000000000000000000 Burford 00100000000000000000000000000000 averred 00000000000000000000000000000000 exempted 00000000011111010100010000110010 Richebourg 00100000000000000000000000000000 3.49 00000000000000000000000000000000 Stolzman 00100000000000000000000000000000 drunkenness 00000000000110100001110010100111 Know 00100000000111111011100110110010 impoverished 00000000000000110010101000110000 marrying 00000000000000000000000000000000 playgrounds 00000000000000000000000000000000 floating-point 00000000000000000000000000000000 8.49 00000000000000000000000000000000 Aberdeen 00100000000000000000000000000000 388 00000000000000000000000000000000 2003-2005 00000000000000000000000000000000 vineyard 00000000000100110110111000000001 erodes 00000000000000000000000000000000 collagen 00000000000000000000000000000000 modeling 00000000000000000000000000000000 corneal 00000000000000000000000000000000 2.42 00000000000000000000000000000000 big-name 00000000000000000000000000000000 cornea 00000000000000000000000000000000 simplifying 00000000000000000000000000000000 shudders 00000000000000000000000000000000 Ida 00100000000000000000000000000000 five-year-old 00000000000000000000000000000000 InfoCorp 01000000000000000000000000000000 1989-A 01000000000000000000000000000000 Grantor 00100000000000000000000000000000 Burgundy 00100000000000000000000000000000 Secord 00100000000101111111111010001000 15.06 00000000000000000000000000000000 Liaisons 00100000000000000000000000000000 Gant 00100000000000000000000000000000 Mahoney 00100000000000000000000000000000 instruction-set 00000000000000000000000000000000 Westpac 00100000000111111110111100110000 Dangerous 00100000000000010100010010010000 RC6280 01000000000000000000000000000000 Cote 00100000000000000000000000000000 Munich-based 00100000000000000000000000000000 Mallinckrodt 00100000000000000000000000000000 inspiring 00000000000000000000000000000000 Rhone 00100000001011001010001000110000 reds 00000000000000000000000000000000 Placements 00100000000111101000100100001001 Catch-22 00100000000000000000000000000000 Lately 00100000000011100100010001110010 4.10 00000000000000000000000000000000 grudging 00000000000000000000000000000000 Describing 00100000000111111001101101000000 AIDS-infected 01000000000000000000000000000000 Nagoya 00100000000000000000000000000000 '82 00000000000000000000000000000000 Blancs 00100000000000000000000000000000 Pawtucket 00100000000000000000000000000000 Blanc 00100000000000000000000000000000 buttoned-up 00000000000000000000000000000000 16-year-old 00000000000000000000000000000000 Mesnil 00100000000000000000000000000000 Petrocorp 00100000000000000000000000000000 Mercer 00101111111000000010100010001000 Zealand-based 00100000000000000000000000000000 forestry 00000000000001101011011010110000 deserted 00000000000000101101101001000000 forgive 00000000001010101111001110110010 misadventures 00000000000000000000000000000000 womanizing 00000000000000000000000000000000 lounges 00000000000000000000000000000000 antigen 00000000000000000000000000000000 4.625 00000000000000000000000000000000 vintages 00000000000000000000000000000000 Bordeaux 00100000000111110110101100100001 Seems 00100000000000000001101000110010 three-member 00000000000000000000000000000000 Bette 00100000000000000000000000000000 Kobayashi 00101111110011101000000010001000 Yamaguchi 00100000000000000000000000000000 quarry 00000000000000000000000000000000 static 00000000000011110110011010010000 Tuscany 00100000000000000000000000000000 imitated 00000000000000000000000000000000 workforce 00000000000000000000000000000000 Mitre 00100000000000000000000000000000 Retrovir 00100000000000000000000000000000 drug-industry 00000000000000000000000000000000 Sable 00100000001110001000001010110000 Downgraded 00100000000111101111111001000000 Brunello 00100000000000000000000000000000 Darin 00100000000000000000000000000000 Sventek 00100000000000000000000000000000 appeals-court 00000000000000000000000000000000 Loves 00100000100101100011000000010010 Boots 00100000000111011001110101100011 solace 00000000000000100111110100100111 new-car 00000000000000000000000000000000 Cougar 00100000000000000000000000000000 Kurnit 00100000000000000000000000000000 scanning 00000000000011001010110001000000 cleans 00000000000000000000000000000000 KnowledgeWare 01000000000000000000000000000000 Celtona 00100000000000000000000000000000 absurdity 00000000000000000000000000000000 invasion 00000000000110111100111001100111 romanticized 00000000000000000000000000000000 Gnu-Emacs 01000000000000000000000000000000 5.28 00000000000000000000000000000000 Biondi-Santi 01000000000000000000000000000000 THR 01000000000000000000000000000000 surrogate 00000000000000010101001000110000 Soybeans 00100000000111111111101110110000 covenant 00000000000111101101000010000001 compassion 00000000000111111100110010100111 Yquem 00100000000000000000000000000000 Dirk 00100000000000000000000000000000 Markus 00100000000000000000000000000000 diethylstilbestrol 00000000000000000000000000000000 Whoopee 00100000000000000000000000000000 Makin 00100000000000000000000000000000 rebuff 00000000000000000000000000000000 fuzzy 00000000000001011110011010010000 sickness 00000000000101010111110010100111 Me 00100000000000001001010001110010 bemoaning 00000000000000000000000000000000 overbought 00000000000000000000000000000000 off-base 00000000000000000000000000000000 lucid 00000000000000000000000000000000 conventions 00000000000111000010001000100011 programmatic 00000000000000000000000000000000 throat 00000000000110001100110000000001 508 00000000000000000000000000000000 wisecracks 00000000000000000000000000000000 sweetheart 00000000000000000000000000000000 GERMANS 01000000000000000111000010101000 RALLIED 01000000000011000001000100110010 common-law 00000000000000000000000000000000 thicket 00000000000000000000000000000000 obligatory 00000000000000000000000000000000 astronomer 00000000000000000000000000000000 calves 00000000000000000000000000000000 destabilize 00000000000000000000000000000000 Prime-2 00100000000000000000000000000000 witty 00000000000100011100011010010000 vigil 00000000000011100110111000000001 quips 00000000000111110010011111000010 puns 00000000000000000000000000000000 Stalin 00100000000111011010111101101000 thriller 00000000000000000000000000000000 8.38 00000000000000000000000000000000 rubbish 00000000000000000000000000000000 515 00000000000000000000000000000000 8.62 00000000000000000000000000000000 8.337 00000000000000000000000000000000 females 00000000000101110101011100110011 Pilgrim 00100000000001000000010000001000 Road 00100000000111111011111000000001 inflation-fighting 00000000000000000000000000000000 Kosovo 00100000000000000000000000000000 Bendectin 00100000000000000000000000000000 tort 00000000000001100001000000110000 Caldor 00100000000000000000000000000000 cliff 00000000000010001011111100001000 stiffest 00000000000000000000000000000000 economic-forecasting 00000000000000000000000000000000 deluxe 00000000000000010100110100101000 breathy 00000000000000000000000000000000 foul-mouthed 00000000000000000000000000000000 chemical-weapons 00000000000000000000000000000000 Odyssey 00100000000001011100110000001000 renounce 00000000000000000000000000000000 deserving 00000000000000000000000000000000 U.S.backed 01000000000000000000000000000000 raw-material 00000000000000000000000000000000 JAPANESE 01000000000000000001100100110000 Pensacola 00100000000000000000000000000000 McBee 01001111011000001100000010001000 torched 00000000000000000000000000000000 liners 00000000000111111001111111001001 gratuitous 00000000000000000000000000000000 demo 00000000000000000000000000000000 Surlyn 00100000000000000000000000000000 Acushnet 00100000000000000000000000000000 adapters 00000000000000000000000000000000 counterfeit 00000000000000000000000000000000 consonants 00000000000000000000000000000000 democracies 00000000000000000001111101110011 Cooperation 00100000000111100101111010100111 Burgundies 00100000000000000000000000000000 err 00000000000000000000000000000000 personal-income-tax 00000000000000000000000000000000 transacting 00000000000000000000000000000000 Marico 00100000000000000000000000000000 Zayadi 00100000000000000000000000000000 mid-1992 00000000000000000000000000000000 56.4 00000000000000000000000000000000 marketability 00000000000000000000000000000000 Pestillo 00100000000000000000000000000000 5,200 00000000000000000000000000000000 GREAT 01000000000000000000011000010000 NORTHERN 01000000000000100000110110101000 Automax 00100000000000000000000000000000 OUSTED 01000000000000111010010000110010 0.99 00000000000000000000000000000000 EXECUTIVES 01000000000000000000100010110011 Valdiserri 00100000000000000000000000000000 Castrol 00100000000000000000000000000000 Explonaft 00100000000000000000000000000000 precipitously 00000000000000000000000000000000 assays 00000000000000000000000000000000 5,600 00000000000000000000000000000000 fluids 00000000000000001010110100100011 lowers 00000010101110000011000000010010 chemotherapy 00000000000000000000000000000000 2.36 00000000000000000000000000000000 0.71 00000000000000000000000000000000 estate-freeze 00000000000000000000000000000000 growths 00000000000000000000000000000000 grandchild 00000000000000000000000000000000 Gallo 00100000000000101110000000001000 Paperin 00100000000000000000000000000000 Vauxhall 00100000000000000000000000000000 Weksel 00100000000000000000000000000000 3-for-1 00000000000000000000000000000000 74.6 00000000000000000000000000000000 Jorndt 00100000000000000000000000000000 4.64 00000000000000000000000000000000 Bottlers 00100000000111111101010000110011 Conoco 00100000000111110011111100101000 Interface 00100000000111101100010110111001 Arbor 00101111111101010000101010001000 orchards 00000000000000000000000000000000 polymers 00000000001010110011111010110000 Bixby 00100000000000000000000000000000 superpremiums 00000000000000000000000000000000 Landini 00100000000000000000000000000000 25.3 00000000000000000000000000000000 Vinken 00100000000000000000000000000000 O'Meara 01000000000000000000000000000000 122.7 00000000000000000000000000000000 Galleria 00100000000000000000000000000000 pronunciation 00000000000000000000000000000000 Dasher 00100000000000000000000000000000 Dylan 00100000000000000000000000000000 oranges 00000000000111011010111001100011 Nokia 00100000000000000000000000000000 Vineyard 00100000000100110110111000000001 dynamism 00000000000000000000000000000000 state-sector 00000000000000000000000000000000 Samara 00100000000000000000000000000000 99.5 00000000000000000000000000000000 born-to-shop 00000000000000000000000000000000 Settlements 00100000000111000000010000100111 Bio-Technology 01000000000000000000000000000000 97.9 00000000000000000000000000000000 Townsend 00100000000000000000000000000000 common-sense 00000000000000000000000000000000 wine-making 00000000000000000000000000000000 Headed 00100000000111101111010000110010 Droll 00100000000000000000000000000000 sergeant 00000000000000000000000000000000 Shoupe 00100000000000000000000000000000 Kyodo 00100000000000000000000000000000 headquarter 00000000000000000000000000000000 bytes 00000000000000000000000000000000 suffix 00000000000000000000000000000000 Shepherd 00101111111100001110100010001000 Ostpolitik 00100000000000000000000000000000 item-veto 00000000000000000000000000000000 Corby 00100000000000000000000000000000 1945 00000000000000000000000000000000 detects 00000000000000000000000000000000 roamed 00000000000000000000000000000000 non-disabled 00000000000000000000000000000000 Schoenfeld 00100000000000000000000000000000 Karstadt 00100000000000000000000000000000 Cask 00100000000000000000000000000000 62.1 00000000000000000000000000000000 14.50 00000000000000000000000000000000 dissolution 00000000000111101001101101001111 swimmer 00000000000000000000000000000000 Etess 00100000000000000000000000000000 Gorski 00100000000000000000000000000000 wood-chip 00000000000000000000000000000000 191.9 00000000000000000000000000000000 Hedding 00100000000000000000000000000000 OCN-PPL 01000000000000000000000000000000 dealer-manager 00000000000000000000000000000000 Textile 00100000000010111011011010110000 59.5 00000000000000000000000000000000 Pawley 00100000000000000000000000000000 thrall 00000000000000000000000000000000 Tauke 00100000000000000000000000000000 drift-net 00000000000000000000000000000000 instincts 00000000000111010011111101100011 Viewmaster 00100000000000000000000000000000 soak 00000000000000000000000000000000 cut-and-paste 00000000000000000000000000000000 proprietor 00000000000000000000000000000000 Sochaux 00100000000000000000000000000000 crediting 00000000000000000000000000000000 Winiarski 00100000000000000000000000000000 8.875 00000000000000000000000000000000 omits 00000000000000000000000000000000 strand 00000000000000000000000000000000 Metallgesellschaft 00100000000000000000000000000000 whittled 00000000000000000000000000000000 private-banking 00000000000000000000000000000000 Davison 00101111111000100100001000001000 consciously 00000000000000000000000000000000 Maurer 00100000000000000000000000000000 disconnect 00000000000000000000000000000000 Shores 00100000000100111100111101100011 asset-management 00000000000000000000000000000000 astonished 00000000000000000000000000000000 N.J.-based 01000000000000000000000000000000 Fife 00100000000000000000000000000000 welcomes 00000001010011100011000000010010 26.6 00000000000000000000000000000000 Cents 00100000000000000000000010001011 Siewert 00100000000000000000000000000000 Machine-tool 00100000000000000000000000000000 possesses 00000000000000000000000000000000 unseemly 00000000000000000000000000000000 L.H. 01000000000000000000000000000000 Paragould 00100000000000000000000000000000 migration 00000000000011110110011010100111 Messenger 00100000000101100101111000000001 hasten 00000000001010100110111110110010 epitomizes 00000000000000000000000000000000 Poorer 00100000000010010100001111000000 Wonham 00100000000000000000000000000000 funds-service 00000000000000000000000000000000 Drahuschak 00101111111100001010001010001000 snapping 00000000000110011110100001000000 Lenin 00100000000000001111100000100001 Stoltenberg 00101111111000000000001010001000 Plaskett 00101111111100011110110010001000 McNealy 01000000000000000000000000000000 Oneita 00100000000000000000000000000000 22nd 00000000000000000000000000000000 undercover 00000000000000100100010100110000 prospectively 00000000000000000000000000000000 artifact 00000000000000000000000000000000 turbans 00000000000000000000000000000000 Muller 00100000000000000000000000000000 afternoons 00000000000000000000100000010111 Fosback 00100000000000000000000000000000 Grease 00100000000100100011101100100001 Augusta 00100000000110000101101001101000 quadrupling 00000000000000000000000000000000 NHTSA 01000000000000000000000000000000 forked 00000000000000000000000000000000 steel-related 00000000000000000000000000000000 senate 00000000000000000010101110100101 penalizing 00000000000000000000000000000000 street-corner 00000000000000000000000000000000 Recording 00100000000000000010110001000000 1.84 00000000000000000000000000000000 sweater 00000000000000000000000000000000 fracas 00000000000000000000000000000000 543 00000000000000000000000000000000 climatic 00000000000000000000000000000000 Soros 00101111111000100000001010001000 907 00000000000000000000000000000000 federal-funds 00000000000000000000000000000000 Bulletin 00100000000000000100000000110111 2759.84 00000000000000000000000000000000 mustard 00000000000000000000000000000000 fenugreek 00000000000000000000000000000000 U.S.-China 01000000000000000000000000000000 13.52 00000000000000000000000000000000 carryover 00000000000000000000000000000000 innocents 00000000000000000000000000000000 sketch 00000000000000000000000000000000 Player 00100000000111101111111010110101 herb 00000000000001101001111100001000 month-earlier 00000000000000000000000000000000 Jiang 00100000000000000000000000000000 Dairy 00100000000011100100011010110000 laxative 00000000000000000000000000000000 Endara 00100000000000000000000000000000 distortions 00000000000110111111111010100111 Valuable 00100000000000000000010010010000 Turnaround 00100000000110111101101010100111 meaningfully 00000000000000000000000000000000 eyebrow 00000000000000000000000000000000 DeVries 01000000000000000000000000000000 provisioning 00000000000000000000000000000000 rowdiness 00000000000000000000000000000000 advantageous 00000000000011100111011110010000 two-story 00000000000000000000000000000000 hemorrhoids 00000000000000000000000000000000 tolerant 00000000000100111111110000110010 joints 00000000000111011011101001100011 harboring 00000000000000000000000000000000 diminutive 00000000000000000000000000000000 crack-ridden 00000000000000000000000000000000 swipe 00000000000000000000000000000000 allusions 00000000000111100011011100100111 Knoll 00100000000110100101010100101000 Amerongen 00101111111001000101010100100001 husk 00000000000000000000000000000000 Measures 00100000000111101111001000100011 10.24 00000000000000000000000000000000 98.84 00000000000000000000000000000000 Multilateral 00100000000111110010000000110000 nondescript 00000000000000000000000000000000 Thousand 00100000000000000010000001010000 2006-2009 00000000000000000000000000000000 wed 00000000000000000000000000000000 injections 00000000000000000000000000000000 cholesterol-lowering 00000000000000000000000000000000 EPO-treated 01000000000000000000000000000000 8.312 00000000000000000000000000000000 TAX 01000000000000000000000001110001 99.875 00000000000000000000000000000000 8.474 00000000000000000000000000000000 inducement 00000000000000000000000000000000 rearranging 00000000000000000000000000000000 perverted 00000000000000000000000000000000 sawdust 00000000000000000000000000000000 bumper 00000000000100110000001000110000 multilevel 00000000000000000000000000000000 Sooraji 00100000000000000000000000000000 Administrative 00100000000000001001000000110000 26-year-old 00000000000000000000000000000000 Ovalle 00100000000000000000000000000000 ruined 00000000001111011101101001000000 Promotion 00100000000111101111001001100001 litigious 00000000000000000000000000000000 inspecting 00000000000000000000000000000000 tax-deductible 00000000000000000000000000000000 Compulsions 00100000000000000000000000000000 roaring 00000000000001000111100000010000 bootleg 00000000000000000000000000000000 overspending 00000000000111000010100000111001 orange-juice 00000000000000000000000000000000 marketeers 00000000000011110111100010110011 outbreaks 00000000000000000000000000000000 health-care-services 00000000000000000000000000000000 infusion-therapy 00000000000000000000000000000000 operating-room 00000000000000000000000000000000 detaining 00000000000000000000000000000000 fennel 00000000000000000000000000000000 cumin 00000000000000000000000000000000 castor-oil 00000000000000000000000000000000 Cano 00100000000000000000000000000000 4.39 00000000000000000000000000000000 gorgeous 00000000000000000000000000000000 neutralized 00000000011010000001110000110010 Camille 00100000000000000000000000000000 nods 00000000000000000000000000000000 assent 00000000000000000000000000000000 Kellwood 00100000000000000000000000000000 lyricist 00000000000000000000000000000000 Repligen 00100000000000000000000000000000 confusions 00000000000000000000000000000000 aluminum-hulled 00000000000000000000000000000000 adage 00000000000000000000000000000000 75th 00000000000000000000000000000000 employee-health 00000000000000000000000000000000 Horowitz 00101111111001101111000010001000 Edmond 00100000000000000000000000000000 Matlock 00100000000000000000000000000000 Wonder 00100000000111001011100110110010 ex 00000000000011100110101100100001 MPD 01000000000000000000000000000000 1935 00000000000000000000000000000000 N.D 01000000000000000000000000000000 healthiest 00000000000111111011010011010000 Kchessinska 00100000000000000000000000000000 choreographer 00000000000110101111011110110101 backwater 00000000000000000000000000000000 Rosemary 00100000000000000000000000000000 inheritor 00000000000000000000000000000000 Nakhamkin 00101111111100111110110010001000 divesting 00000000000000000000000000000000 Petrograd 00100000000000000000000000000000 overweight 00000000000000000000000000000000 clutch 00000000000000000000000000000000 ASDA 01000000000000000000000000000000 sterilized 00000000000011101011000110010000 144.57 00000000000000000000000000000000 dispelled 00000000000000000000000000000000 1.9166 00000000000000000000000000000000 MacDowell 01000000000000000000000000000000 Curtain 00100000000000011001110100100001 12.98 00000000000000000000000000000000 smuggler 00000000000000000000000000000000 scourge 00000000000000000000000000000000 fraternity 00000000000111010110010100000001 Dorsch 00100000000000000000000000000000 HIAA 01000000000000000000000000000000 debasement 00000000000000000000000000000000 lethargic 00000000000101011010011100010000 RBC 01000000000000000000000000000000 depresses 00000000110010110001000000010010 Leinonen 00100000000000000000000000000000 proffered 00000000000000000000000000000000 140.74 00000000000000000000000000000000 / 00000000000000001000010001000010 Fiberglas 00100000000110001011000001001000 diligence 00000000000011100100011110100001 Junius 00100000000000000000000000000000 fluctuated 00000000001010111010110000110010 42.875 00000000000000000000000000000000 Duane 00100000000000000000000000000000 Manfred 00100000000000000000000000000000 Siberia 00100000000111100001011101101000 fondly 00000000000000000000000000000000 481,000 00000000000000000000000000000000 1,012 00000000000000000000000000000000 Celebrity 00100000000111010100000001000111 coughed 00000000000000000000000000000000 one-megabit 00000000000000000000000000000000 Physician 00100000000101001101011110110101 Nicastro 00100000000000000000000000000000 KV 01000000000000000000000000000000 Messelt 00100000000000000000000000000000 613 00000000000000000000000000000000 inherits 00000000000000000000000000000000 Primarily 00100000001100001011000001110010 Mazza 00100000000000000000000000000000 Berens 00100000000000000000000000000000 Groups 00100000000000000000000100100011 disintegration 00000000000000000000000000000000 Despair 00100000000111100010111010100111 W.I. 01000000000000000000000000000000 Goes 00100000000000100100001000110010 cheek 00000000000110100110000000001000 Filene 00100000000000000000000000000000 Hinman 00100000000000000000000000000000 MBA 01000000000000000000000000000000 window-shopping 00000000000000000000000000000000 fluoropolymers 00000000000000000000000000000000 bedevil 00000000000000000000000000000000 Refsnes 00100000000000000000000000000000 Raucher 00100000000000000000000000000000 Rieke 00100000000000000000000000000000 Pedro 00101111111000000011111000011000 goddess 00000000000101100110111000000001 liberties 00000000000000001100000100100111 post-1997 00000000000000000000000000000000 light-truck 00000000000000000000000000000000 dogma 00000000000000000000000000000000 Cullen 00100000000000000000000000000000 Outflows 00100000000111111101010000000011 rollover 00000000000000000011101101001111 Naomi 00100000000000000000000000000000 squalid 00000000000000000000000000000000 Danforth 00101111111110011100111010001000 runup 00000000000000000000000000000000 Lead 00100000000111111101110110110010 cleansed 00000000000000000000000000000000 Magarity 00100000000000000000000000000000 Felten 00100000000000000000000000000000 constrain 00000000000000000000000000000000 optimists 00000000000000000000000000000000 hum 00000000000000000000000000000000 pessimists 00000000000010001010000010110011 Ostroff 00100000000000000000000000000000 Microamerica 00100000000000000000000000000000 Aran 00100000000000000000000000000000 wallowing 00000000000000000000000000000000 multimedia 00000000000000000000000000000000 respectful 00000000000000000000000000000000 SuperDot 01000000000000011111101011100001 anyplace 00000000000000000000000000000000 swapped 00000000000000010000010000110010 Jung 00101111111000101001110010110101 enlisting 00000000000000000000000000000000 disingenuous 00000000000000000000000000000000 stampeded 00000000000000000000000000000000 defensible 00000000000000000000000000000000 rapport 00000000000000000000000000000000 U.S.-South 01000000000000000000000000000000 lions 00000000000000000000000000000000 unending 00000000000000000000000000000000 quintessential 00000000000000000000000000000000 swayed 00000000001110000001110000110010 repressive 00000000000101100101000010010000 Lusaka 00100000000000000000000000000000 85.1 00000000000000000000000000000000 Sizwe 00100000000000000000000000000000 equip 00000000000010001110001110110010 Bowing 00100000001101111010111000110010 succumbed 00000000000110010111101000110010 16.40 00000000000000000000000000000000 100%-owned 00000000000000000000000000000000 disappointingly 00000000000000000000000000000000 Valenti 00100000000000000000000000000000 Grauer 00100000000000000000000000000000 S&P-500 01000000000000000000000000000000 Atwell 00100000000000000000000000000000 Founders 00100000000111001110101010110011 mega-hit 00000000000000000000000000000000 re-exports 00000000000000000000000000000000 stabilization 00000000000000001101101010100111 Shing 00100000001110011000010000110000 materializes 00000000000000000000000000000000 Ting 00100000000000000000000000000000 zealous 00000000000000000000000000000000 Organisation 00100000000000000000000000000000 Goldston 00100000000000000000000000000000 Gifford 00100000000000000000000000000000 Kysor 00100000000000000000000000000000 defecting 00000000000000000000000000000000 sensationalism 00000000000000000000000000000000 Heat 00100000000111110000110110110111 Panet-Raymond 01000000000000000000000000000000 skyline 00000000000000000000000000000000 Rollins 00101111111100001101001000001000 Sin 00100000000110110000000001000111 Hilger 00100000000000000000000000000000 catches 00000000110110000011000000010010 entrench 00000000001100100011111110110010 Lebo 00100000000000000000000000000000 signified 00000000000000000000000000000000 Gaines 00101111111101111101001000001000 Manzanec 00100000000000000000000000000000 synthesizer 00000000000000000000000000000000 Ozarks 00100000000000000000000000000000 620 00000000000000000000000000000000 netting 00000000000000000000000000000000 3.15 00000000000000000000000000000000 Bridgeport 00100000000101100111101001101000 McLoughlin 01000000000000000000000000000000 wiry 00000000000000000000000000000000 ruminated 00000000000000000000000000000000 777 00000000000000000000000000000000 cpu 00000000000000000000000000000000 Southerners 00100000000000100001111000110011 Magurno 00100000000000000000000000000000 Killory 00100000000000000000000000000000 unflattering 00000000000000000000000000000000 Fishman 00100000000000000000000000000000 gratuitously 00000000000000000000000000000000 Kummerfeld 00100000000000000000000000000000 mom-and-pop 00000000000000000000000000000000 Equal 00100000000001100000111000110010 bottled-water 00000000000000000000000000000000 citywide 00000000000000000000000000000000 benighted 00000000000000000000000000000000 farm-product 00000000000000000000000000000000 backward 00000000000000001011111100110010 fisheries 00000000000111000110010010110000 teen-ager 00000000000000000000000000000000 trade-distorting 00000000000000000000000000000000 defiantly 00000000000000000000000000000000 Blake 00100000000000000000000000000000 Packer 00101111111110101001000010001000 cold-storage 00000000000000000000000000000000 Twiggy 00100000000000000000000000000000 billion-a-year 00000000000000000000000000000000 60-year-old 00000000000000000000000000000000 Rashid 00100000000000000000000000000000 razor 00000000000101001000001010110000 observation 00000000000111101011111001100111 puritanical 00000000000000000000000000000000 viciously 00000000000000000000000000000000 patronizing 00000000000000000000000000000000 9.28 00000000000000000000000000000000 Carleton 00100000000000000000000000000000 Add 00100000000111110011001110110010 Unlimited 00100000000001000010010100010000 paranoid 00000000000000000000000000000000 food-importing 00000000000000000000000000000000 Atwood 00101111111000111100001000001000 self-sufficient 00000000000000000000000000000000 Investcorp 00100000000000000000000000000000 premium-priced 00000000000000000000000000000000 non-tariff 00000000000000000000000000000000 unforeseen 00000000000001001110010100010000 Cyber 00100000000000000000000000000000 prototypes 00000000000000000111000100101111 clumsy 00000000000000111110011010010000 Nika 00100000000000000000000000000000 980 00000000000000000000000000000000 hates 00000000000000000000000000000000 LJN 01000000000000000000000000000000 Louise 00101111111000100010111000011000 FRANKLIN 01001111111001101100110100101000 Dubnow 00100000000000000000000000000000 Didion 00100000000000000000000000000000 divested 00000000001110100100010000110010 Scientology 00100000000000000000000000000000 panics 00000001111101001111000000010010 1901 00000000000000000000000000000000 consultations 00000000000111110011010000100111 laches 00000000000000000000000000000000 non-answer 00000000000000000000000000000000 overt 00000000000000111000110100010000 Paid 00100000000011000000010000110010 paranoia 00000000000000000000000000000000 caricatures 00000000000000000000000000000000 aforementioned 00000000000000000000000000000000 Michele 00100000000000000000000000000000 traits 00000000000111111111001010100011 persuasively 00000000000000000000000000000000 dues 00000000000111001011000100000011 Nunn-McCurdy 01000000000000000000000000000000 lingers 00000000000000000000000000000000 faked 00000000000000000000000000000000 Szanton 00100000000000000000000000000000 magistrates 00000000000000001000101100100101 DLC 01000000000000000000000000000000 182 00000000000000000000000000000000 Sleep 00100000000111101110100010110111 stranded 00000000011001110100010000110010 3,600 00000000000000000000000000000000 infecting 00000000000000000000000000000000 erratically 00000000000000000000000000000000 70-a-share 00000000000000000000000000000000 factual 00000000001000011010000000110000 Decisions 00100000000111100111101000100011 utopian 00000000000000000000000000000000 investor-relations 00000000000000000000000000000000 Deak 00100000000000000000000000000000 143.6 00000000000000000000000000000000 Huntz 00100000000000000000000000000000 Carry 00100000000111100110101110110010 Taffner 00100000000000000000000000000000 class-conscious 00000000000000000000000000000000 non-interest 00000000000000000000000000000000 month-old 00000000000000000000000000000000 reliever 00000000000000000000000000000000 averted 00000111110111010100010000110010 single-B-minus 01000000000000000000000000000000 Horicon 00100000000000000000000000000000 psychologists 00000000000010101010000010110011 518 00000000000000000000000000000000 sociologists 00000000000000000000000000000000 Archives 00100000000000110111101001100111 brown 00001111111100101111011000001000 Declan 00100000000000000000000000000000 defamatory 00000000000000000000000000000000 Clarence 00101111111000001110010110011000 fabricated 00000000001100010001101001000000 implementation 00000000000111111011111101001111 Alarcon 00100000000000000000000000000000 mock 00000000000001110001000000010000 maverick 00000000000100100101000010010000 Topper 00100000000000000000000000000000 fabrications 00000000000000000000000000000000 semester 00000000000111111100011000010111 eloquent 00000000000100000100110100010000 craving 00000000000111111000011100111001 Chimerine 00101111111111000010110010001000 Zarnowitz 00100000000000000000000000000000 concomitant 00000000000000000000000000000000 Largely 00100000000111001011000001110010 listless 00000000000000000000000000000000 Cyclone 00100000000000000000000000000000 fault-tolerant 00000000000000000000000000000000 gigolo 00000000000000000000000000000000 460 00000000000000000000000000000000 Mohawk 00101111111000111000000001001000 Niagara 00101111111111010000101101110000 crucible 00000000000000000000000000000000 68.8 00000000000000000000000000000000 moxie 00000000000000000000000000000000 ASSOCIATES 01000000000111101111101011101001 juror 00000000000000000000000000000000 dynamite 00000000000000000000000000000000 Litvinchuk 00100000000000000000000000000000 near-perfect 00000000000000000000000000000000 nonferrous 00001111111101110111111110110000 sacred 00000000000000001111000010010000 Zoeller 00100000000000000000000000000000 tolls 00000000000000000000000000000000 49.1 00000000000000000000000000000000 rationally 00000000000000000000000000000000 Dynabook 00100000000000000000000000000000 standard-bearer 00000000000000000000000000000000 Pulitzer 00100000000001001101011000010000 Ginsberg 00100000000000000000000000000000 eschewed 00000000000000000000000000000000 Very 00100000000000000100000001110010 Milgrim 00100000000000000000000000000000 sniping 00000000000000000000000000000000 Scopes 00100000000000000000000000000000 gram 00000000000000000000000000000000 Departing 00100000000000011110101001000000 world-famous 00000000000000000000000000000000 coat 00000000000011100100011000000001 palmtops 00000000000000000000000000000000 notepad 00000000000000000000000000000000 Mencken 00100000000101001011000001001000 fundamentalists 00000000000010011110100000110011 Antori 00100000000000000000000000000000 Hiss 00100000001100101111111010001000 Alger 00100000000000000000000000000000 Crump 00100000000000000000000000000000 banal 00000000000000000000000000000000 whereabouts 00000000000000000000000000000000 Two-year 00100000000000000000000000000000 wardrobe 00000000000000000000000000000000 pored 00000000000000000000000000000000 milligram 00000000000000000000000000000000 trapping 00000000000000000000000000000000 Intertech 00100000000000000000000000000000 small-investor 00000000000000000000000000000000 Tarantino 00100000000000000000000000000000 0.59 00000000000000000000000000000000 clarinet 00000000000000000000000000000000 orchard 00000000000000000000000000000000 extinct 00000000000000000000000000000000 Kolb 00101111110000111000000010001000 justifiable 00000000000000000000000000000000 acquit 00000000000000000000000000000000 uneducated 00000000000000000000000000000000 strides 00000000000110111111001000100011 working-class 00000000000000000000000000000000 methodologies 00000000000000000000000000000000 dressing 00000000000010000010110001000000 embezzlement 00000000000111011011100010100111 escalators 00000000000000000000000000000000 sleaze 00000000000000000000000000000000 insecure 00000000000000000000000000000000 15.82 00000000000000000000000000000000 bashing 00000000000110100010110001000000 sportswear 00000000000011110011111010110000 244,000 00000000000000000000000000000000 fabrics 00000000000000000011011111001001 Galbraith 00101111111101001001000010001000 inversely 00000000000000000000000000000000 ticks 00000000000000000000000000000000 O'Hare 01000000000111010110010000101000 239 00000000000000000000000000000000 2,250,000 00000000000000000000000000000000 CRRES 01000000000000000000000000000000 25.25 00000000000000000000000000000000 Styrofoam 00100000000000000000000000000000 Reasoner 00100000000000000000000000000000 Rent-A-Car 01000000000000000000000000000000 ozone-depleting 00000000000000000000000000000000 regretted 00000000000000000000000000000000 Denton 00100000000000000000000000000000 airway 00000000000000000000000000000000 Hodson 00100000000000000000000000000000 Corroon 00100000000000000000000000000000 fringe 00000000000000011010001011100001 adjusts 00000000000000000000000000000000 349 00000000000000000000000000000000 2-to-1 00000000000000000000000000000000 Palisades 00100000000000000000000000000000 Nemeth 00100000000000000000000000000000 Mottram 00100000000000000000000000000000 30-a-share 00000000000000000000000000000000 Basel 00100000000101100011111001101000 nine-year 00000000000000000000000000000000 Fax 00100000001000011000001010110000 bioresearch 00000000000000000000000000000000 Lyon 00101111111111110000010000001000 Require 00100000000111010001101110110010 Mineola 00100000000000000000000000000000 Changing 00100000000011100101010001000000 compels 00000000000000000000000000000000 franchising 00000000000001110000101100100001 revenue-losing 00000000000000000000000000000000 logically 00000000000000000000000000000000 interestrate 00000000000000000000000000000000 inventions 00000000000101111111110101100011 154,240,000 00000000000000000000000000000000 Centerior 00100000000011001001000100101000 Maddie 00100000000000000000000000000000 custom-tailored 00000000000000000000000000000000 wielded 00000000000000000000000000000000 Delco 00100000000000000000000000000000 low-rate 00000000000000000000000000000000 mocking 00000000000000000000000000000000 486.6 00000000000000000000000000000000 uncritically 00000000000000000000000000000000 haole 00000000000000000000000000000000 FAX 01000000001000011000001010110000 slime 00000000000000000000000000000000 widowed 00000000000000000000000000000000 Mainland 00100000000110100010101000110000 Goldstein 00101111111111110000100010001000 Kempinski 00100000000000000000000000000000 151.20 00000000000000000000000000000000 Clancy 00101111111100110010101010001000 Elderly 00100000000111110110101000110000 second-tier 00000000000000000000000000000000 H-P 01000000000000000000000000000000 Crabs 00100000000000000000000000000000 surface-to-air 00000000000000000000000000000000 2011 00000000000000000000000000000000 non-GM 01000000000000000000000000000000 Aerospace-Thomson 01000000000000000000000000000000 Trivelpiece 00100000000000000000000000000000 guided-missile 00000000000000000000000000000000 Kangaroo 00100000000000000000000000000000 bane 00000000000101110111011000001111 discloses 00000001011011100011000000010010 36.125 00000000000000000000000000000000 Chamberlain 00101111111111100110000000001000 Kalmus 00100000000000000000000000000000 Fantastico 00100000000000000000000000000000 casings 00000000000000000000000000000000 Dass 00100000000000000000000000000000 Wetten 00100000000000000000000000000000 contestant 00000000000000000000000000000000 bottom-line 00000000000000000000000000000000 Ostrager 00100000000000000000000000000000 origination 00000000000000011000010010110000 skillful 00000000000011100111000010010000 escalating 00000000000010011101010001000000 evacuate 00000000000000000000000000000000 inappropriately 00000000000000000000000000000000 trademarks 00000000000101001100111001100011 Thygerson 00100000000000000000000000000000 market-monitoring 00000000000000000000000000000000 CoreStates 01000000000111111111000100101000 Horizons 00100000000000001011011011101001 underlined 00000000000000000000000000000000 layout 00000000000000000000000000000000 Triland 00100000000000000000000000000000 interviewer 00000000000111110101101000100111 Culver 00100000000001011000011010101000 Heron 00100000000000000000000000000000 Nagymaros 00100000000000000000000000000000 logos 00000000000111011110101010110011 depiction 00000000000000000000000000000000 exclusions 00000000000000000000000000000000 12.09 00000000000000000000000000000000 disloyal 00000000000000000000000000000000 heftier 00000000000000000000000000000000 Gressette 00100000000000000000000000000000 straighten 00000000000000000000000000000000 thrift-bailout 00000000000000000000000000000000 entertained 00000000000000000000000000000000 voir 00000000000000000000000000000000 Haworth 00100000000000000000000000000000 Arcadian 00100000000000000000000000000000 landings 00000000000110111101111001100011 Mosettig 00100000000000000000000000000000 Voronezh 00100000000000000000000000000000 Dog 00100000000111100000010000000001 132,000 00000000000000000000000000000000 Quill 00100000000000000000000000000000 Morrow 00101111111111111100111000001000 Stunned 00100000001011001101110000110010 bible 00000000000111100110011000000001 embarking 00000000000000000000000000000000 beam 00000000000110100011000110110111 lavishly 00000000000000000000000000000000 advanced-technology 00000000000000000000000000000000 86.4 00000000000000000000000000000000 global-news 00000000000000000000000000000000 34-year-old 00000000000000000000000000000000 devotes 00000000000000000000000000000000 yanking 00000000000000000000000000000000 realestate 00000000000000000000000000000000 Crier 00100000000000000000000000000000 Welcome 00100000001111100101110110110010 news-weeklies 00000000000000000000000000000000 Eichler 00100000000000000000000000000000 happier 00000000000011101001001111000000 wardens 00000000000000001100000000110011 93,000 00000000000000000000000000000000 transporter 00000000000000000000000000000000 fusillade 00000000000000000000000000000000 outdone 00000000000000000000000000000000 keyless 00000000000000000000000000000000 chore 00000000000000000000000000000000 foresaw 00000000000000000000000000000000 Freon 00100000000000000000000000000000 Designing 00100000000101001111111101000000 registering 00000000000100100001111101000000 dissenting 00000000001000001000101000110000 morbidity 00000000000000000000000000000000 840.8 00000000000000000000000000000000 therein 00000000001001101101000001110010 ammo 00000000000000000000000000000000 pillows 00000000000000000000000000000000 256.6 00000000000000000000000000000000 EBPI 01000000000000000000000000000000 proclaiming 00000000000000000000000000000000 COB 01000000000000000000000000000000 freezers 00000000000000000000000000000000 34th 00000000000000000000000000000000 confuses 00000000000000000000000000000000 Consolo 00100000000000000000000000000000 behemoths 00000000000000000000000000000000 legions 00000000000111110010111000101111 strolling 00000000000101001101100001000000 unperturbed 00000000000000000000000000000000 cramped 00000000000011010001000010010000 extensively 00000001101000010000010001110010 23.2 00000000000000000000000000000000 excised 00000000000000000000000000000000 loving 00000000000101011000101000110000 interfering 00000000000110010101100000110010 owing 00000000001000101010111000110010 Body 00100000000111100110101001100111 ornate 00000000000000000000000000000000 center-right 00000000000000000000000000000000 anchors 00000000000000000000000000000000 repealed 00000101110111010100010000110010 AnaMor 01000000000000000000000000000000 indistinguishable 00000000000000000000000000000000 Whitley 00100000000000000000000000000000 biggest-selling 00000000000000000000000000000000 nontoxic 00000000000000000000000000000000 317 00000000000000000000000000000000 five-cylinder 00000000000000000000000000000000 585,000 00000000000000000000000000000000 nonfiction 00000000000000000000000000000000 mid-sized 00000000000000000000000000000000 compressors 00000000000000000000000000000000 cramming 00000000000000000000000000000000 Camaro-Firebird 01000000000000000000000000000000 Yokich 00100000000000000000000000000000 news-weekly 00000000000000000000000000000000 Curley 00100000000000000000000000000000 agility 00000000000000000000000000000000 Atorino 00100000000000000000000000000000 Lorain 00100000000000000000000000000000 non-biodegradable 00000000000000000000000000000000 classified-ad 00000000000000000000000000000000 nursed 00000000000000000000000000000000 mailings 00000000000010000101110101100011 -all 00000000000000000000000000000000 AMVISC 01000000000000000000000000000000 second-consecutive 00000000000000000000000000000000 Hollingsworth 00100000000000000000000000000000 Malson 00100000000000000000000000000000 PCS 01000000000000000000000000000000 Cola 00100000000000010011100100100001 6.55 00000000000000000000000000000000 parental-leave 00000000000000000000000000000000 bulk-chemical 00000000000000000000000000000000 topsoil 00000000000000000000000000000000 Conrad 00101111111001010101010100001000 melting 00000000000000000000000000000000 thinnest 00000000000000000000000000000000 avalanche 00000000000110110100111001100111 Cement 00100000000001010100011010110000 Fellow 00100000000001010000101000110000 Northview 00100000000000000000000000000000 Vagabond 00100000000000000000000000000000 Leigh 00100000000010010001000100001000 Francesco 00100000000000000000000000000000 vests 00000000000000000000000000000000 Twaron 00100000000000000000000000000000 Dumbo 00100000000000000000000000000000 Sulka 00100000000000000000000000000000 chastised 00000000001101101101010000110010 Vose 00100000000000000000000000000000 litle 00000000000000000000000000000000 steel-quota 00000000000000000000000000000000 unsubsidized 00000000000000000000000000000000 steel-import 00000000000000000000000000000000 upcoming 00000000000001010000010011010000 Heitman 00100000000000000000000000000000 sacking 00000000000000000000000000000000 Gaithersburg 00100000000000000000000000000000 Stram 00100000000000000000000000000000 wholesome 00000000000000000000000000000000 Martinair 00100000000000000000000000000000 Combo 00100000000000000000000000000000 751 00000000000000000000000000000000 snowball 00000000000000001001001010110111 square-foot 00000000000000000000000000000000 Souper 00100000000000000000000000000000 ire 00000000000110111111011000001111 globalists 00000000000000000000000000000000 twin-deficit 00000000000000000000000000000000 Mall 00100000000111101100100000100001 ado 00000000000000000000000000000000 subversion 00000000000000000000000000000000 chrysotile 00000000000000000000000000000000 consternation 00000000000000000000000000000000 M-Whatever 01000000000000000000000000000000 2:07 00000000000000000000000000000000 INSURANCE 01000000000000000000010010110000 ARBITRAGE 01000000000000000000111010100001 frugality 00000000000000000000000000000000 distaste 00000000000000000000000000000000 correspondingly 00000000000000000000000000000000 Rito 00100000000000000000000000000000 bounds 00000000000111110001111101100011 mainland 00000000000110100010101000110000 37th 00000000000000000000000000000000 Fio 00100000000000000000000000000000 stirs 00000101101110000011000000010010 1.5523 00000000000000000000000000000000 pre-register 00000000000000000000000000000000 711 00000000000000000000000000000000 Yankees 00100000000111100100101010100101 pre-registered 00000000000000000000000000000000 sympathies 00000000000000000000000000000000 chides 00000000000000000000000000000000 resuscitate 00000000000000000000000000000000 Spence 00101111010000101100000010001000 chastened 00000000000000000000000000000000 Wolcott 00100000000000000000000000000000 SMALL 01000000000000001001010000010000 sympathize 00000000000000001001010110110010 Avmark 00100000000000000000000000000000 half-life 00000000000000000000000000000000 DC10-30 01000000000000000000000000000000 767-300ER 01000000000000000000000000000000 Polyconomics 00100000000111110001101000101000 unrecognized 00000000000000000000000000000000 expansionary 00000000000100100100110100010000 TALK 01000000000111111111000101010111 320-200 00000000000000000000000000000000 autobiography 00000000000111110111111001100111 Padovan 00100000000000000000000000000000 Immediately 00100000000000110000010001110010 Pimlott 00100000000000000000000000000000 afflicts 00000000000000000000000000000000 restroom 00000000000000000000000000000000 Johnstone 00100000000000000000000000000000 supersonic 00000000000000000000000000000000 BMI 01000000000000000000000000000000 stacks 00000000000111100111000100101111 10%-12 00000000000000000000000000000000 Tudor 00100000000000000000000000000000 Palestine 00100000000111110010001000110000 preaching 00000000000111100101110101000000 subways 00000000000000000000000000000000 offender 00000000000010000011111001100111 deem 00000000000000000000000000000000 Yasser 00100000000000000000000000000000 Farnham 00100000000000000000000000000000 21.50 00000000000000000000000000000000 politicking 00000000000000000000000000000000 Dumpster 00100000000000000000000000000000 new-business 00000000000000000000000000000000 better-than-average 00000000000000000000000000000000 2:54 00000000000000000000000000000000 continuity 00000000000100110111111010100111 conquer 00000000000000000000000000000000 workaholic 00000000000000000000000000000000 overheating 00000000000110111111010001000000 bending 00000000000110010011100001000000 sickening 00000000000000000000000000000000 costumed 00000000000000000000000000000000 Martens 00100000000000000000000000000000 Wealth 00100000000111101101110010100111 Hanao 00100000000000000000000000000000 back-ups 00000000000000000000000000000000 outgoing 00000000000000010100101001110000 HMS 01000000000000000000000000000000 jest 00000000000000000000000000000000 ecstatic 00000000000000000000000000000000 gloomier 00000000000000000000000000000000 vindicated 00000000010011100001110000110010 stranding 00000000000000000000000000000000 brouhaha 00000000000100011010111010100111 Strikes 00100000000111100111001000100011 Petaluma 00100000000000000000000000000000 explanatory 00000000000000000000000000000000 Lyndon 00101111111011001100010000101000 backyard 00000000000000000000000000000000 objecting 00000000000000000000000000000000 scoop 00000000101110010110010110110010 Zhong 00100000000000000000000000000000 9.58 00000000000000000000000000000000 1.59 00000000000000000000000000000000 Shu 00100000000000000000000000000000 43.1 00000000000000000000000000000000 description 00000000000111101010100101100111 anathema 00000000000111111011011000110010 two-room 00000000000000000000000000000000 I.C.H. 01000000000000000000000000000000 188.2 00000000000000000000000000000000 crabs 00000000000000000000000000000000 833.6 00000000000000000000000000000000 slam 00000000000101000001111100001000 porridge 00000000000000000000000000000000 redder 00000000000000000000000000000000 crunchier 00000000000000000000000000000000 1.87 00000000000000000000000000000000 Solicitor 00100000000000111010110000110101 advertorial 00000000000000000000000000000000 premiered 00000000000000000000000000000000 vegetative 00000000000000000000000000000000 residues 00000000000000000000000000000000 Agreed 00100000000111111111101000110010 midweek 00000000000000000000000000000000 buddy 00000000000010101011111100001000 commuting 00000000000000000000000000000000 dispense 00000000000000000000000000000000 Mossman 00100000000000000000000000000000 Mars 00100000000110111100110100101000 Thai 00100000000001100110100100110000 BMP-1 01000000000000000000000000000000 opt 00000000000110110101010110110010 784 00000000000000000000000000000000 espouse 00000000000000000000000000000000 Vevey 00100000000000000000000000000000 21,000 00000000000000000000000000000000 concurred 00000000000000000000000000000000 rep 00000000000000000000000000000000 reunions 00000000000000000000000000000000 Pyongyang 00100000000110111110101101101000 Zapfel 00100000000000000000000000000000 VH-1 01000000000000000000000000000000 steamed 00000000010101010110100001000000 mouths 00000000000001100100111101100011 runups 00000000000000000000000000000000 free-fall 00000000000000000000000000000000 Payroll 00100000000111011111100000100001 Thought 00100000000111111110110111000010 McEnaney 01000000000000000000000000000000 ferociously 00000000000000000000000000000000 IBEW 01000000000000000000000000000000 provocation 00000000000000000000000000000000 boomed 00000000111000000110001000110010 Confidential 00100000000000111001000110010000 Contemporary 00100000000001101000001000110000 231 00000000000000000000000000000000 Pennsylvania-based 00100000000000000000000000000000 34.375 00000000000000000000000000000000 Widuri 00100000000000000000000000000000 curious 00000000000000110000011010010000 bitterest 00000000000000000000000000000000 tones 00000000000110101110010101100011 unbanning 00000000000000000000000000000000 mobilize 00000000000011010111111110110010 dollar-yen 00000000000000000000000000000000 listener 00000000000000000000000000000000 cartilage 00000000000000000000000000000000 chronicles 00000000000000000000000000000000 damping 00000000000000000000000000000000 crossroads 00000000000011100101110010100111 Sandler 00101111110000000100001000001000 516 00000000000000000000000000000000 intents 00000000000000000000000000000000 Ranger 00100000000000100011100100100001 organizers 00000000000011101010000010110011 underpinning 00000000000000000000000000000000 Comes 00100000000001000100001000110010 lockstep 00000000000000000000000000000000 expresses 00000001110101100011000000010010 Feng-hsiung 00100000000000000000000000000000 Echoing 00100000000111111110100000001010 potpourri 00000000000000000000000000000000 Hsu 00100000000000000000000000000000 digging 00000000001011101110100001000000 fixedrate 00000000000000000000000000000000 Lester 00101111111000110001100010011000 7.625 00000000000000000000000000000000 wriggling 00000000000000000000000000000000 prodigious 00000000000000000000000000000000 temporary-help 00000000000000000000000000000000 communicated 00000001110010010010110000110010 Husker 00100000000000000000000000000000 223.0 00000000000000000000000000000000 Cycle 00100000000011010011001001100111 McClatchy 01000000000000000000000000000000 measurable 00000000000000000000000000000000 low-level 00000000000000000000000000000000 sourcing 00000000000000000000000000000000 Beseler 00100000000000000000000000000000 Gap 00100000000110101001100000100111 smoldering 00000000000000000000000000000000 evaporate 00000000000000000000000000000000 sofa 00000000000000000000000000000000 flames 00000000000111101110110101100011 astray 00000000000000000000000000000000 photographed 00000001010001001100010000110010 swinging 00000000000010100011100001000000 pendulum 00000000000000000000000000000000 used'em 00000000000000000000000000000000 two-tone 00000000000000000000000000000000 cancer-causing 00000000000000000000000000000000 Interspec 00100000000000000000000000000000 sleeves 00000000000000000000000000000000 stardom 00000000000000000000000000000000 0.91 00000000000000000000000000000000 7.16 00000000000000000000000000000000 7.72 00000000000000000000000000000000 of'em 00000000000000000000000000000000 200-point 00000000000000000000000000000000 Wedgwood 00100000000000000000000000000000 817.5 00000000000000000000000000000000 25-a-share 00000000000000000000000000000000 5-0 00000000000000000000000000000000 5-1 00000000000000000000000000000000 best-of-seven 00000000000000000000000000000000 Banstar 00100000000000000000000000000000 Areas 00100000000111101111110010100011 nary 00000000000000000000000000000000 spin-off 00000000000000000000000000000000 kingside 00000000000000000000000000000000 trailing 00000000000111001001110101000000 Lombard 00100000000111101100010011000111 'N 01000000000000110100000101001000 gourmet 00000000000000001110101010110000 sauces 00000000000000000000000000000000 Lautenberg 00100000000000000000000000000000 Enright 00100000000000000000000000000000 fuming 00000000000000000000000000000000 catcher 00000000000000000000000000000000 plutonium-powered 00000000000000000000000000000000 Terrible 00100000001010001100011010010000 candies 00000000000000000000000000000000 bedlam 00000000000000000000000000000000 Pull 00100000000011011110101110110010 10:25 00000000000000000000000000000000 Orel 00100000000000000000000000000000 Hershiser 00100000000000000000000000000000 five-game 00000000000000000000000000000000 pops 00000000101111100111000000010010 blundered 00000000000000000000000000000000 sell-order 00000000000000000000000000000000 9:45 00000000000000000000000000000000 Cashin 00100000000000000000000000000000 stomping 00000000000000000000000000000000 spectator 00000000000111110010001010101000 1304.23 00000000000000000000000000000000 457.7 00000000000000000000000000000000 tournament 00000000000111100110010100000001 Mine 00100000000000001011100010001001 79.3 00000000000000000000000000000000 Straits 00100000000110111000111101100111 UMW 01000000000000000000000000000000 homers 00000000000000000000000000000000 1925 00000000000000000000000000000000 Possible 00100000000000000000111000010000 triples 00000000000000000000000000000000 dentist 00000000000111111011010010110101 fielding 00000000000010000000011110000000 alerted 00000000000000001101010000110010 peritoneal 00000000000000000000000000000000 fingering 00000000000000000000000000000000 tip-off 00000000000000000000000000000000 high-leverage 00000000000000000000000000000000 mates 00000000000010011111110101100011 balanced-budget 00000000000000000000000000000000 Rancho 00101111111000001011001101110000 Dahlen 00100000000000000000000000000000 Sunlight 00100000000111111110110000100001 Kosar 00100000000000000000000000000000 in... 00000000000000000000000000000000 250-point 00000000000000000000000000000000 trophy 00000000000000000000000000000000 3:45 00000000000000000000000000000000 2.83 00000000000000000000000000000000 Salina 00100000000000000000000000000000 mid 00000000000111111000110110101000 Kudlow 00101111000000101100000010001000 fish-processing 00000000000000000000000000000000 Reds 00100000000000000000000000000000 Puccio 00100000000000000000000000000000 unstylish 00000000000000000000000000000000 premium-brand 00000000000000000000000000000000 cues 00000000000111111111000000000011 Hinkle 00100000000000000000000000000000 bare-bones 00000000000000000000000000000000 Longley 00100000000000000000000000000000 half-point 00000000000000000000000000000000 snubbing 00000000000000000000000000000000 Glendale 00100000000110001001101001101000 unabated 00000000000111100101110110010000 36-year-old 00000000000000000000000000000000 Optical 00100000000000010010101010110000 203.56 00000000000000000000000000000000 1385.72 00000000000000000000000000000000 wrappers 00000000000000000000000000000000 clanging 00000000000000000000000000000000 Milwaukee-based 00100000000000000000000000000000 problem-solving 00000000000000000000000000000000 downtime 00000000000000000000000000000000 A.L. 01000000000000000000000000000000 pours 00000000000000000000000000000000 steak 00000000000111110011001010110000 Trizec 00100000000000000000000000000000 cross-functional 00000000000000000000000000000000 Tonawanda 00100000000000000000000000000000 air-separation 00000000000000000000000000000000 Aides 00100000000000000000010110110101 Gideon 00100000000000000000000000000000 Westendorf 00100000000000000000000000000000 Ballantine 00101111110010100100001000001000 pessimist 00000000000000000000000000000000 yen-denominated 00000000000000000000000000000000 Streeter 00100000000000000000000000000000 String 00100000000111111111110101111111 A-6 00100000000000000000000000000000 204.2 00000000000000000000000000000000 Beaverton 00100000000000000000000000000000 monstrous 00000000000000000000000000000000 hastened 00000010000111000101010000110010 12:49 00000000000000000000000000000000 Distillers 00100000000110001111001010101000 Schenley 00100000000000000000000000000000 845 00000000000000000000000000000000 punched 00000000000000000000000000000000 Chekhov 00100000000000000000000000000000 no-smoking 00000000000000000000000000000000 analog 00000000000000000000000000000000 snooping 00000000000000000000000000000000 1.5805 00000000000000000000000000000000 Cycling 00100000000000000000000000000000 tapers 00000000000000000000000000000000 360,000 00000000000000000000000000000000 1.5755 00000000000000000000000000000000 Immediate 00100000000000000001010100010000 Jobson 00100000000000000000000000000000 472 00000000000000000000000000000000 15-trader 00000000000000000000000000000000 empathize 00000000000000000000000000000000 haltingly 00000000000000000000000000000000 maligned 00000000000000000000000000000000 Hingorani 00100000000000000000000000000000 wineries 00000000000000000000000000000000 reproduce 00000000001000101110101110110010 279 00000000000000000000000000000000 couched 00000000000000000000000000000000 midrange 00000000000100011000010000110000 82.1 00000000000000000000000000000000 scoring 00000000001101101110100001000000 Trettien 00100000000000000000000000000000 Masterson 00100000000000000000000000000000 tastefully 00000000000000000000000000000000 civility 00000000000000000000000000000000 'em 00000000000000000010000101001000 225,000 00000000000000000000000000000000 a.k.a. 00000000000000000000000000000000 batted 00000000001101000100010000110010 2-0 00000000000000000000000000000000 unto 00000000000000000000000000000000 Adia 00100000000000000000000000000000 ol 00000000000000000000000000000000 Bourbon 00100000000001001100001000100001 distillers 00000000000110001111001010101000 vying 00000000000010011110110000110010 Elite 00100000000001011011001100100111 space-age 00000000000000000000000000000000 Eskandarian 00100000000000000000000000000000 Leadership 00100000000111101010101001100111 fluctuating 00000000000000000000000000000000 Lampe 00100000000000000000000000000000 Bilanz 00100000000000000000000000000000 distiller 00000000000111100101100001110101 perfected 00000000000000000000000000000000 Underneath 00100000111010100001000000001010 subtracting 00000000000111010100100101000000 Absent 00100000011000010100010000110010 destined 00000000011111001100110000110010 preschoolers 00000000000000000000000000000000 Dahl 00101111111101011001000010001000 Porum 00100000000000000000000000000000 gift-giving 00000000000000000000000000000000 666 00000000000000000000000000000000 shoots 00000000000000000000000000000000 industrialist 00000000000111110001100000110101 snapshot 00000000000000000000000000000000 doddering 00000000000000000000000000000000 perked 00000000000000000000000000000000 Talking 00100000000110110111110000110010 Vyacheslav 00100000000000000000000000000000 incensed 00000000000000000000000000000000 Grayhound 00100000000000000000000000000000 11.50 00000000000000000000000000000000 irreverent 00000000000111011100110100010000 1.8200 00000000000000000000000000000000 non-professional 00000000000000000000000000000000 Sulzer 00100000000000000000000000000000 deluged 00000000000000000000000000000000 Execution 00100000000110001111111101001111 secretive 00000000000111011001000010010000 Supposedly 00100000011001100000001001110010 price-slashing 00000000000000000000000000000000 460.98 00000000000000000000000000000000 139.8 00000000000000000000000000000000 solitary 00000000000000000000000000000000 summarize 00000000000000000000000000000000 Wards 00100000000000000000000000000000 deer 00000000000010010110011010101000 defining 00000000000000011111011101000000 Harpener 00100000000000000000000000000000 guides 00000000000010111111000000010010 5.66 00000000000000000000000000000000 Australians 00100000000001001100111000110011 jawboning 00000000000000000000000000000000 computer-systems 00000000000000000000000000000000 142.15 00000000000000000000000000000000 drumbeat 00000000000111110010001000111111 low-profit 00000000000000000000000000000000 power-generation 00000000000000000000000000000000 second-hand 00000000000000000000000000000000 Roseanne 00100000000000000000000000000000 Pinick 00100000000000000000000000000000 Walkman 00100000000000000000000000000000 Kuster 00101111111010110000001010001000 28.25 00000000000000000000000000000000 Kuhns 00100000000000000000000000000000 two-and-a-half 00000000000000000000000000000000 Nortek 00100000000110000111111100101000 blossomed 00000000000000000000000000000000 139.10 00000000000000000000000000000000 Mondschein 00100000000000000000000000000000 1.5840 00000000000000000000000000000000 paneling 00000000000000000000000000000000 648.2 00000000000000000000000000000000 Sterbas 00100000000000000000000000000000 Hoping 00100000000110101100110000110010 Nickles 00100000000000000000000000000000 nightmarish 00000000000000000000000000000000 Saint-Saens 01000000000000000000000000000000 haphazard 00000000000000000000000000000000 wafers 00000000000001001110100010100101 oppressive 00000000000000000000000000000000 Unruh 00101111111000100010101010001000 Kaddurah-Daouk 01000000000000000000000000000000 free-wheeling 00000000000000000000000000000000 Significant 00100000000000000000000000010000 government-backed 00000000000000000000000000000000 commercialization 00000000000000000000000000000000 Gloria 00100000000000000001011000011000 Bonnier 00100000000000000000000000000000 Avalon 00100000000000000000000000000000 Cynwyd 00100000000000000011000100011101 Bala 00100000000111111101101101110000 recapture 00000000100010111111110110110010 six-inch 00000000000000000000000000000000 enormously 00000000000011101000000001110010 Emyanitoff 00100000000000000000000000000000 staff-reduction 00000000000000000000000000000000 Colston 00100000000000000000000000000000 Katherine 00100000000000000000000000000000 Bick 00100000000000000000000000000000 recanted 00000000000000000000000000000000 five-inch 00000000000000000000000000000000 disseminated 00000000000000000000000000000000 splashy 00000000000000000000000000000000 detour 00000000000000000000000000000000 Candice 00100000000000000000000000000000 Indicators 00100000000111101100101010100011 Bode 00100000000000010000000110111001 Orchard 00100000000000000000000000000000 Bostian 00100000000000000000000000000000 Steppel 00100000000000000000000000000000 guitar 00000000000111111110101100100001 doom 00000000000111110110110010110111 formulated 00000000011001101100010000110010 faithfully 00000000000000000000000000000000 shunning 00000000000100111101111101000000 biking 00000000000000000000000000000000 systemwide 00000000000000000000000000000000 mincemeat 00000000000000000000000000000000 Boat 00100000000111111100001000100001 polite 00000000000000100011011010010000 Mill 00100000000111101011000010001001 Vaughan 00100000000000000000000000000000 Hammerstein 00100000000000000000000000000000 Beck 00101111111100111100011000001000 Nishiki 00100000000000000000000000000000 Nutcracker 00100000000000000000000000000000 amok 00000000000000000000000000000000 vaudeville 00000000000000000000000000000000 20.75 00000000000000000000000000000000 salute 00000000000000000000000000000000 Uphoff 00100000000000000000000000000000 low-key 00000000000000000000000000000000 matter-of-factly 00000000000000000000000000000000 Arpino 00100000000000000000000000000000 Joffrey 00100000000000000000000000000000 showcases 00000000000000000000000000000000 Schwinn 00100000000000000000000000000000 nine-day 00000000000000000000000000000000 21.125 00000000000000000000000000000000 half-completed 00000000000000000000000000000000 Kuperberg 00100000000000000000000000000000 beautifully 00000001010100000000010001110010 Seidel 00100000000000000000000000000000 biomedical 00000000000010001011011010110000 Trustees 00100000000110001110101010110011 Tree 00100000000111100100111000000001 Custom 00100000000001111000001010110000 Agile 00100000000000000000000000000000 Joni 00100000000000000000000000000000 Lapin 00100000000000000000000000000000 solidarity 00000000000000000111010010100111 Kinnock 00101111111111101001000010001000 chauvinism 00000000000000000000000000000000 Pall 00100000000100110010111010100111 Hornung 00100000000000000000000000000000 Revisited 00100000000000000000000000000000 disagreements 00000000000010101110110000100111 Naftalis 00100000000000000000000000000000 ex-Attorney 01000000000000000000000000000000 ill-advised 00000000000000000000000000000000 fat-tired 00000000000000000000000000000000 Hardis 00100000000000000000000000000000 54.4 00000000000000000000000000000000 Into 00100000000000000100000000001010 9-10:30 00000000000000000000000000000000 Cabbage 00100000000101110010001000110000 Edouard 00101111111111111011001010011000 quicken 00000000000000000000000000000000 tax-cut 00000000000000000000000000000000 modernist 00000000000000000000000000000000 inflating 00000000000011010111011101000000 pegging 00000000000001010101011101000000 torpedoed 00000000000000000000000000000000 Balloon 00100000000111111011001010110111 neutralization 00000000000000000000000000000000 overshadowing 00000000000000000000000000000000 hardball 00000000000010101000101100100001 Sheridan 00100000000000000000000000000000 6.10 00000000000000000000000000000000 Fishkill 00100000000000000000000000000000 Beacon 00100000000111101010010100001001 take-out 00000000000000000000000000000000 Blankenship 00100000000000000000000000000000 Patch 00100000000010001011110100100001 1926 00000000000000000000000000000000 behaves 00000000001010101000001000110010 Cutrer 00100000000000000000000000000000 deadbeats 00000000000000000000000000000000 workday 00000000000000000000000000000000 Howick 00100000000000000000000000000000 Woodruff 00100000000000000000000000000000 49%-owned 00000000000000000000000000000000 56-year-old 00000000000000000000000000000000 lower-quality 00000000000000000000000000000000 marveled 00000000000000000000000000000000 328.85 00000000000000000000000000000000 Post-Newsweek 01000000000000000000000000000000 Imprimis 00100000000000000000000000000000 sake 00000000000111011101011000001111 Baton 00100000000111110110011010101000 McGlade 01001111111000010000000010001000 Makro 00100000000000000000000000000000 484 00000000000000000000000000000000 Shoppers 00100000000001101100111000110011 Ticketron 00100000000000000000000000000000 exemplifies 00000000000000000000000000000000 lotteries 00000000000000000000000000000000 177.5 00000000000000000000000000000000 full-body 00000000000000000000000000000000 Ousley 00100000000000000000000000000000 ETA 01000000000000000000000000000000 masseur 00000000000000000000000000000000 numerically 00000000000000000000000000000000 Byler 00100000000000000000000000000000 8-9 00000000000000000000000000000000 Borner 00100000000000000000000000000000 Soule 00100000000000000000000000000000 polluted 00000000000110001001101001000000 save-the-earth 00000000000000000000000000000000 whacky 00000000000000000000000000000000 Glory 00100000000100111111011010100111 ahs 00000000000000000000000000000000 Masterpiece 00100000000010111110101000100001 sensitivity 00000000000111110111110100100111 oohs 00000000000000000000000000000000 Supermarkets 00100000000000010011001010110000 Ohlman 00100000000000000000000000000000 spa 00000000000000000000000000000000 arouse 00000000011001101111101110110010 Stephenson 00100000000000000000000000000000 gruesome 00000000000000000000000000000000 Vidunas 00100000000000000000000000000000 cobbled 00000000000000000000000000000000 characterization 00000000000111100001110000001111 salarymen 00000000000000000000000000000000 rotation 00000000000100011001101010100111 Reasons 00100000000111111111101110100011 dormitory 00000000000000000000000000000000 weepers 00000000000000000000000000000000 2020 00000000000000000000000000000000 technicality 00000000000111101000111101100111 naysayers 00000000000000000000000000000000 bottlers 00000000000111111101010000110011 necessitated 00000000000000000000000000000000 125.1 00000000000000000000000000000000 angles 00000000000000000000000000000000 oxide 00000000000000000000010010001001 Systemwide 00100000000000000000000000000000 fried 00000000000000100010111000101000 gyrating 00000000000000000000000000000000 rainier 00000000000110000011000100101000 Kryuchkov 00100000000000000000000000000000 fascinated 00000000000000000000000000000000 relevancy 00000000000000000000000000000000 Buzzell 00100000000000000000000000000000 frets 00000000000100100011010111000010 miscalculation 00000000000000000000000000000000 echelon 00000000000000000000000000000000 Mazzone 00100000000000000000000000000000 infringing 00000000000110010000100000110010 hawks 00000000000100010100110100000001 patent-infringement 00000000000000000000000000000000 asset-allocation 00000000000000000000000000000000 Quelle 00100000000000000000000000000000 Saying 00100000000111111111111010000010 Minera 00100000000000000000000000000000 Intermoda 00100000000000000000000000000000 unrestrained 00000000000000000000000000000000 49-year-old 00000000000000000000000000000000 reactivated 00000000000111110010111001000000 1,250 00000000000000000000000000000000 Battelle 00100000000000000000000000000000 bucket 00000000000110011000100101100111 unsustainable 00000000000000000000000000000000 Charge 00100000000111101110101101000111 untouchable 00000000000000000000000000000000 topsy-turvy 00000000000000000000000000000000 unspent 00000000000000000000000000000000 thin-slab 00000000000000000000000000000000 Pitcher 00100000000011101111011110110101 opener 00000000000000000000000000000000 amply 00000000000000000000000000000000 unobserved 00000000000000000000000000000000 Havana 00100000001111000111111001101000 Ilyushins 00100000000000000000000000000000 Casino 00100000000000010101111010110000 Tropicana 00100000000010110011010100101000 Irish-Soviet 01000000000000000000000000000000 reversible 00000000000000000000000000000000 prolific 00000000000000000000000000000000 preface 00000000000111000101111010110111 Jaffe 00101111111110000100001000001000 morphogenetic 00000000000000000000000000000000 Osborn 00100000000000000000000000000000 rancorous 00000000000000000000000000000000 Sylvester 00100000000111101010000100001000 Stallone 00100000000000000000000000000000 netted 00000000000000101110100100110010 oneself 00000000000000000000000000000000 axiom 00000000000000000000000000000000 NTG 01000000000000000000000000000000 fast-moving 00000000000000000000000000000000 post-production 00000000000000000000000000000000 overlooked 00000001100111010100010000110010 Tracinda 00100000000000000000000000000000 effluent 00000000000000000000000000000000 Hitler 00100000000111010110101101101000 congratulated 00000000000000000000000000000000 gentry 00000000000000000000000000000000 irreparably 00000000000000000000000000000000 Keidanren 00100000000000000000000000000000 85,000 00000000000000000000000000000000 Sasaki 00100000000000000000000000000000 repressed 00000000000000000000000000000000 intertwining 00000000000000000000000000000000 Distributors 00100000000111010110010000110011 Littleton 00100000000000000000000000000000 reimpose 00000000000000000000000000000000 vexing 00000000000000000000000000000000 cling 00000000000010010111010110110010 housekeeper 00000000000111100000000001000111 drummer 00000000000000000000000000000000 antiquated 00000000000001110110101010110000 Meeting 00100000000111111111110001000111 Underscoring 00100000000111111001001101000000 Disappointing 00100000000000010011100000010000 destroys 00000000000000000000000000000000 Remains 00100000000000000000001000110010 maquiladoras 00000000000000000000000000000000 Ishiguro 00100000000000000000000000000000 soothing 00000000001010011110011010010000 fair-market 00000000000000000000000000000000 Howley 00100000000000000000000000000000 Danvers 00100000000000000000000000000000 97.74 00000000000000000000000000000000 Ericson 00100000000000000000000000000000 10-cent-a-share 00000000000000000000000000000000 jacked 00000000000000000000000000000000 Nagano 00100000000000000000000000000000 Zafris 00100000000000000000000000000000 Nakamura 00100000000000000000000000000000 150.3 00000000000000000000000000000000 Sternberg 00100000000000000000000000000000 Frabotta 00100000000000000000000000000000 computer-services 00000000000000000000000000000000 co-manager 00000000000000000000000000000000 Staples 00100000000111111110000010100011 soft-spoken 00000000000000000000000000000000 Exxon-owned 00100000000000000000000000000000 Linsert 00100000000000000000000000000000 Usually 00100000001000100000001001110010 41.75 00000000000000000000000000000000 overcame 00000000000000000000000000000000 Weisberg 00100000000000000000000000000000 Nellcor 00100000001101111010111100101000 amplifiers 00000000000000000000000000000000 BizMart 01000000000000000000000000000000 Aiwa 00100000000000000000000000000000 Leroy 00100000000000000000000000000000 moisture 00000000000000101001110010100111 Ito 00100000000000000000000000000000 horticulturally 00000000000000000000000000000000 Murasawa 00100000000000000000000000000000 occupy 00000000000001101110101110110010 Payco 00100000000000000000000000000000 Boxes 00100000000000110101110101100011 Etc. 00100000000000000000000000000000 microwaves 00000000000000000000000000000000 above-market 00000000000000000000000000000000 absorbing 00000000000111000111110101000000 1939 00000000000000000000000000000000 low-ball 00000000000000000000000000000000 avoids 00000001010100000011000000010010 557 00000000000000000000000000000000 horrendous 00000000000001011000011010010000 54.8 00000000000000000000000000000000 four-wheel-drive 00000000000000000000000000000000 Joann 00100000000000000000000000000000 Lublin 00100000000000000000000000000000 outlines 00000000100111001111000000010010 Dong-A 01000000000000000000000000000000 persistence 00000000000111001110011000001111 placate 00000000010011010111111110110010 Takuma 00100000000000000000000000000000 meticulous 00000000000000000000000000000000 shirking 00000000000000000000000000000000 apologize 00000000000111100101010110110010 escalate 00000000000011000110111110110010 violet 00000000000000000000000000000000 back-end 00000000000000000000000000000000 mollify 00000000000000000000000000000000 BellSouth-LIN 01000000000000000000000000000000 Paev 00100000000000000000000000000000 lakes 00000000000001010110110100100001 Retrieval 00100000000000010101100001100001 3.51 00000000000000000000000000000000 cutthroat 00000000000000000000000000000000 Flowers 00100000000111101011010101100011 DataTimes 01000000000000000000000000000000 Architects 00100000000111000010100000110011 adolescent 00000000000000000000000000000000 illiteracy 00000000000000000000000000000000 indulging 00000000000101110111000001000000 Sprizzo 00100000000000000000000000000000 Soldado 00100000000000000000000000000000 353 00000000000000000000000000000000 Progressive 00100000000000000110011000110000 illiquidity 00000000000000000000000000000000 amplified 00000000011110100001110000110010 sorely 00000000000000000000000000000000 nicer 00000000000000000000000000000000 pre-crash 00000000000000000000000000000000 Own 00100000000000000011110010101000 Bridgestone 00100000000111000111011100101000 drags 00000000000000000000000000000000 Leblang 00100000000000000000000000000000 pap 00000000000000010111110000100001 Grannies 00100000000000000000000000000000 Cato 00100000000101100110000000001000 delisting 00000000000000000000000000000000 underpaid 00000000000001110101101001000000 88-point 00000000000000000000000000000000 3.95 00000000000000000000000000000000 ghettos 00000000000000000000000000000000 132.8 00000000000000000000000000000000 assimilate 00000000000000000000000000000000 dole 00001111111100100110011010001000 ingots 00000000000000000000000000000000 rocketed 00000000000000000000000000000000 Dime 00100000000111111111000001000111 2.10 00000000000000000000000000000000 Kirschner 00100000000000000000000000000000 Mervin 00100000000000000000000000000000 schooling 00000000000100100111110010100111 outgrowth 00000000000000000000000000000000 156.8 00000000000000000000000000000000 Link 00100000000111111110001010110111 Associate 00100000000000000110001001110000 Amcast 00100000000000000000000000000000 hyped 00000000000000000000000000000000 443.6 00000000000000000000000000000000 telegraphed 00000000000000000000000000000000 patchwork 00000000000000000000000000000000 Beall 00101111111000010010000010001000 nationalization 00000000000111111101101101001111 20-year-old 00000000000000000000000000000000 squares 00000000000000000000000000000000 conceit 00000000000000000000000000000000 123.5 00000000000000000000000000000000 10.86 00000000000000000000000000000000 Certified 00100000000111000001101001000000 lovers 00000000000000001101110101100011 rugs 00000000000000000000000000000000 servant 00000000000111101110111111111001 gridlocked 00000000000000000000000000000000 loft 00000000000000000000000000000000 feelers 00000000000000000000000000000000 Bernhard 00100000000000000000000000000000 vantage 00000000000001010011001100100111 MX 01000000000000000000000000000000 cones 00000000000000000000000000000000 dismisses 00000000100111100011000000010010 gifted 00000000000000001011000010010000 80-megabyte 00000000000000000000000000000000 Intl 00100000000000000000000000000000 Kress 00100000000000000000000000000000 Bronces 00100000000000000000000000000000 decor 00000000000000000000000000000000 foyer 00000000000000000000000000000000 textbooks 00000000000000001101111000110011 Flemish 00100000000000000000000000000000 Colnaghi 00100000000000000000000000000000 mindful 00000000000001101011110000110010 Longmont 00100000000000000000000000000000 riskiest 00000000000000000000000000000000 bedroom 00000000000000100011010000000001 carp 00001111111000110100000000001000 eight-count 00000000000000000000000000000000 Barrah 00100000000000000000000000000000 heavy-truck 00000000000000000000000000000000 Ike 00100000000000111001000100001000 brigades 00000000000000000000000000000000 RDF 01000000000000000000000000000000 Weinberger 00101111111110101100001010001000 home-state 00000000000000000000000000000000 keyed 00000000000000000000000000000000 biodegradable 00000000000000000000000000000000 Change 00100000000111111110111000110111 plaintive 00000000000000000000000000000000 Conduct 00100000000111100111110110110010 Rake 00100000000000000000000000000000 Jachmann 00100000000000000000000000000000 Lanier 00101111111001000001000010001000 impartial 00000000000000000000000000000000 valley 00000000000000000000000010100101 Molokai 00100000000000000000000000000000 Maui 00100000000000000000000000000000 changeover 00000000000111111111001010000001 blithely 00000000000000000000000000000000 Push 00100000000111100110010110110010 non-dual 00000000000000000000000000000000 prejudice 00000000000111100111100010100111 Dual 00100000000101110010000000110000 BDDP 01000000000000000000000000000000 Duesseldorf 00100000000000000000000000000000 day-long 00000000000000000000000000000000 eye-catching 00000000000000000000000000000000 packing 00000000000001100010110001000000 fatuous 00000000000000000000000000000000 discharges 00000000000000000000000000000000 paused 00000000000000000000000000000000 boutiques 00000000000000000000000000000000 Stravinsky 00100000000000000000000000000000 minimalism 00000000000000000000000000000000 Publisher 00100000000111111111110000110101 332.38 00000000000000000000000000000000 Arden 00101111111110101000000100001000 pores 00000000000000000000000000000000 keys 00000000000101110101110101100011 79.03 00000000000000000000000000000000 novelties 00000000000000000000000000000000 harmonious 00000000001011001101000000010000 queers 00000000000000000000000000000000 repetitive 00000000001010110001000000010000 blotting 00000000000000000000000000000000 decreed 00000000000111100101110111000010 avant-garde 00000000000000000000000000000000 margarine 00000000000000000000000000000000 fetchingly 00000000000000000000000000000000 279.75 00000000000000000000000000000000 90.6 00000000000000000000000000000000 Likely 00100000000111111101011000110010 waterfront 00000000000010010100100000100001 Sider 00100000000000000000000000000000 World-Wide 01000000000000000000000000000000 965 00000000000000000000000000000000 126.1 00000000000000000000000000000000 42nd 00000000000000000000000000000000 three-party 00000000000000000000000000000000 5.65 00000000000000000000000000000000 horticulture 00000000000000000000000000000000 hosted 00000000010001100111010000110010 test-marketing 00000000000000000000000000000000 pounded 00000000000000000000000000000000 Extension 00100000000111101110111001100111 of... 00000000000000000000000000000000 ft. 00000000000000000000000000000000 Alpine 00100000000001000011010100101000 Metruh 00100000000000000000000000000000 lethargy 00000000000000000000000000000000 Emil 00100000000000000000000000000000 Mersa 00100000000000000000000000000000 abortion-related 00000000000000000000000000000000 reposition 00000000000000000000000000000000 assassin 00000000000000000000000000000000 Quennell 00100000000000000000000000000000 tusks 00000000000000000000000000000000 Waldheim 00101111111000000011110110001000 skirting 00000000000000000000000000000000 Crutzen 00100000000000000000000000000000 mid-30s 00000000000000000000000000000000 Goliaths 00100000000000000000000000000000 Bunting 00101111111110100100111000001000 scrimping 00000000000000000000000000000000 top-yielding 00000000000000000000000000000000 gardener 00000000000000000000000000000000 Graedel 00100000000000000000000000000000 airlift 00000000000111011000101100100101 new-product 00000000000000000000000000000000 southeast 00000000000000001010001110101000 Autry 00100000000000000000000000000000 Whitehall 00100000000101101001000100101000 skin-care 00000000000000000000000000000000 knots 00000000000000101000000001000111 originator 00000000000000000000000000000000 Gosbank 00100000000000000000000000000000 Hingham 00100000000000000000000000000000 bleach 00000000000000000000000000000000 whims 00000000000000000000000000000000 pornography 00000000000111000011010010100111 sludge 00000000000111100101110000100001 replays 00000000000000000000000000000000 halftime 00000000000000000000000000000000 Harlow 00100000000000000000000000000000 ABORTION 01000000000000101001010000100001 high-altitude 00000000000000000000000000000000 languished 00000000011000000110001000110010 leukemia 00000000000010101001110010100111 Chesebrough-Pond 01000000000000000000000000000000 ritzy 00000000000000000000000000000000 72-a-share 00000000000000000000000000000000 fashions 00000000000001001101110101100011 ground-based 00000000000000000000000000000000 high-minded 00000000000000000000000000000000 129.72 00000000000000000000000000000000 87.25 00000000000000000000000000000000 20.7 00000000000000000000000000000000 breather 00000000000000000000000000000000 year-long 00000000000000000000000000000000 tidy 00000000000000011100100000010000 zoom 00000000000000000000000000000000 reacts 00000000000000000000000000000000 B-1B 01000000000000000000000000000000 market-reform 00000000000000000000000000000000 Boudreau 00100000000000000000000000000000 harassment 00000000000011011101100010100111 Subsequently 00100000000000011001001001110010 tortured 00000001001001110100010000110010 legalistic 00000000000000000000000000000000 Tanner 00100000000000000000000000000000 24.3 00000000000000000000000000000000 congressionally 00000000000000000000000000000000 cartoonist 00000000000000000000000000000000 Thrifts 00100000000111100111100001110011 199 00000000000000000000000000000000 conceivable 00000000000011001110010001110010 overload 00000000000000000000000000000000 Allentown 00100000000000000000000000000000 Okla 00100000000000000000000000000000 angrily 00000001011001000001001001110010 Anybody 00100000000000011010010001110010 Deposits 00100000000111100010100111100011 mind-numbing 00000000000000000000000000000000 Swasey 00100000000000000000000000000000 9.37 00000000000000000000000000000000 injustice 00000000001010000111111001100111 reserving 00000000000101100101110101000000 Louvre 00100000000000000000101011001111 141.85 00000000000000000000000000000000 bald 00000000000101100110011010010000 calmer 00000000000011101100001111000000 unconfirmed 00000000000001000101000110010000 epidemic 00000000000100001111111001100111 wrest 00000000000111010100101110110010 hike 00000000000111110011001110000011 mailroom 00000000000000000000000000000000 packets 00000000000000000000000000000000 79-year-old 00000000000000000000000000000000 scavengers 00000000000000000000000000000000 Malone 00101111111101101010100010001000 non-subscription 00000000000000000000000000000000 ironically 00000000000111111110111011101000 disbursements 00000000000000000000000000000000 cowards 00000000000000000000000000000000 kings 00000000000101001010001000110000 Neck 00100000000111111111010000000001 Privately 00100000000010100001001001110010 avail 00000000000101111110010001110010 exchange-listed 00000000000000000000000000000000 Weill 00101111110000110100000010001000 Steptoe 00100000000000000000000000000000 Sonja 00100000000000000000000000000000 condom 00000000000001101100001000100001 Increase 00100000000111111111110100110111 reincorporating 00000000000000000000000000000000 1254.27 00000000000000000000000000000000 unchanging 00000000000000000000000000000000 reshufflings 00000000000000000000000000000000 49.96 00000000000000000000000000000000 Planck 00100000000000000000000000000000 untested 00000000000100010100110100010000 smarter 00000000000001011001001111000000 Bee 00100000000001101001101100100001 Krug 00100000000000000000000000000000 autocratic 00000000000001100100110100010000 Geary 00100000000000000000000000000000 guru 00000000000111111001011110110101 centerfielder 00000000000000000000000000000000 Sense 00100000000111101101010101100111 Pressed 00100000001111101101010000110010 skyward 00000000000000000000000000000000 no-growth 00000000000000000000000000000000 224,070,000 00000000000000000000000000000000 fauna 00000000000000000000000000000000 souped-up 00000000000000000000000000000000 Excel 00100000000101001011111100001000 Barnes 00101111111100100100100010001000 11-year 00000000000000000000000000000000 107.9 00000000000000000000000000000000 catch-up 00000000000000000000000000000000 half-baked 00000000000000000000000000000000 96.4 00000000000000000000000000000000 tug-of-war 00000000000000000000000000000000 hair-trigger 00000000000000000000000000000000 Trend 00100000000111111100111101100111 625.4 00000000000000000000000000000000 EWDB 01000000000000000000000000000000 wayward 00000000000000000000000000000000 statues 00000000000000000000000000000000 HOLIDAY 01000000000000011000000000100001 Tory 00100000000000010110011000110000 retrospective 00000000000000010000100101100111 elixir 00000000000000000000000000000000 Nonsense 00100000000111110101110010100111 director-general 00000000000000000000000000000000 Lasker 00101111111110100101111010001000 three-page 00000000000000000000000000000000 urethane 00000000000000000000000000000000 polyols 00000000000000000000000000000000 UNION 01000000000111100011001100100101 Waldbaum 00100000000000100010110000001000 recklessly 00000000000000000000000000000000 Rowland-Molina 01000000000000000000000000000000 Bern 00100000000011011111111001101000 Sharfman 00100000000000000000000000000000 polysilicon 00000000000000000000000000000000 buckets 00000000000000000000000000000000 tippee 00000000000000000000000000000000 Eakle 00101111100111010100000010001000 tipper 00000000000000000000000000000000 SPAN 01000000000000100101001010110111 hackers 00000000000000000000000000000000 Computerworld 00100000000000000000000000000000 emasculate 00000000000000000000000000000000 housework 00000000000000000000000000000000 commonwealth 00000000000111111000101000101000 resides 00000000000000000000000000000000 analyses 00000000000111101100001000100011 manifestations 00000000000000000000000000000000 deportation 00000000000111001001000101001111 Internet 00100000000000000000000000000000 freezer 00000000000000000000000000000000 reigned 00000000000000000000000000000000 futures-trading 00000000000000000000000000000000 appreciably 00000000000000000000000000000000 symbiotic 00000000000000000000000000000000 one-for-one 00000000000000000000000000000000 husbands 00000000000111111110011100110011 arbitrage`` 00000000000000000000000000000000 1868 00000000000000000000000000000000 210,000 00000000000000000000000000000000 individual-investor 00000000000000000000000000000000 allocator 00000000000000000000000000000000 PRI 01000000000000000000000000000000 Quadrant 00100000000000000000000000000000 revoking 00000000000000000000000000000000 herding 00000000000000000000000000000000 madness 00000000001110011110011010100111 Orrick 00100000000000000000000000000000 1911 00000000000000000000000000000000 1943 00000000000000000000000000000000 Tripoli 00100000000000000000000000000000 relegated 00000000000000000000000000000000 Yanes 00100000000000000000000000000000 Committees 00100000000000001001000001010101 59.3 00000000000000000000000000000000 Maughan 00100000000000000000000000000000 Grisebach 00100000000000000000000000000000 deposed 00000000000101100000101001000000 Villa 00100000001001100111110100100001 Views 00100000000111101111111101100011 REAGAN 01001111110000001000000110001000 Manson 00100000000000000000000000000000 Yaohan 00100000000000000000000000000000 repatriate 00000000000000101111001110110010 342 00000000000000000000000000000000 eucalyptus 00000000001010110010111000101000 Chernobyl 00100000000000011011100000100001 lagoon 00000000000110100110111000000001 Ryzhkov 00100000000000000000000000000000 875 00000000000000000000000000000000 discovers 00000000110011100011000000010010 Ph. 00100000000000000000000000000000 methane 00000000000110101110110000100001 candor 00000000000110101010110010100111 Dannemiller 00100000000000000000000000000000 Alarmed 00100000000111100101110000110010 LaMore 01000000000000000000000000000000 trail-blazing 00000000000000000000000000000000 subsidence 00000000000000000000000000000000 analogy 00000000000110101011111001100111 deployment 00000000000111101011111101001111 extracting 00000000000000000000000000000000 Thieves 00100000000111001101111000110011 urgently 00000010010001000001001001110010 arthritis 00000000000011100010101000110000 armor 00000000001110100101110101100011 BMW 01000000000000000000000000000000 extremists 00000000000011000110000110110101 battery-powered 00000000000000000000000000000000 fanatics 00000000000000000000000000000000 paramilitary 00000000000000000000000000000000 outfly 00000000000000000000000000000000 here... 00000000000000000000000000000000 MiG-29s 01000000000000000000000000000000 early-retirement 00000000000000000000000000000000 Soviet-trained 00100000000000000000000000000000 appointee 00000000000111111001010110110101 epilepsy 00000000000000000000000000000000 infantry 00000000000000000000000000000000 Gromov 00100000000000000000000000000000 Brezhnevite 00100000000000000000000000000000 abide 00000000000111100010010110110010 bewildered 00000000000000000000000000000000 symposiums 00000000000001101011110101100011 insignificant 00000000000011001101110110010000 Millions 00100000000111101011111000101111 journals 00000000000111101110000100100011 shortsighted 00000000000000000000000000000000 983 00000000000000000000000000000000 Ukraine 00100000000000000000000000000000 affiliating 00000000000000000000000000000000 McElroy 01000000000000000000000000000000 Driving 00100000000111001100100001000000 Censorship 00100000000001100110011010100111 Gain 00100000000111111111101101000111 Motley 00100000000000000000000000000000 1890s 00000000000000000000000000000000 debt-rating 00000000000000000000000000000000 methodical 00000000000000000000000000000000 amaze 00000000000000000000000000000000 adequacy 00000000000111111111001010001111 hot-line 00000000000000000000000000000000 volcano 00000000000000000000000000000000 Hardest 00100000000000000100111000110010 Zimbabwean 00100000000000000000000000000000 muscling 00000000000000000000000000000000 man-made 00000000000000000000000000000000 Lausanne 00100000000000000000000000000000 waiters 00000000000101101001111000110011 brochure 00000000000000101000001011100111 A-2 00100000000000000000000000000000 371.20 00000000000000000000000000000000 17th 00000000000000000000000000000000 Helms 00101111111100111100111010001000 intrusive 00000000000000000000000000000000 Confusion 00100000000111111100111010100111 9.43 00000000000000000000000000000000 dolphins 00000000000000000000000000000000 digesting 00000000000110100111011101000000 Nutting 00100000000000000000000000000000 royal 00000000000010000001111000101000 1,750 00000000000000000000000000000000 Capra 00100000000000000000000000000000 Chatset 00100000000000000000000000000000 calming 00000000000000100111010001000000 WAR 01000000000011101011000111111001 11.57 00000000000000000000000000000000 Sundarji 00100000000000000000000000000000 Hindu 00100000000100001101011000110000 howitzer 00000000000000000000000000000000 honorably 00000000000000000000000000000000 630 00000000000000000000000000000000 peacetime 00000000001010011010000000110000 hated 00000000000110010100110111000010 ECI 01000000000000000000000000000000 flaunt 00000000000000000000000000000000 co-founders 00000000000000000000000000000000 underwrote 00000000001001011101000000010010 Parametric 00100000000000000000000000000000 1,365,226 00000000000000000000000000000000 334,774 00000000000000000000000000000000 vaunted 00000000000000000000000000000000 Volk 00100000000000000000000000000000 coherence 00000000000000000000000000000000 Dwight 00101111111000010100011100001000 specialization 00000000000000000000000000000000 -even 00000000000000000000000000000000 Mexicans 00100000000011011100111000110011 unites 00000000000000000000000000000000 jousting 00000000000000000000000000000000 petty 00000000000000101101001000110000 arms-kickback 00000000000000000000000000000000 Singh 00100000000000000000000000000000 537 00000000000000000000000000000000 Daisy 00101111111010001100010000101000 Biotechnical 00100000000000000000000000000000 Lourie 00100000000000000000000000000000 Birinyi 00100000000000000000000000000000 industry-specific 00000000000000000000000000000000 Wynn 00101111110110110100000010001000 wonderment 00000000000000000000000000000000 injure 00000000000000000000000000000000 additives 00000000000111101110011111001001 intermediaries 00000000000111101110111001110011 watershed 00000000000000001011001010010000 Raines 00100000000000000000000000000000 well-versed 00000000000000000000000000000000 motorcycles 00000000000101101000111001100011 8.475 00000000000000000000000000000000 index-options 00000000000000000000000000000000 lumps 00000000000000000000000000000000 ACCOUNTING 01000000000000000010000010110000 Tradition 00100000000111111101001001100111 motorized 00000000000101011000001000110000 separated 00000011000101010100010000110010 cyclist 00000000000000000000000000000000 squabbles 00000000000000000000000000000000 Yoshihashi 00100000000000000000000000000000 pedal 00000000000101110110111000000001 Sain 00100000000000000000000000000000 derided 00000000000000000000000000000000 tool-and-die 00000000000000000000000000000000 Delegates 00100000000000000110000000110011 outmoded 00000000000000000000000000000000 summers 00000000000100101011111010001000 equestrians 00000000000000000000000000000000 waxed 00000000000000000000000000000000 riot 00000000000111001001011000110000 consulting-firm 00000000000000000000000000000000 Lefcourt 00100000000000000000000000000000 8.14 00000000000000000000000000000000 hiker 00000000000000000000000000000000 gold-leaf 00000000000000000000000000000000 3,040,000 00000000000000000000000000000000 bickered 00000000000000000000000000000000 Echo 00100000000111001110011010101000 panned 00000001011001110010110000110010 uh 00000000000000000000000000000000 Newquist 00100000000000000000000000000000 bachelor 00000000000000000000000000000000 B.J. 01000000000000000000000000000000 benches 00000000000000000000000000000000 estate-tax 00000000000000000000000000000000 penalized 00001010001011010100010000110010 HUGO'S 01000000000000000000000000000000 stripped-down 00000000000000000000000000000000 ludicrously 00000000000000000000000000000000 contradict 00000000000111001001101110110010 Sheehan 00100000000000000000000000000000 Theoretically 00100000110100000000001001110010 unprofessional 00000000000000000000000000000000 Wetherell 00100000000000000000000000000000 outwardly 00000000000000000000000000000000 simplification 00000000000000000000000000000000 disbanded 00000011011011010100010000110010 departing 00000000000000011110101001000000 Quaker 00101111111000000110100100101000 leaded 00000000000000000000000000000000 demobilize 00000000000000000000000000000000 methanol 00000000000110111110110000100001 Smiling 00100000000110100011000001000000 Cokely 00100000000000000000000000000000 5-fluorouracil 00000000000000000000000000000000 levamisole 00000000000000000000000000000000 Reduced 00100000000010010000111001000000 workable 00000000001100001101000000010000 leash 00000000000111111110101001000111 Mom 00100000000010111111110010100111 Contract 00100000000111000001000000011001 Robots 00100000000110100101111001100011 propylene 00000000000000000000000000000000 Weisel 00100000000000000000000000000000 computer-generated 00000000000000000000000000000000 family-oriented 00000000000000000000000000000000 long-planned 00000000000000000000000000000000 KCRA 01000000000000000000000000000000 news-oriented 00000000000000000000000000000000 Enrique 00100000000000100011100010011000 Brandon 00101111111000101011010100001000 Cicero 00100000000000000000000000000000 karaoke 00000000000000000000000000000000 Bataan 00100000000000000000000000000000 roar 00000000000000000000000000000000 correspondents 00000000000001111100100000110011 Universal-Rundle 01000000000000000000000000000000 pedestrians 00000000000000000000000000000000 evaluates 00000000000000000000000000000000 kiddies 00000000000000000000000000000000 choked 00000000000000000000000000000000 easygoing 00000000000000000000000000000000 glitz 00000000000000000000000000000000 N.Y.-based 01000000000000000000000000000000 business-as-usual 00000000000000000000000000000000 combating 00000000000000000000000000000000 scouting 00000000000101010101110101000000 no-frills 00000000000000000000000000000000 3,250,000 00000000000000000000000000000000 slicing 00000000000000000000000000000000 fickle 00000000000001010101000010010000 recreational-vehicle 00000000000000000000000000000000 vetoing 00000000000000000000000000000000 well-entrenched 00000000000000000000000000000000 Vosges 00100000000000000000000000000000 Planet 00100000000111001101011000000001 shopped 00000000000000000000000000000000 Clifton 00100000000000000000000000000000 expedition 00000000000111110010001000100111 8300 00000000000000000000000000000000 449.89 00000000000000000000000000000000 Competitors 00100000000111101111110000110011 459.93 00000000000000000000000000000000 provocatively 00000000000000000000000000000000 Females 00100000000101110101011100110011 explode 00000000001010111101010110110010 Males 00100000000000010010011100110011 vacationing 00000000000111000111000001000000 Advocates 00100000000000001100000010110011 lures 00000000000000000000000000000000 8.19 00000000000000000000000000000000 Precious 00101111111101010111111110110000 redoing 00000000000000000000000000000000 Fraumeni 00100000000000000000000000000000 Governors 00100000000000010010101010110011 sparingly 00000000000000000000000000000000 shoddy 00000000000000100011000110010000 MarCor 01000000000000000000000000000000 abate 00000000000000000000000000000000 Fans 00100000000100100010100000110011 Lung-cancer 00100000000000000000000000000000 foreshadowed 00000000000000000000000000000000 forgot 00000000000111100000110111000010 repassed 00000000000000000000000000000000 NORTH 01000000000111100011100110101000 capitalizing 00000000000100110100100000110010 Dederick 00101111111111000110000010001000 Frankenstein 00100000000000000000000000000000 curtly 00000000000000000000000000000000 Barletta 00100000000000000000000000000000 Spadafora 00100000000000000000000000000000 conveyed 00000000100001000101010000110010 ARTICLE 01000000000111101111001000100111 SECTION 01000000000111001011100001000111 CLAUSE 01000000000000000010110011100111 Eskenazi 00100000000000000000000000000000 indict 00000000011001010111111110110010 ore 00000000000000111110110100100001 idling 00000000000010000000000001110111 Tobacco 00100000000000011011011010110000 LaMothe 01000000000000000000000000000000 Vote 00100000000111110111111000110111 gun-running 00000000000000000000000000000000 9.875 00000000000000000000000000000000 stomachs 00000000000000000000000000000000 Covington 00100000000000000000000000000000 Tiant 00100000000000000000000000000000 Same 00100000000000000000100011010000 wiretaps 00000000000000000000000000000000 reverberating 00000000000000101101100001000000 5:09 00000000000000000000000000000000 rent-a-colonel 00000000000000000000000000000000 Tashi 00100000000000000000000000000000 boatload 00000000000111111101000101111111 Bragg 00100000000000000000000000000000 earthworms 00000000000000000000000000000000 impoundment 00000000000000000000000000000000 intoxicated 00000000000000000000000000000000 blackmailing 00000000000000000000000000000000 Hannifin 00100000000000000000000000000000 colonel 00000000000111101010010000110101 triple-B 01000000000000000000000000000000 Armuelles 00100000000000000000000000000000 LTCB 01000000000000000000000000000000 turbulent 00000000000011000011000010010000 Malaysian 00100000000001110110100100110000 Daim 00100000000000000000000000000000 good-will 00000000000000000000000000000000 sever 00000000000000000000000000000000 revolves 00000000000000000000000000000000 executive-branch 00000000000000000000000000000000 unrecognizable 00000000000000000000000000000000 teamed 00000000001101111011001000110010 Roukema 00100000000000000000000000000000 Omar 00100000000000000000000000000000 garrison 00001111111100010001110001001000 caved 00000000000000000000000000000000 QUANTUM 01000000000000001011010100101000 CHEMICAL 01000000000000010000011010110000 falsified 00000000000000110101101001000000 Fairness 00100000000000001111011011100001 incumbents 00000000000000000001100110110011 gringos 00000000000000000000000000000000 Ambler 00100000000000000000000000000000 Somoza 00100000000000000000000000000000 mistress 00000000000000000000000000000000 Commenting 00100000000111110100100000110010 Exactly 00100000000000011100001001110010 havens 00000000000111101101101110000011 Personal-computer 00100000000000000000000000000000 sequestration 00000000000000000000000000000000 ingrained 00000000000000000000000000000000 heats 00000000001001111011001000110010 Hefner 00100000000000000000000000000000 graciously 00000000000000000000000000000000 89.9 00000000000000000000000000000000 ax 00000000000111110010111000100111 507 00000000000000000000000000000000 Industria 00100000000000000000000000000000 buzzwords 00000000000000000000000000000000 Madden 00100000000000000000000000000000 export-related 00000000000000000000000000000000 shadowy 00000000000000000000000000000000 Needless 00100000000110111000111000110010 luminaries 00000000000000000000000000000000 Sentelle 00100000001111010000111010001000 522 00000000000000000000000000000000 Expansion 00100000000111101010111001100111 bedfellows 00000000000000000000000000000000 surfacing 00000000000000000000000000000000 Giroldi 00100000000000000000000000000000 Muzak 00100000000000000000000000000000 Surgeon 00100000000000001010110000110101 Ittleson 00100000000000000000000000000000 litigators 00000000000000000000000000000000 70.7 00000000000000000000000000000000 Lynford 00100000000000000000000000000000 alternatively 00000000000111111000111011101000 anti-depressant 00000000000000000000000000000000 administrations 00000000000111101000000100100011 WHY 01000000000000000000101101000010 Prozac 00100000000000000000000000000000 Stoltz 00100000000000000000000000000000 25.50 00000000000000000000000000000000 plant-science 00000000000000000000000000000000 Walsh 00101111111100101000110010001000 clustered 00000001110001001100010000110010 Ollie 00100000000000101001010100001000 mints 00000000000000000000000000000000 Spurred 00100000010011100111010000110010 abducted 00000000000110110100010000110010 embezzling 00000000000000000000000000000000 protagonist 00000000000000000000000000000000 hospitality 00000000000010110001111010110000 COURT 01000000000000000000000111010101 leapt 00000000000000000000000000000000 mind-set 00000000000000000000000000000000 then-Vice 01000000000000000000000000000000 animal-health 00000000000000000000000000000000 exploding 00000000000010101101010001000000 Mevacor 00100000000000000000000000000000 assassinate 00000000000000000000000000000000 Adopting 00100000000111111010111101000000 twenty 00000000000111101111000011000000 big-selling 00000000000000000000000000000000 squadron 00000000000111001111000001000111 112,000 00000000000000000000000000000000 bumped 00000000000110010001001000110010 273.5 00000000000000000000000000000000 Lieb 00100000000000000000000000000000 angering 00000000000000000000000000000000 575,000 00000000000000000000000000000000 stock-option 00000000000000000000000000000000 edges 00000000000111111001111101100011 Scofield 00100000000000000000000000000000 shipsets 00000000000000000000000000000000 Caspi 00100000000000000000000000000000 333,000 00000000000000000000000000000000 Akerson 00100000000000000000000000000000 amenities 00000000000111110100001010100011 29-year-old 00000000000000000000000000000000 Hovnanian 00100000000000000000000000000000 4.0 00000000000000000000000000000000 condos 00000000000000000000000000000000 Bartlesville 00100000000000000000000000000000 Nob 00100000000000000000000000000000 58.50 00000000000000000000000000000000 electrochemicals 00000000000000000000000000000000 dumps 00000000011101101111000000010010 9.19 00000000000000000000000000000000 severable 00000000000000000000000000000000 outfield 00000000000000000000000000000000 Conlin 00100000000000000000000000000000 stall 00000000000011010110010110110010 industry-government 00000000000000000000000000000000 Morever 00100000000000000000000000000000 condone 00000000000000000000000000000000 build'em 00000000000000000000000000000000 rearing 00000000000000000000000000000000 Ignore 00100000000101011111111110110010 discount-retailing 00000000000000000000000000000000 Brush 00100000000111101101110110110111 354 00000000000000000000000000000000 commenced 00000000000000000000000000000000 fireball 00000000000111000111101010110111 over-40 00000000000000000000000000000000 wreaked 00000000000000000000000000000000 effortlessly 00000000000000000000000000000000 Conservation 00100000000000001000101101100001 jamming 00000000001100001010110001000000 U.S.-Canada 01000000000000000000000000000000 LA 01001111111111111001001101110000 Espre 00100000000000000000000000000000 tellers 00000000000000000000000000000000 fugitives 00000000000000000000000000000000 Hays 00101111111110011100111000001000 Broken 00100000000110110010110000110010 Member 00100000000111111110111100111111 Anaheim 00100000000100110011101001101000 84-6 00000000000000000000000000000000 bundle 00000000000111111111110001011111 HOT 01000000000000010001011010010000 betrayed 00000000111111010001110000110010 irradiated 00000000000000000000000000000000 profligate 00000000000000000000000000000000 rough-and-tumble 00000000000000000000000000000000 duplex 00000000000000000000000000000000 expendable 00000000000000000000000000000000 penthouse 00000000000011111000110100101000 Industrywide 00100000000000010000000100010000 cash-management 00000000000000000000000000000000 234 00000000000000000000000000000000 Ramsey 00100000000000000000000000000000 noncompetitive 00000000000000111000000110110000 postmarked 00000000000000000000000000000000 book-entry 00000000000000000000000000000000 Mondale 00101111111111111000001010001000 Hickey 00100000000000000000000000000000 inadequately 00000000000000000000000000000000 goats 00000000000000000000000000000000 CAPITAL 01000000000000000000000000110001 209,000 00000000000000000000000000000000 mixing 00000000000101000110100001000000 103,000 00000000000000000000000000000000 133.8 00000000000000000000000000000000 underwater 00000000000111101100101010110000 reef 00000000000000000000000000000000 Patricof 00100000000000000000000000000000 Slaughter 00100000000110111011011010100111 Continentals 00100000000000000000000000000000 MPI 01000000000000000000000000000000 ever-present 00000000000000000000000000000000 373 00000000000000000000000000000000 Randol 00100000000000000000000000000000 4.04 00000000000000000000000000000000 pamphlets 00000000000000000000000000000000 Consent 00100000000011000001000101001111 gentler 00000000000000000000000000000000 lathes 00000000000000000000000000000000 metal-forming 00000000000000000000000000000000 Bowker 00100000000000000000000000000000 paraphernalia 00000000000000000000000000000000 93.75 00000000000000000000000000000000 energy-services 00000000000000000000000000000000 mandates 00000001101111001111000000010010 Weichern 00100000000000000000000000000000 1.68 00000000000000000000000000000000 avuncular 00000000000000000000000000000000 10.50 00000000000000000000000000000000 6.625 00000000000000000000000000000000 Offsetting 00100000000000010011011101000000 broadcaster 00000000000110110110011110110101 Vanourek 00100000000000000000000000000000 Sheinberg 00101111111101110101000010001000 1.94 00000000000000000000000000000000 asleep 00000000000000011000010001110010 mega 00000000000011110101011010110000 preferred-share 00000000000000000000000000000000 32.7 00000000000000000000000000000000 shortstop 00000000000000000000000000000000 756 00000000000000000000000000000000 137.6 00000000000000000000000000000000 7.375 00000000000000000000000000000000 consortia 00000000000000000000000000000000 blasted 00000011111011000101010000110010 7.58 00000000000000000000000000000000 seeming 00000000000011111000111000110010 vu 00000000000000000000000000000000 Eckenfelder 00100000000000000000000000000000 810 00000000000000000000000000000000 commercializing 00000000000000000000000000000000 deja 00000000000000000000000000000000 deep-seated 00000000000000000000000000000000 profit-making 00000000000000000000000000000000 hesitant 00000000000111001111110000110010 Inca 00100000000000000000000000000000 355 00000000000000000000000000000000 99.85 00000000000000000000000000000000 amalgamation 00000000000000000000000000000000 Gujarat 00100000000000000000000000000000 Northgate 00100000000000000000000000000000 outcomes 00000000000111001000011000100011 Strait 00100000000111100010011000001111 495 00000000000000000000000000000000 Passive 00100000000001010000011100010000 Usha 00100000000000000000000000000000 Rectifier 00100000000000000000000000000000 Ada 00100000000000000000000000000000 Zurn 00100000000000000000000000000000 unseen 00000000000110110110110000100001 Berra 00100000000010010000111010001000 1990-2004 00000000000000000000000000000000 Scores 00100000000111101110100100101111 204 00000000000000000000000000000000 Jardine 00100001111111101101101000101000 45.66 00000000000000000000000000000000 1,878-page 00000000000000000000000000000000 elites 00000000000000000000000000000000 professionalism 00000000000000000000000000000000 Daniels 00101111111100100000011000001000 Redland 00100000000000000000000000000000 Yogi 00100000000000000000000000000000 JP 01000000000000000000000000000000 Meat 00100000000010111011111010110000 Dentistry 00100000000000000000000000000000 7.282 00000000000000000000000000000000 12.39 00000000000000000000000000000000 Hahnemann 00100000000000000000000000000000 double-A-2 01000000000000000000000000000000 49.6 00000000000000000000000000000000 renovating 00000000000000000000000000000000 0.375 00000000000000000000000000000000 Carey 00101111111111011100001000001000 8.23 00000000000000000000000000000000 8.43 00000000000000000000000000000000 11.625 00000000000000000000000000000000 Jaguar-GM 01000000000000000000000000000000 3.61 00000000000000000000000000000000 hikes 00000000000111110000111110000011 Genel 00100000000000000000000000000000 Eskridge 00100000000000000000000000000000 Gillian 00100000000000000000000000000000 embargoed 00000000000000000000000000000000 Yeah 00100000000111111001111011101000 resentful 00000000000000000000000000000000 impassively 00000000000000000000000000000000 mesh 00000000000000011110010110110010 Commentators 00100000000110000010000010110011 Ninety 00100000000110001111000011000000 insistent 00000000000000000000000000000000 fest 00000000000000000000000000000000 sick-building 00000000000000000000000000000000 Greensboro 00100000000111100011101001101000 collaborate 00000000000000000000000000000000 disturbs 00000000000000000000000000000000 Rhoads 00100000000000000000000000000000 Marmalstein 00100000000000000000000000000000 reconstructing 00000000000000000000000000000000 day-by-day 00000000000000000000000000000000 neurologists 00000000000000000000000000000000 show-biz 00000000000000000000000000000000 Broadcasters 00100000000110110110111000110011 Recession 00100000000111111111101010100111 air-pollution 00000000000000000000000000000000 empowers 00000000000000000000000000000000 Hara 00100000000000000000000000000000 Toney 00100000000000000000000000000000 Lockerbie 00100000000000000000000000000000 9.375 00000000000000000000000000000000 101.4 00000000000000000000000000000000 laundered 00000000000000000000000000000000 17.375 00000000000000000000000000000000 15.9 00000000000000000000000000000000 Jenco 00100000000000000000000000000000 A&P 01000000000000000000000000000000 7.14 00000000000000000000000000000000 stub 00000000000110111010101000100001 Blumstein 00100000000000000000000000000000 441.1 00000000000000000000000000000000 Rosenfeld 00101111110110101000000010001000 underperform 00000000000000000000000000000000 12.95 00000000000000000000000000000000 batches 00000000000000000000000000000000 underperformed 00000000000000000000000000000000 recess 00000000000000011101010001100111 Kalipharma 00100000000000000000000000000000 Surprises 00100000000101000111001000100011 10.14 00000000000000000000000000000000 Growing 00100000000000000001010001000000 Affair 00100000000111101101100011100111 incoming 00000000000000000111000011010000 usability 00000000000000000000000000000000 Mannheim 00100000000000000000000000000000 555 00000000000000000000000000000000 anti-anemia 00000000000000000000000000000000 194,000 00000000000000000000000000000000 SunGard 01000000000000000000000000000000 Gilmartin 00100000000000000000000000000000 7.09 00000000000000000000000000000000 participates 00000000000000000000000000000000 Interco 00100000000111011111101100101000 Maccabee 00100000000000000000000000000000 Heading 00100000000110001110100001000000 99.35 00000000000000000000000000000000 shining 00000000000000000110011010010000 SUNY 01000000000000000000000000000000 hearty 00000000000000000000000000000000 Mile 00100000000111110100100001010000 Welles 00100000000000000000000000000000 MacArthur 01000000000000000000000000000000 Reid 00101111111010001101001000001000 half-time 00000000000000000000000000000000 Sukle 00100000000000000000000000000000 Joey 00100000000000000000000000000000 rages 00000000000000000000000000000000 docudrama 00000000000000000000000000000000 masks 00000000101111001111000000010010 '68 00000000000000000000000000000000 squeamish 00000000000000000000000000000000 contenders 00000000000111111100100110110011 admirer 00000000000000000000000000000000 Wrath 00100000000111111111011000001111 Grapes 00100000000111001011010101100011 exuberance 00000000000000000000000000000000 Reuven 00100000000000000000000000000000 authentic 00000000000010010100110100010000 Cronkite 00100000000000000000000000000000 verse 00000000000000000000000000000000 dramatizations 00000000000000000000000000000000 Alexandrine 00100000000000000000000000000000 scathing 00000000000000000000000000000000 rationalizations 00000000000000000000000000000000 artistry 00000000000000000000000000000000 manic-depressive 00000000000000000000000000000000 misrepresents 00000000000000000000000000000000 Lean 00100000000100100101110110110010 gunship 00000000000000000000000000000000 29.9 00000000000000000000000000000000 sunrise 00000000000001111000110100101000 Philinte 00100000000000000000000000000000 health-products 00000000000000000000000000000000 sporting-goods 00000000000000000000000000000000 Silvers 00100000000000000000000000000000 Nipponese 00100000000000000000000000000000 jealous 00000000010001101011110000110010 Cowan 00100000000000000000000000000000 Alceste 00100000000000000000000000000000 Possibly 00100000000110011101000001110010 messing 00000000101111000110100001000000 ordinances 00000000000000000000000000000000 depicting 00000001011010010000000000001010 profiteers 00000000000000000000000000000000 Henri 00100000000111101110001000011000 uncontrolled 00000000000000000000000000000000 Fung 00100000000000000000000000000000 profiles 00000000001011110010001000100011 Bussieres 00100000000000000000000000000000 Dade 00100000000100001010011010101000 jarring 00000000000000000000000000000000 trickier 00000000000000000000000000000000 Warman 00100000000000000000000000000000 proclamations 00000000000000000000000000000000 disinclined 00000000000000000000000000000000 1.6055 00000000000000000000000000000000 imperfections 00000000000111010000011000100011 141.55 00000000000000000000000000000000 revolutionize 00000000000000000000000000000000 Cattle 00100000000000010001101110110000 Chicagoans 00100000000000000000000000000000 MEATS 01000000000111100111101110110000 Commissions 00100000000111101010100100000011 therapies 00000000000101010000110100100011 LIVESTOCK 01000000000001001111101110110000 526.3 00000000000000000000000000000000 non-Japanese 01000000000000000000000000000000 93.2 00000000000000000000000000000000 Curtis 00101111111110110000000100001000 91.2 00000000000000000000000000000000 Interbank 00100000000001001111001001110010 127.5 00000000000000000000000000000000 underwrites 00000000000000000000000000000000 Thereafter 00100000010010100100010001110010 periphery 00000000000000000000000000000000 redeemable 00000000000000010111100110110000 reassert 00000000000000000000000000000000 Levi 00101111111010000010000100001000 big-city 00000000000000000000000000000000 Nauman 00101111111000000101010110011000 root-canal 00000000000000000000000000000000 detract 00000000000000000000000000000000 clashes 00000000000111111010110000100111 thirty 00000000000111111000111001010000 1.5753 00000000000000000000000000000000 non-daily 00000000000000000000000000000000 Resort 00100000000111101001011000000001 Reinhold 00100000000000000000000000000000 backlit 00000000000000000000000000000000 Ideologues 00100000000000000000000000000000 drawback 00000000000111111100101100010111 adversaries 00000000000111000001110000110011 thickness 00000000000000000000000000000000 annex 00000000000000000000000000000000 Albania 00100000000000000000000000000000 Parkinson 00101111100110101100000010001000 Feeling 00100000000111110101110101100111 Reunification 00100000000001101001110010100111 TI 01000000000000000000000000000000 Browning 00101111111100100011100010001000 Scali 00100000000000000000000000000000 Sloves 00100000000000000000000000000000 Beadleston 00100000000000000000000000000000 Provide 00100000000111110111101110110010 2.03 00000000000000000000000000000000 Vries 00100000000000000000000000000000 Alzheimer 00100000000111011001111110101000 1.89 00000000000000000000000000000000 defense-related 00000000000000000000000000000000 Collectors 00100000000110010010100000110011 Explains 00100000000111111101011111000010 repertoire 00000000000101111001101001100111 overpaying 00000000000110110101110101000000 cross-blending 00000000000000000000000000000000 retainer 00000000000000101011100011000111 Street-style 00100000000000000000000000000000 Lerner 00101111111010101110100010001000 furnish 00000000010101101111101110110010 transmitting 00000000000000000000000000000000 leveled 00000000000111101001001000110010 transplantation 00000000000000000000000000000000 willfully 00000000000000000000000000000000 Courant 00100000000000000000000000000000 zombie 00000000000000000000000000000000 1.5825 00000000000000000000000000000000 searing 00000000000000000000000000000000 ancillary 00000000000000000000000000000000 exploratory 00000000000001000100010100010000 inspiration 00000000000111011101010010111001 Shiseido 00100000000000000000000000000000 5.64 00000000000000000000000000000000 39.7 00000000000000000000000000000000 nuclear-powered 00000000000000000000000000000000 counsels 00000000000111111100101000110011 Canaveral 00100000000000000000000000000000 Probing 00100000000010100101110101000000 AmBase 01000000000000000000000000000000 sugared 00000000000000000000000000000000 Wilkinson 00101111110010000100001000001000 142.70 00000000000000000000000000000000 Meyers 00101111111100110101001000001000 Schaumburg 00100000000000000000000000000000 falsify 00000000000000000000000000000000 Transactions 00100000000111100110010000100111 COKE 01000000000010011110110100101000 perched 00000000000000000000000000000000 thrift-industry 00000000000000000000000000000000 repeals 00000000000000000000000000000000 proclamation 00000000000000000000000000000000 6:30 00000000000000000000000000000000 nonpublic 00000000000001110111000110010000 derring-do 00000000000000000000000000000000 bruising 00000000000000000000000000000000 Safer 00100000000000110101001111000000 15th 00000000000000000000000000000000 27.7 00000000000000000000000000000000 reignite 00000000000000000000000000000000 lower-than-anticipated 00000000000000000000000000000000 Finmeccanica 00100000000000000000000000000000 amortize 00000000000000000000000000000000 Basically 00100000101001000000001001110010 Messina 00100000000000000000000000000000 2.34 00000000000000000000000000000000 bloodied 00000000000000000000000000000000 rods 00000000000111101010101111001001 3.62 00000000000000000000000000000000 Sylmar 00100000000000000000000000000000 295 00000000000000000000000000000000 Frances 00101111111001011000001000011000 Snedeker 00100000000000000000000000000000 Gill 00101111111100100100111000001000 2.5-mile 00000000000000000000000000000000 MACY 01000000000111011101110000001000 protectors 00000000000000000000000000000000 Steinman 00100000000000000000000000000000 ELECTRIC 01000000000000001110010001001000 11.53 00000000000000000000000000000000 information-processing 00000000000000000000000000000000 GENERAL 01000000000111100001001000101000 passable 00000000000000000000000000000000 Victoire 00100000000000000000000000000000 281 00000000000000000000000000000000 Mervyn 00100000000000000000000000000000 1-for-10 00000000000000000000000000000000 Target 00100000000111101011100101100111 Bensonhurst 00100000000000000000000000000000 Emporium 00100000000000000000000000000000 Payment 00100000000111001100100011000111 computer-chip 00000000000000000000000000000000 Trent 00100000000000000000000000000000 A.D. 01000000000000000000000000000000 abetting 00000000000110110111011101000000 Generales 00100000000000000000000000000000 Alleghany 00100000000101000100111100101000 192.5 00000000000000000000000000000000 19.76 00000000000000000000000000000000 pleading 00000000000100000110010000110010 690 00000000000000000000000000000000 NTT 01000000000000000000000000000000 Stahl 00101111111001101110000010001000 technician 00000000000101011011011110110101 Ministers 00100000000000000000100110010101 19-month 00000000000000000000000000000000 Correll 00100000000000000000000000000000 milllion 00000000000000000000000000000000 long-time 00000000000000000000000000000000 Siddeley 00100000000000000000000000000000 Hawker 00100000000000000000000000000000 disarming 00000000000000000000000000000000 attractively 00000000000000000000000000000000 227 00000000000000000000000000000000 straits 00000000000110111000111101100111 plugged 00000000000000000000000000000000 brushing 00000000000000000000000000000000 20.875 00000000000000000000000000000000 ambushed 00000000000000000000000000000000 inter-American 01000000000000000000000000000000 replicating 00000000000000000000000000000000 Aronson 00100000000000000000000000000000 catalytic 00000000000000000000000000000000 46.125 00000000000000000000000000000000 Torres 00100000000000000000000000000000 405.4 00000000000000000000000000000000 pro-active 00000000000000000000000000000000 Brownell 00100000000000000000000000000000 downtrend 00000000000000000000000000000000 bookkeeping 00000000000000000010100011100001 Uhr 00100000000000000000000000000000 40-megabyte 00000000000000000000000000000000 2.59 00000000000000000000000000000000 Hagen 00100000000000000000000000000000 7.12 00000000000000000000000000000000 Supporting 00100000000001111011011101000000 715 00000000000000000000000000000000 7.24 00000000000000000000000000000000 Pathe 00100000000000000000000000000000 Aeroquip 00100000000000000000000000000000 Redstone 00101111111110111010100010001000 stressful 00000000000000000000000000000000 Camera 00100000000101010000101000100001 knee 00000000000111000101110000000001 gas-gathering 00000000000000000000000000000000 Developing 00100000000111110111110001000000 wasting 00000000000001110100100101000000 529 00000000000000000000000000000000 435.5 00000000000000000000000000000000 Sumner 00100000000000000000000000000000 Speculators 00100000000100000001001000110011 constructing 00000000000111101001111101000000 4-for-1 00000000000000000000000000000000 166,900,000 00000000000000000000000000000000 1247.87 00000000000000000000000000000000 2.74 00000000000000000000000000000000 231-191 00000000000000000000000000000000 Addington 00100000000000000000000000000000 incursion 00000000000000000000000000000000 778 00000000000000000000000000000000 1,050 00000000000000000000000000000000 chuckles 00000000000000000000000000000000 Ikegai 00100000000000000000000000000000 sixfold 00000000000000000000000000000000 enriching 00000000000000000000000000000000 Francisco-Oakland 01000000000000000000000000000000 intelligently 00000000000000000000000000000000 Vitulli 00100000000000000000000000000000 rape-and-incest 00000000000000000000000000000000 15.625 00000000000000000000000000000000 42.7 00000000000000000000000000000000 Conte 00100000000000000000000000000000 Gotta 00100000000000000000000000000000 uranium-mining 00000000000000000000000000000000 disinterested 00000000000000000000000000000000 lineups 00000000000000000000000000000000 lectured 00000000000000000000000000000000 Premner 00100000000000000000000000000000 foodstuffs 00000000000000000000000000000000 Testifying 00100000000111100011000001000000 9.83 00000000000000000000000000000000 AuCoin 01000000000000000000000000000000 9.88 00000000000000000000000000000000 S$ 00100000000000000000000000000000 Quek 00100000000000000000000000000000 falters 00000000000000000000000000000000 Png 00100000000000000000000000000000 Grupo 00100000000000000000000000000000 Kwek 00100000000000000000000000000000 1989-1990 00000000000000000000000000000000 McFadden 01000000000000000000000000000000 undone 00000000000000000000000000000000 Guttman 00100000000000000000000000000000 replicate 00000000000000000000000000000000 Staloff 00100000000000000000000000000000 8.36 00000000000000000000000000000000 overhanging 00000000000000000000000000000000 Pamplin 00100000000000000000000000000000 levied 00000011000001001100010000110010 alleviating 00000000000000000000000000000000 indelible 00000000000000000000000000000000 dislocations 00000000000000000000000000000000 paradise 00000000000110101110101100100001 Periodically 00100001001100000000010001110010 verifiable 00000000000000000000000000000000 formulate 00000000110101101111101110110010 97.65 00000000000000000000000000000000 democratization 00000000000111100101110010100111 symmetry 00000000000000000000000000000000 Oldenburg 00100000000000000000000000000000 subskills 00000000000000000000000000000000 fifth-biggest 00000000000000000000000000000000 11th-biggest 00000000000000000000000000000000 best-seller 00000000000000000000000000000000 Notably 00100000000001111011000001110010 croaker 00000000000000000000000000000000 12,500 00000000000000000000000000000000 lookout 00000000000000000000000000000000 Joachim 00100000000000000000000000000000 spawn 00000000000000000000000000000000 blond 00000000000000110101001000110000 sped 00000000000000000000000000000000 Guenter 00100000000000000000000000000000 closeness 00000000000111000101111100100111 averting 00000000000111111001111101000000 spasms 00000000000000000000000000000000 Slotnick 00100000000000000000000000000000 Basket 00100000000111111011011000111111 cage 00000000000100110100000000001000 forums 00000000000000000000000000000000 830 00000000000000000000000000000000 undertook 00000000000100111011000000010010 gall 00000000000000000000000000000000 democratically 00000000000000000000000000000000 internal-security 00000000000000000000000000000000 rumbling 00000000000000000000000000000000 staunchest 00000000000000000000000000000000 99.90 00000000000000000000000000000000 Kass 00100000000000000000000000000000 Pedone 00100000000000000000000000000000 appreciable 00000000000000000000000000000000 paperboard 00000000000010100100011010110000 Mann 00101111111111101001001000001000 Zane 00100000000000000000000000000000 consumer-oriented 00000000000000000000000000000000 Shoney 00100000000000000000000000000000 guiding 00000000000011000100011000010000 indebtedness 00000000000111100110110010110001 585 00000000000000000000000000000000 Teich 00100000000000000000000000000000 hose 00000000000110000110111000000001 blazing 00000000000000000000000000000000 largest-ever 00000000000000000000000000000000 -who 00000000000000000000000000000000 brat 00000000000000000000000000000000 turbogenerator 00000000000000000000000000000000 overlapping 00000000000011000010000000110000 fist 00000000000010011001110000000001 Utrecht 00100000000000000000000000000000 fourthquarter 00000000000000000000000000000000 Mace 00100000000000000000000000000000 283.8 00000000000000000000000000000000 congestion 00000000000100100110011010100111 pilings 00000000000000000000000000000000 disaster-contingency 00000000000000000000000000000000 Pickering 00100000000000000000000000000000 reconstruction 00000000000000000010101101001111 Mehrens 00100000000000000000000000000000 Hollister 00100000000000000000000000000000 Donna 00100000000000000011001000011000 Avedisian 00100000000000000000000000000000 Buyer 00100000000111111110101010110101 coincidental 00000000000000000000000000000000 Bandler 00100000000000000000000000000000 hoses 00000000000000000000000000000000 Byrum 00100000000000000000000000000000 Capitalists 00100000000111101010111011101001 replicated 00000000000000000000000000000000 MIG-1 01000000000000000000000000000000 tiptoe 00000000000000000000000000000000 Beatles 00100000000000000000000000000000 Grano 00100000000000000000000000000000 18.2 00000000000000000000000000000000 57.8 00000000000000000000000000000000 tax-exempts 00000000000000000000000000000000 10:10 00000000000000000000000000000000 2.69 00000000000000000000000000000000 Kakumaru 00100000000000000000000000000000 narrowest 00000000000000000000000000000000 herons 00000000000000000000000000000000 impairment 00000000000000000000000000000000 skids 00000000000000000000000000000000 Centre 00100000000000000110100010100101 misstates 00000000000000000000000000000000 solid-waste 00000000000000000000000000000000 Coverage 00100000000110101110011010100111 Novato 00100000000000000000000000000000 hug 00000000000001000101001010110111 26.875 00000000000000000000000000000000 sauce 00000000000101101010111000000001 Aeronautical 00100000000000000000000000000000 middling 00000000000000000000000000000000 Cher 00100000000000000000000000000000 imagery 00000000000111011101101001100111 respondent 00000000000000000000000000000000 wag 00000000000000000000000000000000 nutritional 00000000000011010001100000110000 Near 00100000000000110000000000001010 petroleum-related 00000000000000000000000000000000 117.3 00000000000000000000000000000000 Bolling 00100000000000000000000000000000 dense 00000000000011101111011010010000 Fabi 00100000000000000000000000000000 Impose 00100000000001011111101110110010 -China 01000000000000000000000000000000 property-casualty 00000000000000000000000000000000 TRADING 01000000000000000000000001011101 befuddled 00000000000000000000000000000000 slackening 00000000000000000000000000000000 170,330,000 00000000000000000000000000000000 44.625 00000000000000000000000000000000 armadillos 00000000000000000000000000000000 Freed 00100001100011010100010000110010 81.50 00000000000000000000000000000000 ULI 01000000000000000000000000000000 129.49 00000000000000000000000000000000 Kasler 00100000000000000000000000000000 Conning 00100000000000000000000000000000 102.625 00000000000000000000000000000000 COTTON 01000000000111110011101110110000 post-quake 00000000000000000000000000000000 5.81 00000000000000000000000000000000 4.47 00000000000000000000000000000000 metrics 00000000000000000000000000000000 well-publicized 00000000000000000000000000000000 mathematician 00000000000110001111011110110101 Luthringshausen 00100000000000000000000000000000 outlying 00000000000000000000000000000000 Ghana 00100000000110100101011101101000 Daggs 00100000000000000000000000000000 Cargill 00100000000011111110111100101000 Vyas 00100000000000000000000000000000 Tator 00100000000000000000000000000000 Tivoli 00100000000000000000000000000000 129 00000000000000000000000000000000 Biaggi 00101111111110111100111010001000 erected 00000001111001001100010000110010 Toms 00100000000000000000000000000000 dislocation 00000000000000000000000000000000 shuts 00000000000000000000000000000000 23.625 00000000000000000000000000000000 psychiatrist 00000000000110011011011110110101 ground-handling 00000000000000000000000000000000 demonstrating 00000000000110110001110101000000 Knoxville 00100000000110010100101001101000 Installation 00100000000111111001111101001111 -will 00000000000000000000000000000000 forbade 00000000000000000000000000000000 sinking-fund 00000000000000000000000000000000 awake 00000000000000000000000000000000 Baa2 00100000000000000000000000000000 Marx 00101111111111001101001000001000 egalitarianism 00000000000000000000000000000000 hypnotized 00000000000000000000000000000000 purported 00000000000010000100011000010000 Q 00100000000000000000000000000000 instructional 00000000000000000000000000000000 15.97 00000000000000000000000000000000 sheepskin 00000000000000000000000000000000 Trivest 00100000000000000000000000000000 Furuta 00100000000000000000000000000000 snorts 00000000000000000000000000000000 Bruner 00100000000000000000000000000000 traumas 00000000000000000000000000000000 culminated 00000000101101000110001000110010 complacency 00000000000111011010110010100111 spans 00000000011111001111000000010010 megabytes 00000000000000000000000000000000 Traverse 00100000000000000000000000000000 Chemex 00100000000000000000000000000000 Comcast 00100000000110101100111100101000 A.F. 01000000000000000000000000000000 screws 00000000000000000000000000000000 Agricola 00100000000000000000000000000000 Immune 00100000000100001011010101010000 Response 00100000000111111111111101010111 Marsam 00100000000000000000000000000000 reclaims 00000000000000000000000000000000 Rival 00100000000001100110101001000000 complication 00000000000000000000000000000000 despair 00000000000111100010111010100111 asylum 00000000000101010000001100100111 Wylie 00100000000000000000000000000000 Princess 00100000000111110010101100100001 Monaco 00100000000110100100111101101000 Alternative 00100000000000000000101100100111 Minimum 00100000000111111100011100010000 skipped 00000000000000000000000000000000 258 00000000000000000000000000000000 enrich 00000000000000000000000000000000 CDBG 01000000000000000000000000000000 Pending 00100000000000001100010001000000 22.50 00000000000000000000000000000000 achieves 00000000000000000000000000000000 24.25 00000000000000000000000000000000 shuttled 00000000000000000000000000000000 bordering 00000000000000000000000000000000 730,070 00000000000000000000000000000000 Moving 00100000000111101001100001000000 face-saving 00000000000000000000000000000000 Must 00100000000000000010010110010010 justifying 00000000000000000000000000000000 stimulation 00000000000000000000000000000000 boycotted 00000000000000000000000000000000 magnet 00000000000011011100100000100001 Aspin 00100000000000011100011010001000 market-oriented 00000000000000000000000000000000 Armenians 00100000000101001100111000110011 16th 00000000000000000000000000000000 Twice 00100000000111101010011011000000 peaking 00000000000111001111000001000000 Ozal 00101111111101101110010010001000 earmark 00000000000000000000000000000000 Lindner 00101111111000111110010010001000 overemphasize 00000000000000000000000000000000 U.S.-built 01000000000000000000000000000000 Eclipse 00100000000000000000000000000000 Reginald 00100000000000000000000000000000 Mayo 00100000001010011000000000001000 near-panic 00000000000000000000000000000000 Emery 00100000000100100001110000001000 unhinged 00000000000000000000000000000000 Sibra 00100000000000000000000000000000 doctorate 00000000000111011001101010100111 ADVERTISING 01000000000000000001101010100001 long-haul 00000000000000000000000000000000 solicitous 00000000000000000000000000000000 widest 00000000000000000000000000000000 McCann 01001111111010011101000100001000 Organic 00100000000010011100101010110000 props 00000000000000000000000000000000 Damage 00100000000111101111001100100111 formidable 00000000000000010000000010010000 top-10 00000000000000000000000000000000 Belier 00100000000000000000000000000000 Laszlo 00100000000000000000000000000000 sympathizers 00000000000110110011110000110011 Todt 00100000000000000000000000000000 155,650,000 00000000000000000000000000000000 Sixty 00100000000110111111000011000000 drown 00000000000000000000000000000000 J'ai 00100000000000000000000000000000 Hecla 00100000000000000000000000000000 earnings-related 00000000000000000000000000000000 butterfly 00000000000000000000000000000000 Corona 00100000000111001100110100101000 Dividend-related 00100000000000000000000000000000 proverbial 00000000000011110000010011010000 Newell 00100000001010001111111100101000 unfair-trade 00000000000000000000000000000000 gripped 00000000000000000000000000000000 ombudsman 00000000000000000000000000000000 retrieval 00000000000000010101100001100001 CF6-6 01000000000000000000000000000000 Pawlowski 00100000000000000000000000000000 capital-spending 00000000000000000000000000000000 X. 00101111111110001100101011011000 Mitsuru 00100000000000000000000000000000 Galveston-Houston 01000000000000000000000000000000 perilously 00000000000000000000000000000000 81%-owned 00000000000000000000000000000000 2,850,000 00000000000000000000000000000000 smokestack 00000000000000000000000000000000 glacial 00000000000000000000000000000000 building-products 00000000000000000000000000000000 304 00000000000000000000000000000000 Candy 00100000000000101011111010110000 subjective 00000000000100001101000000010000 Hemingway 00100000000000000000000000000000 vinyl 00000000001100011100101010110000 checkbook 00000000000000000000000000000000 worksheets 00000000000000000000000000000000 reconstruct 00000000000000000000000000000000 Tilly 00100000000000000000000000000000 plow 00000000011010010110010110110010 applauding 00000000000000000000000000000000 booze 00000000000000000000000000000000 352 00000000000000000000000000000000 Dunde 00100000000000000000000000000000 rebellious 00000000000000000000000000000000 retorts 00000000000000000000000000000000 disparaging 00000000000000000000000000000000 worriers 00000000000000000000000000000000 ice-core 00000000000000000000000000000000 schoolchildren 00000000000111000001111000110011 pianos 00000000000000000000000000000000 Nobuyuki 00100000000000000000000000000000 1900 00000000000000000000000000000000 professionally 00001000011000000000010001110010 Climate 00100000000111111011101001100111 egregious 00000000000000000100110100010000 slinky 00000000000000000000000000000000 technologically 00000000000101101000000001110010 Ravine 00100000000000000000000000000000 WILL 01000000000000000000001110010010 centrifugal 00000000000000000000000000000000 powdered 00000000000000000000000000000000 squaring 00000000000000000000000000000000 chalk 00000000000000000000000000000000 Monthly 00100000000000110101000101010000 egg-breaking 00000000000000000000000000000000 disaster-recovery 00000000000000000000000000000000 sensors 00000000000111101011001111001001 allocations 00000000000111100010111100000011 Takuro 00100000000000000000000000000000 awakened 00000000000000000000000000000000 construction-related 00000000000000000000000000000000 1-to-1 00000000000000000000000000000000 grazing 00000000000010000101100001100001 329 00000000000000000000000000000000 prowl 00000000000000000000000000000000 capturing 00000000000101110011111101000000 rugged 00000000000110111000001000110000 ostensibly 00000000011000001011000001110010 315,000 00000000000000000000000000000000 Kleinaitis 00100000000000000000000000000000 141 00000000000000000000000000000000 180,000 00000000000000000000000000000000 boldly 00000001011000000000010001110010 retention 00000000000000010011101101001111 28.8 00000000000000000000000000000000 986 00000000000000000000000000000000 Farney 00100000000000000000000000000000 most-livable 00000000000000000000000000000000 Bean 00100000000111000100011010110000 82.5 00000000000000000000000000000000 once-cozy 00000000000000000000000000000000 racking 00000000000000000000000000000000 blessed 00000000111011110110010000110010 mechanized 00000000000000000000000000000000 Gayle 00100000000000000000000000000000 originating 00000000000000000000000000000000 McAuley 01000000000000000000000000000000 Eminase 00100000000000000000000000000000 alcoholic 00000000000110001010101010110000 debatable 00000000001001001110010001110010 Sadly 00100000000011001000001001110010 infertility 00000000000000000000000000000000 ranchers 00000000000010101101111000110011 apathetic 00000000000000000000000000000000 fodder 00000000000000011110110000110010 dictates 00000000001111010011000000010010 Clanahan 00100000000000000000000000000000 divisiveness 00000000000000000000000000000000 cost-benefit 00000000000000000000000000000000 infant-mortality 00000000000000000000000000000000 Micronic 00100000000000000000000000000000 mayors 00000000000011001100111000110011 antiviral 00000000000000000000000000000000 Humphries 00100000000000000000000000000000 accorded 00000000000000111100010000110010 Mothers 00100000000110100010011100110011 toughness 00000000000000000000000000000000 somber 00000000000010001101000010010000 Thank 00100000000110111010100110110010 Forest-products 00100000000000000000000000000000 goodness 00000000000111100100111110000001 reappraisal 00000000000000000000000000000000 Ditch 00100000000101010101111010110111 housed 00000000000000011110010000110010 110-lawyer 00000000000000000000000000000000 Bain 00101111111110111111111010101000 4-0 00000000000000000000000000000000 inertia 00000000000110010000100100101000 FORMER 01000000000000000000101001110000 spun-off 00000000000000000000000000000000 PROSECUTOR 01000000000000001001101010110101 ravages 00000000000000000000000000000000 Oprah 00100000000000000000000000000000 Winfrey 00100000000000000000000000000000 Beulah 00100000000000000000000000000000 15.4 00000000000000000000000000000000 JMB 01000000000000000000000000000000 profiteering 00000000000000000000000000000000 unmet 00000000000000011011000110010000 alluded 00000000000000000000000000000000 previews 00000000000000000000000000000000 layers 00000000000110100001000100101111 mistrial 00000000000000000000000000000000 Spruell 00100000000000000000000000000000 Genova 00100000000000000000000000000000 arbitrage-related 00000000000000000000000000000000 documentation 00000000000111010110011010100111 manipulated 00000000110111010100010000110010 Wanted 00100000000111110011101000110010 Heyman 00101111111100001010010010001000 legal-services 00000000000000000000000000000000 SENATE 01000000000000000010101110100101 59.7 00000000000000000000000000000000 618.1 00000000000000000000000000000000 corridors 00000000000100000111111000001111 pales 00000000000000000000000000000000 unclassified 00000000000000000000000000000000 calculators 00000000000000000000000000000000 83.7 00000000000000000000000000000000 21-month 00000000000000000000000000000000 pre-refunded 00000000000000000000000000000000 Hubble 00100000000000000000000000000000 Hueglin 00100000000000000000000000000000 Gabriele 00100000000000000000000000000000 Discovery 00100000000111101100011101001111 Pretl 00100000000000000000000000000000 farm-trade 00000000000000000000000000000000 JURY 01000000000000001001101000010111 11.38 00000000000000000000000000000000 Argus 00100000000111101111100110100001 space-science 00000000000000000000000000000000 skim 00000000000000000000000000000000 Anti-nuclear 00100000000000000000000000000000 binoculars 00000000000000000000000000000000 Aimed 00100000000000000101110100110010 CD-type 01000000000000000000000000000000 tow 00000000000101011010001010110000 highest-yielding 00000000000000000000000000000000 Witman 00100000000000000000000000000000 Advisor 00100000000111110101010110110101 renews 00000000000000000000000000000000 0.07 00000000000000000000000000000000 pad 00000000000010001000100010110111 Io 00100000000000000000000000000000 HOUSE 01000000000000000000100110100101 gravity 00000000001111100101110010100111 inherently 00000000000110111000000001110010 rosier 00000000000000000000000000000000 mobster 00000000000000000000000000000000 cranked 00000000000000000000000000000000 Median 00100000000000101100011100010000 landslides 00000000000000000000000000000000 LAWYERS 01000000000000000111000010110011 year-round 00000000000000000000000000000000 onset 00000000000111111101011100001111 unawareness 00000000000000000000000000000000 insulins 00000000000000000000000000000000 erudite 00000000000000000000000000000000 motor-control 00000000000000000000000000000000 13,120 00000000000000000000000000000000 Bundy 00100000000000000000000000000000 31.9 00000000000000000000000000000000 Disaster 00100000000111100001101101100111 Richmond-Watson 01000000000000000000000000000000 Indianapolis-based 00100000000000000000000000000000 Humulin 00100000000000000000000000000000 6.46 00000000000000000000000000000000 brewery 00000000000111000001111010110000 Novo 00100000000000000000000000000000 2.16 00000000000000000000000000000000 ill-conceived 00000000000000000000000000000000 Himebaugh 00100000000000000000000000000000 enraged 00000000000000000000000000000000 668 00000000000000000000000000000000 822 00000000000000000000000000000000 224.1 00000000000000000000000000000000 Helped 00100000000000000011010000110010 overused 00000000000000000000000000000000 frenzied 00000000000000011010011100010000 bestseller 00000000000000000000000000000000 bookstore 00000000000110101001111010110000 high-pressure 00000000000000000000000000000000 NOTE 01000000000111101111011010110111 thrusting 00000000000110010111001101000000 co-op 00000000000000000000000000000000 0.56 00000000000000000000000000000000 squarely 00000000101000010000010001110010 Negative 00100000000000000010001010010000 Willman 00100000000000000000000000000000 submission 00000000000011011110011010100111 1.66 00000000000000000000000000000000 WHNP 01000000000000000000000000000000 underfunded 00000000000100100000101001000000 sclerosis 00000000000000000000000000000000 examines 00000010110011100011000000010010 on-line 00000000000000000000000000000000 N.M.-based 01000000000000000000000000000000 Freeze 00100000000111111010001010110111 comparably 00000000000000000000000000000000 9.29 00000000000000000000000000000000 169 00000000000000000000000000000000 287 00000000000000000000000000000000 Hibbard 00100000000000000000000000000000 18th-century 00000000000000000000000000000000 Risley 00100000000000000000000000000000 particulars 00000000000000000000000000000000 31.5 00000000000000000000000000000000 Jarvis 00100000000000000000000000000000 breweries 00000000000011101011000000101001 pubs 00000000000010000111110001100011 troughed 00000000000000000000000000000000 Littleboy 00100000000000000000000000000000 blended 00000000000000001110001001000000 176,100,000 00000000000000000000000000000000 degenerated 00000000000000000000000000000000 Differences 00100000000111101111111010100111 Anyway 00100000000001100100010001110010 3,900 00000000000000000000000000000000 deal-making 00000000000000000000000000000000 directions 00000000000101010011001110100011 crook 00000000000000000000000000000000 51.9 00000000000000000000000000000000 irresponsibly 00000000000000000000000000000000 sinister 00000000000000000000000000000000 Percy 00100000000000000000000000000000 Gollust 00100000000000000000000000000000 5.58 00000000000000000000000000000000 trolley 00000000000000000000000000000000 Hardee 00100000000110110101111110101000 Quincy 00101111111011001001000100001000 indecisive 00000000000000000000000000000000 four-hour 00000000000000000000000000000000 Schumacher 00100000000000000000000000000000 PDT 01000000000000000000000000000000 English-speaking 00100000000000000000000000000000 0.50 00000000000000000000000000000000 Paramus 00100000000000000000000000000000 discontinuation 00000000000000000000000000000000 gateway 00000000000111111111100100100001 Scalfaro 00100000000000000000000000000000 decisively 00000000001001000000010001110010 predators 00000000000000000000000000000000 retreats 00000000000000000000000000000000 school-board 00000000000000000000000000000000 Pedroli 00100000000000000000000000000000 Refco 00100000000001001001101000101000 championed 00000000010001000101010000110010 cookies 00000000000111111001111001100011 HEI 01000000000000000000000000000000 62.7 00000000000000000000000000000000 Rendell 00100000000000000000000000000000 air-interdiction 00000000000000000000000000000000 sanitary 00000000000011101100101010110000 childbirth 00000000000000000000000000000000 Kathie 00100000000000000000000000000000 prospered 00000000001000111010110000110010 menus 00000000000000000000000000000000 spine 00000000000110011000110000000001 3.12 00000000000000000000000000000000 gestational 00000000000000000000000000000000 premise 00000000000111110101110000001111 dismay 00000000000100101110111010100111 3.57 00000000000000000000000000000000 317.7 00000000000000000000000000000000 Handicapped 00100000000111111010101000110000 Equities 00100000000111101001011010100001 astonishment 00000000000010001110111010100111 167 00000000000000000000000000000000 753 00000000000000000000000000000000 overtly 00000000000000000000000000000000 83.8 00000000000000000000000000000000 Swift 00100000000000100110011010010000 sensory 00000000000000000000000000000000 recurrence 00000000000111111111000110111111 shortening 00000000000000000000000000000000 guardian 00000000000111110111100100100001 FFr1 01000000000000000000000000000000 appropriateness 00000000000000000000000000000000 Bailit 00100000000000000000000000000000 2013 00000000000000000000000000000000 prior-review 00000000000000000000000000000000 Eurostat 00100000000000000000000000000000 farce 00000000000000000000000000000000 employee-benefit 00000000000000000000000000000000 deepened 00000000000110000110001000110010 Kong-dollar 00100000000000000000000000000000 191.75 00000000000000000000000000000000 knife 00000000000111010101110000000001 Hiroyuki 00100000000000000000000000000000 Wada 00100000000000000000000000000000 reasserting 00000000000000000000000000000000 swallowing 00000000000000000000000000000000 neurosurgeon 00000000000000000000000000000000 27,000 00000000000000000000000000000000 seventh-largest 00000000000000000000000000000000 dumbfounded 00000000000000000000000000000000 ARE 01000000000000000000000100010010 sniffed 00000000000000000000000000000000 intractable 00000000000000001101110100010000 Cheng 00100000000000000000000000000000 HERE 01000000000000010100010001110010 reflexively 00000000000000000000000000000000 Erwin 00100000000000000000000000000000 Aoki 00100000000000000000000000000000 Suggestion 00100000000111111011110000001111 nonproductive 00000000000000000000000000000000 insert 00000001110010111111110110110010 Shaevitz 00100000000000000000000000000000 1938 00000000000000000000000000000000 Check 00100000000111100110001010110111 Ewing 00100000000000000000000000000000 trampled 00000000000000000000000000000000 courtship 00000000000000000000000000000000 Enter 00100000000111111011011110110010 stride 00000000000110110010001000110000 populism 00000000000000000000000000000000 newsprints 00000000000000000000000000000000 breezy 00000000000000000000000000000000 2.09 00000000000000000000000000000000 underprivileged 00000000000000000000000000000000 miscellaneous 00000000000001101111010000110000 Joaquin 00100000000000000000000000000000 Ex-Im 01000000000000000000000000000000 Bankshares 00100000000110100010010000101001 haughty 00000000000000000000000000000000 bluntly 00000000010011000001001001110010 traumatized 00000000000000000000000000000000 13.05 00000000000000000000000000000000 billion-plus 00000000000000000000000000000000 inconvenience 00000000000000000000000000000000 Vietnamese-backed 00100000000000000000000000000000 Mentor 00100000000111110010100100100001 obstructed 00000000000000000000000000000000 2.0 00000000000000000000000000000000 blocker 00000000000000000000000000000000 Lucas 00101111111000100101001000001000 calcium 00000000000111111010110000100001 Procardia 00100000000000000000000000000000 multiplied 00000000000010111010110000110010 41.76 00000000000000000000000000000000 Nowak 00100000000000000000000000000000 527.39 00000000000000000000000000000000 Norbert 00100000000000000000000000000000 Braeuer 00100000000000000000000000000000 Hessische 00100000000000000000000000000000 reappraised 00000000000000000000000000000000 673 00000000000000000000000000000000 Girozentrale 00100000000000000000000000000000 9.324 00000000000000000000000000000000 628 00000000000000000000000000000000 664 00000000000000000000000000000000 15.80 00000000000000000000000000000000 723 00000000000000000000000000000000 hallway 00000000000000000000000000000000 10.03 00000000000000000000000000000000 reappraise 00000000000000000000000000000000 1993-2009 00000000000000000000000000000000 Chao 00100000000000000000000000000000 inaccessible 00000000000000000000000000000000 owl 00000000000000000000000000000000 higher-than-expected 00000000000000000000000000000000 Fueling 00100000000001010111011101000000 Mazowiecki 00100000000000000000000000000000 Viewers 00100000000011100000111000110011 cheering 00000000000000101110101001000000 keyboards 00000000000000000000000000000000 5.83 00000000000000000000000000000000 pay-cable 00000000000000000000000000000000 Brake 00100000000010001010110110110111 Biggest 00100000000000000001110011010000 mayonnaise 00000000000000000000000000000000 3:25 00000000000000000000000000000000 Duck 00100000000000010001110100100001 Backed 00100000000010001111010000110010 162.1 00000000000000000000000000000000 2.01 00000000000000000000000000000000 astride 00000000000000000000000000000000 GR8FLRED 01000000000000000000000000000000 sunglasses 00000000000100101100111001100011 melanin 00000000000000000000000000000000 1:11 00000000000000000000000000000000 9.34 00000000000000000000000000000000 Beddall 00100000000000000000000000000000 Clairol 00100000000000000000000000000000 overbid 00000000000000000000000000000000 rankings 00000000000111101010100000100011 spender 00000000000000000000000000000000 Tadeusz 00100000000000000000000000000000 55th 00000000000000000000000000000000 Diego-based 00100000000000000000000000000000 dissented 00000000111111011110001000110010 SF 01000000000000000000000000000000 11:59 00000000000000000000000000000000 Biosource 00100000000000000000000000000000 Stals 00100000000000000000000000000000 Moscom 00100000000000000000000000000000 Westminister 00100000000000000000000000000000 Events 00100000000111111111101010100011 funeral 00000000000111110100100000100001 jelled 00000000000000000000000000000000 non-executive 00000000000000000000000000000000 wielding 00000000000111110100100101000000 overcomes 00000000000000000000000000000000 flatness 00000000000000000000000000000000 56.1 00000000000000000000000000000000 incense 00000000000000000000000000000000 much-publicized 00000000000000000000000000000000 inventors 00000000000000000000000000000000 last-place 00000000000000000000000000000000 parting 00000000000000000000000000000000 premiering 00000000000000000000000000000000 distract 00000000000010011011101110110010 championships 00000000000000101011010111111001 nonoperating 00000000000000000000000000000000 81.9 00000000000000000000000000000000 trench 00000000000000000000000000000000 spoiler 00000000000000000000000000000000 Audi 00100000000000010011111100001000 Scorpios 00100000000000000000000000000000 Lincoln-Mercury 01000000000000000000000000000000 30.84 00000000000000000000000000000000 Watsonville 00100000000000000000000000000000 disaffected 00000000000000000000000000000000 Salespeople 00100000000001000100000000110011 sciences 00000000000000000010100001001001 CIM 01000000000000000000000000000000 shoo-in 00000000000000000000000000000000 3.26 00000000000000000000000000000000 Pershare 00100000000000000000000000000000 Beauty 00100000000111001011111010110000 anti-white 00000000000000000000000000000000 Cheers 00100000000100100111110101100011 Anchorage 00100000000101110011111001101000 search-and-seizure 00000000000000000000000000000000 contacting 00000000000000000000000000000000 0.89 00000000000000000000000000000000 non-trade 00000000000000000000000000000000 WHAT 01000000000000000001101101000010 275,000 00000000000000000000000000000000 Outokumpu 00100000000000000000000000000000 46.8 00000000000000000000000000000000 soonest 00000000000000000000000000000000 Auditors 00100000000101001010101010110011 pruning 00000000000000000000000000000000 Takes 00100000000010001011000000010010 Curiously 00100000000111100100111011101000 laughingstock 00000000000000000000000000000000 642 00000000000000000000000000000000 conceive 00000000000000000000000000000000 Brockville 00100000000000000000000000000000 jack 00001111111000000001011010011000 Peasant 00100000000000101000101000110000 Basketball 00100000000000001001001100100001 segregate 00000000000000000000000000000000 mightily 00000000000000000000000000000000 3.875 00000000000000000000000000000000 disgust 00000000000000000000000000000000 sows 00000000000000000000000000000000 hour-long 00000000000000000000000000000000 Francaises 00100000000000000000000000000000 vaguely 00000000100101101000000001110010 exclusionary 00000000000000000000000000000000 Transvaal 00100000000000000000000000000000 disgusted 00000000000000000000000000000000 Bourses 00100000000100100000110011100011 crookery 00000000000000000000000000000000 initialing 00000000000000000000000000000000 six-foot 00000000000000000000000000000000 telexes 00000000000000000000000000000000 peruse 00000000000000000000000000000000 Elf 00100000000101010111110110101000 Aquitaine 00100000000010101010001010101000 Conradies 00100000000000000000000000000000 Eavesdropping 00100000000000000000000000000000 HelmsleySpear 01000000000000000000000000000000 appreciates 00000010001010000011000000010010 budget-priced 00000000000000000000000000000000 localized 00000000000000000000000000000000 38.7 00000000000000000000000000000000 54.3 00000000000000000000000000000000 airs 00000000000011101111000000010010 Veritrac 00100000000000000000000000000000 276,334 00000000000000000000000000000000 clarifying 00000000000000000000000000000000 verify 00000000000111001100011110110010 compressed 00000000001111110101101001000000 Donnelly 00101111111100110110100010001000 Counter 00100000000111111011110110110010 Spy 00100000000100001000001010110000 32.125 00000000000000000000000000000000 Elgin 00100000000111101111000100101000 335 00000000000000000000000000000000 reproductive 00000000000000000000000000000000 Dutch-based 00100000000000000000000000000000 conditionally 00000000000000000000000000000000 microbes 00000000000000000000000000000000 Bacillus 00100000000000000000000000000000 subtilis 00000000000000000000000000000000 654 00000000000000000000000000000000 showings 00000000000000000000000000000000 Siemienas 00100000000000000000000000000000 infidelity 00000000000000000000000000000000 Lordstown 00100000000000000000000000000000 confederation 00000000000111101101111000001111 sprays 00000000000000000000000000000000 beeping 00000000000000000000000000000000 two-party 00000000000000000000000000000000 scenic 00000000000000000000000000000000 highest-volume 00000000000000000000000000000000 bridging 00000000000000000000000000000000 Jasper 00100000000000000000000000000000 eavesdropping 00000000000000000000000000000000 ACLU 01000000000000000000000000000000 video-viewing 00000000000000000000000000000000 Declaration 00100000000111101100001011100111 correcting 00000000000101110011011101000000 DeGol 01000000000000000000000000000000 breached 00000000000011011011111001000000 Reno 00100000000111000001101001101000 supervises 00000000000011011101000000010010 furiously 00000000000000000000000000000000 capping 00000000000000000000000000000000 Missile 00100000000000000010001010110000 self-aggrandizing 00000000000000000000000000000000 roustabout 00000000000000000000000000000000 Ong 00100000000000000000000000000000 three-foot 00000000000000000000000000000000 Dang 00100000000000000000000000000000 Eye 00100000000101111111111001100111 salesperson 00000000000000000000000000000000 desolate 00000000000000000000000000000000 Appel 00100000000000000000000000000000 weekends 00000000000101001010111001100011 draconian 00000000000000000000000000000000 drillers 00000000000000000000000000000000 pointless 00000000000000000000000000000000 crust 00000000000000000000000000000000 wallets 00000000000000000000000000000000 full-power 00000000000000000000000000000000 flapping 00000000000000000000000000000000 nuclear-power 00000000000000000000000000000000 911 00000000000000000000000000000000 Basil 00100000000111111100001000011000 garden-variety 00000000000000000000000000000000 Cremonie 00100000000000000000000000000000 307 00000000000000000000000000000000 Ads 00100000000111101111000101100011 gene-splicing 00000000000000000000000000000000 transmitter 00000000000000000000000000000000 predictability 00000000000000000000000000000000 Rothman 00101111111100110101000010001000 Zaves 00100000000000000000000000000000 veritable 00000000000000000000000000000000 bottomless 00000000000000000000000000000000 1.5920 00000000000000000000000000000000 Marchand 00100000000000000000000000000000 hauling 00000000000011101010110001000000 Fighting 00100000000111001011110101000000 kingpin 00000000000000000000000000000000 hostilities 00000000000101110111111010100111 Falkland 00100000000000000000000000000000 lower-priority 00000000000000000000000000000000 Hisham 00101111111010100110000010011000 Secretary-General 01000000000000000000000000000000 Dissident 00100000000000100000101000110000 BONDS 01000000000111101101100010000111 STOCKS 01000000000111101110111011100011 shareholder-owned 00000000000000000000000000000000 self-imposed 00000000000000000000000000000000 bury 00000000000011001011111110110010 toured 00000010001101000101010000110010 Accident 00100000000111101101111001100111 Gabele 00100000000000000000000000000000 J 00100000000000000000000000000000 clarifications 00000000000000000000000000000000 advancer 00000000000000000000000000000000 Zimbabwe 00100000000111011001011101101000 Rayon 00100000000000000000000000000000 vector 00000000000000000000000000000000 Sniper 00100000000000011100110000000001 Dobson 00101111111000110111110001001000 foreman 00000000000000100110000000001000 Shimizu 00100000000111010010110000001000 criticizing 00000000000001100001001101000000 2,360 00000000000000000000000000000000 Yoshiaki 00100000000000000000000000000000 stifling 00000000000011101101010001000000 3.97 00000000000000000000000000000000 Farooquee 00100000000000000000000000000000 Kadane 00100000000000000000000000000000 111.48 00000000000000000000000000000000 fade 00000000001101111101010110110010 lore 00000000000000000000000000000000 inflicted 00000000111001001100010000110010 inspirational 00000000000000000000000000000000 1988-89 00000000000000000000000000000000 fertile 00000000000001010001000010010000 toad 00000000000000000000000000000000 320.5 00000000000000000000000000000000 Aegis 00100000000111100111111000010000 129.6 00000000000000000000000000000000 McAllen 01000000000000000000000000000000 less-serious 00000000000000000000000000000000 kilograms 00000000000000000000000000000000 50.5 00000000000000000000000000000000 cross-connect 00000000000000000000000000000000 booms 00000000000000000000000000000000 Civilization 00100000000111111001010010100111 114.4 00000000000000000000000000000000 thermal 00000000000101011100101010110000 PROPERTIES 01000000000110101101110000001001 holes 00000000000111101110000001100011 Sonet 00100000000000000000000000000000 dwelling 00000000000000000000000000000000 CARE 01000000000010000110010110111001 359 00000000000000000000000000000000 Electricity 00100000000000001100010000100001 Pride 00100000000111011110110010100111 22.9 00000000000000000000000000000000 29.8 00000000000000000000000000000000 UAP 01000000000000000000000000000000 Thacher 00100000000000000000000000000000 insane 00000000000000000000000000000000 Soundview 00100000000000000000000000000000 transplanting 00000000000000000000000000000000 Product 00100000000000001010011000100001 buttoned-down 00000000000000000000000000000000 Wachtell 00101111111111111110010000101000 11:30 00000000000000000000000000000000 Sunshine 00100000000111001111000100101000 relocated 00000000000000000000000000000000 cowboys 00000000000000001010000100000001 roast 00000000000000000000000000000000 Perth 00100000000000000111111001101000 brag 00000000000000000000000000000000 Archive 00100000000000000000000000000000 181 00000000000000000000000000000000 mansions 00000000000000000000000000000000 prejudices 00000000000000000000000000000000 Southfield 00100000000000000000000000000000 swells 00000000000000010110010101100011 Ashtabula 00100000000000000000000000000000 marriages 00000000001010000101110101100011 Remaining 00100000000001000000010011010000 over-allotment 00000000000000000000000000000000 scientifically 00000000000000000000000000000000 money-laundering 00000000000000000000000000000000 funneling 00000000000101011101111101000000 fictitious 00000000000000111101000000010000 heredity 00000000000000000000000000000000 Easterners 00100000000000000000000000000000 Racial 00100000000000001000000000110000 disc 00000000000010010100001000100001 starvation 00000000000000000000000000000000 non-communists 00000000000000000000000000000000 buyouts 00000000000000010101000111001111 Ignacio 00100000000000000000000000000000 framing 00000000000000000000000000000000 complicates 00000011101110000011000000010010 Penh 00100000000000000000000000000000 pep 00000000000000000110000000100001 Phnom 00100000000000000000000000000000 Preliminary 00100000000000000001001100010000 quits 00000000110101011110001000110010 pediatrician 00000000000000000000000000000000 unaffected 00000000101110000001110000110010 rescission 00000000000000000000000000000000 0.0108 00000000000000000000000000000000 Claimants 00100000000111110101100110110011 compulsions 00000000000000000000000000000000 unworkable 00000000000000000000000000000000 Expo 00100000000000000000000000000000 Hit 00100000000111001010010110110010 formality 00000000000000000000000000000000 clearances 00000000000111011101000100100111 645,000 00000000000000000000000000000000 undergraduate 00000000000010100100110100010000 furthermore 00000000000111111100101011101000 yearlong 00000000000001000101000000010000 Menell 00100000000000000000000000000000 senatorial 00000000000000000000000000000000 empirical 00000000000000000000000000000000 Spahr 00100000000000000000000000000000 Bugs 00100000000111111011010101100011 first-term 00000000000000000000000000000000 powerless 00000000000000000000000000000000 compensated 00000000001101011110110000110010 tiptoed 00000000000000000000000000000000 confers 00000000000000000000000000000000 Gelman 00100000000000000000000000000000 redraw 00000000001000010111111110110010 1932 00000000000000000000000000000000 major-party 00000000000000000000000000000000 166.9 00000000000000000000000000000000 witching 00000000000000011000010101010000 consumer-price 00000000000000000000000000000000 J&L 01000000000000000000000000000000 Treasury-bond 00100000000000000000000000000000 Meltzer 00100000000000000000000000000000 primed 00000000000000000000000000000000 startup 00000000000000000000000000000000 Sulzberger 00100000000000000000000000000000 glimpse 00000000000111110101101000111111 5.29 00000000000000000000000000000000 Arlen 00100000000000000000000000000000 retrial 00000000000000000000000000000000 Aloe 00100000000000000000000000000000 Garn 00101111111100111000111010001000 Regulation 00100000000101001110011010100111 reconfirmation 00000000000000000000000000000000 Marcia 00100000000000000000000000000000 Blacks 00100000000111101010111000110011 LLerena 01000000000000000000000000000000 heterogeneous 00000000000000000000000000000000 Fogg 00100000000000000000000000000000 checkpoints 00000000000000000000000000000000 open-door 00000000000000000000000000000000 drills 00000000000000000000000000000000 confiscating 00000000000000000000000000000000 zero-sum 00000000000000000000000000000000 1986-87 00000000000000000000000000000000 Masaki-Schatz 01000000000000000000000000000000 plague 00000001010100111111110110110010 preparedness 00000000000000000000000000000000 Hixson 00100000000000000000000000000000 Henley 00100000000001111011010100101000 Tort 00100000000001100001000000110000 LaFalce 01001111111111001011111010001000 Plaintiffs 00100000000111110110100110110011 Bronson 00100000000000000000000000000000 fully-diluted 00000000000000000000000000000000 stipulates 00000000000000000000000000000000 enrollees 00000000000000000000000000000000 in-store 00000000000000000000000000000000 Regardless 00100000000111111110101000101111 public-interest 00000000000000000000000000000000 Ports 00100000000111100111110001100011 doling 00000000000000000000000000000000 floral 00000000000000000000000000000000 Chesley 00100000000000000000000000000000 Drivon 00100000000000000000000000000000 20.42 00000000000000000000000000000000 5.11 00000000000000000000000000000000 13.71 00000000000000000000000000000000 tidbits 00000000000000000000000000000000 preserves 00000000000000000000000000000000 entertainers 00000000000000000000000000000000 thanked 00000000000000000000000000000000 satellites 00000000000000001011101001100011 O'Dwyer 01000000000000000000000000000000 Dornan 00100000000000000000000000000000 Steelmakers 00100000000111101111000001110011 bookstores 00000000000111001011110001100011 automakers 00000000000000000000000000000000 stocking 00000000000000000000000000000000 outsized 00000000000000000000000000000000 Alter 00100000000111110000111110110010 Anticipating 00100000000111110110110101000000 Congo 00100000000000000000000000000000 Hersly 00100000000000000000000000000000 43.75 00000000000000000000000000000000 Sailing 00100000000001100111000001000000 Chanel 00100000000000000000000000000000 skipper 00000000000000000000000000000000 ceremonial 00000000000100110001000000010000 assassinated 00000000000000000000000000000000 Yacht 00100000000111000111101100100001 Dublin 00100000000100110111101001101000 handwriting 00000000000000100001110000000001 greenhouses 00000000000000000000000000000000 Bishop 00101111111101011010000000001000 balance-sheet 00000000000000000000000000000000 demolishing 00000000000000000000000000000000 attributing 00000000000000000000000000000000 Got 00100000000011111011000000010010 Hotline 00100000000000000000000000000000 Davy 00100000000000000000000000000000 Sanderson 00100000000000000000000000000000 Whirlpool 00100000001111111111111100101000 lieutenant 00000000001000010111111000101000 frigates 00000000000000000000000000000000 Characters 00100000000101101111110101100011 deadwood 00000000000000000000000000000000 monied 00000000000000000000000000000000 prohibitions 00000000000111001010100100100111 poisons 00000000000000000000000000000000 OFFICIALS 01000000000000000000000100010101 multilayer 00000000000000000000000000000000 texture 00000000000000000000000000000000 Insisting 00100000000110001101111010000010 146.8 00000000000000000000000000000000 home-improvement 00000000000000000000000000000000 random-access 00000000000000000000000000000000 gloss 00000000000111010110110010110111 361,000 00000000000000000000000000000000 Bachman 00100000000000000000000000000000 Liddle 00100000000000000000000000000000 Newcomb 00100000000000000000000000000000 senders 00000000000000000000000000000000 categorized 00000000000000000000000000000000 mutation 00000000000000000000000000000000 Lens 00100000000001000100001000100001 Kodansha 00100000000000000000000000000000 hardcore 00000000000000000000000000000000 Golomb 00100000000000000000000000000000 Francisco-area 00100000000000000000000000000000 Goodwin 00100000000000000000000000000000 dome 00000000000111111011010100101000 Thing 00100000000111111101101100010111 Watertown 00100000000000000000000000000000 Hartwell 00100000000000000000000000000000 Bloomington 00100000000111001011101001101000 SoftLetter 01000000000000000000000000000000 philosophic 00000000000000000000000000000000 birthplace 00000000000000000000000000000000 rests 00000000000000110000100000110010 Tarter 00100000000000000000000000000000 Desktop 00100000000101011000010000110000 Goodfellow 00100000000000000000000000000000 M.A. 01000000000000000000000000000000 Naples 00100000000100000001101001101000 4.80 00000000000000000000000000000000 semi-annually 00000000000000000000000000000000 Callable 00100000000101100110110000110010 72-year-old 00000000000000000000000000000000 patriarch 00000000000000000000000000000000 0.75 00000000000000000000000000000000 Krutchensky 00100000000000000000000000000000 persecution 00000000000000000000000000000000 Sequa 00100000001010111010111100101000 checkbooks 00000000000000000000000000000000 anti-American 01000000000000000000000000000000 comprised 00000000001100101011110000110010 Eaux 00100000000000000000000000000000 428 00000000000000000000000000000000 swoop 00000000000000000000000000000000 12.50 00000000000000000000000000000000 loot 00000000000000000000000000000000 auspices 00000000000111101011011000001111 Ticor 00100000000000000000000000000000 Cuisine 00100000000011011010110100000001 Kafka 00100000000000000000000000000000 Tolstoy 00100000000000000000000000000000 cross-ownership 00000000000000000000000000000000 resurrected 00000000000000000000000000000000 liquids 00000000000110111101100001100001 blini 00000000000000000000000000000000 right-to-lifers 00000000000000000000000000000000 single-issue 00000000000000000000000000000000 Stelzer 00100000000000000000000000000000 Mahe 00100000000111101010010010110000 defected 00000000000100101011101000110010 unimportant 00000000000000000000000000000000 waffle 00000000000000000000000000000000 20-minute 00000000000000000000000000000000 monopolized 00000000000000000000000000000000 absolutism 00000000000000000000000000000000 consistency 00000000000110101011110010100111 flag-burning 00000000000000000000000000000000 discomfort 00000000000100111010111010100111 loops 00000000000000000000000000000000 Wirthlin 00100000000000000000000000000000 44,877 00000000000000000000000000000000 squinting 00000000000000000000000000000000 Kegler 00100000000000000000000000000000 Wheels 00100000000111101100110101100011 Barbie 00100000000111001101101100100001 demoted 00000000000000000000000000000000 Joanne 00100000000000000000000000000000 sampled 00000000000000000000000000000000 Newsom 00100000000000000000000000000000 Pymm 00100000000000011011101100101000 well-stated 00000000000000000000000000000000 306.6 00000000000000000000000000000000 endangerment 00000000000000000000000000000000 poetry 00000000001101100101110010100111 rushes 00000000000000000000000000000000 pre-empt 00000000000000000000000000000000 Holtzman 00100000000000000000000000000000 Vesoft 00100000000000000000000000000000 luxurious 00000000000000000000000000000000 pollen-inhibiting 00000000000000000000000000000000 39.2 00000000000000000000000000000000 scapegoat 00000000000000000000000000000000 11.60 00000000000000000000000000000000 shoving 00000000000000000000000000000000 Select 00100000000111100110010110110000 U.S.-U.S.S.R. 01000000000000000000000000000000 convening 00000000000000000000000000000000 foray 00000000000110001111110001100111 Zhao 00101111111100101010000100001000 perils 00000000000101111111011000001111 flocking 00000000000000000000000000000000 345-47 00000000000000000000000000000000 Toward 00100000000000000001000000001010 doubles 00000000000111111010011011000000 constitutionally 00000000110100101000000001110010 ball-bearing 00000000000000000000000000000000 Hans-Dietrich 01000000000000000000000000000000 run-down 00000000000000000000000000000000 Disabled 00100000000110111010101000110000 15.72 00000000000000000000000000000000 10.35 00000000000000000000000000000000 complacent 00000000000000111111110000110010 holdouts 00000000000000000000000000000000 Respect 00100000000110111110000110110010 Knowledgeable 00100000000101001111110000110010 roadbed 00000000000000000000000000000000 830,000 00000000000000000000000000000000 rivers 00000000000101011110000000001000 footwear 00000000000010011011111010110000 368.4 00000000000000000000000000000000 Booker 00100000000000000000000000000000 Rifle 00100000000000100100100000100001 Shareholder 00100000000000000000111100010000 simulates 00000000101010110001000000010010 783 00000000000000000000000000000000 2.66 00000000000000000000000000000000 99.9 00000000000000000000000000000000 Sebastian 00100000000000000000000000000000 453 00000000000000000000000000000000 293 00000000000000000000000000000000 73.5 00000000000000000000000000000000 refuted 00000000000000000000000000000000 prerogative 00000000000000000000000000000000 made-for-TV 01000000000000000000000000000000 porcelain 00000000000000000000000000000000 WTXF 01000000000000000000000000000000 debtholders 00000000000000000000000000000000 piped 00000000000000000000000000000000 deep-pocketed 00000000000000000000000000000000 wiring 00000000000110100101110000100001 102.1 00000000000000000000000000000000 militarily 00000000001010001000000001110010 Questioned 00100000000111101101010000110010 sunlight 00000000000111111110110000100001 takers 00000000000000000010000010100011 inferences 00000000000000000000000000000000 Dyer 00100000000000000000000000000000 plurality 00000000000000000000000000000000 ineffectual 00000000000000000000000000000000 Curtin 00100000000000000000000000000000 clip 00000000000111101110011001000111 reinvigorate 00000000000110010100111110110010 Rodrigo 00100000000000000000000000000000 adroitly 00001100110000000000010001110010 wracked 00000000000000000000000000000000 isthmus 00000000000000000000000000000000 Spirit 00100000000100111111111000001111 accommodation 00000000000101001111111001100111 prolong 00000000000010100110111110110010 communiques 00000000000000000000000000000000 Visiting 00100000000000100110101001000000 278 00000000000000000000000000000000 Tela 00100000000000000000000000000000 Castillo 00100000000000000000000000000000 originates 00000000000000000000000000000000 characteristics 00000000000111100011100100101111 academe 00000000000000000000000000000000 relinquishing 00000000000000000000000000000000 13.32 00000000000000000000000000000000 cafe 00000000000110001110010100000001 jocks 00000000000000000000000000000000 vignettes 00000000000000000000000000000000 Jacoboski 00100000000000000000000000000000 plains 00000000000000000000111110100101 gaze 00000000000000000000000000000000 prickly 00000000000000000000000000000000 bordered 00000000000000000000000000000000 73-year-old 00000000000000000000000000000000 Camilo 00100000000000000000000000000000 lied 00000000001101101011101000110010 Findlay 00100000000000000000000000000000 208.7 00000000000000000000000000000000 athlete 00000000000111001011111001100111 slapping 00000000000001011001001101000000 Sophomore 00100000000000000000000000000000 Playing 00100000000001001110100001000000 Hutchison 00100000000111010001000100001000 miffed 00000000000000000000000000000000 Kinney 00100000000000000000000000000000 exhaustion 00000000000000000000000000000000 Hawley 00101111111111000000010000101000 66-year-old 00000000000000000000000000000000 Somehow 00100000100100000000001001110010 ho-hum 00000000000000000000000000000000 rumblings 00000000000000000000000000000000 abstained 00000000000111101110001000110010 college-sports 00000000000000000000000000000000 Strum 00100000000000000000000000000000 helpless 00000000000000000000000000000000 Calvi 00100000000000000000000000000000 hawking 00000000000000000100000010000000 Milano 00100000000000000000000000000000 computer-servicing 00000000000000000000000000000000 medical-products 00000000000000000000000000000000 arguably 00000000000111000000001001110010 Geeks 00100000000000000000000000000000 53.2 00000000000000000000000000000000 17.73 00000000000000000000000000000000 accrual 00000000000000100001101100100111 SNET 01000000000000000000000000000000 Suhler 00100000000000000000000000000000 433 00000000000000000000000000000000 Leonid 00100000000000000000000000000000 Queensland 00100000000000011111111001101000 Shaw-Walker 01000000000000000000000000000000 attendees 00000000000000000000000000000000 Contact 00100000000110011110110000100111 7.43 00000000000000000000000000000000 nerds 00000000000000000000000000000000 thinning 00000000000000000000000000000000 fragment 00000000000000000000000000000000 renounced 00000000000000000000000000000000 numerical 00000000001011000010000000110000 Bernie 00100000000000000000000000000000 graceful 00000000000000000000000000000000 statesmen 00000000000000000000000000000000 Kahn 00101111111011101110100010001000 geeks 00000000000000000000000000000000 Ramtron 00100000000000000000000000000000 restating 00000000000000000000000000000000 procrastination 00000000000000000000000000000000 nerdy 00000000000000000000000000000000 screwball 00000000000000000000000000000000 Yew 00100000000000000000000000000000 Papers 00100000000110100110001000100011 Playback 00100000000000000000000000000000 266.2 00000000000000000000000000000000 noses 00000000000101100100111101100011 first-three 00000000000000000000000000000000 Jaime 00101111111001000101001010011000 Krysalis 00100000000000000000000000000000 pre-1967 00000000000000000000000000000000 unifying 00000000000000000000000000000000 atomic 00000000000111101001110000110000 hometown 00000000000111110101011110000001 pollinated 00000000000000000000000000000000 psychobiology 00000000000000000000000000000000 Hopefully 00100000000101101101000001110010 Gradison 00100000000000000000000000000000 AEP 01000000000000000000000000000000 attain 00000000011000111011111110110010 veracity 00000000000000000000000000000000 antithetical 00000000000000000000000000000000 tax-writers 00000000000000000000000000000000 Thevenot 00100000000000000000000000000000 Harrington 00101111111101110010100010001000 46.5 00000000000000000000000000000000 Referring 00100000000111111101111000110010 tug 00000000000111110001001000111111 Items 00100000000111101111101010100011 1.6030 00000000000000000000000000000000 pineapple 00000000000000000000000000000000 sulfur 00000000000100011100101010110000 collectibles 00000000000000000000000000000000 Hackensack 00100000000000000000000000000000 pollinate 00000000000000000000000000000000 Real-estate 00100000000000000000000000000000 Ente 00100000000000000000000000000000 Idrocarburi 00100000000000000000000000000000 male-fertile 00000000000000000000000000000000 high-octane 00000000000000000000000000000000 Reviglio 00100000000000000000000000000000 monoliths 00000000000000000000000000000000 wider-than-expected 00000000000000000000000000000000 Refuge 00100000000101100110110110111001 sow 00000000000000000000000000000000 ever-greater 00000000000000000000000000000000 hardships 00000000000000000000000000000000 scout 00000000000000000010100110110111 patched 00000000000000000000000000000000 246.6 00000000000000000000000000000000 double-A-3 01000000000000000000000000000000 Lubar 00100000000000000000000000000000 weighting 00000000000111010011101110100111 commentaries 00000000000000000000000000000000 Germeten 00100000000000000000000000000000 sandwiched 00000000000000000000000000000000 clumps 00000000000000000000000000000000 pristine 00000000000000000000000000000000 Abalkin 00100000000000000000000000000000 simulate 00000000000000000000000000000000 bolder 00000000000001101100001111000000 maximizing 00000000000110111011011101000000 abounded 00000000000000000000000000000000 alienate 00000000010000100011111110110010 Mexicanos 00100000000000000000000000000000 '71 00000000000000000000000000000000 Caere 00100000000000000000000000000000 ransom 00000000000100101110000000001000 Jeremiah 00100000000000000000000000000000 gamut 00000000000000000000000000000000 4,346 00000000000000000000000000000000 86.3 00000000000000000000000000000000 PRICES 01000000000000000000000110000111 Presidency 00100000000111110011000001100111 Telzrow 00100000000000000000000000000000 5.04 00000000000000000000000000000000 Guerin 00100000000000000000000000000000 notoriety 00000000000000000000000000000000 Matchett 00100000000000000000000000000000 Affiliates 00100000000111101101101010110011 334.5 00000000000000000000000000000000 O&Y 01000000000000000000000000000000 291,890 00000000000000000000000000000000 98.5 00000000000000000000000000000000 ingot 00000000000111110011001110110000 Number 00100000000111111111111010111111 influencing 00000000000011100011011101000000 hood 00000000010111101110000000001000 Percent 00100000000000000011100001010000 lurking 00000000000000000000000000000000 domino 00000000000000000000000000000000 small-scale 00000000000000000000000000000000 99,000 00000000000000000000000000000000 Candid 00100000000001100101010010010000 Comment 00100000000111111100110110110010 Principal 00100000000000000010010011010000 wrenching 00000000000111000101000000010000 intertwined 00000000000000000000000000000000 forgiving 00000000000000000000000000000000 Montvale 00100000000111100100101001101000 speculations 00000000000000000000000000000000 exploits 00000000000111011100111101100011 Strasser 00100000000000000000000000000000 groans 00000000000000000000000000000000 sterile 00000000000000000000000000000000 lament 00000000000000000000000000000000 patronage 00000000000101001001110010100111 glutted 00000000000110101110101001000000 buffs 00000000000000000000000000000000 alas 00000000000111111111100011101000 wreak 00000000000000000000000000000000 Babe 00100000000010010010111000101000 government-guaranteed 00000000000000000000000000000000 Enthusiasts 00100000000011110000000010110011 recalculating 00000000000000000000000000000000 Observer 00100000000001000101011001100111 Grounds 00100000000111111101101110100011 paled 00000000000000000000000000000000 fellows 00000000000000000000000000000000 Mendes 00100000000000000000000000000000 Chico 00100000000000000000000000000000 Fossey 00100000000000000000000000000000 duel 00000000000000000000000000000000 12-year-old 00000000000000000000000000000000 3-1 00000000000000000000000000000000 Dian 00100000000000000000000000000000 impulsive 00000000000000000000000000000000 reverses 00001000010110000011000000010010 TROs 01000000000000000000000000000000 reinvented 00000000000000000000000000000000 Droz 00100000000000000000000000000000 freezing 00000000000000101011011101000000 Palma 00100000000000000000000000000000 Flashdance 00100000000000000000000000000000 screenplay 00000000000000000000000000000000 4.32 00000000000000000000000000000000 companions 00000000000000000000000000000000 thrashing 00000000000000000000000000000000 sailed 00000000000000110001001000110010 Kleinman 00100000000000000000000000000000 Streisand 00100000000000000000000000000000 postmaster 00000000000000011010110000110101 paper-goods 00000000000000000000000000000000 Russ 00100000000000000000000000000000 Hodges 00100000000000000000000000000000 Barbra 00100000000000000000000000000000 Coogan 00100000000000000000000000000000 45.50 00000000000000000000000000000000 63.9 00000000000000000000000000000000 65.2 00000000000000000000000000000000 customarily 00000000001101100000001001110010 chalking 00000000000000000000000000000000 rooting 00000000000000000000000000000000 exerting 00000000000000000000000000000000 172.2 00000000000000000000000000000000 fatter 00000000000000000000000000000000 transmogrified 00000000000000000000000000000000 Event 00100000000111111100100000001111 unwitting 00000000000000000000000000000000 test-coaching 00000000000000000000000000000000 Curcio 00100000000000000000000000000000 jour 00000000000000000000000000000000 auspicious 00000000000000000000000000000000 peddle 00000000000100001110001110110010 terrified 00000000000000000000000000000000 booths 00000000000000000000000000000000 Parade 00100000000111100100100101100111 silver-haired 00000000000000000000000000000000 entrusted 00000000000000000000000000000000 Name-dropping 00100000000000000000000000000000 Freudenberger 00100000000000000000000000000000 Birthday 00100000000000000100000001000111 avenue 00000000000000000000010010100101 C-word 00100000000000000000000000000000 associating 00000000000100110101100000110010 much-beloved 00000000000000000000000000000000 undeniably 00000000000000000000000000000000 Scot 00100000000000000000000000000000 lengthen 00000000000000000000000000000000 Crowe 00100000000111011100111010001000 Streetspeak 00100000000000000000000000000000 Orwell 00100000000000000000000000000000 heavyweight 00000000000000001110101100100001 449 00000000000000000000000000000000 arranges 00000000000000000000000000000000 achievable 00000000000000000000000000000000 occurrences 00000000000000000000000000000000 tears 00000000000111101001110010100111 Hello 00100000000000000000000000000000 Pilot 00100000000000000011111000100001 f 00000000000000000000000000000000 this.`` 00000000000000000000000000000000 misperceptions 00000000000000000000000000000000 vis 00000000000111000010111100010000 boilerplate 00000000000000000000000000000000 lotion 00000000000000000000000000000000 laughter 00000000000011001001110010100111 Wear 00100000001011101110101110110010 206 00000000000000000000000000000000 chronically 00000000000000111010001000110000 alerting 00000000000000000000000000000000 gambit 00000000000000000000000000000000 Fails 00100000000010000001101000110010 ploys 00000000000000000000000000000000 scratching 00000000000000000000000000000000 trousers 00000000000000000000000000000000 Heart 00100000000000000010011011100001 Warhol 00101111111110100110101010001000 Enforcers 00100000000000000000000000000000 Christensen 00101111111100001010000010001000 81.2 00000000000000000000000000000000 camouflage 00000000000000000000000000000000 Telesystems 00100000000000000000000000000000 Propper 00100000000000000000000000000000 3.66 00000000000000000000000000000000 69.5 00000000000000000000000000000000 electorate 00000000000111101100111001000101 raisers 00000000000000000011110001111001 Fonda 00100000000000000000000000000000 28.3 00000000000000000000000000000000 cleansing 00000000000000000000000000000000 long-cherished 00000000000000000000000000000000 fuse 00000000000000000000000000000000 Ormstedt 00100000000000000000000000000000 propositions 00000000000011110110010101100011 kilometers 00000000000000000000000000000000 Namib 00100000000000000000000000000000 Assemblyman 00101111111000000000101100001000 Trumps 00100000000000000000000000000000 Premium 00100000000111101001100011000111 towels 00000000000000000000000000000000 earthmoving 00000000000000000000000000000000 one-point 00000000000000000000000000000000 redistribution 00000000000000011110011010100111 dune 00000000000000000000000000000000 7.53 00000000000000000000000000000000 carats 00000000000000000000000000000000 7.57 00000000000000000000000000000000 660 00000000000000000000000000000000 nine-tenths 00000000000000000000000000000000 P-E 01000000000000000000000000000000 Matrix 00100000000001010111111100101000 dig 00000000001011010110010110110010 Avner 00100000000000000000000000000000 renters 00000000000101001000100000110011 sizes 00000000000111101111000100101111 sweetener 00000000000111011000011000100001 polishing 00000000000000000000000000000000 Eubank 00100000000000000000000000000000 tilts 00000000000000000000000000000000 hail 00000000000011001101001010110111 Roll 00100000000010110110010110110010 sands 00000000000111000111110100100001 spinning 00000000000101111010100001000000 immediacy 00000000000000000000000000000000 Panic 00100000000000110110111010100111 1908 00000000000000000000000000000000 Postipankki 00100000000000000000000000000000 quakes 00000000000000000000000000000000 cold-rolled 00000000000000000000000000000000 Harley 00100000000000001001000100001000 stingy 00000000000000000000000000000000 broad-scale 00000000000000000000000000000000 dot 00000000010010000010110001000000 overcrowding 00000000000000000000000000000000 civics 00000000000000000000000000000000 presumes 00000000000000000000000000000000 eluded 00000000000000000000000000000000 distressing 00000000000000000000000000000000 Flags 00100000000000111101110101100011 50.50 00000000000000000000000000000000 antelope 00000000000000000000000000000000 incendiary 00000000000000000000000000000000 Oldsmobile 00100000000010000111111100001000 intrude 00000000000000000000000000000000 mist 00000000000000000000000000000000 rag 00000000000000000000000000000000 '30s 00000000000000000000000000000000 Janesville 00100000000000000000000000000000 Cavalier 00100000000111000100000001000111 cinema 00000000000000000110010001001000 ironies 00000000000000000000000000000000 Circulations 00100000000000000000000000000000 postmarks 00000000000000000000000000000000 VII 01000000000000000000000000000000 bulldozers 00000000000000000000000000000000 Rolls-Royce 01000000000000000000000000000000 Play 00100000000101111110010110110010 d-Percentage 01000000000000000000000000000000 legitimately 00000000000000000000000000000000 f-Includes 01000000000000000000000000000000 wimp 00000000000000000000000000000000 x-Year-to-date 01000000000000000000000000000000 tornado 00000000000000000000000000000000 domestic-production 00000000000000000000000000000000 heaped 00000000000000000000000000000000 Dillmann 00100000000000000000000000000000 plows 00000000000000000000000000000000 bundled 00000000000000000000000000000000 cries 00000000000001111111000000010010 compacted 00000000000000000000000000000000 dove 00000000000111110100000000001000 2129.4 00000000000000000000000000000000 30.7 00000000000000000000000000000000 American-built 00100000000000000000000000000000 Frenzel 00100000000000000000000000000000 60-second 00000000000000000000000000000000 undoing 00000000000000000000000000000000 high-production 00000000000000000000000000000000 lift-ticket 00000000000000000000000000000000 Federalist 00100000000000000000000000000000 Yardeni 00101111111100110100000010001000 Corney 00100000000000000000000000000000 Barrow 00100000000000000000000000000000 Band 00100000000111101110000100000001 CRAF-Cassini 01000000000000000000000000000000 unfazed 00000000000000000000000000000000 malaise 00000000000111001010111010100111 upstate 00000000000000010101010100110010 uncomplicated 00000000000000000000000000000000 securities-firm 00000000000000000000000000000000 lower-income 00000000000000000000000000000000 Essex 00100000000110001011010100101000 Pignatelli 00100000000000000000000000000000 pasture 00000000000000000000000000000000 Pasquale 00100000000000000000000000000000 footnote 00000000000101101111001011100111 assuring 00000000000110011101111010000010 instructors 00000000000000001110100000110011 chafe 00000000000100010101010110110010 blues 00000000000111101111101101000001 Hartley 00101111111010001110100010001000 shrugs 00000000000011000011010111000010 Hole 00100000000111111001111010110101 Wyo 00100000000000000000000000000000 upsurge 00000000000000000000000000000000 billionnaire 00000000000000000000000000000000 Heidi 00100000000000000000000000000000 sweepers 00000000000111111000000010100111 2.26 00000000000000000000000000000000 4,393,237 00000000000000000000000000000000 1982-83 00000000000000000000000000000000 overalls 00000000000000000000000000000000 citation 00000000000111101000000001100111 herbal 00000000000000000000000000000000 Crazy 00100000000101110001110101001000 top-flight 00000000000000000000000000000000 downfall 00000000000111010101011000001111 Bhd. 00100000000000000000000000000000 observance 00000000000111111011011001101111 jeopardizes 00000000000000000000000000000000 rivets 00000000000000000000000000000000 Clairton 00100000000000000000000000000000 post-war 00000000000000000000000000000000 Avdel 00100000000000000000000000000000 Alito 00100000000000000000000000000000 nameplates 00000000000000000000000000000000 marque 00000000000000000000000000000000 pail 00000000000000000000000000000000 Confronted 00100000100111110110010000110010 170.4 00000000000000000000000000000000 dampened 00000000000000000000000000000000 social-studies 00000000000000000000000000000000 precautions 00000000000010111111001000100011 Virtually 00100000000001110111000001110010 Banana 00100000000011011101011000110000 bump 00000000000000000000000000000000 skis 00000000000000000000000000000000 Linh 00100000000000000000000000000000 Needs 00100000000111101110101000110010 PAY 01000000000111111101001110110010 Saigon 00100000000000000000000000000000 villagers 00000000000010001101100110110011 systemic 00000000000000000000000000000000 composites 00000000000000000000000000000000 Subcontractors 00100000000101011011110000110011 stop-payment 00000000000000000000000000000000 Barabba 00100000000000000000000000000000 tradeoffs 00000000000000000000000000000000 late-payment 00000000000000000000000000000000 Floating 00100000000001110000011100010000 Come 00100000000111110011010110110010 Page 00100000000100000111000001000111 grains 00001111111111011111101110110000 FIVE 01000000000111111110111001010000 zeroing 00000000000000000000000000000000 grandkids 00000000000000000000000000000000 Eighteen 00100000000110011111000011000000 segmentation 00000000000000000000000000000000 Scannell 00100000000000000000000000000000 Hewlett 00101111111111001100011100001000 175,000 00000000000000000000000000000000 AST 01000000000000000000000000000000 mortgage-interest 00000000000000000000000000000000 medal 00000000000000010000011000100001 Isuzu 00100000000111110000100100101000 McNeil 01000000000000000000000000000000 drug-dealing 00000000000000000000000000000000 smuggling 00000000000111001010110001000000 esoteric 00000000000000000000000000000000 3.38 00000000000000000000000000000000 flagrant 00000000000000000000000000000000 244 00000000000000000000000000000000 snafu 00000000000000000000000000000000 multiyear 00000000000000000000000000000000 Strategies 00100000000111101100011100100011 well-paying 00000000000000000000000000000000 elders 00000000000000001111111000101000 Tarrytown 00100000000001011011101001101000 glitch 00000000000000000000000000000000 indexer 00000000000000000000000000000000 Core 00100000000000011010010011010000 Axe 00100000000000000000000000000000 bellwethers 00000000000000000000000000000000 Testa 00100000000000000000000000000000 44,400 00000000000000000000000000000000 Negas 00100000000000000000000000000000 Voyles 00100000000000000000000000000000 sleepy 00000000000001010110011010010000 Ferrer 00100000000000000000000000000000 MIPs 01000000000000000000000000000000 43.375 00000000000000000000000000000000 57.7 00000000000000000000000000000000 long-held 00000000000000000000000000000000 descendant 00000000000000000000000000000000 heaven 00000000000110001110101101101000 Bonanza 00100000000111100010111010110101 MacroChem 01000000000000000000000000000000 most-active 00000000000000000000000000000000 turbo-charged 00000000000000000000000000000000 Improving 00100000000111010101010001000000 saga 00000000000111001100101101100111 Usinor-Sacilor 01000000000000000000000000000000 Fab 00100000000000000000000000000000 press-forge 00000000000000000000000000000000 Usinor 00100000000000000000000000000000 unchecked 00000000000000000000000000000000 deducting 00000000000111011100100101000000 caster 00000000000000000000000000000000 scour 00000000000000000000000000000000 76.7 00000000000000000000000000000000 Trees 00100000000111000111010101100011 Carlson 00101111111101111110000010001000 hardened 00000001101001101100010000110010 Wilke 00100000000000000000000000000000 cycads 00000000000000000000000000000000 40-point 00000000000000000000000000000000 domestic-made 00000000000000000000000000000000 grimly 00000000111001000001001001110010 Bolstered 00100000001101100111010000110010 sprouting 00000000000000000000000000000000 wane 00000000000000000000000000000000 Manchester 00100000000110011001101001101000 541 00000000000000000000000000000000 Ferembal 00100000000000000000000000000000 Viatech 00100000000000000000000000000000 automating 00000000000000000000000000000000 Ramo 00100000000000000000000000000000 skyscraper 00000000000000000000000000000000 Mahler 00100000000000000000000000000000 CP486 01000000000000000000000000000000 fronds 00000000000000000000000000000000 decoration 00000000000110000101110010100111 populate 00000000000000000000000000000000 0.17 00000000000000000000000000000000 Cathryn 00100000000000000000000000000000 commutes 00000000000000000000000000000000 35-hour 00000000000000000000000000000000 Discussing 00100000000111001110010101000000 527,000 00000000000000000000000000000000 wring 00000000000000000000000000000000 intimacy 00000000000110010011111010100111 Gourlay 00100000000000000000000000000000 Keene 00100000000000000000000000000000 toiling 00000000000111010111000001000000 Amon 00100000000000000000000000000000 Whitelock 00100000000000000000000000000000 leftists 00000000000000000000000000000000 Gilleland 00100000000000000000000000000000 Rilling 00100000000000000000000000000000 Past 00100000000000000001010001100010 Lyons 00101111111100000000001000001000 Rossini 00100000000000000000000000000000 circulate 00000000000000101110101110110010 sword 00000000000100110000100101100111 hedgers 00000000000000000000000000000000 divisional 00000000000000010000010000110000 Queens 00100000000011100111111001101000 accent 00000000000111100011011001100111 contesting 00000000000111000110010101000000 leathers 00000000000000000000000000000000 churn 00000000000000000000000000000000 Lugar 00100000000000000000000000000000 Kerrey 00100000000000000000000000000000 embroidery 00000000000000000000000000000000 saturated 00000000000111111101101001000000 peasants 00000000000111100100111000110011 infractions 00000000000000000000000000000000 co-sponsors 00000000000000000000000000000000 Repeal 00100000000011010111110110110010 Cocoa 00100000000111010011101110110000 8,880 00000000000000000000000000000000 Cost 00100000000111111111111111110111 centenarians 00000000000000000000000000000000 matures 00000000000000000000000000000000 second-highest 00000000000000000000000000000000 22.1 00000000000000000000000000000000 Wait 00100000000101110101010110110010 depriving 00000000000000000000000000000000 75.2 00000000000000000000000000000000 concepts 00000000000111011000110001100011 independents 00000000000111110100111000110011 VCR 01000000000000000000000000000000 second-place 00000000000000000000000000000000 Stuttgart-based 00100000000000000000000000000000 Myrtle 00100000000000000000000000000000 money-back 00000000000000000000000000000000 Hallett 00100000000000000000000000000000 CHANGED 01000000000111111111111001000000 slaying 00000000000111101110001001001111 code-named 00000000000000000000000000000000 2,202,000 00000000000000000000000000000000 2,205,000 00000000000000000000000000000000 uprooted 00000000001111100101101001000000 rooftops 00000000000000000000000000000000 first-class 00000000000000000000000000000000 COMPUTERS 01000000000111100111111001100011 counterweight 00000000000000000000000000000000 Cannes 00100000000000000000000000000000 hassle 00000000000110010111101010110111 Christina 00100000000000000000000000000000 Niles 00100000000000000000000000000000 CONTINENTAL 01000000000111101011110110101000 hallowed 00000000000000000000000000000000 cut-rate 00000000000000000000000000000000 presenting 00000000000111100101111101000000 51-48 00000000000000000000000000000000 Pinola 00100000000000000000000000000000 fabulous 00000000000101011000011010010000 26.1 00000000000000000000000000000000 cluttered 00000000000111110111000010010000 Homeless 00100000000111000010101000110000 Mahran 00100000000000000000000000000000 509 00000000000000000000000000000000 boredom 00000000000100101010110010100111 198,120,000 00000000000000000000000000000000 sheiks 00000000000000000000000000000000 undelivered 00000000000000000000000000000000 salvation 00000000000111100001111000010000 Toshiki 00100000000000000000000000000000 Kaifu 00100000000000000000000000000000 balconies 00000000000000000000000000000000 vegetable 00000000000100100100011010110000 litter 00000000000111100110110110110111 utmost 00000000000000000000000000000000 412 00000000000000000000000000000000 Thrombinar 00100000000000000000000000000000 16.95 00000000000000000000000000000000 174 00000000000000000000000000000000 coincided 00000000000000010011100000110010 Asilone 00100000000000000000000000000000 269 00000000000000000000000000000000 allegory 00000000000000000000000000000000 alcoholics 00000000000000000000000000000000 Ameritas 00100000000000000000000000000000 no-load 00000000000000000000000000000000 slum 00000000000000000000000000000000 hallmark 00000000000000000010010100110001 beheading 00000000000000000000000000000000 renal 00000000000000000000000000000000 positioning 00000000011010101110100001000000 immensely 00000000011000101000000001110010 dinosaur 00000000000000000000000000000000 single-premium 00000000000000000000000000000000 sacrifices 00000000000111010100011000100011 avaricious 00000000000000000000000000000000 Castaneda 00100000000000000000000000000000 burying 00000000000000000000000000000000 euphemisms 00000000000000000000000000000000 ruling-party 00000000000000000000000000000000 flunk 00000000000000000000000000000000 belongings 00000000000000000000000000000000 oath 00000000000111001111110001100111 convoluted 00000000000000000000000000000000 machetes 00000000000000000000000000000000 heavy-handed 00000000000000000000000000000000 persistency 00000000000000000000000000000000 slums 00000000000101011000111101100011 Figuring 00100000000111110010100001000000 trudging 00000000000000000000000000000000 wares 00000000000110001001111101100011 interspersed 00000000000000000000000000000000 rattling 00000000000000000000000000000000 pleasures 00000000000111111000111101100011 1,150,000 00000000000000000000000000000000 436,000 00000000000000000000000000000000 68.1 00000000000000000000000000000000 crooks 00000000000100010100000000001000 Head 00100000000111111111110011110111 a-Totals 01000000000000000000000000000000 fretting 00000000001100111111110000110010 parlor 00000000000101110001111010110000 Pachinko 00100000000000000000000000000000 pinball 00000000000000000000000000000000 Gumucio 00100000000000000000000000000000 Us 00100000000000010001010001110010 Arabic 00100000000111100111101100100001 Lyneses 00100000000000000000000000000000 unsavory 00000000000000000000000000000000 Dostoevski 00100000000000000000000000000000 Psychologists 00100000000010101010000010110011 Luber 00100000000000000000000000000000 Wenz 00100000000000000000000000000000 unregistered 00000000000000010101100100010000 nobility 00000000000000000000000000000000 blaze 00000000000111101000101101100111 monologues 00000000000000000000000000000000 Factories 00100000000111101110110001100011 Devotees 00100000000000000000000000000000 dictatorial 00000000000000000000000000000000 ping 00000000000000000000000000000000 pastime 00000000000110001000011000100001 c-Domestic 01000000000000000000000000000000 8.68 00000000000000000000000000000000 giddy 00000000000000000000000000000000 embedded 00000000001100011110010000110010 Disputado 00100000000000000000000000000000 logistical 00000000000011011000000000110000 get-rich-quick 00000000000000000000000000000000 laden 00000000001001110101100000110010 socks 00000000001011111111110101100011 sucker 00000000000000000000000000000000 socioeconomic 00000000000000000000000000000000 stapling 00000000000000000000000000000000 disappoint 00000000000000000000000000000000 benevolent 00000000000000000000000000000000 nonresident 00000000000000000000000000000000 subcontractor 00000000000111101011101010110101 Pages 00100000000000000010000100001011 phonebook 00000000000000000000000000000000 obscures 00000000000000000000000000000000 Lackey 00100000000000000000000000000000 Buried 00100000011100001100010000110010 meditation 00000000000000000000000000000000 reclassified 00000000000000000000000000000000 reinvesting 00000000000111011001001101000000 genres 00000000000000000000000000000000 Washburn 00100000000000000000000000000000 Islam 00100000000100111111110010100111 Macon 00100000000000000000000000000000 Menem 00100000000000000000000000000000 idealist 00000000000000000000000000000000 alimony 00000000000000000000000000000000 drained 00000000001010011100010000110010 incidence 00000000000101110111111000001111 ceaselessly 00000000000000000000000000000000 queues 00000000000000000000000000000000 ubiquitous 00000000000011011101000010010000 x-There 01000000000000000000000000000000 Percentage 00100000000000000001100001010000 haulers 00000000000000000000000000000000 Unknown 00100000000010010000110110010000 undertone 00000000000000000000000000000000 tuitions 00000000000000000000000000000000 functionaries 00000000000000000000000000000000 baccalaureate 00000000000000000000000000000000 Hauptman 00100000000000000000000000000000 credit-worthiness 00000000000000000000000000000000 assigns 00000000000000000000000000000000 Oasis 00100000000000000000000000000000 0.94 00000000000000000000000000000000 Menuhin 00100000000000000000000000000000 exam 00000000000110100001100011100111 readied 00000000000000000000000000000000 work-rule 00000000000000000000000000000000 soloist 00000000000000000000000000000000 outstrips 00000000000000000000000000000000 C-SPAN 01000000000000000000000000000000 Ciavarella 00100000000000000000000000000000 furnishings 00000000000111111111001011100101 indulgence 00000000000000000000000000000000 ingenious 00000000000100111000110100010000 widows 00000000000000000000000000000000 vanish 00000001011101111101010110110010 Salisbury 00100000000100001000101001101000 H.J. 01000000000000000000000000000000 Hawke 00101111111101101110101010001000 gullible 00000000000000000000000000000000 12-member 00000000000000000000000000000000 Emshwiller 00100000000000000000000000000000 modicum 00000000000000000000000000000000 Journalists 00100000000111101000111000110011 credit-reporting 00000000000000000000000000000000 rehabilitated 00000000000000000000000000000000 Falco 00100000000000000000000000000000 above-average 00000000000000000000000000000000 Diebel 00100000000000000000000000000000 Philo 00100000000000000000000000000000 pushers 00000000000000000000000000000000 Manion 00100000000000000000000000000000 Bo 00100000000000000000000000000000 enrolled 00000000001110011110010000110010 Papua-New 01000000000000000000000000000000 Bureaus 00100000000000011110000100100011 plying 00000000000000000000000000000000 multitude 00000000000000000000000000000000 Brunei 00100000000111110110101101101000 unqualified 00000000000001010001110100010000 Darby 00101111111010111100001000001000 Stapf 00100000000000000000000000000000 certify 00000000000101011100100110110010 spanning 00000000000000000000000000000000 needle 00000000000101111001110000000001 22,000 00000000000000000000000000000000 shrubs 00000000000000000000000000000000 Spokane 00100000000000000000000000000000 instructor 00000000000111000111110000110101 93.5 00000000000000000000000000000000 tooling 00000000000000000000000000000000 Tacit 00100000000000011101000000010000 thinker 00000000000000000000000000000000 Galamian 00100000000000000000000000000000 follow-on 00000000000000000000000000000000 violinist 00000000000101101011011110110101 Blazer 00100000000000000000000000000000 396 00000000000000000000000000000000 anti-development 00000000000000000000000000000000 assuage 00000000000000000000000000000000 undue 00000000000000000010010100010000 Participants 00100000000110110100101001110011 blindfolded 00000000000100011011110110010000 Alexandra 00100000000000000000000000000000 two-income 00000000000000000000000000000000 44.1 00000000000000000000000000000000 Dominick 00100000000000000000000000000000 decimated 00000000000000000000000000000000 Karns 00100000000000000000000000000000 Darwin 00100000000000000000000000000000 pageant 00000000000000000000000000000000 riskiness 00000000000000000000000000000000 splendid 00000000000000011100011010010000 endowed 00000000000000000000000000000000 Schafer 00100000000000000000000000000000 anti-missile 00000000000000000000000000000000 20th-century 00000000000000000000000000000000 UNC 01000000000000000000000000000000 REVIEW 01000000000111111111111110110111 betas 00000000000000000000000000000000 Cautious 00100000000010100111110000110010 malnutrition 00000000000000000000000000000000 Meritor 00100000000110111001000100101000 fill-or-kill 00000000000000000000000000000000 primordial 00000000000000000000000000000000 careening 00000000000000000000000000000000 drape 00000000000000000000000000000000 market-if-touched 00000000000000000000000000000000 ovens 00000000000100100111001111001001 Suppose 00100000000111011111100110110010 Dream 00100000000111111101000101100111 dolce 00000000000000000000000000000000 55.6 00000000000000000000000000000000 wagons 00000000000000011000110100100011 cluster 00000000000111111110001000111111 tripling 00000000000000000000000000000000 Trout 00100000000010000100000000001000 nonexistent 00000000000010000110110110010000 transplanted 00000000000000000000000000000000 outpacing 00000000000101010111011101000000 TransTechnology 01000000000000000000000000000000 235.2 00000000000000000000000000000000 corrosion-resistant 00000000000000000000000000000000 ordnance 00000000001100100000011010110000 rubs 00000000000000000000000000000000 awhile 00000000000111010011010001110010 anatomical 00000000000000000000000000000000 parched 00000000000000000000000000000000 Schuman 00100000000000000000000000000000 Collectibles 00100000000000000000000000000000 Darwinian 00100000000000000000000000000000 Serenade 00100000000000000000000000000000 hidebound 00000000000000000000000000000000 dents 00000000000000000000000000000000 Woodrow 00100000000000000000000000000000 autographs 00000000000000000000000000000000 Reggie 00100000000000000000000000000000 long-established 00000000000000000000000000000000 confinement 00000000000000000000000000000000 forgery 00000000000101110111100010100111 same-store 00000000000000000000000000000000 Cormack 00100000000000000000000000000000 60.1 00000000000000000000000000000000 Aided 00100000000101001111010000110010 Charisma 00100000000011101101110010100111 Kenji 00100000000000000000000000000000 Utsunomiya 00100000000000000000000000000000 straining 00000000000100011101100001000000 nondemocratic 00000000000000000000000000000000 3.01 00000000000000000000000000000000 Branford 00100000000000000000000000000000 Apollo 00100000000110110000100100101000 auctioneer 00000000000000000000000000000000 Monets 00100000000000000000000000000000 fantastic 00000000000001001000011010010000 unmistakable 00000000000000000000000000000000 Wolff 00100000000000000000000000000000 sparsely 00000000000000000000000000000000 feedlot 00000000000000000000000000000000 fatten 00000000000100000100111110110010 slain 00000000000000000000000000000000 virtuoso 00000000000000000000000000000000 348.4 00000000000000000000000000000000 Feedlots 00100000000111111111101000000111 consuming 00000000000111100011110001000000 Photographic 00100000000011110100101010110000 glass-making 00000000000000000000000000000000 lectures 00000000000101001101110101100011 belly-up 00000000000000000000000000000000 Luther 00101111111011000100011100001000 dined 00000000000000000000000000000000 Minor 00100000000000001010000000010000 effusive 00000000000000000000000000000000 cost-reduction 00000000000000000000000000000000 socializing 00000000000110000111000001000000 hinting 00000000000110110001111010000010 triumphed 00000000000000000000000000000000 Junkins 00100000000000000000000000000000 4.66 00000000000000000000000000000000 Bockris 00100000000000000000000000000000 surround 00000000000000000000000000000000 imagining 00000000000000000000000000000000 anomalous 00000000000000000000000000000000 electrolysis 00000000000000000000000000000000 invoking 00000000000111111111001101000000 deuterium 00000000000000000000000000000000 hoc 00000000000000011101010000100101 ballroom 00000000000101011101111000000001 Hager 00100000000000000000000000000000 Chojnowski 00100000000000000000000000000000 Bolton 00100000000000000000000000000000 wiser 00000000000000000000000000000000 turtle 00000000000000000000000000000000 Pong 00100000000000000000000000000000 Pagong 00100000000000000000000000000000 vibrant 00000000000001001101000010010000 Sesame 00100000000000000000000000000000 distinctly 00000000010110101000000001110010 archaic 00000000000000110100110100010000 higher-income 00000000000000000000000000000000 Komatsu 00100000000110111100111100101000 resists 00000000000000000000000000000000 conservatively 00000000100001000000010001110010 vein 00000000000000000000000000000000 worn 00000000000001110010110000110010 Rainer 00100000000000000000000000000000 shopkeeper 00000000000011001111011110110101 prejudiced 00000000000000000000000000000000 upper-middle 00000000000000000000000000000000 ooze 00000000000000000000000000000000 barons 00000000000000000000000000000000 33.75 00000000000000000000000000000000 smashed 00000000000111011001001000110010 unconcerned 00000000001000111111110000110010 rescuers 00000000000000000000000000000000 Pertschuk 00100000000000000000000000000000 loyalties 00000000000000000000000000000000 aftereffects 00000000000000000000000000000000 schizophrenia 00000000000000000000000000000000 oceanographic 00000000000000000000000000000000 close-knit 00000000000000000000000000000000 Rene 00100000000110111000001000011000 pull-out 00000000000000000000000000000000 se 00000000000001101111000001000111 Christians 00100000000111010000100000110011 scaled-back 00000000000000000000000000000000 easiest 00000000000000001011010011010000 one-penny 00000000000000000000000000000000 most-watched 00000000000000000000000000000000 assaults 00000000000111101011100100100111 Gann 00100000000000000000000000000000 625,000 00000000000000000000000000000000 muses 00000000000000000000000000000000 Cindy 00100000000000000000000000000000 pacemaker 00000000000000000000000000000000 68.2 00000000000000000000000000000000 expansions 00000000000111000100011000100011 in-home 00000000000000000000000000000000 Inmac 00100000000000000000000000000000 Bostik 00100000000000000000000000000000 345 00000000000000000000000000000000 Cardiovascular 00100000000010101100101010110000 power-tool 00000000000000000000000000000000 rescued 00001000010011010100010000110010 12.97 00000000000000000000000000000000 Friedrichs 00100000000000000000000000000000 6.05 00000000000000000000000000000000 heeded 00000011101101000101010000110010 62.42 00000000000000000000000000000000 904 00000000000000000000000000000000 Bostic 00100000000000000000000000000000 immunities 00000000000000000000000000000000 Cards 00100000000111101101110001111001 Capitalizing 00100000000100110100100000110010 8.82 00000000000000000000000000000000 concocted 00000000000100101001010000110010 reckoned 00000000000000000000000000000000 predispose 00000000000000000000000000000000 Hart-Scott 01000000000000000000000000000000 purists 00000000000000000000000000000000 Familia 00100000000000000000000000000000 cooling-off 00000000000000000000000000000000 stack 00000000000111111111001000111111 fiveyear 00000000000000000000000000000000 Ponce 00100000000000000000000000000000 tigers 00000000000000110110110100000001 1990-2009 00000000000000000000000000000000 6.00 00000000000000000000000000000000 nonstrategic 00000000000000000000000000000000 sidesteps 00000000000000000000000000000000 Regrettably 00100000000000000000000000000000 mutually 00000000000110011000000001110010 propensity 00000000000110100101111100100111 Cholet-Dupont 01000000000000000000000000000000 Spectrum 00100000000111011100111001100111 Aviacion 00100000000000000000000000000000 Mexicana 00100000000000000000000000000000 cultivation 00000000000000000000000000000000 Apparel 00100000000000100011111010110000 predates 00000000000000000000000000000000 Mexico-United 01000000000000000000000000000000 699 00000000000000000000000000000000 43.3 00000000000000000000000000000000 pesos 00000000000000000000111000001011 unfulfilled 00000000000000000000000000000000 mutters 00000000000000000000000000000000 double-A-plus 01000000000000000000000000000000 Masket 00100000000000000000000000000000 705.6 00000000000000000000000000000000 Bince 00100000000000000000000000000000 Imasco 00100000000111001100111100101000 galvanize 00000000000000000000000000000000 Generation 00100000000111010001111000111111 amiable 00000000000000000000000000000000 Muslims 00100000000000001001111000110011 FT 01000000000000000000000000000000 Kushkin 00100000000000000000000000000000 Sapporo 00100000000000000000000000000000 Haines 00100000000000000000000000000000 Schrager 00100000000000000000000000000000 Schantz 00100000000000000000000000000000 49.2 00000000000000000000000000000000 subsided 00000000000000000000000000000000 family-run 00000000000000000000000000000000 Marian 00100000000000000000000000000000 lapsed 00000000000000000000000000000000 Adverse 00100000000000100000010100010000 IIcx 01000000000000000000000000000000 17-store 00000000000000000000000000000000 Row 00100000000111100111000001000111 Tough 00100000000000001001011010010000 heartland 00000000000100000111100100100001 Ideally 00100000000111110000111011101000 fantasize 00000000000000000000000000000000 foreign-debt 00000000000000000000000000000000 banished 00000000000000000000000000000000 Reluctant 00100000000110110100011000110010 tie-ups 00000000000000000000000000000000 4.51 00000000000000000000000000000000 Maronites 00100000000000000000000000000000 namesake 00000000000000000000000000000000 3.08 00000000000000000000000000000000 classy 00000000000000000000000000000000 Takashimaya 00100000000000000000000000000000 popping 00000000001011100110100001000000 torments 00000000000000000000000000000000 Carr-Lowrey 01000000000000000000000000000000 Freeport 00100000000100100100110100101000 Compiled 00100000001011101111010000110010 break-up 00000000000000000000000000000000 conquest 00000000000001101111100100100001 Taxi 00100000000000011000101000110000 74.4 00000000000000000000000000000000 boldest 00000000000000000000000000000000 package-sorting 00000000000000000000000000000000 Complying 00100000000111010101100000110010 cigar 00000000000110110001111010110000 stints 00000000000000000000000000000000 court-ordered 00000000000000000000000000000000 Impco 00100000000000000000000000000000 Psychiatry 00100000000000000000000000000000 Gebhard 00100000000000000000000000000000 anti-union 00000000000000000000000000000000 melding 00000000000000000000000000000000 RULES 01000000000000100000111100100011 Kong-based 00100000000000000000000000000000 reconcile 00000000011110100011111110110010 consolation 00000000000000000000000000000000 ip 00000000000000000000000000000000 HASTINGS 01000000001101011100111010001000 Ciminero 00100000000000000000000000000000 Harriman 00100000000000000000000000000000 manuals 00000000000111111000110100100011 chemically 00000000000000000000000000000000 cancellations 00000000000100000011010101100011 Bremen 00100000000000000000000000000000 Ho 00101111111101000100101000101000 tribunal 00000000000100101111000001010101 Interviews 00100000000110111100010000100111 rewritten 00000000000000000000000000000000 Blind 00100000000010101101011010010000 Minh 00100000000000000000000000000000 disintegrating 00000000000000000000000000000000 Bravo 00100000000000000000000000000000 Fixx 00100000000000000000000000000000 exhibits 00000000001010001111000000010010 T.S. 01000000000000000000000000000000 Prufrock 00100000000000000000000000000000 Amor 00100000000000000000000000000000 Insurrecto 00100000000000000000000000000000 Gioconda 00100000000000000000000000000000 2-4 00000000000000000000000000000000 349-0126 00000000000000000000000000000000 Ragged 00100000000000000000000000000000 regionally 00000000000000000000000000000000 self-contained 00000000000000000000000000000000 914-251-6200 00000000000000000000000000000000 Zellerbach 00100000000000000000000000000000 Annenberg 00100000000000000000000000000000 215-898-6791 00000000000000000000000000000000 Crafton-Preyer 01000000000000000000000000000000 913-864-3982 00000000000000000000000000000000 Kiel 00100000000000000000000000000000 rapprochement 00000000000000000000000000000000 314-968-3770 00000000000000000000000000000000 Gilda 00100000000000000000000000000000 Joannie 00100000000000000000000000000000 Rigoletto 00100000000000000000000000000000 Pavarotti 00100000000000000000000000000000 sciatica 00000000000000000000000000000000 fun-loving 00000000000000000000000000000000 Nucci 00100000000000000000000000000000 hump-backed 00000000000000000000000000000000 choreographers 00000000000000000000000000000000 Coast-based 00100000000000000000000000000000 Shoreline 00100000000000000000000000000000 smilingly 00000000000000000000000000000000 countess 00000000000000000000000000000000 Lehar 00100000000000000000000000000000 Distant 00100000000111110000000010010000 Widow 00100000000111101001011110000001 871-0090 00000000000000000000000000000000 Waverly 00100000000000000000000000000000 Consort 00100000000000000000000000000000 ritorno 00000000000000000000000000000000 d'Ulisse 01000000000000000000000000000000 patria 00000000000000000000000000000000 Homeland 00100000000111001111101001100111 Monteverdi 00100000000000000000000000000000 trilogy 00000000000000000000000000000000 Orfeo 00100000000000000000000000000000 L'incoronazione 00100000000000000000000000000000 Poppea 00100000000000000000000000000000 Ulisse 00100000000000000000000000000000 Pudwell 00100000000000000000000000000000 Penelope 00100000000000000000000000000000 Monahan 00100000000000000000000000000000 Melanto 00100000000000000000000000000000 original-instrument 00000000000000000000000000000000 Venetian 00100000000000000000000000000000 instrumentalists 00000000000000000000000000000000 116th 00000000000000000000000000000000 666-1260 00000000000000000000000000000000 structurally 00000000000000000000000000000000 Gave 00100000000110001011000000010010 Drubbing 00100000000000000000000000000000 gyration 00000000000000000000000000000000 Arraignments 00100000000000000000000000000000 resultant 00000000000000000000000000000000 pre-margin 00000000000000000000000000000000 Overextension 00100000000000000000000000000000 industry-supported 00000000000000000000000000000000 Perception 00100000000111101111110000001111 exemplified 00000000000000000000000000000000 magnify 00000000000110000100111110110010 bifurcated 00000000000000000000000000000000 choreographed 00000000000000000000000000000000 foreign-investor 00000000000000000000000000000000 Modest 00100000000000001010100000010000 princely 00000000000000000000000000000000 Anticipated 00100000000000001101001001000000 shamanistic 00000000000000000000000000000000 gathers 00000001001110000011000000010010 Franconia 00100000000000000000000000000000 simplistic 00000000000000000000000000000000 crashlet 00000000000000000000000000000000 obstructionism 00000000000000000000000000000000 Steiger 00100000000000001011111010001000 hiked 00000000000000000000000000000000 rituals 00000000000000000000000000000000 opportuning 00000000000000000000000000000000 castigate 00000000000000000000000000000000 Emile 00100000000000000000000000000000 Giolito 00100000000000000000000000000000 faraway 00000000000000000000000000000000 Cia. 00100000000000000000000000000000 Telefonos 00100000000000000000000000000000 data-transmission 00000000000000000000000000000000 Santiago 00100000000000000000000000000000 9.65 00000000000000000000000000000000 Boost 00100000000111110010010110110010 asunder 00000000000000000000000000000000 heatedly 00000000000000000000000000000000 amplifying 00000000000000000000000000000000 Azara 00100000000000000000000000000000 bathed 00000000000000000000000000000000 meanings 00000000000000000000000000000000 minimums 00000000000000000000000000000000 Carved 00100000001101101001001000110010 price-jarring 00000000000000000000000000000000 commoditize 00000000000000000000000000000000 A.I.R. 01000000000000000000000000000000 1-Dec 01000000000000000000000000000000 38th 00000000000000000000000000000000 1200 00000000000000000000000000000000 -vs. 00000000000000000000000000000000 Lind 00100000000000000000000000000000 Lind-Waldock 01000000000000000000000000000000 remediation 00000000000000000000000000000000 hazardous-waste-site 00000000000000000000000000000000 energized 00000000000000000000000000000000 statistic 00000000000111000100101101100111 conducive 00000000000000000000000000000000 sequins 00000000000000000000000000000000 Dividend 00100000000111100000100011000111 satin 00000000000000000000000000000000 wherewithal 00000000000000000000000000000000 9.125 00000000000000000000000000000000 Doerflinger 00100000000000000000000000000000 Goldin 00100000000000000000000000000000 handmade 00000000000000000000000000000000 Treasury-bill 00100000000000000000000000000000 184-day 00000000000000000000000000000000 51-cash 00000000000000000000000000000000 116.4 00000000000000000000000000000000 116.3 00000000000000000000000000000000 banners 00000000000101100101110101100011 Saddle 00100000000111111010011010101000 -when 00000000000000000000000000000000 High-yield 00100000000000000000000000000000 voodoo 00000000000000000100101100100001 -in 00000000000000000000000000000000 mail-sorting 00000000000000000000000000000000 votive 00000000000000000000000000000000 tanked 00000000000000000000000000000000 retablos 00000000000000000000000000000000 prepayment-protected 00000000000000000000000000000000 topgrade 00000000000000000000000000000000 quasi-federal 00000000000000000000000000000000 devotional 00000000000000000000000000000000 hand-carved 00000000000000000000000000000000 Tbond 00100000000000000000000000000000 MOB 01000000000000001101010000000001 92-14 00000000000000000000000000000000 91-23 00000000000000000000000000000000 99-04 00000000000000000000000000000000 steadier 00000000000000000000000000000000 0.35 00000000000000000000000000000000 97.25 00000000000000000000000000000000 95.11 00000000000000000000000000000000 santos 00000000000000000000000000000000 Haitian 00100000000001001101011000110000 30-Nov. 01000000000000000000000000000000 2445 00000000000000000000000000000000 527 00000000000000000000000000000000 Herb 00100000000001101001111100001000 middle-market 00000000000000000000000000000000 unenticing 00000000000000000000000000000000 -has 00000000000000000000000000000000 14-Sept. 01000000000000000000000000000000 10.875 00000000000000000000000000000000 Stackup 00100000000000000000000000000000 Air-traffic 00100000000000000000000000000000 stitches 00000000000000000000000000000000 harped 00000000000000000000000000000000 bothering 00000000000000000000000000000000 marvel 00000000000111010010100110110111 Humility 00100000000000000000000000000000 Helper 00100000000000000000000000000000 unnoticed 00000000000000010111110110010000 -dividends 00000000000000000000000000000000 21-June 01000000000000000000000000000000 Payouts 00100000000111100011001100000011 -despite 00000000000000000000000000000000 4525 00000000000000000000000000000000 431 00000000000000000000000000000000 U.S.-developed 01000000000000000000000000000000 probe-based 00000000000000000000000000000000 Nagayama 00100000000000000000000000000000 991 00000000000000000000000000000000 GenProbe 01000000000000000000000000000000 non-viral 00000000000000000000000000000000 Nelson-Atkins 01000000000000000000000000000000 ribosomal 00000000000000000000000000000000 robustly 00000000000000000000000000000000 27-March 01000000000000000000000000000000 spiders 00000000000000000000000000000000 world-leading 00000000000000000000000000000000 Tad 00100000000000000000000000000000 Inada 00100000000000000000000000000000 NASDA 01000000000000000000000000000000 Shocked 00100000001111001101110000110010 dilapidated 00000000000000000000000000000000 coals-to-Newcastle 01000000000000000000000000000000 farfetched 00000000000000000000000000000000 Japan-U.S. 01000000000000000000000000000000 FSX 01000000000000000000000000000000 debated 00000010100011010100010000110010 research-and-production 00000000000000000000000000000000 breathe 00000000000000001110101110110010 2400 00000000000000000000000000000000 4-Dec. 01000000000000000000000000000000 Metromedia-ITT 01000000000000000000000000000000 steel-casting 00000000000000000000000000000000 Ave. 00100000000000000000000000000000 declassifying 00000000000000000000000000000000 soldering 00000000000000000000000000000000 Cassatt 00100000000000000000000000000000 flatulent 00000000000000000000000000000000 Sisley 00100000000000000000000000000000 unbearably 00000000000000000000000000000000 unwashed 00000000000000000000000000000000 sketchiest 00000000000000000000000000000000 arouses 00000000000000000000000000000000 SIGNALED 01000000000001000101110111000010 DISTRESSFUL 01000000000000000000000000000000 unfixed 00000000000000000000000000000000 l 00000000000000010101111110101000 Cezanne 00100000000000000000000000000000 pastels 00000000000000000000000000000000 beer-belly 00000000000000000000000000000000 slashes 00000000000000000000000000000000 pre-May 01000000000000000000000000000000 investment-house 00000000000000000000000000000000 Eighty-five 00100000000000000000000000000000 Le 00100000000100010001010101001000 Month 00100000000111111111100101100010 Solihull 00100000000000000000000000000000 torrent 00000000000111111101100101111111 ConAgra 01000000000111000011111100101000 McGillicuddy 01001111011110101100000010001000 once-moribund 00000000000000000000000000000000 Selections 00100000000011000110010101100011 Impressionism 00100000000000000000000000000000 Red-blooded 00100000000000000000000000000000 soreness 00000000000000000000000000000000 rowed 00000000000000000000000000000000 religiously 00000000111101101000000001110010 equal-opportunity 00000000000000000000000000000000 ashamed 00000000000000000000000000000000 Abbey 00100000000000001101111000101000 duller 00000000000000000000000000000000 jogging 00000000000000000000000000000000 male-only 00000000000000000000000000000000 rackets 00000000000000000000000000000000 1637 00000000000000000000000000000000 treadmills 00000000000000000000000000000000 stair 00000000000000000000000000000000 climbers 00000000000000000000000000000000 Youths 00100000000100101101011100110011 basements 00000000000001110001111000110011 attics 00000000000000000000000000000000 Ancient 00100000000000001100001000110000 boom-or-bust 00000000000000000000000000000000 Premark 00100000000000000000000000000000 peddles 00000000000000000000000000000000 M8.7sp 00100000000000000000000000000000 Simulator 00100000000000000000000000000000 Juliet 00100000000000000000000000000000 calories 00000000000000100111101001100011 gizmo 00000000000000000000000000000000 surrealism 00000000000000000000000000000000 fancier 00000000000000000000000000000000 timer 00000000000000000000000000000000 conjures 00000000000000000000000000000000 bell-ringing 00000000000000000000000000000000 dada 00000000000000000000000000000000 Krys 00100000000000000000000000000000 parishes 00000000000010100111110001100011 truthfully 00000000000000000000000000000000 -like 00000000000000000000000000000000 bellringers 00000000000000000000000000000000 bicycling 00000000000000000000000000000000 Jeanette 00100000000000000000000000000000 Traverso 00100000000000000000000000000000 Motif 00100000000000000000000000000000 booklet 00000000000000000000000000000000 enjoyment 00000000000000000000000000000000 Hagood 00100000000000000000000000000000 Roxboro 00100000000000000000000000000000 10,100,000 00000000000000000000000000000000 joys 00000000000111010111011000001111 Slightly 00100000000111101000010001110010 theological 00000000000000000000000000000000 Sherren 00100000000000000000000000000000 fuller 00001111111010011000001000001000 bell-ringer 00000000000000000000000000000000 22-year-old 00000000000000000000000000000000 368.87 00000000000000000000000000000000 once-sacred 00000000000000000000000000000000 Unum 00100000000000000000000000000000 toughened 00000000000000000000000000000000 behavior-modification 00000000000000000000000000000000 smoking-cessation 00000000000000000000000000000000 -here 00000000000000000000000000000000 altar 00000000000110100011111001100111 Bowling 00100000000000000010001100100001 bowling-related 00000000000000000000000000000000 banquet 00000000000011000001010001000111 pleasurable 00000000000000000000000000000000 Cottrell 00100000000000000000000000000000 score-wise 00000000000000000000000000000000 Leftovers 00100000000000000000000000000000 GROUP'S 01000000000000000000000000000000 C.J.B. 01000000000000000000000000000000 Cutbacks 00100000000111110101011000100011 Uncertain 00100000000111100010110110010000 W.D. 01000000000000000000000000000000 dust-up 00000000000000000000000000000000 144,610 00000000000000000000000000000000 somethin 00000000000000000000000000000000 ya 00000000000000000000000000000000 Lorraine 00100000000000000000000000000000 busting 00000000001100101001001000110010 Ilminster 00100000000000000000000000000000 angels 00000000000010100101110101100011 demonologist 00000000000000000000000000000000 psychics 00000000000000000000000000000000 magician 00000000000000000000000000000000 dividend-related 00000000000000000000000000000000 gangbusters 00000000000000000000000000000000 Tales 00100000000100100101110101100011 Elm 00100000000000000000000000000000 Shangkun 00100000000000000000000000000000 Amityvilles 00100000000000000000000000000000 self-perpetuating 00000000000000000000000000000000 queried 00000000000000000000000000000000 Kurtz 00100000000000000000000000000000 sensibilities 00000000000000000000000000000000 ectoplasmic 00000000000000000000000000000000 68-year-old 00000000000000000000000000000000 semi-retired 00000000000000000000000000000000 bushy 00000000000000000000000000000000 undiplomatic 00000000000000000000000000000000 careen 00000000000000000000000000000000 position-squaring 00000000000000000000000000000000 slimy 00000000000000000000000000000000 tweed 00000000000000000000000000000000 Named 00100000000011001010010000110010 attic 00000000000000000000000000000000 Advest 00100000000111100011101000101000 rafters 00000000000000000000000000000000 foul-smelling 00000000000000000000000000000000 Mannington 00100000000000000000000000000000 fume-filled 00000000000000000000000000000000 cools 00000000000000000000000000000000 hobos 00000000000000000000000000000000 ghost-busting 00000000000000000000000000000000 non-religious 00000000000000000000000000000000 LeFevre 01000000000000000000000000000000 2500 00000000000000000000000000000000 self-starting 00000000000000000000000000000000 Cuddles 00100000000000000000000000000000 ghostly 00000000000000000000000000000000 vibrating 00000000000000000000000000000000 grudgingly 00000000011001000001001001110010 vial 00000000000000000000000000000000 cornstarch 00000000000000000000000000000000 groundup 00000000000000000000000000000000 saints 00000000000000000000000000000000 clerics 00000000000110111101100110110011 170.3 00000000000000000000000000000000 apparitions 00000000000000000000000000000000 chandeliers 00000000000000000000000000000000 1472.76 00000000000000000000000000000000 eyewitnesses 00000000000000000000000000000000 goings-on 00000000000000000000000000000000 carpenter 00001111111101000000001000001000 open-top 00000000000000000000000000000000 dripping 00000000000000000000000000000000 Pattenden 00100000000000000000000000000000 Alphonsus 00100000000000000000000000000000 theology 00000000000000000000000000000000 Bonaventure 00101111111001100100000000001000 Olean 00100000000000000000000000000000 exorcise 00000000000000000000000000000000 Keegan 00100000000000000000000000000000 obliges 00000000000000000000000000000000 earthbound 00000000000000000000000000000000 Langevin 00100000000000000000000000000000 prayers 00000000000000000000000000000000 185.59 00000000000000000000000000000000 314.09 00000000000000000000000000000000 Warrens 00100000000000000000000000000000 exorcist 00000000000000000000000000000000 hews 00000000000000000000000000000000 liturgy 00000000000000000000000000000000 pronounces 00000000000000000000000000000000 infestation 00000000000000000000000000000000 335.07 00000000000000000000000000000000 begs 00000000000000000000000000000000 abuzz 00000000000000000000000000000000 manhandled 00000000000000000000000000000000 tossing 00000000000000000000000000000000 hank 00000000000000000000000000000000 exorcisms 00000000000000000000000000000000 darkly 00000000000000000000000000000000 stagewhispers 00000000000000000000000000000000 priest 00000000000110001110000000001000 sprinkles 00000000000000000000000000000000 squirming 00000000000000000000000000000000 Selected 00100000000000000101101001000000 chatting 00000000000000000000000000000000 layman 00000000000111111100111110101000 solemnly 00000000000000000000000000000000 entourage 00000000000000000000000000000000 Lyrics 00100000000011000111110101100011 Torch 00100000000000000000000000000000 Raydiola 00100000000000000000000000000000 Reprinted 00100000000000000000000000000000 BROKERAGE 01000000000000001000000010110000 HIRING 01000000000010001110110001000000 languishes 00000000000000000000000000000000 faultlessly 00000000000000000000000000000000 Camilli 00100000000000000000000000000000 163,000 00000000000000000000000000000000 78,625 00000000000000000000000000000000 69,553 00000000000000000000000000000000 Household 00100000000000110000101010110000 1,300-member 00000000000000000000000000000000 SKILLED 01000000000101001000101000110000 intoxication 00000000000000000000000000000000 Bargain-hunting 00100000000000000000000000000000 bulldozer 00000000000000000000000000000000 solemn 00000000000000000000000000000000 unlabeled 00000000000000000000000000000000 taketh 00000000000000000000000000000000 giveth 00000000000000000000000000000000 Employee-benefit 00100000000000000000000000000000 Stafford 00101111111000100110100010001000 ALLWASTE 01000000000000000000000000000000 k 00000000000000000000000000000000 whiplash 00000000000000000000000000000000 Saveth 00100000000000000000000000000000 Rumack 00100000000000000000000000000000 completeness 00000000000000000000000000000000 recraft 00000000000000000000000000000000 DBL 01000000000000000000000000000000 DOWNSIZING 01000000000010011110011010100111 66,743 00000000000000000000000000000000 70,765 00000000000000000000000000000000 shorter-tenure 00000000000000000000000000000000 TEACH 01000000000011111011111110110010 THYSELF 01000000000000000000000000000000 employer-sponsored 00000000000000000000000000000000 Lowndes 00100000000000000000000000000000 MEA 01000000000000000000000000000000 CULPA 01000000000000000000000000000000 leaky 00000000000000000000000000000000 Ednie 00100000000000000000000000000000 WORK 01000000000111111111100010110111 detective-story 00000000000000000000000000000000 Croissier 00100000000000000000000000000000 STUDENTS 01000000000000000000011000110011 SHUN 01000000000001001001101110110010 flipping 00000000000000000000000000000000 621,624 00000000000000000000000000000000 retard 00000000000000000000000000000000 fraternities 00000000000000000000000000000000 postings 00000000000000001000110100100011 Fiery 00100000000001100001000010010000 11.80 00000000000000000000000000000000 geology 00000000000000000000000000000000 Skilled 00100000000101001000101000110000 Racine 00100000000000000000000000000000 746 00000000000000000000000000000000 Brazilians 00100000000110100111100110110011 crisscrossing 00000000000000000000000000000000 mouth-up 00000000000000000000000000000000 thankless 00000000000000000000000000000000 Thatcherism 00100000000000000000000000000000 Marxism 00100000000111100011010010100111 reprove 00000000000000000000000000000000 Britto 00100000000000000000000000000000 Mello 00100000000000000000000000000000 Alagoas 00100000000000000000000000000000 madly 00000000000000000000000000000000 Rede 00100000000000000000000000000000 Globo 00100000000000000000000000000000 hunter 00001111111000011010000000001000 maharajahs 00000000000000000000000000000000 underworked 00000000000000000000000000000000 Leonel 00100000000000000000000000000000 Janeiro 00100000000000000000000000000000 Marxist-leaning 00100000000000000000000000000000 Inacio 00100000000000000000000000000000 mend 00000000000000000000000000000000 vote-getters 00000000000000000000000000000000 Covas 00100000000000000000000000000000 Chinese-American 01000000000000000000000000000000 970 00000000000000000000000000000000 Maluf 00100000000000000000000000000000 Guilherme 00100000000000000000000000000000 Afif 00100000000000000000000000000000 Domingos 00100000000000000000000000000000 rope-sight 00000000000000000000000000000000 stare 00000000000111010101010110110010 teetering 00000000000110100000100000110010 inequalities 00000000000000000000000000000000 boiling 00000000000000000000000000000000 devises 00000000000000000000000000000000 Argentinian 00100000000000000000000000000000 Totally 00100000000000111000000001110010 trillion-dollar 00000000000000000000000000000000 Amaury 00100000000000000000000000000000 Souza 00100000000000000000000000000000 valiant 00000000000000100100011010010000 Mailson 00100000000000000000000000000000 Ferreira 00100000000000000000000000000000 Nobrega 00101111111110111000001010001000 muffled 00000000000000000000000000000000 accelerator 00000000000111000011011001100111 351 00000000000000000000000000000000 snaking 00000000000000000000000000000000 prize-fighter 00000000000000000000000000000000 shirt-sleeved 00000000000000000000000000000000 1721.4 00000000000000000000000000000000 Caters 00100000000010100001101000110010 Grandsire 00100000000000000000000000000000 cruzado 00000000000000000011000111001111 Shuxian 00100000000000000000000000000000 Treble 00100000000000000000000000000000 2120.5 00000000000000000000000000000000 Hosokawa 00100000000000000000000000000000 odd-sounding 00000000000000000000000000000000 inexperience 00000000000100010011111010100111 Koyata 00100000000000000000000000000000 Sparks 00100000000000000000010010000000 Feud 00100000000100101110110000100111 WHICH 01000000000111111111111001110010 Bowen 00101111111011001000001010001000 memorize 00000000000000000000000000000000 Voell 00100000000000000000000000000000 627,000 00000000000000000000000000000000 stifles 00000000000000000000000000000000 Mirante 00100000000000000000000000000000 non-Humana 01000000000000000000000000000000 kidney-stone 00000000000000000000000000000000 lithotripsy 00000000000000000000000000000000 Debt-Burdened 01000000000000000000000000000000 Seek 00100000000111011011001110110010 HEALTH-CARE 01000000000000000000000000000000 high-paying 00000000000000000000000000000000 anti-China 01000000000000000000000000000000 fee-for-service 00000000000000000000000000000000 highest-pitched 00000000000000000000000000000000 Proper 00100000001010000001000000010000 42,374 00000000000000000000000000000000 38,489 00000000000000000000000000000000 Moxley 00100000000000000000000000000000 physician-executive 00000000000000000000000000000000 Korn 00101111011101001100000010001000 Roommates 00100000000000000000000000000000 -combined 00000000000000000000000000000000 12-bed 00000000000000000000000000000000 2142.6 00000000000000000000000000000000 -some 00000000000000000000000000000000 cooperative-care 00000000000000000000000000000000 NYU 01000000000000000000000000000000 CHIEF 01001111111111111111111001110000 NURSING 01000000000111110000001010110000 philanthropist 00000000000000000000000000000000 Meharry 00100000000000000000000000000000 Underserved 00100000000000000000000000000000 mind-boggling 00000000000000000000000000000000 Change-ringing 00100000000000000000000000000000 71.5 00000000000000000000000000000000 codified 00000000000000000000000000000000 Woong 00100000000000000000000000000000 scruff 00000000000000000000000000000000 childish 00000000000110111011110110010000 carillons 00000000000000000000000000000000 Pacwest 00100000000000000000000000000000 19-building 00000000000000000000000000000000 14.97 00000000000000000000000000000000 1.342 00000000000000000000000000000000 22-acre 00000000000000000000000000000000 Amarillo 00100000000111000101101001101000 Y-MP8-232 01000000000000000000000000000000 Rent-A-Lease 01000000000000000000000000000000 19-story 00000000000000000000000000000000 250,000-square-foot 00000000000000000000000000000000 screeched 00000000000000000000000000000000 Camrys 00100000000000000000000000000000 839.4 00000000000000000000000000000000 pealing 00000000000000000000000000000000 Anglian 00100000000000000000000000000000 flightiness 00000000000000000000000000000000 discos 00000000000000000000000000000000 water-authority 00000000000000000000000000000000 Buoyed 00100000000101101111010000110010 953.8 00000000000000000000000000000000 949.3 00000000000000000000000000000000 hoards 00000000000000000000000000000000 Junk-portfolio 00100000000000000000000000000000 comforted 00000000000000000000000000000000 growth-and-income 00000000000000000000000000000000 Avi 00100000000000000000000000000000 Nachmany 00100000000000000000000000000000 colloquium 00000000000000000000000000000000 Collegiate 00100000000000000000000000000000 pie-in-the-sky 00000000000000000000000000000000 powertrain 00000000000000000000000000000000 belfries 00000000000000000000000000000000 discord 00000000000011101111111010100111 still-to-be-named 00000000000000000000000000000000 sometimes-exhausting 00000000000000000000000000000000 octogenarians 00000000000000000000000000000000 Donbas 00100000000000000000000000000000 START 01000000000111101001110110110010 Ukrainian 00100000000000000000000000000000 Ortegas 00100000000000000000000000000000 nuclear-arms 00000000000000000000000000000000 demilitarize 00000000000000000000000000000000 779.8 00000000000000000000000000000000 Beltway-itis 00100000000000000000000000000000 clammy 00000000000000000000000000000000 importation 00000000000000000000000000000000 50.46 00000000000000000000000000000000 intra-administration 00000000000000000000000000000000 perestrokia 00000000000000000000000000000000 muzzles 00000000000000000000000000000000 Kissinger 00101111111110100000110010001000 Letting 00100000000111111000001101000000 7.160 00000000000000000000000000000000 church-goers 00000000000000000000000000000000 Negro 00100000000000000000000000000000 attorney-consultant 00000000000000000000000000000000 1614 00000000000000000000000000000000 monsieur 00000000000000000000000000000000 Michels 00100000000000000000000000000000 Poduska 00100000000000000000000000000000 law-abiding 00000000000000000000000000000000 14. 00000000000000000000000000000000 189.8 00000000000000000000000000000000 rhythmically 00000000000000000000000000000000 long-dormant 00000000000000000000000000000000 resurrection 00000000000000000000000000000000 morning-session 00000000000000000000000000000000 parishioners 00000000000000000000000000000000 evensong 00000000000000000000000000000000 homicides 00000000000000000000000000000000 2210 00000000000000000000000000000000 Heiwa 00100000000000000000000000000000 invalidated 00000000001000111001010000110010 swirl 00000000000011001001001010110111 loveliest 00000000000000000000000000000000 2170 00000000000000000000000000000000 deters 00000000000000000000000000000000 Executions 00100000000110001011110101100011 heinous 00000000000000110011000010010000 resuscitating 00000000000000000000000000000000 meted 00000000000000000000000000000000 Busey 00100000000000000000000000000000 -Of 01000000000000000000000000000000 sentencings 00000000000000000000000000000000 ASLACTON 01000000000000000000000000000000 disprove 00000000000000000000000000000000 disparities 00000000001010101111111010100111 conclusively 00000000000000000000000000000000 Tailors 00100000000000000000000000000000 purport 00000000000110011011000110110010 legislate 00000000110001101111101110110010 government-funded 00000000000000000000000000000000 avec 00000000000000000000000000000000 Ideas 00100000000111101110100101100011 -Dorothy 01000000000000000000000000000000 2680 00000000000000000000000000000000 unintelligible 00000000000000000000000000000000 Narrowing 00100000000110001111010001000000 Kornreich 00100000000000000000000000000000 Rauch 00100000000000000000000000000000 change-ringing 00000000000000000000000000000000 child-safety 00000000000000000000000000000000 535,322 00000000000000000000000000000000 intercompany 00000000000000000000000000000000 Elkin 00100000000000000000000000000000 Thomasini 00100000000000000000000000000000 haggling 00000000000000000000000000000000 insurance-claims 00000000000000000000000000000000 29year 00000000000000000000000000000000 donned 00000000000000000000000000000000 Tombrello 00100000000000000000000000000000 mushy 00000000000000000000000000000000 heroin 00000000000001001010110000100001 post-hearing 00000000000000000000000000000000 3642.90 00000000000000000000000000000000 Bettencourt 00100000000000000000000000000000 10-gallon 00000000000000000000000000000000 flickered 00000000000000000000000000000000 blared 00000000000000000000000000000000 Merton 00100000000000000000000000000000 figuratively 00000000000000000000000000000000 Shake 00100000001111010110010110110010 Melanie 00100000000000000000000000000000 Carvain 00100000000000000000000000000000 Specialty 00100000000010000101010000110000 Dylex 00100000000000000000000000000000 BROWN-FORMAN 01000000000000000000000000000000 respite 00000000000111011011011001000111 tails 00000000000000000000000000000000 Lubkin 00100000000000000000000000000000 Applause 00100000000101110110011010100111 Vanessa 00100000000000000000000000000000 Marketplace 00100000000111111110111001000101 doctoring 00000000000000000000000000000000 2692.65 00000000000000000000000000000000 populace 00000000000111111101011001000101 patient-physician 00000000000000000000000000000000 half-full 00000000000000000000000000000000 Retention 00100000000000010011101101001111 luggage 00000000000111010011111010110000 elections-an 00000000000000000000000000000000 Wrangler 00100000000000000000000000000000 realign... 00000000000000000000000000000000 vehicle-production 00000000000000000000000000000000 inescapable 00000000000000000000000000000000 2,300 00000000000000000000000000000000 one-year-old 00000000000000000000000000000000 D.S. 01000000000000000000000000000000 260.5 00000000000000000000000000000000 laps 00000000000000000000000000000000 Anac 00100000000000000000000000000000 597.8 00000000000000000000000000000000 Twinsburg 00100000000000000000000000000000 410.5 00000000000000000000000000000000 Boake 00100000000000000000000000000000 150-point 00000000000000000000000000000000 Declines 00100000000111101111011010000011 1.1280 00000000000000000000000000000000 1.1270 00000000000000000000000000000000 toddlers 00000000000000000000000000000000 cumulatively 00000000000000000000000000000000 Infants 00100000000101001110011100110011 Small-lot 00100000000000000000000000000000 decal 00000000000000000000000000000000 83,950 00000000000000000000000000000000 123,000 00000000000000000000000000000000 136,000 00000000000000000000000000000000 F.S.L.I.C 01000000000000000000000000000000 COFFEE 01000000000100111001101110110000 74.35 00000000000000000000000000000000 Pan-American 01000000000000000000000000000000 Baris 00100000000000000000000000000000 safety-seat 00000000000000000000000000000000 semesters 00000000000000000000000000000000 Virgilio 00100000000000000000000000000000 380.80 00000000000000000000000000000000 5.2830 00000000000000000000000000000000 500.20 00000000000000000000000000000000 self-managing 00000000000000000000000000000000 -grows 00000000000000000000000000000000 sufficiency 00000000000000000000000000000000 machine-gun-toting 00000000000000000000000000000000 inhalation 00000000000000000000000000000000 soviet 00000000000000001000110100110000 Permission 00100000000100100101000100100111 Uzi-model 00100000000000000000000000000000 shoemaking 00000000000000000000000000000000 general-practitioner 00000000000000000000000000000000 Crashing 00100000000000100011100001000000 Performing 00100000000010001110100001000000 unleashing 00000000000000000000000000000000 cabin-crew 00000000000000000000000000000000 35549.44 00000000000000000000000000000000 132.00 00000000000000000000000000000000 undisturbed 00000000000000000000000000000000 23-month-old 00000000000000000000000000000000 fascism 00000000000000000000000000000000 synthesis 00000000000000000000000000000000 -it 00000000000000000000000000000000 plainclothes 00000000000000011100101001110000 colloquies 00000000000000000000000000000000 Survive 00100000000101111101010110110010 Communism 00100000000111001110110010100111 corporation-socialist 00000000000000000000000000000000 recklessness 00000000000000000000000000000000 162.3 00000000000000000000000000000000 spiritually 00000000000000000000000000000000 clicked 00000000000000000000000000000000 harmonic 00000000000000000000000000000000 911,606 00000000000000000000000000000000 -teetering 00000000000000000000000000000000 -they 00000000000000000000000000000000 Lure 00100000010110111111110110110010 law-governed 00000000000000000000000000000000 necklace 00000000000000000000000000000000 Pirelli 00100000000001100011010100101000 Isadore 00100000000000000000000000000000 pluralism 00000000001011111001110010100111 marginalizing 00000000000000000000000000000000 50.4 00000000000000000000000000000000 terroristic 00000000000000000000000000000000 perpetuating 00000000000000000000000000000000 crescendo 00000000000000000000000000000000 wellplaced 00000000000000000000000000000000 resubmit 00000000000000000000000000000000 2.89 00000000000000000000000000000000 crave 00000000000000000000000000000000 delete 00000000000000000000000000000000 274.2 00000000000000000000000000000000 199.6 00000000000000000000000000000000 121.2 00000000000000000000000000000000 furthers 00000000000000000000000000000000 Contracting 00100000000000000101100000111001 100.8 00000000000000000000000000000000 Public-works 00100000000000000000000000000000 non-building 00000000000000000000000000000000 behind-schedule 00000000000000000000000000000000 SHAREDATA 01000000000000000000000000000000 a-Monthly 01000000000000000000000000000000 Suisse-First 01000000000000000000000000000000 stronger-than-expected 00000000000000000000000000000000 CSFB 01000000000000000000000000000000 Eurodebt 00100000000000000000000000000000 banking-related 00000000000000000000000000000000 Campeau-related 00100000000000000000000000000000 Hann 00100000000000000000000000000000 ChemPlus 01000000000000000000000000000000 securities-price 00000000000000000000000000000000 1000 00000000000000000000000000000000 beggar-thy-neighbor 00000000000000000000000000000000 order-processing 00000000000000000000000000000000 Chapdelaine 00100000000000000000000000000000 customer-service 00000000000000000000000000000000 computer-service 00000000000000000000000000000000 Criticisms 00100000000111111011101000100011 Packaging 00100000001011001011111010110000 already-sizable 00000000000000000000000000000000 Packages 00100000000110111111110100100011 fragmentation 00000000000000000000000000000000 injury-prone 00000000000000000000000000000000 savvier 00000000000000000000000000000000 six-game 00000000000000000000000000000000 money-center 00000000000000000000000000000000 telecast 00000000000000000000000000000000 889,000 00000000000000000000000000000000 romps 00000000000000000000000000000000 Mercantilists 00100000000000000000000000000000 outdistanced 00000000000000000000000000000000 correlate 00000000000110100011011110110010 montgolfiere 00000000000000000000000000000000 126.6 00000000000000000000000000000000 renouncing 00000000000000000000000000000000 barking 00000000000000000000000000000000 high-rate 00000000000000000000000000000000 typographical 00000000000000000000000000000000 hi-tech 00000000000000000000000000000000 hunched 00000000000000000000000000000000 ledgers 00000000000000000000000000000000 abacuses 00000000000000000000000000000000 Deregulation 00100000000111001110011010100111 work-station 00000000000000000000000000000000 Hatakeyama 00100000000000000000000000000000 higher-salaried 00000000000000000000000000000000 copycats 00000000000000000000000000000000 Ungermann-Bass 01000000000000000000000000000000 computer-network 00000000000000000000000000000000 yearbooks 00000000000000000000000000000000 dog-eared 00000000000000000000000000000000 estimable 00000000000000000000000000000000 begot 00000000000000000000000000000000 safe-deposit 00000000000000000000000000000000 Raton 00100000000000010101100010100101 Boca 00100000000111101010011010101000 interloping 00000000000000000000000000000000 perimeter 00000000000000000000000000000000 Asada 00100000000000000000000000000000 printouts 00000000000000000000000000000000 attendee 00000000000000000000000000000000 sub-markets 00000000000000000000000000000000 Earns 00100000001100011101000000010010 Diceon 00100000000000000000000000000000 Boisvert 00100000000000000000000000000000 integrated-technologies 00000000000000000000000000000000 securities-trading 00000000000000000000000000000000 Varying 00100000000000011001000011000000 pound-deutsche 00000000000000000000000000000000 alphabet 00000000000000000000000000000000 typewriter 00000000000011011100001000100001 affliction 00000000000000000000000000000000 Matsuo 00100000000000000000000000000000 Toshimitsu 00100000000000000000000000000000 traceable 00000000000000000000000000000000 tailoring 00000000000000000000000000000000 sub-segments 00000000000000000000000000000000 corporatewide 00000000000000000000000000000000 Judie 00100000000000000000000000000000 unaffordable 00000000000000000000000000000000 spurs 00000000000000000000000000000000 Prayer 00100000000101010001101100100001 Panasonic 00100000000010111000001000110000 cross-licensing 00000000000000000000000000000000 Daignault 00100000000000000000000000000000 NEC-compatible 01000000000000000000000000000000 disapproves 00000000000000000000000000000000 Kazuhiko 00100000000000000000000000000000 Nishi 00100000000000000000000000000000 Ascii 00100000000000000000000000000000 PC-magazine 01000000000000000000000000000000 15-fold 00000000000000000000000000000000 Tateishi 00100000000000000000000000000000 non-economists 00000000000000000000000000000000 opaque 00000000000000000000000000000000 innovators... 00000000000000000000000000000000 Seiko 00100000000000000000000000000000 elbow 00000000000100100101111010110111 cash* 00000000000000000000000000000000 Analyses 00100000000111101100001000100011 retails 00000000000000000000000000000000 lavishing 00000000000000000000000000000000 100,000-guest 00000000000000000000000000000000 regrettable 00000000000000000000000000000000 advertises 00000000000000000000000000000000 colander 00000000000000000000000000000000 AT 01000000000000000000000100101010 OS 01000000000000000000000000000000 Eckhard 00100000000000000000000000000000 IBM-oriented 01000000000000000000000000000000 Connections 00100000000101101100010000100111 ComputerLand 01000000000111100000111100101000 segmenting 00000000000000000000000000000000 redoubling 00000000000000000000000000000000 Vladivostok 00100000000000000000000000000000 Siniscal 00100000000000000000000000000000 McCormack 01001111111000000111110000101001 creepiest 00000000000000000000000000000000 concoctions 00000000000000000000000000000000 outstandingly 00000000000000000000000000000000 zapping 00000000000000000000000000000000 -plus 00000000000000000000000000000000 107.03 00000000000000000000000000000000 Vasilenko 00100000000000000000000000000000 pine 00000000000000110010001000110000 Timing 00100000000111011001111000001111 high-balance 00000000000000000000000000000000 three-week 00000000000000000000000000000000 ovulation 00000000000000000000000000000000 conceiving 00000000000000000000000000000000 repeaters 00000000000000000000000000000000 ominously 00000000000000000000000000000000 rabbit 00000000000101101110000000001000 Etienne-Emile 01000000000000000000000000000000 Baulieu 00100000000000000000000000000000 rabbit-test 00000000000000000000000000000000 cervical 00000000000000000000000000000000 timbers 00000000000000000000000000000000 Genie 00100000000000000000000000000000 Langner 00100000000000000000000000000000 Stubblefield 00100000000000000000000000000000 Roussel-Uclaf 01000000000000000000000000000000 Eleanor 00100000000000000000000000000000 Smeal 00100000000000000000000000000000 Feminist 00100000000111110000000000110000 browbeat 00000000000000000000000000000000 scare-tactic 00000000000000000000000000000000 unsympathetic 00000000000000000000000000000000 2-5 00000000000000000000000000000000 population-control 00000000000000000000000000000000 queuing 00000000000000000000000000000000 stirrups 00000000000000000000000000000000 burbles 00000000000000000000000000000000 Roussel 00100000000000000000000000000000 small-company 00000000000000000000000000000000 anemics 00000000000000000000000000000000 suppository 00000000000000000000000000000000 logjam 00000000000000000000000000000000 Tropical 00100000110001010000001000110000 non-pregnant 00000000000000000000000000000000 trading-company 00000000000000000000000000000000 surgical-abortion 00000000000000000000000000000000 recognizably 00000000000000000000000000000000 reauthorization 00000000000000000000000000000000 pusillanimity 00000000000000000000000000000000 fertility-control 00000000000000000000000000000000 unblinking 00000000000000000000000000000000 uncritical 00000000000000000000000000000000 Kondo 00100000000000000000000000000000 Borneo 00100000000000000000000000000000 poof 00000000000000000000000000000000 witchcraft 00000000000000000000000000000000 financial-service 00000000000000000000000000000000 inbound 00000000000000000000000000000000 recalculations 00000000000000000000000000000000 sogo-shosha 00000000000000000000000000000000 feudal 00000000001000011000001000110000 Prof 00100000000000000000000000000000 loggers 00000000000000000000000000000000 repriced 00000000000000000000000000000000 Bucking 00100000000000000000000000000000 livid 00000000000000000000000000000000 Nissho-Iwai 01000000000000000000000000000000 Sarawak 00100000000000000000000000000000 Ethel 00100000000000000000000000000000 disapprove 00000000000000000000000000000000 program-driven 00000000000000000000000000000000 Schreyer 00100000000000000000000000000000 small... 00000000000000000000000000000000 consulate 00000000000000000000000000000000 marchers 00000000000000000000000000000000 Ichiro 00100000000000000000000000000000 carvers 00000000000000000000000000000000 halfhearted 00000000000000000000000000000000 natural-resources 00000000000000000000000000000000 fabricator 00000000000000000000000000000000 Warrenton 00100000000000000000000000000000 low* 00000000000000000000000000000000 penetration 00000000000111111110010010001111 Board-listed 00100000000000000000000000000000 faxes 00000000000101010001111000110011 Heightened 00100000000001001101010001000000 Pacheco 00100000000000000000000000000000 Rabin 00101111111001000110010010001000 red-figured 00000000000000000000000000000000 backstage 00000000000000000000000000000000 previewing 00000000000000000000000000000000 Stolen 00100000000101001101101001000000 perpetuates 00000000000000000000000000000000 milked 00000000000000000000000000000000 fortuitous 00000000000000000000000000000000 Cartoon 00100000000000000001101100100001 Rye 00100000000000000000000000000000 lesions 00000000000000000000000000000000 Valiant 00100000000000100100011010010000 celluloids 00000000000000000000000000000000 plant-sciences 00000000000000000000000000000000 Sahour 00100000000000000000000000000000 janitor 00000000000000000000000000000000 Sentencing 00100000000011101011000001100111 62,800 00000000000000000000000000000000 Beit 00100000000000000000000000000000 watercolor 00000000000000000000000000000000 Tahitian 00100000000000000000000000000000 Wayland 00100000000000000000000000000000 Pareo 00100000000000000000000000000000 verso 00000000000000000000000000000000 four-crate 00000000000000000000000000000000 air-waybill 00000000000000000000000000000000 Rubinfien 00100000000000000000000000000000 les 00000000000111101110010000011000 bonded 00000000000000000000000000000000 Al-Seyassah 01000000000000000000000000000000 Seacomb 00100000000000000000000000000000 mislaid 00000000000000000000000000000000 misrouted 00000000000000000000000000000000 black-figured 00000000000000000000000000000000 krater 00000000000000000000000000000000 Bund 00100000000000000000000000000000 vase 00000000000000000000000000000000 Charlottesville 00100000000000000000000000000000 circuitous 00000000000000000000000000000000 Nairobi 00100000000000000000000000000000 Anthropology 00100000000000000000000000000000 Mayan 00100000000000000000000000000000 Aztec 00100000000000000000000000000000 Mixtec 00100000000000000000000000000000 Zapotec 00100000000000000000000000000000 archaeological 00000000000000000000000000000000 Sardina 00100000000000000000000000000000 Elisabeth 00100000000000000000000000000000 Stertz 00100000000000000000000000000000 Acapulco 00100000000000000000000000000000 sheaf 00000000000000000000000000000000 gauging 00000000000000000000000000000000 Romantic 00100000000000001011011010010000 Friedrich 00100000000000000000000000000000 melancholy 00000000000000000000000000000000 Jena 00100000000000000000000000000000 Trompe 00100000000000000000000000000000 l'oeil 00000000000000000000000000000000 Kennett 00100000000000000000000000000000 contestants 00000000000000001010000110110011 95.09 00000000000000000000000000000000 Saudis 00100000000111101110111110110011 rectangle 00000000000000000000000000000000 stereotyped 00000000000000000000000000000000 Fahd 00101111111010001000010000101000 Pillay 00100000000000000000000000000000 retort 00000000000000000000000000000000 forger 00000000000000000000000000000000 faking 00000000000110011101111101000000 seaboard 00000000000000000000000000000000 Lowenthal 00100000000000000000000000000000 Escorts 00100000000111100101100110001001 J.Y. 01000000000000000000000000000000 88,500 00000000000000000000000000000000 1988-model 00000000000000000000000000000000 1.6-liter 00000000000000000000000000000000 fuel-injected 00000000000000000000000000000000 denominator 00000000000000000000000000000000 cap. 00000000000000000000000000000000 Tracer 00100000000000000000000000000000 impedes 00000000000000000000000000000000 frontal 00000000000000000000000000000000 reinstalled 00000000000000000000000000000000 crankcase 00000000000000000000000000000000 strainers 00000000000000000000000000000000 1989-model 00000000000000000000000000000000 Broncos 00100000000000000000000000000000 greenmailer 00000000000000000000000000000000 automotive-lighting 00000000000000000000000000000000 26.2 00000000000000000000000000000000 single-employer 00000000000000000000000000000000 Termination 00100000000111111110101101001111 oilman 00001111111000000111100000110101 telephone-information 00000000000000000000000000000000 lower-court 00000000000000000000000000000000 raucous 00000000000000000000000000000000 Bears-Cleveland 01000000000000000000000000000000 stoked 00000000000000000000000000000000 narration 00000000000000000000000000000000 hitched 00000000000000000000000000000000 don 00001111111000000000110000011000 Taizo 00100000000000000000000000000000 Samaritans 00100000000000000000000000000000 deterred 00000000000111100001110000110010 Kafkaesque 00100000000000000000000000000000 intermixed 00000000000000000000000000000000 recounting 00000000000000000000000000000000 airtime 00000000000000000000000000000000 Cardiff 00100000000000000000000000000000 direct-investment 00000000000000000000000000000000 Mitzel 00100000000000000000000000000000 exposure... 00000000000000000000000000000000 dime 00000000000111111111000001000111 latch 00000000000000000000000000000000 10.19 00000000000000000000000000000000 it... 00000000000000000000000000000000 transparent... 00000000000000000000000000000000 deduces 00000000000000000000000000000000 Stibel 00100000000000000000000000000000 Impediments 00100000000000000000000000000000 11.10 00000000000000000000000000000000 howl 00000000000000000000000000000000 triple-C 01000000000000000000000000000000 double-hamburger 00000000000000000000000000000000 earthquake... 00000000000000000000000000000000 latching 00000000000000000000000000000000 94.2 00000000000000000000000000000000 46.6 00000000000000000000000000000000 Northrup 00100000000000000000000000000000 field-crop-seeds 00000000000000000000000000000000 Creswell 00100000000000000000000000000000 Munsell 00100000000000000000000000000000 Fultz 00100000000000000000000000000000 Zirbel 00100000000000000000000000000000 Wegener 00100000000000000000000000000000 GUIDE 01000000000111110001111010110111 Wieden 00100000000000000000000000000000 trade-ad 00000000000000000000000000000000 sportif 00000000000000000000000000000000 ALCOHOL 01000000000010000011110000100001 KOFY 01000000000000000000000000000000 KOFY-FM 01000000000000000000000000000000 RXDC 01000000000000000000000000000000 Amazonian 00100000000000000000000000000000 Tigue 00100000000000000000000000000000 campfire 00000000000000000000000000000000 divers 00000000000110000100100000110011 valve 00000000000100100101000011100111 narratives 00000000000000000000000000000000 Beech-Nut 01000000000000000000000000000000 Nutrition 00100000000000010011001101100001 cosmologies 00000000000000000000000000000000 Hodgkin 00100000000000000000000000000000 weed-killing 00000000000000000000000000000000 spurns 00000000000000000000000000000000 Izquierda 00100000000000000000000000000000 Unida 00100000000000000000000000000000 Satrum 00100000000000000000000000000000 growth-oriented 00000000000000000000000000000000 ailments 00000000000111100100001010100011 lessening 00000000000010100111010001000000 Solchaga 00100000000000000000000000000000 itinerary 00000000000000000000000000000000 Landis 00100000000000000000000000000000 Corp.:8.50 00100000000000000000000000000000 1,000:8.55 00000000000000000000000000000000 out-and-out 00000000000000000000000000000000 51.25 00000000000000000000000000000000 majestically 00000000000000000000000000000000 .9.76 00000000000000000000000000000000 Lauderhill 00100000000000000000000000000000 ravines 00000000000000000000000000000000 Noriegan 00100000000000000000000000000000 fulminations 00000000000000000000000000000000 unpeace 00000000000000000000000000000000 flicking 00000000000000000000000000000000 shootout 00000000000000000000000000000000 interleukin-2 00000000000000000000000000000000 clamped 00000000000000000000000000000000 1.457 00000000000000000000000000000000 launderers 00000000000000000000000000000000 gaping 00000000000000000000000000000000 4.898 00000000000000000000000000000000 more-attractive 00000000000000000000000000000000 3.253 00000000000000000000000000000000 5.276 00000000000000000000000000000000 shad 00001111111000100101000010001000 anti-clotting 00000000000000000000000000000000 Boehringer-Ingleheim 01000000000000000000000000000000 Thomae 00100000000000000000000000000000 Behringwerke 00100000000000000000000000000000 blood-clot 00000000000000000000000000000000 clot-reducing 00000000000000000000000000000000 451.37 00000000000000000000000000000000 5.00 00000000000000000000000000000000 432.61 00000000000000000000000000000000 528.56 00000000000000000000000000000000 Tasurinchi 00100000000000000000000000000000 0.47 00000000000000000000000000000000 438.15 00000000000000000000000000000000 locking-in 00000000000000000000000000000000 Tax-loss 00100000000000000000000000000000 superficially 00000000000000000000000000000000 anthropology 00000000000000000000000000000000 Beige 00100000001011110010001000110000 yoke 00000000000000000000000000000000 Mid-State 01000000000000000000000000000000 ShowBiz 01000000000000000000000000000000 tidily 00000000000000000000000000000000 un-Westernizable 01000000000000000000000000000000 characterizes 00000000000000000000000000000000 super-exciting 00000000000000000000000000000000 recalcitrant 00000000000000000000000000000000 Clive 00100000000000000000000000000000 pre-cooked 00000000000000000000000000000000 tumor-suppressors 00000000000000000000000000000000 growth-suppressing 00000000000000000000000000000000 Oncogenes 00100000000000000000000000000000 Mask 00100000000100001111001010110111 oncogene 00000000000000000000000000000000 Mascarita 00100000000000000000000000000000 cancer-susceptible 00000000000000000000000000000000 Dedham 00100000000000000000000000000000 supressor 00000000000000000000000000000000 birthmark 00000000000000000000000000000000 retinal 00000000000000000000000000000000 Thaddeus 00100000000000000000000000000000 countermove 00000000000000000000000000000000 fingered 00000000000000000000000000000000 cancer-suppressors 00000000000000000000000000000000 wine-dark 00000000000000000000000000000000 unmask 00000000000000000000000000000000 tumor-suppressing 00000000000000000000000000000000 inactivation 00000000000000000000000000000000 prostate 00000000000111101001101011100001 cervix 00000000000000000000000000000000 Plantation 00100000000000000000000000000000 two-hit 00000000000000000000000000000000 ferreting 00000000000000000000000000000000 geneticist 00000000000000000000000000000000 snippets 00000000000000000000000000000000 ethnography 00000000000000000000000000000000 high-strung 00000000000000000000000000000000 biologist 00000000000001001111011110110101 Wilm 00100000000000000000000000000000 bowel 00000000000000000000000000000000 progressing 00000000000000000000000000000000 Zuratas 00100000000000000000000000000000 Fearon 00100000000000000000000000000000 tedious 00000000001100011100011010010000 36-day 00000000000000000000000000000000 deletions 00000000000000000000000000000000 Zen-like 00100000000000000000000000000000 experimentally 00000000000000000000000000000000 crawled 00000000000000000000000000000000 act... 00000000000000000000000000000000 nomadic 00000000000000000000000000000000 deletion 00000000000000000000000000000000 untamed 00000000000000000000000000000000 unknowingly 00000000000000000000000000000000 cancer-suppressing 00000000000000000000000000000000 cancer-gene 00000000000000000000000000000000 Whitehead 00101111111001101101000010001000 mutated 00000000000000000000000000000000 well-tailored 00000000000000000000000000000000 cosmopolitan 00000000001100001000101000110000 Bodmer 00100000000000000000000000000000 Hoffmann-La 01000000000000000000000000000000 spackle 00000000000000000000000000000000 growth-controlling 00000000000000000000000000000000 221.4 00000000000000000000000000000000 genesis 00000000000000000000000000000000 Humpty 00100000000000000000000000000000 Dumpty 00100000000000000000000000000000 glimmer 00000000000111111100100101111111 autions 00000000000000000000000000000000 lower-than-forecast 00000000000000000000000000000000 federal-court 00000000000000000000000000000000 Nautilus 00100000000010111000110100101000 conventioners 00000000000000000000000000000000 bacteria-free 00000000000000000000000000000000 long-shelf-life 00000000000000000000000000000000 pasteurized 00000000000000000000000000000000 heat-using 00000000000000000000000000000000 advisable 00000000000000000000000000000000 billion-pound 00000000000000000000000000000000 over-capacity 00000000000000000000000000000000 corrupting 00000000000000110111011101000000 scornful 00000000000000000000000000000000 region-by-region 00000000000000000000000000000000 inti 00000000000000000000000000000000 Dain-sponsored 00100000000000000000000000000000 Kinnard 00100000000000000000000000000000 misunderstood 00000010111001010100010000110010 rhino 00000000000000000000000000000000 Andes 00100000000000000000000000000000 High-Grade 01000000000000000000000000000000 aseptically 00000000000000000000000000000000 Table 00100000000111001110101101100111 Cohodes 00100000000000000000000000000000 spuds 00000000000000000000000000000000 effort... 00000000000000000000000000000000 contracted-for 00000000000000000000000000000000 230-215 00000000000000000000000000000000 Tube 00100000000001000100111000000001 53%-owned 00000000000000000000000000000000 3057 00000000000000000000000000000000 Maoists 00100000000000000000000000000000 445 00000000000000000000000000000000 single-handed 00000000000000000000000000000000 flinging 00000000000000000000000000000000 seven-million-ton 00000000000000000000000000000000 Massicotte 00100000000000000000000000000000 depredations 00000000000000000000000000000000 strands 00000000000000000000000000000000 French-language 00100000000000000000000000000000 outsells 00000000000000000000000000000000 weaves 00000000000000000000000000000000 fable 00000000000000000000000000000000 18-month-old 00000000000000000000000000000000 province-wide 00000000000000000000000000000000 Donohue 00100000001011001111111100101000 highlands 00000000000000000000000000000000 Caisse 00101111111110111100101000101000 Delwin 00100000000000000000000000000000 Giroux 00100000000000000000000000000000 Integra-A 01000000000000000000000000000000 Pierre-Karl 01000000000000000000000000000000 Straus 00100000000000000000000000000000 despised 00000000000000000000000000000000 Farrar 00100000000000000000000000000000 beta-blocker 00000000000000000000000000000000 high-blood-pressure 00000000000000000000000000000000 Lorex 00100000000000000000000000000000 Synthelabo 00100000000000000000000000000000 mandatory-retirement 00000000000000000000000000000000 deprives 00000000000000000000000000000000 age-discrimination 00000000000000000000000000000000 polluters 00000000000000000000000000000000 Ment 00100000000000000000000000000000 referees 00000000000000000000000000000000 ORGANIZED 01000000000010001001101001000000 CRIME 01000000000101111101110010100111 Strike 00100000000111101111101010110111 magnificently 00000000000000000000000000000000 crime-fighting 00000000000000000000000000000000 Ushuaia 00100000000000000000000000000000 Ensrud 00100000000000000000000000000000 wine-buying 00000000000000000000000000000000 WHITMAN 01001111111001101111000100001000 RANSOM 01000000000100101110000000001000 204-lawyer 00000000000000000000000000000000 Barell 00100000000000000000000000000000 Maged 00100000000000000000000000000000 Riad 00100000000000000000000000000000 SKIRTS 01000000001101101111000000010010 doted 00000000000000000000000000000000 Dominus 00100000000000000000000000000000 drunk-driving 00000000000000000000000000000000 Opus 00100000000000000000000000000000 Siegler 00101111111001101111111010101000 sexist 00000000000000000000000000000000 countersuing 00000000000000000000000000000000 Chardonnays 00100000000000000000000000000000 Chardonnay 00100000000000000000000000000000 Grgich 00100000000000000000000000000000 Cellar 00100000000000000000000000000000 creams 00000000000000000000000000000000 Cedric 00100000000000000000000000000000 27th 00000000000000000000000000000000 6.36 00000000000000000000000000000000 Clemens 00100000000000000000000000000000 ravenous 00000000000000000000000000000000 Terrace 00100000000000000000000000000000 69.1 00000000000000000000000000000000 53.6 00000000000000000000000000000000 winger 00000000000000000000000000000000 87.4 00000000000000000000000000000000 Brannon 00100000000000000000000000000000 54.50 00000000000000000000000000000000 gymnastics 00000000000000000000000000000000 1,874,000 00000000000000000000000000000000 V-22 00100000000000000000000000000000 Osprey 00100000000000000000000000000000 tilt-rotor 00000000000000000000000000000000 next-generation 00000000000000000000000000000000 sticker-shock 00000000000000000000000000000000 production-rate 00000000000000000000000000000000 skill-dilution 00000000000000000000000000000000 1,754,000 00000000000000000000000000000000 Puget 00100000000000000000000000000000 sparing 00000000000000000000000000000000 Weatherly 00100000000000000000000000000000 six-bottle 00000000000000000000000000000000 reconfigure 00000000000000000000000000000000 15.43 00000000000000000000000000000000 -Dell 01000000000000000000000000000000 KC-135 01000000000000000000000000000000 KC-135s 01000000000000000000000000000000 re-thought 00000000000000000000000000000000 Keehn 00100000000000000000000000000000 Brownstein 00100000000000000000000000000000 industrial-product 00000000000000000000000000000000 Owner 00100000000011111111110000110101 ripen 00000000000000000000000000000000 Northy 00100000000000000000000000000000 wellhead 00000000000000000000000000000000 still-undeveloped 00000000000000000000000000000000 insofar 00000000000000000000000000000000 Koerner 00100000000000000000000000000000 Grange 00100000000000000000000000000000 Polar 00100000000000000000000000000000 Prater 00100000000000000000000000000000 unclaimed 00000000000000000000000000000000 vow 00000000000100011110000110110010 golfing 00000000000000000000000000000000 Ziff 00100000000000000000000000000000 Unico 00100000000000000000000000000000 Prudhoe 00100000000010011010011010101000 Secilia 00100000000000000000000000000000 Stoneman 00100000000000000000000000000000 bog 00000000000000000000000000000000 Solaia 00100000000000000000000000000000 Antinori 00100000000000000000000000000000 N.C.-based 01000000000000000000000000000000 Piero 00100000000000000000000000000000 Barbaresco 00100000000000000000000000000000 Gaja 00100000000000000000000000000000 redlining 00000000000000000000000000000000 Corton-Charlemagne 01000000000000000000000000000000 Coche-Dury 01000000000000000000000000000000 Canyon 00100000000011110010100010100101 hers 00000000000000000000000000000000 murmuring 00000000000000000000000000000000 8.44 00000000000000000000000000000000 Forty 00100000000111001111000011000000 three-digit 00000000000000000000000000000000 Zweibel 00100000000000000000000000000000 consentual 00000000000000000000000000000000 813.4 00000000000000000000000000000000 commanded 00000000000100001001010000110010 757.4 00000000000000000000000000000000 Collateralized 00100000000011100010100110110000 1989-3 00000000000000000000000000000000 high-polluting 00000000000000000000000000000000 248.3 00000000000000000000000000000000 double-A-rated 01000000000000000000000000000000 BCI 01000000000000000000000000000000 GRP 01000000000000000000000000000000 posterity 00000000000000000000000000000000 1989-1 00000000000000000000000000000000 Domaine 00100000000000000000000000000000 8.99 00000000000000000000000000000000 RCSB 01000000000000000000000000000000 50.9375 00000000000000000000000000000000 Landonne 00100000000000000000000000000000 101.95 00000000000000000000000000000000 17.06 00000000000000000000000000000000 Rotie 00100000000000000000000000000000 autobiographical 00000000000000000000000000000000 Guigal 00100000000000000000000000000000 encroaching 00000000000000000000000000000000 17.19 00000000000000000000000000000000 1,908 00000000000000000000000000000000 displeases 00000000000000000000000000000000 Comtes 00100000000000000000000000000000 Taittinger 00100000000000000000000000000000 294.6 00000000000000000000000000000000 creditably 00000000000000000000000000000000 Provost 00100000000000000000000000000000 247,000 00000000000000000000000000000000 cuvees 00000000000000000000000000000000 Hiltons 00100000000000000000000000000000 Sauternes 00100000000000000000000000000000 priciest 00000000000000000000000000000000 sound-alike 00000000000000000000000000000000 Helping 00100000000111001010111000110010 crooned 00000000000000000000000000000000 Wanna 00100000000000000000000000000000 bearable 00000000000000000000000000000000 Laird 00101111111100001010000100001000 reaffirms 00000000000000000000000000000000 impunity 00000000000000000000000000000000 imitate 00000000000000000000000000000000 Riserva 00100000000000000000000000000000 Knife 00100000000111010101110000000001 montgolfing 00000000000000000000000000000000 Walkin 00100000000000000000000000000000 vowel 00000000000000000000000000000000 repositories 00000000000000000000000000000000 funn-eeee 00000000000000000000000000000000 Lipman 00100000000000000000000000000000 Buhrmann-Tetterode 01000000000000000000000000000000 tinker 00001111110010110101001000001000 away-from-home 00000000000000000000000000000000 Benelux 00100000000000000000000000000000 Invercon 00100000000000000000000000000000 Papermils 00100000000000000000000000000000 21.25-a-share 00000000000000000000000000000000 Rieslings 00100000000000000000000000000000 Trockenbeerenauslesen 00100000000000000000000000000000 142.32 00000000000000000000000000000000 142.17 00000000000000000000000000000000 funn-ih 00000000000000000000000000000000 rarefied 00000000000000000000000000000000 percussive 00000000000000000000000000000000 Journals 00100000000111101110000100100011 overdoing 00000000000000000000000000000000 harping 00000000000000000000000000000000 377.80 00000000000000000000000000000000 376.80 00000000000000000000000000000000 -consented 00000000000000000000000000000000 lotions 00000000000000000000000000000000 electrical-products 00000000000000000000000000000000 Ash 00100000000110011110000000001000 Perignon 00100000000000000000000000000000 massed 00000000000000000000000000000000 Halle 00100000000000000000000000000000 Schwerin 00100000000000000000000000000000 Reached 00100000000011010000010000110010 Dom 00100000000000000000000000000000 candlelight 00000000000000000000000000000000 Lubyanka 00100000000000000000000000000000 persecuted 00000000000000000000000000000000 Muscovites 00100000000000000000000000000000 splinter 00000000000000000000000000000000 rectified 00000000000000000000000000000000 clubbed 00000000000000000000000000000000 Champagnes 00100000000000000000000000000000 Yugoslavia 00100000000111101100111101101000 dispersed 00000000000010100101101001000000 Albanians 00100000000000000000000000000000 W.N. 01000000000000000000000000000000 Azem 00100000000000000000000000000000 Vlasi 00100000000000000000000000000000 inciting 00000000000000000000000000000000 22-month-old 00000000000000000000000000000000 Zellers 00100000000000000000000000000000 alto 00001111111000000100100100011101 airy 00000000000000000000000000000000 ceasefire 00000000000000000000000000000000 USS 01000000000000000000000000000000 enunciation 00000000000000000000000000000000 five-month-old 00000000000000000000000000000000 Tipasa 00100000000000000000000000000000 Algiers 00100000000000000000000000000000 suvivors 00000000000000000000000000000000 vowels 00000000000000000000000000000000 amnesty 00000000000000000000101000111001 Fossan 00100000000000000000000000000000 construction-management 00000000000000000000000000000000 Montgolfier 00100000000000000000000000000000 52,000 00000000000000000000000000000000 2,440 00000000000000000000000000000000 2,888 00000000000000000000000000000000 NEKOOSA 01000000000111100001001010101000 Cru 00100000000000000000000000000000 Hani 00100000000000000000000000000000 pension-insurance 00000000000000000000000000000000 responsiblilty 00000000000000000000000000000000 Haut-Brion 01000000000000000000000000000000 1191.86 00000000000000000000000000000000 Lafite-Rothschild 01000000000000000000000000000000 216.74 00000000000000000000000000000000 3416.81 00000000000000000000000000000000 129.38 00000000000000000000000000000000 0.11 00000000000000000000000000000000 130.09 00000000000000000000000000000000 0.0040 00000000000000000000000000000000 -Bordeaux 01000000000000000000000000000000 Vowels 00100000000000000000000000000000 341,000 00000000000000000000000000000000 encompass 00000000000010111001101110110010 78.64 00000000000000000000000000000000 CRAY 01000000000111110110100100101000 markup 00000000000111100011100011000111 98.6 00000000000000000000000000000000 Dylan-influenced 00100000000000000000000000000000 -wines 00000000000000000000000000000000 470,000 00000000000000000000000000000000 805,000 00000000000000000000000000000000 l988 00000000000000000000000000000000 harddisk 00000000000000000000000000000000 543,000 00000000000000000000000000000000 200-person 00000000000000000000000000000000 230-person 00000000000000000000000000000000 760-megabyte 00000000000000000000000000000000 Dearie 00100000000000000000000000000000 hook-up 00000000000000000000000000000000 Blossom 00100000000000000000000000000000 Sauvignon 00100000000000000000000000000000 estimation 00000000000000000000000000000000 77,500 00000000000000000000000000000000 flabbergasted 00000000000000000000000000000000 Tatsuhara 00100000000000000000000000000000 Yamane 00100000000000000000000000000000 Mo.-based 00100000000000000000000000000000 hundreds-of-billions-of-yen 00000000000000000000000000000000 Chicago-Warsaw 01000000000000000000000000000000 Chicago-Helsinki 01000000000000000000000000000000 Miami-Madrid 01000000000000000000000000000000 Dallas-Barcelona 01000000000000000000000000000000 Chicago-Paris 01000000000000000000000000000000 Chicago-Manchester 01000000000000000000000000000000 Christy 00100000000000000000000000000000 transatlantic 00000000000001001000001010110000 PanAm 01000000000000000000000000000000 42.75 00000000000000000000000000000000 counterbids 00000000000000000000000000000000 786,700 00000000000000000000000000000000 Cellars 00100000000000000000000000000000 corrugated 00000000000000000000000000000000 Derel 00100000000000000000000000000000 less-cyclical 00000000000000000000000000000000 Killeen 00100000000000000000000000000000 softwood 00000000000000000000000000000000 40s 00000000000000000000000000000000 244.8 00000000000000000000000000000000 F-A-18 01000000000000000000000000000000 motors. 00000000000000000000000000000000 Angier 00100000000000000000000000000000 22.3 00000000000000000000000000000000 Reddington 00100000000000000000000000000000 C-12 00100000000000000000000000000000 Cinegrill 00100000000000000000000000000000 Undead 00100000000000000000000000000000 unconsciously 00000000000000000000000000000000 denigration 00000000000000000000000000000000 scapegoating 00000000000000000000000000000000 cogeneration-plant 00000000000000000000000000000000 followership 00000000000000000000000000000000 992,000 00000000000000000000000000000000 Career 00100000000111101100010000000001 Kearny 00100000000000000000000000000000 Thayer 00100000000000000000000000000000 Mahan 00100000000000000000000000000000 officialdom 00000000000101110000101101101000 overlooks 00000000000000000000000000000000 Beaumont 00100000000000000000000000000000 1,000-ship 00000000000000000000000000000000 Stirlen 00100000000000000000000000000000 Banerian 00100000000000000000000000000000 Gone 00100000000101101010110000110010 reclaiming 00000000000000000000000000000000 belting 00000000000000000000000000000000 gas-turbine 00000000000000000000000000000000 GOODY 01000000000000000000000000000000 chi-chi 00000000000000000000000000000000 Doskocil 00100000000101100011111100101000 bank-debt 00000000000000000000000000000000 121.6 00000000000000000000000000000000 merger-related 00000000000000000000000000000000 sowing 00000000000000000000000000000000 earrings 00000000000000000000000000000000 gossiping 00000000000000000000000000000000 heartwarmingly 00000000000000000000000000000000 wort 00000000000000000000000000000000 Grammys 00100000000000000000000000000000 scarfing 00000000000000000000000000000000 Aiken 00100000000000000000000000000000 fads 00000000000000000000000000000000 cod-liver 00000000000000000000000000000000 T.V. 01000000000000000000000000000000 Bonnell 00100000000000000000000000000000 Arvind 00100000000000000000000000000000 raves 00000000000000000000000000000000 Milne 00100000000000000000000000000000 cholesterol-fearing 00000000000000000000000000000000 Pysllium 00100000000000000000000000000000 legume 00000000000000000000000000000000 frugal 00000000000000000000000000000000 vegetarians 00000000000000000000000000000000 Boorse 00100000000000000000000000000000 Plantago 00100000000000000000000000000000 ovata 00000000000000000000000000000000 Designated 00100000000101000001101001000000 anti-diarrheal 00000000000000000000000000000000 fanatic 00000000000000000000000000000000 Branch 00100000000000101010110010000001 Horsham 00100000001110111010111100101000 urethra 00000000000000000000000000000000 duodenal 00000000000000000000000000000000 ulcers 00000000000000000000000000000000 gouty 00000000000000000000000000000000 hairy 00000000000000000000000000000000 colorlessness 00000000000000000000000000000000 grams 00000000000000000000000000000000 fleas 00000000000000000000000000000000 transluscent 00000000000000000000000000000000 sifted 00000000000000000000000000000000 laxatives 00000000000000000000000000000000 58-year-old 00000000000000000000000000000000 Fiberall 00100000000000000000000000000000 Elmhurst 00100000000000000000000000000000 teaspoons 00000000000000000000000000000000 low-density 00000000000000000000000000000000 lipoproteins 00000000000000000000000000000000 Chiodo 00100000000000000000000000000000 beet 00000000000100101111101110110000 Duchossois 00100000000000000000000000000000 Thrall 00100000000000000000000000000000 psyllium-fortified 00000000000000000000000000000000 Heartwise 00100000000000000000000000000000 Pond 00100000000010110110111000000001 counter-claims 00000000000000000000000000000000 ingest 00000000000000000000000000000000 starve 00000001111101111101010110110010 covetous 00000000000000000000000000000000 Lakshmipura 00100000000000000000000000000000 brags 00000000000000000000000000000000 regularity 00000000001101011110011010100111 grasping 00000000000011110110100001000000 lumped 00000000011001110010110000110010 unglamorous 00000000000000000000000000000000 sarsaparilla 00000000000000000000000000000000 Nux 00100000000000000000000000000000 vomica 00000000000000000000000000000000 choruses 00000000000000000000000000000000 sandy 00000000000000111010001000011000 dew 00000000000000000000000000000000 dryness 00000000000000000000000000000000 glean 00000000000000000000000000000000 sparkle 00000000000010001001001010110111 Parkhaji 00100000000000000000000000000000 swathed 00000000000000000000000000000000 crimson 00000000000000000000000000000000 chenille 00000000000000000000000000000000 Hakim 00101111111100101010101010001000 416,000 00000000000000000000000000000000 36,000 00000000000000000000000000000000 more-affordable 00000000000000000000000000000000 herniated 00000000000000000000000000000000 Covering 00100000010100010000000000001010 sport-utility 00000000000000000000000000000000 medically 00000000000000000000000000000000 uninsurable 00000000000000000000000000000000 mockery 00000000000000000000000000000000 Explorer 00100000000000000000000000000000 self-insure 00000000000000000000000000000000 small-employer 00000000000000000000000000000000 Heinhold 00100000000000000000000000000000 Ironweed 00100000000000000000000000000000 Abyss 00100000000000000000000000000000 Cab 00100000000001111100001000100001 dereliction 00000000000000000000000000000000 Patricelli 00100000000000000000000000000000 insurance-cost 00000000000000000000000000000000 Kennedy-Waxman 01000000000000000000000000000000 pegs 00000000000000000000000000000000 Crew 00100000000000000011010100000001 health-benefits 00000000000000000000000000000000 F-series 00100000000000000000000000000000 200-300 00000000000000000000000000000000 Chafic 00100000000000000000000000000000 Cotran 00100000000000000000000000000000 insurance-industry 00000000000000000000000000000000 unhealthy 00000000000011010001110100010000 auto-safety 00000000000000000000000000000000 Colonsville 00100000000000000000000000000000 insurance-rate 00000000000000000000000000000000 140.91 00000000000000000000000000000000 guile 00000000000000000000000000000000 Dompierre 00100000000000000000000000000000 29.75 00000000000000000000000000000000 713.5 00000000000000000000000000000000 Valrico 00100000000000000000000000000000 278.4 00000000000000000000000000000000 atrocious 00000000000000000000000000000000 Japanese-made 00100000000000000000000000000000 photocopiers 00000000000000000000000000000000 photofinishing 00000000000001110011111010110000 Semiconductors 00100000000111001110111001100011 236.8 00000000000000000000000000000000 Seasonally 00100000000101001111001001110010 then-52 00000000000000000000000000000000 slowball 00000000000000000000000000000000 shockproof 00000000000000000000000000000000 side-crash 00000000000000000000000000000000 Euphoria 00100000000000101110111010100111 70.6 00000000000000000000000000000000 Stuffing 00100000000000000000000000000000 pitcher-coach 00000000000000000000000000000000 Waning 00100000000010000111110110010000 incongruities 00000000000000000000000000000000 Ramos 00100000000001001000000001001000 perilous 00000000000000010110010010010000 China-bound 00100000000000000000000000000000 streams 00000000001011100010001000100011 Albanese 00100000000000000000000000000000 brute 00000000000111000100110110110000 Maureen 00100000000000000000000000000000 soon-to-be 00000000000000000000000000000000 Miron 00100000000000000000000000000000 White-haired 00100000000000000000000000000000 middle-of-the-road 00000000000000000000000000000000 dubs 00000000000000000000000000000000 16,072 00000000000000000000000000000000 1967-68 00000000000000000000000000000000 1974-75 00000000000000000000000000000000 80-plus 00000000000000000000000000000000 classed 00000000000000000000000000000000 Used 00100000000011010000110000110010 Barings 00100000000000000000000000000000 car-safety 00000000000000000000000000000000 Piers 00100000000000000000000000000000 doomsday 00000000000000000000000000000000 dread 00000000000000000000000000000000 602 00000000000000000000000000000000 headrests 00000000000000000000000000000000 front-seat 00000000000000000000000000000000 Hackman 00100000000000000000000000000000 Emigration 00100000000010101100011100000111 milestone 00000000000111000100111010110101 Anthong 00100000000000000000000000000000 lap-shoulder 00000000000000000000000000000000 381,000 00000000000000000000000000000000 J.V 01000000000000000000000000000000 62.625 00000000000000000000000000000000 cigar-chomping 00000000000000000000000000000000 anti-intellectual 00000000000000000000000000000000 blacklisting 00000000000000000000000000000000 -would 00000000000000000000000000000000 Joining 00100000000111111101101101000000 Boon-Sanwa 01000000000000000000000000000000 reestablish 00000000000100010111111110110010 unequal 00000000000001000011000110010000 Penang 00100000000000000000000000000000 Boon 00100000000111111111011100010111 confluence 00000000000000000000000000000000 high-mindedness 00000000000000000000000000000000 activism 00000000000111001100101001100111 Virgil 00100000000000000000000000000000 Tibbs 00100000000000000000000000000000 Anne-Marie 01000000000000000000000000000000 Sparta 00100000000000000000000000000000 characterizing 00000000000000000000000000000000 fastballs 00000000000000000000000000000000 Spitler 00100000000000000000000000000000 Shutter 00100000000000000000000000000000 lipsticks 00000000000000000000000000000000 asset-sale 00000000000000000000000000000000 animosity... 00000000000000000000000000000000 comprehension 00000000000000000000000000000000 Hogg 00100000000000000000000000000000 18,444 00000000000000000000000000000000 Jewboy 00100000000000000000000000000000 dweller 00000000000000000000000000000000 prodigal 00000000000000110111010011010000 lighter-than-air 00000000000000000000000000000000 Jaclyn 00100000000000000000000000000000 tolerable 00000000000000000000000000000000 kinfolk 00000000000000000000000000000000 peaches 00000000000000000000000000000000 repressing 00000000000000000000000000000000 uptight 00000000000000000000000000000000 Longwood 00100000000000000000000000000000 gunny 00000000000000000000000000000000 supper 00000000000000000000000000000000 Amin 00100000000000000000000000000000 glares 00000000000000000000000000000000 fleshpots 00000000000000000000000000000000 patriarchal 00000000000000000000000000000000 sniggeringly 00000000000000000000000000000000 revoltingly 00000000000000000000000000000000 lecherous 00000000000000000000000000000000 attacker 00000000000000000000000000000000 dystopia 00000000000000000000000000000000 Handmaid 00100000000000000000000000000000 Tale 00100000000110101101100101100111 Obligations 00100000000111111111111100000011 DeMunn 01000000000000000000000000000000 Masur 00100000000000000000000000000000 simple-minded 00000000000000000000000000000000 affectionate 00000000000000000000000000000000 patriarchy 00000000000000000000000000000000 pathetic 00000000000000000000000000000000 Latham 00100000000000000000000000000000 coward 00000000000000000000000000000000 sister-in-law 00000000000000000000000000000000 sniveling 00000000000000000000000000000000 prude 00000000000000000000000000000000 beanballs 00000000000000000000000000000000 bruises 00000000000000000000000000000000 bullies 00000000000000000000000000000000 drooling 00000000000000000000000000000000 dwarfed 00000000000000000000000000000000 Sis 00100000000000000000000000000000 masculine 00000000000000000000000000000000 Jalaalwalikraam 00100000000000000000000000000000 brushbacks 00000000000000000000000000000000 rapist 00000000000000000000000000000000 ogles 00000000000000000000000000000000 undress 00000000000000000000000000000000 trussed-up 00000000000000000000000000000000 flashbacks 00000000000000000000000000000000 feminism 00000000000000000000000000000000 Glenham 00100000000000000000000000000000 assailant 00000000000000000000000000000000 stalking 00000000000000000000000000000000 Textiles 00100000000111110011111010110000 mini-slip 00000000000000000000000000000000 push-up 00000000000000000000000000000000 marketing-communications 00000000000000000000000000000000 175.5 00000000000000000000000000000000 13.44 00000000000000000000000000000000 Braun 00100000000000000000000000000000 Knapp 00101111111111000001000010001000 1,150 00000000000000000000000000000000 35.6 00000000000000000000000000000000 grounds-care 00000000000000000000000000000000 663 00000000000000000000000000000000 double-B-minus 01000000000000000000000000000000 Putty 00100000000000000000000000000000 soulful 00000000000000000000000000000000 metal-workers 00000000000000000000000000000000 pleadingly 00000000000000000000000000000000 tyke 00000000000000000000000000000000 identity-management 00000000000000000000000000000000 Homeroom 00100000000000000000000000000000 fourth-grade 00000000000000000000000000000000 flunking 00000000000000000000000000000000 Alyce 00100000000000000000000000000000 Rolodexes 00100000000000000000000000000000 whale 00000000000000000100110100000001 breaded 00000000000000000000000000000000 uncannily 00000000000000000000000000000000 barber 00001111111000001011010100001000 rib 00000000000000000000000000000000 jab 00000000000000000000000000000000 Landor 00100000000000000000000000000000 Murder 00100000000101111111011010100111 Wrote 00100000000111111111010111000010 weed 00000000110010010110010110110010 viewings 00000000000000000000000000000000 accolades 00000000000000000000000000000000 Alligood 00100000000000000000000000000000 Carews 00100000000000000000000000000000 convocation 00000000000000000000000000000000 eastward 00000000000000000000000000000000 Pan-Alberta 01000000000000000000000000000000 LANDOR 01000000000000000000000000000000 pick-up 00000000000000000000000000000000 1610 00000000000000000000000000000000 1818 00000000000000000000000000000000 consumer-driven 00000000000000000000000000000000 smug 00000000000000000000000000000000 2890 00000000000000000000000000000000 twice-yearly 00000000000000000000000000000000 Avrett 00100000000000000000000000000000 agreed-upon 00000000000000000000000000000000 prim 00000000000000000000000000000000 Surprise 00100000000110101111101010110111 Developed 00100000010111101100010000110010 rainbow 00000000000010100100100000100001 2410 00000000000000000000000000000000 neckties 00000000000000000000000000000000 3636.06 00000000000000000000000000000000 preppy 00000000000000000000000000000000 floppy-tie 00000000000000000000000000000000 stereotype 00000000000000000000000000000000 cheeky 00000000000000000000000000000000 well-hit 00000000000000000000000000000000 stunted 00000000000000000000000000000000 290.1 00000000000000000000000000000000 52-store 00000000000000000000000000000000 40.5 00000000000000000000000000000000 286.8 00000000000000000000000000000000 clothiers 00000000000000000000000000000000 dabbling 00000000000000000000000000000000 stodgy 00000000001010011100011010010000 Barneys 00100000000000000000000000000000 status-conscious 00000000000000000000000000000000 Andover 00100000000011000011010100101000 36.87 00000000000000000000000000000000 forgets 00000000000110000000110111000010 Farmer 00100000000100100000110010110101 savoring 00000000000000000000000000000000 wood-and-brass 00000000000000000000000000000000 2676.60 00000000000000000000000000000000 nullified 00000000000000000000000000000000 backpacks 00000000000000000000000000000000 three-button 00000000000000000000000000000000 center-vented 00000000000000000000000000000000 two-button 00000000000000000000000000000000 tapered 00000000000000000000000000000000 pleated 00000000000000000000000000000000 Dresdner-ABD 01000000000000000000000000000000 Matsuda 00100000000000000000000000000000 replacement-car 00000000000000000000000000000000 Takamori 00100000000000000000000000000000 smoothed 00000000000000000000000000000000 Muscolina 00100000000000000000000000000000 then-husband 00000000000000000000000000000000 CAMPAIGN 01000000000011000111000001100111 serviced 00000000000000000000000000000000 Oriole 00100000000000000000000000000000 801.2 00000000000000000000000000000000 Pompano 00100000000000000000000000000000 Poulenc 00100000001100110111110100100001 submits 00000000001111001011000000010010 5,745,188 00000000000000000000000000000000 weatherbeaten 00000000000000000000000000000000 1,826,596 00000000000000000000000000000000 11,580 00000000000000000000000000000000 C415 00100000000000000000000000000000 35452.72 00000000000000000000000000000000 26.805 00000000000000000000000000000000 1.439 00000000000000000000000000000000 water-pollution 00000000000000000000000000000000 446.5 00000000000000000000000000000000 GMC 01000000000000000000000000000000 35.28 00000000000000000000000000000000 Quant 00100000000000000000000000000000 once-vast 00000000000000000000000000000000 governmemt 00000000000000000000000000000000 silver-conspiracy 00000000000000000000000000000000 Minpeco-Manufacturers 01000000000000000000000000000000 Eizenstat 00100000000000000000000000000000 Frazer 00100000000000000000000000000000 rail-car 00000000000000000000000000000000 35417.44 00000000000000000000000000000000 74%-owned 00000000000000000000000000000000 Railcar 00100000000000000000000000000000 Dugdale 00100000000000000000000000000000 VanSant 01000000000000000000000000000000 computing-services 00000000000000000000000000000000 1,059.04 00000000000000000000000000000000 41.725 00000000000000000000000000000000 46.50 00000000000000000000000000000000 circular 00000000000000010000001011100111 Spiro 00101111111011001100101100011000 155mm 00000000000000000000000000000000 quantitive 00000000000000000000000000000000 975,000 00000000000000000000000000000000 asbestos-abatement 00000000000000000000000000000000 21.72 00000000000000000000000000000000 10,674,500 00000000000000000000000000000000 Sows 00100000000000000000000000000000 13.78 00000000000000000000000000000000 1,070,000 00000000000000000000000000000000 Earle 00100000000000000000000000000000 Charlet 00100000000000000000000000000000 Upset 00100000000111001101110000110010 dotting 00000000000000000000000000000000 Motorcycle 00100000000011000100001000100001 mercenary 00000000000000000000000000000000 Viet 00100000000000000000000000000000 Broadstar 00100000000000000000000000000000 Najarian 00100000000000000000000000000000 Portrayal 00100000000000000000000000000000 Fremantle 00100000000000000000000000000000 E.C. 01000000000000000000000000000000 Scana 00100000000000000000000000000000 165,000 00000000000000000000000000000000 -agreed 00000000000000000000000000000000 yuk 00000000000110011011010001001000 Norwick 00100000000000000000000000000000 glowed 00000000000000000000000000000000 INTERPUBLIC 01000000000001011001010100101000 Cover-Up 01000000000000000000000000000000 Nesconset 00100000000000000000000000000000 scar 00000000000000000000000000000000 low-caliber 00000000000000000000000000000000 Stennett 00100000000000000000000000000000 brightening 00000000000000000000000000000000 skies 00000000000100100100111101100011 pulverizing 00000000000000000000000000000000 Phipps 00100000000000000000000000000000 gunners 00000000000000000000000000000000 Air-raid 00100000000000000000000000000000 sirens 00000000000000000000000000000000 2:25 00000000000000000000000000000000 summoning 00000000000000000000000000000000 Rennie 00100000000000000000000000000000 keenly 00000000000000000000000000000000 12.8-pound 00000000000000000000000000000000 market-affecting 00000000000000000000000000000000 126,000 00000000000000000000000000000000 Old-House 01000000000000000000000000000000 Pirate 00100000000000000000000000000000 1,430 00000000000000000000000000000000 expended 00000000000000000000000000000000 elevations 00000000000000000000000000000000 Bumkins 00100000000000000000000000000000 uselessly 00000000000000000000000000000000 Soups 00100000000000000000000000000000 Enquirer 00100000000000000000000000000000 down-to-earth 00000000000000000000000000000000 UFOs 01000000000000000000000000000000 enlightenment 00000000000111000001110010100111 coughing 00000000000000000000000000000000 pinheaded 00000000000000000000000000000000 1701.7 00000000000000000000000000000000 recyclability 00000000000000000000000000000000 Modifications 00100000000111111010011000100011 radioing 00000000000000000000000000000000 kidnap 00000000000000000000000000000000 mailmen 00000000000000000000000000000000 Finney 00100000000000000000000000000000 Invasion 00100000000110111100111001100111 Snatchers 00100000000000000000000000000000 Fireside 00100000000000000000000000000000 soulless 00000000000111111111001001010000 pod 00000000000000000000000000000000 2102.2 00000000000000000000000000000000 Majestic 00100000000000000000000000000000 Roswell 00100000000000000000000000000000 Communion 00100000000000000000000000000000 Ritter 00100000000000000000000000000000 popularly 00000000000000000000000000000000 sage 00000000000101011001000000001000 flower-inscribed 00000000000000000000000000000000 2117.1 00000000000000000000000000000000 2112.2 00000000000000000000000000000000 sweet-natured 00000000000000000000000000000000 puffed-up 00000000000000000000000000000000 marshmallow 00000000000000000000000000000000 Shiflett 00100000000000000000000000000000 Towering 00100000000000000000000000000000 Syb 00100000000000000000000000000000 president-finance 00000000000000000000000000000000 206.3 00000000000000000000000000000000 Jaap 00100000000000000000000000000000 Visker 00100000000000000000000000000000 Amsterdam-Rotterdam 01000000000000000000000000000000 polyproplene 00000000000000000000000000000000 gallant 00000000000000000000000000000000 Stauffer 00100000000000000000000000000000 multiplying 00000000000000000000000000000000 slimming 00000000000000000000000000000000 Rankin 00100000000000000000000000000000 fiber-related 00000000000000000000000000000000 rayon 00000000000000000000000000000000 arrows 00000000000000000000000000000000 bullet-proof 00000000000000000000000000000000 Kevlar 00100000000000000000000000000000 diagram 00000000000000000000000000000000 Sanderoff 00100000000000000000000000000000 Marvelon 00100000000000000000000000000000 veterinary 00000000000000000000000000000000 Veterinary 00100000000000000000000000000000 flu 00000000000011001010101100100001 pay-movie 00000000000000000000000000000000 omens 00000000000000000000000000000000 12,252 00000000000000000000000000000000 Departure 00100000000111011111110001100111 Reveals 00100000000011010011000000010010 Poison 00100000000100001100101000101000 Keynesians 00100000000000000000000000000000 devaluations 00000000000000000000101110000011 globalist 00000000000000000000000000000000 dyed-in-the-wool 00000000000000000000000000000000 Granada 00100000000001010101010100101000 Crunch 00100000000111100110101101100111 permanence 00000000000000000000000000000000 egg-on-the-face 00000000000000000000000000000000 deutsche 00000000000010010001111000101000 validating 00000000000000000000000000000000 423.5 00000000000000000000000000000000 alienated 00000000001110100001110000110010 Ridgefield 00100000000000000000000000000000 Albion 00100000000000000000000000000000 largish 00000000000000000000000000000000 ersatz 00000000000000000000000000000000 adepts 00000000000000000000000000000000 mavens 00000000000000000000000000000000 stickiness 00000000000000000000000000000000 supply-sider 00000000000000000000000000000000 chicago 00000000000111111110100001101000 reefs 00000000000000000000000000000000 parities 00000000000000000000000000000000 pound-DM 01000000000000000000000000000000 ndpoint 00000000000000000000000000000000 imperatives 00000000000000000000000000000000 low-tax 00000000000000000000000000000000 deregulated 00000000000101000101101001000000 shadowing 00000000000000000000000000000000 sta 00000000000000000000000000000000 10,000-circulation 00000000000000000000000000000000 incentive-maximizing 00000000000000000000000000000000 chairman-elect 00000000000000000000000000000000 British-born 00100000000000000000000000000000 24-year 00000000000000000000000000000000 Surrounded 00100000001101101111010000110010 boating 00000000000011001000101100100001 fastidious 00000000000000000000000000000000 high-handed 00000000000000000000000000000000 client-service 00000000000000000000000000000000 delegating 00000000000000000000000000000000 Orchestration 00100000000000000000000000000000 Ogilvyspeak 00100000000000000000000000000000 Vnet 00100000000000000000000000000000 rampage 00000000000000000000000000000000 top... 00000000000000000000000000000000 detailsman 00000000000000000000000000000000 whirling 00000000000000000000000000000000 decked 00000000000000000000000000000000 lame 00000000000101111010001000110000 cost-saving 00000000000000000000000000000000 Aloha 00100000000001011111110110101000 Muse 00100000000000000000000000000000 sublet 00000000000000000000000000000000 Steps 00100000000110001011001000100011 hard-hitting 00000000000000000000000000000000 conceivably 00000001101100000000001001110010 Georgescu 00100000000000000000000000000000 Partner 00100000000111111111101000110101 Cheryl 00100000000000000000000000000000 Yastrzemski 00100000000000000000000000000000 composting 00000000000000000000000000000000 6,542,000 00000000000000000000000000000000 683,000 00000000000000000000000000000000 Comparable 00100000000101100111010101010000 Bing 00100000000000000000000000000000 6.97 00000000000000000000000000000000 6.61 00000000000000000000000000000000 926.1 00000000000000000000000000000000 728.5 00000000000000000000000000000000 457.5 00000000000000000000000000000000 95.7 00000000000000000000000000000000 Mona 00100000000000000000000000000000 Practical 00100000000000001001000000010000 thumbing 00000000000000000000000000000000 -fawning 00000000000000000000000000000000 breakage 00000000011111000101110010100111 cozy 00000000000010010100011010010000 revenue-desperate 00000000000000000000000000000000 sipping 00000000000000000000000000000000 Nederlanden 00100000000000000000000000000000 McKinzie 01000000000000000000000000000000 certin 00000000000000000000000000000000 candybar 00000000000000000000000000000000 Lisbeth 00100000000000000000000000000000 Echeandia 00100000000000000000000000000000 Fla.-based 00100000000000000000000000000000 Confectioner 00100000000000000000000000000000 Uptick 00100000000000000000000000000000 182.6 00000000000000000000000000000000 Catastrophe 00100000000111000010101101100111 Wu 00101111111100100110110010001000 235.5 00000000000000000000000000000000 525.8 00000000000000000000000000000000 504.2 00000000000000000000000000000000 4.41 00000000000000000000000000000000 revolutionaries 00000000000000000000000000000000 house-painting 00000000000000000000000000000000 hustles 00000000000000000000000000000000 Estates 00100000000111110011110001100011 appartus 00000000000000000000000000000000 pounce 00000000000000000000000000000000 loudspeakers 00000000000000000000000000000000 WHAS 01000000000000000000000000000000 Kuvin 00100000000000000000000000000000 NBC-owned 01000000000000000000000000000000 Viva 00100000000000000000000000000000 viva 00000000000000000000000000000000 unthinkable 00000000000111011101110110010000 illogical 00000000000000000000000000000000 warily 00000000000000000000000000000000 Swearingen 00101111011100001100000010001000 Tambo 00100000000000000000000000000000 peacemakers 00000000000000000000000000000000 signifying 00000000000000000000000000000000 Zwelakhe 00100000000000000000000000000000 Speakers 00100000000111110010110101100011 Phineas 00100000000000000000000000000000 Leads 00100000110000000011000000010010 circled 00000000000000000000000000000000 unconditionally 00001010010000000000010001110010 unilaterally 00000000010101000000010001110010 WTVJ 01000000000000000000000000000000 Bew 00100000000000000000000000000000 Lobo 00100000000000000000000000000000 Arm 00100000000111111011110000110101 century-old 00000000000000000000000000000000 legion 00000000000000000000000000000000 EMC 01000000000000000000000000000000 150-megawatt 00000000000000000000000000000000 300-megawatt 00000000000000000000000000000000 Intercontinental 00100000000000001001101010110000 annnouncement 00000000000000000000000000000000 55-megawatt 00000000000000000000000000000000 Borax 00100000000000000000000000000000 Misubishi 00100000000000000000000000000000 utilize 00000000000110010111111110110010 Westinghouse-Mitsubishi 01000000000000000000000000000000 non-equity 00000000000000000000000000000000 Rangers 00100000000000000111101010101000 then-21 00000000000000000000000000000000 Ruettgers 00100000000000000000000000000000 AP600 01000000000000000000000000000000 2-8 00000000000000000000000000000000 bathroom 00000000000111110001110000100001 Survived 00100000000101000101010000110010 Richterian 00100000000000000000000000000000 mercifully 00000000000000000000000000000000 Longest 00100000000101110011010011010000 Marino 00100000000000000000000000000000 baseballs 00000000000000000000000000000000 Pale 00100000000011010110011010010000 Pachyderms 00100000000000000000000000000000 specialty-metals 00000000000000000000000000000000 confines 00000000000111111100011000001111 13-7 00000000000000000000000000000000 9-6 00000000000000000000000000000000 pre-quake 00000000000000000000000000000000 geologically 00000000000000000000000000000000 trifle 00000000000000000000000000000000 Rabia 00100000000000000000000000000000 8-2 00000000000000000000000000000000 Zayed 00100000000000000000000000000000 flied 00000000000000000000000000000000 Veselich 00100000000000000000000000000000 exhaled 00000000000000000000000000000000 Derby 00100000000001000000101100100001 mighta 00000000000000000000000000000000 Huxtable 00100000000000000000000000000000 champs 00000000000000000000000000000000 374.19 00000000000000000000000000000000 faultless 00000000000000000000000000000000 globalization 00000000000111010011011010100111 bewitched 00000000000000000000000000000000 Leagues 00100000000111111101101001110011 374.20 00000000000000000000000000000000 Jays 00100000000000000000000000000000 cross-bay 00000000000000000000000000000000 pithiest 00000000000000000000000000000000 just-concluded 00000000000000000000000000000000 five-home-run 00000000000000000000000000000000 11,762 00000000000000000000000000000000 morrow 00001111111111111100111000001000 outfielders 00000000000000000000000000000000 do-everything 00000000000000000000000000000000 leadoff 00000000000000000000000000000000 Dominguez 00100000000000000000000000000000 redo 00000000000000000000000000000000 glove 00000000000010011100001000100001 12-day 00000000000000000000000000000000 more-muscular 00000000000000000000000000000000 quake-hit 00000000000000000000000000000000 toasted 00000000000000000000000000000000 dispensed 00000000000000000000000000000000 deference 00000000000111111111101101010111 championship-team 00000000000000000000000000000000 outshine 00000000000000000000000000000000 Cy 00100000000000000000000000000000 best-pitcher 00000000000000000000000000000000 dynasty 00000000000111110000000001000111 post-game 00000000000000000000000000000000 Alderson 00100000000000000000000000000000 dampen 00000000000000000000000000000000 righthander 00000000000000000000000000000000 burgs 00000000000000000000000000000000 Russel 00100000000000000000000000000000 axioms 00000000000000000000000000000000 Haste 00100000000000000000000000000000 Cassell 00100000000000000000000000000000 recede 00000000000000000000000000000000 time-sensitive 00000000000000000000000000000000 tractor-trailer 00000000000000000000000000000000 sorted 00000000000000000000000000000000 8:35 00000000000000000000000000000000 Intrepid 00100000000000000000000000000000 package-sort 00000000000000000000000000000000 Monitoring 00100000000000011110110001000000 craftsmen 00000000000000000000000000000000 flowchart 00000000000000000000000000000000 holdups 00000000000000000000000000000000 mollified 00000000000000000000000000000000 configuration-data 00000000000000000000000000000000 stronghold 00000000000111111001101001100111 vitriolic 00000000000000000000000000000000 underutilized 00000000000000000000000000000000 Labovitz 00100000000000000000000000000000 ODI 01000000000000000000000000000000 143.08 00000000000000000000000000000000 143.93 00000000000000000000000000000000 pre-recorded 00000000000000000000000000000000 Milburn 00100000000000000000000000000000 fourteen 00000000000101001111000011000000 songwriters 00000000000000000000000000000000 remunerated 00000000000000000000000000000000 government-imposed 00000000000000000000000000000000 14,821 00000000000000000000000000000000 Trish 00100000000000000000000000000000 Heimers 00100000000000000000000000000000 RIAA 01000000000000000000000000000000 Nilson 00100000000000000000000000000000 delisted 00000000000000000000000000000000 291-page 00000000000000000000000000000000 Copying 00100000011100000010110001000000 Challenges 00100000000111111011001000100011 100-mile 00000000000000000000000000000000 Dollar-yen 00100000000000000000000000000000 shave 00000000001100101111001110110010 U.S.-style 01000000000000000000000000000000 wheeling 00000000000010100100110100101000 peacefully 00000000000000000000000000000000 77.56 00000000000000000000000000000000 masterminding 00000000000000000000000000000000 Swiss-franc 00100000000000000000000000000000 3.07 00000000000000000000000000000000 spokes 00000000000000000000000000000000 Rey-controlled 00100000000000000000000000000000 product-inspection 00000000000000000000000000000000 meadows 00000000000111000101000000001000 low-slung 00000000000000000000000000000000 Alps 00100000000000000000000000000000 77.70 00000000000000000000000000000000 dossiers 00000000000000000000000000000000 Zurich-based 00100000000000000000000000000000 Writes 00100000000110111011010111000010 un-Swiss 01000000000000000000000000000000 Neue 00100000000000000000000000000000 Zuercher 00100000000000000000000000000000 Zeitung 00100000000000000000000000000000 three-spoked 00000000000000000000000000000000 unheard-of 00000000000000000000000000000000 shoemaker 00000000000000000000000000000000 Investing 00100000000111111101000001000000 Oerlikon-Buehrle 01000000000000000000000000000000 Selve 00100000000000000000000000000000 Thun 00100000000000000000000000000000 Ateliers 00100000000000000000000000000000 Constructions 00100000000000000000000000000000 Mecaniques 00100000000000000000000000000000 cantonal 00000000000000000000000000000000 Cantobank 00100000000000000000000000000000 Frey 00100000000000000000000000000000 Winterthur-based 00100000000000000000000000000000 Gebrueder 00100000000000000000000000000000 Tito 00100000000111011111000100001000 Tettamanti 00100000000000000000000000000000 lugs 00000000000000000000000000000000 Omnicorp 00100000000000000000000000000000 Kingdom-based 00100000000000000000000000000000 Checkrobot 00100000000000000000000000000000 checkout 00000000000000000000000000000000 Norment 00100000000000000000000000000000 Com 00100000000110101010010010110000 Helga 00100000000000000000000000000000 KK 01000000000000000000000000000000 land-rich 00000000000000000000000000000000 Inspectorate-Adia 01000000000000000000000000000000 Fountain 00100000000111010110011010101000 HP 01000000000000000000000000000000 multipleuser 00000000000000000000000000000000 57,000 00000000000000000000000000000000 Helicopters 00100000000111101011101001100011 Airplanes 00100000000111011111111001100011 ArgoSystems 01000000000000000000000000000000 Binder 00100000000111100001001000001000 82,389 00000000000000000000000000000000 -William 01000000000000000000000000000000 Woodcliff 00100000000000000000000000000000 17-nation 00000000000000000000000000000000 INGERSOLL-RAND 01000000000000000000000000000000 non-Cocom 01000000000000000000000000000000 convention-goers 00000000000000000000000000000000 Duluth 00100000000000000000000000000000 Foggs 00100000000000000000000000000000 Ulric 00100000000000000000000000000000 management-by-objective 00000000000000000000000000000000 defense-procurement 00000000000000000000000000000000 reps 00000000000000000000000000000000 flaring 00000000000110101101100001000000 information-systems 00000000000000000000000000000000 high-growth 00000000000000000000000000000000 680.6 00000000000000000000000000000000 673.3 00000000000000000000000000000000 382.2 00000000000000000000000000000000 ski-industry 00000000000000000000000000000000 7.13 00000000000000000000000000000000 camaraderie 00000000000000000000000000000000 16.25 00000000000000000000000000000000 weatherman 00000000000000000000000000000000 butterflies 00000000000000000000000000000000 more-efficient 00000000000000000000000000000000 buzzes 00000000000000000000000000000000 backpedaling 00000000000000000000000000000000 U-turn 00100000000000000000000000000000 bondholdings 00000000000000000000000000000000 133.7 00000000000000000000000000000000 unicycle 00000000000000000000000000000000 Accomplishing 00100000000000000000000000000000 duels 00000000000000000000000000000000 relive 00000000000000000000000000000000 smolder 00000000000000000000000000000000 Pestered 00100000000000000000000000000000 dinkiest 00000000000000000000000000000000 Carrying 00100000000000000000100101000000 innovate 00000000000000000000000000000000 shoves 00000000000000000000000000000000 Swiveling 00100000000000000000000000000000 somewhat-ambiguous 00000000000000000000000000000000 Explaining 00100000000111101101111010000010 security-type 00000000000000000000000000000000 fidgeting 00000000000000000000000000000000 handcuffs 00000000000000000000000000000000 recantation 00000000000000000000000000000000 analytical-instruments 00000000000000000000000000000000 504,200 00000000000000000000000000000000 254,200 00000000000000000000000000000000 fended 00000000000000000000000000000000 mass-producing 00000000000000000000000000000000 fireballs 00000000000000000000000000000000 hurl 00000000000000000000000000000000 liquid-chromatography 00000000000000000000000000000000 Corrigan 00101111111101110000110010001000 Testing 00100000000001000010110001000000 automotive-emissions-testing 00000000000000000000000000000000 94.3 00000000000000000000000000000000 immaturity 00000000000000000000000000000000 economical 00000000000000001101001110010000 Rae 00100000000000000000000000000000 molehill 00000000000000000000000000000000 autocrat 00000000000000000000000000000000 custom-chip 00000000000000000000000000000000 European-minded 00100000000000000000000000000000 disaffection 00000000000000000000000000000000 tying 00000000000110101111001101000000 industry-wide 00000000000000000000000000000000 Chirac 00101111111100110001110010001000 pedaled 00000000000000000000000000000000 Balladur 00101111111000000101010010001000 anti-European 01000000000000000000000000000000 Meinders 00100000000000000000000000000000 vassals 00000000000000000000000000000000 catchers 00000000000000000000000000000000 futility 00000000000000000000000000000000 3.526 00000000000000000000000000000000 eight-month 00000000000000000000000000000000 4.469 00000000000000000000000000000000 tapering 00000000000000000000000000000000 Littman 00100000000000000000000000000000 trillions 00000000000000000000000000000000 RA 01000000000000000000000000000000 go-it-alone 00000000000000000000000000000000 human-resources 00000000000000000000000000000000 Transition 00100000000101111101111101100111 6.21 00000000000000000000000000000000 odds-on 00000000000000000000000000000000 four-quarter 00000000000000000000000000000000 763 00000000000000000000000000000000 ticketing 00000000000000000110100001100001 wagering 00000000000000000000000000000000 VTC 01000000000000000000000000000000 simplified 00000000000000000000000000000000 Stedt 00100000000000000000000000000000 Reviewing 00100000000111111110010101000000 resided 00000000000000000000000000000000 Midvale 00100000000000000000000000000000 aching 00000000000000000000000000000000 Hayne 00100000000000000000000000000000 California-bashing 00100000000000000000000000000000 snotty 00000000000000000000000000000000 loonies 00000000000000000000000000000000 Anti-Christ 01000000000000000000000000000000 Moloch 00100000000000000000000000000000 one-week 00000000000000000000000000000000 Scaring 00100000000000000000000000000000 illogic 00000000000000000000000000000000 inaccuracy 00000000000000000000000000000000 slots 00000000000100010010000001100011 Jukes 00100000000000000000000000000000 charlatanry 00000000000000000000000000000000 profferred 00000000000000000000000000000000 Coconut 00100000000000000000000000000000 Would-be 00100000000000000000000000000000 Merrick 00100000000000000000000000000000 wheel-loader 00000000000000000000000000000000 kilometer 00000000000000000000000000000000 passenger-kilometers 00000000000000000000000000000000 persecuting 00000000000000000000000000000000 voyeurism 00000000000000000000000000000000 conspiracies 00000000000000000000000000000000 Rude 00100000000111110110011010010000 Pravo 00100000000000000000000000000000 leaguers 00000000000000000000000000000000 Czechoslovak 00100000000000000000000000000000 90-day 00000000000000000000000000000000 Cecconi 00100000000000000000000000000000 canals 00000000000011100110101111001001 hydraulically 00000000000000000000000000000000 Moscow-based 00100000000000000000000000000000 small-screen 00000000000000000000000000000000 color-television 00000000000000000000000000000000 Goldstar 00100000000111101001000100101000 29.3 00000000000000000000000000000000 Soyuz 00100000000000000000000000000000 external-trade 00000000000000000000000000000000 Lanka 00101111111111101010110000011101 Dynasty 00100000000111110000000001000111 newsworthiness 00000000000000000000000000000000 diverge 00000000000000000000000000000000 Michaels 00101111111000100110110000001000 obscenity 00000000000000000000000000000000 minor-leaguer 00000000000000000000000000000000 peek 00000000000000000000000000000000 dogfight 00000000000000000000000000000000 Morley 00100000000000000000000000000000 Desai 00100000000000000000000000000000 scarred 00000000000000000000000000000000 Josephson 00100000000000000000000000000000 murkier 00000000000000000000000000000000 Tango 00100000000000000000000000000000 Ethicist 00100000000000000000000000000000 Bridgeville 00100000000000000000000000000000 screenings 00000000000000000000000000000000 hugged 00000000000000000000000000000000 congratulating 00000000000000000000000000000000 mini-studio 00000000000000000000000000000000 Michio 00100000000000000000000000000000 7,600 00000000000000000000000000000000 hand-wringing 00000000000000000000000000000000 152.08 00000000000000000000000000000000 Wakayama 00100000000000000000000000000000 155.15 00000000000000000000000000000000 149.69 00000000000000000000000000000000 prefectural 00000000000000000000000000000000 240.86 00000000000000000000000000000000 1.143 00000000000000000000000000000000 990.79 00000000000000000000000000000000 6.16 00000000000000000000000000000000 10.17 00000000000000000000000000000000 Outlays 00100000000111100110100000111001 105.39 00000000000000000000000000000000 87.57 00000000000000000000000000000000 99.23 00000000000000000000000000000000 Saitama 00100000000000000000000000000000 Fiesta 00100000000111011101001000110000 Accrued 00100000000111111000011100010000 77,000 00000000000000000000000000000000 Himself 00100000000000100011010001110010 high-fidelity 00000000000000000000000000000000 Asil 00100000000000000000000000000000 Ornstein 00100000000000000000000000000000 management-consultant 00000000000000000000000000000000 -products 00000000000000000000000000000000 webs 00000000000000000000000000000000 cross-shareholdings 00000000000000000000000000000000 demeanors 00000000000000000000000000000000 audiophiles 00000000000000000000000000000000 Orville 00100000000000000000000000000000 miniaturized 00000000000000000000000000000000 audio-specialty 00000000000000000000000000000000 Ryosuke 00100000000000000000000000000000 Yoshihisa 00100000000000000000000000000000 Booz-Allen 01000000000000000000000000000000 Attitudes 00100000000111101110111101100011 brimmed 00000000000000000000000000000000 self-confidence 00000000000000000000000000000000 forgeries 00000000000000000000000000000000 existent 00000000000000000000000000000000 tropical-fruit 00000000000000000000000000000000 878 00000000000000000000000000000000 Sandberg 00100000000000000000000000000000 extramarital 00000000000000000000000000000000 Plouf 00100000000000000000000000000000 Kirkland 00101111111100000101001000001000 non-economical 00000000000000000000000000000000 antitrust-law 00000000000000000000000000000000 computer-system-design 00000000000000000000000000000000 tie-breaking 00000000000000000000000000000000 52.125 00000000000000000000000000000000 112.625 00000000000000000000000000000000 fretted 00000000000000000000000000000000 Urging 00100000000001000001110101000000 rebuked 00000000011101000101010000110010 Rafferty 00100000000000000000000000000000 apologizing 00000000000000000000000000000000 1.9375 00000000000000000000000000000000 warehousing 00000000000000000000000000000000 program-trade 00000000000000000000000000000000 Marchese 00100000000000000000000000000000 re-entering 00000000000000000000000000000000 selloffs 00000000000000000000000000000000 452.76 00000000000000000000000000000000 6.43 00000000000000000000000000000000 437.68 00000000000000000000000000000000 448.80 00000000000000000000000000000000 LIN-BellSouth 01000000000000000000000000000000 printing-press 00000000000000000000000000000000 21-a-share 00000000000000000000000000000000 376,000 00000000000000000000000000000000 joint-implants 00000000000000000000000000000000 Kingman 00100000000000000000000000000000 47.3 00000000000000000000000000000000 2082.1 00000000000000000000000000000000 520-lawyer 00000000000000000000000000000000 42.0 00000000000000000000000000000000 1678.5 00000000000000000000000000000000 three-lawyer 00000000000000000000000000000000 DEFENSE 01000000000111101010110110110000 Vellante 00100000000000000000000000000000 Monchecourt 00100000000000000000000000000000 200.5 00000000000000000000000000000000 35527.29 00000000000000000000000000000000 148.85 00000000000000000000000000000000 35378.44 00000000000000000000000000000000 2681.76 00000000000000000000000000000000 First-section 00100000000000000000000000000000 886 00000000000000000000000000000000 profittaking 00000000000000000000000000000000 19.69 00000000000000000000000000000000 1462.93 00000000000000000000000000000000 Valentin 00100000000000000000000000000000 Korff 00100000000000000000000000000000 120-megabyte 00000000000000000000000000000000 APARTHEID 01000000000011011101110010100111 FOES 01000000000101101010000010110011 STAGED 01000000001101101001010000110010 CONGRESSIONAL 01000000000000000100111000110000 LEADERS 01000000000000000000000110110101 BACKED 01000000000010001111010000110010 603 00000000000000000000000000000000 SWITCHING 01000000001111111010110001000000 350-seat 00000000000000000000000000000000 Cortes 00100000000000000000000000000000 bunt 00000000000000000000000000000000 Dissidents 00100000000111110100100110110011 Wenceslas 00100000000000000000000000000000 Milos 00100000000000000000000000000000 Jakes 00100000000000000000000000000000 fond 00000000001110101011110000110010 TRIAL 01000000000111100110000001100111 empowered 00000000010111001100110000110010 offensives 00000000000000000000000000000000 guerrilla-held 00000000000000000000000000000000 passenger-car 00000000000000000000000000000000 orange-and-blue 00000000000000000000000000000000 defeating 00000000000111111101001101000000 midway 00000000000101000111110110101000 Midmorning 00100000000111111101011001101000 Rudolf 00101111111000011011100010011000 Bennigsen-Foerder 01000000000000000000000000000000 Veba 00100000000000000000000000000000 emigrate 00000000010010111101010110110010 testaments 00000000000000000000000000000000 exhibited 00000011111001001100010000110010 wills 00000000000110000100000000001000 scan 00000000000010000101001010110111 gasped 00000000000000000000000000000000 Observing 00100000000111101001110101000000 Coburn 00100000000000000000000000000000 Solving 00100000000110001101011101000000 Cover 00100000000111101111110110110010 Girl 00100000000111101100110010110101 Clarion 00100000000000101101010000110000 demeaning 00000000000010001011011110010000 agitated 00000000000000000000000000000000 630.9 00000000000000000000000000000000 Promise 00100000000111101101111010110111 invokes 00000000000000000000000000000000 intuitive 00000000000000000000000000000000 cosmetics-industry 00000000000000000000000000000000 TEXAS 01000000000111101111010001101000 shrug 00000000000110010101001110110010 jars 00000000000000000000000000000000 CLEARS 01000011110010000011000000010010 habitats 00000000000000000000000000000000 gray-flannel 00000000000000000000000000000000 INQUIRY 01000000000110111111110001100111 soaps 00000000000000000000000000000000 cents-off 00000000000000000000000000000000 CFC-12 01000000000000000000000000000000 mascara 00000000000000000000000000000000 meld 00000000000000000000000000000000 image-making 00000000000000000000000000000000 CFC-11 01000000000000000000000000000000 Richardson-Vicks 01000000000000000000000000000000 moisturizer 00000000000000000000000000000000 cleansers 00000000000000000000000000000000 moisturizers 00000000000000000000000000000000 Mainz 00100000000000000000000000000000 Rollie 00100000000000000000000000000000 Chemistry 00100000000111110111001101100001 Packaged-goods 00100000000000000000000000000000 consolidations 00000000000110000110000010100111 Schering 00100000000100110100111100101000 mass-distribution 00000000000000000000000000000000 mid-priced 00000000000000000000000000000000 132.9 00000000000000000000000000000000 UPHELD 01000000001111111001010000110010 drug-store 00000000000000000000000000000000 Plenitude 00100000000000000000000000000000 Peyrelongue 00100000000000000000000000000000 Cosmair 00100000000000000000000000000000 consumer-product 00000000000000000000000000000000 quirky 00000000000000000000000000000000 RULING 01000000000111101110101011100111 Aziza 00100000000000000000000000000000 ready-to-wear 00000000000000000000000000000000 cultivating 00000000000000000000000000000000 lipstick 00000000000000000000000000000000 retaliating 00000000000000000000000000000000 prior-year 00000000000000000000000000000000 Carmen 00101111111101100000000100001000 ozonedepletion 00000000000000000000000000000000 ponied 00000000000000000000000000000000 assassinating 00000000000000000000000000000000 Chicago-style 00100000000000000000000000000000 UVB 01000000000000000000000000000000 spontaneous 00000000000010000100011010010000 sweetness 00000000000000000000000000000000 baseball-loving 00000000000000000000000000000000 odious 00000000000000000000000000000000 collective-bargaining 00000000000000000000000000000000 ballparks 00000000000000000000000000000000 substitution 00000000000100101111011000001111 sewing-machine 00000000000000000000000000000000 bungled 00000000000000000000000000000000 Makato 00100000000000000000000000000000 reverted 00000000000000000000000000000000 pre-Reagan 01000000000000000000000000000000 nailed 00000000000100101001001000110010 anonymously 00000000000000000000000000000000 accommodating 00000000000111100001010010010000 wimping 00000000000000000000000000000000 screenwriters 00000000000000000000000000000000 baby-faced 00000000000000000000000000000000 hare-brained 00000000000000000000000000000000 well-planned 00000000000000000000000000000000 at-bat 00000000000000000000000000000000 185.9 00000000000000000000000000000000 Claiming 00100000000111101111111010000010 schemers 00000000000000000000000000000000 HCFCs 01000000000000000000000000000000 gobbledygook 00000000000000000000000000000000 home-market 00000000000000000000000000000000 12-story-high 00000000000000000000000000000000 mumbled 00000000000000000000000000000000 foreign-led 00000000000000000000000000000000 ultimatums 00000000000000000000000000000000 Flood 00100000000111111110111000111111 pull-backs 00000000000000000000000000000000 Curt 00100000000000101100001000011000 coherently 00000000000000000000000000000000 kilter 00000000000000000000000000000000 steely 00000000000000000000000000000000 coterie 00000000000000000000000000000000 exasperation 00000000000000000000000000000000 suspecting 00000000000000000000000000000000 verified 00000000000000000000000000000000 Cardinals 00100000000000000000000000000000 flora 00000000000000000000000000000000 Cartoonist 00100000000000000000000000000000 TROUBLES 01000000000111111110011000100011 Congdon 00100000000000000000000000000000 Gerrard 00100000000000000000000000000000 Hordern 00100000000000000000000000000000 backbench 00000000000000000000000000000000 sackings 00000000000000000000000000000000 Deryck 00100000000000000000000000000000 Dionne 00100000000000000000000000000000 Wilcock 00100000000000000000000000000000 swig 00000000000000000000000000000000 marvels 00000000000000000000000000000000 spring-training 00000000000000000000000000000000 queasily 00000000000000000000000000000000 Curdling 00100000000000000000000000000000 Confession 00100000000110001101111101100111 72-game 00000000000000000000000000000000 Tithing 00100000000000000000000000000000 Obedience 00100000000000000000000000000000 Commandment 00100000000000000000000000000000 Wives 00100000000111000010011100110011 Chores 00100000000111101010110100100011 HUSBANDS 01000000000111111110011100110011 Goldscheider 00100000000000000000000000000000 CREATOR'S 01000000000000000000000000000000 DOONESBURY 01000000000000000000000000000000 non-working 00000000000000000000000000000000 housecleaning 00000000000111000000111101100111 Kuiper 00100000000000000000000000000000 yardwork 00000000000000000000000000000000 grammar 00000000000000000000000000000000 less-educated 00000000000000000000000000000000 Nursing 00100000000111110000001010110000 Apt 00100000000111111001011000110010 Herrington 00101111111001001011000010001000 Payers 00100000000000000000000000000000 FAR 01000000000111111101110001110010 FEWER 01000000000000000001000111000000 Conventional 00100000000000010001110000110000 qualifying 00000000000000010101110101000000 Weiner 00101111111000000000000010001000 doomsayer 00000000000000000000000000000000 Korbin 00100000000000000000000000000000 PCBs 01000000000000000000000000000000 discharged 00000000001101010100010000110010 riddled 00000000000101110101100000110010 knowns 00000000000000000000000000000000 blinks 00000000000000000000000000000000 tristate 00000000000000000000000000000000 Reservoirs 00100000000000000000000000000000 accountants... 00000000000000000000000000000000 pro-Reagan 01000000000000000000000000000000 pro-Republican 01000000000000000000000000000000 Answers 00100000000111110111001000100011 Pomton 00100000000000000000000000000000 Crises 00100000000111110110011000100011 SEPARATED 01000011000101010100010000110010 pound-foolish 00000000000000000000000000000000 superstars 00000000000000000000000000000000 Vitaly 00100000000000000000000000000000 penny-wise 00000000000000000000000000000000 somersaulting 00000000000000000000000000000000 elation 00000000000000000000000000000000 Savoy 00100000000000000000000000000000 brow-beating 00000000000000000000000000000000 Eight-foot-tall 00100000000000000000000000000000 Rubenesquely 00100000000000000000000000000000 canvases 00000000000000000000000000000000 cherubs 00000000000000000000000000000000 89,500 00000000000000000000000000000000 trowel 00000000000000000000000000000000 corinthian 00000000000111000101110000010000 capitals 00000000000111101000110101110011 fluting 00000000000000000000000000000000 ascribe 00000000000000000000000000000000 can.. 00000000000000000000000000000000 ninety 00000000000110001111000011000000 mutations 00000000000000000000000000000000 Index-arbitrage 00100000000000000000000000000000 Anxious 00100000000111001000011000110010 cautioning 00000000000000000000000000000000 tongue-lashing 00000000000000000000000000000000 Afnasjev 00100000000000000000000000000000 classmate 00000000000000000000000000000000 holdovers 00000000000000000000000000000000 ice-breaker 00000000000000000000000000000000 Prevented 00100001001111010100010000110010 Ozone 00100000000011001001110000100001 astounding 00000000000111011000110100010000 trivialize 00000000000000000000000000000000 famines 00000000000000000000000000000000 stain 00000000000000000000000000000000 sultan 00000000000111011110100000001000 woven 00000001001001110010110000110010 threads 00000000000000000000000000000000 ceases 00000000000000000000000000000000 SALARIES 01000000000111100110100100000011 Ayers 00100000000000000000000000000000 Anniston 00100000000000000000000000000000 Langendorf 00100000000000000000000000000000 Drury 00100000000000000000000000000000 Barfield 00100000000000000000000000000000 JUDICIAL 01000000000000100000000000110000 supremely 00000000000000000000000000000000 blinking 00000000000000000000000000000000 fusses 00000000000000000000000000000000 endlessly 00000000000000000000000000000000 dissecting 00000000000000000000000000000000 reams 00000000000000000000000000000000 excrutiatingly 00000000000000000000000000000000 near-mutiny 00000000000000000000000000000000 mutinous 00000000000000000000000000000000 plaudits 00000000001000001101000100100111 OVER 01000000000000000101000000001010 23.72 00000000000000000000000000000000 administration-Fed 01000000000000000000000000000000 42.1 00000000000000000000000000000000 phalanx 00000000000000000000000000000000 zero-inflation 00000000000000000000000000000000 tiller 00000000000000000000000000000000 Traded 00100000000001011000010000110010 990,000 00000000000000000000000000000000 Fastenal 00100000000000000000000000000000 Entergy 00100000000000000000000000000000 8300s 00000000000000000000000000000000 bastions 00000000000000000000000000000000 generalist 00000000000000000000000000000000 grappled 00000000000000000000000000000000 imaginable 00000000000000000000000000000000 generalists 00000000000000000000000000000000 non-patent 00000000000000000000000000000000 Giles 00100000000000000000000000000000 patent-law 00000000000000000000000000000000 Colorliner 00100000000000000000000000000000 9,118 00000000000000000000000000000000 litigator 00000000000000000000000000000000 4,645 00000000000000000000000000000000 917 00000000000000000000000000000000 eight-team 00000000000000000000000000000000 non-drug 00000000000000000000000000000000 summons 00000000000000000000000000000000 Lezovich 00100000000000000000000000000000 newspaper-printing 00000000000000000000000000000000 STANDARDS 01000000000100100110111100100011 BOARD'S 01000000000000000000000000000000 124-year-old 00000000000000000000000000000000 reveling 00000000000000000000000000000000 frayed 00000000000000000000000000000000 Epinal 00100000000000000000000000000000 d'Alene 01000000000000000000000000000000 42-year-old 00000000000000000000000000000000 Coeur 00100000000000000000000000000000 eked 00000000000000000000000000000000 1,400-member 00000000000000000000000000000000 mergers-and-acquisitions 00000000000000000000000000000000 syngeries 00000000000000000000000000000000 Old-time 00100000000000000000000000000000 Everywhere 00100000000001010100010001110010 Megargel 00100000000000000000000000000000 42-branch 00000000000000000000000000000000 refueling 00000000000000000000000000000000 task-force 00000000000000000000000000000000 serve-the-world 00000000000000000000000000000000 20-week 00000000000000000000000000000000 counselors 00000000000000011010000010110011 Barrick 00100000000110001010001010101000 cross-pollination 00000000000000000000000000000000 executive-level 00000000000000000000000000000000 multiple-year 00000000000000000000000000000000 Oats 00101111111111110010010001001000 16th-century 00000000000000000000000000000000 marvelous 00000000000011001110011010010000 UNDER 01000000000000000000100000001010 PROPOSAL 01000000000111111111011011100111 TECO 01000000000000000000000000000000 foreign-investment 00000000000000000000000000000000 initialed 00000000000000000000000000000000 Alson 00100000000000000000000000000000 growls 00000000000000000000000000000000 Batangas 00100000000000000000000000000000 Filling 00100000000111110101101101000000 red-flag 00000000000000000000000000000000 -1 00000000000000000000000000000000 ,-1 00000000000000000000000000000000 northwest 00000000000111100111110110101000 FPL 01000000000000000000000000000000 dragger 00000000000000000000000000000000 Manila-based 00100000000000000000000000000000 muffler 00000000000000000000000000000000 CFD 01000000000000000000000000000000 Refinery 00100000000111101110000010001001 ELP 01000000000000000000000000000000 Multi-Income 01000000000000000000000000000000 FMI 01000000000000000000000000000000 ALII 01000000000000000000000000000000 YALE 01000000000000101111111000101000 POLITICAL 01000000000000000000000000110000 honorarium 00000000000000000000000000000000 lard 00000000000000000000000000000000 stupidest 00000000000000000000000000000000 gimmick 00000000000101001101111101100111 493 00000000000000000000000000000000 382-37 00000000000000000000000000000000 budget-reduction 00000000000000000000000000000000 confrontations 00000000000110011010110000100111 seer 00000000000000000000000000000000 surgically 00000000000000000000000000000000 entirety 00000000000000000000000000000000 theorists 00000000000000000000000000000000 defensiveness 00000000000000000000000000000000 off-speed 00000000000000000000000000000000 blackmail 00000000000111000100110010100111 1,001 00000000000000000000000000000000 225.6 00000000000000000000000000000000 judiciously 00000000000000000000000000000000 angst 00000000000000000000000000000000 comity 00000000000110000011111010100111 becase 00000000000000000000000000000000 90-cent-an-hour 00000000000000000000000000000000 executive-legislative 00000000000000000000000000000000 Hatfield 00100010101001000110000010001000 concurrence 00000000000000000000000000000000 adjournment 00000000000000000000000000000000 oat-bran 00000000000000000000000000000000 health-oriented 00000000000000000000000000000000 ready-to-eat 00000000000000000000000000000000 oat-based 00000000000000000000000000000000 flounder 00000000000000000000000000000000 chewed 00000000000000000000000000000000 Krispies 00100000000000000000000000000000 Frosted 00100000000000000000000000000000 Honey 00100000000110010000101100100001 Nut 00100000000001101000101100100001 corn-based 00000000000000000000000000000000 Yankee-come-lately 00100000000000000000000000000000 wily 00000000000000000000000000000000 71.75 00000000000000000000000000000000 Cereal 00100000000110011011111010110000 bran-processing 00000000000000000000000000000000 rice-processing 00000000000000000000000000000000 construction-industry 00000000000000000000000000000000 185-acre 00000000000000000000000000000000 480.4 00000000000000000000000000000000 123.1 00000000000000000000000000000000 858,000 00000000000000000000000000000000 145.7 00000000000000000000000000000000 Mont 00100000000000000000000000000000 PARKER 01001111111110001000001000001000 HANNIFIN 01000000000000000000000000000000 Connectors 00100000000000000000000000000000 Cliff 00100000000010001011111100001000 84.90 00000000000000000000000000000000 Marge 00100000000000000000000000000000 Zainuddin 00100000000000000000000000000000 Datuk 00100000000000000000000000000000 spice 00000000000000000000000000000000 unremarkable 00000000000000000000000000000000 Malaysian-based 00100000000000000000000000000000 shags 00000000000000000000000000000000 diverging 00000000000000000000000000000000 national-policy 00000000000000000000000000000000 2.007 00000000000000000000000000000000 2.616 00000000000000000000000000000000 466 00000000000000000000000000000000 14.933 00000000000000000000000000000000 10.485 00000000000000000000000000000000 18.443 00000000000000000000000000000000 16.436 00000000000000000000000000000000 155.039 00000000000000000000000000000000 140.106 00000000000000000000000000000000 c.i.f 00000000000000000000000000000000 free-on-board 00000000000000000000000000000000 f.o.b 00000000000000000000000000000000 disinflation 00000000000101001010110010100111 Nelms 00100000000000000000000000000000 Instituto 00100000000000000000000000000000 enthusiasms 00000000000000000000000000000000 51.4 00000000000000000000000000000000 Factorex 00100000000000000000000000000000 Catching 00100000000110111110100001000000 public-owned 00000000000000000000000000000000 824 00000000000000000000000000000000 7.04 00000000000000000000000000000000 elegantly 00000000000000000000000000000000 Bilbao 00100000000000000000000000000000 Vizcaya 00100000000000000000000000000000 134-lawyer 00000000000000000000000000000000 golds 00000000000000000000000000000000 welding 00000000000000010110100001100001 welded 00000000000000000000000000000000 durability 00000000000000000000000000000000 Glove 00100000000010011100001000100001 special-projects 00000000000000000000000000000000 PROSECUTORS 01000000000000001001010010110011 caseloads 00000000000000000000000000000000 perplexing 00000000000000000000000000000000 Univest 00100000000000000000000000000000 IMELDA 01000000000000000000000000000000 MARCOS 01001111111100001010100000001000 eight-time 00000000000000000000000000000000 Wary 00100000010111101011110000110010 Pennview 00100000000000000000000000000000 substantiate 00000000000000000000000000000000 PRO 01000000011111001010010000010000 BONO 01000000000000000000000000000000 VOLUNTARISM 01000000000000000000000000000000 Centerbank 00100000000000000000000000000000 Delegate 00100000000011000100100110110111 Wachtler 00100000000000000000000000000000 47-store 00000000000000000000000000000000 Vigdor 00100000000000000000000000000000 DALLAS 01000000000111110101111001101000 HOUSTON 01000000000111011101111001101000 130-lawyer 00000000000000000000000000000000 Datson 00100000000000000000000000000000 70-lawyer 00000000000000000000000000000000 Dotson 00100000000000000000000000000000 PILING 01000000011011100110100001000000 Piggybacking 00100000000000000000000000000000 condoned 00001111001011010100010000110010 acts... 00000000000000000000000000000000 logistics-computer 00000000000000000000000000000000 GHKM 01000000000000000000000000000000 allgedly 00000000000000000000000000000000 cheap-shot 00000000000000000000000000000000 procedurally 00000000000000000000000000000000 fallacious 00000000000000000000000000000000 hurriedly 00000000000000000000000000000000 WFRR 01000000000000000000000000000000 car-dealers 00000000000000000000000000000000 Wilton 00100000000000000000000000000000 broadside 00000000000110011101101010110111 Macheski 00100000000000000000000000000000 acccounting 00000000000000000000000000000000 befallen 00000000000000000000000000000000 invoicing 00000000000000000000000000000000 flips 00000000000000000000000000000000 invoices 00000000000111100111010010111001 groundball 00000000000000000000000000000000 pariah 00000000000000000000000000000000 soiled 00000000000000000000000000000000 Ballooning 00100000000000000000000000000000 Campion 00100000000000000000000000000000 Tennesse 00100000000000000000000000000000 sevices 00000000000000000000000000000000 training-wage 00000000000000000000000000000000 Sugarman-led 00100000000000000000000000000000 acknowledgement 00000000000000000000000000000000 moan 00000000000000000000000000000000 124,000 00000000000000000000000000000000 436.01 00000000000000000000000000000000 Grassley 00100000000000000000000000000000 449.04 00000000000000000000000000000000 Willam 00100000000000000000000000000000 bequest 00000000000000000000000000000000 446.62 00000000000000000000000000000000 diming 00000000000000000000000000000000 stock-purchase 00000000000000000000000000000000 non-competitive 00000000000000000000000000000000 27-week 00000000000000000000000000000000 HBJ 01000000000000000000000000000000 884,000 00000000000000000000000000000000 less-than-perfect 00000000000000000000000000000000 155,000 00000000000000000000000000000000 factory-jobs 00000000000000000000000000000000 launch-vehicle 00000000000000000000000000000000 filtration 00000000000000000000000000000000 coincident 00000000000000000000000000000000 inauspicious 00000000000000000000000000000000 orders-related 00000000000000000000000000000000 ususal 00000000000000000000000000000000 auto-buying 00000000000000000000000000000000 non-packaging 00000000000000000000000000000000 118.6 00000000000000000000000000000000 755,000 00000000000000000000000000000000 2,600 00000000000000000000000000000000 227.1 00000000000000000000000000000000 328.2 00000000000000000000000000000000 734.2 00000000000000000000000000000000 strive 00000000000001010111010110110010 Middlebury 00100000000000000000000000000000 grinders 00000000000000000000000000000000 192.9 00000000000000000000000000000000 266.5 00000000000000000000000000000000 156.3 00000000000000000000000000000000 110.1 00000000000000000000000000000000 61.7 00000000000000000000000000000000 281.2 00000000000000000000000000000000 2,057,750,000 00000000000000000000000000000000 675,400,000 00000000000000000000000000000000 1,048,500,000 00000000000000000000000000000000 588,350,000 00000000000000000000000000000000 impart 00000000000000000000000000000000 megaquestions 00000000000000000000000000000000 entrants 00000000000000011011101001100011 456.64 00000000000000000000000000000000 mega-crash 00000000000000000000000000000000 mega-projects 00000000000000000000000000000000 G.S. 01000000000000000000000000000000 government-run 00000000000000000000000000000000 Crouched 00100000000000000000000000000000 mega-problems 00000000000000000000000000000000 acceded 00000000000000000000000000000000 nonconvertible 00000000000000001001100110110000 overregulated 00000000000000000000000000000000 under-the-table 00000000000000000000000000000000 Tata 00100000000000000000000000000000 Rekindled 00100000100000100111010000110010 Essar 00100000000000000000000000000000 retardation 00000000000000000000000000000000 Bindal 00100000000000000000000000000000 Agro 00100000000000000000000000000000 Chem 00100000000000000000000000000000 agrochemical 00000000000000000000000000000000 M.J. 01000000000000000000000000000000 Pherwani 00100000000000000000000000000000 regenerate 00000000000000000000000000000000 dawdling 00000000000000000000000000000000 cheery 00000000000000000000000000000000 Mega 00100000000011110101011010110000 non-mega 00000000000000000000000000000000 Disclosures 00100000000111111100101000100011 rumor-happy 00000000000000000000000000000000 pin-pointed 00000000000000000000000000000000 prospectuses 00000000000001001010001000100011 mega-crashes 00000000000000000000000000000000 T.T. 01000000000000000000000000000000 Ram 00100000000110100000000001000111 Mohan 00100000000000000000000000000000 unavailability 00000000000000000000000000000000 comparability 00000000000110010000010000100111 polarized 00000000000000000000000000000000 Myers 00101111111110101101001000001000 weapons-modernization 00000000000000000000000000000000 C-130 00100000000000000000000000000000 50%-state-owned 00000000000000000000000000000000 financial-report 00000000000000000000000000000000 bond-rating 00000000000000000000000000000000 11.44 00000000000000000000000000000000 Ellesmere 00100000000000000000000000000000 unionists 00000000000000000000000000000000 uttered 00000000000000000000000000000000 ABBIE 01000000000000000000000000000000 listens 00000000001001101011101000110010 cont 00000000000000000000000000000000 'd. 00000000000000000000000000000000 anti-war 00000000000000000000000000000000 Entrekin 00100000000000000000000000000000 Yippies 00100000000000000000000000000000 734.9 00000000000000000000000000000000 pieced 00000000000000000000000000000000 superceded 00000000000000000000000000000000 blurring 00000000000000000000000000000000 excellence 00000000000001011111110010100111 supercede 00000000000000000000000000000000 Conspiracy 00100000000111111011100010100111 811.9 00000000000000000000000000000000 Stringer 00100000000000000000000000000000 12-2 00000000000000000000000000000000 government-certified 00000000000000000000000000000000 unrestricted 00000000000000110110010100010000 Governmental 00100000000011000101000000110000 rigueur 00000000000000000000000000000000 Jacobsen 00100000000000000000000000000000 mininum-wage 00000000000000000000000000000000 Weir 00100000000110111011010100001000 branched 00000000000000000000000000000000 Reference 00100000000110110111111100100111 Sid 00100000001000101000001000011000 Feders 00100000000000000000000000000000 534 00000000000000000000000000000000 re-creations 00000000000000000000000000000000 Cosgrove-Meurer 01000000000000000000000000000000 Unsolved 00100000000000000000000000000000 Mysteries 00100000000111000110011000001111 Re-enactments 00100000000000000000000000000000 Povich 00100000000000000000000000000000 Rob 00100000000000011101111100001000 95.90 00000000000000000000000000000000 7.445 00000000000000000000000000000000 97.275 00000000000000000000000000000000 0.025 00000000000000000000000000000000 Wentworth 00100000000000000000000000000000 Beatty 00100000000000000000000000000000 epsiode 00000000000000000000000000000000 Caryl 00100000000000000000000000000000 Chessman 00100000000000000000000000000000 Bosket 00100000000000000000000000000000 84-month 00000000000000000000000000000000 re-enacting 00000000000000000000000000000000 130.7 00000000000000000000000000000000 extras 00000000000100110111110101100011 filming 00000000000101111010110001000000 skateboards 00000000000000000000000000000000 re-enactments 00000000000000000000000000000000 stink 00000000000000000000000000000000 Shales 00100000000000000000000000000000 absorption 00000000000000000000000000000000 Re-creating 00100000000000000000000000000000 Salant 00100000000100111110111100101000 anchorman 00001111111010111111110000110101 Konner 00100000000000000000000000000000 AC-130U 01000000000000000000000000000000 Johanna 00100000000000000000000000000000 lightening 00000000000000000000000000000000 36-page 00000000000000000000000000000000 landlord 00000000000111110010111110000001 Solebury 00100000000000000000000000000000 2.47 00000000000000000000000000000000 29.583 00000000000000000000000000000000 re-creactions 00000000000000000000000000000000 re-creation 00000000000000000000000000000000 round-table 00000000000000000000000000000000 misrepresent 00000000000000000000000000000000 11-class 00000000000000000000000000000000 allayed 00000000000000000000000000000000 ITEL 01000000000111011000111100101000 HDM 01000000000000000000000000000000 NIH-appointed 01000000000000000000000000000000 9.333 00000000000000000000000000000000 30.96 00000000000000000000000000000000 something... 00000000000000000000000000000000 unfamiliar 00000000000000100101100000110010 implant 00000000000000000000000000000000 Diagnostics 00100000000111111001010110111001 Medfield 00100000000000000000000000000000 Basel-based 00100000000000000000000000000000 diagnostics 00000000000111111001010110111001 medical-care 00000000000000000000000000000000 low-altitude 00000000000000000000000000000000 wacky 00000000000000000000000000000000 tissue-transplant 00000000000000000000000000000000 Nutt 00100000000000000000000000000000 convenants 00000000000000000000000000000000 outings 00000000000000000000000000000000 Fatman 00100000000000000000000000000000 navigation 00000000000000011000100001100001 scaled-backed 00000000000000000000000000000000 resellers 00000000000000000000000000000000 original-equipment 00000000000000000000000000000000 38-pound 00000000000000000000000000000000 on-board 00000000000000000000000000000000 14-pound 00000000000000000000000000000000 7.904 00000000000000000000000000000000 Ednee 00100000000000000000000000000000 forest-product 00000000000000000000000000000000 Weighing 00100000000010010010010101000000 20-megabyte 00000000000000000000000000000000 snap-on 00000000000000000000000000000000 3-inch 00000000000000000000000000000000 clunky 00000000000000000000000000000000 List 00100000000111110111100101100111 4,999 00000000000000000000000000000000 naggings 00000000000000000000000000000000 5,599 00000000000000000000000000000000 4,199 00000000000000000000000000000000 oil-patch 00000000000000000000000000000000 treasurers 00000000000000000000000000000000 have-not 00000000000000000000000000000000 mo 00000000000000000000000000000000 degenerative 00000000000000000000000000000000 juvenile 00000000000111000000001000110000 cardholders 00000000000000000000000000000000 0.65 00000000000000000000000000000000 12.52 00000000000000000000000000000000 Ammonium 00101111111010001010101010110000 oxidizer 00000000000000000000000000000000 propellant 00000000001001111010001010110000 rockets 00000000000100000111101001100011 flashpoint 00000000000000000000000000000000 KerrMcGee 01000000000000000000000000000000 3,350 00000000000000000000000000000000 Ezekiel 00100000000000000000000000000000 Pothier 00100000000000000000000000000000 Removed 00100000000110010100010000110010 Exact 00100000000000000110000100010000 3.73 00000000000000000000000000000000 159.92 00000000000000000000000000000000 104.79 00000000000000000000000000000000 1.5775 00000000000000000000000000000000 340.83 00000000000000000000000000000000 W.T. 01000000000000000000000000000000 597 00000000000000000000000000000000 1.8410 00000000000000000000000000000000 tempo 00000000000111100011100100100001 1,977 00000000000000000000000000000000 1,716 00000000000000000000000000000000 188.1 00000000000000000000000000000000 163.2 00000000000000000000000000000000 SHOPPE 01000000000000000000000000000000 cents-a-share 00000000000000000000000000000000 four-cents-a-share 00000000000000000000000000000000 0.0075 00000000000000000000000000000000 129.84 00000000000000000000000000000000 129.63 00000000000000000000000000000000 4,090,000 00000000000000000000000000000000 Sacramento-based 00100000000000000000000000000000 3426.33 00000000000000000000000000000000 Cornish 00100000000000000000000000000000 Northington 00100000000000000000000000000000 Rosencrants 00100000000000000000000000000000 Anxiety 00100000000111100100111010100111 219.19 00000000000000000000000000000000 coverages 00000000000000000000000000000000 Roeser 00100000000000000000000000000000 self-reinsure 00000000000000000000000000000000 Goodfriend 00100000000000000000000000000000 18.32 00000000000000000000000000000000 128.9 00000000000000000000000000000000 517.85 00000000000000000000000000000000 475.6 00000000000000000000000000000000 236.23 00000000000000000000000000000000 194.24 00000000000000000000000000000000 39.19 00000000000000000000000000000000 1205.01 00000000000000000000000000000000 NHI 01000000000000000000000000000000 Miniscribe 00100000000011011100111100101000 cosmetology 00000000000000000000000000000000 12-count 00000000000000000000000000000000 H.N. 01000000000000000000000000000000 financial-aid 00000000000000000000000000000000 13.25 00000000000000000000000000000000 Specific 00100000000000000001000000010000 Health-insurance 00100000000000000000000000000000 antagonists 00000000000000000000000000000000 parried 00000000000000000000000000000000 blackmailed 00000000000000000000000000000000 512 00000000000000000000000000000000 CTBS 01000000000000000000000000000000 demobilizing 00000000000000000000000000000000 PLAN 01000000000111111111111011100111 de-emphasized 00000000000000000000000000000000 voided 00000000111001111001010000110010 Sandinistas... 00100000000000000000000000000000 non-lethal 00000000000000000000000000000000 scrupulously 00000000001101100001001001110010 MINIMUM-WAGE 01000000000000000000000000000000 clamping 00000000000000000000000000000000 kilobytes 00000000000000000000000000000000 2,331,100 00000000000000000000000000000000 12.12 00000000000000000000000000000000 85.3 00000000000000000000000000000000 5.85 00000000000000000000000000000000 16.08 00000000000000000000000000000000 formulates 00000000000000000000000000000000 122.36 00000000000000000000000000000000 102.01 00000000000000000000000000000000 50.59 00000000000000000000000000000000 WTD 01000000000000000000000000000000 29.66 00000000000000000000000000000000 25.12 00000000000000000000000000000000 1.255 00000000000000000000000000000000 1.168 00000000000000000000000000000000 555.5 00000000000000000000000000000000 500.26 00000000000000000000000000000000 251.8 00000000000000000000000000000000 44.92 00000000000000000000000000000000 43.34 00000000000000000000000000000000 consonant 00000000000000000000000000000000 Montedision 00100000000000000000000000000000 Antilles 00100000000000010011010101010000 two-letter 00000000000000000000000000000000 computer-printer 00000000000000000000000000000000 Kernel 00100000000111111110100110111111 Catalyst 00100000000111101110100000100001 1,534,600 00000000000000000000000000000000 64.5 00000000000000000000000000000000 Polytechnic 00100000000000000000000000000000 relishes 00000000000000000000000000000000 Strother 00100000000000000000000000000000 Rosalco 00100000000000000000000000000000 Koffman 00100000000000000000000000000000 researching 00000000000111000010010101000000 audio-visual 00000000000000000000000000000000 splintered 00000000000000000000000000000000 229.03 00000000000000000000000000000000 219.27 00000000000000000000000000000000 Oils 00100000000111101111101111001001 fats 00000000000010001101111001100011 amino 00000000000000000000000000000000 acids 00000000000111111111011001100011 460.05 00000000000000000000000000000000 juncture 00000000000111100000101101100111 Sabine 00100000000000000000000000000000 Hub 00100000000000000000001010000001 Erath 00100000000000000000000000000000 familiarization 00000000000000000000000000000000 Lou 00101111111111100010111000011000 bereft 00000000000000000000000000000000 kits 00000000000000100100110100100011 fewest 00000000000000000000000000000000 graphs 00000000000110111011110101100011 policing 00000000000011100010110001000000 adroit 00000000000000000000000000000000 Globex 00100000000000000000000000000000 ATS 01000000000000000000000000000000 geometrical 00000000000000000000000000000000 1.1580 00000000000000000000000000000000 5.20 00000000000000000000000000000000 485 00000000000000000000000000000000 portend 00000000000110111001101110110010 lashed 00000000000000000000000000000000 preparatives 00000000000000000000000000000000 140-point 00000000000000000000000000000000 Grains 00101111111111011111101110110000 Caygill 00100000000000000000000000000000 Lorne 00100000000000000000000000000000 re-establishing 00000000000000000000000000000000 export-boosting 00000000000000000000000000000000 commodity-oriented 00000000000000000000000000000000 subskill 00000000000000000000000000000000 earthshaking 00000000000000000000000000000000 Abitibi-Price 01000000000000000000000000000000 Boise-Cascade 01000000000000000000000000000000 Fery 00100000000000000000000000000000 unbleached 00000000000000000000000000000000 seige 00000000000000000000000000000000 bleached 00000000000000000000000000000000 reinstituting 00000000000000000000000000000000 69-point 00000000000000000000000000000000 10.66 00000000000000000000000000000000 728 00000000000000000000000000000000 cash-flush 00000000000000000000000000000000 NZ$ 01000000000000000000000000000000 Energieproduktiebedrijf 00100000000000000000000000000000 UNA 01000000000000000000000000000000 Hemweg 00100000000000000000000000000000 Swedish-Swiss 01000000000000000000000000000000 857 00000000000000000000000000000000 114.6 00000000000000000000000000000000 570,000 00000000000000000000000000000000 778.6 00000000000000000000000000000000 Barred 00100000010110010100010000110010 Hawesville 00100000000000000000000000000000 extrusions 00000000000000000000000000000000 oversupply 00000000000101001100111001100111 10.38 00000000000000000000000000000000 taxable-equivalent 00000000000000000000000000000000 insatiable 00000000000000011001000100010000 munis 00000000000000000000000000000000 378.1 00000000000000000000000000000000 Muni 00100000000000000000000000000000 CTB 01000000000000000000000000000000 convexity 00000000000000000000000000000000 787 00000000000000000000000000000000 binders 00000000000000000000000000000000 Appelbaum 00101111111101111110110010001000 publicize 00000000000110100100111110110010 Swiss-based 00100000000000000000000000000000 quarter-point 00000000000000000000000000000000 REMICs 01000000000100111010111001100011 27.90 00000000000000000000000000000000 test-preparation 00000000000000000000000000000000 less-sweeping 00000000000000000000000000000000 test-prep 00000000000000000000000000000000 33.90 00000000000000000000000000000000 furloughs 00000000000000000000000000000000 39.5 00000000000000000000000000000000 retirements 00000000000111111101101011100001 illusionary 00000000000000000000000000000000 2,099 00000000000000000000000000000000 30%-owned 00000000000000000000000000000000 101.7 00000000000000000000000000000000 137.8 00000000000000000000000000000000 291.6 00000000000000000000000000000000 more-advanced 00000000000000000000000000000000 Mifflin 00100000000000000000000000000000 92%-owned 00000000000000000000000000000000 PROGRAM 01000000000111101111100011100111 42-a-share 00000000000000000000000000000000 stowaway 00000000000000000000000000000000 1190.43 00000000000000000000000000000000 14.76 00000000000000000000000000000000 215.86 00000000000000000000000000000000 3406.31 00000000000000000000000000000000 0.27 00000000000000000000000000000000 130.80 00000000000000000000000000000000 Naturalization 00100000000111111011110000110000 0.0100 00000000000000000000000000000000 shillings 00000000000000000000000000000000 Immigration 00100000000100000001000000110000 colonists 00000000000000000000000000000000 1807 00000000000000000000000000000000 Geodetic 00100000000000000000000000000000 meter 00000000000000001111000001000111 Businessmen 00100000000110100010011000110011 Metric 00100000000000000010010101010000 Conversion 00100000000111101001011101001111 kindergarten 00000000000111100110110000100001 six-footer 00000000000000000000000000000000 monsoon 00000000000000000000000000000000 inchworm 00000000000000000000000000000000 wheelbases 00000000000000000000000000000000 Farm-machine 00100000000000000000000000000000 Standardized 00100000000110010101000000010000 Tascher 00100000000000000000000000000000 Everyman 00100000000000000000000000000000 Soldiers 00100000000100101110100000110011 satellite-delivered 00000000000000000000000000000000 19-inch 00000000000000000000000000000000 classrooms 00000000000111111010010101100011 canvassed 00000000000000000000000000000000 Subscribing 00100000000000000000000000000000 12-minute 00000000000000000000000000000000 Subscribers 00100000000000001000000000110011 Classroom 00100000000111110011110000000001 ad-free 00000000000000000000000000000000 public-TV 01000000000000000000000000000000 Educator 00100000000000000000000000000000 1,290 00000000000000000000000000000000 919 00000000000000000000000000000000 five-week 00000000000000000000000000000000 subscribed 00000000000000000000000000000000 Withrow 00100000000000000000000000000000 rudder 00000000000000000000000000000000 28-question 00000000000000000000000000000000 lashing 00000000000000000000000000000000 aces 00000000000000000000000000000000 Harmonia 00100000000000000000000000000000 4,750,000 00000000000000000000000000000000 Healthsource 00100000000000000000000000000000 Potash 00100000011010000100011010110000 75,075,000 00000000000000000000000000000000 40.86 00000000000000000000000000000000 34,215,000 00000000000000000000000000000000 56,565,000 00000000000000000000000000000000 4th 00000000000000000000000000000000 70,315,000 00000000000000000000000000000000 786,860,000 00000000000000000000000000000000 729.04 00000000000000000000000000000000 57.82 00000000000000000000000000000000 1,384,119 00000000000000000000000000000000 23.31 00000000000000000000000000000000 100-megabyte 00000000000000000000000000000000 voice-processing 00000000000000000000000000000000 drenching 00000000000000000000000000000000 Evren 00100000000000000000000000000000 Kenan 00100000000000000000000000000000 Ankara 00100000000000000000000000000000 Phi 00100000000110100000101001000000 Kappa 00100000000000010101010100101000 Wham 00100000000000000000000000000000 Bam 00100000000000000000000000000000 194.69 00000000000000000000000000000000 eclipsing 00000000000000000000000000000000 iffy 00000000000000000000000000000000 Opinions 00100000000110100011111101100011 convoy 00000000000000000101011000000001 school-sponsored 00000000000000000000000000000000 strongholds 00000000000000000000000000000000 subindustry 00000000000000000000000000000000 Test-preparation 00100000000000000000000000000000 all-in-all 00000000000000000000000000000000 Carried 00100000000001100001001000110010 Walmart 00100000000000000000000000000000 frothy 00000000000000000000000000000000 sobered 00000000111000100111010000110010 Salang 00100000000000000000000000000000 5,699 00000000000000000000000000000000 Unwilling 00100000000111100100011000110010 arithmetic 00000000000100000111111001100111 test-practice 00000000000000000000000000000000 Worksheets 00100000000000000000000000000000 unanswerable 00000000000000000000000000000000 three-sevenths 00000000000000000000000000000000 1,108 00000000000000000000000000000000 92.42 00000000000000000000000000000000 two-sevenths 00000000000000000000000000000000 IX 01000000000000000000000000000000 outgained 00000000000000000000000000000000 numeral 00000000000000000000000000000000 Placer 00100000000000000000100100101000 retentive 00000000000000000000000000000000 shards 00000000000000000000000000000000 severing 00000000000000000000000000000000 recession-inspired 00000000000000000000000000000000 alpha 00000000000011110010101010110000 ultrasonic 00000000000000000000000000000000 water-submersion 00000000000000000000000000000000 City-type 00100000000000000000000000000000 mountaintop 00000000000000000000000000000000 Lanzhou 00100000000000000000000000000000 Glaciology 00100000000000000000000000000000 Geocryology 00100000000000000000000000000000 half-century 00000000000000000000000000000000 non-core 00000000000000000000000000000000 civil-service 00000000000000000000000000000000 polar 00000000000000000000000000000000 Lonnie 00100000000000000000000000000000 6,799 00000000000000000000000000000000 evaporation 00000000000000000000000000000000 workbooks 00000000000000000000000000000000 billion-yen 00000000000000000000000000000000 1937-87 00000000000000000000000000000000 50-year 00000000000000000000000000000000 Ice 00100000000111111110001100100001 42-day 00000000000000000000000000000000 uniformly 00000000000000000000000000000000 skirmish 00000000000000000000000000000000 HOLD 01000000000111111110101110110010 Greenland 00100000000000000000000000000000 Telxon 00100000000110101010111100101000 Bufton 00100000000000000000000000000000 60-40 00000000000000000000000000000000 70-30 00000000000000000000000000000000 Southport 00100000000000000000000000000000 243.2 00000000000000000000000000000000 junctures 00000000000000000000000000000000 analytical 00001111111000000000101001001000 disguise 00000000110110111111110110110010 caribou 00000000000000000000000000000000 wolves 00000000000000000000000000000000 14.54 00000000000000000000000000000000 slow-spending 00000000000000000000000000000000 faster-spending 00000000000000000000000000000000 scorekeeping 00000000000000000000000000000000 rocket-motor 00000000000000000000000000000000 earnigs 00000000000000000000000000000000 space-station 00000000000000000000000000000000 11,820,000 00000000000000000000000000000000 510,000 00000000000000000000000000000000 Hamakua 00100000000000000000000000000000 370.58 00000000000000000000000000000000 fanned 00000000101111100111010000110010 467 00000000000000000000000000000000 back-on-terra-firma 00000000000000000000000000000000 great-grandchildren 00000000000000000000000000000000 slavery 00000000000011010111110010100111 Metro 00100000000011010111110110101000 aspersions 00000000000000000000000000000000 job-training 00000000000000000000000000000000 Coffee-shop 00100000000000000000000000000000 porous 00000000000000000000000000000000 alienates 00000000000000000000000000000000 right-wingers 00000000000000000000000000000000 abstinence 00000000000000000000000000000000 Aw 00100000000000000000000000000000 fellas 00000000000000000000000000000000 Singin 00100000000000000000000000000000 reallocate 00000000000000000000000000000000 Hollandale 00100000000000000000000000000000 30,537 00000000000000000000000000000000 high-rise-project 00000000000000000000000000000000 GHS 01000000000000000000000000000000 rusty 00000000000000000000000000000000 red-and-white 00000000000000000000000000000000 rodents 00000000000000000000000000000000 cockroaches 00000000000000000000000000000000 nonworking 00000000000000000000000000000000 patrolled 00000000000000000000000000000000 Dee 00100000000111110110110000001000 undergone 00000000000111110100010110110010 Producing 00100000000011000111110001000000 oil-finding 00000000000000000000000000000000 work-force 00000000000000000000000000000000 sporadically 00000000000000000000000000000000 Tex. 00100000000000000000000000000000 midcontinent 00000000000000000000000000000000 scouring 00000000000000000000000000000000 Gurtz 00100000000000000000000000000000 income-oriented 00000000000000000000000000000000 interest-rate-type 00000000000000000000000000000000 Bethesda 00100000000111010010101001101000 SHORT-TERM 01000000000000000000000000000000 MUNICIPALS 01000000000111101011111011100011 municipal-bond 00000000000000000000000000000000 no-brainer 00000000000000000000000000000000 Cashman 00100000000000000000000000000000 laddered 00000000000000000000000000000000 Westerly 00100000000000000000000000000000 BOND 01000000000000000000111110110000 lengthens 00000000000000000000000000000000 equity-like 00000000000000000000000000000000 DEFERRED 01000000000100010000011100010000 ANNUITIES 01000000000111010111111001100011 -were 00000000000000000000000000000000 Annuities 00100000000111010111111001100011 cheerleading 00000000000000000000000000000000 -especially 00000000000000000000000000000000 metabolism 00000000000000000000000000000000 endrocrine 00000000000000000000000000000000 intensively 00000000000000000000000000000000 toxicologist 00000000000000000000000000000000 forensic 00000000000000000000000000000000 14.28 00000000000000000000000000000000 sweating 00000000000000000000000000000000 expunged 00000000000000000000000000000000 cramps 00000000000000000000000000000000 sugary 00000000000000000000000000000000 reallocated 00000000000000000000000000000000 clinically 00000000000000000000000000000000 Diabetic 00100000000000000000000000000000 Medicines 00100000000110000110111001100011 Diabetes 00100000000101101101110010100111 23,403 00000000000000000000000000000000 animal-based 00000000000000000000000000000000 Fagershein 00100000000000000000000000000000 hypoglycemic 00000000000000000000000000000000 14.53 00000000000000000000000000000000 SharesBase 01000000000000000000000000000000 221-person 00000000000000000000000000000000 318.79 00000000000000000000000000000000 man-hours 00000000000000000000000000000000 melts 00000000000000000000000000000000 4.70 00000000000000000000000000000000 abdicate 00000000000000000000000000000000 bean 00000000000111000100011010110000 budgeteers 00000000000000000000000000000000 pork-barrelers 00000000000000000000000000000000 terminations 00000000000000000000000000000000 preservation 00000000000011000010001101001111 Strategists 00100000000010010010000010110011 340.36 00000000000000000000000000000000 1990-94 00000000000000000000000000000000 as-yet 00000000000000000000000000000000 Editorials 00100000000011100101110101100011 448 00000000000000000000000000000000 Constant 00100000000001101011000000010000 reimburses 00000000000000000000000000000000 Scenarios 00100000000111000000001010100011 sequestering 00000000000000000000000000000000 sterilize 00000000000000000000000000000000 0.54 00000000000000000000000000000000 decried 00000000000000000000000000000000 pollination 00000000000000000000111111111001 battlegroups 00000000000000000000000000000000 prohibitive 00000000000000000000000000000000 resurrects 00000000000000000000000000000000 Zero-Based 01000000000000000000000000000000 Budgeting 00100000000011110000110001000000 bean-counting 00000000000000000000000000000000 marginalia 00000000000000000000000000000000 Produce 00100000000111111111101110110010 permeating 00000000000000000000000000000000 14.26 00000000000000000000000000000000 idealized 00000000000010110010010100010000 Lovett 00100000000000000000000000000000 discrete 00000000000000000000000000000000 neutralizes 00000000000000000000000000000000 Spinney 00100000000000000000000000000000 condensed 00000000001000011101101001000000 Times-Mirror 01000000000000000000000000000000 steriles 00000000000000000000000000000000 Proceedings 00100000000111101111001001000111 pre-publication 00000000000000000000000000000000 Barbados 00100000000000000000000000000000 Supportive 00100000011011101011110000110010 Predictions 00100000000111111001010000100011 Malpede 00100000000000000000000000000000 1.5500 00000000000000000000000000000000 squabble 00000000000110110100110000100111 stormier 00000000000000000000000000000000 -Mrs 01000000000000000000000000000000 2.8896 00000000000000000000000000000000 2.9511 00000000000000000000000000000000 discount-borrowing 00000000000000000000000000000000 unpopularity 00000000000000000000000000000000 Californian 00100000000000000000000000000000 378.30 00000000000000000000000000000000 378.87 00000000000000000000000000000000 Harkin 00100000000000000000000000000000 crabby 00000000000000000000000000000000 do-gooders 00000000000000000000000000000000 hoodwinked 00000000000000000000000000000000 Pushing 00100000000111111000110101000000 mockingly 00000000000000000000000000000000 Emancipation 00100000000000000000000000000000 Proclamation 00100000000000000000000000000000 Parrino 00100000000000000000000000000000 1,745,000 00000000000000000000000000000000 3,027,330 00000000000000000000000000000000 commmon 00000000000000000000000000000000 voyage 00000000000110101000111101100111 Appalachian 00100000000000000000000000000000 44.2 00000000000000000000000000000000 109.66 00000000000000000000000000000000 dissuade 00000000010001111011111110110010 futures-exchange 00000000000000000000000000000000 Philippines-backed 00100000000000000000000000000000 U.S.-dollar 01000000000000000000000000000000 stock-index-futures 00000000000000000000000000000000 verged 00000000000000000000000000000000 21,687 00000000000000000000000000000000 upsetting 00000000000000000000000000000000 Chartered 00101111111000010000101001000000 morale-damaging 00000000000000000000000000000000 solves 00000000000000000000000000000000 healed 00000000000000000000000000000000 clearinghouse 00000000000000000000000000000000 amahs 00000000000000000000000000000000 Rory 00100000000000000000000000000000 Bullion 00100000000000000001011110110000 23.11 00000000000000000000000000000000 163.3 00000000000000000000000000000000 22.76 00000000000000000000000000000000 232.12 00000000000000000000000000000000 206.87 00000000000000000000000000000000 12.43 00000000000000000000000000000000 11.66 00000000000000000000000000000000 20.48 00000000000000000000000000000000 19.51 00000000000000000000000000000000 221.61 00000000000000000000000000000000 200.70 00000000000000000000000000000000 477.00 00000000000000000000000000000000 420.68 00000000000000000000000000000000 45.00 00000000000000000000000000000000 47.17 00000000000000000000000000000000 23.500 00000000000000000000000000000000 23.031 00000000000000000000000000000000 13.02 00000000000000000000000000000000 195.19 00000000000000000000000000000000 179.916 00000000000000000000000000000000 6.47 00000000000000000000000000000000 14.95 00000000000000000000000000000000 14.44 00000000000000000000000000000000 157.78 00000000000000000000000000000000 143.88 00000000000000000000000000000000 400.0 00000000000000000000000000000000 366.89 00000000000000000000000000000000 23.0 00000000000000000000000000000000 25.51 00000000000000000000000000000000 redeployment 00000000000000000000000000000000 novitiates 00000000000000000000000000000000 Norge 00100000000000000000000000000000 Erdolversorgungs 00100000000000000000000000000000 Wagg 00100000000000000000000000000000 99.625 00000000000000000000000000000000 virgins 00000000000000000000000000000000 Allegany 00100000000000000000000000000000 787.02 00000000000000000000000000000000 1.011 00000000000000000000000000000000 1996-2000 00000000000000000000000000000000 35.38 00000000000000000000000000000000 remarketings 00000000000000000000000000000000 drag-down 00000000000000000000000000000000 5.05 00000000000000000000000000000000 1989-89 00000000000000000000000000000000 33.2 00000000000000000000000000000000 Kyushu 00100000000000000000000000000000 16.03 00000000000000000000000000000000 96.95 00000000000000000000000000000000 11.71 00000000000000000000000000000000 Tap 00100000000111001110101110110010 Mandom 00100000000000000000000000000000 101.45 00000000000000000000000000000000 Lavaro 00100000000000000000000000000000 16.38 00000000000000000000000000000000 MNB 01000000000000000000000000000000 four-family 00000000000000000000000000000000 99.775 00000000000000000000000000000000 14.00 00000000000000000000000000000000 gametocide 00000000000000000000000000000000 interferes 00000000000000000000000000000000 Photoprotective 00100000000000000000000000000000 31.18 00000000000000000000000000000000 445.7 00000000000000000000000000000000 -subjects 00000000000000000000000000000000 511 00000000000000000000000000000000 469 00000000000000000000000000000000 63.25 00000000000000000000000000000000 Vacaville 00100000000000000000000000000000 135,000 00000000000000000000000000000000 6,420,268 00000000000000000000000000000000 dew-sodden 00000000000000000000000000000000 lubricating-oil 00000000000000000000000000000000 175.4 00000000000000000000000000000000 Lemont 00100000000000000000000000000000 Jolivet 00100000000000000000000000000000 Kenmore 00100000000000000000000000000000 Groupement 00100000000000000000000000000000 Foncier 00100000000000000000000000000000 Francais 00100000000000000000000000000000 Nouveaux 00100000000000000000000000000000 Constructeurs 00100000000000000000000000000000 2.76 00000000000000000000000000000000 barrel-a-day 00000000000000000000000000000000 256.18 00000000000000000000000000000000 6,499 00000000000000000000000000000000 9,999 00000000000000000000000000000000 24,999 00000000000000000000000000000000 153,000 00000000000000000000000000000000 Uno-Ven 01000000000000000000000000000000 fairway 00000000000000000000000000000000 84.7 00000000000000000000000000000000 Ariail 00100000000000000000000000000000 6.11 00000000000000000000000000000000 Fracturing 00100000000000000000000000000000 279.39 00000000000000000000000000000000 249.68 00000000000000000000000000000000 5.40 00000000000000000000000000000000 Rolled 00100000100101101001001000110010 35.23 00000000000000000000000000000000 airconditioner 00000000000000000000000000000000 Winning 00100000000011001111110001000000 153.93 00000000000000000000000000000000 Wiesbaden 00100000000000000000000000000000 Rhine-Westphalia 01000000000000000000000000000000 297 00000000000000000000000000000000 34,500 00000000000000000000000000000000 cathode 00000000000000000000000000000000 1.388 00000000000000000000000000000000 fifth-consecutive 00000000000000000000000000000000 745.7 00000000000000000000000000000000 Johanson 00100000000000000000000000000000 Backseat 00100000000000000000000000000000 malfunctions 00000000000000000000000000000000 Glasgow 00100000000000000000000000000000 9.63 00000000000000000000000000000000 market-system 00000000000000000000000000000000 Framatome 00100000000000000000000000000000 SEAQ 01000000000000000000000000000000 automated-quotation 00000000000000000000000000000000 price-reporting 00000000000000000000000000000000 non-firm 00000000000000000000000000000000 incentive-bonus 00000000000000000000000000000000 blackboard 00000000000000000000000000000000 EVERYONE 01000000000001001010010001110010 Pressures 00100000000111100110100100100111 order-imbalance 00000000000000000000000000000000 2.175 00000000000000000000000000000000 near-limit 00000000000000000000000000000000 9.671 00000000000000000000000000000000 grandstander 00000000000000000000000000000000 transact 00000000000000000000000000000000 Dieter 00100000000000000000000000000000 Bauernfeind 00100000000000000000000000000000 290,541 00000000000000000000000000000000 313,125 00000000000000000000000000000000 12,573,758 00000000000000000000000000000000 11,742,368 00000000000000000000000000000000 cocky 00000000000000000000000000000000 toxicity 00000000000010100101110000100001 29,700 00000000000000000000000000000000 AGREES 01000000000111100111010111000010 Gene-splicing 00100000000000000000000000000000 encapsulate 00000000000000000000000000000000 Morinaga 00100000000000000000000000000000 Aflatoxin 00100000000110011011110010100111 molds 00000000000000000000000000000000 peanut 00000000000101101100101010110000 Zygmunt 00100000000000000000000000000000 acronym 00000000000111110011101100100111 Confederations 00100000000000000000000000000000 social-affairs 00000000000000000000000000000000 barrier-free 00000000000000000000000000000000 unattainable 00000000000000000000000000000000 rebutted 00000000000000000000000000000000 rotating 00000000001001011101000000010000 Lumber 00100000000011010100011010110000 Gallitzin 00100000000000000000000000000000 116,000 00000000000000000000000000000000 1990-91 00000000000000000000000000000000 freshly 00000000000000000000000000000000 emasculation 00000000000000000000000000000000 four-foot-high 00000000000000000000000000000000 wrench 00000000000000000000000000000000 slab 00000000000000000000000000000000 13-hour 00000000000000000000000000000000 obviate 00000000000000000000000000000000 cloned 00000000000000000000000000000000 Oil-tool 00100000000000000000000000000000 somatostatin 00000000000000000000000000000000 competitions 00000000000000000000000000000000 calmed 00000000000000000000000000000000 squabbling 00000000000001001010111010100111 Burk 00100000000000000000000000000000 alfalfa 00000000000000000000000000000000 college-bowl 00000000000000000000000000000000 blowup 00000000000000000000000000000000 -forcing 00000000000000000000000000000000 Kelli 00100000000000000000000000000000 fuel-services 00000000000000000000000000000000 grader 00000000000000000000000000000000 Henson 00101111111010000001000010001000 rapeseeds 00000000000000000000000000000000 Caracas 00100000000001011111111001101000 quota-cheaters 00000000000000000000000000000000 Iran-Iraq 01000000000000000000000000000000 confidently 00000010101001000001001001110010 Subroto 00101111110000001110110010001000 opportune 00000000000000000000000000000000 teacher-cadet 00000000000000000000000000000000 chemist-turned-entrepreneur 00000000000000000000000000000000 Nordine 00100000000000000000000000000000 Ait-Laoussine 01000000000000000000000000000000 Algerian 00100000000100111100010100110000 gun-shy 00000000000000000000000000000000 oil-production 00000000000000000000000000000000 Querecho 00100000000000000000000000000000 rumble 00000000000000000000000000000000 burly 00000000000111100001000010010000 150-foot-tall 00000000000000000000000000000000 Folsom 00100000000000000000000000000000 ponying 00000000000000000000000000000000 half-interest 00000000000000000000000000000000 no-mistakes 00000000000000000000000000000000 Covey 00100000000000000000000000000000 cross-pollinated 00000000000000000000000000000000 southwestern 00000000000110110000110110101000 M.I.T.-trained 01000000000000000000000000000000 reproduced 00000000000000000000000000000000 drill-bit 00000000000000000000000000000000 Teacher 00100000000101101001011110110101 PTA 01000000000000000000000000000000 18-to-$19 00000000000000000000000000000000 roughnecks 00000000000000000000000000000000 roustabouts 00000000000000000000000000000000 mud-logger 00000000000000000000000000000000 Butch 00100000000000000000000000000000 McCarty 01000000000000000000000000000000 spur-of-the-moment 00000000000000000000000000000000 Cloudcroft 00100000000000000000000000000000 14,505 00000000000000000000000000000000 completions 00000000000000000000000000000000 992 00000000000000000000000000000000 rotary 00000000000000111000001000110000 933 00000000000000000000000000000000 offshore-rig 00000000000000000000000000000000 hauled 00000000000101010001001000110010 Wyo. 00100000000000000000000000000000 Bilbrey 00100000000000000000000000000000 15,000-foot 00000000000000000000000000000000 1-million-plus 00000000000000000000000000000000 Zel 00100000000000000000000000000000 Herring 00100000000000000000000000000000 Sandhills 00100000000000000000000000000000 Luncheon 00100000000000000110110001000111 Cafe 00100000000110001110010100000001 whips 00000000000000000000000000000000 hamburgers 00000000000111011101111001100011 grilled 00000000000000000000000000000000 jalapeno 00000000000000000000000000000000 pepper 00000000000111101100111010001000 Garret 00100000000000000000000000000000 baked 00000000000010010110101010110000 deoxyribonucleic 00000000000000000000000000000000 pudding 00000000000000000000000000000000 helix 00000000000000000000000000000000 greenhouse-produced 00000000000000000000000000000000 Literacy 00100000000000001110001101100001 Roustabouts 00100000000000000000000000000000 backhoe 00000000000000000000000000000000 unlocked 00000000000000000000000000000000 Arrested 00100000010111110100010000110010 Bioengineers 00100000000000000000000000000000 Whittier 00100000000000000000000000000000 Huerta 00100000000000000000000000000000 Puente 00100000000000000000000000000000 Arroyo 00101111111111110000110010001000 Rojas 00100000000000000000000000000000 Doris 00100000000000000000000000000000 Moreno 00100000000000000000000000000000 Azucena 00100000000000000000000000000000 Geno 00100000000000000000000000000000 Apicella 00100000000000000000000000000000 Terrell 00100000000000000000000000000000 Earlham 00100000000000000000000000000000 torpedo 00000001001100111111110110110010 20%-owned 00000000000000000000000000000000 IXL 01000000000000000000000000000000 cheerleaders 00000000000000000000000000000000 Matters 00100000000111101101101010100011 Pros 00100000000111101010000010110011 Theorists 00100000000000000000000000000000 Hurts 00100011000010000011000000010010 PLANTS 01000000000111101110100010001001 outperforms 00000000000000000000000000000000 CROSS-BRED 01000000000000000000000000000000 166,537 00000000000000000000000000000000 127,446 00000000000000000000000000000000 pro-selected 00000000000000000000000000000000 compensations 00000000000000000000000000000000 undiversifiable 00000000000000000000000000000000 forsaken 00000000000000000000000000000000 four-stock 00000000000000000000000000000000 dart 00000000000000011011010100101000 throwers 00000000000000000000000000000000 112,383 00000000000000000000000000000000 Hein 00100000000000000000000000000000 Tech 00100000000000000011010001000001 Lubbock 00100000000100011011101001101000 Dartboard 00100000000100111101000010110000 efficient-market 00000000000000000000000000000000 Dynascan 00100000000000000000000000000000 Likins 00100000000000000000000000000000 Lehigh 00100000000000000000000000000000 motion-control 00000000000000000000000000000000 Thefts 00100000000000000000000000000000 Jittery 00100000000011001111110000110010 BEING 01000000000000000011001001110010 TRAVEL 01000000000001000100000000100001 travel-agency 00000000000000000000000000000000 3,632 00000000000000000000000000000000 BURBANK 01000000000111001010101001101000 Reporting 00100000000000000000110001000000 deactivates 00000000000000000000000000000000 Willy 00101111111100011100101000101000 LUTHER 01001111111011000100011100001000 Telaction 00100000000000000000000000000000 temple 00000000001100111100000000001000 buzzer 00000000000000000000000000000000 medallions 00000000000000000000000000000000 14-hour 00000000000000000000000000000000 Reasonable 00100000000010100000000000010000 CONSUMER 01000000000011010001010000110000 collision-damage 00000000000000000000000000000000 home-shopping 00000000000000000000000000000000 Lag 00100000000101000111001010110111 Jets 00100000000110001100101001100011 YOUR 01000000000000000000010100000100 FLIGHT 01000000000111101000000000100001 20-hour 00000000000000000000000000000000 Finucane 00100000000000000000000000000000 Compromises 00100000000110101111111000100011 zombies 00000000000000000000000000000000 Galipault 00100000000000000000000000000000 Worthington 00100000000111111011001000001000 GOLF 01000000000000000110001100100001 BECOME 01000000000111101100010110110010 Simulated 00100000000000000000000000000000 17.12 00000000000000000000000000000000 base-price 00000000000000000000000000000000 Harte-Hanks 01000000000000000000000000000000 salubrious 00000000000000000000000000000000 dreamt 00000000000000000000000000000000 tax-reducing 00000000000000000000000000000000 inflation-created 00000000000000000000000000000000 confiscation 00000000000000000000000000000000 gravest 00000000000000000000000000000000 phenomena 00000000000000000000000000000000 Sigurd 00100000000000000000000000000000 betterment 00000000000000000000000000000000 television-related 00000000000000000000000000000000 O.P. 01000000000000000000000000000000 Leubert 00100000000000000000000000000000 Chyron 00100000000000000000000000000000 telesystems 00000000000000000000000000000000 horticultural-products 00000000000000000000000000000000 soil-nutrients 00000000000000000000000000000000 Grace-Sierra 01000000000000000000000000000000 Horticultural 00100000000000000000000000000000 rule-making 00000000000000000000000000000000 Tray 00100000000000000000000000000000 foward 00000000000000000000000000000000 securites 00000000000000000000000000000000 polices 00000000000000000000000000000000 dissident-shareholder 00000000000000000000000000000000 Odell 00100000000000000000000000000000 rapeseed 00000000000000000000000000000000 Fuqua 00100000000011000011000100101000 Drink 00100000000101011100110110110111 Carrier 00100000000111101111100001000101 price-increase 00000000000000000000000000000000 DPT 01000000000000000000000000000000 diphtheria 00000000000000000000000000000000 tetanus 00000000000000000000000000000000 allergic 00000000000000000000000000000000 Bordetella 00100000000000000000000000000000 Second-tier 00100000000000000000000000000000 poisonous 00000000000000000000000000000000 Italian-led 00100000000000000000000000000000 pluck 00000000000000000000000000000000 520 00000000000000000000000000000000 coli 00000000000000000000000000000000 nonvirulent 00000000000000000000000000000000 homologous 00000000000000000000000000000000 recombination 00000000000000000000000000000000 organism 00000000000000000000000000000000 Competes 00100000110011110110010000110010 mutant 00000000000000000000000000000000 Experiments 00100000000111001110001000100011 non-virulent 00000000000000000000000000000000 Selavo 00100000000000000000000000000000 Cartons 00100000000000000000000000000000 three-man 00000000000000000000000000000000 Academically 00100000000000000000000000000000 88-year 00000000000000000000000000000000 sterility 00000000000000000000000000000000 1796 00000000000000000000000000000000 Amschel 00100000000000000000000000000000 Bankhaus 00100000000000000000000000000000 bled 00000000000000000000000000000000 Wilhelm 00100000000000000000000000000000 Southbrook 00100000000000000000000000000000 palatial 00000000000000000000000000000000 Panama-based 00100000000000000000000000000000 Shirer 00100000000000000000000000000000 Rise 00100000000111111111111100110111 Fall 00100000000111111111011000110111 PORTING 01000000000000000000000000000000 POTABLES 01000000000000000000000000000000 Destruction 00100000000111001010111000001111 carting 00000000000000000000000000000000 tapestries 00000000000000000000000000000000 Document 00100000000111101010110011100111 honors 00000001100010001111000000010010 Scypher 00100000000000000000000000000000 uninterested 00000000000000000000000000000000 Stromeyer 00100000000000000000000000000000 6.51 00000000000000000000000000000000 decision-makers 00000000000000000000000000000000 aura 00000000000111010100111001100111 538,000 00000000000000000000000000000000 synthetics 00000000000000000000000000000000 Smuzynski 00100000000000000000000000000000 sideshow 00000000000000000000000000000000 detracts 00000000000000000000000000000000 Cup-Tote 01000000000000000000000000000000 Lesutis 00100000000000000000000000000000 flay 00000000000000000000000000000000 Defenders 00100000000111000010000010110011 coverup 00000000000000000000000000000000 Margolis 00100000000000000000000000000000 Yemma 00100000000000000000000000000000 unit- 00000000000000000000000000000000 homogenous 00000000000000000000000000000000 Sandip 00100000000000000000000000000000 Bhagat 00100000000000000000000000000000 Thermometer 00100000000000000000000000000000 vapors 00000000000000000000000000000000 thermometers 00000000000000000000000000000000 workroom 00000000000000000100111101100011 web 00000000000111100011001000111111 worker-safety 00000000000000000000000000000000 Speculative 00100000001000000010000000110000 pyramiding 00000000000000000000000000000000 Barabolak 00100000000000000000000000000000 tote 00000000000000000000000000000000 Nylev 00100000000000000000000000000000 Britoil 00100000000111100111001100101000 smothered 00000000000000000000000000000000 Townes 00100000000000000000000000000000 Coventry 00100000000000000000000000000000 unlocks 00000000000000000000000000000000 rolling-steel 00000000000000000000000000000000 tweezers 00000000000000000000000000000000 18.46 00000000000000000000000000000000 Gets 00100000000001111011000000010010 Misunderstanding 00100000000111101001101010100111 extremist 00000000000000000000000000000000 canyons 00000000000000000000000000000000 Utahans 00100000000000000000000000000000 Inventor 00100000000101000111110000110101 shaded 00000000000000000000000000000000 Claire 00100000000000000000000000000000 Standing 00100000000110111011000001000000 spilling 00000000000000000000000000000000 greening 00000000000111111100011100001111 achievement-test 00000000000000000000000000000000 Sammye 00100000000000000000000000000000 Meadows 00100000000111000101000000001000 Rushforth 00100000000000000000000000000000 Bryner 00100000000000000000000000000000 Heber 00100000000000000000000000000000 power-plant 00000000000000000000000000000000 dandy 00000000000000000000000000000000 Wasatch 00100000000000000000000000000000 Range 00100000000111111111011001000111 astounds 00000000000000000000000000000000 Lids 00100000000000000000000000000000 self-righteous 00000000000000000000000000000000 Vranian 00100000000000000000000000000000 braking 00000000000000001010110001000000 maniac 00000000000000000000000000000000 recyclable 00000000000000010001110110111001 Sotela 00100000000000000000000000000000 five-nation 00000000000000000000000000000000 courtesies 00000000000000000000000000000000 distate 00000000000000000000000000000000 Sandifer 00100000000000000000000000000000 student-athletes 00000000000000000000000000000000 More-detailed 00100000000000000000000000000000 Titled 00100000000010110101010000110010 199.8 00000000000000000000000000000000 pistils 00000000000000000000000000000000 225.7 00000000000000000000000000000000 minor-sport 00000000000000000000000000000000 extracurricular 00000000000000000000000000000000 135.2 00000000000000000000000000000000 pampered 00000000000000000000000000000000 jock 00000000000000000000000000000000 seven-figure 00000000000000000000000000000000 1,240 00000000000000000000000000000000 185.5 00000000000000000000000000000000 athlete-student 00000000000000000000000000000000 330.1 00000000000000000000000000000000 .what 00000000000000000000000000000000 Perestroika 00100000000101111111110010100111 ABUSE 01000000000111110100100010100111 teammates 00000000000000000000000000000000 collegiate 00000000000000000000000000000000 Graduate-student 00100000000000000000000000000000 SAT 01000000001110011110001000110010 Schultz 00101111111000110101000010001000 basketball-cutback 00000000000000000000000000000000 wooed 00000000000000000000000000000000 shuttles 00000000000000000000000000000000 Touches 00100001000111001111000000010010 woolly 00000000000000000000000000000000 Coatings 00100000000111101000101111001001 SONGsters 01000000000000000000000000000000 anti-intellectualism 00000000000000000000000000000000 59.2 00000000000000000000000000000000 Intellectual 00100000001000100000000000110000 nerd-and-geek 00000000000000000000000000000000 Fridman 00100000000000000000000000000000 graduate-student 00000000000000000000000000000000 inaugural 00000000000001110000010011010000 calculator-toting 00000000000000000000000000000000 shirt-pocket 00000000000000000000000000000000 Aptitude 00101111111010000101110000100001 chicken-mutilating 00000000000000000000000000000000 holler 00000000000000000000000000000000 freaks 00000000000000000000000000000000 nonconformists 00000000000000000000000000000000 studious 00000000000000000000000000000000 Genius 00100000000111101111101001100111 whizzes 00000000000000000000000000000000 EXCHANGE 01000000000000000000000100111101 Revenge 00100000000001100101110010100111 runny 00000000000000000000000000000000 ill-fitting 00000000000000000000000000000000 Escalante 00100000000000000000000000000000 344,354 00000000000000000000000000000000 Deliver 00100000000101011111101110110010 cane 00000000000110000111101110110000 matchmaking 00000000000000000000000000000000 Scholastic 00101111111100101100101010110000 Brendan 00100000000000000000000000000000 Barba 00100000000000000000000000000000 Moonachie 00100000000000000000000000000000 4.11 00000000000000000000000000000000 CRESTMONT 01000000000000000000000000000000 9.89 00000000000000000000000000000000 oil-industry 00000000000000000000000000000000 curtailing 00000000000100110011011101000000 air-quality 00000000000000000000000000000000 pollute 00000000000000000000000000000000 heavy-crude 00000000000000000000000000000000 light-crude 00000000000000000000000000000000 3.14 00000000000000000000000000000000 firings 00000000000110010110000010100111 gas-producing 00000000000000000000000000000000 Poole 00100000000000000000000000000000 400-day 00000000000000000000000000000000 Anadarko 00100000000101001111010100101000 SFX 01000000000000000000000000000000 grapples 00000000000000000000000000000000 methodology 00000000000100111001101001100111 comprehensiveness 00000000000000000000000000000000 authorship 00000000000000000000000000000000 unsigned 00000000000000000000000000000000 Ekonomicheskaya 00100000000000000000000000000000 Gazeta 00100000000000000000000000000000 manifesto 00000000000000000000000000000000 couching 00000000000000000000000000000000 radical-moderate 00000000000000000000000000000000 PROPERTY 01000000000111101001100000100001 Rigid 00100000000111010101000000010000 FINANCES 01000000000111101100101101100011 LABOR 01000000000000000000110110110000 state-supervised 00000000000000000000000000000000 centrally 00000000000111000111001001110010 blender 00000000000000000000000000000000 Wholesale 00100000000001010101010000110000 government-set 00000000000000000000000000000000 Inflation-adjusted 00100000000000000000000000000000 TRADE 01000000000001000000000000010001 decentralization 00000000001111110110011010100111 imperiled 00000000000000000000000000000000 vaguest 00000000000000000000000000000000 Gosplan 00100000000000000000000000000000 Material 00100000000000000001100000100001 Gossnab 00100000000000000000000000000000 Willing 00100000000111111100011000110010 walkie-talkie 00000000000000000000000000000000 Flick 00100000000000000000000000000000 Shock 00100000000110110111001010110111 prof 00000000000000000000000000000000 Physiology 00100000000000000000000000000000 Drybred 00100000000000000000000000000000 transit-association 00000000000000000000000000000000 rabid 00000000000011010011000010010000 not-so-favorite 00000000000000000000000000000000 miserly 00000000000000000000000000000000 unappealing 00000000000000000000000000000000 cynic 00000000000000000000000000000000 anti-heroes 00000000000000000000000000000000 Quoting 00100000000110111100001101000000 classifies 00000000000000000000000000000000 Filter 00100000000111111011110110110111 three-game 00000000000000000000000000000000 discount... 00000000000000000000000000000000 sweated 00000000000000000000000000000000 34,320 00000000000000000000000000000000 Passaic-Clifton 01000000000000000000000000000000 two-run 00000000000000000000000000000000 right-hander 00000000000000000000000000000000 Mutchin 00100000000000000000000000000000 4-1 00000000000000000000000000000000 Whitey 00100000000000000000000000000000 Lockman 00100000000000000000000000000000 Clint 00100000000000000000000000000000 Hartung 00100000000000000000000000000000 Scottish-born 00100000000000000000000000000000 estate... 00000000000000000000000000000000 stared 00000000000000000000000000000000 rocketing 00000000000000000000000000000000 leftfield 00000000000000000000000000000000 22.70 00000000000000000000000000000000 -telegraph 00000000000000000000000000000000 imputed 00000000000000000000000000000000 public-housing 00000000000000000000000000000000 -with 00000000000000000000000000000000 .270 00000000000000000000000000000000 corkscrews 00000000000000000000000000000000 wedding 00000000000111100010110000000001 slouch 00000000000000000000000000000000 prettier 00000000000000000000000000000000 Homer 00100000000000000000000000000000 ENG 01000000000000000000000000000000 Seed 00100000000000011110110110110111 college-bound 00000000000000000000000000000000 Fordham 00100000000000000000000000000000 Throw 00100000000011101110101110110010 crouched 00000000000000000000000000000000 Bertie 00100000000000000000000000000000 tassels 00000000000000000000000000000000 ethanol 00000000000000100111110000100001 Jeffersons 00100000000000000000000000000000 Augustines 00100000000000000000000000000000 Michelangelos 00100000000000000000000000000000 60.36 00000000000000000000000000000000 momentous 00000000000000000000000000000000 tassel 00001111111001110111110100100001 rehashing 00000000000000000000000000000000 diplomatically 00000000000000000000000000000000 old-timers 00000000000000000000000000000000 four-bagger 00000000000000000000000000000000 rendezvous 00000000000000000000000000000000 Jail 00100000000111101011110101010111 Descendants 00100000000111100010111000101111 erasures 00000000000000000000000000000000 395.4 00000000000000000000000000000000 389.6 00000000000000000000000000000000 Macfarlane 00100000000000000000000000000000 BBN 01000000000000000000000000000000 Solution 00100000000111111111111101100111 Pagurian 00100000000000000000000000000000 Mac-Laren 01000000000000000000000000000000 CB 01000000000000000000000000000000 77-year 00000000000000000000000000000000 under-performing 00000000000000000000000000000000 Selkirk 00100000000000000000000000000000 school-research 00000000000000000000000000000000 Root 00100000000100100111001010110111 368.5 00000000000000000000000000000000 340.7 00000000000000000000000000000000 50-state 00000000000000000000000000000000 77.2 00000000000000000000000000000000 Haney 00100000000000000000000000000000 Y.J. 01000000000000000000000000000000 scrimped 00000000000000000000000000000000 student-test 00000000000000000000000000000000 ninefold 00000000000000000000000000000000 Directed 00100000001110000101010000110010 71,895 00000000000000000000000000000000 Rents 00100000010100001111000000010010 Sa-Duk 01000000000000000000000000000000 54.9 00000000000000000000000000000000 IT'S 01000000000000000000000000000000 school-improvement 00000000000000000000000000000000 pollen-producing 00000000000000000000000000000000 rectifying 00000000000000000000000000000000 843 00000000000000000000000000000000 land-ownership 00000000000000000000000000000000 Highlights 00100000100010001111000000010010 penalize 00000000000110111011101110110010 confiscate 00000000000000000000000000000000 governmentset 00000000000000000000000000000000 similar-sized 00000000000000000000000000000000 housing-construction 00000000000000000000000000000000 landholdings 00000000000000000000000000000000 value-assessment 00000000000000000000000000000000 sterilization 00000000000101110001101101001111 Kongsberg 00100000001100001111111100101000 Vappenfabrikk 00100000000000000000000000000000 Southwide 00100000000000000000000000000000 Doubts 00100000000111101110111010101111 martyr 00000000000000000000000000000000 71%-controlled 00000000000000000000000000000000 blemish 00000000000000000000000000000000 BIRDS 01000000001000101111110101100011 reaffirm 00000000000100001100111110110010 showdown 00000000000011101110110000100111 Ilkka 00100000000000000000000000000000 net-profits 00000000000000000000000000000000 5.47 00000000000000000000000000000000 bald-faced 00000000000000000000000000000000 unamortized 00000000000000000000000000000000 just-completed 00000000000000000000000000000000 53-45 00000000000000000000000000000000 DeVille 01000000000000000000000000000000 Caprice 00100000000000000000000000000000 Cutlass 00100000000000100011010101010000 Ciera 00100000000000000000000000000000 Wagon 00100000000000110001111010110000 147,121 00000000000000000000000000000000 162,767 00000000000000000000000000000000 143,534 00000000000000000000000000000000 Wixom 00100000000000000000000000000000 school-district 00000000000000000000000000000000 Acclaim 00100000000000000000000000000000 Shadow 00100000000110111001100101100111 e-Estimated 01000000000000000000000000000000 20.07 00000000000000000000000000000000 17.25 00000000000000000000000000000000 semicircular 00000000000000000000000000000000 buffetting 00000000000000000000000000000000 Chardon 00100000000000000000000000000000 GP 01000000000000000000000000000000 2423.9 00000000000000000000000000000000 U.S.-U.K. 01000000000000000000000000000000 financer 00000000000000000000000000000000 sleight 00000000000000000000000000000000 Castleman 00100000000000000000000000000000 Denizens 00100000000000000000000000000000 mists 00000000000000000000000000000000 martini 00001111111110011111111010101000 non-wealthy 00000000000000000000000000000000 collegial 00000000000000000000000000000000 Waterhouse 00100000000111101110001110000011 head-hunting 00000000000000000000000000000000 Intra-European 01000000000000000000000000000000 colder 00000000000000000000000000000000 Hurter 00100000000000000000000000000000 Continential 00100000000000000000000000000000 chucked 00000000000000000000000000000000 32-year-old 00000000000000000000000000000000 twiddling 00000000000000000000000000000000 SYDNEY-Qintex 01000000000000000000000000000000 Hungerfords 00100000000000000000000000000000 betrayer 00000000000000000000000000000000 home-ownership 00000000000000000000000000000000 laurels 00000000000100000100111101100011 crane-safety 00000000000000000000000000000000 unstinting 00000000000000000000000000000000 fertilizing 00000000000000000000000000000000 projector 00000000000000000000000000000000 ill-gotten 00000000000000000000000000000000 Arseneault 00100000000000000000000000000000 73.8 00000000000000000000000000000000 Saints 00100000000000000000000000000000 fee-forfeiture 00000000000000000000000000000000 -considered 00000000000000000000000000000000 asset-forfeiture 00000000000000000000000000000000 margin-calls 00000000000000000000000000000000 buy-sell 00000000000000000000000000000000 Senate-House 01000000000000000000000000000000 backstop 00000000000000000000000000000000 unchallenged 00000000000000000000000000000000 NASDAQ 01000000000000000000000000100101 normalize 00000000000000000000000000000000 Stabilizing 00100000000001111111010001000000 amble 00000000000000000000000000000000 Disorderly 00100000000000000000000000000000 Guidelines 00100000000000000010111100100011 market-stabilizing 00000000000000000000000000000000 VISA 01000000000001100010000000100001 should... 00000000000000000000000000000000 Treasurers 00100000000000000000000000000000 prudence 00000000000111010011010010100111 394-21 00000000000000000000000000000000 electrical-safety 00000000000000000000000000000000 Ansco 00100000000000000000000000000000 Dycom 00100000000000000000000000000000 3,609,800 00000000000000000000000000000000 heighborhoods 00000000000000000000000000000000 2,633,700 00000000000000000000000000000000 bugless 00000000000000000000000000000000 Rash 00100000000111111111010101111111 errata 00000000000000000000000000000000 Microprocessor 00100000000000000010101000100001 plug-in 00000000000000000000000000000000 70-A21 01000000000000000000000000000000 toted 00000000000000000000000000000000 add-on 00000000000000000000000000000000 ballyhooed 00000000000000000000000000000000 spearhead 00000000000000000000000000000000 Corvette 00100000000000000000000000000000 super-fast 00000000000000000000000000000000 super-expensive 00000000000000000000000000000000 power-hungry 00000000000000000000000000000000 Unveiled 00100000101111111001010000110010 crams 00000000000000000000000000000000 transistors 00000000000010001000111001100011 sliver 00000000000000000000000000000000 Ballwin 00100000000000000000000000000000 servers 00000000000000000000000000000000 corporate-wide 00000000000000000000000000000000 8088 00000000000000000000000000000000 safeguarding 00000000000000000000000000000000 Anku 00100000000000000000000000000000 index-arbitrage-related 00000000000000000000000000000000 Zipser 00100000000000000000000000000000 two-pronged 00000000000000000000000000000000 Chavanne-Ketin 01000000000000000000000000000000 1.1650 00000000000000000000000000000000 heat-treatment 00000000000000000000000000000000 forgings 00000000000000000000000000000000 sensitives 00000000000000000000000000000000 large-diameter 00000000000000000000000000000000 custom-die 00000000000000000000000000000000 realign 00000000000101000100111110110010 226 00000000000000000000000000000000 Morrell 00100000000000000000000000000000 Beltway 00100000000111101001100011010000 soon-to-be-sold 00000000000000000000000000000000 ham-handed 00000000000000000000000000000000 Delbert 00100000000000000000000000000000 interest-rate-sensitive 00000000000000000000000000000000 Healthy 00100000000000010001100000010000 Rawl 00100000000000000000000000000000 53-floor 00000000000000000000000000000000 Grayson 00100000000000000000000000000000 Everglades 00100000000000000000000000000000 132-acre 00000000000000000000000000000000 432.78 00000000000000000000000000000000 532,000 00000000000000000000000000000000 5,377,000 00000000000000000000000000000000 5,441,000 00000000000000000000000000000000 Chong-sik 00100000000000000000000000000000 Parsons 00101111111110001011001000001000 17.97 00000000000000000000000000000000 designees 00000000000000000000000000000000 10-member 00000000000000000000000000000000 subset 00000000000000000000000000000000 24-a-share 00000000000000000000000000000000 Adley 00100000000000000000000000000000 Handelsman 00100000000000000000000000000000 sew 00000000000000000000000000000000 non-member 00000000000000000000000000000000 market-revision 00000000000000000000000000000000 meatpacking 00000000000100100000011010110000 bird's-eye 00000000000000000000000000000000 juggernaut 00000000000110011001101001100111 18.35 00000000000000000000000000000000 elevates 00000000000000000000000000000000 road-building 00000000000000000000000000000000 salutary 00000000000000000000000000000000 6.24 00000000000000000000000000000000 cost-efficiency 00000000000000000000000000000000 gluts 00000000000000000000000000000000 inadvertent 00000000000000000000000000000000 low-profitmargin 00000000000000000000000000000000 untried 00000000000000000000000000000000 unlisted 00000000000000000000000000000000 diminution 00000000000000000000000000000000 inaction 00000000000111111000110001100111 happenstance 00000000000000000000000000000000 deliberative 00000000000000000000000000000000 fiat 00000000000111100111011100101000 Nastro 00100000000000000000000000000000 332,000 00000000000000000000000000000000 1,784,400 00000000000000000000000000000000 1,810,700 00000000000000000000000000000000 Naguib 00100000000000000000000000000000 marbles 00000000000000000000000000000000 brutish 00000000000000000000000000000000 wickedly 00000000000000000000000000000000 Zaita 00100000000000000000000000000000 cripple-maker 00000000000000000000000000000000 rearranges 00000000000000000000000000000000 beggars 00000000000000000000000000000000 cadge 00000000000000000000000000000000 market-weighted 00000000000000000000000000000000 Kamel 00100000000000000000000000000000 Lanyi 00100000000000000000000000000000 shark 00000000000000001101010010110101 dope 00000000000000000000000000000000 creed 00000000000000000000000000000000 stimulant 00000000000000000000000000000000 Sufi 00100000000000000000000000000000 saintly 00000000000000000000000000000000 low-life 00000000000000000000000000000000 charlatans 00000000000000000000000000000000 pilote 00000000000000000000000000000000 dung 00000000000000000000000000000000 substance-abusing 00000000000000000000000000000000 restless 00000000000110110110011010010000 30-odd 00000000000000000000000000000000 apprehensive 00000000000101011111110000110010 fez-wearing 00000000000000000000000000000000 pashas 00000000000000000000000000000000 71.7 00000000000000000000000000000000 saga-like 00000000000000000000000000000000 Galsworthy 00100000000000000000000000000000 Babelists 00100000000000000000000000000000 dooming 00000000000000000000000000000000 disgrace 00000000000000000000000000000000 piasters 00000000000000000000000000000000 Mourning 00100000000000000000000000000000 pauper 00000000000000000000000000000000 muddled 00000000000000000000000000000000 shabby 00000000000000000000000000000000 siblings 00000000000000000000000000000000 94,425,000 00000000000000000000000000000000 mores 00000000000000000000000000000000 unsentimental 00000000000000000000000000000000 echoes 00000000111111100111000000010010 hawkers 00000000000000000000000000000000 coughs 00000000000000000000000000000000 spittle 00000000000000000000000000000000 throats 00000000000000000000000000000000 730.37 00000000000000000000000000000000 head-butting 00000000000000000000000000000000 whoring 00000000000000000000000000000000 hashish 00000000000000000000000000000000 ordained 00000000000000000000000000000000 Pere 00100000000000000000000000000000 Goriot 00100000000000000000000000000000 Nights 00100000000000000000111100011011 Marquez 00100000000000000000000000000000 familiarity 00000000000111010100110000100111 taut 00000000000000000000000000000000 Punishment 00100000000111111110100000111001 antihero 00000000000000000000000000000000 Raskolnikov 00100000000000000000000000000000 robbing 00000000000111100111001101000000 Theft 00100000000110111111100010100111 Nasser 00100000000000000000000000000000 monarchy 00000000000000000000000000000000 overthrown 00000000000000000000000000000000 1952 00000000000000000000000000000000 altruistic 00000000000011011100110100010000 475.35 00000000000000000000000000000000 squalor 00000000000000000000000000000000 hypocrites 00000000000000000000000000000000 hunts 00000000000111101011111110110011 pioneering 00000000000100100001000000010000 stream-of-consciousness 00000000000000000000000000000000 447.76 00000000000000000000000000000000 first-person 00000000000000000000000000000000 Faulkner 00100000000000000000000000000000 Fury 00100000000000000000000000000000 illuminates 00000000000000000000000000000000 elliptical 00000000000000000000000000000000 indirectness 00000000000000000000000000000000 pilloried 00000000000000000000000000000000 Veiling 00100000000000000000000000000000 Farren 00100000000000000000000000000000 445.23 00000000000000000000000000000000 7.08 00000000000000000000000000000000 addict 00000000000000000000000000000000 selfish 00000000000011010011011010010000 Cairenes 00100000000000000000000000000000 Horwitz 00100000000000000000000000000000 806 00000000000000000000000000000000 once-high-flying 00000000000000000000000000000000 1,120 00000000000000000000000000000000 525,546 00000000000000000000000000000000 455.63 00000000000000000000000000000000 48-month 00000000000000000000000000000000 retroactive 00000000000011100000111000110010 outranks 00000000000000000000000000000000 slush 00000000000000000000000000000000 pork-barreling 00000000000000000000000000000000 4.26 00000000000000000000000000000000 outdid 00000000000000000000000000000000 reasserts 00000000000000000000000000000000 performing-arts 00000000000000000000000000000000 revel 00000000000000000000000000000000 landscaping 00000000000000000000000000000000 prevalance 00000000000000000000000000000000 Mackinac 00100000000000000000000000000000 unimproved 00000000000000000000000000000000 intercepted 00000000000000000000000000000000 beret 00000000000000000000000000000000 rehabilitate 00000000000000000000000000000000 criminal-justice 00000000000000000000000000000000 motorcade 00000000000000000000000000000000 puff 00000000000000000000000000000000 approximates 00000000000000000000000000000000 belle 00000000000000000000000000000000 Carltons 00100000000000000000000000000000 Nadelmann 00100000000000000000000000000000 breeze 00000000000111110011011000000001 iteration 00000000000000000000000000000000 crimp 00000000000000000000000000000000 Dyke 00100000000000000000000000000000 pileup 00000000000000000000000000000000 24.6 00000000000000000000000000000000 unsurprising 00000000000000000000000000000000 Boss 00100000000111111110101110000001 Devastation 00100000000110000111111000001111 -Thailand 01000000000000000000000000000000 defense-suppression 00000000000000000000000000000000 full-size 00000000000000000000000000000000 337 00000000000000000000000000000000 27.75 00000000000000000000000000000000 Lukassen 00100000000000000000000000000000 McLean 01000000000111101101001000001000 six-fold 00000000000000000000000000000000 seven-fold 00000000000000000000000000000000 chateau 00000000000000000000000000000000 302,000 00000000000000000000000000000000 once-lucrative 00000000000000000000000000000000 videotapes 00000000000111111110010101100011 budget-cutting 00000000000000000000000000000000 venturesome 00000000000000000000000000000000 Hwang 00100000000000000000000000000000 80-second 00000000000000000000000000000000 Aalseth 00100000000000000000000000000000 Annapolis 00100000000000000000000000000000 400.4 00000000000000000000000000000000 realigning 00000000000000000000000000000000 braving 00000000000000000000000000000000 Visher 00100000000000000000000000000000 automates 00000000000000000000000000000000 farmwives 00000000000000000000000000000000 Williamsburg 00100000000000000000000000000000 Winger 00100000000000000000000000000000 Dynamic 00100000000010010000000010010000 tunnels 00000000000111010110010101100011 hardware-maintenance 00000000000000000000000000000000 stingier 00000000000000000000000000000000 Conger 00100000000000000000000000000000 military-electronics 00000000000000000000000000000000 Arch 00100000000110100001111100001000 Scurlock 00100000000000000000000000000000 pyrotechnic 00000000000000000000000000000000 strait-laced 00000000000000000000000000000000 Yasumichi 00100000000000000000000000000000 Internatonal 00100000000000000000000000000000 stake-holding 00000000000000000000000000000000 racy 00000000000000000000000000000000 Shady 00100000000000000000000000000000 money-lending 00000000000000000000000000000000 Smokers 00100000000000101100111000110011 rejoining 00000000000000000000000000000000 Davidge 00100000000000000000000000000000 subliminal 00000000000000000000000000000000 sarakin 00000000000000000000000000000000 54.75 00000000000000000000000000000000 hyenas 00000000000000000000000000000000 Acquired 00100000000011100100010000110010 Carisbrook 00100000000000000000000000000000 Calder 00100000000000000000000000000000 purple 00000000001010110010001000110000 Renoirs 00100000000000000000000000000000 connoisseur 00000000000000000000000000000000 corporate-owned 00000000000000000000000000000000 Kiyotaka 00100000000000000000000000000000 49.3 00000000000000000000000000000000 copper-rich 00000000000000000000000000000000 Stretching 00100000000101011101100001000000 silky 00000000000000000000000000000000 squeaking 00000000000000000000000000000000 gangsters 00000000000000000000000000000000 Nicklaus 00100000000000000000000000000000 gruff 00000000000000000000000000000000 upper-class 00000000000000000000000000000000 gala 00000000000000000000000000000000 Denenchofu 00100000000000000000000000000000 Drobnick 00100000000000000000000000000000 manor 00000000000101100001100000110000 outshines 00000000000000000000000000000000 portico 00000000000000000000000000000000 stained-glass 00000000000000000000000000000000 protector 00000000000000000000000000000000 Studio-City 01000000000000000000000000000000 behemoth 00000000000000000000000000000000 dovetails 00000000000000000000000000000000 3.0 00000000000000000000000000000000 Fathers 00100000000111100010110001100011 Founding 00100000000000010110010011010000 U.S.-Japanese 01000000000000000000000000000000 impresses 00000000000000000000000000000000 tobacco-industry 00000000000000000000000000000000 Lydia 00100000000000000000000000000000 Pilipino 00100000000000000000000000000000 Tagalog 00100000000000000000000000000000 Malay-based 00100000000000000000000000000000 better-off 00000000000000000000000000000000 declasse 00000000000000000000000000000000 Bien 00100000000000000000000000000000 Lumbera 00100000000000000000000000000000 Philippine-studies 00100000000000000000000000000000 Quezon 00100000000000000000000000000000 non-Tagalog 01000000000000000000000000000000 scriptwriter 00000000000000000000000000000000 Villanueva 00100000000000000000000000000000 lumberyard 00000000000000000000000000000000 free-choice 00000000000000000000000000000000 weekdays 00000000000000000000000000000000 top-four 00000000000000000000000000000000 trumpets 00000000000000000000000000000000 puppets 00000000000000000000000000000000 monkey 00000000000011011110110100000001 Kiko 00100000000000000000000000000000 Matsing 00100000000000000000000000000000 HEALTHDYNE 01000000000000000000000000000000 squinted 00000000000000000000000000000000 Topeka 00100000000011011111111010101000 Midwesco 00100000000000000000000000000000 Dynapert 00100000000000000000000000000000 Mallory 00100000000000000000000000000000 Capacitors 00100000000000000000000000000000 cleanliness 00000000000000000000000000000000 Archibald 00101111111010000100000100001000 19.75 00000000000000000000000000000000 Embedded 00100000001100011110010000110010 waddles 00000000000000000000000000000000 bounty 00000000000000000000000000000000 Rule 00100000000111101110001000110111 Line-item 00100000000000000000000000000000 Whiz 00100000000000111011011110110101 Whinney 00101111111111110111110001001000 formalizes 00000000000000000000000000000000 twice-daily 00000000000000000000000000000000 parent-company 00000000000000000000000000000000 754.4 00000000000000000000000000000000 633.8 00000000000000000000000000000000 warded 00000000000000000000000000000000 theatre 00000000000100000011000100000001 Cheez 00100000000000000000000000000000 denationalized 00000000000000000000000000000000 Jell-O 01000000000000000000000000000000 296.95 00000000000000000000000000000000 BLOCKBUSTER 01000000000001001011100100100001 ENTERTAINMENT 01000000000000100010010010110000 interactions 00000000000000000000000000000000 13.851 00000000000000000000000000000000 labor-funded 00000000000000000000000000000000 tax-revision 00000000000000000000000000000000 generalizations 00000000000000000000000000000000 investment-tax 00000000000000000000000000000000 money-making 00000000000000000000000000000000 shouldering 00000000000000000000000000000000 tax-reform 00000000000000000000000000000000 CSX 01000000000000000000000000000000 Breakey 00100000000000000000000000000000 Gil 00101111111111001011010100001000 Troutman 00100000000000000000000000000000 Painter 00100000000001100111011110110101 DSP 01000000000000000000000000000000 Motoyuki 00100000000000000000000000000000 Homma 00100000000000000000000000000000 inoperative 00000000000000000000000000000000 Hoe 00100000000111100111101010110111 Canadians 00100000000010000110111000110011 2,750 00000000000000000000000000000000 headline-grabbing 00000000000000000000000000000000 Mayumi 00100000000000000000000000000000 Takayama 00100000000000000000000000000000 200th 00000000000000000000000000000000 Breuners 00100000000000000000000000000000 Ivey 00100000000000000000000000000000 5.57 00000000000000000000000000000000 Persuading 00100000000000000100001101000000 tradition-bound 00000000000000000000000000000000 turmoils 00000000000000000000000000000000 up-scale 00000000000000000000000000000000 clothier 00000000000000000000000000000000 arcades 00000000000000000000000000000000 Eiji 00100000000000000000000000000000 Nakazato 00100000000000000000000000000000 Brauchli 00100000000000000000000000000000 Mathewson 00100000000000000000000000000000 commencing 00000000000000000000000000000000 secede 00000000000000000000000000000000 117.9 00000000000000000000000000000000 57.2 00000000000000000000000000000000 cardinals 00000000000000000000000000000000 generously 00000010110000000000010001110010 Pence 00100000000000000001000000001011 pope 00001111111111101010100000001000 're... 00000000000000000000000000000000 sightseeing 00000000000000000000000000000000 one-on-one 00000000000000000000000000000000 knitted 00000000001001110101101001000000 Telegraaf 00100000000000000000000000000000 36-store 00000000000000000000000000000000 pro-NATO 01000000000000000000000000000000 Tulane 00100000000011000111111000101000 6.98 00000000000000000000000000000000 Leish 00100000000000000000000000000000 Ghazel 00100000000000000000000000000000 Macaroni 00100000000000000000000000000000 Examination 00100000000101111000111001100111 regummed 00000000000000000000000000000000 perceptiveness 00000000000000000000000000000000 propelling 00000000000000000000000000000000 92.2 00000000000000000000000000000000 Tanii 00100000000000000000000000000000 consul 00000000000000000000000000000000 Matsushita-made 00100000000000000000000000000000 government... 00000000000000000000000000000000 biannual 00000000000000000000000000000000 cabal 00000000000000000000000000000000 156,000-square-yard 00000000000000000000000000000000 AK-47 01000000000000000000000000000000 Solzhenitsyn 00100000000000000000000000000000 long-banned 00000000000000000000000000000000 Gulag 00100000000000000000000000000000 Archipelago 00100000000000000000000000000000 11th-grade 00000000000000000000000000000000 sneaking 00000000000000000000000000000000 boa 00000000000000000000000000000000 constrictors 00000000000000000000000000000000 armpits 00000000000000000000000000000000 Snake 00100000000111111101111000000001 331,000 00000000000000000000000000000000 rapists 00000000000111001001111000110011 423 00000000000000000000000000000000 disaffiliation 00000000000000000000000000000000 interjects 00000000000000000000000000000000 313 00000000000000000000000000000000 less-than-robust 00000000000000000000000000000000 519 00000000000000000000000000000000 unmoved 00000000000000000000000000000000 hapless 00000000000000000000000000000000 175.2 00000000000000000000000000000000 1,141 00000000000000000000000000000000 249-166 00000000000000000000000000000000 notifications 00000000000000000000000000000000 Japanese-American 01000000000000000000000000000000 taunted 00000000000000000000000000000000 Dixiecrat 00100000000000000000000000000000 boyfriends 00000000000000000000000000000000 C'mon 00100000000000000000000000000000 18.69 00000000000000000000000000000000 back-to-back 00000000000000000000000000000000 206-199 00000000000000000000000000000000 223-178 00000000000000000000000000000000 CAMBREX 01000000000000000000000000000000 287-123 00000000000000000000000000000000 unexpended 00000000000000000000000000000000 Cohens 00100000000000000000000000000000 marine-research 00000000000000000000000000000000 273-121 00000000000000000000000000000000 22.61 00000000000000000000000000000000 Metzenbaums 00100000000000000000000000000000 44.375 00000000000000000000000000000000 47.50 00000000000000000000000000000000 phrasing 00000000000000000000000000000000 477.1 00000000000000000000000000000000 20.24 00000000000000000000000000000000 onus 00000000000000000000000000000000 856.3 00000000000000000000000000000000 20.38 00000000000000000000000000000000 Hubbell 00101111011000010100000010001000 4.14 00000000000000000000000000000000 331 00000000000000000000000000000000 unamended 00000000000000000000000000000000 post-Vietnam 01000000000000000000000000000000 Chicago-area 00100000000000000000000000000000 incentive-reduced 00000000000000000000000000000000 4.38 00000000000000000000000000000000 currents 00000000000000000000000000000000 27.95 00000000000000000000000000000000 25.78 00000000000000000000000000000000 516.9 00000000000000000000000000000000 859.2 00000000000000000000000000000000 95.57 00000000000000000000000000000000 91.21 00000000000000000000000000000000 -changed 00000000000000000000000000000000 overlay 00000000000000000000000000000000 Leighton 00101111111101100111000100001000 Lamos 00100000000000000000000000000000 Cluff 00100000000000000000000000000000 despairs 00000000000000000000000000000000 licentiousness 00000000000000000000000000000000 fiancee 00000000000000000000000000000000 condemns 00000000000000000000000000000000 novitiate 00000000000000000000000000000000 obdurate 00000000000000000000000000000000 ruler 00000000000111001101000110110101 all-cash 00000000000000000000000000000000 friar 00000000000000000000000000000000 intrigues 00000000000000000000000000000000 drop-in 00000000000000000000000000000000 rectangular 00000000000000000000000000000000 white-washed 00000000000000000000000000000000 Shakespearean 00100000000000000000000000000000 deprivation 00000000000000000000000000000000 Loney 00100000000000000000000000000000 Mariana 00100000000000000000000000000000 Annalee 00100000000000000000000000000000 dissolves 00000000000000000000000000000000 wronged 00000000000000000000000000000000 pimps 00000000000000000000000000000000 pre-existing 00000000000000000000000000000000 transvestites 00000000000000000000000000000000 rockers 00000000000000000000000000000000 porno-inspired 00000000000000000000000000000000 Loud 00100000000110110000011010010000 manacles 00000000000000000000000000000000 ankles 00000000000000000000000000000000 opportunist 00000000000000000000000000000000 Stehlin 00100000000000000000000000000000 Plaines 00100000000000000000000000000000 Jill 00100000000000000000000000000000 lasciviously 00000000000000000000000000000000 Pompey 00100000000000000000000000000000 Pruett 00100000000000000000000000000000 codpiece 00000000000000000000000000000000 indulges 00000000000000000000000000000000 thrusts 00000000000000000000000000000000 malefactors 00000000000000000000000000000000 Virginians 00100000000000000000000000000000 Audrey 00100000000000000000000000000000 minuses 00000000000000000000000000000000 demurs 00000000000000000000000000000000 Zeisler 00100000000000000000000000000000 unimaginative 00000000000000000000000000000000 congenial 00000000000000000000000000000000 Magnolias 00100000000000000000000000000000 Nina 00100000000000000000000000000000 Vance 00100000000000000000000000000000 subverted 00000000000000000000000000000000 transnational 00000000000000000000000000000000 capital-gains-cut 00000000000000000000000000000000 curl 00000000000000000000000000000000 Wage 00100000000000000000000101110001 relenting 00000000000000000000000000000000 100-member 00000000000000000000000000000000 unreliable 00000000000000100101001110010000 5-10 00000000000000000000000000000000 Monticello 00100000000000000000000000000000 amounting 00000000000000010001111000110010 94.7 00000000000000000000000000000000 adenocard 00000000000000000000000000000000 Vos 00100000000000000000000000000000 Bayonne 00100000000000000000000000000000 557.7 00000000000000000000000000000000 Million-dollar 00100000000000000000000000000000 dizziness 00000000000000000000000000000000 Nonrecurring 00100000000000101010010000010000 tachycardia 00000000000000000000000000000000 supraventricular 00000000000000000000000000000000 458.15 00000000000000000000000000000000 9.55 00000000000000000000000000000000 734.41 00000000000000000000000000000000 444.19 00000000000000000000000000000000 paroxysmal 00000000000000000000000000000000 478.28 00000000000000000000000000000000 real-estate-investment 00000000000000000000000000000000 Rosemont 00100000000000000000000000000000 536.94 00000000000000000000000000000000 440.99 00000000000000000000000000000000 536.04 00000000000000000000000000000000 452.75 00000000000000000000000000000000 128.7 00000000000000000000000000000000 nails 00000000000111001101111101100011 Buffets 00100000000000000000000000000000 Chartwell 00100000000000000000000000000000 5,350,000 00000000000000000000000000000000 interior-furnishings 00000000000000000000000000000000 Astec 00100000000000000000000000000000 paving-equipment 00000000000000000000000000000000 Barber-Greene 01000000000000000000000000000000 Telsmith 00100000000000000000000000000000 mobile-home 00000000000000000000000000000000 1,063,946 00000000000000000000000000000000 421,000 00000000000000000000000000000000 23.20 00000000000000000000000000000000 Youngstown 00100000000111111000101001101000 Portsmouth 00100000000110101100101001101000 155.6 00000000000000000000000000000000 Badly 00100000000100100000010001110010 cloudy 00000000000000000000000000000000 95,142 00000000000000000000000000000000 numbing 00000000000001100101110110010000 housing-assistance 00000000000000000000000000000000 Futures-related 00100000000000000000000000000000 kowtow 00000000000000000000000000000000 786 00000000000000000000000000000000 droped 00000000000000000000000000000000 Cambrex 00100000000000000000000000000000 trop 00000000000000000000000000000000 field-services 00000000000000000000000000000000 Precious-metals 00100000000000000000000000000000 373.48 00000000000000000000000000000000 wherein 00000000000000000000000000000000 Perito 00100000000000000000000000000000 Plotkin 00100000000000000000000000000000 Inez 00100000000000000000000000000000 637.7 00000000000000000000000000000000 Gutermann 00100000000000000000000000000000 138.4 00000000000000000000000000000000 food-safety 00000000000000000000000000000000 U.S.concerns 01000000000000000000000000000000 Doak 00100000000000000000000000000000 Shrum 00100000000000000000000000000000 more-stringent 00000000000000000000000000000000 Comission 00100000000000000000000000000000 KLUC-FM 01000000000000000000000000000000 7:53 00000000000000000000000000000000 patently 00000000000000000000000000000000 excretory 00000000000000000000000000000000 27.50 00000000000000000000000000000000 Concert 00100000000111101011111100100001 Earlier*/S 01000000000000000000000000000000 WXRK-FM 01000000000000000000000000000000 38.75 00000000000000000000000000000000 contemporaneous 00000000000000000000000000000000 So*/S 01000000000000000000000000000000 27.875 00000000000000000000000000000000 fining 00000000000000100111001101000000 RENAISSANCE 01000000000110010001100100100001 counterbidders 00000000000000000000000000000000 MANAGEMENT 01000000000000000000000111100001 designates 00000000000000000000000000000000 Bricklayers 00100000000000110001111000110011 67.125 00000000000000000000000000000000 2.18 00000000000000000000000000000000 sustainability 00000000000000000000000000000000 tri-jet 00000000000000000000000000000000 electronic-systems 00000000000000000000000000000000 Pentagon-related 00100000000000000000000000000000 Deliveries 00100000000111100010000100000111 Comeau 00100000000000000000000000000000 66.375 00000000000000000000000000000000 cross-purchase 00000000000000000000000000000000 innuendoes 00000000000000000000000000000000 Craftsmen 00100000000000000000000000000000 Orwellian 00100000000000000000000000000000 Nasty 00100000000010010000011010010000 statism 00000000000000000000000000000000 Shearman 00100000000000000000000000000000 709 00000000000000000000000000000000 2,022 00000000000000000000000000000000 aviators 00000000000000000000000000000000 insinuating 00000000000000000000000000000000 redistributionism 00000000000000000000000000000000 pro-ALPA 01000000000000000000000000000000 confict 00000000000000000000000000000000 rapidement 00000000000000000000000000000000 customer-driven 00000000000000000000000000000000 gratified 00000000000100101101110000110010 McArtor 01001111111100011010110010001000 349,900 00000000000000000000000000000000 Crewmembers 00100000000000000000000000000000 Handbook 00100000000000000000000000000000 let's-give-it-a-year 00000000000000000000000000000000 reconciles 00000000000000000000000000000000 Metzenbaum 00101111111111110100111010001000 9.77 00000000000000000000000000000000 9.70 00000000000000000000000000000000 402.4 00000000000000000000000000000000 18.68 00000000000000000000000000000000 223.4 00000000000000000000000000000000 170.75 00000000000000000000000000000000 6.74 00000000000000000000000000000000 YMCA 01000000000000000000000000000000 YWCA 01000000000000000000000000000000 317.3 00000000000000000000000000000000 14.66 00000000000000000000000000000000 34.35 00000000000000000000000000000000 Eisenhower 00101111110000100010100000001000 52.6 00000000000000000000000000000000 Coor 00100000000000000000000000000000 3.59 00000000000000000000000000000000 Choose 00100000000110110011001110110010 hissed 00000000000111000100110111000010 gray-beard 00000000000000000000000000000000 Consolidation 00100000000111001011101010100111 Bevmark 00100000000000000000000000000000 imput 00000000000000000000000000000000 statesman 00000000000011000111100100100001 hid 00000000000000000000000000000000 knuckles 00000000000000000000000000000000 several-year 00000000000000000000000000000000 frustratingly 00000000000000000000000000000000 grinning 00000000000000000000000000000000 rival-bashing 00000000000000000000000000000000 anti-Sony 01000000000000000000000000000000 back... 00000000000000000000000000000000 mire 00000000000000000000000000000000 back-dating 00000000000000000000000000000000 disembodied 00000000000011110000010000010000 Federico 00100000000000001111101001101000 bugging 00000000000010001010110001000000 phobias 00000000000000000000000000000000 willingly 00000011110101000000010001110010 backdated 00000000000000000000000000000000 depressions 00000000000000000000000000000000 Fifty-two 00100000000000000000000000000000 memorialization 00000000000000000000000000000000 adhered 00000000000000000000000000000000 then-client 00000000000000000000000000000000 Giving 00100000000111111010101101000000 telephone-company 00000000000000000000000000000000 biochemist 00000000000000000000000000000000 58-a-share 00000000000000000000000000000000 Cullowhee 00100000000000000000000000000000 warn-your-enemy 00000000000000000000000000000000 48-hour 00000000000000000000000000000000 genial 00000000000000000000000000000000 unopened 00000000000000000000000000000000 sometimes-tawdry 00000000000000000000000000000000 eight-acre 00000000000000000000000000000000 directorship 00000000000000000000000000000000 trace 00000001000100111111110110110010 Goodwills 00100000000000000000000000000000 Cleaning 00100000000011001110010110110111 Selman 00100000000000000000000000000000 eight-person 00000000000000000000000000000000 Donating 00100000000000000000000000000000 Nonprofit 00100000000000101100010000110000 City-based 00100000000000000000000000000000 Schoch 00100000000000000000000000000000 Conservancy 00100000000000000000000000000000 Rosalind 00100000000000000000000000000000 conservancy 00000000000000000000000000000000 properties.`` 00000000000000000000000000000000 Lys 00100000000000000000000000000000 varnish 00000000000000000000000000000000 vandalism 00000000000000000000000000000000 empathy 00000000000000000000000000000000 Artra 00100000000000000000000000000000 Northbrook 00100000000000000000000000000000 Slyke 00100000000000000000000000000000 ROGERS 01001111111101111010001000001000 Shepperd 00100000000000000000000000000000 Napolitan 00100000000000000000000000000000 bamboozled 00000000000000000000000000000000 ruse 00000000000000000000000000000000 Tigershark 00100000000000000000000000000000 hush 00000000000110011000010000110000 arbitrating 00000000000000000000000000000000 illegalities 00000000000000000000000000000000 rebuts 00000000000000000000000000000000 case... 00000000000000000000000000000000 0.55 00000000000000000000000000000000 52-page 00000000000000000000000000000000 hostility 00000000000101000111111010100111 MinHa 01000000000000000000000000000000 brother-in-law 00000000000000000000000000000000 pistol-packing 00000000000000000000000000000000 Safari 00100000000000000000000000000000 F-20s 00100000000000000000000000000000 Middlesex 00100000000000000000000000000000 high-class 00000000000000000000000000000000 1,050,000 00000000000000000000000000000000 up-to-date 00000000000000000000000000000000 C.K. 01000000000000000000000000000000 procure 00000000000000000000000000000000 Park-affiliated 00100000000000000000000000000000 Promotional 00100000000110100000000000110000 Kang 00100000000000000000000000000000 Oh-Hyun 01000000000000000000000000000000 off-off 00000000000000000000000000000000 out-of-pocket 00000000000000000000000000000000 dismaying 00000000000011110100011000010000 Handzlik 00100000000000000000000000000000 1,750,000 00000000000000000000000000000000 blackmailers 00000000000000000000000000000000 Bookin 00100000000000000000000000000000 Welko 00100000000000000000000000000000 350,000-square-foot 00000000000000000000000000000000 Amadou-Mahtar 01000000000000000000000000000000 WFAA-TV 01000000000000000000000000000000 Belo-Universal 01000000000000000000000000000000 Harrold 00100000000000000000000000000000 Lunday 00100000000000000000000000000000 probaby 00000000000000000000000000000000 913 00000000000000000000000000000000 Faber 00100000000000000000000000000000 6.62 00000000000000000000000000000000 462 00000000000000000000000000000000 Antoine 00100000000000000000000000000000 closures 00000000000010100110000010100111 housing-discrimination 00000000000000000000000000000000 counterbidder 00000000000000000000000000000000 Romain 00100000000000000000000000000000 antics 00000000000101101100111101100011 Fuentes 00100000000000000000000000000000 debt-coverage 00000000000000000000000000000000 payment-in-kind 00000000000000000000000000000000 148.9 00000000000000000000000000000000 'til 00000000000000000000000000000000 paced 00000000000110101111010000110010 anti-Western 01000000000000000000000000000000 high-paid 00000000000000000000000000000000 race-car 00000000000000000000000000000000 plant-modernization 00000000000000000000000000000000 496,116 00000000000000000000000000000000 third-selling 00000000000000000000000000000000 Toronto-area 00100000000000000000000000000000 Oreos 00100000000000000000000000000000 Ahoy 00100000000000000000000000000000 hot-cereals 00000000000000000000000000000000 Planter 00100000000000000000000000000000 pay-down 00000000000000000000000000000000 time-table 00000000000000000000000000000000 renege 00000000000000000000000000000000 Conceptually 00100000000000000000000000000000 cataclysmic 00000000000000000000000000000000 Gringo 00100000000000111001110000000001 50.161 00000000000000000000000000000000 354.4 00000000000000000000000000000000 47.013 00000000000000000000000000000000 28.461 00000000000000000000000000000000 15.87 00000000000000000000000000000000 24.213 00000000000000000000000000000000 161.080 00000000000000000000000000000000 966.471 00000000000000000000000000000000 147.874 00000000000000000000000000000000 657.517 00000000000000000000000000000000 health-expenditure 00000000000000000000000000000000 6.09 00000000000000000000000000000000 Cagliari 00100000000000000000000000000000 chopped 00000000000010101001001000110010 conceptions 00000000000000000000000000000000 744 00000000000000000000000000000000 Huppert 00100000000000000000000000000000 Nachman 00100000000000000000000000000000 Limiting 00100000000000001001011101000000 supplements 00000000000111110000110100100011 109.4 00000000000000000000000000000000 PolyGram 01000000000100100110110000100001 BV 01000000000000000000000000000000 Isabelle 00100000000000000000000000000000 Disappointments 00100000000111111100010000000011 13.57 00000000000000000000000000000000 thin-lipped 00000000000000000000000000000000 1,003,884 00000000000000000000000000000000 pre-market 00000000000000000000000000000000 PharmaKinetics 01000000000000000000000000000000 Sattig 00100000000000000000000000000000 urinary-tract 00000000000000000000000000000000 medical-practice 00000000000000000000000000000000 14.375 00000000000000000000000000000000 Whelan 00100000000000000000000000000000 Amalgamated 00100000000110111110100100110000 alligator 00000000000111101111101100100001 counter-demand 00000000000000000000000000000000 war-damaged 00000000000000000000000000000000 meandered 00000000000000000000000000000000 playful 00000000000000000000000000000000 shallow 00000000000101110110011010010000 repackage 00000000000000000000000000000000 high-coupon 00000000000000000000000000000000 9.95 00000000000000000000000000000000 99.58 00000000000000000000000000000000 95.33 00000000000000000000000000000000 retractable 00000000000000000000000000000000 Canner 00100000000000000000000000000000 300-113 00000000000000000000000000000000 Judah 00100000000000000000000000000000 Mannix 00100000000000000000000000000000 New-issue 00100000000000000000000000000000 war-rationed 00000000000000000000000000000000 empowering 00000000000000000000000000000000 Butowsky 00100000000000000000000000000000 Weitzen 00100000000000000000000000000000 Shalov 00100000000000000000000000000000 Wein 00100000000000000000000000000000 Passed 00100000100111111001010000110010 Established 00100000001111101100010000110010 95.6 00000000000000000000000000000000 Roselle 00100000000000000000000000000000 Kowalski 00100000000000000000000000000000 Chapin 00100000000000000000000000000000 Flattau 00100000000000000000000000000000 Klimpl 00100000000000000000000000000000 traduce 00000000000000000000000000000000 TOOK 01000000000000001011000000010010 SynOptics 01000000000000000000000000000000 inordinate 00000000000000000000000000000000 quadrennial 00000000000000000000000000000000 long-standing 00000000000000000000000000000000 Forty-five 00100000000000000000000000000000 DISTRICT 01000000000111101010110111100101 upholds 00000000000000000000000000000000 lawbreakers 00000000000000000000000000000000 profitting 00000000000000000000000000000000 Wiseguy 00100000000000000000000000000000 Pileggi 00100000000000000000000000000000 proscribed 00000000000000000000000000000000 McKENZIE 01000000000000000000000000000000 Soviet-accredited 00100000000000000000000000000000 Burchette 00100000000000000000000000000000 Ruckert 00100000000000000000000000000000 Rothwell 00100000000000000000000000000000 1,400-lawyer 00000000000000000000000000000000 McKenzie 01000000000000000000000000000000 Melling 00100000000000000000000000000000 ILLINOIS 01000000000000000111110001101000 75-lawyer 00000000000000000000000000000000 spiralled 00000000000000000000000000000000 DISNEY 01001111111000001100000001001000 SUES 01000000000000000000000000000000 claptrap 00000000000000000000000000000000 Bambi 00100000000000000000000000000000 Fantasia 00100000000000000000000000000000 CONFRONTATIONS 01000000000110011010110000100111 LOOM 01000000000001101101001010110111 bipartisanship 00000000000000000000000000000000 dissipates 00000000000000000000000000000000 golfs 00000000000000000000000000000000 MUST-SIGN 01000000000000000000000000000000 BILL 01000000000111101110110011100111 brinksmanship 00000000000000000000000000000000 budget-reconciliation 00000000000000000000000000000000 TURNS 01000000000111110001001000110010 small-time 00000000000000000000000000000000 unseating 00000000000000000000000000000000 socialize 00000000000000000000000000000000 PATIENCE 01000000000111110110110100100111 Incredulous 00100000000000000000000000000000 grill 00000000000000000000000000000000 PENTAGON 01000000000111101001110000100101 BALKS 01000000000000000000000000000000 traitor 00000000000000000000000000000000 ALLY 01000000000110000110111001100111 ORGAN-TRANSPLANT 01000000000000000000000000000000 DOCTORS 01000000000110000010111000110011 10-step 00000000000000000000000000000000 POLITICS 01000000000111101110010010100111 Hartigan 00100000000000000000000000000000 diversionary 00000000000000000000000000000000 airline-related 00000000000000000000000000000000 Waleson 00100000000000000000000000000000 Bentley 00100000000000000000000000000000 1,475,000 00000000000000000000000000000000 metal-processing 00000000000000000000000000000000 Traficant 00100000000000000000000000000000 copper-based 00000000000000000000000000000000 Brahms 00100000000000000000000000000000 10th-biggest 00000000000000000000000000000000 Purcell 00101111111011001110000010001000 271-147 00000000000000000000000000000000 Elfner 00100000000000000000000000000000 peppering 00000000000000000000000000000000 blacklist 00000000000000000000000000000000 anti-program-trading 00000000000000000000000000000000 non-arbitrage 00000000000000000000000000000000 Mnuchin 00100000000000000000000000000000 sincerity 00000000000000000000000000000000 index-trading 00000000000000000000000000000000 Wiess 00100000000000000000000000000000 Audubon 00100000000000000000000000000000 3rd-biggest 00000000000000000000000000000000 Keyes 00100000000000000000000000000000 Chipello 00100000000000000000000000000000 relicensing 00000000000000000000000000000000 Hillhaven 00100000000000000000000000000000 co-payments 00000000000000000000000000000000 10%-owned 00000000000000000000000000000000 NME 01000000000000000000000000000000 1720.5 00000000000000000000000000000000 10.97 00000000000000000000000000000000 17.70 00000000000000000000000000000000 fortified 00000000000000000000000000000000 35.25 00000000000000000000000000000000 2618.03 00000000000000000000000000000000 236.09 00000000000000000000000000000000 35678.49 00000000000000000000000000000000 25.01 00000000000000000000000000000000 2697.58 00000000000000000000000000000000 36.36 00000000000000000000000000000000 35714.85 00000000000000000000000000000000 refrained 00000000000000000000000000000000 145-150 00000000000000000000000000000000 Tokoi 00100000000000000000000000000000 11.90 00000000000000000000000000000000 2,230 00000000000000000000000000000000 3,450 00000000000000000000000000000000 703 00000000000000000000000000000000 1500 00000000000000000000000000000000 1482.62 00000000000000000000000000000000 reinsurer 00000000000000000000000000000000 6,475,000 00000000000000000000000000000000 358 00000000000000000000000000000000 321.5 00000000000000000000000000000000 health-and-benefits 00000000000000000000000000000000 compositional 00000000001011010000000000110000 co-presidents 00000000000000000000000000000000 Giraud 00100000000000000000000000000000 Maher 00100000000000000000000000000000 quartets 00000000000000000000000000000000 sapping 00000000000000000000000000000000 control-room 00000000000000000000000000000000 two-time-losers 00000000000000000000000000000000 35.6%-owned 00000000000000000000000000000000 disagreeable 00000000000110100101110110010000 Shostakovich 00100000000000000000000000000000 BIA-COR 01000000000000000000000000000000 Jager 00100000000000000000000000000000 Berol 00100000000000000000000000000000 Follow-up 00100000000000000000000000000000 geographical 00000000000000011010000000110000 43.2 00000000000000000000000000000000 627.7 00000000000000000000000000000000 767.9 00000000000000000000000000000000 79.2 00000000000000000000000000000000 funky 00000000000000000000000000000000 -about 00000000000000000000000000000000 Clow 00100000000000000000000000000000 snowdrift 00000000000000000000000000000000 cost-containment 00000000000000000000000000000000 freewheeling 00000000000000000000000000000000 no-walls-no-doors 00000000000000000000000000000000 Slides 00100000000001100010001000100011 U.B.U. 01000000000000000000000000000000 more-mainstream 00000000000000000000000000000000 communicating 00000000011001101110100001000000 non-New 01000000000000000000000000000000 intrigued 00000000001010101101110000110010 brilliance 00000000000000000000000000000000 Fertitta 00100000000000000000000000000000 Glenview 00100000000000000000000000000000 Godiva 00100000000000000000000000000000 Haagen-Dazs 01000000000000000000000000000000 visuals 00000000000000000000000000000000 Sealtest 00100000000000000000000000000000 non-fat 00000000000000000000000000000000 LINTAS 01000000000111000111101110110000 LAYOFFS 01000000000111001110000010100111 hither 00000000000000000000000000000000 Ceco 00100000000000000000000000000000 Lintas:Campbell-Ewald 01000000000000000000000000000000 yon 00000000000000000000000000000000 blissful 00000000000000000000000000000000 57.24 00000000000000000000000000000000 19.38 00000000000000000000000000000000 morsels 00000000000000000000000000000000 gunboats 00000000000000000000000000000000 tugboat 00000000000000000000000000000000 propagandize 00000000000000000000000000000000 oil-spill 00000000000000000000000000000000 Unleaded 00100000000111110011101110000111 .23 00000000000000000000000000000000 53.63 00000000000000000000000000000000 Lespinasse 00100000000000000000000000000000 bestirred 00000000000000000000000000000000 375-an-ounce 00000000000000000000000000000000 375.40 00000000000000000000000000000000 5.237 00000000000000000000000000000000 pocketbook 00000000000000000000000000000000 vagabond 00000000000000000000000000000000 1.142 00000000000000000000000000000000 Puccini 00100000000000000000000000000000 956 00000000000000000000000000000000 propagandizes 00000000000000000000000000000000 8,839 00000000000000000000000000000000 scale-down 00000000000000000000000000000000 Printing 00100000000011011011011010110000 A.S. 01000000000000000000000000000000 resonate 00000000000000000000000000000000 599.1 00000000000000000000000000000000 10.30 00000000000000000000000000000000 Propaganda 00100000000000110000001100100001 4.63 00000000000000000000000000000000 2.00 00000000000000000000000000000000 bite-sized 00000000000000000000000000000000 3.00 00000000000000000000000000000000 garbage-disposal 00000000000000000000000000000000 badge 00000000000000000000000000000000 be... 00000000000000000000000000000000 927,000 00000000000000000000000000000000 Hackel 00100000000000000000000000000000 Flow 00100000000100010000001010001111 Pricey 00100000000000111111000010010000 short-sale 00000000000000000000000000000000 61%-owned 00000000000000000000000000000000 Shorting 00100000000000000000000000000000 370.85 00000000000000000000000000000000 well-capitalized 00000000000000000000000000000000 shorted 00000000000000000000000000000000 Gundle 00100000000000000000000000000000 372.50 00000000000000000000000000000000 Remy 00100000000000000000000000000000 J.W. 01000000000000000000000000000000 Seligman 00100000000000000000000000000000 12-inches 00000000000000000000000000000000 CHW 01000000000000000000000000000000 Hazardous 00100000000000011000101010110000 700.2 00000000000000000000000000000000 287,209 00000000000000000000000000000000 200.6 00000000000000000000000000000000 Alisky 00100000000000000000000000000000 Brady-type 00100000000000000000000000000000 McPherson 01001111111011110001000010001000 still-outstanding 00000000000000000000000000000000 476 00000000000000000000000000000000 357.49 00000000000000000000000000000000 236 00000000000000000000000000000000 300.1 00000000000000000000000000000000 116.91 00000000000000000000000000000000 155.76 00000000000000000000000000000000 751.4 00000000000000000000000000000000 84.82 00000000000000000000000000000000 broncs 00000000000000000000000000000000 cancer-related 00000000000000000000000000000000 exquisite 00000000000000000000000000000000 retardants 00000000000000000000000000000000 Jaques 00100000000000000000000000000000 admiralty 00000000000000000000000000000000 Respiratory 00100000000001100101000000110000 eleven 00000000000000001111000011000000 Kelman 00100000000000000000000000000000 ANNOUNCED 01000000000000000001000111000010 nonevent 00000000000000000000000000000000 nuclear-armed 00000000000000000000000000000000 progressives 00000000000000000000000000000000 LAWSON 01001111111100010100010010001000 RESIGNED 01000000000101111110001000110010 cons 00000000000000000000000000000000 test-fired 00000000000000000000000000000000 intermediate-range 00000000000000000000000000000000 warheads 00000000000111110011100110001001 most-favored-nation 00000000000000000000000000000000 presenters 00000000000000000000000000000000 unrefrigerated 00000000000000000000000000000000 Tolls 00100000000000000000000000000000 Hocke 00100000000000000000000000000000 impropriety 00000000000111000111100010100111 mountainside 00000000000000000000000000000000 tuck 00000000000000000000000000000000 Hualien 00100000000000000000000000000000 enroute 00000000000000000000000000000000 sectarian 00000000000000000000000000000000 drearier 00000000000000000000000000000000 noconfidence 00000000000000000000000000000000 Detached 00100000000110101101101001000000 Terror 00100000000011101001110010100111 studentled 00000000000000000000000000000000 TRUSTS 01000000000010110111000100100011 darlings 00000000000000000000000000000000 Overbuilding 00100000000101011011111010100111 Cash-pressed 00100000000000000000000000000000 790.2 00000000000000000000000000000000 forgettable 00000000000000000000000000000000 489.9 00000000000000000000000000000000 405.9 00000000000000000000000000000000 785.1 00000000000000000000000000000000 725.6 00000000000000000000000000000000 direct-selling 00000000000000000000000000000000 693.4 00000000000000000000000000000000 429.9 00000000000000000000000000000000 461.1 00000000000000000000000000000000 338-44 00000000000000000000000000000000 ECONOMY 01000000000111111111111001000101 GREW 01000000000000001000001000110010 Expectations 00100000000111101111010000100011 dimming 00000000000000000000000000000000 AT* 01000000000000000000000000000000 big-business 00000000000000000000000000000000 costliest 00000000000000000000000000000000 1205.19 00000000000000000000000000000000 5.87 00000000000000000000000000000000 215.67 00000000000000000000000000000000 3425.60 00000000000000000000000000000000 129.22 00000000000000000000000000000000 131.04 00000000000000000000000000000000 luxuries 00000000000000000000000000000000 0.58 00000000000000000000000000000000 0.0047 00000000000000000000000000000000 smoke-filled 00000000000000000000000000000000 reclassification 00000000000000000000000000000000 downsized 00000000000001001010111001000000 photocopying 00000000000000000000000000000000 Conn.based 00100000000000000000000000000000 336.5 00000000000000000000000000000000 315.2 00000000000000000000000000000000 enlarging 00000000000000000000000000000000 797 00000000000000000000000000000000 short-wave 00000000000000000000000000000000 1.5930 00000000000000000000000000000000 indoors 00000000000000000000000000000000 4,350 00000000000000000000000000000000 Gwyn 00100000000000000000000000000000 Hacche 00100000000000000000000000000000 asset-valuation 00000000000000000000000000000000 cat-and-mouse 00000000000000000000000000000000 undergirded 00000000000000000000000000000000 boiled 00000000000000000000000000000000 he-goes-or-I-go 01000000000000000000000000000000 less-influential 00000000000000000000000000000000 innate 00000000000000000000000000000000 adamantly 00000000000000010001001001110010 conflicted 00000000000000000000000000000000 Worn 00100000000001110010110000110010 disparaged 00000000000000000000000000000000 1.6143 00000000000000000000000000000000 blow-up 00000000000000000000000000000000 rivalries 00000000000111010011111010100111 animosities 00000000000000000000000000000000 cacophony 00000000000000000000000000000000 free-floater 00000000000000000000000000000000 skirmishing 00000000000000000000000000000000 antipathies 00000000000000000000000000000000 cemented 00000000000000000000000000000000 straight-talking 00000000000000000000000000000000 bilking 00000000000000011001001101000000 sausage-grinder 00000000000000000000000000000000 self-described 00000000000000000000000000000000 nerd 00000000000000000000000000000000 failure-to-supervise 00000000000000000000000000000000 fallacy 00000000000000000000000000000000 cherishes 00000000000000000000000000000000 tinged 00000000000000000000000000000000 just-departed 00000000000000000000000000000000 recused 00000000000000000000000000000000 vagrant 00000000000000000000000000000000 divulge 00000000000111001110011110110010 mannerisms 00000000000000000000000000000000 Nieman 00100000000000000000000000000000 transcribe 00000000000000000000000000000000 princes 00000000000000000000000000000000 ponies 00000000000000000000000000000000 Indecon 00100000000000000000000000000000 Programming 00100000000111101010000100001001 self-reform 00000000000000000000000000000000 reformed 00000000000010111110101001000000 fascination 00000000000111110110110000100111 likening 00000000000000000000000000000000 Ornette 00100000000000000000000000000000 reprint 00000000111100111111110110110010 disseminate 00000000000000000000000000000000 competitively 00000001110000000000010001110010 62,372.95 00000000000000000000000000000000 20.988.12 00000000000000000000000000000000 Sutermeister 00100000000000000000000000000000 curse 00000000000000000000000000000000 Exhibit 00100000000111101001101000110111 Margler 00100000000000000000000000000000 McKinleyville 01000000000000000000000000000000 Ca. 00100000000000000000000000000000 48.5 00000000000000000000000000000000 523,000 00000000000000000000000000000000 Holyoke 00100000000000000000000000000000 Alysia 00100000000000000000000000000000 discrediting 00000000000000000000000000000000 cynically 00000000000000000000000000000000 15.27 00000000000000000000000000000000 74.5 00000000000000000000000000000000 9.12 00000000000000000000000000000000 empower 00000000000000000000000000000000 Covell 00100000000000000000000000000000 93.3 00000000000000000000000000000000 bins 00000000000000000000000000000000 waif 00000000000000000000000000000000 pots 00000000000000000000000000000000 Yastrow 00100000000000000000000000000000 Recycling 00100000010100000010110001000000 plastics-industry 00000000000000000000000000000000 Keough 00100000000000000000000000000000 142.02 00000000000000000000000000000000 reused 00000000000000000000000000000000 McToxics 01000000000000000000000000000000 Harman 00100000000000000000000000000000 startled 00000000000010101101110000110010 blurting 00000000000000000000000000000000 plates 00000000000000011111110101100011 reinvigorating 00000000000000000000000000000000 boils 00000000000011010100001000110010 appetizer 00000000000000000000000000000000 sock 00000000000000000000000000000000 infatuation 00000000000000000000000000000000 Gravelle 00100000000000000000000000000000 substracting 00000000000000000000000000000000 shortcoming 00000000000000000000000000000000 cheerleader 00000000000000000000000000000000 bomblets 00000000000000000000000000000000 Balances 00100000000100001010001100000011 disseminating 00000000000000000000000000000000 Comparing 00100000000110001111111101000000 6,773 00000000000000000000000000000000 5,773 00000000000000000000000000000000 4,773 00000000000000000000000000000000 taxfree 00000000000000000000000000000000 clincher 00000000000000000000000000000000 deducted 00000111100111010100010000110010 congressonal 00000000000000000000000000000000 home. 00000000000000000000000000000000 housing-loan 00000000000000000000000000000000 20.50 00000000000000000000000000000000 financial-market 00000000000000000000000000000000 Experience 00100000000111101011001110100111 coercive 00000000000001010100000110010000 then-market 00000000000000000000000000000000 databases 00000000000000000000000000000000 skirmishes 00000000000000000000000000000000 2.853 00000000000000000000000000000000 designations 00000000000000000000000000000000 kitschy 00000000000000000000000000000000 Roxani 00100000000000000000000000000000 financial-industrial 00000000000000000000000000000000 secondbiggest 00000000000000000000000000000000 treasury-management 00000000000000000000000000000000 288.9 00000000000000000000000000000000 194.50 00000000000000000000000000000000 31.22 00000000000000000000000000000000 103.05 00000000000000000000000000000000 6.22 00000000000000000000000000000000 946 00000000000000000000000000000000 17.64 00000000000000000000000000000000 13.67 00000000000000000000000000000000 Barberton 00100000000000000000000000000000 803.7 00000000000000000000000000000000 vaccine-related 00000000000000000000000000000000 FHA-insured 01000000000000000000000000000000 Stoeckel 00100000000000000000000000000000 HIGH-SCHOOL 01000000000000000000000000000000 geometric 00000000000000000000000000000000 Eishi 00100000000000000000000000000000 Wakabayashi 00100000000000000000000000000000 Strips 00100000000111101000010101100011 endorses 00000001100011100011000000010010 sketching 00000000000000000000000000000000 proscribes 00000000000000000000000000000000 Bidding 00100000000110101000110001000000 176-item 00000000000000000000000000000000 fearlast 00000000000000000000000000000000 Cosmopolitan 00100000001100001000101000110000 abridging 00000000000000000000000000000000 100.05 00000000000000000000000000000000 jazzy 00000000000000000000000000000000 9.94 00000000000000000000000000000000 12.78 00000000000000000000000000000000 95.53 00000000000000000000000000000000 5.355 00000000000000000000000000000000 dead-eyed 00000000000000000000000000000000 hustlers 00000000000000000000000000000000 14.13 00000000000000000000000000000000 laboriously 00000000000000000000000000000000 Protective 00100000000000100100101010110000 A.J.C. 01000000000000000000000000000000 Kitcat 00100000000000000000000000000000 Aitken 00100000000000000000000000000000 Walther 00100000000000000000000000000000 UH-60A 01000000000000000000000000000000 Blackhawk 00100000000000000000000000000000 MH-60K 01000000000000000000000000000000 KSI 01000000000000000000000000000000 Disc 00100000000010010100001000100001 PRIMERICA 01000000000110001101111100101000 98.8 00000000000000000000000000000000 169.9 00000000000000000000000000000000 683 00000000000000000000000000000000 502 00000000000000000000000000000000 deficit-ridden 00000000000000000000000000000000 4.06 00000000000000000000000000000000 photocopy 00000000000000000000000000000000 magicians 00000000000000000000000000000000 Erskine 00100000000000000000000000000000 108.625 00000000000000000000000000000000 magisterially 00000000000000000000000000000000 have... 00000000000000000000000000000000 588,300 00000000000000000000000000000000 1,774,326 00000000000000000000000000000000 Del.-based 00100000000000000000000000000000 earnings-per-share 00000000000000000000000000000000 longhaul 00000000000000000000000000000000 Calgon 00100000000000000000000000000000 Carbon 00100000000101100100101010110000 granular 00000000000000000000000000000000 ensconced 00000000000000000000000000000000 jugglers 00000000000000000000000000000000 boot 00000000000111111100110101010111 quartet 00000000000000000010110100000001 million-dollar 00000000000000000000000000000000 Surviving 00100000000000010101100011010000 rite 00000000000000011111110100100001 Trains 00100000000111001011101001100011 rendezvoused 00000000000000000000000000000000 humorist 00000000000000000000000000000000 scandal-tripped 00000000000000000000000000000000 resiliently 00000000000000000000000000000000 Garment 00100000000001011011111010110000 Pretend 00100000000111011100100110110010 67,000 00000000000000000000000000000000 franking 00000000000000000000000000000000 engagements 00000000000000000000000000000000 juxtapose 00000000000000000000000000000000 Atone 00100000000000000000000000000000 frequents 00000000000000000000000000000000 cabs 00000000000000000000000000000000 jostle 00000000000000000000000000000000 garden-shrub 00000000000000000000000000000000 Wick 00100000000000000000000000000000 R.L. 01000000000000000000000000000000 Host 00100000000111111111011100111111 'I've 01000000000000000000000000000000 Colson 00100000000000000000000000000000 Magruder 00100000000000000000000000000000 pulpit 00000000000111100000100011100111 Carstens 00100000000000000000000000000000 Trappist 00100000000000000000000000000000 tell-all 00000000000000000000000000000000 noticing 00000000000111010101110101000000 travails 00000000000111110011101000100011 Stena-Tiphook 01000000000000000000000000000000 psychoanalytic 00000000000000000000000000000000 mega-lawyer 00000000000000000000000000000000 masterfully 00000000000000000000000000000000 Declaring 00100000000110101001111010000010 glitterati 00000000000000000000000000000000 black-tie 00000000000000000000000000000000 Kirchberger 00100000000000000000000000000000 million-dollar-a-year 00000000000000000000000000000000 Helps 00100000000000001011010000110010 kayoed 00000000000000000000000000000000 wrondgoing 00000000000000000000000000000000 Dill 00100000000000000000000000000000 Bierbower 00100000000000000000000000000000 dangled 00000000000000000000000000000000 Gore 00101111111100010100101010001000 pity 00000000000011101101001010110111 Filmed 00100001110001110100010000110010 Excuses 00100000000111111010101110100011 Fawn 00100000000000000000000000000000 Abscam-indicted 00100000000000000000000000000000 Zombie 00100000000000000000000000000000 Massacre 00100000000111001101010001100111 Aunt 00100000000111110001111100001000 Bikini 00100000000111101000110000000001 shoplifting 00000000000000000000000000000000 felled 00000000000000000000000000000000 2.9622 00000000000000000000000000000000 co-defendant 00000000000000000000000000000000 burnishing 00000000000000000000000000000000 patriot 00000000000011011010001010110000 ferries 00000000000000000000000000000000 Involved 00100000000001001110010000110010 Bets 00100000000111001011111101100011 Studds 00100000000000000000000000000000 handily 00001000110000000000010001110010 2.8956 00000000000000000000000000000000 boozing 00000000000000000000000000000000 mogul 00000000000100000111110000110101 Become 00100000000111101100010110110010 Lobbyist 00100000000111000010011110110101 Gucci 00100000000101110110110000001000 Gulch 00100000000000000000000000000000 inhabited 00000000000000000000000000000000 Fernand 00100000000000010110000010011000 Germain 00100000000111110110111010001000 savings-and-loans 00000000000000000000000000000000 pseudo-lobbyists 00000000000000000000000000000000 seclusion 00000000000000000000000000000000 Misery 00100000000111101010110010100111 2.90-mark 00000000000000000000000000000000 scandal-tossed 00000000000000000000000000000000 scabs 00000000000000000000000000000000 Ehrlichman 00100000000000000000000000000000 2.20 00000000000000000000000000000000 good-hearted 00000000000000000000000000000000 32-nation 00000000000000000000000000000000 centenary 00000000000000000000000000000000 U.S.-dominated 01000000000000000000000000000000 Birns 00100000000000000000000000000000 Hemispheric 00100000000000000000000000000000 non-interventionist 00000000000000000000000000000000 Slay 00100000000000000000000000000000 341.20 00000000000000000000000000000000 Kind 00100000000111111111101010111111 Hearts 00100000000111011010111101100011 Coronets 00100000000000000000000000000000 murdering 00000000000000000000000000000000 Alec 00100000000001011100001000011000 intertitles 00000000000000000000000000000000 snubbed 00000000000000000000000000000000 90.20 00000000000000000000000000000000 detectives 00000000000011100100100000110011 Fish 00100000000111101101100000100001 Wanda 00100000000000000000000000000000 67.40 00000000000000000000000000000000 continual 00000000000000000000000000000000 plights 00000000000000000000000000000000 befall 00000000000000000000000000000000 coyote 00000000000000000000000000000000 Runner 00100000000111100101010010110101 slow-motion 00000000000000000000000000000000 blood-and-guts 00000000000000000000000000000000 steamroller 00000000000000000000000000000000 scriptwriters 00000000000000000000000000000000 cursing 00000000000000000000000000000000 petrified 00000000000000000000000000000000 PG-13 01000000000000000000000000000000 hundredweight 00000000000000000000000000000000 copious 00000000000000000000000000000000 gutter 00000000000000000000000000000000 crutch 00000000000000000000000000000000 errs 00000000000000000000000000000000 46.80 00000000000000000000000000000000 ALAMCO 01000000000000000000000000000000 Clarksburg 00100000000000000000000000000000 W.Va. 01000000000000000000000000000000 Hogs 00100000000110110101111001100011 64.2 00000000000000000000000000000000 electronics-product 00000000000000000000000000000000 ensembles 00000000000000000000000000000000 metal-working 00000000000000000000000000000000 547 00000000000000000000000000000000 turkey 00000000000111001110111101101000 Broiler 00100000000000000000000000000000 sunsets 00000000000000000000000000000000 Marder 00100000000000000000000000000000 Woolard 00100000000000000000000000000000 pre-split 00000000000000000000000000000000 117.375 00000000000000000000000000000000 84.75 00000000000000000000000000000000 Fallon 00100000000000000000000000000000 diversifed 00000000000000000000000000000000 8.46 00000000000000000000000000000000 FundTrust 01000000000000000000000000000000 26.54 00000000000000000000000000000000 24.05 00000000000000000000000000000000 639.9 00000000000000000000000000000000 tomatoes 00000000000111011100111001100011 Composer 00100000000111100010011110110101 Delors 00101111111110011110110010001000 cohesion 00000000000000000000000000000000 reintegrated 00000000000000000000000000000000 Heisbourg 00100000000000000000000000000000 less-creditworthy 00000000000000000000000000000000 lettuce 00000000000111110111101110110000 tramp 00000000000000000000000000000000 deserts 00000000000000000000000000000000 stick-and-carrot 00000000000000000000000000000000 realistically 00000000010000000000010001110010 Vedrine 00100000000000000000000000000000 rejuvenate 00000000000101010100111110110010 Gaelic 00100000000000000000000000000000 Thierry 00100000000000000000000000000000 Montbrial 00100000000000000000000000000000 Institutue 00100000000000000000000000000000 Soviet-German 01000000000000000000000000000000 Bismarckian 00100000000000000000000000000000 Maltese 00100000000000000000000000000000 denuclearized 00000000000000000000000000000000 speeded-up 00000000000000000000000000000000 Hammett 00100000000000000000000000000000 Dashiell 00100000000000000000000000000000 348.2 00000000000000000000000000000000 307.2 00000000000000000000000000000000 mail-processing 00000000000000000000000000000000 Selmer-Sande 01000000000000000000000000000000 1891 00000000000000000000000000000000 penetrating 00000000000011000110100001000000 12.44 00000000000000000000000000000000 87.9 00000000000000000000000000000000 Author 00100000000111111111010000110101 136-year-old 00000000000000000000000000000000 high-net 00000000000000000000000000000000 flattery 00000000000000000000000000000000 broadens 00000000000000000000000000000000 obligatto 00000000000000000000000000000000 high-net-worth 00000000000000000000000000000000 great-grandfather 00000000000000000000000000000000 F.A.O. 01000000000000000000000000000000 four-member 00000000000000000000000000000000 Bacon 00100000000111110000000000001000 538.5 00000000000000000000000000000000 388.5 00000000000000000000000000000000 Sparcstation 00100000000000000000000000000000 food-industry 00000000000000000000000000000000 C.B. 01000000000000000000000000000000 J.V. 01000000000000000000000000000000 Equifax 00100000001100011010111100101000 0.66 00000000000000000000000000000000 maninstays 00000000000000000000000000000000 Freshbake 00100000000000000000000000000000 Sieckman 00100000000000000000000000000000 319.75 00000000000000000000000000000000 Jansen 00100000000000000000000000000000 F.E. 01000000000000000000000000000000 already-tense 00000000000000000000000000000000 T.D. 01000000000000000000000000000000 shirk 00000000000000000000000000000000 Zemin 00100000000000000000000000000000 pure-voiced 00000000000000000000000000000000 biscuit 00000000000000000000000000000000 far-from-conciliatory 00000000000000000000000000000000 75-cents-an-hour 00000000000000000000000000000000 Sentences 00100000000100001100000001100111 evil-doers 00000000000000000000000000000000 lambastes 00000000000000000000000000000000 astrophysicist 00000000000000000000000000000000 Zhu 00101111111000000111000100001000 Qizhen 00100000000000000000000000000000 hashing 00000000000000000000000000000000 Codifying 00100000000000000000000000000000 36-minute 00000000000000000000000000000000 erythropoietin 00000000000000000000000000000000 Ortho 00100000000000000000000000000000 anemias 00000000000000000000000000000000 placebo 00000000000111011101110000000001 SHELTERS 01000000000111111110001100000011 CALLED 01000000000011010101010000110010 adminstrative 00000000000000000000000000000000 rites 00000000000000000000000000000000 stepchildren 00000000000000000000000000000000 four-man 00000000000000000000000000000000 Regulations 00100000000000000011111100100011 PRA 01000000000000000000000000000000 actuary 00000000000000000000000000000000 tax-deductions 00000000000000000000000000000000 High-Yield 01000000000000000000000000000000 0.63 00000000000000000000000000000000 6.26 00000000000000000000000000000000 mark-up 00000000000000000000000000000000 2,500-person 00000000000000000000000000000000 black-market 00000000000000000000000000000000 hack 00000000000000000000000000000000 state-plan 00000000000000000000000000000000 Glamorous 00100000000010101001000010010000 Greif 00100000000000000000000000000000 200-ruble 00000000000000000000000000000000 refitting 00000000000000000000000000000000 2%-3 00000000000000000000000000000000 turnkey 00000000000000000000000000000000 management... 00000000000000000000000000000000 reexamining 00000000000000000000000000000000 anachronism 00000000000000000000000000000000 officio 00000000000000000000000000000000 Lazzaroni 00100000000000000000000000000000 Dorgen 00100000000000000000000000000000 seat-for-the-secretary 00000000000000000000000000000000 turf-hungry 00000000000000000000000000000000 inflation-growth 00000000000000000000000000000000 avidly 00000000000000000000000000000000 tread 00000000000000000000000000000000 Feldstein 00101111111100011000001010001000 overstaffed 00000000000000000000000000000000 Bramalea 00100000000000000000000000000000 inside-the-beltway 00000000000000000000000000000000 gnawing 00000000000000000000000000000000 egregiously 00000000000000000000000000000000 junket 00000000000000000000000000000000 invading 00000000000111011001110101000000 McLeod 01000000000111111011010100001000 low-price 00000000000000000000000000000000 four-square 00000000000000000000000000000000 R.W. 01000000000000000000000000000000 dithering 00000000000000000000000000000000 blindly 00000000000000000000000000000000 bartering 00000000000000000000000000000000 dudgeon 00000000000000000000000000000000 Punching 00100000000000000000000000000000 tiniest 00000000000000000000000000000000 aptly 00000001101001000001001001110010 Epinalers 00100000000000000000000000000000 pottage 00000000000000000000000000000000 relished 00000000000000000000000000000000 whistled 00000000000000000000000000000000 gusto 00000000000000000000000000000000 televangelism 00000000000000000000000000000000 dichotomy 00000000000000000000000000000000 Eighty-three 00100000000000000000000000000000 H.G. 01000000000000000000000000000000 flabbiness 00000000000000000000000000000000 bitch 00000000000000000000000000000000 success... 00000000000000000000000000000000 standing-room-only 00000000000000000000000000000000 brazen 00000000000000000000000000000000 pinned 00000000000011010001001000110010 dissonance 00000000000000000000000000000000 confession 00000000000110001101111101100111 hang-tough 00000000000000000000000000000000 liars 00000000000000000000000000000000 peccadilloes 00000000000000000000000000000000 demeaned 00000000000000000000000000000000 0.85 00000000000000000000000000000000 slithered 00000000000000000000000000000000 huckstering 00000000000000000000000000000000 poohbah 00000000000000000000000000000000 BRAMALEA 01000000000000000000000000000000 780.6 00000000000000000000000000000000 disassemble 00000000000000000000000000000000 Bronfmans 00100000000000000000000000000000 Jeffery 00100000000000000000000000000000 Logsdon 00101111010101001100000010001000 Crowell 00100000000000000000000000000000 Weedon 00100000000000000000000000000000 -was 00000000000000000000000000000000 18-screen 00000000000000000000000000000000 -271,124 00000000000000000000000000000000 12.875 00000000000000000000000000000000 McDermid 01000000000000000000000000000000 ozone-damaging 00000000000000000000000000000000 27.2 00000000000000000000000000000000 unchlorinated 00000000000000000000000000000000 BASF 01000000000000000000000000000000 natural-gas-pipeline 00000000000000000000000000000000 Algonquin 00100000000000000000000000000000 Prohibition 00100000000111111100000001100111 Evian 00100000000000000000000000000000 beer-distribution 00000000000000000000000000000000 Sparkling 00100000001000011100011010010000 lemon-lime 00000000000000000000000000000000 non-flight 00000000000000000000000000000000 28-ounce 00000000000000000000000000000000 thumbs-down 00000000000000000000000000000000 Etudes 00100000000000000000000000000000 subsides 00000000000000000000000000000000 Bebop 00100000000000000000000000000000 MacSharry 01000000000000000000000000000000 Jules 00100000000000000000000000000000 vehement 00000000000000000000000000000000 improvised 00000000000000000000000000000000 exchanging 00000000000000110101111101000000 free-trade 00000000000000000000000000000000 Vassiliades 00100000000000000000000000000000 Sorbus 00100000000000000000000000000000 Energetic 00100000000001011000110100010000 Junk-fund 00100000000000000000000000000000 shortcut 00000000000101000101111010110111 ever-optimistic 00000000000000000000000000000000 bequeathed 00000000000000000000000000000000 Lighthouse 00100000000000000000000000000000 Verbatim 00100000000000000000000000000000 mendacity 00000000000000000000000000000000 emblematic 00000000000000000000000000000000 unlovely 00000000000000000000000000000000 1850 00000000000000000000000000000000 express... 00000000000000000000000000000000 free-speech 00000000000000000000000000000000 343 00000000000000000000000000000000 enlivening 00000000000000000000000000000000 fair-use 00000000000000000000000000000000 sanctity 00000000000000000000000000000000 theory-teaching 00000000000000000000000000000000 indispensability 00000000000000000000000000000000 Suppression 00100000000111101101101101001111 Responsible 00100000000011111110110000110010 biographers 00000000000000000000000000000000 memoranda 00000000001000100010001000100011 inscription 00000000000000000000000000000000 Robbers 00100000000000000000000000000000 Hindemith 00100000000000000000000000000000 Ninth 00100000000110101011100011010000 Strindberg 00100000000000000000000000000000 ascribed 00000000000011110101010000110010 polyrhythms 00000000000000000000000000000000 Holcomb 00100000000000000000000000000000 932 00000000000000000000000000000000 murderous 00000000000000000000000000000000 grammatical 00000000000000000000000000000000 chortled 00000000000000000000000000000000 alone... 00000000000000000000000000000000 analytic 00000000000000000000000000000000 pre-eminence 00000000000000000000000000000000 Arrest 00100000000111010101111010110111 derivation 00000000000000000000000000000000 is... 00000000000000000000000000000000 188.84 00000000000000000000000000000000 shallower 00000000000000000000000000000000 Coles 00100000000000000000000000000000 egotist... 00000000000000000000000000000000 treasure-trove 00000000000000000000000000000000 Hersey 00100000000000000000000000000000 Schweitzer 00100000000000000000000000000000 humanities 00000000000111111110001101100001 Prizes 00100000000110110000000001100011 Elecktra 00100000000000000000000000000000 Mattes 00100000000000000000000000000000 twindam 00000000000000000000000000000000 H.L. 01000000000000000000000000000000 primitives 00000000000000000000000000000000 bassoon 00000000000000000000000000000000 heroine 00000000000111111100111110000001 877,663 00000000000000000000000000000000 seeped 00000000000000000000000000000000 exerted 00000000000000000000000000000000 caricature 00000000000000000000000000000000 lightheartedly 00000000000000000000000000000000 Animal 00100000000011101101110000100001 vehemence 00000000000000000000000000000000 testifies 00000000000100100001101000110010 Caucus 00100000000011000011101100100101 unaccustomed 00000000000000000000000000000000 decisiveness 00000000000000000000000000000000 pastimes 00000000000000000000000000000000 Bashing 00100000000110100010110001000000 unimaginable 00000000000000000000000000000000 Rezneck 00100000000000000000000000000000 Radiation 00100000000010001001110000100001 Effects 00100000000111111101101110001111 NASA-Air 01000000000000000000000000000000 micro-electronic 00000000000000000000000000000000 dams 00000000000111101110010010001001 G.L. 01000000000000000000000000000000 Miklos 00100000000000000000000000000000 financeer 00000000000000000000000000000000 banded 00000000000000000000000000000000 Started 00100000000000001010001000110010 contrarian 00000000000010101000101000110000 44.875 00000000000000000000000000000000 52.25 00000000000000000000000000000000 142.4 00000000000000000000000000000000 521 00000000000000000000000000000000 twinned 00000000000000000000000000000000 8.18 00000000000000000000000000000000 234.5 00000000000000000000000000000000 241.9 00000000000000000000000000000000 859.5 00000000000000000000000000000000 930.2 00000000000000000000000000000000 95.9 00000000000000000000000000000000 315.8 00000000000000000000000000000000 280.7 00000000000000000000000000000000 3.54 00000000000000000000000000000000 worthiness 00000000000000000000000000000000 optical-products 00000000000000000000000000000000 Bolger 00101111111000010011100010001000 Yacos 00100000000000000000000000000000 855 00000000000000000000000000000000 72%-owned 00000000000000000000000000000000 28%-owned 00000000000000000000000000000000 Westboro 00100000000000000000000000000000 state-approved 00000000000000000000000000000000 82.50 00000000000000000000000000000000 government-bond 00000000000000000000000000000000 C&P 01000000000000000000000000000000 Salvatore 00100000000000000000000000000000 Barbera 00100000000000000000000000000000 scurrying 00000000000000000000000000000000 offhandedly 00000000000000000000000000000000 dissension 00000000000101001010111010100111 skirted 00000000000000000000000000000000 harrowing 00000000000000000000000000000000 market-jarring 00000000000000000000000000000000 SEC. 01000000000000000000000000000000 covets 00000000000000000000000000000000 Millie 00100000000000000000000000000000 Danube 00100000000000000000000000000000 lavender 00000000000000000000000000000000 jasmine 00000000000000000000000000000000 scents 00000000000110001001010101100011 wafting 00000000000001011001001000110010 aromas 00000000000000000000000000000000 28th 00000000000000000000000000000000 improviser 00000000000000000000000000000000 sub-minimum 00000000000000000000000000000000 Boga 00100000000000000000000000000000 unlock 00000000000000000000000000000000 fingerprints 00000000000000000000000000000000 Escudome 00100000000000000000000000000000 pop-out 00000000000000000000000000000000 vehicle-suspension 00000000000000000000000000000000 Detroit-to-Tokyo 01000000000000000000000000000000 Greenwald 00101111111101000110100010001000 Lada 00100000000000000000000000000000 Niva 00100000000000000000000000000000 take-it-or-leave 00000000000000000000000000000000 dark-blue 00000000000000000000000000000000 Kompakt 00100000000000000000000000000000 sported 00000000000000000000000000000000 exuded 00000000000000000000000000000000 bumps 00000000000000000000000000000000 34-page 00000000000000000000000000000000 cheetah 00000000000000000000000000000000 equates 00000000000000000000000000000000 grandly 00000000000000000000000000000000 Celica 00100000000000000000000000000000 hoods 00000000000000000000000000000000 545.3 00000000000000000000000000000000 four-stroke 00000000000000000000000000000000 Subaru 00100000000101111110111100101000 Inspire 00100000000101101111101110110010 fuel-economy 00000000000000000000000000000000 four-cylinder 00000000000000000000000000000000 securities-turnover 00000000000000000000000000000000 Odd 00100000000000010110110100010000 whimsy 00000000000000000000000000000000 Appell 00100000000000000000000000000000 motorcycle 00000000000011000100001000100001 Monkey 00100000000011011110110100000001 Gorilla 00100000000000000000000000000000 Guppy 00100000000000000000000000000000 Bongo 00100000000000000000000000000000 Autozam 00100000000000000000000000000000 microvan 00000000000000000000000000000000 Scrum 00100000000000000000000000000000 buglike 00000000000000000000000000000000 gentleness 00000000000000000000000000000000 warmheartedness 00000000000000000000000000000000 Caitlin 00100000000000000000000000000000 bubblelike 00000000000000000000000000000000 Sneaker 00100000000000000000000000000000 Kirschbaum 00100000000000000000000000000000 Leeza 00100000000000000000000000000000 Spider 00100000000000000000000000000000 Hijet 00100000000000000000000000000000 Regie 00101111111101011100101000101000 Usines 00101111111000001110110000011101 duffers 00000000000000000000000000000000 Megane 00100000000000000000000000000000 connote 00000000000000000000000000000000 feminine 00000000011111100101010010010000 grandeur 00000000000000000000000000000000 eyeglasses 00000000000000000000000000000000 Presence 00100000000111110111101110100111 hopping 00000000001110000110100001000000 seat-belt 00000000000000000000000000000000 tightener 00000000000000000000000000000000 wail 00000000000000000000000000000000 wagon 00000000000000110001111010110000 wood-grain 00000000000000000000000000000000 PAP 01000000000000010111110000100001 less-popular 00000000000000000000000000000000 pilgrimage 00000000000000000000000000000000 cockiness 00000000000000000000000000000000 uptempo 00000000000000000000000000000000 crowed 00000000000000000000000000000000 laid-back 00000000000000000000000000000000 disqualified 00000010001001010100010000110010 momentarily 00000000000000000000000000000000 infantile 00000000000000000000000000000000 incremental 00000000000000001110010100010000 retirement-savings 00000000000000000000000000000000 Schmidlin 00100000000000000000000000000000 food-shop 00000000000000000000000000000000 211.6 00000000000000000000000000000000 PWA-owned 01000000000000000000000000000000 lilting 00000000000000000000000000000000 A310-300s 00100000000000000000000000000000 747-100s 00000000000000000000000000000000 373.80 00000000000000000000000000000000 Callum 00100000000000000000000000000000 WAFA 01000000000000000000000000000000 anti-airline-takeover 00000000000000000000000000000000 quasi-xenophobic 00000000000000000000000000000000 emulated 00000000000000000000000000000000 incumbent-protection 00000000000000000000000000000000 Rain 00100000000011101111110010100111 attainable 00000000000000000000000000000000 bill-introduced 00000000000000000000000000000000 N.D. 01000000000000000000000000000000 twice-a-year 00000000000000000000000000000000 Hamilton-Dorgan 01000000000000000000000000000000 374.70 00000000000000000000000000000000 improvisational 00000000000000000000000000000000 WGBH 01000000000000000000000000000000 nose-dive 00000000000000000000000000000000 Rickel 00100000000000000000000000000000 two-family 00000000000000000000000000000000 affections 00000000000000000000000000000000 Time-Life 01000000000000000000000000000000 Comerica 00100000000000101100111100101000 pesticides.`` 00000000000000000000000000000000 It's 00100000000000000000000000000000 Moves 00100000000111100011001000100011 Sabhavasu 00100000000000000000000000000000 yank 00000001011100111111110110110010 carcinogen 00000000000000000000000000000000 Paradox 00100000000111001001111101100111 Pramual 00100000000000000000000000000000 bassist 00000000000000000000000000000000 Allow 00100000000111010011101110110010 lurching 00000000000000000000000000000000 9.82 00000000000000000000000000000000 roil 00000000000000000000000000000000 155.7 00000000000000000000000000000000 scribblers 00000000000000000000000000000000 richly 00000000000000000000000000000000 wistful 00000000000000000000000000000000 lurch 00000000000000000000000000000000 gridiron 00000000000000000000000000000000 8.64 00000000000000000000000000000000 glittery 00000000000000000000000000000000 Greed 00100000000111001111110010100111 Corruption 00100000000111110110100010100111 maul 00000000000000000000000000000000 Armen 00100000000000000000000000000000 Jens-Uwe 01000000000000000000000000000000 Die 00100000000101011101010110110010 Pantheon 00100000000000000000000000000000 S.I. 01000000000000000000000000000000 strangled 00000000000000000000000000000000 athlete-payoff 00000000000000000000000000000000 woebegone 00000000000000000000000000000000 signboards 00000000000000000000000000000000 Claus 00100000000000001000000001001000 Tomoshige 00100000000000000000000000000000 voluminous 00000000000000000000000000000000 ingeniously 00000000000000000000000000000000 mafiosi 00000000000000000000000000000000 Daley 00101111111010011001000010001000 insinuendo 00000000000000000000000000000000 Discrepancies 00100000000010101111111010100111 ex-player 00000000000000000000000000000000 tailback 00000000000000000000000000000000 Dubose 00100000000000000000000000000000 reprints 00000000000000000000000000000000 liaisons 00000000000000000000000000000000 flanker 00000000000000000000000000000000 Fryar 00100000000000000000000000000000 Steinkuhler 00100000000000000000000000000000 bulked-up 00000000000000000000000000000000 lineman 00000000000100001011011110110101 Huskers 00100000000000000000000000000000 ingestion 00000000000000000000000000000000 ticketed 00000000000000000000000000000000 Lefty 00100000000000000000000000000000 Driesell 00100000000000000000000000000000 tidbit 00000000000000000000000000000000 10-month-long 00000000000000000000000000000000 Abrupt 00100000000000010100010100010000 non-sales 00000000000000000000000000000000 Si 00100000000000000000000000000000 convenience-store 00000000000000000000000000000000 rearrange 00000000000000000000000000000000 on-campus 00000000000000000000000000000000 Weight 00100000000100001111110100100111 Watchers 00100000000000010010000010110011 Pritikin 00100000000000000000000000000000 quick-to-prepare 00000000000000000000000000000000 V.H. 01000000000000000000000000000000 Cerf 00100000000000000000000000000000 time-poor 00000000000000000000000000000000 Vroom 00100000000000000000000000000000 junk-fund 00000000000000000000000000000000 7-Eleven 01000000000000000000000000000000 debt-heavy 00000000000000000000000000000000 Clarinet 00100000000000000000000000000000 point-of-sale 00000000000000000000000000000000 Usery 00100000000000000000000000000000 mediate 00000000000000000000000000000000 Mara 00101111111000000110000100001000 eye-popping 00000000000000000000000000000000 No-Smoking 01000000000000000000000000000000 Sulaiman 00100000000000000000000000000000 sales... 00000000000000000000000000000000 Armored 00100000000111111010001010110000 thunderstorm 00000000000000000000000000000000 Shellpot 00100000000000000000000000000000 Bolstering 00100000000111001111011101000000 caked 00000000000000000000000000000000 Zaharah 00100000000000000000000000000000 moldy 00000000000000000000000000000000 mildewy 00000000000000000000000000000000 smelly 00000000000000000000000000000000 coin-cleaning 00000000000000000000000000000000 mutilated 00000000000000000000000000000000 mucked 00000000000000000000000000000000 tee 00000000000000000000000000000000 cement-mixing 00000000000000000000000000000000 heater 00000000000000000000000000000000 blowtorch 00000000000000000000000000000000 chute 00000000000000000000000000000000 sucks 00000000000000000000000000000000 Siti 00100000000000000000000000000000 rewrapped 00000000000000000000000000000000 conceiver 00000000000000000000000000000000 cement-truck 00000000000000000000000000000000 Fawcett 00100000000000000000000000000000 idiosyncratic 00000000000000000000000000000000 Truffaut 00100000000000000000000000000000 Fellini 00100000000000000000000000000000 Woody 00101111111111110010111000011000 delusion 00000000000000000000000000000000 sob 00000000000000000000000000000000 limply 00000000000000000000000000000000 Discos 00100000000000000000000000000000 Written 00100001000111110010110000110010 Benedek 00100000000000000000000000000000 Chill 00100000000100111101001010110111 good-looking 00000000000000000000000000000000 adoptive 00000000000000000000000000000000 paperback 00000000001010011000001010110000 child-as-required-yuppie-possession 00000000000000000000000000000000 motivating 00000000000000000000000000000000 brats 00000000000000000000000000000000 pained 00000000000000000000000000000000 cellists 00000000000000000000000000000000 not-so-subtly 00000000000000000000000000000000 Cheetham 00100000000000000000000000000000 Accused 00100000000111010011110000110010 literal-minded 00000000000000000000000000000000 encore 00000000000000000000000000000000 1.7600 00000000000000000000000000000000 unwed 00000000000001011010101000110000 Ohioan 00100000000000000000000000000000 warped 00000000000000000000000000000000 1.9000 00000000000000000000000000000000 most-likely-successor 00000000000000000000000000000000 glib 00000000000000000000000000000000 Ties 00100000000111001100110000100111 magnification 00000000000000000000000000000000 scamper 00000000000000000000000000000000 Swan 00100000001111001010001000110000 whimpers 00000000000000000000000000000000 Billions 00100000000111101111011000101111 cataloging 00000000000000000000000000000000 Lemmon 00100000000000000000000000000000 turgid 00000000000000000000000000000000 fluffy 00000000000000000000000000000000 sperm 00000000000011010000110000100001 coy 00000000000000000000000000000000 141.33 00000000000000000000000000000000 explores 00000000000000000000000000000000 Jean-Jacques 01000000000000000000000000000000 Annaud 00100000000000000000000000000000 Berri 00100000000000000000000000000000 orphan 00000000000100001010101000110000 cub 00000000000000000000000000000000 orphaned 00000000000000000000000000000000 child-parent 00000000000000000000000000000000 Coen 00100000000000000000000000000000 822.8 00000000000000000000000000000000 12.49 00000000000000000000000000000000 slow-growth 00000000000000000000000000000000 truck-refrigeration 00000000000000000000000000000000 handshake 00000000000000000000000000000000 INTEREST 01000000000000000000000110100111 3,102,935 00000000000000000000000000000000 3,420,936 00000000000000000000000000000000 provost 00000000000000000000000000000000 142.80 00000000000000000000000000000000 TA 01000000000000000000000000000000 raring 00000000000000000000000000000000 gallstone 00000000000000000000000000000000 disqualify 00000000000111000111111110110010 BioVentures 01000000000000000000000000000000 Rima 00100000000000000000000000000000 Cinzano 00100000000000000000000000000000 Amparano 00100000000000000000000000000000 142.95 00000000000000000000000000000000 139.75 00000000000000000000000000000000 Neurosciences 00100000000000000000000000000000 bioTechnology 01000000000000010011011010110000 Duplicating 00100000000000000000000000000000 extramural 00000000000000000000000000000000 escalation 00000000000111000100111001100111 Spectra 00100000000000111000110100101000 falsifying 00000000000001100011000110010000 subcommitee 00000000000000000000000000000000 p.m.-midnight 00000000000000000000000000000000 Playhouse 00100000000000000000000000000000 1927 00000000000000000000000000000000 8-10 00000000000000000000000000000000 chary 00000000000000000000000000000000 Perfect 00100000000000000000011010010000 1.8690 00000000000000000000000000000000 Aidan 00100000000000000000000000000000 Dennehy 00100000000000000000000000000000 Stockard 00100000000000000000000000000000 Channing 00100000000000000000000000000000 resonates 00000000000000000000000000000000 8-11 00000000000000000000000000000000 Julie 00100000000011111000001000011000 hierarchical 00000000000000000000000000000000 irk 00000000000000000000000000000000 AT&T-sponsored 01000000000000000000000000000000 ponderousness 00000000000000000000000000000000 trending 00000000000000000000000000000000 Jekyll 00100000000000000000000000000000 Brideshead 00100000000000000000000000000000 umbrellas 00000000000000000000000000000000 espresso 00000000000000000000000000000000 pre-Freudian 01000000000000000000000000000000 schizoid 00000000000000000000000000000000 Journey 00100000000110101101111101100111 Critical 00100000000000011000011000010000 defiance 00000000000111111010011001101111 9-10 00000000000000000000000000000000 A&E 01000000000000000000000000000000 one-acter 00000000000000000000000000000000 Prize-winning 00100000000000000000000000000000 Marsha 00100000000000000000000000000000 Playwrights 00100000000000000000000000000000 Peebles 00100000000000000000000000000000 intergenerational 00000000000000111110010100010000 Thursdays 00100000000000000000000000000000 2-23 00000000000000000000000000000000 Performances 00100000000111111111011010100111 toned 00000000000000000000000000000000 Arbitrage-related 00100000000000000000000000000000 hip 00000000000010000110011010010000 1:30-6 00000000000000000000000000000000 Breeder 00100000000000000000000000000000 less-than-brilliant 00000000000000000000000000000000 Polished 00100000000110000110011010010000 hooves 00000000000000000000000000000000 a.m.-1:30 00000000000000000000000000000000 Shiny 00100000000000000111011010010000 Nikes 00100000000000000000000000000000 moviestar 00000000000000000000000000000000 5-12 00000000000000000000000000000000 intimidate 00000000001011100111111110110010 earthy 00000000000000000000000000000000 Ku 00100000000000000000000000000000 Klux 00100000000000000000000000000000 Klan 00100000000000000000000000000000 Has 00100000000000000000010000010010 NOVA 01000000000111100010100100101000 caretaker 00000000000000000000000000000000 prying 00000000000000000000000000000000 supersede 00000000000100111001101110110010 stocked 00000000001101110110010000110010 Shaken 00100000000010010001110000110010 coincide 00000000000111000001010110110010 four-point 00000000000000000000000000000000 uttering 00000000000000000000000000000000 Three-month 00100000000000000000000000000000 T-bill 00100000000000000000000000000000 Competing 00100000000000010010101001000000 Treasurer 00100000000111111111111011101101 regimented 00000000000000000000000000000000 overrode 00000000000000000000000000000000 Tracking 00100000000111100010110001000000 Traveling 00100000000101101111000001000000 Abroad 00100000000000110100010001110010 refute 00000000000000000000000000000000 -at 00000000000000000000000000000000 movie-studio 00000000000000000000000000000000 theme-park 00000000000000000000000000000000 700-room 00000000000000000000000000000000 Provided 00100000000010010111010000110010 Course 00100000000111111111111110100001 invades 00000000000000000000000000000000 Aljian 00100000000000000000000000000000 98.6%-owned 00000000000000000000000000000000 heartened 00000000000000000000000000000000 DC-8-62 01000000000000000000000000000000 multi-spired 00000000000000000000000000000000 castle-like 00000000000000000000000000000000 themed 00000000000011111000000000010000 passages 00000000010011100111110101100011 351.2 00000000000000000000000000000000 succesful 00000000000000000000000000000000 midsummer 00000000000000000000000000000000 9.62 00000000000000000000000000000000 notched 00000000000000000000000000000000 governor-elect 00000000000000000000000000000000 whammy 00000000000000000000000000000000 visibly 00000000000000000000000000000000 Herzfeld 00101111101010101100000010001000 6.08 00000000000000000000000000000000 naturalized 00000000000000000000000000000000 Northampton 00100000000000000000000000000000 supercilious 00000000000000000000000000000000 beachfront 00000000000000000000000000000000 Ostrander 00100000000000000000000000000000 Fellowship 00100000000000000000000000000000 quintuple 00000000000000000000000000000000 50%-leveraged 00000000000000000000000000000000 Wickes 00100000000111111111111100101000 Horsehead 00100000000000000000000000000000 junk-market 00000000000000000000000000000000 Bernstein-Macaulay 01000000000000000000000000000000 Eden 00100000000100110110011010101000 paper-and-crayon 00000000000000000000000000000000 Yasuo 00100000000000000000000000000000 envy-quotient 00000000000000000000000000000000 peerless 00000000001011011000001000110000 Created 00100000000111101100010000110010 flaunts 00000000000000000000000000000000 redefining 00000000000000000000000000000000 congestive 00000000000000000000000000000000 non-horticultural 00000000000000000000000000000000 Mayhap 00100000000000000000000000000000 metaphorical 00000000000000000000000000000000 literal 00000000000000000000000000000000 HG 01000000000000000000000000000000 Luce 00101111111100100111000010001000 semantics 00000000000000000000000000000000 ignoramus 00000000000000000000000000000000 Varnell 00100000000000000000000000000000 Landscape 00100000000100101111101001100111 Strawberry 00100000000000000000000000000000 uncollaborated 00000000000000000000000000000000 recycle 00000000000000000000000000000000 artful 00000000000000000000000000000000 rudimentary 00000000000000000000000000000000 triangles 00000000000000000000000000000000 rectangles 00000000000000000000000000000000 once-closed 00000000000000000000000000000000 gridded 00000000000000000000000000000000 two-dimensional 00000000000000000000000000000000 3-D 01000000000000000000000000000000 kelly 00001111111100111111100010001000 amateurish 00000000000000000000000000000000 self-tilth 00000000000000000000000000000000 rhododendron 00000000000000000000000000000000 tulip 00000000000000000000000000000000 Commissioning 00100000000100110001111101000000 dollars... 00000000000000000000000000000000 whim 00000000000000000000000000000000 tablemodel 00000000000000000000000000000000 sheltering 00000000000000000000000000000000 microcosm 00000000000000000000000000000000 design... 00000000000000000000000000000000 serpentine 00000000000000000000000000000000 orchard... 00000000000000000000000000000000 50-by-50-foot 00000000000000000000000000000000 tartan 00000000000000000000000000000000 maquette 00000000000000000000000000000000 jury-rigged 00000000000000000000000000000000 rec 00000000000000000000000000000000 Barcalounger 00100000000000000000000000000000 requisitioned 00000000000000000000000000000000 rectilinear 00000000000000000000000000000000 French-speaking 00100000000000000000000000000000 geometry 00000000000000000000000000000000 right-angling 00000000000000000000000000000000 tartans 00000000000000000000000000000000 roomette 00000000000000000000000000000000 predicated 00000000000000000000000000000000 43-foot 00000000000000000000000000000000 cube 00000000000000000000000000000000 fishbowl 00000000000000000000000000000000 birdcage 00000000000000000000000000000000 cockatoos 00000000000000000000000000000000 plaid-floored 00000000000000000000000000000000 strawberries 00000000000000000000000000000000 Bosque 00100000000000000000000000000000 linden 00000000000100000100001000001000 Lindens 00100000000000000000000000000000 battalion 00000000000000000000000000000000 barbers 00000000000000000000000000000000 rosarians 00000000000000000000000000000000 orchardists 00000000000000000000000000000000 arborists 00000000000000000000000000000000 semi-skilled 00000000000000000000000000000000 gardenettes 00000000000000000000000000000000 windowless 00000000000000000000000000000000 lattice 00000000000000000000000000000000 Stygian 00100000000000000000000000000000 Consequence 00100000000111111010111000111111 photosynthesis 00000000000000000000000000000000 decking 00000000000000000000000000000000 Christmas-like 00100000000000000000000000000000 Gro-Lites 01000000000000000000000000000000 flouting 00000000000000000000000000000000 two-mile 00000000000000000000000000000000 riverside 00000000000110000100101001101000 Esplanade 00100000000000000000000000000000 Statue 00100000000110111101100101100111 riverfront 00000000000000000000000000000000 waterfall 00000000000000000000000000000000 rill 00000000000000000000000000000000 garden... 00000000000000000000000000000000 Lynden 00100000000000000000000000000000 Conservatory 00100000000000000000000000000000 Restoration 00100000000111101110101101001111 horticultural 00000000000000000000000000000000 Cooperative 00100000000000010000100000100001 obstruct 00000000000000000000000000000000 insure... 00000000000000000000000000000000 seawall 00000000000000000000000000000000 permeable 00000000000000000000000000000000 Palomino 00100000000000000000000000000000 Tilted 00100000000000000000000000000000 Arc 00100000000111100010101000110000 Flower 00100000000000110000101100100001 1883 00000000000000000000000000000000 Unhappily 00100000000000000000000000000000 gardeners 00000000000000000000000000000000 exerpts 00000000000000000000000000000000 Rails 00100000000000000000000000000000 disparity 00000000000111111110101000010111 1844 00000000000000000000000000000000 1914 00000000000000000000000000000000 omnipresent 00000000000000000000000000000000 impudent 00000000000000000000000000000000 noteholder 00000000000000000000000000000000 gold-based 00000000000000000000000000000000 Petruzzi 00100000000000000000000000000000 petulant 00000000000000000000000000000000 Fullerton 00100000000000000000000000000000 9.68 00000000000000000000000000000000 tripped 00000000000000000000000000000000 Clad 00100000001000011110010000110010 committee... 00000000000000000000000000000000 then-chairman 00000000000000000000000000000000 interruptions 00000000000000000000000000000000 anchored 00000000000000000000000000000000 2,200 00000000000000000000000000000000 policymaker 00000000000000000000000000000000 mailbox 00000000000000000000000000000000 unfamiliarity 00000000000000000000000000000000 Soho 00100000000000000000000000000000 clambered 00000000000000000000000000000000 direct-mail-mogul 00000000000000000000000000000000 unremittingly 00000000000000000000000000000000 mail-room 00000000000000000000000000000000 Belth 00100000000000000000000000000000 Imai 00100000000000000000000000000000 rationed 00000000000000000000000000000000 Ryukichi 00100000000000000000000000000000 Direct-mail 00100000000000000000000000000000 priori 00000000000000000000000000000000 Slosberg 00100000000000000000000000000000 directmail 00000000000000000000000000000000 smacks 00000000000000000000000000000000 brotherism 00000000000000000000000000000000 noticeable 00000000000000111000000000010000 duplications 00000000000000000000000000000000 Lincolnshire 00100000000000000000000000000000 tagged 00000000000000000000000000000000 Musical 00100000000000000000001100100001 plugging 00000000000000000000000000000000 Listen 00100000000111100111010110110010 Track 00100000000000101001001010110111 Vizeversa 00100000000000000000000000000000 partisans 00000000000000000000000000000000 pullouts 00000000000000000000000000000000 stickers 00000000000000000000000000000000 sparred 00000000000000000000000000000000 decorum 00000000000000000000000000000000 authored 00000000000000101111010000110010 gains-tax 00000000000000000000000000000000 Robb 00100000000000000000000000000000 one-out-of-three 00000000000000000000000000000000 superbly 00000000000000000000000000000000 capitalgains 00000000000000000000000000000000 Kazushige 00100000000000000000000000000000 1,642 00000000000000000000000000000000 3,372 00000000000000000000000000000000 refugee-assistance 00000000000000000000000000000000 alfresco 00000000000000000000000000000000 465,000 00000000000000000000000000000000 stock-taking 00000000000000000000000000000000 rotted 00000000000000000000000000000000 Regulator 00100000000000100111110000110101 SISAL 01000000000000000000000000000000 black-draped 00000000000000000000000000000000 liner 00000000000010100101111000000001 mourning 00000000000000000000000000000000 deported 00000001111001010100010000110010 Italians 00100000000111110110000110110011 Idris 00100000000000000000000000000000 Muammar 00100000000000000000000000000000 Inuit 00100000000000000000000000000000 Cree 00100000000000000000000000000000 Labrador 00100000000000000000000000000000 -players 00000000000000000000000000000000 streaked 00000000000000000000000000000000 Located 00100000000001001100010000110010 gas-one-tenth 00000000000000000000000000000000 councilors 00000000000000000000000000000000 Giulio 00100000000000000000000000000000 Andreotti 00100000000000000000000000000000 fresco 00000000000000000000000000000000 Camerino 00100000000000000000000000000000 Nuremberg 00100000000000110110000000100001 recharging 00000000000000000000000000000000 socket 00000000000000000000000000000000 876,706 00000000000000000000000000000000 Blood 00100000000000000000010000100001 patient-advocacy 00000000000000000000000000000000 finagled 00000000000000000000000000000000 Constitutional 00100000000000001100000000110000 bioequivalence-therapeutic-equivalence 00000000000000000000000000000000 bequests 00000000000000000000000000000000 admires 00000000000000000000000000000000 bloodstream 00000000000000000000000000000000 Reina 00100000000000000000000000000000 Berner 00100000000000000000000000000000 Lederer 00100000000000000000000000000000 Edelmann 00100000000000000000000000000000 Plews 00100000000000000000000000000000 135.6 00000000000000000000000000000000 Vivaldi-at-brunch 00100000000000000000000000000000 60-foot 00000000000000000000000000000000 inferno 00000000000000000000000000000000 grottoes 00000000000000000000000000000000 waterfalls 00000000000000000000000000000000 whisked 00000000000000000000000000000000 walkway 00000000000000000000000000000000 glide 00000000000000000000000000000000 habitat 00000000000101001100100000100001 illusionist 00000000000000000000000000000000 Siegfried 00100000000000000000000000000000 frolic 00000000000000000000000000000000 million-gallon 00000000000000000000000000000000 saltwater 00000000000000000000000000000000 nine-story 00000000000000000000000000000000 orchid-strewn 00000000000000000000000000000000 atrium 00000000000000000000000000000000 20,000-gallon 00000000000000000000000000000000 stingrays 00000000000000000000000000000000 angelfish 00000000000000000000000000000000 puffers 00000000000000000000000000000000 island-fantasy 00000000000000000000000000000000 -since 00000000000000000000000000000000 gamblers 00000000000111011001111000110011 castlelike 00000000000000000000000000000000 tournaments 00000000000000000000000000000000 Arthurian 00100000000000000000000000000000 amusement 00000000000011010110011010101000 movieland 00000000000000000000000000000000 5,000-room 00000000000000000000000000000000 117-acre 00000000000000000000000000000000 1787 00000000000000000000000000000000 11,795 00000000000000000000000000000000 75,500 00000000000000000000000000000000 307,000 00000000000000000000000000000000 95,400 00000000000000000000000000000000 unitary 00000000000000000000000000000000 Hotel-casino 00100000000000000000000000000000 Derchin 00100000000000000000000000000000 roulette 00000000000000000000000000000000 Lady 00100000000111101011110010110101 Luck 00100000000111110110111010100111 McCarran 01000000000000010111011000111001 gendarme 00000000000000000000000000000000 carnival 00000000000111101000111010101000 Articles 00100000000111100101110101100011 clowns 00000000000000000000000000000000 centurions 00000000000000000000000000000000 august 00000000000111101110111001100010 missionary 00000000000000000000000000000000 toga 00000000000000000000000000000000 displeased 00000000000000000000000000000000 Caesarean 00100000000000000000000000000000 Flamingo 00100000000000000000000000000000 Frontier 00100000000000000110100100100001 facelifts 00000000000000000000000000000000 persuades 00000000000000000000000000000000 pixie-like 00000000000000000000000000000000 Sanyo 00100000000100010000100100101000 mousetrap 00000000000000000000000000000000 Benninger 00100000000000000000000000000000 limitation 00000000000111110011100011000111 Kristin 00100000000000000000000000000000 Wet 00100000000000011110011010010000 Heffner 00100000000000000000000000000000 90s 00000000000000000000000000000000 in-room 00000000000000000000000000000000 fripperies 00000000000000000000000000000000 Casinos 00100000000000010000110001100011 revelers 00000000000000000000000000000000 naughtier 00000000000000000000000000000000 expansionists 00000000000000000000000000000000 mixers 00000000000000000000000000000000 Corners 00100000000000111011100100101111 intersection 00000000000000000000000000000000 lane 00001111111010000000000100001000 Dunes 00100000000000000000000000000000 Aladdin 00100000000000000000000000000000 snowbirds 00000000000000000000000000000000 more-discriminating 00000000000000000000000000000000 motels 00000000000110110111110001100011 room-rate 00000000000000000000000000000000 80%-plus 00000000000000000000000000000000 Rubeli 00100000000000000000000000000000 mega-resorts 00000000000000000000000000000000 facelift 00000000000100001011001011100111 inconvenient 00000000000000000000000000000000 lion's-head 00000000000000000000000000000000 buffets 00000000000000000000000000000000 Gluck 00100000000000000000000000000000 Quartet 00100000000000000010110100000001 politely 00000000101001000001001001110010 distractions 00000000000011101011110101100011 Vegans 00100000000000000000000000000000 SIDE 01000000000111100111001001100111 deliberating 00000000000000000000000000000000 Floral 00100000000000000000000000000000 capital-to-assets 00000000000000000000000000000000 D.N. 01000000000000000000000000000000 Confer 00100000000000000000000000000000 Kensetsu 00100000000000000000000000000000 Reconsideration 00100000000000000000000000000000 Takimura 00100000000000000000000000000000 Messiaen 00100000000000000000000000000000 Concurrence 00100000000000000000000000000000 Adjournment 00100000000000000000000000000000 Effect 00100000000111101111111110001111 Kimihide 00100000000000000000000000000000 Limitations 00100000000111111010100100100111 bait 00000000000111101111011000000001 CRs 01000000000000000000000000000000 eviscerating 00000000000000000000000000000000 loop 00000000000000000000000000000000 Clause 00100000000000000010110011100111 Labeling 00100000001010000010110001000000 blinked 00000000000000000000000000000000 countercultural 00000000000000000000000000000000 Dept. 00100000000000000000000000000000 usurpation 00000000000000000000000000000000 contorted 00000000000000000000000000000000 squelch 00000000000000000000000000000000 Battle-tested 00100000000000000000000000000000 treaty-negotiating 00000000000000000000000000000000 Unconstitutional 00100000000010110000110110010000 naysay 00000000000000000000000000000000 subconferences 00000000000000000000000000000000 junkholders 00000000000000000000000000000000 Weakens 00100000101110000011000000010010 Overbuilt 00100000000001011101101001000000 NORTHEAST 01000000000111111010001110101000 overbuilding 00000000000101011011111010100111 Foreclosures 00100000000111000110000010100111 425,000-square-foot 00000000000000000000000000000000 32-acre 00000000000000000000000000000000 Prussia 00100000000000000000000000000000 Helmsley-Spear 01000000000000000000000000000000 Receivables 00100000000111101000101111100011 SHOULD 01000000000000000001010110010010 recreate 00000000000000000000000000000000 Serkin 00100000000000000000000000000000 Nagy 00100000000000000000000000000000 Hundred 00100000000110101110000001010000 half-acre 00000000000000000000000000000000 Mediterranean-inspired 00100000000000000000000000000000 spacious 00000000000000000000000000000000 baths 00000000000000000000000000000000 intrusions 00000000000000000000000000000000 Exteriors 00100000000000000000000000000000 steel-reinforced 00000000000000000000000000000000 indestructibility 00000000000000000000000000000000 common-carrier 00000000000000000000000000000000 Brand-Name 01000000000000000000000000000000 Buildings 00100000000000000000110001100011 RESIDENTIAL 01000000000000001111010000110000 Weingarten-Siegel 01000000000000000000000000000000 Manalapan 00100000000000000000000000000000 Aaa 00100000000000000000000000000000 Allegro 00100000000000000000000000000000 Pointes 00100000000000000000000000000000 besuboru 00000000000000000000000000000000 Developer 00100000000011100011110000110101 Ara 00100000000000000000000000000000 entry-price 00000000000000000000000000000000 move-up 00000000000000000000000000000000 visualize 00000000000000000000000000000000 Quake 00100000000111111100101101100111 Jolt 00100000000100010101111010110111 PENNEY 01000000000001101011000001001000 CLUBS 01000000000000010110110001100011 curvy 00000000000000000000000000000000 skimpy 00000000000000000000000000000000 lumpier 00000000000000000000000000000000 misconception 00000000000000000000000000000000 Pacholik 00100000000000000000000000000000 conditioning... 00000000000000000000000000000000 ProBody 01000000000000000000000000000000 Spa 00100000000000000000000000000000 TOPAZ 01000000000000000000000000000000 Advice 00100000000111111011110100100111 Topaz 00100000000000000000000000000000 translucent 00000000000000000000000000000000 whitish 00000000000000000000000000000000 irradiation 00000000000000000000000000000000 audience-friendly 00000000000000000000000000000000 gemstone 00000000000000000000000000000000 aquamarine 00000000000000000000000000000000 jewelers 00000000000000000000000000000000 TRAVELS 01000000000111111100001000110010 Advent 00100000000110010101111000001111 MMG 01000000000000000000000000000000 Deleage 00100000000000000000000000000000 Favored 00100000001011101100010000110010 Family-owned 00100000000000000000000000000000 Matuschka 00100000000000000000000000000000 Gruppe 00100000000000000000000000000000 DIRECTORY 01000000000000011000001010110000 SUSPECT 01000000000001011110000110110010 saluting 00000000000000000000000000000000 ambassadors 00000000000000000000000000000000 DRACULA'S 01000000000000000000000000000000 BUSY 01000000000000010100011010010000 Transylvania 00100000000000000000000000000000 Unitours 00100000000000000000000000000000 off-season 00000000000000000000000000000000 MALAISE 01000000000111001010111010100111 revitalizing 00000000000000000000000000000000 Listeners 00100000000000000011110000110011 Argonne 00100000000000000000000000000000 celebrates 00000000000000000000000000000000 100th 00000000000000000000000000000000 hardcover 00000000000100100110101100100001 yearbook 00000000000000000000000000000000 bolsters 00000000000000000000000000000000 O'Hara 01000000000000000000000000000000 absorbers 00000000000000000000000000000000 22.26 00000000000000000000000000000000 99.771 00000000000000000000000000000000 8.457 00000000000000000000000000000000 8.387 00000000000000000000000000000000 98.518 00000000000000000000000000000000 1992-2000 00000000000000000000000000000000 triple-a 00000000000000000000000000000000 46,245,000 00000000000000000000000000000000 proliferated 00000000000000000000000000000000 116,385,000 00000000000000000000000000000000 obedient 00000000000000000000000000000000 12,915,000 00000000000000000000000000000000 1995-1999 00000000000000000000000000000000 1998-2011 00000000000000000000000000000000 2009-2011 00000000000000000000000000000000 372.14 00000000000000000000000000000000 1990-1995 00000000000000000000000000000000 securitiess 00000000000000000000000000000000 1989-88 00000000000000000000000000000000 8.54 00000000000000000000000000000000 Packers 00100000000100011100010000110011 Coupon 00100000000000010000010011000111 concertos 00000000000000000000000000000000 Skopbank 00100000000000000000000000000000 Hokkaido 00100000000000000000000000000000 Takushoku 00100000000000000000000000000000 Indentical 00100000000000000000000000000000 160.4 00000000000000000000000000000000 studded 00000000000000000000000000000000 Marche 00100000000000000000000000000000 sidestepped 00000000000000000000000000000000 Apart 00100000000000011001111100110010 stylishly 00000000000000000000000000000000 Joint-research 00100000000000000000000000000000 uncomplaining 00000000000000000000000000000000 Rindos 00100000000000000000000000000000 high-temperature 00000000000000000000000000000000 Chetta 00100000000000000000000000000000 underperformers 00000000000000000000000000000000 half-forgotten 00000000000000000000000000000000 summon 00000000000000000000000000000000 Mozart 00100000000101001000101100100001 Tatsunori 00100000000000000000000000000000 Galanter 00100000000000000000000000000000 Magnet 00100000000011011100100000100001 58.6 00000000000000000000000000000000 186.4 00000000000000000000000000000000 820.4 00000000000000000000000000000000 consolidates 00000000000000000000000000000000 Condominium 00100000000001001001111010110000 747.8 00000000000000000000000000000000 623.5 00000000000000000000000000000000 Fox-Meyer 01000000000000000000000000000000 Permian 00100000000000000000000000000000 Vacancies 00100000000000000000000001100011 Kuehler 00100000000000000000000000000000 fearsome 00000000000000000000000000000000 interprets 00000000000000000000000000000000 semiconductor-manufacturing 00000000000000000000000000000000 lithography 00000000000000000000000000000000 wavelengths 00000000000000000000000000000000 blurry 00000000000000000000000000000000 paintbrush 00000000000000000000000000000000 stimulus 00000000000000001001011000111001 straighter 00000000000101100100101100100001 brittle 00000000000000000000000000000000 Bendix 00100000000111101101000100101000 Collision 00100000000001000011001010110111 Avoidance 00100000000111111100111000111001 Recess 00100000000000011101010001100111 course-correction 00000000000000000000000000000000 advisories 00000000000000000000000000000000 stimulator 00000000000000000000000000000000 7.38 00000000000000000000000000000000 dictatorships 00000000000000000000000000000000 Bertin 00100000000000000000000000000000 Unigesco 00100000000000000000000000000000 toy-store 00000000000000000000000000000000 Levesque 00100000000000000000000000000000 Beaubien 00100000000000000000000000000000 Geoffrion 00100000000000000000000000000000 Doherty 00100000000000000000000000000000 Rating 00100000000011111111000011000111 catalogue 00000000000000000000000000000000 Yvon 00100000000000000000000000000000 Foreign-exchange 00100000000000000000000000000000 141.60 00000000000000000000000000000000 dollar-mark 00000000000000000000000000000000 r 00000000000000000000000000000000 369.10 00000000000000000000000000000000 368.24 00000000000000000000000000000000 7.125 00000000000000000000000000000000 Schenectady 00100000000000000000000000000000 128.6 00000000000000000000000000000000 Session 00100000000111111110010001100111 69.8 00000000000000000000000000000000 908.8 00000000000000000000000000000000 fractious 00000000000000000000000000000000 less-ambitious 00000000000000000000000000000000 Emboldened 00100000000101100001110000110010 stock-trader 00000000000000000000000000000000 Holliger 00100000000000000000000000000000 tradeoff 00000000000000000000000000000000 wishful 00000000000000000000000000000000 Candace 00100000000000000000000000000000 Schroeder 00101111111111011010100010001000 relent 00000000000000000000000000000000 oboist 00000000000000000000000000000000 133.1 00000000000000000000000000000000 Roeck 00100000000000000000000000000000 pre-strike 00000000000000000000000000000000 243.4 00000000000000000000000000000000 201.2 00000000000000000000000000000000 715.1 00000000000000000000000000000000 563.8 00000000000000000000000000000000 amputation 00000000000000000000000000000000 Playboy 00100000000110101111100100100001 reorganizes 00000000000000000000000000000000 Agoglia 00100000000000000000000000000000 film-makers 00000000000000000000000000000000 Grodnik 00100000000000000000000000000000 Matheson 00100000000000000000000000000000 thrift-accounting 00000000000000000000000000000000 357.5 00000000000000000000000000000000 10.83 00000000000000000000000000000000 48.7 00000000000000000000000000000000 130.2 00000000000000000000000000000000 227.3 00000000000000000000000000000000 dispositions 00000000000000000000000000000000 5.125 00000000000000000000000000000000 457.9 00000000000000000000000000000000 Hilder 00100000000000000000000000000000 once-sporadic 00000000000000000000000000000000 12-pack 00000000000000000000000000000000 market-by-market 00000000000000000000000000000000 238.3 00000000000000000000000000000000 226.5 00000000000000000000000000000000 Third-period 00100000000000000000000000000000 2.49 00000000000000000000000000000000 whacker 00000000000000000000000000000000 19.125 00000000000000000000000000000000 earlier-announced 00000000000000000000000000000000 Beneath 00100000001010100001000000001010 news-release 00000000000000000000000000000000 restarters 00000000000000000000000000000000 barroom 00000000000000000000000000000000 Insights 00100000000110001101110101100011 beer-industry 00000000000000000000000000000000 tiff 00000000000000000000000000000000 unforgiving 00000000000000000000000000000000 premium-beer 00000000000000000000000000000000 ceding 00000000000000000000000000000000 magnetically 00000000000000000000000000000000 84.15 00000000000000000000000000000000 35442.40 00000000000000000000000000000000 914 00000000000000000000000000000000 145.45 00000000000000000000000000000000 35587.85 00000000000000000000000000000000 bullishly 00000000000000000000000000000000 begining 00000000000000000000000000000000 1,380,000 00000000000000000000000000000000 9,756 00000000000000000000000000000000 2,290 00000000000000000000000000000000 16.20 00000000000000000000000000000000 4,290 00000000000000000000000000000000 1,520 00000000000000000000000000000000 2,680 00000000000000000000000000000000 W.A. 01000000000000000000000000000000 2640 00000000000000000000000000000000 5,810 00000000000000000000000000000000 8,550 00000000000000000000000000000000 2161.9 00000000000000000000000000000000 11,390,000 00000000000000000000000000000000 1751.9 00000000000000000000000000000000 12.10 00000000000000000000000000000000 212.5 00000000000000000000000000000000 498 00000000000000000000000000000000 follow-through 00000000000000000000000000000000 26.29 00000000000000000000000000000000 Purdue 00100000000000000000000000000000 thigh 00000000000101111100110000000001 tiremaker 00000000000000000000000000000000 645 00000000000000000000000000000000 Anti-Deficiency 01000000000000000000000000000000 inks 00000000000000000000000000000000 resins 00000000000111001111001111001001 State-controlled 00100000000000000000000000000000 woodwind 00000000000000000000000000000000 339 00000000000000000000000000000000 97-1 00000000000000000000000000000000 Currier 00100000000000000000000000000000 303-107 00000000000000000000000000000000 circumvents 00000000000000000000000000000000 standoff 00000000000111100100110000100111 Silvio 00100000000000000000000000000000 ardently 00000000000000000000000000000000 church-state 00000000000000000000000000000000 chutzpah 00000000000000000000000000000000 Spaghetti 00100000000000000000000000000000 dashes 00000000000000000000000000000000 one-term 00000000000000000000000000000000 incorporating 00000000000000111101111101000000 earmarking 00000000000000000000000000000000 idiomatic 00000000000000000000000000000000 Australia-based 00100000000000000000000000000000 6.65 00000000000000000000000000000000 Servifilm 00100000000000000000000000000000 Cinematografica 00100000000000000000000000000000 Madrid-based 00100000000000000000000000000000 Hachuel 00100000000000000000000000000000 Barcelona-based 00100000000000000000000000000000 four-fold 00000000000000000000000000000000 Tiempo 00100000000000000000000000000000 Interviu 00100000000000000000000000000000 Panorama 00100000000000000000000000000000 Asensio 00100000000000000000000000000000 non-brain 00000000000000000000000000000000 Customized 00100000000000111100101010110000 Grundfest 00101111111001101100110010001000 more-volatile 00000000000000000000000000000000 400-member 00000000000000000000000000000000 caskets 00000000000000000000000000000000 1,177,000 00000000000000000000000000000000 behavioral 00000000000000000000000000000000 Care-Unit 01000000000000000000000000000000 dependency 00000000000111101010100100100111 elaborating 00000000000000000000000000000000 851,000 00000000000000000000000000000000 business-communications 00000000000000000000000000000000 Kass-Pedone 01000000000000000000000000000000 795,900 00000000000000000000000000000000 497,400 00000000000000000000000000000000 106,100 00000000000000000000000000000000 10.375 00000000000000000000000000000000 12.125 00000000000000000000000000000000 -Tokyo 01000000000000000000000000000000 Pollack 00100000001101100100111010001000 Cambrian 00101111111101010111111010101000 Davidow 00100000000000000000000000000000 Wallingford 00100000000000000000000000000000 Nacchio 00100000000000000000000000000000 Orbe 00100000000000000000000000000000 Grais 00100000000000000000000000000000 60.5 00000000000000000000000000000000 JAILED 01000000010101110100010000110010 AFRICAN-AMERICAN 01000000000000000000000000000000 Novametrix 00100000000000000000000000000000 bail-jumping 00000000000000000000000000000000 Kennewick 00100000000000000000000000000000 Gorenstein 00100000000000000000000000000000 COURTS 01000000000011000010010110110011 URGED 01000000000001001101010000110010 Orleans-based 00100000000000000000000000000000 Complex 00100000000000000110000010010000 fast-track 00000000000000000000000000000000 Cadwell 00100000000000000000000000000000 Fitzsimmons 00100000000000000000000000000000 Lehn 00100000000000000000000000000000 Fink 00101111111001110000100010001000 disinfectants 00000000000000000000000000000000 stains 00000000000000000000000000000000 Minwax 00100000000000000000000000000000 Formby 00100000000000000000000000000000 Bridgers 00100000000000000000000000000000 Widely 00100000000000100111001001110010 19.62 00000000000000000000000000000000 19.65 00000000000000000000000000000000 muzzling 00000000000000000000000000000000 Dismissing 00100000000000101100001101000000 yet-to-be-formed 00000000000000000000000000000000 AP-Dow 01000000000000000000000000000000 397 00000000000000000000000000000000 C&D 01000000000000000000000000000000 2.4225 00000000000000000000000000000000 Announced 00100000000000000001000111000010 puppet 00000000000010101101011000110000 Katharina 00100000000000000000000000000000 Zimmer 00100000000101001111000100001000 73.97 00000000000000000000000000000000 74.20 00000000000000000000000000000000 Muzzling 00100000000000000000000000000000 limb 00000000000000000000000000000000 75.75 00000000000000000000000000000000 end-of-season 00000000000000000000000000000000 car-crash 00000000000000000000000000000000 7,839 00000000000000000000000000000000 33,270 00000000000000000000000000000000 steadiness 00000000000111000011111010100111 Sucre 00100000000000000000000000000000 Denrees 00100000000000000000000000000000 Jersey-Salem 01000000000000000000000000000000 AMI 01000000000000000000000000000000 Houlian 00100000000000000000000000000000 Lokey 00100000000000000000000000000000 Zukin 00100000000000000000000000000000 blindfold 00000000000000000000000000000000 Baa3 00100000000000000000000000000000 Euroissues 00100000000000000000000000000000 floundering 00000000000000000000000000000000 Torchmark 00100000000000000000000000000000 Upchurch 00100000000000000000000000000000 S.P. 01000000000000000000000000000000 Samford 00100000000000000000000000000000 common-share 00000000000000000000000000000000 926 00000000000000000000000000000000 Unitholders 00100000000000000000000000000000 cents-a-unit 00000000000000000000000000000000 2.025 00000000000000000000000000000000 medium-grade 00000000000000000000000000000000 Beghin 00100000000000000000000000000000 Corbehem 00100000000000000000000000000000 Feldemuehle 00100000000000000000000000000000 Kaysersberg 00100000000000000000000000000000 A.T.B. 01000000000000000000000000000000 anesthetized 00000000000000000000000000000000 213.2 00000000000000000000000000000000 non-Swedish 01000000000000000000000000000000 -what 00000000000000000000000000000000 329.2 00000000000000000000000000000000 roughhewn 00000000000000000000000000000000 antimissile 00000000000000000000000000000000 carrier-based 00000000000000000000000000000000 Conferees 00100000000000000100100110110011 Midgetman 00100000000110011010001010110000 radar-eluding 00000000000000000000000000000000 Bickford 00100000000000000000000000000000 B-2s 00100000000000000000000000000000 32.3 00000000000000000000000000000000 704.4 00000000000000000000000000000000 30.25 00000000000000000000000000000000 Kloner 00100000000000000000000000000000 Nervousness 00100000000101111110111010100111 tweaking 00000000000000000000000000000000 342.50 00000000000000000000000000000000 nine-point 00000000000000000000000000000000 30-stock 00000000000000000000000000000000 320.94 00000000000000000000000000000000 Magnetic 00100000000010110010101010110000 189.52 00000000000000000000000000000000 unconscious 00000000000000000000000000000000 Disappointment 00100000000110000110111010100111 twopoint 00000000000000000000000000000000 0.44 00000000000000000000000000000000 375.92 00000000000000000000000000000000 8,930,000 00000000000000000000000000000000 superefficient 00000000000000000000000000000000 Saito 00100000000000000000000000000000 Canon 00100000000111010000111100101000 laser-beam-printer 00000000000000000000000000000000 docile 00000000000001010101010010010000 Zosen 00100000000000000000000000000000 521.4 00000000000000000000000000000000 494.8 00000000000000000000000000000000 Courtis 00100000000000000000000000000000 yet-another 00000000000000000000000000000000 51.8 00000000000000000000000000000000 unconvinced 00000000000000000000000000000000 Arai 00100000000000000000000000000000 Chiappa 00100000000000000000000000000000 marathon 00000000000000010000011000101000 35th 00000000000000000000000000000000 outlast 00000000000000000000000000000000 57-month 00000000000000000000000000000000 29-inch 00000000000000000000000000000000 Cima 00100000000000000000000000000000 Cefiro 00100000000000000000000000000000 Endo 00100000000000000000000000000000 overworking 00000000000000000000000000000000 sassy 00000000000000000000000000000000 shipbuilders 00000000000000000000000000000000 Sasebo 00100000000000000000000000000000 unmatched 00000000000000000000000000000000 prescient 00000000000000000000000000000000 subjecting 00000000000000000000000000000000 current-generation 00000000000000000000000000000000 Hajime 00100000000000000000000000000000 pricecutting 00000000000000000000000000000000 32.9 00000000000000000000000000000000 534.3 00000000000000000000000000000000 464.7 00000000000000000000000000000000 ONEIDA 01000000000000000000000000000000 Announcement 00100000000111111011110001100111 electrician 00000000000000000000000000000000 inhuman 00000000000000000000000000000000 symptom-free 00000000000000000000000000000000 compile 00000000000000000000000000000000 syrup 00000000000001011111110100100001 Pizzo 00100000000000000000000000000000 IQ 01000000000000000000000000000000 Kushnick 00100000000000000000000000000000 Pediatric 00100000000000000000000000000000 foot-dragging 00000000000000000000000000000000 DDI 01000000000000000000000000000000 twitch 00000000000111100100101100100001 88.32 00000000000000000000000000000000 puzzles 00000000000000000000000000000000 AVON 01000000000110111011010100101000 RENT-A-CAR 01000000000000000000000000000000 TRUCK 01000000000000011000001000100001 243,677 00000000000000000000000000000000 Issuance 00100000000111111101101001001111 BIG 01000000000000000000101000010000 BOARD 01000000000011000001000101010101 PLANS 01000000000111111110101000110010 77.6 00000000000000000000000000000000 1199.32 00000000000000000000000000000000 216.49 00000000000000000000000000000000 3427.39 00000000000000000000000000000000 129.48 00000000000000000000000000000000 130.73 00000000000000000000000000000000 0.0002 00000000000000000000000000000000 SAID 01000000000111111111110011000010 FAILED 01000000000011001111101000110010 activate 00000000000000000000000000000000 electromagnets 00000000000000000000000000000000 militia 00000000000111001000101100100101 16-nation 00000000000000000000000000000000 whirlwinds 00000000000000000000000000000000 hillside 00000000000000000000000000000000 excavating 00000000000000000000000000000000 Ladislav 00100000000000000000000000000000 Adamec 00100000000000000000000000000000 ex-chief 00000000000000000000000000000000 Ceramics 00100000000010001011111010110000 harmless 00000000000111000110011010010000 11,586 00000000000000000000000000000000 14,099 00000000000000000000000000000000 37,820 00000000000000000000000000000000 44,796 00000000000000000000000000000000 painless 00000000000000000000000000000000 Failures 00100000000011011110000010100111 5,791 00000000000000000000000000000000 5,502 00000000000000000000000000000000 2,046 00000000000000000000000000000000 1,892 00000000000000000000000000000000 4,300 00000000000000000000000000000000 109.25 00000000000000000000000000000000 NICHOLS 01001111111101100110100010001000 INSTITUTE 01000000000010001001010001010101 Capistrano 00100000000000000000000000000000 ill-defined 00000000000000000000000000000000 purports 00000000000000000000000000000000 repond 00000000000000000000000000000000 Stateswest 00100000000000000000000000000000 372.1 00000000000000000000000000000000 336.4 00000000000000000000000000000000 swollen 00000000010000100101101001000000 crimped 00000000000000000000000000000000 catalog-clothing-merchandiser 00000000000000000000000000000000 84%-controlled 00000000000000000000000000000000 20.375 00000000000000000000000000000000 841.5 00000000000000000000000000000000 609 00000000000000000000000000000000 executive-office 00000000000000000000000000000000 Pollo 00100000000000000000000000000000 Loco 00100000000000000000000000000000 char-broiled 00000000000000000000000000000000 brain-wave 00000000000000000000000000000000 buy-now 00000000000000000000000000000000 pray-for-growth-later 00000000000000000000000000000000 Utter 00100000000010100101110110110010 less-junky 00000000000000000000000000000000 reborn 00000000000000000000000000000000 noncash 00000000000000000000000000000000 french 00000000000000001010100100110000 friers 00000000000000000000000000000000 envisions 00000101110010000011000000010010 cash-deferred 00000000000000000000000000000000 66.9 00000000000000000000000000000000 40.21 00000000000000000000000000000000 179,032 00000000000000000000000000000000 Maggie 00100000000000000000000000000000 read-my-lips 00000000000000000000000000000000 refashioning 00000000000000000000000000000000 excoriated 00000000000000000000000000000000 obstructionist 00000000000000000000000000000000 49-member 00000000000000000000000000000000 discomfit 00000000000000000000000000000000 Consensus 00100000000111100011111101100111 civilised 00000000000000000000000000000000 unflaky 00000000000000000000000000000000 Egad 00100000000000000000000000000000 contravened 00000000000000000000000000000000 Mahathir 00100000000100111011000001001000 Mohamad 00100000000000000000000000000000 offputting 00000000000000000000000000000000 Wain 00100000000000000000000000000000 sanctioning 00000000000000000000000000000000 Follow 00100000000001111110101110110010 Association-College 01000000000000000000000000000000 Double 00100000000111111110011011000000 dusted 00000000000000000000000000000000 462.89 00000000000000000000000000000000 132.1 00000000000000000000000000000000 4,348 00000000000000000000000000000000 1,074 00000000000000000000000000000000 454.86 00000000000000000000000000000000 452.23 00000000000000000000000000000000 guardedly 00000000000000000000000000000000 Annuity 00100000000001000100010010110000 one-house 00000000000000000000000000000000 large-business 00000000000000000000000000000000 seatbelt 00000000000000000000000000000000 Biogen 00100000000110100100111100101000 495,000 00000000000000000000000000000000 395,700 00000000000000000000000000000000 Informix 00100000000000000000000000000000 810,700 00000000000000000000000000000000 Cimflex 00100000000000000000000000000000 Teknowledge 00100000000000000000000000000000 494,100 00000000000000000000000000000000 207,000 00000000000000000000000000000000 Collagen 00100000000000000000000000000000 428,000 00000000000000000000000000000000 biomedical-products 00000000000000000000000000000000 Occupational-Urgent 01000000000000000000000000000000 354,000 00000000000000000000000000000000 superagent 00000000000000000000000000000000 Lotos 00100000000000000000000000000000 Teachers 00100000000011101100111000110011 dea 00000000000000000000000000000000 lastest 00000000000000000000000000000000 grimaced 00000000000000000000000000000000 outbidding 00000000000000000000000000000000 cellar 00000000000000000000000000000000 crows 00000000000000000000000000000000 Neinas 00100000000000000000000000000000 adman 00000000000000000000000000000000 Isacsson 00100000000000000000000000000000 Soaring 00100000000000100010010001000000 contented 00000000000000000000000000000000 Norodom 00100000000000000000000000000000 Wyman 00101111111010110101000100001000 nearly-30 00000000000000000000000000000000 16.09 00000000000000000000000000000000 athlete-s 00000000000000000000000000000000 aggressiveness 00000000000010110111111010100111 Lund 00100000000000000000000000000000 Multimedia 00100000000000000000000000000000 Grimes 00100000000000000000000000000000 hard-drinking 00000000000000000000000000000000 sniped 00000000000000000000000000000000 loudly 00000000101000000000010001110010 Rivals 00100000000111100001110000110011 expounding 00000000000000000000000000000000 bicameral 00000000000000000000000000000000 90-minute 00000000000000000000000000000000 scribbled 00000000000000000000000000000000 frighteningly 00000000000000000000000000000000 243 00000000000000000000000000000000 Albertville 00100000000000000000000000000000 still-raging 00000000000000000000000000000000 VCRs 01000000000000000000000000000000 much-watched 00000000000000000000000000000000 WBBM-TV 01000000000000000000000000000000 CBS-owned 01000000000000000000000000000000 triggers 00000001010110000011000000010010 Regular 00100000000000001010010000010000 pizazz 00000000001010011110011010100111 once-grumpy 00000000000000000000000000000000 gleefully 00000000000000000000000000000000 Tattingers 00100000000000000000000000000000 belly-flopped 00000000000000000000000000000000 amenable 00000000000101011100011000110010 Klinsky 00100000000000000000000000000000 WHEC-TV 01000000000000000000000000000000 deems 00000000000000000000000000000000 auto-maker 00000000000000000000000000000000 28.36 00000000000000000000000000000000 GM-Toyota 01000000000000000000000000000000 nutty 00000000000000000000000000000000 admen 00000000000000000000000000000000 94.5 00000000000000000000000000000000 tape-delay 00000000000000000000000000000000 o'clock 00000000000000000000011001011011 ratings-getter 00000000000000000000000000000000 outlandish 00000000000000000000000000000000 NBA 01000000000000000000000000000000 Variety 00100000000111111111111101111111 13.90 00000000000000000000000000000000 media-stock 00000000000000000000000000000000 Grippo 00100000000000000000000000000000 Riely 00100000000000000000000000000000 Bosses 00100000000111000101110000110011 sneaky 00000000000000000000000000000000 qualms 00000000000000000000000000000000 right-to-privacy 00000000000000000000000000000000 Janlori 00100000000000000000000000000000 unfathomable 00000000000000000000000000000000 recordkeeping 00000000000000000000000000000000 handheld 00000000000000000000000000000000 Hiltunen 00100000000000000000000000000000 INS 01000000000111111011110000100101 Connection 00100000000111111101100000110010 attache 00000000000000000000000000000000 gizmos 00000000000000000000000000000000 we-Japanese 01000000000000000000000000000000 spying 00000000000111100111110010100111 'Big 01000000000000000000000000000000 admissible 00000000000000000000000000000000 tapings 00000000000000000000000000000000 beep 00000000000000000000000000000000 Barton 00101111111010101000000100001000 derailing 00000000000000000000000000000000 Bonomo 00100000000000000000000000000000 Englishman 00100000000000000000000000000000 Chadha 00100000000000000000000000000000 squatted 00000000000000000000000000000000 Intercepting 00100000000000000000000000000000 Ear 00100000000101101111111001100111 rustlings 00000000000000000000000000000000 eavesdrop 00000000000000000000000000000000 sampling 00000000000110011001100101100111 print-out 00000000000000000000000000000000 capabilities. 00000000000000000000000000000000 descramblers. 00000000000000000000000000000000 radius 00000000000000000000000000000000 handset 00000000000000000000000000000000 up. 00000000000000000000000000000000 recorders. 00000000000000000000000000000000 stores. 00000000000000000000000000000000 manhood 00000000000000000000000000000000 long-dominant 00000000000000000000000000000000 Intervention 00100000000111100000110001100111 McGuire 01000000000000000000000000000000 Batch 00100000000111111110011000111111 single-job 00000000000000000000000000000000 chug 00000000000000000000000000000000 JH 01000000000000000000000000000000 Upgrades 00100000001010100010001000100011 costlier 00000000000000000000000000000000 serials 00000000000000000000000000000000 89.875 00000000000000000000000000000000 Considered 00100000000101111100010000110010 displace 00000000000000010111111110110010 lorded 00000000000000000000000000000000 supercharger 00000000000000000000000000000000 11.72 00000000000000000000000000000000 staked 00000000011111010001001000110010 Grabe 00100000000000000000000000000000 passionately 00000000000000000000000000000000 magnetic-tape 00000000000000000000000000000000 occupies 00001101010110000011000000010010 1.916 00000000000000000000000000000000 Bauser 00100000000000000000000000000000 cruiser 00000000000000000000000000000000 Archer 00101111111001101100000100001000 noncommittal 00000000000000000000000000000000 aegis 00000000000111100111111000010000 mixed-up 00000000000000000000000000000000 mazes 00000000000000000000000000000000 interconnect 00000000000000000000000000000000 multiplexer 00000000000000000000000000000000 compatability 00000000000000000000000000000000 synchronous 00000000000000000000000000000000 transmission-product 00000000000000000000000000000000 Alcatel 00100000000111000110111100101000 Sonet-based 00100000000000000000000000000000 feasted 00000000000000000000000000000000 reverberated 00000000000000000000000000000000 rip-roaring 00000000000000000000000000000000 Cromwell 00101111111111011111110001001000 dawns 00000000000000000000000000000000 1.637 00000000000000000000000000000000 seven-yen 00000000000000000000000000000000 desultory 00000000000000000000000000000000 Nusbaum 00100000000000000000000000000000 Gotshal 00100000000000000000000000000000 Manges 00101111111111011101110001001000 clusters 00000000000000000000000000000000 telltale 00000000000000000000000000000000 U.S.-Philippine 01000000000000000000000000000000 Polk 00101111111110110100111000001000 Wardwell 00100000000000000000000000000000 MURDER 01000000000101111111011010100111 THREAT 01000000000111111010111100100111 Harpo 00100000000000000000000000000000 Groucho 00100000000000000000000000000000 Spillane 00100000000000000000000000000000 implicate 00000000000000000000000000000000 obstructing 00000000000000000000000000000000 lackeys 00000000000000000000000000000000 conspirator 00000000000000000000000000000000 Griesa 00100000000000000000000000000000 TRUSTEE 01000000000111011111101010110101 tackling 00000000000110000111111101000000 MONITORED 01000000011010010001110000110010 conforming 00000000001010101010111000110010 intrauterine 00000000000010010010001011100001 timorous 00000000000000000000000000000000 then-Speaker 01000000000000000000000000000000 SALT 01000000001111110101100110101000 bankruptcy-reorganization 00000000000000000000000000000000 strident 00000000000000000000000000000000 Coffield 00100000000000000000000000000000 Ungaretti 00100000000000000000000000000000 Slavin 00100000000000000000000000000000 Macari 00100000000000000000000000000000 PHILADELPHIA 01000000000111101111111001101000 Ake 00100000000000000000000000000000 vice-president 00000000000000000000000000000000 corporate-securities 00000000000000000000000000000000 Mesirov 00100000000000000000000000000000 Cramer 00100000000000000000000000000000 Jamieson 00100000000000000000000000000000 Gerd 00100000000000000000000000000000 Krick 00100000000000000000000000000000 Lipps 00100000000000000000000000000000 unfunded 00000000000111110000010000110000 carbide-products 00000000000000000000000000000000 cutting-tools 00000000000000000000000000000000 distributer 00000000000000000000000000000000 venturing 00000000000111001101100001000000 43.6 00000000000000000000000000000000 29.1 00000000000000000000000000000000 Canberra 00100000000000000000000000000000 245.3 00000000000000000000000000000000 for... 00000000000000000000000000000000 ministerial 00000000000000000000000111000001 cardiac-drug 00000000000000000000000000000000 CANCER 01000000000000000110110010100111 SOCIETY'S 01000000000000000000000000000000 72.4 00000000000000000000000000000000 NonProfit 01000000000000101100010000110000 truck-rental 00000000000000000000000000000000 55.3 00000000000000000000000000000000 ASEAN 01000000000000000000000000000000 149.3 00000000000000000000000000000000 intravenous 00000000000000101010101000110000 bankrupty-law 00000000000000000000000000000000 health-maintenance 00000000000000000000000000000000 Steelmaking 00100000000000100000011010110000 introverted 00000000000000000000000000000000 8.328 00000000000000000000000000000000 8.347 00000000000000000000000000000000 blinkers 00000000000000000000000000000000 Intelsat 00100000000111000000110100101000 VI 01000000000000000000000000000000 three-ton 00000000000000000000000000000000 whistle 00000000000111111110101000100001 Winnetka 00100000000000000000000000000000 58.75 00000000000000000000000000000000 McGregor 01000000000000000000000000000000 Congolese 00100000000000000000000000000000 Salty 00100000000000000000000000000000 microcomputer-systems 00000000000000000000000000000000 Kildare 00100000000000000000000000000000 150,000-square-foot 00000000000000000000000000000000 55-acre 00000000000000000000000000000000 Phenix-Transmission 01000000000000000000000000000000 intrastate 00000000000000000000000000000000 correspond 00000000000000000000000000000000 178.8 00000000000000000000000000000000 McKee 01001111111101110100001000001000 Excision 00100000000000000000000000000000 Mantua 00100000000000000000000000000000 slurry 00000000000000000000000000000000 memory-chip 00000000000000000000000000000000 finalists 00000000000000000010000110110011 Conspicuous 00100000000000101001000010010000 mid-1991 00000000000000000000000000000000 395,000 00000000000000000000000000000000 Mangino 00100000000000000000000000000000 EniChem 01000000000000000000000000000000 Clyde 00101111111000000110010110011000 Sparc 00100000000110101010101000100001 879 00000000000000000000000000000000 creak 00000000000000000000000000000000 invalid 00000000000010110110110110010000 censor 00000000000000000000000000000000 Herbig 00100000000000000000000000000000 Kotobuki 00100000000000000000000000000000 Lawton 00101111111000110011100010011000 Langford 00100000000000000000000000000000 Tallahassee 00100000000000000000000000000000 industrialize 00000000000000000000000000000000 permeated 00000000000000000000000000000000 constructively 00000000000000000000000000000000 passively 00000000000000000000000000000000 neglecting 00000000000000000000000000000000 synthesize 00000000000000000000000000000000 Haruki 00100000000000000000000000000000 Owens 00101111111010111100111000001000 119.2 00000000000000000000000000000000 45.4 00000000000000000000000000000000 forthrightly 00000000000000000000000000000000 obeisance 00000000000000000000000000000000 Rebuilding 00100000000100000010110001000000 anti-abortionist 00000000000000000000000000000000 vacillation 00000000000000000000000000000000 sternly 00000000000000000000000000000000 Anti-abortion 00100000000000000000000000000000 rusticated 00000000000000000000000000000000 Hoc 00100000000000011101010000100101 abortion-funding 00000000000000000000000000000000 striven 00000000000000000000000000000000 Ziyang 00100000000000000000000000000000 agonize 00000000000000000000000000000000 agonizing 00000000000000000000000000000000 vacillate 00000000000000000000000000000000 hewed 00000000000000000000000000000000 sensitivities 00000000000000000000000000000000 loquacious 00000000000000000000000000000000 close-mouthed 00000000000000000000000000000000 curtness 00000000000000000000000000000000 amplify 00000000000000000000000000000000 headlong 00000000000000000000000000000000 affirming 00000000000000000000000000000000 inauguration 00000000000000000000000000000000 arsonist 00000000000000000000000000000000 anti-flag-burning 00000000000000000000000000000000 oblique 00000000000000000000000000000000 toughen 00000000001101100110111110110010 Ruberg 00100000000000000000000000000000 cul 00000000000000000000000000000000 sac 00000000000000000000000000000000 Crippling 00100000000001010100011000010000 African-Americans 01000000000000000000000000000000 immersed 00000000000000000000000000000000 plethora 00000000000000000000000000000000 paralyzing 00000000000000000000000000000000 Easter 00100000000000101010000000100001 Seal 00100000000100100000100110110111 Melbourne 00100000000100111011101001101000 63.5 00000000000000000000000000000000 DeScenza 01000000000000000000000000000000 196.2 00000000000000000000000000000000 150.2 00000000000000000000000000000000 192.1 00000000000000000000000000000000 293.7 00000000000000000000000000000000 5.13 00000000000000000000000000000000 Excerpts 00100000000100010011110110110010 baddebt 00000000000000000000000000000000 presides 00000000001001001011000000010010 baptism 00000000000000000000000000000000 parry 00001111100001011100000010001000 dismember 00000000000000000000000000000000 dodged 00000000000000000000000000000000 interloper 00000000000000000000000000000000 Links 00100000000100111110110000100111 Fairlawn 00100000000000000000000000000000 boned 00000000000000000000000000000000 detente 00000000000111100010110010100111 pushover 00000000000111111111111110011111 Skipping 00100000000000000000000000000000 sober-faced 00000000000000000000000000000000 wood-paneled 00000000000000000000000000000000 middle-management 00000000000000000000000000000000 sushi 00000000000000000000000000000000 aspired 00000000000110100001101000110010 dabbled 00000000000000000000000000000000 zoology 00000000000000000000000000000000 frogs 00000000000000000000000000000000 unassuming 00000000000000000000000000000000 62nd 00000000000000000000000000000000 16.88 00000000000000000000000000000000 33.625 00000000000000000000000000000000 capital-draining 00000000000000000000000000000000 reared 00000000000000000000000000000000 Porkapolis 00100000000000000000000000000000 chops 00000000000000000000000000000000 nonfat 00000000000000000000000000000000 two-product 00000000000000000000000000000000 pallor 00000000000000000000000000000000 carryforwards 00000000000000000000000000000000 Grigsby 00100000000000000000000000000000 don't-con-me 00000000000000000000000000000000 vest 00000000000111110110111000000001 unbiased 00000000000000000000000000000000 proxy-solicitation 00000000000000000000000000000000 O'Boyle 01000000000000000000000000000000 Muskegon 00100000000000000000000000000000 20-page 00000000000000000000000000000000 precondition 00000000000000000000000000000000 Yigal 00100000000000000000000000000000 Arens 00100000000000000000000000000000 Deciding 00100000000011111010111000110010 premediated 00000000000000000000000000000000 perpetrated 00000000000000000000000000000000 noncombatant 00000000000000000000000000000000 subnational 00000000000000000000000000000000 clandestine 00000000000000110100010000110000 Molotov 00100000000000000000000000000000 cocktails 00000000000110101011110101100011 offshoots 00000000000000000000000000000000 intifadah 00000000000000000000000000000000 classify 00000000000000000000000000000000 Gaza 00100000000011000010001000110000 Eagles 00100000000000110111110101100011 rollercoaster 00000000000000000000000000000000 languish 00000000000000000000000000000000 uneasiness 00000000000101001110111010100111 141.57 00000000000000000000000000000000 Kuan 00100000000000000000000000000000 mark-yen 00000000000000000000000000000000 204.8 00000000000000000000000000000000 370.20 00000000000000000000000000000000 368.25 00000000000000000000000000000000 upper-crust 00000000000000000000000000000000 Chisholm 00100000000000000000000000000000 unfavorably 00000000000000000000000000000000 asset-liability 00000000000000000000000000000000 performance-related 00000000000000000000000000000000 judgmental 00000000000000000000000000000000 1,296,800 00000000000000000000000000000000 15.31 00000000000000000000000000000000 4.82 00000000000000000000000000000000 262.4 00000000000000000000000000000000 applicability 00000000000110010111011000001111 257.5 00000000000000000000000000000000 formats 00000000000000000000000000000000 seven-month-old 00000000000000000000000000000000 highlighting 00000000000000000000000000000000 blanketed 00000000000000000000000000000000 Rosenbaum 00100000000000000000000000000000 13.18 00000000000000000000000000000000 12.57 00000000000000000000000000000000 Financials 00100000000000000000000000000000 Discover 00100000000110001011110110110010 40.50 00000000000000000000000000000000 late-summer 00000000000000000000000000000000 PERIOD 01000000000111101111101001000111 Mess 00100000000111110101101101100111 op-ed 00000000000000000000000000000000 Unused 00100000101001010000001000110000 Foreclosed 00100000000100001000101001000000 Encourage 00100000000101010011111110110010 pro-rata 00000000000000000000000000000000 Develop 00100000001111111111101110110010 renter 00000000000000000000000000000000 Padget 00100000000000000000000000000000 seekers 00000000000000010000110100100011 2,888,000 00000000000000000000000000000000 2,822,000 00000000000000000000000000000000 2,853,000 00000000000000000000000000000000 Mezzogiorno 00100000000000000000000000000000 369,000 00000000000000000000000000000000 stimulative 00000000000101010101000000010000 business-machines 00000000000000000000000000000000 4.45 00000000000000000000000000000000 62.75 00000000000000000000000000000000 Operating-profit 00100000000000000000000000000000 Dies 00100000000111011111000000010010 silenced 00000000000000000000000000000000 Kearns 00100000000000000000000000000000 sledding 00000000000000000000000000000000 372.9 00000000000000000000000000000000 12.05 00000000000000000000000000000000 126.68 00000000000000000000000000000000 scrambles 00000000000000000000000000000000 gauges 00000000000000000000000000000000 Unfilled 00100000000111111000000110110000 476.14 00000000000000000000000000000000 transportation-where 00000000000000000000000000000000 figures-order 00000000000000000000000000000000 half-year 00000000000000000000000000000000 37.875 00000000000000000000000000000000 Gettysburg 00100000000000000000000000000000 Reins 00100000000111100011000011000111 Lock 00100000000100110110010110110010 Owens-Illinois 01000000000000000000000000000000 Reding 00100000000000000000000000000000 Wrighting 00100000000000000000000000000000 Erithmatic 00100000000000000000000000000000 Rost 00100000000000000000000000000000 undisciplined 00000000000000000000000000000000 Peterborough 00100000000000000000000000000000 BELL 01000000000001001011001010110000 Parrott 00100000000000000000000000000000 ashes 00000000000000000000000000000000 railways 00000000000110100110000001111001 rationalization 00000000000000000000000000000000 purhasing 00000000000000000000000000000000 Fishery 00100000000000000000000000000000 hugs 00000000000000000000000000000000 misunderstandings 00000000000000000000000000000000 Mosher 00100000000000000000000000000000 Amen 00100000000000000000000000000000 cashier 00000000000000000000000000000000 Pockets 00100000000111100011111101100011 jingling 00000000000000000000000000000000 1,214 00000000000000000000000000000000 Sosuke 00100000000000000000000000000000 Uno 00100000000111101000110100101000 Tokuo 00100000000000000000000000000000 Yamashita 00100000000000000000000000000000 doctrines 00000000000000000000000000000000 vanguard 00000000000000100011010100101000 globalism 00000000000000000000000000000000 Ohmae 00100000000000000000000000000000 magnificent 00000000000000110101000010010000 Malibu 00100000000010011011101001101000 glint 00000000000000000000000000000000 goverment 00000000000000000000000000000000 934,242 00000000000000000000000000000000 carat 00000000000000000000000000000000 Martex 00100000000000000000000000000000 pounding 00000000011101101110100001000000 inhospitable 00000000000000000000000000000000 1738.1 00000000000000000000000000000000 Fabric 00100000000101011011111010110000 surf 00000000000010000100101100100001 coarse 00000000000000000000000000000000 treasure 00000000000111000100101100100001 Zacharias 00100000000000000000000000000000 Lewala 00100000000000000000000000000000 colonialists 00000000000000000000000000000000 swath 00000000000000000000000000000000 inland 00000000000111000010111000101000 Ghost 00100000000111010110110000000001 Jackals 00100000000000000000000000000000 roam 00000000000000000000000000000000 gemsbok 00000000000000000000000000000000 sprinklers 00000000000000000000000000000000 cricket 00000000000000000000000000000000 18-hole 00000000000000000000000000000000 quisling 00000000000000000000000000000000 Agencies 00100000000100000000100100100011 desert-battle 00000000000000000000000000000000 Mechanized 00100000000000000000000000000000 anteaters 00000000000000000000000000000000 whirring 00000000000000000000000000000000 ferris 00001111111110110000100010001000 wheellike 00000000000000000000000000000000 excavator 00000000000000000000000000000000 chews 00000000000000000000000000000000 conveyor 00000000000000000000000000000000 shuttling 00000000000000000000000000000000 criss-cross 00000000000000000000000000000000 artifical 00000000000000000000000000000000 jutting 00000000000000000000000000000000 around-the-clock 00000000000000000000000000000000 maintainence 00000000000000000000000000000000 battering 00000000000000000000000000000000 northward 00000000000000000000000000000000 jetty 00000000000000000000000000000000 rusting 00000000000000000000000000000000 junkyard 00000000000000000000000000000000 driftwood 00000000000000000000000000000000 broken-down 00000000000000000000000000000000 advert 00000000000000000000000000000000 then-president 00000000000000000000000000000000 ignominiously 00000000000000000000000000000000 Bewkes 00100000000000000000000000000000 excavators 00000000000000000000000000000000 Laboring 00100000000000000000000000000000 crevices 00000000000000000000000000000000 smuggle 00000000000111101100001110110010 poked 00000000000000000000000000000000 heel 00000000000000000000000000000000 Elianti 00100000000000000000000000000000 caterer 00000000000000000000000000000000 stashed 00000000000000000000000000000000 DISASTER 01000000000111100001101101100111 STATES 01000000000000000000000101110011 mentioning 00000000000111010011001101000000 Property-tax 00100000000000000000000000000000 P-5-39 00100000000000000000000000000000 overdraft 00000000000000000000000000000000 impetuous 00000000000000000000000000000000 Reimbursement 00100000000000000001011000111001 accrues 00000000000000000000000000000000 vortex 00000000000000000000000000000000 JUST 01000000000000001100001001110010 ACRES 01000000000000000000011100001011 redefined 00000000000000000000000000000000 Sidak 00100000000000000000000000000000 15-acre 00000000000000000000000000000000 adjoining 00000000000000000000000000000000 qualifies 00000000011001000010110000110010 home-mortgage 00000000000000000000000000000000 8940061 00000000000000000000000000000000 home-acquisition 00000000000000000000000000000000 VICTIMS 01000000000111101000001010110011 indemnification 00000000000000000000000000000000 89108 00000000000000000000000000000000 89-107 00000000000000000000000000000000 hurricane-hit 00000000000000000000000000000000 benefit-plan 00000000000000000000000000000000 REPORTS 01000000000100101011010000100011 PAYMENTS 01000000000111101111101100000011 UH 01000000000000000000000000000000 HUH 01000000000000000000000000000000 unconvincing 00000000000000000000000000000000 BE 01000000000100101111100010110010 MIDDLEMAN 01000000000111101100101010110101 8934014 00000000000000000000000000000000 chipping 00000000000000000000000000000000 Gephardt 00101111111100111000011010001000 Cardin 00100000000000000000000000000000 peep 00000000000000000000000000000000 coin-operated 00000000000000000000000000000000 amusements 00000000000110101011100000110000 ninth-circuit 00000000000000000000000000000000 Acorn 00100000000000001010010100101000 convinces 00000000000000000000000000000000 lambasted 00000000000000000000000000000000 niche-itis,`` 00000000000000000000000000000000 paring 00000000000101110101011101000000 unswaggering 00000000000000000000000000000000 heart-pounding 00000000000000000000000000000000 59.6 00000000000000000000000000000000 delver 00000000000000000000000000000000 Brendel 00100000000000000000000000000000 Germont 00100000000000000000000000000000 236.79 00000000000000000000000000000000 Italianate 00100000000000000000000000000000 lilt 00000000000000000000000000000000 teutonic 00000000000000000000000000000000 baritone 00000000000000000000000000000000 Provenza 00100000000000000000000000000000 Kindertotenlieder 00100000000000000000000000000000 next-door 00000000000000000000000000000000 Lyric 00100000000000000000000000000000 unswagged 00000000000000000000000000000000 bodes 00000000000000000000000000000000 Sills 00100000000000000000000000000000 belated 00000000000000000000000000000000 limpid 00000000000000000000000000000000 Helmuth 00100000000000000000000000000000 Messa 00100000000000000000000000000000 delves 00000000000000000000000000000000 unperformed 00000000000000000000000000000000 archive 00000000000000000000000000000000 operatic 00000000000000000000000000000000 Libera 00100000000000000000000000000000 reworked 00000000000000000000000000000000 Manzoni 00100000000000000000000000000000 Requiem 00100000000000000000000000000000 now-obscure 00000000000000000000000000000000 Raimondo 00100000000000000000000000000000 Boucheron 00100000000000000000000000000000 melodious 00000000000000000000000000000000 Confutatis 00100000000000000000000000000000 Teodulo 00100000000000000000000000000000 Mabellini 00100000000000000000000000000000 Lux 00100000000000000000000000000000 aeterna 00000000000000000000000000000000 intriguingly 00000000000000000000000000000000 Gaechinger 00100000000000000000000000000000 Kantorei 00100000000000000000000000000000 Gabriela 00100000000000000000000000000000 Benackova 00100000000000000000000000000000 radiant 00000000000000000000000000000000 expressive 00000000000000000000000000000000 plaza 00000000000000000101010100000001 compatriot 00000000000000000000000000000000 Dabney 00100000000000000000000000000000 fireplaces 00000000000000010111110001100011 Idrissa 00100000000000000000000000000000 Ouedraogo 00100000000000000000000000000000 Burkina 00100000000000000000000000000000 Faso 00100000000000000000000000000000 Sakura 00100000000000000000000000000000 143,000 00000000000000000000000000000000 Yaaba 00100000000000000000000000000000 Tolentino 00100000000000000000000000000000 Telerama 00100000000000000000000000000000 deals... 00000000000000000000000000000000 festivals 00000000000101111011110101100011 redound 00000000000000000000000000000000 Valladolid 00100000000000000000000000000000 cancels 00000000000000000000000000000000 heavy-machine 00000000000000000000000000000000 Tehran 00100000000111101110101101101000 pampers 00000000000000000000000000000000 Khomeini 00100000000001000000000001000111 non-clients 00000000000000000000000000000000 urine 00000000000010001110110000100001 Tateisi 00100000000000000000000000000000 Hector 00100000000000000000000000000000 Jimenez 00100000000000000000000000000000 376.8 00000000000000000000000000000000 Excelsior 00100000000000000000000000000000 mortgaged 00000000000101110101101001000000 rethinking 00000000000101011111010001000000 preparations 00000000000011000001110100011001 maestro 00000000000000000000000000000000 Benazir 00100000000000000000000000000000 bad-news 00000000000000000000000000000000 210.2 00000000000000000000000000000000 145.2 00000000000000000000000000000000 454.6 00000000000000000000000000000000 425.4 00000000000000000000000000000000 34.25 00000000000000000000000000000000 315 00000000000000000000000000000000 Marcello 00100000000000000000000000000000 88.5 00000000000000000000000000000000 156.6 00000000000000000000000000000000 4.99 00000000000000000000000000000000 756.3 00000000000000000000000000000000 Cattrall 00100000000000000000000000000000 236.74 00000000000000000000000000000000 increase-results 00000000000000000000000000000000 price-support 00000000000000000000000000000000 54.625 00000000000000000000000000000000 Acuvue 00100000000000000000000000000000 Hismanal 00100000000000000000000000000000 once-a-day 00000000000000000000000000000000 antihistamine 00000000000000000000000000000000 Eprex 00100000000000000000000000000000 Prepulsid 00100000000000000000000000000000 gastro-intestinal 00000000000000000000000000000000 sutures 00000000000000000000000000000000 big-souled 00000000000000000000000000000000 BBC 01000000000000000000000000000000 CG 01000000000000000000000000000000 TELV 01000000000000000000000000000000 WGP 01000000000000000000000000000000 Brunswig 00100000000000000000000000000000 Laserscope 00100000000000000000000000000000 1,656,870 00000000000000000000000000000000 1,455,000 00000000000000000000000000000000 201,870 00000000000000000000000000000000 Volpe 00100000000000000000000000000000 Welty 00100000000000000000000000000000 TeleVideo 01000000000000000000000000000000 1,853,735 00000000000000000000000000000000 credit-information 00000000000000000000000000000000 lump 00000000000000000100011110110001 56.13 00000000000000000000000000000000 mellowed 00000001111010010010110000110010 credit-ratings 00000000000000000000000000000000 television-viewing 00000000000000000000000000000000 Yellow-pages 00100000000000000000000000000000 credit-data 00000000000000000000000000000000 idosyncratic 00000000000000000000000000000000 Raikes 00100000000000000000000000000000 12,281 00000000000000000000000000000000 724,579 00000000000000000000000000000000 588,800 00000000000000000000000000000000 9,232 00000000000000000000000000000000 Buchanan 00101111111000001111100010001000 406,000 00000000000000000000000000000000 2,520 00000000000000000000000000000000 6,881 00000000000000000000000000000000 longterm 00000000000110011010000000110000 excorciate 00000000000000000000000000000000 option-related 00000000000000000000000000000000 TASTY 01000000000000000000000000000000 PROFITS 01000000000111101111110000000011 942,000 00000000000000000000000000000000 74,000 00000000000000000000000000000000 four-for-one 00000000000000000000000000000000 1,068,000 00000000000000000000000000000000 44.50 00000000000000000000000000000000 SHEDDING 01000000000111011001110001000000 GLITTER 01000000000000000000000000000000 Crabb 00100000000000000000000000000000 reclaimed 00000011101011010100010000110010 11.13 00000000000000000000000000000000 50,085 00000000000000000000000000000000 Kutney 00100000000000000000000000000000 56,900 00000000000000000000000000000000 Straub 00100000000000000000000000000000 Roling 00100000000000000000000000000000 McNeill 01000000000000000000000000000000 10.125 00000000000000000000000000000000 Medieval 00100000000011000000001000110000 eons 00000000000000000000000000000000 self-awareness 00000000000000000000000000000000 shimmered 00000000000000000000000000000000 flattering 00000000001011010101010010010000 creationist 00000000000000000000000000000000 eminent 00000000000000001101101000110000 dissolving 00000000000111110111111101000000 featherless 00000000000000000000000000000000 biped 00000000000000000000000000000000 one-in-a-million 00000000000000000000000000000000 Wonderful 00100000000010001100011010010000 improbability 00000000000000000000000000000000 1909 00000000000000000000000000000000 Rockies 00100000000111101100011001000101 240-page 00000000000000000000000000000000 frolicked 00000000000000000000000000000000 Doolittle 00100000000000000000000000000000 Walcott 00100000000000000000000000000000 ancestral 00000000000000000000000000000000 traditionalist 00000000000000000000000000000000 hardest-hit 00000000000000000000000000000000 fossils 00000000000000000000000000000000 shoehorned 00000000000000000000000000000000 Dakotas 00100000000000000000000000000000 reinterpretation 00000000000000000000000000000000 squashed 00000000000000000000000000000000 corresponded 00000000000000000000000000000000 trio 00000000000111011101100101100111 wondrous 00000000000000000000000000000000 beasties 00000000000000000000000000000000 lend-lease 00000000000000000000000000000000 Hallucigenia 00100000000000000000000000000000 descriptions 00000000000110101101100100101111 festooning 00000000000000000000000000000000 chelicerates 00000000000000000000000000000000 uniramous 00000000000000000000000000000000 appendages 00000000000000000000000000000000 prosoma 00000000000000000000000000000000 oddities 00000000000000000000000000000000 evidently 00000001001100000000001001110010 disaster-assistance 00000000000000000000000000000000 winnowing 00000000000000000000000000000000 fittest 00000000000000000000000000000000 mammalian 00000000000000000000000000000000 forerunners 00000000000000000000000000000000 lucked 00000000000000000000000000000000 extraterrestrial 00000000000000000000000000000000 merrily 00000000000000000000000000000000 carnivores 00000000000000000000000000000000 penises 00000000000000000000000000000000 Pikaia 00100000000000000000000000000000 exhilarating 00000000000000000000000000000000 existentialist 00000000000000000000000000000000 curiosity 00000000000100010110111010100111 boorish 00000000000000000000000000000000 Homo 00100000000000000000000000000000 sapiens 00000000000000000000000000000000 earthly 00000000000000000000000000000000 dominion 00000000000000000111000100101000 thematic 00000000000000000000000000000000 Gouldoid 00100000000000000000000000000000 paleontologically 00000000000000000000000000000000 Literary 00100000000001100000000000110000 codification 00000000000000000000000000000000 deliriously 00000000000000000000000000000000 land-idling 00000000000000000000000000000000 .to 00000000000000000000000000000000 clarifies 00000000000000000000000000000000 tax-fraud 00000000000000000000000000000000 Dalldorf 00100000000000000000000000000000 Beermann 00100000000000000000000000000000 bananas 00000000000110110100111001100011 Windy 00100000000001111000011010101000 nine-cent 00000000000000000000000000000000 Quentin 00101111111000001101100010011000 Kopp 00100000000000000000000000000000 earthquake-triggered 00000000000000000000000000000000 viaduct 00000000000000000000000000000000 99.60 00000000000000000000000000000000 99.64 00000000000000000000000000000000 Boatmen 00100000000111000101111110101000 99.821 00000000000000000000000000000000 9.275 00000000000000000000000000000000 99.555 00000000000000000000000000000000 99.661 00000000000000000000000000000000 Harriton 00100000000000000000000000000000 Linsey 00100000000000000000000000000000 Youngberg 00100000000000000000000000000000 back-pay 00000000000000000000000000000000 flashback 00000000000000000000000000000000 15,015,000 00000000000000000000000000000000 24,985,000 00000000000000000000000000000000 Lifland 00100000000000000000000000000000 2003-2008 00000000000000000000000000000000 overturning 00000000000000000000000000000000 86,525,000 00000000000000000000000000000000 7.05 00000000000000000000000000000000 6.85 00000000000000000000000000000000 suject 00000000000000000000000000000000 Hanwa 00100000000000000000000000000000 Two-part 00100000000000000000000000000000 Yamatane 00100000000000000000000000000000 Sanraku 00100000000000000000000000000000 Distribution 00100000000000000001001001100001 Miyoshi 00100000000000000000000000000000 Fokker 00100000000010001111111100101000 Minikes 00100000000000000000000000000000 Kirkendall 00100000000000000000000000000000 bugaboo 00000000000000000000000000000000 results-oriented 00000000000000000000000000000000 19,000 00000000000000000000000000000000 hassles 00000000000000000000000000000000 Paperwork 00100000000000000001111000111001 Gerardo 00100000000000000000000000000000 mounds 00000000000000000000000000000000 bulk-mail 00000000000000000000000000000000 riles 00001110001010000011000000010010 unscientific 00000000000000000000000000000000 12,275 00000000000000000000000000000000 TechDesign 01000000000000000000000000000000 telecommunication 00000000000000000000000000000000 238,000-circulation 00000000000000000000000000000000 pre-1933 00000000000000000000000000000000 30,180 00000000000000000000000000000000 car-leasing 00000000000000000000000000000000 irks 00000000011101110001000000010010 ENVIRONMENTAL 01000000000001000101000000110000 REGULATIONS 01000000000000000011111100100011 Reproduction 00100000000101011110011010100111 WITHHOLDING 01000000000110110000011100010000 pre-1917 00000000000000000000000000000000 one-newspaper 00000000000000000000000000000000 firm. 00000000000000000000000000000000 EMPLOYEE 01000000000000000000000000110101 MANUALS 01000000000111111000110100100011 Revising 00100000000101111011011101000000 Giguiere 00100000000000000000000000000000 Fresno 00100000000101001111101001101000 PENSION 01000000000000000001111110110000 PROFIT-SHARING 01000000000000000000000000000000 Yearly 00100000000001000101000101010000 mare 00000000000000000000000000000000 brood 00000000000000000000000000000000 RECORDS 01000000000010010110001000100011 senses 00000000000101101111000000010010 Jennie 00100000000000000000000000000000 Repertory 00100000000000000000000000000000 Default 00100000000111101111010101010111 Callas 00100000000000000000000000000000 horse-breeding 00000000000000000000000000000000 deconstructed 00000000000000000000000000000000 Galloway 00100000000000000000000000000000 42,455 00000000000000000000000000000000 iconoclastic 00000000000000000000000000000000 prize-winning 00000000000000000000000000000000 off-Broadway 01000000000000000000000000000000 anthology 00000000000000000000000000000000 Bertolt 00100000000000000000000000000000 Poetry 00100000001101100101110010100111 Maxim 00100000000000000000000000000000 bourgeois-bashing 00000000000000000000000000000000 Horses 00100000000010111101110101100011 Hers 00100000000000000000000000000000 Strehler 00100000000000000000000000000000 Ariane 00100000000000000000000000000000 Mnouchkine 00100000000000000000000000000000 Walking 00100000010111110110100001000000 antirealistic 00000000000000000000000000000000 proletarian 00000000000000000000000000000000 Chekhovian 00100000000000000000000000000000 humanism 00000000000000000000000000000000 penned 00000000000000000000000000000000 1904 00000000000000000000000000000000 allrightniks 00000000000000000000000000000000 dalliances 00000000000000000000000000000000 Wisely 00100000111001100001001001110010 samovars 00000000000000000000000000000000 languorous 00000000000000000000000000000000 beige 00000000001011110010001000110000 rumpled 00000000000000000000000000000000 boaters 00000000000000000000000000000000 poles 00000000000110100000111000110011 naturalistic 00000000000000000000000000000000 backfires 00000000000000000000000000000000 mannered 00000000000000000000000000000000 Sellars 00100000000000000000000000000000 manipulates 00000000000000000000000000000000 staircases 00000000000000000000000000000000 Stratas 00100000000000000000000000000000 precipices 00000000000000000000000000000000 gymnastic 00000000000000000000000000000000 owner-bred 00000000000000000000000000000000 spout 00000000000000000000000000000000 bon 00000000000000000000000000000000 mots 00000000000000000000000000000000 rat-a-tat-tat 00000000000000000000000000000000 pacing 00000000000000000000000000000000 Laugh 00100000000100110101010110110010 ideologies 00000000000000000000000000000000 richness 00000000000000000000000000000000 scuffle 00000000000000000000000000000000 ensemble 00000000001111110111111001100111 aural 00000000000000000000000000000000 collage 00000000000000000000000000000000 Debussy 00100000000000000000000000000000 Rachmaninoff 00100000000000000000000000000000 Ezra 00100000000000000000000000000000 ex-accountant 00000000000000000000000000000000 fondest 00000000000000000000000000000000 surmounting 00000000000000000000000000000000 cliche 00000000000000000000000000000000 illuminate 00000000000000000000000000000000 faxed 00000000000000000000000000000000 Classics 00100000000011001101110101100011 Vass 00100000000000000000000000000000 Lvovna 00100000000000000000000000000000 Strickland 00100000000000000000000000000000 long-suffering 00000000000000000000000000000000 Varvara 00100000000000000000000000000000 tiresome 00000000000000000000000000000000 whiner 00000000000000000000000000000000 amuse 00000000000000000000000000000000 Janice 00100000000000000000000000000000 Duclos 00100000000000000000000000000000 Marni 00100000000000000000000000000000 Zamislov 00100000000000000000000000000000 paralegal 00000000000000000000000000000000 hamming 00000000000000000000000000000000 seducing 00000000000000000000000000000000 Becca 00100000000000000000000000000000 Lish 00100000000000000000000000000000 bosom 00000000000000000000000000000000 MORGAN 01001111111111111000100000101000 STANLEY 01001111111000000110001001001000 STODGY 01000000001010011100011010010000 ungentlemanly 00000000000000000000000000000000 Nickle 00100000000000000000000000000000 Ind.-investment 00100000000000000000000000000000 three-hour 00000000000000000000000000000000 1917 00000000000000000000000000000000 F.J. 01000000000000000000000000000000 merger-acquisition 00000000000000000000000000000000 Slote 00100000000000000000000000000000 shrewdly 00000000000000000000000000000000 warmly 00000000011001100001001001110010 ensued 00000000000000000000000000000000 1984-1989 00000000000000000000000000000000 old-name 00000000000000000000000000000000 Kerensky 00100000000000000000000000000000 Revitalized 00100000000000000000000000000000 counteracted 00000000000000000000000000000000 dogging 00000000000000000000000000000000 profit-seeking 00000000000000000000000000000000 Coincident 00100000000000000000000000000000 593 00000000000000000000000000000000 518.7 00000000000000000000000000000000 sideline-business 00000000000000000000000000000000 244.2 00000000000000000000000000000000 repossesed 00000000000000000000000000000000 pre-Communist 01000000000000000000000000000000 shelling 00000000000000000000000000000000 79.1 00000000000000000000000000000000 Changes 00100000000111101111111000100011 HOBBY 01000000000111101110101100100001 HIS 01000000000000000000000000000100 two-hundredths 00000000000000000000000000000000 8.29 00000000000000000000000000000000 intimidated 00000000001100000001110000110010 RODE 01000000001101001011000000010010 oneyear 00000000000000000000000000000000 denomination 00000000000000000000000000000000 6.96 00000000000000000000000000000000 hundredth 00000000000111111111000101111111 HE 01000000000000000000001111110010 170,000 00000000000000000000000000000000 PepsiCola 01000000000000000000000000000000 minincomputer 00000000000000000000000000000000 Niche-itis 00100000000000000000000000000000 hideous 00000000000000000000000000000000 Mfg. 00100000000000000000000000000000 condensers 00000000000000000000000000000000 Plymouth 00100000000010010000001000110000 casualty-loss 00000000000000000000000000000000 divestiture-related 00000000000000000000000000000000 Munching 00100000000000000000000000000000 free-for-all 00000000000000000000000000000000 it'controlled 00000000000000000000000000000000 manned 00000000000001111001101001000000 Nicolas 00100000000000000000000000000000 Cage 00100000000100110100000000001000 carton 00000000000000000000000000000000 8:45 00000000000000000000000000000000 148-a-share 00000000000000000000000000000000 9:15 00000000000000000000000000000000 red-white-and-blue 00000000000000000000000000000000 sneakers 00000000001111001011110101100011 specialist-firm 00000000000000000000000000000000 tugging 00000000000000000000000000000000 crammed 00000001010011110110010000110010 late-day 00000000000000000000000000000000 last-second 00000000000000000000000000000000 Leaving 00100000000111111111101101000000 Domingo 00100000000000000000000000000000 3.21 00000000000000000000000000000000 16-month 00000000000000000000000000000000 Wigglesworth 00100000000000000000000000000000 1,224 00000000000000000000000000000000 Fending 00100000000000000000000000000000 Placido 00100000000000000000000000000000 FELLED 01000000000000000000000000000000 108.2 00000000000000000000000000000000 173.3 00000000000000000000000000000000 HUGO 01000000000011001011111100001000 Howson-Algraphy 01000000000000000000000000000000 241.7 00000000000000000000000000000000 bluebloods 00000000000000000000000000000000 individual-retirement-account 00000000000000000000000000000000 Thoroughbred 00100000000001011000001000110000 Ky.-based 00100000000000000000000000000000 tire-kickers 00000000000000000000000000000000 aghast 00000000000000000000000000000000 BALANCES 01000000000100001010001100000011 romancing 00000000000000000000000000000000 lookee-loos 00000000000000000000000000000000 unaltered 00000000000000000000000000000000 Karnak 00100000000000000000000000000000 Nile 00100000000000000000000000000000 galloping 00000000000000000000000000000000 gloats 00000000000111110100011111000010 45-acre 00000000000000000000000000000000 ungainly 00000000000000000000000000000000 big-risk 00000000000000000000000000000000 Mihalek 00100000000000000000000000000000 newsstand 00000000000000000000000000000000 stallion 00000000000000000000000000000000 taming 00000000000000000000000000000000 yearlings 00000000000000000000000000000000 544,681 00000000000000000000000000000000 395,374 00000000000000000000000000000000 elan 00000000000000000000000000000000 Glossy 00100000011110010000001000110000 racetracks 00000000000000000000000000000000 gush 00000000000000000000000000000000 limelight 00000000000111110110011110110011 high-society 00000000000000000000000000000000 schmoozing 00000000000000000000000000000000 Pedigrees 00100000000000000000000000000000 parimutuels 00000000000000000000000000000000 pageantry 00000000000000000000000000000000 Headley 00100000000000000000000000000000 fifth-generation 00000000000000000000000000000000 nags 00000000000000000000000000000000 MILEAGE 01000000000000001000111000111001 neophytes 00000000000000000000000000000000 filly 00000000000000000000000000000000 splints 00000000000000000000000000000000 racetrack 00000000000000000000000000000000 uncensored 00000000000000000000000000000000 menace 00000000000000000000000000000000 yearling 00000000000000000000000000000000 BUELL 01000000000000000000000000000000 Buell 00100000000000000000000000000000 stampings 00000000000000000000000000000000 Rosenberg 00101111111100101010100010001000 foreign-stock 00000000000000000000000000000000 2.39 00000000000000000000000000000000 884 00000000000000000000000000000000 897.2 00000000000000000000000000000000 profit-margin 00000000000000000000000000000000 10-point 00000000000000000000000000000000 uniformity 00000000000000000000000000000000 28.2 00000000000000000000000000000000 Trailer 00100000000001110100001000100001 attest 00000000000000000000000000000000 dullish 00000000000000000000000000000000 excutives 00000000000000000000000000000000 Cahoon 00100000000000000000000000000000 cocotte 00000000000000000000000000000000 OPPENHEIMER 01001111111110110111111010101000 PARTNERSHIP 01000000000110101111100011110101 36.25 00000000000000000000000000000000 67.7 00000000000000000000000000000000 multistate 00000000000000000000000000000000 725.8 00000000000000000000000000000000 595 00000000000000000000000000000000 389 00000000000000000000000000000000 less-developed-country 00000000000000000000000000000000 balkanized 00000000000000000000000000000000 540.9 00000000000000000000000000000000 503.1 00000000000000000000000000000000 Singleton 00101111111001101010110010001000 472.5 00000000000000000000000000000000 461.9 00000000000000000000000000000000 Ridder 00100000000111110101001111001011 ALBERTA 01000000000111100101101001101000 510.6 00000000000000000000000000000000 briefs 00001111111110011111101110110000 summarizing 00000001110010010000000000001010 tottering 00000000000000000000000000000000 136-page 00000000000000000000000000000000 then-Air 01000000000000000000000000000000 railcar 00000000000000000000000000000000 overcharges 00000000000111110011100010100111 erroneously 00000000000000000000000000000000 familiarize 00000000000000000000000000000000 self-policing 00000000000000000000000000000000 RIGHTS 01000000000100000010000100100111 rabbinical 00000000000000000000000000000000 acquistion 00000000000000000000000000000000 solid-state 00000000000000000000000000000000 Ordnance 00100000001100100000011010110000 TAXPAYERS 01000000000111101100111000110011 51.23 00000000000000000000000000000000 2611.68 00000000000000000000000000000000 CBI 01000000000000000000000000000000 1739.3 00000000000000000000000000000000 1099 00000000000000000000000000000000 recommendatons 00000000000000000000000000000000 payroll-tax 00000000000000000000000000000000 Inexplicably 00100000000000000000000000000000 58.97 00000000000000000000000000000000 35526.55 00000000000000000000000000000000 17.92 00000000000000000000000000000000 35544.47 00000000000000000000000000000000 aria 00000000000000000000000000000000 2681.22 00000000000000000000000000000000 Toshiyuki 00100000000000000000000000000000 Nishimura 00100000000000000000000000000000 midcapitalization 00000000000000000000000000000000 demand-related 00000000000000000000000000000000 highpriced 00000000000000000000000000000000 5,900 00000000000000000000000000000000 8,590 00000000000000000000000000000000 TDK 01000000000000000000000000000000 5,960 00000000000000000000000000000000 7,440 00000000000000000000000000000000 15.85 00000000000000000000000000000000 1507.37 00000000000000000000000000000000 Cutting 00100000000111011001011101000000 346 00000000000000000000000000000000 CDU 01000000000000000000000000000000 37-hour 00000000000000000000000000000000 544 00000000000000000000000000000000 710.5 00000000000000000000000000000000 543.5 00000000000000000000000000000000 Uneasiness 00100000000101001110111010100111 Ne 00100000000000000000000000000000 Creditbank 00100000000000000000000000000000 Extraordinary 00100000000000000000010100010000 2163.2 00000000000000000000000000000000 discimination 00000000000000000000000000000000 LaWare 01001111111110110010100010001000 one-country 00000000000000000000000000000000 3,437 00000000000000000000000000000000 37,000 00000000000000000000000000000000 sports-oriented 00000000000000000000000000000000 open-end 00000000000000000000000000000000 oblivion 00000000000000000000000000000000 monopolizing 00000000000000000000000000000000 awed 00000000000000000000000000000000 cable-programming 00000000000000000000000000000000 Nite 00100000000000000000000000000000 230,000 00000000000000000000000000000000 non-exclusive 00000000000000000000000000000000 realignments 00000000000000000000000000000000 intensifier 00000000000000000000000000000000 night-vision 00000000000000000000000000000000 discerning 00000000000000000000000000000000 Optic-Electronic 01000000000000000000000000000000 Turandot 00100000000000000000000000000000 near-monopolies 00000000000000000000000000000000 spruce 00000000000000000000000000000000 Terminal 00100000000110100100111000000001 Long-debated 00100000000000000000000000000000 Boheme 00100000000000000000000000000000 142.2 00000000000000000000000000000000 4.22 00000000000000000000000000000000 40.125 00000000000000000000000000000000 Karos 00100000000000000000000000000000 heavier-than-normal 00000000000000000000000000000000 free-travel 00000000000000000000000000000000 scales 00000000000110000110111110000011 OVERHAUL 01000000000111111111010100110111 grief 00000000000000001001110010100111 PENALTY 01000000000000000011000001100111 Turns 00100000000111110001001000110010 over-magazined 00000000000000000000000000000000 93.9 00000000000000000000000000000000 bevy 00000000000000000000000000000000 fullscale 00000000000000000000000000000000 everlasting 00000000000100011100110100010000 pitchmen 00000000000000000000000000000000 Miser 00100000000000000000000000000000 bulb 00000000000001010100001000100001 Teleflora 00100000000000000000000000000000 Bouquet 00100000000000000000000000000000 Linus 00100000000000000000000000000000 cast-proof 00000000000000000000000000000000 415.6 00000000000000000000000000000000 Sharing 00100000010000000010110001000000 Rejoins 00100000000000000000000000000000 fuzzier 00000000000000000000000000000000 92.9 00000000000000000000000000000000 smother 00000000000000000000000000000000 under-reported 00000000000000000000000000000000 1. 00000000000000000000000000000000 283.2 00000000000000000000000000000000 268.6 00000000000000000000000000000000 PROMOTION 01000000000111101111001001100001 Boy 00100000000111101110000010110101 Specially 00100000000111001111001001110010 NZI 01000000000000000000000000000000 shortterm 00000000000000000000000000000000 1988-return 00000000000000000000000000000000 fundamantal 00000000000000000000000000000000 louis 00000000000111100111000001001000 purpose... 00000000000000000000000000000000 good-quality 00000000000000000000000000000000 Grosse 00100000000000000000000000000000 Hasbrouk 00100000000000000000000000000000 Benz 00100000000000001000000000101001 840,000 00000000000000000000000000000000 35,000-to-$50,000 00000000000000000000000000000000 82,348 00000000000000000000000000000000 Sybil 00100000000000000000000000000000 110.4 00000000000000000000000000000000 248,279 00000000000000000000000000000000 188,726 00000000000000000000000000000000 323.2 00000000000000000000000000000000 305.7 00000000000000000000000000000000 1,120,317 00000000000000000000000000000000 Measurement 00100000000010101000100001100001 pro-consumption 00000000000000000000000000000000 motor-vehicle 00000000000000000000000000000000 Taxpayer 00100000000011111010111000100001 re-evaluating 00000000000000000000000000000000 shocker 00000000000000000000000000000000 Lillo 00100000000000000000000000000000 Diller 00100000000000000000000000000000 Bowne 00100000000000000000000000000000 Tassinari 00100000000000000000000000000000 Makoto 00100000000000000000000000000000 terminating 00000000000110101101011101000000 meat-hungry 00000000000000000000000000000000 801,835 00000000000000000000000000000000 orchestrating 00000000000111010001111101000000 Flush 00100000000101111101100000110010 Jumping 00100000000110100111100001000000 2141.7 00000000000000000000000000000000 retail-banking 00000000000000000000000000000000 20-bond 00000000000000000000000000000000 News-American 01000000000000000000000000000000 branching 00000000000000000000000000000000 dipping 00000000000001100011100001000000 car-parking 00000000000000000000000000000000 pungent 00000000000000000000000000000000 Bertrand 00100000000000000000000000000000 M.R. 01000000000000000000000000000000 d'Exploitation 01000000000000000000000000000000 Tabacs 00100000000000000000000000000000 Allumettes 00100000000000000000000000000000 now-evident 00000000000000000000000000000000 461.6 00000000000000000000000000000000 FFr27.68 01000000000000000000000000000000 billion-a 00000000000000000000000000000000 cafes 00000000000000000000000000000000 tabacs 00000000000000000000000000000000 Bucaramanga 00100000000000000000000000000000 G.O. 01000000000000000000000000000000 Belin 00100000000000000000000000000000 Match 00100000010111111111110110110010 Brown-tobacco 00100000000000000000000000000000 relaunch 00000000000000000000000000000000 Unsuspecting 00100000000000011101101000110000 slide-packs 00000000000000000000000000000000 55,500 00000000000000000000000000000000 Engraph 00100000000000000000000000000000 Vanguardia 00100000000000000000000000000000 AUDITS 01000000000111010010001000100011 Pardus 00100000000000000000000000000000 conforms 00000000000000000000000000000000 Relying 00100000000111110000100000110010 ENGRAPH 01000000000000000000000000000000 protester 00000000000000000000000000000000 Belz 00100000000000000000000000000000 Mandina 00100000000000000000000000000000 overruling 00000000000000000000000000000000 bottlenecks 00000000000111101100011000100011 21-year-old 00000000000000000000000000000000 Dodson 00100000000000000000000000000000 wrongfully 00000000010101100001001001110010 imprisoning 00000000000000000000000000000000 dear 00000000000001010010011010010000 INTENSIVE 01000000000000100100010100010000 state-directed 00000000000000000000000000000000 241 00000000000000000000000000000000 Wheeland 00100000000000000000000000000000 66.50 00000000000000000000000000000000 naivete 00000000000110001010111010100111 expanse 00000000000000000000000000000000 Beheading 00100000000000000000000000000000 stabbing 00000000000000000000000000000000 interchangeable 00000000000000000000000000000000 subpoenaed 00000100001011010100010000110010 Issak 00100000000000000000000000000000 Ochoa 00100000000000000000000000000000 4.27 00000000000000000000000000000000 Guns 00100000000110101111110101100011 horrific 00000000000000000000000000000000 painstakingly 00000000000000000000000000000000 Guevara 00100000000000000000000000000000 283.9 00000000000000000000000000000000 Che 00100000000000000000000000000000 Mutinies 00100000000000000000000000000000 wrack 00000000000000000000000000000000 Desperate 00100000000000100000011010010000 Movement 00100000000110111111101001100111 Mogadishu 00100000000000000000000000000000 Seventy 00100000000100111111000011000000 self-declared 00000000000000000000000000000000 Mareham 00100000000000000000000000000000 corn-buying 00000000000000000000000000000000 Aden 00100000000000000000000000000000 one-story 00000000000000000000000000000000 Andean 00100000000000000000000000000000 nationals 00000000000111111110100000110011 anarchy 00000000000000000000000000000000 3.89 00000000000000000000000000000000 Soviet-backed 00100000000000000000000000000000 Hammerton 00100000000000000000000000000000 humanist 00000000000000000000000000000000 Mariam 00100000000000000000000000000000 airfields 00000000000000000000000000000000 reverence 00000000000000000000000000000000 grandmothers 00000000000000000000000000000000 Ravenswood 00100000000000000000000000000000 Wollo 00100000000000000000000000000000 indecipherable 00000000000000000000000000000000 mythic 00000000000000000000000000000000 Dese 00100000000000000000000000000000 Assab 00100000000000000000000000000000 tete-a-tete 00000000000000000000000000000000 froze 00000000001111000101010000110010 313.2 00000000000000000000000000000000 Asmara 00100000000000000000000000000000 Trafficking 00100000000111110101011100100101 Davenport 00100000000000000000000000000000 Malta 00100000000000000000000000000000 bombardment 00000000000000000000000000000000 Soviet-supplied 00100000000000000000000000000000 shorthand 00000000000000000000000000000000 shipboard 00000000000000011101110000110000 Clintonville 00100000000000000000000000000000 Considering 00100000000010000000010101000000 tenuous 00000000000011000101110110010000 strategically 00000000100000101000000001110010 post-Barre 01000000000000000000000000000000 cash-and-stock 00000000000000000000000000000000 concomitantly 00000000000000000000000000000000 Sudan 00100000000110010100111101101000 Byzantine 00100000000000011101000010010000 Emperor 00100000000111100111111000000001 Selassie 00100000000000000000000000000000 covertly 00000000000000000000000000000000 ability... 00000000000000000000000000000000 Bainbridge 00100000000000000000000000000000 Surrender 00100000000100111111110110110010 Starve 00100001111101111101010110110010 Famine 00100000000111001011010010100111 Westview 00100000000000000000000000000000 Lisbon 00100000000000000000000000000000 Translant 00100000000000000000000000000000 Cucamonga 00100000000000000000000000000000 missile-launch 00000000000000000000000000000000 MX-missile 01000000000000000000000000000000 19.1 00000000000000000000000000000000 armored-vehicle 00000000000000000000000000000000 Analytic 00100000000000000000000000000000 Shalom 00100000000000000000000000000000 0.628394 00000000000000000000000000000000 3-a-share 00000000000000000000000000000000 Salaam 00100000000000000000000000000000 multisided 00000000000000000000000000000000 231,405 00000000000000000000000000000000 717,000 00000000000000000000000000000000 before-and-after 00000000000000000000000000000000 oil-price 00000000000000000000000000000000 corral 00000000000000000000000000000000 sidetrack 00000000000000000000000000000000 Africans 00100000000101111110010101101000 Herald-American 01000000000000000000000000000000 softens 00000000000000000000000000000000 Issam 00100000000000000000000000000000 Midsized 00100000001000111000001010110000 Khalifa 00100000000000000000000000000000 Al-Sabah 01000000000000000000000000000000 delicately 00000000000000000000000000000000 halfheartedly 00000000000000000000000000000000 doled 00000000000000000000000000000000 feminine-care 00000000000000000000000000000000 cheater 00000000000000000000000000000000 rata 00000000011000111101000101010000 slipshod 00000000000000000000000000000000 Franklin-Trout 01000000000000000000000000000000 Jo 00100000000000000000000000000000 cornerstones 00000000000000000000000000000000 Hornets 00100000000000000000000000000000 90.5 00000000000000000000000000000000 piglet 00000000000000000000000000000000 interestingly 00000000000000000000000000000000 Cols 00100000000000000000000000000000 Bleus 00100000000000000000000000000000 second-in-command 00000000000000000000000000000000 catbird 00000000000000000000000000000000 Regarded 00100000000101000010110000110010 platoon 00000000000111111111000110010000 108.8 00000000000000000000000000000000 barns 00000000000000000000000000000000 Pro-forma 00100000000000000000000000000000 286.6 00000000000000000000000000000000 entree 00000000000111101010110000100001 Owning 00100000000001010011111101000000 inflame 00000000000000000000000000000000 Serge 00100000000000000000000000000000 roomful 00000000000000000000000000000000 Chevenement 00100000000000000000000000000000 luxury-suite 00000000000000000000000000000000 modernizing 00000000000101101101011101000000 F18s 00100000000000000000000000000000 SUPREME 01000000000111111111110111100101 80-player 00000000000000000000000000000000 62,872 00000000000000000000000000000000 290,782 00000000000000000000000000000000 2,052.10 00000000000000000000000000000000 Halas 00100000000000000000000000000000 309,381 00000000000000000000000000000000 438,845 00000000000000000000000000000000 55.1 00000000000000000000000000000000 Swire 00100000000000000000000000000000 gas-tax-increasing 00000000000000000000000000000000 -presumably 00000000000000000000000000000000 McCaskey 01000000000000000000000000000000 often-disparaged 00000000000000000000000000000000 CAAC 01000000000000000000000000000000 renegotiating 00000000000000000000000000000000 361.5 00000000000000000000000000000000 11.79 00000000000000000000000000000000 A330-300s 00100000000000000000000000000000 Hung 00100000000100001001001000110010 Kai 00100000000000000101101100110010 fuel-efficient 00000000000000000000000000000000 Tristars 00100000000000000000000000000000 Fierce 00100000000000110000000000010000 passports 00000000000000000000000000000000 stopover 00000000000111001011001011100111 gas-tax 00000000000000000000000000000000 134,550 00000000000000000000000000000000 commensurate 00000000000000000000000000000000 long-canceled 00000000000000000000000000000000 reincorporated 00000000000000000000000000000000 quake-relief 00000000000000000000000000000000 lifeblood 00000000000000000000000000000000 Dragon 00100000000000000000000000000000 2.15-per-unit 00000000000000000000000000000000 9.84 00000000000000000000000000000000 scurry 00000000000000000000000000000000 steaks 00000000000000000000000000000000 Bonuses 00100000000111101110000100000011 -Hitachi 01000000000000000000000000000000 spandex 00000000000000000000000000000000 Veatch 00100000000000000000000000000000 jogs 00000000000000000000000000000000 headphones 00000000000000000000000000000000 jauntily 00000000000000000000000000000000 Minicar 00100000000000000000000000000000 swerve 00000000000000000000000000000000 16-hour 00000000000000000000000000000000 Simeon 00100000000000000000000000000000 steers 00000000000111001011000000010010 Cray* 00100000000000000000000000000000 stools 00000000000000000000000000000000 kneaded 00000000000000000000000000000000 masseuses 00000000000000000000000000000000 folksy 00000000000000000000000000000000 C-90 00100000000000000000000000000000 saunas 00000000000111111111111111101101 tubs 00000000000000000000000000000000 -twice 00000000000000000000000000000000 croissants 00000000000000000000000000000000 brie 00000000000000000000000000000000 mousse 00000000000000000000000000000000 torts 00000000000000000000000000000000 15-pound 00000000000000000000000000000000 O'Shea 01000000000000000000000000000000 acupuncturist 00000000000000000000000000000000 yoga 00000000000000000000000000000000 twangy 00000000000000000000000000000000 scented 00000000000000000000000000000000 15-minute 00000000000000000000000000000000 scavenger 00000000000000000000000000000000 post-earthquake 00000000000000000000000000000000 barley 00000000000111111110101110110000 color-coded 00000000000000000000000000000000 additionally 00000000000111111011101011101000 yellows 00000000000000000000000000000000 grimness 00000000000000000000000000000000 pillowcases 00000000000000000000000000000000 Renaissance-style 00100000000000000000000000000000 one-quarter-cent 00000000000000000000000000000000 stereos 00000000000000000000000000000000 brooch 00000000000000000000000000000000 unbroken 00000000000000000000000000000000 still-ticking 00000000000000000000000000000000 elbows 00000000000000000000000000000000 restricted-entry 00000000000000000000000000000000 reunite 00000000000000000000000000000000 pets 00000000000110011011110000110011 lampposts 00000000000000000000000000000000 Fillmore 00100000000000000000000000000000 cat 00000000000111110010010000000001 Prevention 00100000000000000011001001100001 Cruelty 00100000000000000000000000000000 quake-displaced 00000000000000000000000000000000 bygone 00000000000000000000000000000000 46,835 00000000000000000000000000000000 Daralee 00100000000000000000000000000000 Konowitch 00100000000000000000000000000000 animalcare 00000000000000000000000000000000 2160.1 00000000000000000000000000000000 1903 00000000000000000000000000000000 sincere 00000000000110100100110110010000 Financially 00100000000110000000000001110010 immorality 00000000000000000000000000000000 purse-snatchings 00000000000000000000000000000000 delectably 00000000000000000000000000000000 Lamar 00101111111001100100001000011000 leasable 00000000000000000000000000000000 end-zone 00000000000000000000000000000000 high-crime 00000000000000000000000000000000 insurability 00000000000000000000000000000000 poorer-quality 00000000000000000000000000000000 barren 00000000000000000000000000000000 2,500-per-job 00000000000000000000000000000000 halo 00000000000000000000000000000000 Bellows 00100000000000000000000000000000 Attwood 00100000000000000000000000000000 Vikings 00100000000000000000000000000000 Tons 00100000000000000000001100001011 Herschel 00100000000000000000000000000000 worthier 00000000000000000000000000000000 unobtrusive 00000000000000000000000000000000 6-to-8-foot-high 00000000000000000000000000000000 remote-controlled 00000000000000000000000000000000 attained 00000000110010010010110000110010 Shrubs 00100000000000000000000000000000 centimeters 00000000000111101011010100001011 non-fortress-like 00000000000000000000000000000000 Infrared 00100000000110011100101010110000 arsenide 00000000000000000000000000000000 Hurricanes 00100000000111110011110000110011 teammate 00000000000000000000000000000000 Chargers 00100000000000000000000000000000 crow 00001111111101000010100000001000 undefeated 00000000000000000000000000000000 panoramic 00000000000000000000000000000000 sub-station 00000000000000000000000000000000 well-trained 00000000000000000000000000000000 round-the-clock 00000000000000000000000000000000 31,777 00000000000000000000000000000000 Somebody 00100000000011001010010001110010 yarn 00000000001100110011111010110000 free-spending 00000000000000000000000000000000 pardoned 00000000000000000000000000000000 Combatting 00100000000000000000000000000000 Titus 00100000000000000000000000000000 ATHLONE 01000000000000000000000000000000 1,026.46 00000000000000000000000000000000 Grade 00100000000000011101100001000111 PGM 01000000000000000000000000000000 Hibernia 00100000000011010000110011000101 HIB 01000000000000000000000000000000 NU 01000000000000000000000000000000 high-capacity 00000000000000000000000000000000 EXBT 01000000000000000000000000000000 franchisor 00000000000000000000000000000000 RLLY 01000000000000000000000000000000 STSN 01000000000000000000000000000000 315,546 00000000000000000000000000000000 infamy 00000000000000000000000000000000 Destec 00100000000000000000000000000000 12.25 00000000000000000000000000000000 energy-cogeneration 00000000000000000000000000000000 weight-training 00000000000000000000000000000000 B'Gosh 01000000000000000000000000000000 well-meaning 00000000000000000000000000000000 expanding-profit 00000000000000000000000000000000 earnings-growth 00000000000000000000000000000000 perennially 00000000000000000000000000000000 Sportdom 00100000000000000000000000000000 Midco 00100000000000000000000000000000 refocuses 00000000000000000000000000000000 Understandably 00100000111100000000001001110010 Smaller-stock 00100000000000000000000000000000 regaining 00000000000110010100100101000000 Schoeppner 00100000000000000000000000000000 30-acre 00000000000000000000000000000000 Kruger 00100000000000000000000000000000 470.67 00000000000000000000000000000000 158.2 00000000000000000000000000000000 bustling 00000000000111101101000010010000 176.7 00000000000000000000000000000000 gallium 00000000000111111011001101110000 reaping 00000000000100100111111101000000 fine-tuned 00000000000000000000000000000000 unproven 00000000000000000000000000000000 Cowboys-owned 00100000000000000000000000000000 oink 00000000000000000000000000000000 hick 00000000000000000000000000000000 gallstones 00000000000000000000000000000000 125-a-share 00000000000000000000000000000000 stock-swap 00000000000000000000000000000000 Minitruck 00100000000000000000000000000000 limping 00000000000000000000000000000000 68,548 00000000000000000000000000000000 94,243 00000000000000000000000000000000 Tokuyama 00100000000000000000000000000000 Soda 00100000001011110011111010110000 bludgeoned 00000000000000000000000000000000 Anti-Jones 01000000000000000000000000000000 2,936 00000000000000000000000000000000 moribund 00000000000010100000101001000000 Merabank 00100000000100111000110100101000 Arizona-related 00100000000000000000000000000000 Examiners 00100000000000000111010010110011 valor 00000000000000000000000000000000 Danzig 00100000000000000000000000000000 sainthood 00000000000000000000000000000000 capital-assets 00000000000000000000000000000000 357.4 00000000000000000000000000000000 258.9 00000000000000000000000000000000 916.3 00000000000000000000000000000000 479.7 00000000000000000000000000000000 Bowls 00100000000000000000000000000000 ever-swelling 00000000000000000000000000000000 pastdue 00000000000000000000000000000000 gyrate 00000000000000000000000000000000 487.8 00000000000000000000000000000000 unceremoniously 00000000000000000000000000000000 boom-and-bust 00000000000000000000000000000000 debacles 00000000000000000000000000000000 H.R. 01000000000000000000000000000000 Modell 00100000000000000000000000000000 C.W. 01000000000000000000000000000000 cowardly 00000000000000000000000000000000 Foreclosure 00100000000000011001111000010000 Update 00100001100100111111110110110010 sanctuary 00000000000000000000000000000000 1,482 00000000000000000000000000000000 Maricopa 00100000000000000000000000000000 687 00000000000000000000000000000000 685,000 00000000000000000000000000000000 frail 00000000000001011100011010010000 contingencies 00000000000000000000000000000000 214.4 00000000000000000000000000000000 234.3 00000000000000000000000000000000 First-round 00100000000000000000000000000000 57.625 00000000000000000000000000000000 536,000 00000000000000000000000000000000 double-B-plus 01000000000000000000000000000000 disobey 00000000000000000000000000000000 Ariz.-based 00100000000000000000000000000000 80.50 00000000000000000000000000000000 Secured 00100000000000001011100110110000 immune-system 00000000000000000000000000000000 cultivates 00000000000000000000000000000000 6,379,884 00000000000000000000000000000000 long-tenured 00000000000000000000000000000000 chained 00000000000000000000000000000000 Eveready 00100000000000000000000000000000 Half-year 00100000000000000000000000000000 autoimmune 00000000000000000000000000000000 receptors 00000000000000000000000000000000 sidelining 00000000000000000000000000000000 21-yard 00000000000000000000000000000000 gushes 00000000000000000000000000000000 Wheaties-box 00100000000000000000000000000000 housekeeping 00000000000111011110001101100001 Tank 00100000000000001001011000000001 184.4 00000000000000000000000000000000 thaw 00000000000000000000000000000000 67.8 00000000000000000000000000000000 Baking 00100000001001101011111010110000 Katsive 00100000000000000000000000000000 scrounge 00000000000000000000000000000000 Shortageflation 00100000000000000000000000000000 scrimmage 00000000000000000000000000000000 Macchiarola 00100000000000000000000000000000 Geraldo 00101111111101110100001000011000 Finis 00100000000000000000000000000000 obsoleting 00000000000000000000000000000000 rave 00000000000000000000000000000000 Jerral 00100000000000000000000000000000 Falcons 00100000000000000000000000000000 pornographic 00000000000000000000000000000000 long-yardage 00000000000000000000000000000000 piracy 00000000000110101010000000100111 toll-tele-phone 00000000000000000000000000000000 emissaries 00000000000000000000000000000000 11.125 00000000000000000000000000000000 2-a-minute 00000000000000000000000000000000 bedridden 00000000000000000000000000000000 696 00000000000000000000000000000000 tape-recorded 00000000000000000000000000000000 hotlines 00000000000000000000000000000000 900-TELELAW 01000000000000000000000000000000 landlord-tenant 00000000000000000000000000000000 probate 00000000000000000000000000000000 CONVICTS 01000000000000000000000000000000 Karnsund 00100000000000000000000000000000 roost 00000000000111110000110110110010 Georg 00100000000000000000000000000000 Thema 00100000000000000000000000000000 hypothesized 00000000000000000000000000000000 popularize 00000000000000000000000000000000 SHEA 01001111111110010100111000001000 GOULD 01001111111100011001110000001000 Lancia 00100000000000000000000000000000 unconnected 00000000000000000000000000000000 Croma 00100000000000000000000000000000 gyrated 00000000000000000000000000000000 303.9 00000000000000000000000000000000 LePatner 01000000000000000000000000000000 professional-design 00000000000000000000000000000000 DISCIPLINARY 01000000000001000001000000110000 PROCEEDINGS 01000000000111101111001001000111 fecal 00000000000000000000000000000000 Non-lawyers 00100000000000000000000000000000 attorney-disciplinary 00000000000000000000000000000000 1.96 00000000000000000000000000000000 non-lawyers 00000000000000000000000000000000 derogation 00000000000000000000000000000000 DREXEL 01001111111111101110000000101000 BURNHAM 01001111111000000001011001001000 LAMBERT 01001111111111111110100001001000 TBWA 01000000000000000000000000000000 155.1 00000000000000000000000000000000 picturing 00000000000000000000000000000000 48.9 00000000000000000000000000000000 bottoms 00000000000111111101010101100011 festive 00000000000000000000000000000000 brunch 00000000000000000000000000000000 186.1 00000000000000000000000000000000 Hmong 00100000000000000000000000000000 trespasses 00000000000000000000000000000000 surrendering 00000000000000000000000000000000 Cadbury-Schweppes 01000000000000000000000000000000 Scania 00100000000000000000000000000000 Sunkist 00100000000000000000000000000000 deodorant 00000000000000000000000000000000 foiling 00000000000000000000000000000000 crying 00000000000111011011000001000000 six-county 00000000000000000000000000000000 Laotian 00100000000000000000000000000000 L.A 01000000000000000000000000000000 ridership 00000000000000000000000000000000 water-borne 00000000000000000000000000000000 hyper 00000000000011100100011010010000 transbay 00000000000000000000000000000000 Meselson 00100000000000000000000000000000 Meetings 00100000000111110111010000100111 crass 00000000000000000000000000000000 Shafer 00100000000000000000000000000000 quake-shocked 00000000000000000000000000000000 quake-inflicted 00000000000000000000000000000000 spores 00000000000000000000000000000000 runners-up 00000000000000000000000000000000 plaque 00000000000001110110111000000001 Kornfield 00100000000000000000000000000000 762.4 00000000000000000000000000000000 unaudited 00000000000111110111111100010000 814.1 00000000000000000000000000000000 354.7 00000000000000000000000000000000 5.01 00000000000000000000000000000000 686.7 00000000000000000000000000000000 371.1 00000000000000000000000000000000 453.4 00000000000000000000000000000000 149.5 00000000000000000000000000000000 Bureaucrat 00100000000111100001010010110101 all-important 00000000000000000000000000000000 123.8 00000000000000000000000000000000 237-seat 00000000000000000000000000000000 Bureaucrats 00100000000111001010100000110011 more-senior 00000000000000000000000000000000 98.3 00000000000000000000000000000000 debt-to-assets 00000000000000000000000000000000 equiment 00000000000000000000000000000000 Supermarket 00100000000000011001111010110000 Inwood 00100000000000000000000000000000 Dubinin 00100000000000000000000000000000 gunpoint 00000000000000000000000000000000 chased 00000000000111111001001000110010 marketwide 00000000000000000000000000000000 tax-evasion 00000000000000000000000000000000 occupations 00000000000111101110000010100011 Clearwater 00100000000110101011101001101000 strangles 00000000000000000000000000000000 1,124 00000000000000000000000000000000 grazed 00000000000000000000000000000000 loitering 00000000000000000000000000000000 burglarized 00000000000000000000000000000000 midlevel 00000000000000000000000000000000 8,385 00000000000000000000000000000000 Furillo 00100000000000000000000000000000 mull 00000000000000000000000000000000 quasi-public 00000000000000000000000000000000 scooter 00000000000000000000000000000000 hooliganism 00000000000000000000000000000000 tainted-meat 00000000000000000000000000000000 Increased 00100000000000000000011001000000 patrolling 00000000011100000110100001000000 tendentious 00000000000000000000000000000000 density 00000000000101101111100011100001 deterrence 00000000000111101111100110001001 criminology 00000000000000000000000000000000 ENFIELD 01000000000000000000000000000000 47.7 00000000000000000000000000000000 6.27 00000000000000000000000000000000 Dunton 00100000000000000000000000000000 confidants 00000000000000000000000000000000 Jeane 00100000000000000000000000000000 germs 00000000000000000000000000000000 Gang 00100000000111101010010100000001 11-month-old 00000000000000000000000000000000 think-tank 00000000000000000000000000000000 interagency 00000000000001010010010100010000 horsepower 00000000000000000101001001000111 Duffield 00100000000000000000000000000000 Astoria 00100000000000000000000000000000 self-starters 00000000000000000000000000000000 Gold-oriented 00100000000000000000000000000000 distilling 00000000000000000000000000000000 underperforms 00000000000000000000000000000000 pressman 00000000000000000000000000000000 Fixed-income 00100000000000000000000000000000 waged 00000000000101101100010000110010 21.71 00000000000000000000000000000000 remora 00000000000000000000000000000000 21.42 00000000000000000000000000000000 unsettlement 00000000000000000000000000000000 Portfolios 00100000000111101111101001101001 post-Oct 01000000000000000000000000000000 30.09 00000000000000000000000000000000 47.24 00000000000000000000000000000000 dullness 00000000000000000000000000000000 Closes 00100000010100000011000000010010 degenerate 00000000000000000000000000000000 ogling 00000000000000000000000000000000 third* 00000000000000000000000000000000 rippling 00000000000000000000000000000000 ducts 00000000000000000000000000000000 stratagems 00000000000000000000000000000000 tacking 00000000000000000000000000000000 Demonstrations 00100000000111100010101000100011 glues 00000000000000000000000000000000 third-biggest 00000000000000000000000000000000 Hypotheekkas 00100000000000000000000000000000 Antwerpsche 00100000000000000000000000000000 architecturally 00000000111100101000000001110010 Architecture 00100000000111110100001101100001 Creole 00100000000000000000000000000000 Coconuts 00100000000000000000000000000000 foot-tall 00000000000000000000000000000000 replica 00000000000000000000000000000000 battlements 00000000000000000000000000000000 quarrel 00000000000111100110110000100111 Solar-powered 00100000000000000000000000000000 glow 00000000000111111011011001000111 boringly 00000000000000000000000000000000 Virology 00100000000000000000000000000000 particle 00000000000000000000000000000000 once-stately 00000000000000000000000000000000 formaldehyde 00000000000000000000000000000000 10-square-mile 00000000000000000000000000000000 Appleseeds 00100000000000000000000000000000 Burgee 00100000000000000000000000000000 rambunctious 00000000000000000000000000000000 cadmium 00000000000000000000000000000000 5.19 00000000000000000000000000000000 bandied 00000000000000000000000000000000 abetted 00000000000000000000000000000000 Shaker 00100000000000000000000000000000 five-consecutive 00000000000000000000000000000000 fly-fishing 00000000000000000000000000000000 taps 00000000000000000000000000000000 admonishing 00000000000000000000000000000000 schoolmates 00000000000000000000000000000000 hydroelectric 00000000000000100101110000110000 solarheated 00000000000000000000000000000000 22:1 00000000000000000000000000000000 14-foot 00000000000000000000000000000000 operable 00000000000000000000000000000000 sealing 00000000001111010110100001000000 rubbed 00000000000000000000000000000000 beeswax 00000000000000000000000000000000 Jute 00100000000000000000000000000000 tacked-down 00000000000000000000000000000000 Microbiology 00100000000000000000000000000000 radio-station 00000000000000000000000000000000 Athenian 00100000000000000000000000000000 grove 00000000000000011010100010100101 Proverbs 00100000000000000000000000000000 lamps 00000000000000000000000000000000 ficus 00000000000000000000000000000000 triphosphorous 00000000000000000000000000000000 Civilized 00100000000000010101000010010000 bounding 00000000000000000000000000000000 Krupp 00100000000000000000000000000000 Hornaday 00100000000000000000000000000000 crystalline 00000000000000000000000000000000 geode 00000000000000000000000000000000 873.9 00000000000000000000000000000000 terrazzo 00000000000000000000000000000000 zinc-strip 00000000000000000000000000000000 BLOCK 01000000000110111111110110110010 acorns 00000000000000000000000000000000 Sasha 00100000000000000000000000000000 accusatory 00000000000000000000000000000000 Westerners 00100000000000010111111000110011 Eiffel 00100000000000000000000000000000 tows 00000000000000000000000000000000 Mathews 00101111110001001000000010001000 814.8 00000000000000000000000000000000 Balag 00100000000000000000000000000000 789,000 00000000000000000000000000000000 395.3 00000000000000000000000000000000 398.3 00000000000000000000000000000000 Improvements 00100000000111111111011000100011 overuse 00000000000000000000000000000000 bumbling 00000000000000000000000000000000 public-opinion 00000000000000000000000000000000 assemblages 00000000000000000000000000000000 misfortunes 00000000000000000000000000000000 crime-busting 00000000000000000000000000000000 textbook 00000000000000001010101000100001 ghastly 00000000000010100100011010010000 uneconomic 00000000000000000000000000000000 latches 00000000000000000000000000000000 dispatching 00000000000000000000000000000000 Historically 00100000000111011000001001110010 Lessner 00100000000000000000000000000000 Kinnear 00101111111100001100100010001000 Weapons 00100000000111101110000110001001 emulate 00000000000111011011111110110010 ex-Marine 01000000000000000000000000000000 defy 00000000001000111011111110110010 Lawful 00100000000000000000000000000000 heal 00000000000000000000000000000000 435 00000000000000000000000000000000 Reagan-like 00100000000000000000000000000000 95.1 00000000000000000000000000000000 Miringoff 00100000000000000000000000000000 Marist 00100000000000000000000000000000 assault-weapons 00000000000000000000000000000000 conundrum 00000000000000000000000000000000 affable 00000000000000000000000000000000 TRT 01000000000000000000000000000000 fancy'shvartzer 00000000000000000000000000000000 moustache 00000000000000000000000000000000 Shvartzer 00100000000000000000000000000000 no-confidence 00000000000000000000000000000000 Yiddish 00100000000000000000000000000000 primary-election 00000000000000000000000000000000 anti-Semitic 01000000000000000000000000000000 Anti-Semitic 01000000000000000000000000000000 unearthed 00000000000000000000000000000000 158,666 00000000000000000000000000000000 Marubeni 00100000000000000000000000000000 the'breakup 00000000000000000000000000000000 evaded 00000000000000000000000000000000 Maiorana 00100000000000000000000000000000 evades 00000000000000000000000000000000 car-care 00000000000000000000000000000000 deception 00000000000111011011110010100111 squeaky 00000000000000000000000000000000 Flavio 00100000000000000000000000000000 Marguerite 00100000000000000000000000000000 hanged 00000000000000000000000000000000 Blackfriar 00100000000000000000000000000000 Pavel 00100000000000000000000000000000 salesparson 00000000000000000000000000000000 exonerating 00000000000000000000000000000000 Opere 00100000000000000000000000000000 Religione 00100000000000000000000000000000 channeled 00000000110111000000010000110010 Kieran 00100000000000000000000000000000 truth-in-lending 00000000000000000000000000000000 Gellert 00100000000000000000000000000000 Erburu 00100000000000000000000000000000 waivered 00000000000000000000000000000000 bonnet 00000000000000000000000000000000 impounded 00000000011111000100010000110010 defense-equipment 00000000000000000000000000000000 670.3 00000000000000000000000000000000 Alun-Jones 01000000000000000000000000000000 Bertram 00100000000000000000000000000000 P.R. 01000000000000000000000000000000 1.1510 00000000000000000000000000000000 Shlenker 00100000000000000000000000000000 pay-per-view 00000000000000000000000000000000 Hawks 00100000000100010100110100000001 Braves 00100000000000000000000000000000 day-today 00000000000000000000000000000000 explosives 00000000000110110011011111001001 Stop-loss 00100000000000000000000000000000 Technik 00100000000000000000000000000000 Menomonee 00100000000000000000000000000000 safeguarded 00000000000000000000000000000000 tossers 00000000000000000000000000000000 Rolfes 00100000000000000000000000000000 trailers 00000000000111100101101111001001 campers 00000000000000000000000000000000 Frisbee 00100000000000000000000000000000 2,410 00000000000000000000000000000000 Vehicle 00100000000011000110001000100001 89.5 00000000000000000000000000000000 Wrist 00100000000110001000110000000001 Twist 00100000000111001100111010110101 large-ticket 00000000000000000000000000000000 resonated 00000000000000000000000000000000 427,300 00000000000000000000000000000000 RVs 01000000000000000000000000000000 trading-a 00000000000000000000000000000000 437.5 00000000000000000000000000000000 430.3 00000000000000000000000000000000 Bullish 00100000000000000001101010010000 product-design 00000000000000000000000000000000 screened 00000101001011010100010000110010 bangs 00000000000000000000000000000000 memorial 00000000000000001010000000100001 hyperventilating 00000000000000000000000000000000 overdosing 00000000000000000000000000000000 card-member 00000000000000000000000000000000 top-quality 00000000000000000000000000000000 confessing 00000000000000000000000000000000 digested 00000000000000000000000000000000 constraint 00000000000111110011100100100111 art-dealing 00000000000000000000000000000000 single-owner 00000000000000000000000000000000 preapproved 00000000000000000000000000000000 Matisse 00100000000000000000000000000000 fetched 00000000000010000110100100110010 soapbox 00000000000000000000000000000000 Pick 00100000000111000110010110110010 businesspeople 00000000000000000000000000000000 resulted... 00000000000000000000000000000000 scars 00000000000000000000000000000000 110.625 00000000000000000000000000000000 jails 00000000000101110111110001100011 coerces 00000000000000000000000000000000 -of 00000000000000000000000000000000 anti-prostitution 00000000000000000000000000000000 Changyi 00100000000000000000000000000000 copper-producing 00000000000000000000000000000000 103-nation 00000000000000000000000000000000 Biographical 00100000010000111010000000110000 Express-Buick 01000000000000000000000000000000 Leaning 00100000000111100111100001000000 Pisa 00100000000000000000000000000000 erupts 00000000000000000000000000000000 stonework 00000000000000000000000000000000 Prandini 00100000000000000000000000000000 treasuries 00000000000111111000100100000011 800-year-old 00000000000000000000000000000000 sadistic 00000000000000000000000000000000 Briksa 00100000000000000000000000000000 Junge 00100000000000000000000000000000 Welt 00100000000000000000000000000000 instigated 00000000000000000000000000000000 Sweating 00100000000000000000000000000000 televising 00000000000000000000000000000000 sauna 00000000000110001011001011100111 MP 01000000000000000000000000000000 pontificate 00000000000000000000000000000000 Debates 00100000000101010110111010100111 no-win 00000000000000000000000000000000 most-respected 00000000000000000000000000000000 Trud 00100000000000000000000000000000 mister 00000000000000000000000000000000 Russian-language 00100000000000000000000000000000 Fizkultura 00100000000000000000000000000000 dinosaur... 00000000000000000000000000000000 yells 00000000000000000000000000000000 Gutenberghus 00100000000000000000000000000000 longevity 00000000000000000000000000000000 Masillon 00100000000000000000000000000000 souled 00000000000000000000000000000000 Softer-than-expected 00100000000000000000000000000000 Mahatma 00100000000000000000000000000000 Victor-brand 00100000000000000000000000000000 mousetraps 00000000000000000000000000000000 storage-case 00000000000000000000000000000000 Housewares 00100000000011010011111010110000 Destinations 00100000000110101111110001100011 revved 00000000000000000000000000000000 on-time 00000000000000000000000000000000 Mohandas 00100000000000000000000000000000 Allies 00100000000111100110110000110011 tugged 00000000000000000000000000000000 abates 00000000000000000000000000000000 ensue 00000000000000000000000000000000 typifies 00000000000000000000000000000000 26,956 00000000000000000000000000000000 light-industrial 00000000000000000000000000000000 foreign-trading 00000000000000000000000000000000 Bleckner 00100000000000000000000000000000 1985-86 00000000000000000000000000000000 overwritten 00000000000000000000000000000000 machinery-trading 00000000000000000000000000000000 38.32 00000000000000000000000000000000 31.48 00000000000000000000000000000000 recentralized 00000000000000000000000000000000 clampdowns 00000000000000000000000000000000 ABM. 01000000000000000000000000000000 rescues 00000000000000000000000000000000 Masahiko 00100000000000000000000000000000 softy 00000000000000000000000000000000 Cuellar 00100000000000000000000000000000 capital-raising 00000000000000000000000000000000 infrastructural 00000000000000000000000000000000 clampdown 00000000000000000000000000000000 bottleneck 00000000000000000000000000000000 resales 00000000000000000000000000000000 stockpiling 00000000000000000000000000000000 Spill 00100000000101101001001010110111 Shows 00100000000010010011000000010010 Union. 00100000000000000000000000000000 Flaws 00100000000111110001111000100011 UNRESOLVED 01000000000000000100110110010000 linguine 00000000000000000000000000000000 tenderness 00000000000000000000000000000000 compensates 00000000000000000000000000000000 S.S. 01000000000000000000000000000000 corpse 00000000000000000000000000000000 Inlet 00100000000000000000000000000000 104.8 00000000000000000000000000000000 Defendants 00100000000111101111000110110011 truculence 00000000000000000000000000000000 shipper 00000000000000000000000000000000 Pollution 00100000000111011101000011100001 Grads 00100000000000101001111000110011 Find 00100000000111101010101110110010 Classes 00100000000000000100100100101111 RECENT 01000000000000000000101100010000 lawyering 00000000000000000000000000000000 Weitz 00100000000000000000000000000000 world-weary 00000000000000000000000000000000 mentors 00000000000000000000000000000000 cathodes 00000000000000000000000000000000 chauffeurs 00000000000000000000000000000000 simulated 00000000000000000000000000000000 aback 00000000000001010000010001110010 20-class 00000000000000000000000000000000 Hanks 00100000000000000000000000000000 Creates 00100001010000000011000000010010 Courthouse 00100000000000000000001111010101 CHILDREN 01000000000111101110111100110011 courthouses 00000000000000000000000000000000 Comics 00100000000000000000000000000000 State-owned 00100000000000000000000000000000 Designs 00100000011011000111000000010010 L-shaped 00100000000000000000000000000000 Teens 00100000000110000011110000110011 headsets 00000000000000000000000000000000 Rome-based 00100000000000000000000000000000 Charlene 00100000000000000000000000000000 Saunders 00101111111110101110110010001000 thrills 00000000000000000000000000000000 Cases 00100000000111100110100010100011 traumatic 00000000000000000111001010010000 Monterey 00100000000010110110011010101000 Rewarding 00100000001110010101010010010000 Gomel 00100000000000000000000000000000 PAYS 01000000000110001101000000010010 Ardmore 00100000000000000000000000000000 395,974 00000000000000000000000000000000 217,000 00000000000000000000000000000000 highway-construction 00000000000000000000000000000000 Burning 00100000001111010010110001000000 subversives 00000000000000000000000000000000 Dubbed 00100000000110110101010000110010 Dire 00100000000000000101001010010000 tailing 00000000000000000000000000000000 Disasters 00100000000111100101001010100011 Significance 00100000000111111101111000001111 disdaining 00000000000000000000000000000000 Sargent 00101111111010011000010000001000 Eurodebentures 00100000000000000000000000000000 nondurable 00000000000011110001010000110000 B-1 00100000000000000000000000000000 Hostess 00100000000000000000000000000000 members. 00000000000000000000000000000000 all-too-sincere 00000000000000000000000000000000 opportunism 00000000000111111010001101100001 Marchers 00100000000000000000000000000000 Reality 00100000000111111001110101100111 travel-related 00000000000000000000000000000000 endearing 00000000000000000000000000000000 Arms 00100000000000000000001010100001 stylish 00000000000101011101000010010000 Rohatyn 00101111111111100110101010001000 DeWitt 01000000000000000000000000000000 townhouse 00000000000000000000000000000000 film-maker 00000000000000000000000000000000 villains 00000000000000000000000000000000 stylist 00000000000000000000000000000000 prepping 00000000000000000000000000000000 pies 00000000000000000000000000000000 burgers 00000000000000000000000000000000 frosty 00000000000000000000000000000000 comestibles 00000000000000000000000000000000 appetizing 00000000000111111011001110010000 quantification 00000000000000000000000000000000 Nikons 00100000000000000000000000000000 Siebert 00101111111101000100111000001000 self-employment 00000000000000000000000000000000 radar. 00000000000000000000000000000000 youngish 00000000000000000000000000000000 semi-professional 00000000000000000000000000000000 Remarketers 00100000000000000000000000000000 fifteenfold 00000000000000000000000000000000 placid 00000000000111100000011000101000 872 00000000000000000000000000000000 specimens 00000000000000000000000000000000 1.175 00000000000000000000000000000000 bleed 00000000000000000000000000000000 eaters 00000000000000000000000000000000 pangs 00000000000000000000000000000000 Rascal 00100000000000000000000000000000 phase-out 00000000000000000000000000000000 1,570 00000000000000000000000000000000 well-run 00000000000000000000000000000000 forensics 00000000000000000000000000000000 19.72 00000000000000000000000000000000 incompetently 00000000000000000000000000000000 Patrician 00100000000000000000000000000000 risible 00000000000000000000000000000000 shadier 00000000000000000000000000000000 shrewder 00000000000000000000000000000000 suspense 00000000000101011010111010100111 mulitiplier 00000000000000000000000000000000 descends 00000000000000000000000000000000 precede 00000000000000000000000000000000 Standard-issue 00100000000000000000000000000000 flaky 00000000000000000000000000000000 snobbish 00000000000000000000000000000000 IBM-remarketer 01000000000000000000000000000000 Neanderthal 00100000000000000000000000000000 heavy-handedness 00000000000000000000000000000000 contemptible 00000000000000000000000000000000 dolt 00000000000000000000000000000000 High-definition 00100000000000000000000000000000 Lindsay 00101111111101111001000100001000 Lehne 00100000000000000000000000000000 Northwood 00100000000000000000000000000000 plasma 00000000000000000000000000000000 movie-quality 00000000000000000000000000000000 diameter 00000000000111011111111001101000 Tuesdays 00100000000000000000000000000000 electroluminescence 00000000000000000000000000000000 adaptable 00000000000000000000000000000000 Brazen 00100000000000000000000000000000 Randi 00100000000000000000000000000000 Flats 00100000000100100001110100100001 flat-panel 00000000000000000000000000000000 weaponsmaking 00000000000000000000000000000000 Brawley 00100000000000000000000000000000 Replacing 00100000000111100110001101000000 Tawana 00100000000000000000000000000000 pol 00000000000000000000000000000000 Thompson-CSF 01000000000000000000000000000000 persisting 00000000000000000000000000000000 Zvi 00100000000000000000000000000000 Yaniv 00100000000000000000000000000000 business-partners 00000000000000000000000000000000 snatch 00000000000000000000000000000000 373.40 00000000000000000000000000000000 simulations 00000000000000000000000000000000 5.1950 00000000000000000000000000000000 488.60 00000000000000000000000000000000 topicality 00000000000000000000000000000000 Chinchon 00100000000000000000000000000000 half-industrial 00000000000000000000000000000000 contemplation 00000000000000000000000000000000 Gilts 00100000000011001111110010100111 environmental-impact 00000000000000000000000000000000 retraced 00000000000000000000000000000000 DeVillars 01000000000000000000000000000000 McKim 01000000000000000000000000000000 Factoring 00100000000010101011111010110000 factored 00000001110001110010110000110010 Reykjavik 00100000000010011111111001101000 electronics-instruments 00000000000000000000000000000000 13,056 00000000000000000000000000000000 Kingsville 00100000000000000000000000000000 stab 00000000000000000000000000000000 214,000 00000000000000000000000000000000 fuel-storage 00000000000000000000000000000000 879,000 00000000000000000000000000000000 199,203 00000000000000000000000000000000 cannon 00000000000010101011010100101000 workhorse 00000000000000000000000000000000 30,841 00000000000000000000000000000000 jumpy 00000000000000000000000000000000 Calverley 00100000000000000000000000000000 1969-72 00000000000000000000000000000000 money-manager 00000000000000000000000000000000 Cabanne 00100000000000000000000000000000 ET 01000000000001111010010010110000 Siebel 00100000000000000000000000000000 impeding 00000000000000000000000000000000 crotchety 00000000000000000000000000000000 unlovable 00000000000000000000000000000000 1,460 00000000000000000000000000000000 Hazell 00100000000000000000000000000000 330,000 00000000000000000000000000000000 navies 00000000000000000000000000000000 1,030 00000000000000000000000000000000 lifeguards 00000000000000000000000000000000 Dress 00100000000111110100110110110111 Barn 00100000000000001010011000000001 cyclicals 00000000000000000000000000000000 bathing 00000000000000000000000000000000 woe 00000000000000000000000000000000 tans 00000000000000000000000000000000 carts 00000000000000000000000000000000 662 00000000000000000000000000000000 829 00000000000000000000000000000000 nun 00000000000000000000000000000000 347.16 00000000000000000000000000000000 325.50 00000000000000000000000000000000 192.12 00000000000000000000000000000000 361,376 00000000000000000000000000000000 inspirations 00000000000000000000000000000000 crusty 00000000000000000000000000000000 trodden 00000000000000000000000000000000 Lamson 00100000000000000000000000000000 Sessions 00100000000000010001000001100011 MassMutual 01000000000000000000000000000000 Stoneridge 00100000000010101001000100101000 22,750,000 00000000000000000000000000000000 persuasive 00000000000000100101010010010000 nonresidential 00000000000000101111010000110000 6,500,000 00000000000000000000000000000000 1,400,000 00000000000000000000000000000000 2,600,000 00000000000000000000000000000000 Colored 00100000000001100010101000110000 1,200,000 00000000000000000000000000000000 1,300,000 00000000000000000000000000000000 Tidewater 00100000000110011010111100101000 4,631,400 00000000000000000000000000000000 continuingly 00000000000000000000000000000000 134,750,000 00000000000000000000000000000000 132,620,000 00000000000000000000000000000000 non-AMT 01000000000000000000000000000000 137,550,000 00000000000000000000000000000000 500,004 00000000000000000000000000000000 ESL 01000000000000000000000000000000 Rainwater 00101111100100101100000010001000 Advancement 00100000000111100101111000001111 1,325,900 00000000000000000000000000000000 Hooks 00100000000000000000000000000000 5.84 00000000000000000000000000000000 1,351,662 00000000000000000000000000000000 Richmond-area 00100000000000000000000000000000 forefathers 00000000000000000000000000000000 a-Ex-dividend 01000000000000000000000000000000 Most-Favored 01000000000000000000000000000000 Kenmare 00100000000000000000000000000000 lockup 00000000000000000000000000000000 KinderCare 01000000000000000000000000000000 852,000 00000000000000000000000000000000 4.6875 00000000000000000000000000000000 72.7 00000000000000000000000000000000 culminating 00000000000000000000000000000000 ups-and-downs 00000000000000000000000000000000 1,014 00000000000000000000000000000000 6-a-share 00000000000000000000000000000000 spring-early 00000000000000000000000000000000 irrespective 00000000000000000000000000000000 237 00000000000000000000000000000000 totalling 00000000000000000000000000000000 Conviction 00100000000111100111111101100111 599.9 00000000000000000000000000000000 20.20 00000000000000000000000000000000 Andrzej 00100000000000000000000000000000 5.77 00000000000000000000000000000000 881,969 00000000000000000000000000000000 illegality 00000000000111110111100010100111 tonnages 00000000000000000000000000000000 marine-shipping 00000000000000000000000000000000 89,500-a-year 00000000000000000000000000000000 111.2 00000000000000000000000000000000 1,735 00000000000000000000000000000000 marine-transport 00000000000000000000000000000000 seasonality 00000000000000000000000000000000 33.9 00000000000000000000000000000000 614.5 00000000000000000000000000000000 497.1 00000000000000000000000000000000 falter 00000000000000000000000000000000 Latowski 00100000000000000000000000000000 111.9 00000000000000000000000000000000 74.8 00000000000000000000000000000000 outflank 00000000011010010111111110110010 wrestles 00000000000000000000000000000000 heavy-tracked 00000000000000000000000000000000 letter-writing 00000000000000000000000000000000 quashing 00000000000000000000000000000000 wallcoverings 00000000000000000000000000000000 lobster 00000000000000000000000000000000 irons 00000000000000000000000000000000 1,368 00000000000000000000000000000000 Geier 00100000000000000000000000000000 Tanks 00100000000110001110111001100011 19-year 00000000000000000000000000000000 councilwoman 00000000000000000000000000000000 war-like 00000000000000000000000000000000 lightning-fast 00000000000000000000000000000000 whipped 00000000000010111011001000110010 O'Dwyer's 01000000000000000000000000000000 Directory 00100000000000011000001010110000 McCaffrey 01000000000000000000000000000000 ballot-burning 00000000000000000000000000000000 Fires 00100000001011001111110101100011 then-minister 00000000000000000000000000000000 Brea 00100000000000000000000000000000 Hakuhodo 00100000000000000000000000000000 Keye 00100000000000000000000000000000 AYER 01000000000110110011000001001000 TALKS 01000000000111101111010000100111 Siano 00100000000000000000000000000000 Zwiren 00100000000000000000000000000000 Karo 00100000000000000000000000000000 Trusk 00100000000000000000000000000000 Lazarus 00100000000000000000000000000000 Pillsbury 00100000000111110110101100101000 board-level 00000000000000000000000000000000 Anti-union 00100000000000000000000000000000 Tagg 00100000000000000000000000000000 Cawdron 00100000000000000000000000000000 Shardlow 00100000000000000000000000000000 esprit 00000000000111110000110100101000 1,087 00000000000000000000000000000000 Lederberg 00100000000000000000000000000000 co-authored 00000000000000000000000000000000 magnanimous 00000000000000000000000000000000 Insofar 00100000000000000000000000000000 discomfited 00000000000000000000000000000000 intimidations 00000000000000000000000000000000 demagogues 00000000000000000000000000000000 company-sponsored 00000000000000000000000000000000 U.Cal-Davis 01000000000000000000000000000000 acquainted 00000000000000000000000000000000 Poag 00100000000000000000000000000000 biotech 00000000000000010010111010110000 Dutch-elm-disease 00100000000000000000000000000000 Strobel 00100000000101010101111110101000 Queenan 00100000000000000000000000000000 mistreat 00000000000000000000000000000000 anti-science 00000000000000000000000000000000 placated 00000000000000000000000000000000 Hubel 00100000000000000000000000000000 DeBakey 01000000000000000000000000000000 primarly 00000000000000000000000000000000 media-linked 00000000000000000000000000000000 Nobels 00100000000000000000000000000000 job-classification 00000000000000000000000000000000 354,600 00000000000000000000000000000000 Borie 00100000000000000000000000000000 Pic 00100000000000000000000000000000 ascendency 00000000000000000000000000000000 specialty-retail 00000000000000000000000000000000 seniority-list 00000000000000000000000000000000 wizards 00000000000000000000000000000000 pilot-seniority 00000000000000000000000000000000 mainlander 00000000000000000000000000000000 Islanders 00100000000000000000000000000000 Lodestar 00100000000000000000000000000000 Jet 00100000000110101010001010110000 Vacations 00100000000111000111101001100011 countering 00000000000101100111011101000000 Succasunna 00100000000000000000000000000000 461,200 00000000000000000000000000000000 Tiger-turned-Federal 01000000000000000000000000000000 Groused 00100000000000000000000000000000 disabled-workers 00000000000000000000000000000000 Gollich 00100000000000000000000000000000 toned-down 00000000000000000000000000000000 fowl 00000000000000000000000000000000 J.X. 01000000000000000000000000000000 charisma 00000000000011101101110010100111 answerable 00000000000000000000000000000000 end-tailed 00000000000000000000000000000000 trunk 00000000000110110110111000000001 distorts 00000111101110000011000000010010 haste 00000000000000000000000000000000 retracted 00000000000000000000000000000000 entails 00000000000000000000000000000000 citizenry 00000000000000000000000000000000 hurtling 00000000000000000000000000000000 109,000 00000000000000000000000000000000 buckshot 00000000000000000000000000000000 freefall 00000000000000000000000000000000 387.8 00000000000000000000000000000000 Oleg 00100000000000000000000000000000 decertified 00000000000000000000000000000000 Forecasts 00100000000111101101010000100011 Sanjay 00100000000000000000000000000000 Joshi 00100000000000000000000000000000 stockbuilding 00000000000000000000000000000000 Defending 00100000000111001001011101000000 1.5890 00000000000000000000000000000000 2.9495 00000000000000000000000000000000 1.5940 00000000000000000000000000000000 2.9429 00000000000000000000000000000000 20-day 00000000000000000000000000000000 141.95 00000000000000000000000000000000 141.35 00000000000000000000000000000000 AEI 01000000000000000000000000000000 366.50 00000000000000000000000000000000 program-dominated 00000000000000000000000000000000 40-a-share 00000000000000000000000000000000 106.6 00000000000000000000000000000000 2,664,098 00000000000000000000000000000000 givebacks 00000000000000000000000000000000 233,000 00000000000000000000000000000000 hangar 00000000000000000000000000000000 L.P 01000000000000000000000000000000 trundles 00000000000000000000000000000000 unionized 00000000000010011000101000110000 Lime 00100000000000000000000000000000 music-publishing 00000000000000000000000000000000 recorded-music 00000000000000000000000000000000 haulage 00000000000000000000000000000000 Sayre 00100000000000000000000000000000 Library 00100000000111111011010100000001 clannish 00000000000000000000000000000000 containerized-cargo 00000000000000000000000000000000 inter-city 00000000000000000000000000000000 cultural-reform 00000000000000000000000000000000 transportation-cost 00000000000000000000000000000000 freight-cost 00000000000000000000000000000000 freight-rate 00000000000000000000000000000000 McCullough 01000000000000000000000000000000 Less-than-truckload 00100000000000000000000000000000 Railroad-rate 00100000000000000000000000000000 rail-traffic 00000000000000000000000000000000 less-than-truckload 00000000000000000000000000000000 Truckers 00100000000111001100000110110011 bloodletting 00000000000000000000000000000000 trucker 00000000000000000000000000000000 Air-freight 00100000000000000000000000000000 hub-and-spoke 00000000000000000000000000000000 Hump 00100000000000000000000000000000 air-freight-forwarding 00000000000000000000000000000000 Kaisha 00100000000000000000000000000000 airlifted 00000000000000000000000000000000 Phase 00100000000111110110001000110111 MAC 01000000001001101100111110000010 Underseas 00100000000000000000000000000000 people-oriented 00000000000000000000000000000000 ex-employees 00000000000000000000000000000000 trenches 00000000000000000000000000000000 airmen 00000000000000000000000000000000 blitzes 00000000000000000000000000000000 Adjustment 00100000000111101001001000111001 Problem 00100000000111111111001101100111 complaint-resolution 00000000000000000000000000000000 gungho 00000000000000000000000000000000 6.44 00000000000000000000000000000000 forwards 00000000000001100100001000100001 53.25 00000000000000000000000000000000 mobilizing 00000000000111010101011101000000 reversals 00000000000000000000000000000000 Decide 00100000000111111110011110110010 panelists 00000000000000011101100110110011 fact-finder 00000000000000000000000000000000 arbitrates 00000000000000000000000000000000 single-adjudicator 00000000000000000000000000000000 cranks 00000000000000000000000000000000 soreheads 00000000000000000000000000000000 handbooks 00000000000000000000000000000000 Smith-Kline 01000000000000000000000000000000 memorandums 00000000000000000000000000000000 57.87 00000000000000000000000000000000 Job 00100000000111101111110000000001 Resolving 00100000000111000011011101000000 Grievances 00100000000111101011101000100011 Nonunion 00100000000001101000101000110000 half-empty 00000000000000000000000000000000 112.16 00000000000000000000000000000000 35486.38 00000000000000000000000000000000 hemorrhaged 00000000000000000000000000000000 101.98 00000000000000000000000000000000 35588.36 00000000000000000000000000000000 862 00000000000000000000000000000000 85-title 00000000000000000000000000000000 small-lot 00000000000000000000000000000000 35611.38 00000000000000000000000000000000 Dai-ichi 00100000000000000000000000000000 depot 00000000000111101100111110000010 2679.72 00000000000000000000000000000000 11.88 00000000000000000000000000000000 luckier 00000000000000000000000000000000 3717.46 00000000000000000000000000000000 647.33-point 00000000000000000000000000000000 1017.69 00000000000000000000000000000000 reservoirs 00000000000000000000000000000000 program-selling 00000000000000000000000000000000 6,050 00000000000000000000000000000000 42.60 00000000000000000000000000000000 Kyocera 00100000000111011100111100101000 5,440 00000000000000000000000000000000 7,580 00000000000000000000000000000000 1,920 00000000000000000000000000000000 2,070 00000000000000000000000000000000 Housings 00100000000000000000000000000000 constructions 00000000000000000000000000000000 furloughed 00000000000000000000000000000000 2,660 00000000000000000000000000000000 2,960 00000000000000000000000000000000 understaffs 00000000000000000000000000000000 tamper 00000000000000000000000000000000 1,730 00000000000000000000000000000000 2,010 00000000000000000000000000000000 bristles 00000000001110101000001000110010 2179.1 00000000000000000000000000000000 2176.9 00000000000000000000000000000000 2189 00000000000000000000000000000000 1,100-parcel-a-week 00000000000000000000000000000000 11-point 00000000000000000000000000000000 establshed 00000000000000000000000000000000 damn-the-torpedoes 00000000000000000000000000000000 1761.0 00000000000000000000000000000000 351.3 00000000000000000000000000000000 387.4 00000000000000000000000000000000 featureless 00000000000000000000000000000000 422.5 00000000000000000000000000000000 390-million 00000000000000000000000000000000 622 00000000000000000000000000000000 FXTV 01000000000000000000000000000000 mid-week 00000000000000000000000000000000 Trusthouse 00100000000000000000000000000000 Forte 00100000000000000000000000000000 Hillsdown 00100000000000000000000000000000 perk 00000000000000000000000000000000 vent 00000000000000000000000000000000 tormentors 00000000000000000000000000000000 imprison 00000000000000000000000000000000 Guerrillas 00100000000111101000101110110011 rewriting 00000000001110011111010001000000 regrettably 00000000000000000000000000000000 classification 00000000000010111101101001100111 coup-planning 00000000000000000000000000000000 MUTUAL 01000000000001001001111110110000 ARRIVED 01000000000010111110001000110010 Roaring 00100000000001000111100000010000 Twenties 00100000000111000011011010100111 gigantic 00000000000000011001000010010000 backed-up 00000000000000000000000000000000 advertising-backed 00000000000000000000000000000000 Rounding-off 00100000000000000000000000000000 0.272 00000000000000000000000000000000 Messerschmitt-Boelkow-Blohm 01000000000000000000000000000000 50.01 00000000000000000000000000000000 aparently 00000000000000000000000000000000 Hamburg 00100000001101100111111001101000 Professors 00100000000100101100111000110011 MBB 01000000000000000000000000000000 Seton 00100000000000000000000000000000 SIERRA 01000000000110110000001000110000 TUCSON 01000000000111110101001000101000 previous-month 00000000000000000000000000000000 arenas 00000000000111100110000010100011 20.39 00000000000000000000000000000000 Flights 00100000000111100100101001100011 vet 00000000000000000000000000000000 461.70 00000000000000000000000000000000 reasearch 00000000000000000000000000000000 Hurrican 00100000000000000000000000000000 5.52 00000000000000000000000000000000 personal-income 00000000000000000000000000000000 charismatic 00000000000000110001000010010000 MANUFACTURING 01000000000000000000011010110000 Londe 00100000000000000000000000000000 15.02 00000000000000000000000000000000 I.E.P. 01000000000000000000000000000000 dispatchers 00000000000000000000000000000000 868 00000000000000000000000000000000 Rolls 00100000100100001111000000010010 Royce 00100000100000001101111100001000 Rune 00100000000000000000000000000000 114.63 00000000000000000000000000000000 unfashionable 00000000000000000000000000000000 gutsy 00000000000000000000000000000000 Stroking 00100000000000000000000000000000 goatee 00000000000000000000000000000000 Swede 00100000000000000000000000000000 Characteristically 00100000000000000000000000000000 roly-poly 00000000000000000000000000000000 SKr1.5 01000000000000000000000000000000 Bfree 00100000000000000000000000000000 SKr29 01000000000000000000000000000000 SKr205 01000000000000000000000000000000 31.65 00000000000000000000000000000000 SKr20 01000000000000000000000000000000 SKr225 01000000000000000000000000000000 megabillion 00000000000000000000000000000000 Dunker 00100000000000000000000000000000 bylaws 00000000000111001101101000100011 Applying 00100000000111110010110101000000 2,048 00000000000000000000000000000000 Electrolux 00100000000010000000111100101000 multipled 00000000000000000000000000000000 twelvefold 00000000000000000000000000000000 Herslow 00100000000000000000000000000000 slow-startup 00000000000000000000000000000000 Berets 00100000000000000000000000000000 refunded 00000000100111000000010000110010 co-pilot 00000000000000000000000000000000 Kurtanjek 00100000000000000000000000000000 Booming 00100000000011011001100000010000 hinge 00000000000011010110110110110010 Swedes 00100000000000000000000000000000 flamed 00000000000000000000000000000000 fry 00001111111011001000110000101001 Belfast 00100000000000000000000000000000 400.3 00000000000000000000000000000000 31,000 00000000000000000000000000000000 million-franc 00000000000000000000000000000000 641.5 00000000000000000000000000000000 Grinevsky 00100000000000000000000000000000 LS400 01000000000000000000000000000000 asset-stripping 00000000000000000000000000000000 margins... 00000000000000000000000000000000 annum 00000000000000000000000000000000 Renta 00100000000000000000000000000000 Bissett 00100000000000000000000000000000 Polymerix 00100000000000000000000000000000 lumber-like 00000000000000000000000000000000 Enid 00100000000000000000000000000000 Acrylic 00100000000000000000000000000000 Polycast 00100000000000000000000000000000 Holewinski 00100000000000000000000000000000 coined 00000000000000000000000000000000 undergarment 00000000000000000000000000000000 boyish 00000000000000000000000000000000 Trimmer 00100000000000000000000000000000 Burrillville 00100000000000000000000000000000 Ebasco 00100000000000000000000000000000 disheveled 00000000000000000000000000000000 250-megawatt 00000000000000000000000000000000 then-dress 00000000000000000000000000000000 decontaminated 00000000000000000000000000000000 buds 00000000000000000000000000000000 Ludwigshafen 00100000000000000000000000000000 Greater 00100000000000000010001111000000 Stroup 00100000000000000000000000000000 500-store 00000000000000000000000000000000 stock-quote 00000000000000000000000000000000 Infotechnology 00100000000000000000000000000000 Bronston 00100000000000000000000000000000 peso 00000000000111111101001101000101 Barge 00100000000000001101111010110000 cotton-ginning 00000000000000000000000000000000 Buy-out 00100000000000000000000000000000 privatizing 00000000000000000000000000000000 Rodolfo 00100000000000000000000000000000 Romero 00100000000000000000000000000000 agrarian-reform 00000000000000000000000000000000 misjudgments 00000000000000000000000000000000 tackles 00000000000000000000000000000000 government-held 00000000000000000000000000000000 Dealing 00100000000111101001100000110010 demography 00000000000000000000000000000000 671 00000000000000000000000000000000 Bali 00100000000000000000000000000000 Leonardo 00100000000000000000000000000000 remade 00000000000000000000000000000000 materiel 00000000000000000000000000000000 neighbours 00000000000000000000000000000000 non-controlling 00000000000000000000000000000000 pussy-willow 00000000000000000000000000000000 cash-hungry 00000000000000000000000000000000 short-changing 00000000000000000000000000000000 trans-Pacific 01000000000000000000000000000000 Sprenger 00100000000000000000000000000000 LifeSpan 01000000000000000000000000000000 heavyweights 00000000000000000000000000000000 Durney 00100000000000000000000000000000 Steep 00100000000001000100100000010000 Tangible 00100000000010011000000000010000 12.375 00000000000000000000000000000000 VF 01000000000000000000000000000000 Pascale 00100000000000000000000000000000 Linsley 00100000000000000000000000000000 86.12 00000000000000000000000000000000 Publicly 00100000000100100111001001110010 469.6 00000000000000000000000000000000 Been 00100000000000101011100001110010 Bitten 00100000000000000000000000000000 Bug 00100000000111010101011000000001 refreshingly 00000000000000000000000000000000 hair-care 00000000000000000000000000000000 tampons 00000000000000000000000000000000 CEOs 01000000000000000000000000000000 contradicts 00000000000000000000000000000000 487 00000000000000000000000000000000 delights 00000000000000000000000000000000 anti-program 00000000000000000000000000000000 1,155 00000000000000000000000000000000 aspires 00000000000000000000000000000000 nonpriority 00000000000000000000000000000000 Mogan 00100000000000000000000000000000 pluri-party 00000000000000000000000000000000 Warners 00100000000000000000000000000000 168.50 00000000000000000000000000000000 21.625 00000000000000000000000000000000 30-Oct 01000000000000000000000000000000 pilot-management 00000000000000000000000000000000 150.00 00000000000000000000000000000000 fiefdoms 00000000000000000000000000000000 crafting 00000000000000000000000000000000 femininity 00000000000000000000000000000000 Hoy 00100000000000000000000000000000 bimonthly 00000000000000000000000000000000 two-minute 00000000000000000000000000000000 yen-support 00000000000000000000000000000000 Leibowitz 00100000000000000000000000000000 parenting 00000000000000000000000000000000 ad-supported 00000000000000000000000000000000 WEIRTON 01000000000000000000000000000000 STEEL 01000000000000000100011010110000 10.958 00000000000000000000000000000000 60.3 00000000000000000000000000000000 prepay 00000000000000000000000000000000 45%-owned 00000000000000000000000000000000 I... 00100000000000000000000000000000 3,513,072 00000000000000000000000000000000 Stream 00100000000110101011011001000111 forwarding 00000000000000000000000000000000 cheapens 00000000000000000000000000000000 68.42 00000000000000000000000000000000 62.36 00000000000000000000000000000000 Huntley 00101111110111110100001000001000 5.67 00000000000000000000000000000000 39.08 00000000000000000000000000000000 11.07 00000000000000000000000000000000 9.49 00000000000000000000000000000000 8.79 00000000000000000000000000000000 55%-owned 00000000000000000000000000000000 Hannibal 00100000000000000000000000000000 Bens 00100000000000000000000000000000 Run 00100000000111101110010110110010 Aniskovich 00100000000000000000000000000000 Rossi 00100000000000000000000000000000 low-base-price 00000000000000000000000000000000 26.48 00000000000000000000000000000000 263,684 00000000000000000000000000000000 9.9375 00000000000000000000000000000000 10.5625 00000000000000000000000000000000 6,727,042 00000000000000000000000000000000 Evanston 00100000000000000000000000000000 84.9 00000000000000000000000000000000 Sinopoli 00100000000000000000000000000000 remanded 00000000000000000000000000000000 REVISED 01000000000000000010001001000000 BID 01000000000111111111111111100111 property-loan 00000000000000000000000000000000 cede 00000000000000000000000000000000 HDTV-screen 01000000000000000000000000000000 215.48 00000000000000000000000000000000 3392.49 00000000000000000000000000000000 129.62 00000000000000000000000000000000 0.51 00000000000000000000000000000000 131.34 00000000000000000000000000000000 0.73 00000000000000000000000000000000 turn-ons 00000000000000000000000000000000 stagnated 00000000000000000000000000000000 249.5 00000000000000000000000000000000 222.8 00000000000000000000000000000000 Eldred 00100000000000000000000000000000 new-country 00000000000000000000000000000000 12,345 00000000000000000000000000000000 Pharmics 00100000000000000000000000000000 Amityville 00100000000000000000000000000000 mioxidil 00000000000000000000000000000000 chlorazepate 00000000000000000000000000000000 dipotassium 00000000000000000000000000000000 meclofenamate 00000000000000000000000000000000 sodium 00000000000111000110110000100001 trazadone 00000000000000000000000000000000 doxepin 00000000000000000000000000000000 diazepam 00000000000000000000000000000000 lorazapam 00000000000000000000000000000000 olefins 00000000000000000000000000000000 Superman 00100000000000000000000000000000 -those 00000000000000000000000000000000 Reeve 00100000000000000000000000000000 Jurors 00100000000110110010100110110011 Hershhenson 00100000000000000000000000000000 Pagones 00100000000000000000000000000000 Vadas 00100000000000000000000000000000 Ciporkin 00100000000000000000000000000000 Telectronics 00100000000000000000000000000000 antianemia 00000000000000000000000000000000 320,000 00000000000000000000000000000000 21-year 00000000000000000000000000000000 72.6 00000000000000000000000000000000 LEBANESE 01000000000001010001011000110000 APPROVED 01000000000001011001010000110010 power-sharing 00000000000000000000000000000000 League-sponsored 00100000000000000000000000000000 Taif 00100000000000000000000000000000 vanishing 00000000000110011100011010010000 mother-in-law 00000000000000000000000000000000 BRACED 01000000001011011110110000110010 Kill 00100000000110011111111110110010 girded 00000000000000000000000000000000 six-story 00000000000000000000000000000000 longshoreman 00000000000000000000000000000000 REQUIRED 01000000000010001000110000110010 stowed 00000000000000000000000000000000 38.375 00000000000000000000000000000000 more-powerful 00000000000000000000000000000000 Mojave 00100000000000000000000000000000 reprisals 00000000000000000000000000000000 Honduran 00100000000001010100010100110000 panties 00000000000000000000000000000000 11,450 00000000000000000000000000000000 Tegucigalpa 00100000000000000000101101101000 Arab-Israeli 01000000000000000000000000000000 telephone-access 00000000000000000000000000000000 780 00000000000000000000000000000000 Telephone-operations 00100000000000000000000000000000 federal-systems 00000000000000000000000000000000 Customer-access 00100000000000000000000000000000 brassieres 00000000000000000000000000000000 .50 00000000000000000000000000000000 barbs 00000000000000000000000000000000 knee-jerk 00000000000000000000000000000000 hardliner 00000000000000000000000000000000 Alurralde 00100000000000000000000000000000 Camry 00100000000101111010001010110000 delinquency 00000000000000000000000000000000 reassuringly 00000000000000000000000000000000 Eppelmann 00100000000000000000000000000000 Protestant 00100000000100001000101000110000 pastor 00000000000001000111110000110101 delinquencies 00000000000000000000000000000000 tart 00000000000000000000000000000000 Ronnie 00100000000000000000000000000000 Flippo 00100000000000000000000000000000 consumer-credit 00000000000000000000000000000000 45,000-$60,000 00000000000000000000000000000000 contrasting 00000000000000000000000000000000 out-of-touch 00000000000000000000000000000000 Gethsemane 00100000000000000000000000000000 leaflets 00000000000000000000000000000000 implements 00000000000000000000000000000000 ideologist 00000000000000000000000000000000 inexplicable 00000000000000000000000000000000 fusing 00000000000000000000000000000000 pragmatists 00000000000010110100100000110011 braids 00000000000000000000000000000000 Electrochemical 00100000000000000000000000000000 Asbestos 00100000000000000010010000100001 Sept.30 00100000000000000000000000000000 already-shaky 00000000000000000000000000000000 DOE 01000000000001011000010000001000 electrolysis-of-water 00000000000000000000000000000000 deficit-racked 00000000000000000000000000000000 dissociate 00000000000000000000000000000000 plant-and-equipment 00000000000000000000000000000000 structively 00000000000000000000000000000000 1,310 00000000000000000000000000000000 dissociating 00000000000000000000000000000000 quieting 00000000000000000000000000000000 quiescent 00000000000000000000000000000000 perturbed 00000000000000000000000000000000 spendthrifts 00000000000000000000000000000000 hock 00000000000000000000000000000000 nonentity 00000000000000000000000000000000 tenths 00000000000000000000000000000000 40.3 00000000000000000000000000000000 Turgut 00100000000000000000000000000000 Gur 00100000000000000000000000000000 Jepson 00100000000000000000000000000000 detecting 00000000000010001011111101000000 Sandia 00100000000000000000000000000000 non-NMS 01000000000000000000000000000000 411 00000000000000000000000000000000 spurious 00000000000001101011000110010000 Shimson 00100000000000000000000000000000 Gottesfeld 00100000000000000000000000000000 lithium 00000000000000000000000000000000 postage 00000000000000000010011100000111 Kann 00100000000000000000000000000000 Margie 00100000000000000000000000000000 99,385 00000000000000000000000000000000 1,327 00000000000000000000000000000000 93.7 00000000000000000000000000000000 255.8 00000000000000000000000000000000 stickier 00000000000000000000000000000000 humbled 00000000101010000001110000110010 Beethoven 00100000000000000000000000000000 semiconductor-depreciation 00000000000000000000000000000000 belied 00000000000000000000000000000000 35-member 00000000000000000000000000000000 wireline 00000000000000000000000000000000 phrases 00000000001110110111110101100011 mid-1979 00000000000000000000000000000000 Lesley 00100000000000000000000000000000 Sharps 00100000000000000000000000000000 Pixley 00100000000000000000000000000000 economize 00000000000000000000000000000000 overwrought 00000000000000000000000000000000 amongst 00000000000000000000000000000000 Scrap 00100000010101111111110110110010 unleashes 00000000000000000000000000000000 compiles 00000000010010110001000000010010 Bruch 00100000000000000000000000000000 de-stocking 00000000000000000000000000000000 fabricators 00000000000000000000000000000000 arch-rival 00000000000000000000000000000000 Rhona 00100000000000000000000000000000 bond-holders 00000000000000000000000000000000 Urs 00100000000000000000000000000000 Seiler 00100000000000000000000000000000 Junk-holders 00100000000000000000000000000000 Meats 00100000000111100111101110110000 fewer-than-expected 00000000000000000000000000000000 ideologues 00000000000000000000000000000000 timpani 00000000000000000000000000000000 Rama 00100000000000000000000000000000 Jerrico 00100000000000000000000000000000 fervente 00000000000000000000000000000000 fattening 00000000000000000000000000000000 pitting 00000000000000000111001101000000 44-cent-a-barrel 00000000000000000000000000000000 19.98 00000000000000000000000000000000 1.2345 00000000000000000000000000000000 3,800-man 00000000000000000000000000000000 Hanauer 00100000000000000000000000000000 Agitato 00100000000000000000000000000000 constitutional-law 00000000000000000000000000000000 sputtered 00000000000000000000000000000000 propulsive 00000000000000000000000000000000 wired 00000010010001001100010000110010 overtaxed 00000000000000000000000000000000 meanders 00000000000000000000000000000000 Multiflow 00100000000000000000000000000000 orchestral 00000000000000000000000000000000 styled 00000000000111100101101001000000 Computing 00100000000000000110000001100001 divvying 00000000000000000000000000000000 Applications 00100000000110100101010100100011 clobber 00000000000000000000000000000000 ants 00000000000000000000000000000000 rhapsody 00000000000000000000000000000000 saturate 00000000000000000000000000000000 atonal 00000000000000000000000000000000 1,880 00000000000000000000000000000000 Slatkin 00100000000000000000000000000000 Konopnicki 00100000000000000000000000000000 Safford 00100000000000000000000000000000 Operators 00100000000111011110010000110011 Symphony 00100000000000000111101100100001 price-skirmishing 00000000000000000000000000000000 -fell 00000000000000000000000000000000 two-for-one 00000000000000000000000000000000 99-cent 00000000000000000000000000000000 ineffectiveness 00000000000000000000000000000000 D'Agosto 01000000000000000000000000000000 quick-service 00000000000000000000000000000000 131,146 00000000000000000000000000000000 Simply 00100000000001000000001001110010 lyricism 00000000000000000000000000000000 compute 00000000000000000000000000000000 single-store 00000000000000000000000000000000 Franchisees 00100000000110010111110000110011 snail-like 00000000000000000000000000000000 offbeat 00000000000000000000000000000000 Paos 00100000000000000000000000000000 heartfelt 00000000000000000000000000000000 droopy-eyed 00000000000000000000000000000000 ballplayer 00000000000000000000000000000000 Shorted 00100000000000000000000000000000 Percussion 00100000000000000000000000000000 baseball-card 00000000000000000000000000000000 jersey 00000000000000000001011110000010 Vizas 00100000000000000000000000000000 Strings 00100000000111111000010101100011 Cobbs 00100000000000000000000000000000 U.S.S.R 01000000000000000000000000000000 espousal 00000000000000000000000000000000 stuffy 00000000000100100100011010010000 headlights 00000000000000000000000000000000 Machon 00100000000000000000000000000000 Papa 00100000000000000000000000000000 Merola 00100000000000000000000000000000 kudos 00000000000000000000000000000000 scandalized 00000000000000000000000000000000 kerchiefed 00000000000000000000000000000000 greenfield 00001111111100100011000010001000 1,275,000 00000000000000000000000000000000 16.68 00000000000000000000000000000000 MAKE 01000000000111111011101110110010 Lamle 00100000000000000000000000000000 transparently 00000000000000000000000000000000 rundown 00000000000000000000000000000000 4.065 00000000000000000000000000000000 4.060 00000000000000000000000000000000 peelback 00000000000000000000000000000000 gigue-like 00000000000000000000000000000000 Stop-Limit 01000000000000000000000000000000 Stop-limit 00100000000000000000000000000000 stop-limit 00000000000000000000000000000000 Market-If-Touched 01000000000000000000000000000000 Market-if-touched 00100000000000000000000000000000 buy-stop 00000000000000000000000000000000 marcato 00000000000000000000000000000000 Fill-Or-Kill 01000000000000000000000000000000 motif 00000000000000000000000000000000 drug-consuming 00000000000000000000000000000000 Bessemer 00100000000001010100111000101000 Championship 00100000000000011010001100100001 Not-Held 01000000000000000000000000000000 Not-held 00100000000000000000000000000000 One-Cancels-The-Other 01000000000000000000000000000000 instructing 00000000000000000000000000000000 Specific-Time 01000000000000000000000000000000 market-on-close 00000000000000000000000000000000 Stop-close-only 00100000000000000000000000000000 good-till-canceled 00000000000000000000000000000000 good-til-canceled 00000000000000000000000000000000 Coplandesque 00100000000000000000000000000000 Angrist 00100000000000000000000000000000 SIZING 01000000000000000000000000000000 737.5 00000000000000000000000000000000 accompanist 00000000000000000000000000000000 fireplace 00000000000000000000000000000000 high-beta 00000000000000000000000000000000 Sharpe 00100000000000000000000000000000 well-diversified 00000000000000000000000000000000 market-inspired 00000000000000000000000000000000 Quips 00100000000111110010011111000010 Uh-uh 00100000000000000000000000000000 Pencils 00100000001010011111110101100011 Concurrent 00100000000011111000010000110000 Kochis 00100000000000000000000000000000 predilection 00000000000000000000000000000000 Spinola 00100000000000000000000000000000 limited-production 00000000000000000000000000000000 lulled 00000000000000000000000000000000 2,379 00000000000000000000000000000000 disguises 00000000000000000000000000000000 distressingly 00000000000000000000000000000000 supersafe 00000000000000000000000000000000 intonation 00000000000000000000000000000000 fixed-dollar 00000000000000000000000000000000 mathematically 00000000000000000000000000000000 stomach-churning 00000000000000000000000000000000 eyeball 00000000000000000000000000000000 quantified 00000000000000000000000000000000 B-flat 00100000000000000000000000000000 185.7 00000000000000000000000000000000 diluting 00000000000111011011011101000000 BDO 01000000000000000000000000000000 deviations 00000000000000000000000000000000 Cammack 00100000000000000000000000000000 Poeme 00100000000000000000000000000000 darts 00000000000000000001001111001001 Chausson 00100000000000000000000000000000 planks 00000000000000000000000000000000 economic-development 00000000000000000000000000000000 past. 00000000000000000000000000000000 Two-income 00100000000000000000000000000000 flip-flopped 00000000000000000000000000000000 mishandling 00000000000000000000000000000000 Castro-Medellin 01000000000000000000000000000000 nexus 00000000000000000000000000000000 THROUGHOUT 01000000000001001101000000001010 democratized 00000000000000000000000000000000 expletive 00000000000000000000000000000000 stomped 00000000000000000000000000000000 tinkered 00000000000000000000000000000000 hips 00000000000111000100111101100011 Oil-related 00100000000000000000000000000000 Pru-Bache 01000000000000000000000000000000 Disgusted 00100000000000000000000000000000 Sock 00100000000000000000000000000000 outselling 00000000000000000000000000000000 grandmotherly 00000000000000000000000000000000 synthetic-leather 00000000000000000000000000000000 cold-weather 00000000000000000000000000000000 Nissans 00100000000000000000000000000000 discount-toy 00000000000000000000000000000000 incalculable 00000000000000000000000000000000 Pre-College 01000000000000000000000000000000 lawns 00000000000111101001010101100011 bushes 00000000000000000000000000000000 locale 00000000000000000000000000000000 lodgings 00000000000000000000000000000000 greens 00000000000111111011001110110011 blooming 00000000000000000000000000000000 7A 01000000000000000000000000000000 7B 01000000000000000000000000000000 bodacious 00000000000000000000000000000000 insupportable 00000000000000000000000000000000 JAMES 01001111111000000000000100011000 SCHWARTZ 01001111111101011011000010001000 lad 00000000000000000000000000000000 turquoise 00000000000000000000000000000000 wrestlers 00000000000000000000000000000000 196.8 00000000000000000000000000000000 conservatory 00000000000000000000000000000000 41,900 00000000000000000000000000000000 shingle 00000000000111011100110000000001 frittering 00000000000000000000000000000000 flat-out 00000000000000000000000000000000 gypsy 00000000000000000000000000000000 dumber 00000000000000000000000000000000 chimpanzees 00000000000000000000000000000000 greedier 00000000000000000000000000000000 swine 00000000000000000000000000000000 zlotys 00000000000000000000000000000000 Porche 00100000000000000000000000000000 rogues 00000000000000000000000000000000 351.5 00000000000000000000000000000000 scammed 00000000000000000000000000000000 320.4 00000000000000000000000000000000 undetected 00000000000000000000000000000000 Carballo 00100000000000000000000000000000 116.7 00000000000000000000000000000000 Registered 00100000000001101100010000110010 humongous 00000000000000000000000000000000 Surveying 00100000000000000000000000000000 consumer-advocacy 00000000000000000000000000000000 Schwarzenberger 00100000000000000000000000000000 impelled 00000000000000000000000000000000 Henrik 00100000000000000000000000000000 peddled 00000000000000000000000000000000 pool... 00000000000000000000000000000000 2,412 00000000000000000000000000000000 Dracula 00100000000000000000000000000000 smarting 00000000000000000000000000000000 slurs 00000000000000000000000000000000 drawl 00000000000000000000000000000000 pooch 00000000000000000000000000000000 Naumberg 00100000000000000000000000000000 Regaard 00100000000000000000000000000000 certification 00000000000000000010111000111001 competency 00000000000000000000000000000000 shoved 00000000100000101001001000110010 minimun 00000000000000000000000000000000 Book-of-the-Month 01000000000000000000000000000000 bad-expectations 00000000000000000000000000000000 diploma 00000000000000000000000000000000 240SX 01000000000000000000000000000000 Salerno-Sonnenberg 01000000000000000000000000000000 contentions 00000000000000000000000000000000 snooty 00000000000000000000000000000000 13,249 00000000000000000000000000000000 misused 00000000000000000000000000000000 Wearing 00100000000011001100100101000000 western-style 00000000000000000000000000000000 Nadja 00100000000000000000000000000000 defamation 00000000000000000000000000000000 Rearding 00100000000000000000000000000000 truths 00000000000000000000000000000000 Riyadh 00100000000000000000000000000000 proessional 00000000000000000000000000000000 witha 00000000000000000000000000000000 implausible 00000000000000000000000000000000 gas-station 00000000000000000000000000000000 ICM 01000000000000000000000000000000 tanned 00000000000000000000000000000000 disembark 00000000000000000000000000000000 Mercedes-Benzes 01000000000000000000000000000000 BMWs 01000000000000000000000000000000 Neiman-Marcus 01000000000000000000000000000000 marble-encased 00000000000000000000000000000000 Atrium 00100000000000000000000000000000 graze 00000000000000000000000000000000 melodies 00000000000000000000000000000000 croons 00000000000000000000000000000000 ratepayers 00000000000111101001111010110011 squat 00000000000000000000000000000000 fleeced 00000000000000000000000000000000 Law-enforcement 00100000000000000000000000000000 mingle 00000000000000000000000000000000 Kacy 00100000000000000000000000000000 aerodynamic 00000000000000000000000000000000 welter 00000000000111111100001000111111 yachts 00000000000110100111110001100011 low-lifes 00000000000000000000000000000000 bunco 00000000000000000000000000000000 Maggot 00100000000000000000000000000000 Con 00100000000000001101001000110000 breezes 00000000000000000000000000000000 lazily 00000000000000000000000000000000 Nightlife 00100000000000000000000000000000 ostentation 00000000000000000000000000000000 pug-nosed 00000000000000000000000000000000 547,000 00000000000000000000000000000000 pleasure-boat 00000000000000000000000000000000 Corvettes 00100000000000000000000000000000 swankier 00000000000000000000000000000000 multi-agency 00000000000000000000000000000000 17,699 00000000000000000000000000000000 tax-sheltered 00000000000000000000000000000000 Bible 00100000000111100110011000000001 September-October 01000000000000000000000000000000 slick-talking 00000000000000000000000000000000 snake-oil 00000000000000000000000000000000 Cho-Liang 01000000000000000000000000000000 Mintz 00100000000000000000000000000000 originate 00000000000000000000000000000000 sliver-like 00000000000000000000000000000000 hooks 00000000000000000000000000000000 big-bucks 00000000000000000000000000000000 generically 00000000000000000000000000000000 penny-ante 00000000000000000000000000000000 pen-and-pencil 00000000000000000000000000000000 oil-leasing 00000000000000000000000000000000 Shlomo 00100000000000000000000000000000 near-luxury 00000000000000000000000000000000 pedagogue 00000000000000000000000000000000 carted 00000001001100101001001000110010 indulge 00000000000000000000000000000000 Lompoc 00100000000000000000000000000000 Prison 00100000000001100110110101010111 Intech 00100000000000000000000000000000 Lido 00100000000000000000000000000000 virtuosos 00000000000000000000000000000000 transportable 00000000000000000000000000000000 Luehrs 00100000000000000000000000000000 WENT 01000000000011001100001000110010 223.7 00000000000000000000000000000000 toddler 00000000000000000000000000000000 Prestige 00100000000111111111110010100111 U. 00101111111001010011010100001000 annals 00000000000000000000000000000000 contemporaries 00000000000000000000000000000000 Tuitions 00100000000000000000000000000000 19,395 00000000000000000000000000000000 newborns 00000000000000000000000000000000 pizzas-with-everything 00000000000000000000000000000000 Sarasota 00100000000110101000101001101000 utmosts 00000000000000000000000000000000 deep-discount 00000000000000000000000000000000 Riepe 00100000000000000000000000000000 Ruffel 00100000000000000000000000000000 237.1 00000000000000000000000000000000 top-rated 00000000000000000000000000000000 Belatedly 00100000000000000000000000000000 instructive 00000000000011010011001110010000 obtainable 00000000000000000000000000000000 Hori 00100000000000000000000000000000 first-grader 00000000000000000000000000000000 773.94 00000000000000000000000000000000 691.09 00000000000000000000000000000000 Plugging 00100000000000000000000000000000 formulas 00000000000111101011011100100011 private-school 00000000000000000000000000000000 prescribes 00000000000000000000000000000000 before-tax 00000000000000000000000000000000 16,500 00000000000000000000000000000000 Kouji 00100000000000000000000000000000 prods 00000000000000000000000000000000 all-stock 00000000000000000000000000000000 mixes 00000000001111100111000000010010 benefactors 00000000000000000000000000000000 Yehudi 00100000000000000000000000000000 prepaid-tuition 00000000000000000000000000000000 17-city 00000000000000000000000000000000 manipulators 00000000000000000000000000000000 alluring 00000000000000000000000000000000 268.98 00000000000000000000000000000000 Alternatives 00100000000111101011001110100011 Issuing 00100000000000111111111101000000 die-hards 00000000000000000000000000000000 Prepayments 00100000000000000000000000000000 Sponsors 00100000000110010010000010110011 indexed 00000000000001010101101001000000 Putka 00100000000000000000000000000000 eduction 00000000000000000000000000000000 Finn 00101111111100000011001000001000 AMONG 01000000000000000001100000001010 CATFISH 01000000000111001000101100100001 watery 00000000010011011000001000110000 Humphreys 00100000000000000000000000000000 Rexinger 00100000000000000000000000000000 Isola 00100000000000000000000000000000 enterprising 00000000000000000000000000000000 quarter-inch 00000000000000000000000000000000 fingerlings 00000000000000000000000000000000 one-pound-or-so 00000000000000000000000000000000 food-fish 00000000000000000000000000000000 live-hauled 00000000000000000000000000000000 whiskery 00000000000000000000000000000000 shambles 00000000000000000000000000000000 live-haulers 00000000000000000000000000000000 hulk 00000000000000000000000000000000 fouled 00000000000000000000000000000000 full-bodied 00000000000000000000000000000000 12.68 00000000000000000000000000000000 33.875 00000000000000000000000000000000 brawny 00000000000000000000000000000000 dubiously 00000000000000000000000000000000 Mail-order 00100000000000000000000000000000 squelched 00000000000000000000000000000000 evangelists 00000000000111110110000100100011 hiders 00000000000000000000000000000000 used-car 00000000000000000000000000000000 masons 00000000000000000000000000000000 roofers 00000000000000000000000000000000 Afterwards 00100000000000000000000000000000 Rodman 00100000000000000000000000000000 gaped 00000000000000000000000000000000 Deductions 00100000000111111101001100000011 crab 00000000000000000000000000000000 ferret 00000000000000000000000000000000 form-letter 00000000000000000000000000000000 Unreported 00100000001000110000011100010000 Stalinism 00100000000000000000000000000000 payer 00000000000000000000000000000000 Passport 00100000000111010101010000000001 80.53 00000000000000000000000000000000 d-Percent 01000000000000000000000000000000 Itzhak 00100000000000000000000000000000 undergirding 00000000000000000000000000000000 Defining 00100000000000011111011101000000 Impetus 00100000000111001011101100100111 direct-seller 00000000000000000000000000000000 noncompliant 00000000000000000000000000000000 well-lighted 00000000000000000000000000000000 1,647 00000000000000000000000000000000 16,746 00000000000000000000000000000000 6,805 00000000000000000000000000000000 5,088 00000000000000000000000000000000 Rubins 00100000000000000000000000000000 65,619 00000000000000000000000000000000 tax-compliance 00000000000000000000000000000000 independent-contractor 00000000000000000000000000000000 innuendo 00000000000000000000000000000000 56,000 00000000000000000000000000000000 misclassified 00000000000000000000000000000000 tipsters 00000000000000000000000000000000 Aoyama 00100000000000000000000000000000 miscreant 00000000000000000000000000000000 drywall 00000000000000000000000000000000 receptionists 00000000000000000000000000000000 cruise-ship 00000000000000000000000000000000 deckhands 00000000000000000000000000000000 Off-Track 01000000000000000000000000000000 Revenue-short 00100000000000000000000000000000 pursuers 00000000000000000000000000000000 delinquents 00000000000000000000000000000000 roundly 00000000000000000000000000000000 Betting 00100000000111111010110101000000 1,222 00000000000000000000000000000000 3,175 00000000000000000000000000000000 high-income 00000000000000000000000000000000 combed 00000000000000000000000000000000 tax-department 00000000000000000000000000000000 computer-matching 00000000000000000000000000000000 Zama 00100000000000000000000000000000 Schmedel 00100000000000000000000000000000 Privileged 00100000000010000101000010010000 town-watching 00000000000000000000000000000000 trend-setters 00000000000000000000000000000000 proficiency 00000000000010000110110000100001 socioeconomically 00000000000000000000000000000000 disadvantaged 00000000000001111010101000110000 Antoni 00100000000000000000000000000000 Neanderthals 00100000000000000000000000000000 racial-minority 00000000000000000000000000000000 THOSE 01000000000000000010000011000000 DELIGHT 01000000000111100010110101100111 misfortune 00000000000000000000000000000000 Desperately 00100000001100000001001001110010 upped 00000000000000000000000000000000 blurt 00000000000000000000000000000000 grand-prize 00000000000000000000000000000000 less-conservative 00000000000000000000000000000000 economic-crime 00000000000000000000000000000000 overdrawn 00000000000000000000000000000000 frailties 00000000000000000000000000000000 10:08 00000000000000000000000000000000 tales 00000000000100100101110101100011 boogieman 00000000000000000000000000000000 McMahon 01001111111010111101001000001000 Signet 00100000001110101001000100101000 Barasch 00100000000000000000000000000000 in-crowd 00000000000000000000000000000000 SH 01000000000000000000000000000000 Adamski 00100000000000000000000000000000 financial-crimes 00000000000000000000000000000000 embellish 00000000000000000000000000000000 larceny 00000000000000000000000000000000 longed-for 00000000000000000000000000000000 mitigation 00000000000000000000000000000000 pinging 00000000000000000000000000000000 deceive 00000000001000100111111110110010 majoring 00000000000000000000000000000000 Andreassen 00100000000000000000000000000000 garbage-incinerator 00000000000000000000000000000000 marquees 00000000000000000000000000000000 business-venture 00000000000000000000000000000000 bunko-forgery 00000000000000000000000000000000 Born-again 00100000000000000000000000000000 do-gooder 00000000000000000000000000000000 neon 00000000000011001010001000110000 Scam 00100000000111011100101101100111 Lynes 00100000000000000000000000000000 Deane 00100000000000000000000000000000 peddler 00000000000000000000000000000000 Garish 00100000000000000000000000000000 Powder 00100000000111001110111000000001 Trinen 00100000000000000000000000000000 penny-brokerage 00000000000000000000000000000000 apprised 00000000000000000000000000000000 ingratiate 00000000000000000000000000000000 Terree 00100000000000000000000000000000 Bowers 00100000000000000000000000000000 major-frauds 00000000000000000000000000000000 flim-flam 00000000000000000000000000000000 Elvekrog 00100000000000000000000000000000 enticingly 00000000000000000000000000000000 Seger-Elvekrog 01000000000000000000000000000000 investment-counseling 00000000000000000000000000000000 money-retirees 00000000000000000000000000000000 underworld 00000000000000000000000000000000 84.29 00000000000000000000000000000000 Jerald 00100000000000000000000000000000 Jellison 00100000000000000000000000000000 THREE 01000000000111101011111001010000 Brannigan 00100000000000000000000000000000 455,000 00000000000000000000000000000000 not-quite-mainstream 00000000000000000000000000000000 Tanaka 00101111111010100110101010001000 FOX 01000000000100111010010000001000 HUNTING 01000000011000000010110001000000 unspeakable 00000000000000000000000000000000 inedible 00000000000000000000000000000000 Kitada 00100000000000000000000000000000 Kakuei 00100000000000000000000000000000 Satoko 00100000000000000000000000000000 kingmaker 00000000000000000000000000000000 incomprehensible 00000000000000000000000000000000 Hayasaka 00100000000000000000000000000000 gibberish 00000000000000000000000000000000 fox 00000000000100111010010000001000 standbys 00000000000000000000000000000000 Shigezo 00100000000000000000000000000000 festooned 00000000000000000000000000000000 Shorn 00100000000000000000000000000000 whistles 00000000000000000000000000000000 grouped 00000011010001001100010000110010 death-benefit 00000000000000000000000000000000 stipulate 00000000000000000000000000000000 beast 00000000000111111110001101100111 Smart 00100000000100001000011010010000 Sounds 00100000001011101000001000110010 5,760 00000000000000000000000000000000 dodge 00000000000011000011111100001000 seamier 00000000000000000000000000000000 permanent-insurance 00000000000000000000000000000000 gilding 00000000000000000000000000000000 lily 00000000000101001101111100001000 effrontery 00000000000000000000000000000000 simplest 00000000000000010111010011010000 Spaull 00100000000000000000000000000000 RIT 01000000000000000000000000000000 beg 00000000000101011010100110110010 Hugely 00100000000000000000000000000000 62.70 00000000000000000000000000000000 Projecting 00100000000101100001110101000000 Pfiefer 00100000000000000000000000000000 actuarial 00000000000000110010010100010000 Tillinghast 00100000000000000000000000000000 back-yard 00000000000000000000000000000000 barbecue 00000000000010010111101100100001 Dominici 00100000000000000000000000000000 cronyism 00000000000000000000000000000000 living-benefits 00000000000000000000000000000000 Security-Connecticut 01000000000000000000000000000000 20-stocks 00000000000000000000000000000000 attarcks 00000000000000000000000000000000 dimensions 00000000000111101000000100101111 policyholder 00000000000000000000000000000000 resembling 00000000000000000110000000001010 low-load 00000000000000000000000000000000 Insureres 00100000000000000000000000000000 president-engineering 00000000000000000000000000000000 792 00000000000000000000000000000000 Id 00100000000000000000000000000000 cringed 00000000000000000000000000000000 871 00000000000000000000000000000000 pipsqueak 00000000000000000000000000000000 292.32 00000000000000000000000000000000 Stumpf 00100000000000000000000000000000 244.6 00000000000000000000000000000000 gun-carrying 00000000000000000000000000000000 10:33 00000000000000000000000000000000 telecines 00000000000000000000000000000000 stanch 00000000000000000000000000000000 then-pending 00000000000000000000000000000000 6,256 00000000000000000000000000000000 Oberhausen 00100000000000000000000000000000 Sintel 00100000000000000000000000000000 5.37 00000000000000000000000000000000 347.13 00000000000000000000000000000000 crunched 00000000000000000000000000000000 Audiovisual 00100000000000000000000000000000 oomph 00000000000000000000000000000000 VandenBerg 01000000000000000000000000000000 stocks-index 00000000000000000000000000000000 unwinding 00000000000000000000000000000000 5,273 00000000000000000000000000000000 9,023 00000000000000000000000000000000 8,524 00000000000000000000000000000000 Leopold 00100000000000000000000000000000 profess 00000000000000000000000000000000 self-criticism 00000000000000000000000000000000 Ricken 00100000000000000000000000000000 despise 00000000000000000000000000000000 refile 00000000000000000000000000000000 AON 01000000000000000000000000000000 5,651 00000000000000000000000000000000 263.07 00000000000000000000000000000000 lotter 00000000000000000000000000000000 Cities-ABC 01000000000000000000000000000000 Agin 00100000000000000000000000000000 382.81 00000000000000000000000000000000 14,580,000 00000000000000000000000000000000 TRC 01000000000000000000000000000000 Metatrace 00100000000000000000000000000000 oiler 00000000000000000000000000000000 Joerg 00100000000000111101100010011000 Saull 00100000000000000000000000000000 afire 00000000000000000101111100110010 -complicated 00000000000000000000000000000000 8,355 00000000000000000000000000000000 35mm 00000000000000000000000000000000 sensitize 00000000000000000000000000000000 sheetrock 00000000000000000000000000000000 untreated 00000000000000000000000000000000 Compensation 00100000000101000010001000111001 middle-age 00000000000000000000000000000000 Hirschfeld 00100000000000000000000000000000 Mental 00100000000101000101000000110000 stress-producing 00000000000000000000000000000000 stress-provoking 00000000000000000000000000000000 Mid-sized 00100000000000000000000000000000 burnout 00000000000101000101110010100111 stressors 00000000000000000000000000000000 Rohrer 00100000000000000000000000000000 Hibler 00100000000000000000000000000000 Replogle 00100000000000000000000000000000 Cheap 00100000000011100101011010010000 Fares 00100000000000001001000100000011 Spend 00100000001110111111001110110010 Aloft 00100000000000111011111100110010 ISN'T 01000000000000000000000000000000 TRUE 01000000000011000100010110010000 90-year 00000000000000000000000000000000 picky 00000000000000000000000000000000 CCD 01000000000000000000000000000000 HD 01000000000000000000000000000000 DC-9 01000000000000000000000000000000 'T- 01000000000000000000000000000000 Season 00100000000111101110001000100111 Jolly 00100000000000000000000000000000 Kringle 00100000000000000000000000000000 Burnsville 00100000000000000000000000000000 sky-high 00000000000000000000000000000000 Spouse 00100000000111100111010010110101 Name 00100000000111111110111010110111 knotty 00000000000000000000000000000000 Marlo 00100000000000000000000000000000 Donahue 00100000000000000000000000000000 Eleven 00100000000000001111000011000000 business-class 00000000000000000000000000000000 bated 00000000000000000000000000000000 abusing 00000000000000000000000000000000 whimsically 00000000000000000000000000000000 Porsche-like 00100000000000000000000000000000 Wolfson 00100000000000000000000000000000 Vacation 00100000000000011110000000100001 HURRICANE 01000000000100100101100100100001 Zicklin 00100000000000000000000000000000 downed 00000000000000000000000000000000 coconuts 00000000000000000000000000000000 cottage 00000000000010001000101100100001 avenge 00000000000000000000000000000000 THAT 01000000000000000000000101000010 one-way 00000000000000000000000000000000 3,481,887 00000000000000000000000000000000 Compassion 00100000000111111100110010100111 advance-purchase 00000000000000000000000000000000 hurricane-stricken 00000000000000000000000000000000 455,410 00000000000000000000000000000000 squandering 00000000000000000000000000000000 Yachtsman 00100000000000000000000000000000 pong 00000000000000000000000000000000 Grill 00100000000000000000000000000000 Jacuzzi 00100000000000000000000000000000 75.41 00000000000000000000000000000000 Bit 00100000000111111111110001111111 SENIOR 01000000000110100111101001110000 CITIZENS 01000000000111111111100000110011 180.3 00000000000000000000000000000000 108-year-old 00000000000000000000000000000000 Lansing 00100000000110100001101001101000 Else 00100000000111100101000101001000 NATION'S 01000000000000000000000000000000 clergy 00000000000111010101100110110011 oilfield 00000000000000000000000000000000 Depression-era 00100000000000000000000000000000 151.8 00000000000000000000000000000000 Imagine 00100000000110110110100110110010 4,930 00000000000000000000000000000000 Eliminating 00100000000110001001011101000000 cutters 00000000000000000000000000000000 earnings-limit 00000000000000000000000000000000 Reconciliation 00100000000000000011111111111001 bolt 00000000000111111001111100001000 Hastert 00100000000000000000000000000000 -4.8 00000000000000000000000000000000 fright 00000000000010001010111010100111 eighth-floor 00000000000000000000000000000000 garments 00000000000110100110111001100011 fur-making 00000000000000000000000000000000 attention... 00000000000000000000000000000000 reinvigorated 00000000000000000000000000000000 whooosh 00000000000000000000000000000000 working-girl 00000000000000000000000000000000 rubber-stamp 00000000000000000000000000000000 Jindo 00100000000000000000000000000000 Tadahiko 00100000000000000000000000000000 High-end 00100000000000000000000000000000 middle-priced 00000000000000000000000000000000 Smedes 00100000000000000000000000000000 five-block 00000000000000000000000000000000 overdependence 00000000000000000000000000000000 Inspired 00100000000111100111010000110010 muffs 00000000000000000000000000000000 flings 00000000000000000000000000000000 dyed 00000000000000000000000000000000 Jeeps 00100000000000000000000000000000 eel 00000000000000000000000000000000 raccoon-skin 00000000000000000000000000000000 collars 00000000000000000000000000000000 pictured 00000000000000000000000000000000 filched 00000000000000000000000000000000 kalega 00000000000000000000000000000000 rustlers 00000000000000000000000000000000 coed 00000000000000000000000000000000 65-year-old 00000000000000000000000000000000 Raphael 00100000000000000000000000000000 lambskin 00000000000000000000000000000000 fur-and-leather 00000000000000000000000000000000 overstating 00000000000000000000000000000000 Antonovich 00100000000000000000000000000000 Fur 00100000001010001011111010110000 Vault 00100000000101110010100110110111 Aftereffects 00100000000000000000000000000000 Warm 00100000001000000100011010010000 winters 00000000000000000000000000000000 landscapers 00000000000000000000000000000000 furrier 00000000000000000000000000000000 -didn't 00000000000000000000000000000000 snappy 00000000000000000000000000000000 vending 00000000000110010101010000110000 ARA 01000000000000000000000000000000 22,925 00000000000000000000000000000000 Hepatitis 00100000000111111101110000100001 Provato 00100000000000000000000000000000 arms-reduction 00000000000000000000000000000000 3648.82 00000000000000000000000000000000 hundred-thousand-share 00000000000000000000000000000000 flex-time 00000000000000000000000000000000 gamma 00000000000000000000000000000000 globulin 00000000000000000000000000000000 flu-like 00000000000000000000000000000000 22,336 00000000000000000000000000000000 Brave 00100000000010110010011010010000 gleaned 00000000000000110001100100110010 subtlety 00000000000000000000000000000000 narcotraficantes 00000000000000000000000000000000 overleveraged 00000000000000000000000000000000 Credibility 00100000000111101111110100100111 hinterlands 00000000000000000000000000000000 Poulin 00100000000000000000000000000000 Lend 00100000001011101111001110110010 bylines 00000000000000000000000000000000 Reward 00100000000111111010110010110111 COCA-COLA 01000000000000000000000000000000 Arboretum 00100000000000000000000000000000 Loran 00100000000000000000000000000000 786,100 00000000000000000000000000000000 regimen 00000000000000000000000000000000 Evidently 00100001001100000000001001110010 money-supply 00000000000000000000000000000000 paramount 00000000000111110111111000101000 courtesan 00000000000000000000000000000000 2.9428 00000000000000000000000000000000 drumroll 00000000000000000000000000000000 1,695,000 00000000000000000000000000000000 building-society 00000000000000000000000000000000 16.22 00000000000000000000000000000000 quick-fix 00000000000000000000000000000000 taller 00000000000000000000000000000000 70.5-point 00000000000000000000000000000000 two-foot 00000000000000000000000000000000 486tm 00000000000000000000000000000000 information-technology 00000000000000000000000000000000 jockeys 00000000000101000111000111110011 LSX 01000000000000000000000000000000 16,250 00000000000000000000000000000000 ISC 01000000000000000000000000000000 fern-like 00000000000000000000000000000000 trunks 00000000000000000000000000000000 bank-branch 00000000000000000000000000000000 stubby 00000000000000000000000000000000 44.7 00000000000000000000000000000000 long-necked 00000000000000000000000000000000 erembal 00000000000000000000000000000000 930 00000000000000000000000000000000 566 00000000000000000000000000000000 doll-sized 00000000000000000000000000000000 SSI 01000000000000000000000000000000 50,400 00000000000000000000000000000000 250.80 00000000000000000000000000000000 3,855.60 00000000000000000000000000000000 Beneficiaries 00100000000111101010001010110011 9,360 00000000000000000000000000000000 6,840 00000000000000000000000000000000 6,480 00000000000000000000000000000000 Health-care 00100000000000000000000000000000 Pitcoff 00100000000000000000000000000000 Medical-supply 00100000000000000000000000000000 Becton 00100000000000000000000000000000 Dickinson 00101111111111000110111000001000 syringe 00000000000110111000000001000111 Fuller 00101111111010011000001000001000 weak-kneed 00000000000000000000000000000000 spurning 00000000000110011001001101000000 283-132 00000000000000000000000000000000 Bosco 00100000000000000000000000000000 190.1 00000000000000000000000000000000 Sidoti 00100000000000000000000000000000 wanes 00000000000000000000000000000000 Cycads 00100000000000000000000000000000 31,143 00000000000000000000000000000000 botany 00000000000000000000000000000000 58.2 00000000000000000000000000000000 enrollments 00000000000111101110110001000001 334,000 00000000000000000000000000000000 1,809,300 00000000000000000000000000000000 1,838,200 00000000000000000000000000000000 46,995 00000000000000000000000000000000 150.8 00000000000000000000000000000000 rustling 00000000000000000000000000000000 2.94 00000000000000000000000000000000 Avena 00100000000000000000000000000000 Steinkrauss 00100000000000000000000000000000 deterrant 00000000000000000000000000000000 89.75 00000000000000000000000000000000 palm-tree 00000000000000000000000000000000 teenagers 00000000000000000000000000000000 roll-out 00000000000000000000000000000000 shovel 00000000000000000000000000000000 Palmolive 00100000000001010100010000101000 awoke 00000000000000000000000000000000 60.2 00000000000000000000000000000000 Purloined 00100000000000000000000000000000 Erle 00100000000000000000000000000000 217.5 00000000000000000000000000000000 191.1 00000000000000000000000000000000 intracompany 00000000000000000000000000000000 Qualls 00100000000000000000000000000000 Billerica 00100000000000000000000000000000 FDA-approved 01000000000000000000000000000000 sealants 00000000000000000000000000000000 bonding 00000000000000101101110000100001 fluoride 00000000000000000000000000000000 benchmarks 00000000000000000000000000000000 anti-lock 00000000000000000000000000000000 half-owned 00000000000000000000000000000000 Wyly 00100000000000000000000000000000 Buster 00100000000000000000000000000000 587 00000000000000000000000000000000 8.81 00000000000000000000000000000000 depreciable 00000000000000000000000000000000 20%-a-year 00000000000000000000000000000000 Industriali 00100000000000000000000000000000 Riunite 00100000000000000000000000000000 26.81 00000000000000000000000000000000 J.E. 01000000000000000000000000000000 side-by-side 00000000000000000000000000000000 stolid 00000000000000000000000000000000 Olds 00100000000000000000000110000000 fickleness 00000000000000000000000000000000 Seth 00100000000000000000000000000000 collectivizers 00000000000000000000000000000000 Agoura 00100000000000000000000000000000 auto-market 00000000000000000000000000000000 Cedergren 00100000000000000000000000000000 Indexed 00100000000001010101101001000000 Kartalia 00100000000000000000000000000000 ANB 01000000000000000000000000000000 Plain-vanilla 00100000000000000000000000000000 well-educated 00000000000000000000000000000000 custodial 00000000000001111000010000110000 toaster 00000000000000000000000000000000 hyper-trader 00000000000000000000000000000000 Cyprus 00100000000010100011000100101000 convertibles 00000000000101110111110101100011 discrepencies 00000000000000000000000000000000 Zumbrunn 00100000000000000000000000000000 slighty 00000000000000000000000000000000 RISK 01000000000111111111010101100111 MANAGER 01000000000000010010101000110101 REPLICATION 01000000000000000000000000000000 Salerno 00100000000000000000000000000000 TILT 01000000000101100101001010110111 overweighted 00000000000000000000000000000000 underweighted 00000000000000000000000000000000 sisters 00000000000000011101011100110011 SPECIALIZED 01000000000011000100101010110000 Indexes 00100000000000001000101001110011 predictor 00000000000000000000000000000000 523,920,214 00000000000000000000000000000000 547,347,585 00000000000000000000000000000000 53,496,665 00000000000000000000000000000000 51,911,566 00000000000000000000000000000000 461,539,056 00000000000000000000000000000000 36,015,194 00000000000000000000000000000000 mid-December 01000000000000000000000000000000 mid-July 01000000000000000000000000000000 Fluctuation 00100000000111011011111010100111 arbitraging 00000000000000000000000000000000 TB 01000000000000000000000000000000 5.82 00000000000000000000000000000000 12,822,563 00000000000000000000000000000000 K-H 01000000000000000000000000000000 Fruehauf 00100000000111000000111100101000 577.3 00000000000000000000000000000000 3,383,477 00000000000000000000000000000000 5,267,238 00000000000000000000000000000000 7,592,988 00000000000000000000000000000000 12,017,724 00000000000000000000000000000000 1,425,035 00000000000000000000000000000000 2,387,226 00000000000000000000000000000000 4,469,167 00000000000000000000000000000000 5,088,774 00000000000000000000000000000000 67,972 00000000000000000000000000000000 183,467 00000000000000000000000000000000 3,820,634 00000000000000000000000000000000 3,363,949 00000000000000000000000000000000 552,302 00000000000000000000000000000000 2,157,656 00000000000000000000000000000000 445,645 00000000000000000000000000000000 141,903 00000000000000000000000000000000 Iberian 00100000000000000000000000000000 73,100 00000000000000000000000000000000 255,923 00000000000000000000000000000000 Pitiful 00100000000000000000000000000000 Helpless 00100000000000000000000000000000 opining 00000000000000000000000000000000 greener 00000000011001110100000000001000 Terrorism 00100000000110100011110010100111 Narcotics 00100000000000110010111010110000 overthrowing 00000000000000000000000000000000 German-made 00100000000000000000000000000000 Saturn 00100000000000001100110100101000 narcokleptocrat 00000000000000000000000000000000 color-coding 00000000000000000000000000000000 cucumber 00000000000101100110101100100001 oddity 00000000000000000000000000000000 94,543 00000000000000000000000000000000 pre-reform 00000000000000000000000000000000 outlasted 00000000000000000000000000000000 state-produced 00000000000000000000000000000000 collectives 00000000000000000000000000000000 descended 00000000000000000000000000000000 exploiter 00000000000000000000000000000000 Warned 00100000000111011111110111000010 rejoined 00000000000000000000000000000000 commend 00000000000100011010100110110010 motorbike 00000000000000000000000000000000 tins 00000000000000000000000000000000 tire-patching 00000000000000000000000000000000 WARS 01000000000111101101001111111001 Chans 00100000000000000000000000000000 Bethle 00100000000000000000000000000000 daybreak 00000000000000000000000000000000 unroll 00000000000000000000000000000000 general-practice 00000000000000000000000000000000 squeezes 00000000000000000000000000000000 bathtub 00000000000000000000000000000000 Claws 00100000000000000000000000000000 optimistically 00001110011000000000010001110010 Engines 00100000000111110100101001100011 import-export 00000000000000000000000000000000 Kalison 00100000000000000000000000000000 Jeanene 00100000000000000000000000000000 158,863 00000000000000000000000000000000 37,860 00000000000000000000000000000000 Appointed 00100000000111000010010000110010 electrified 00000000000000000000000000000000 audacity 00000000000000000000000000000000 Manger 00100000000000000000000000000000 41-lawyer 00000000000000000000000000000000 tax-collection 00000000000000000000000000000000 Thanh 00100000000000000000000000000000 Hoa 00100000000000000000000000000000 stormed 00000000000011110001001000110010 well-defined 00000000000000000000000000000000 Huy 00100000000000000000000000000000 Thiep 00100000000000000000000000000000 MERGER 01000000000111101010100011001111 veiled 00000000000011000101000000010000 Duy 00100000000000000000000000000000 Billionaire 00100000000000011010011110110101 2,303,328 00000000000000000000000000000000 69,980 00000000000000000000000000000000 JERSEY 01000000000000000001011110000010 MacDougall 01000000000000000000000000000000 hem 00000000000000000000000000000000 doi 00000000000000000000000000000000 moi 00000000000000000000000000000000 general-director 00000000000000000000000000000000 unhusked 00000000000000000000000000000000 Petro 00100000000111101001011000110000 poor-quality 00000000000000000000000000000000 ignite 00000000001001101111101110110010 property- 00000000000000000000000000000000 casualty-insurance 00000000000000000000000000000000 Cut 00100000000111010010010110110010 actives 00000000000000000000000000000000 liberating 00000000000000000000000000000000 Sr 00100000000000000000000000000000 258.4 00000000000000000000000000000000 408 00000000000000000000000000000000 VGA 01000000000000000000000000000000 adapter 00000000000000000000000000000000 EGA 01000000000000000000000000000000 EGA-VGA 01000000000000000000000000000000 3.5-inch 00000000000000000000000000000000 citya 00000000000000000000000000000000 wafer 00000000000000000000000000000000 embryonic 00000000000000000000000000000000 Esnard 00100000000000000000000000000000 capital-boosting 00000000000000000000000000000000 Consob 00100000000000000000000000000000 180.9 00000000000000000000000000000000 331.8 00000000000000000000000000000000 273.9 00000000000000000000000000000000 5.23 00000000000000000000000000000000 240.8 00000000000000000000000000000000 923 00000000000000000000000000000000 65.9 00000000000000000000000000000000 899.8 00000000000000000000000000000000 807.5 00000000000000000000000000000000 18.73 00000000000000000000000000000000 15.09 00000000000000000000000000000000 Brest 00100000000000000000000000000000 negated 00001101101011010100010000110010 commercial-products 00000000000000000000000000000000 84.4 00000000000000000000000000000000 182.1 00000000000000000000000000000000 stock-specialist 00000000000000000000000000000000 14-judge 00000000000000000000000000000000 nine-months 00000000000000000000000000000000 Delmont 00100000000000000000000000000000 long-familiar 00000000000000000000000000000000 jet-engine 00000000000000000000000000000000 755.9 00000000000000000000000000000000 838.3 00000000000000000000000000000000 sputter 00000000000000000000000000000000 sprawl 00000000000000000000000000000000 similiar 00000000000000000000000000000000 non-dischargable 00000000000000000000000000000000 Manufacturer 00100000000111100010100001110101 decribed 00000000000000000000000000000000 Airborne 00100000000000001110001010110000 wage-discrimination 00000000000000000000000000000000 engages 00000000000000000000000000000000 356.1 00000000000000000000000000000000 Insitutional 00100000000000000000000000000000 institutional-type 00000000000000000000000000000000 85.49 00000000000000000000000000000000 116.56 00000000000000000000000000000000 154.05 00000000000000000000000000000000 3,288,453 00000000000000000000000000000000 infancy 00000000000000000000000000000000 Mohamed 00100000000000000000000000000000 pullet-roofed 00000000000000000000000000000000 Ismail 00100000000000000000000000000000 gasp 00000000000000000000000000000000 1984-85 00000000000000000000000000000000 457 00000000000000000000000000000000 replenish 00000000000101100100111110110010 AUTO 01000000000000000000001110110000 376.36 00000000000000000000000000000000 property-price 00000000000000000000000000000000 Perimeter 00100000000000000000000000000000 pro-Iranian 01000000000000000000000000000000 Petroliam 00100000000000000000000000000000 Nasional 00100000000000000000000000000000 Hashidate 00100000000000000000000000000000 Secrecy 00100000001011100110011010100111 foregone 00000000000000000000000000000000 Malays 00100000000000000000000000000000 UMNO 01000000000000000000000000000000 auto-dealer 00000000000000000000000000000000 knell 00000000000000000000000000000000 choir 00000000000111101110010100000001 symbolizes 00000000000000000000000000000000 novice 00000000000000000000000000000000 whirl 00000000000000000000000000000000 grassroots 00000000000000000000000000000000 Passaic 00100000000000000000000000000000 Reagan-Republican 01000000000000000000000000000000 governorship 00000000000000000000000000000000 torment 00000000000100001001001010110111 bulwark 00000000000000000000000000000000 SMYRNA 01000000000000000000000000000000 Sidley-Ashurst 01000000000000000000000000000000 Courter... 00100000000000000000000000000000 women's-rights 00000000000000000000000000000000 Schimberg 00100000000000000000000000000000 leotards 00000000000000000000000000000000 beefy 00000000000000000000000000000000 sardonically 00000000000000000000000000000000 solicitors 00000000000000000000000000000000 Rutgers 00100000000000000000000000000000 Eagleton 00101111111100010000111010001000 Eagleton-Newark 01000000000000000000000000000000 Ledger 00100000000000000000000000000000 6.53 00000000000000000000000000000000 I'm-coming-down-your-throat 00100000000000000000000000000000 Italian-American 01000000000000000000000000000000 methodically 00000000000000000000000000000000 tycoons 00000000000000000000000000000000 Kathy 00100000000000000000000000000000 Stanwick 00100000000000000000000000000000 Traynor 00100000000000000000000000000000 aggravates 00001011011010000011000000010010 mean-spirited 00000000000000000000000000000000 rightward 00000000000000000000000000000000 hawkish 00000000000000000000000000000000 anti-tax 00000000000000000000000000000000 Fluent 00100000000000000000000000000000 Asbury 00100000000000000000000000000000 founders 00000000000111001110101010110011 rematch 00000000000000000000000000000000 political-action 00000000000000000000000000000000 pro-consumer 00000000000000000000000000000000 pro-environment 00000000000000000000000000000000 sync 00000000001000110101100000110010 toxic-waste-dump 00000000000000000000000000000000 Monmouth 00100000000000000000000000000000 freeholders 00000000000000000000000000000000 savors 00000000000000000000000000000000 Exodus 00100000000111100100111001100111 Hard-hitting 00100000000000000000000000000000 retools 00000000000000000000000000000000 Appealing 00100000000111101110001110010000 Ozzie 00100000000000000000000000000000 Harriet 00100000000000000000000000000000 Grateful 00100000000111010011110110010000 Dead 00100000000010001001110110010000 lyric 00000000000000000000000000000000 memoirs 00000000000110010011111101100011 alma 00001111111011111111000000110000 mater 00001111111100000000100011111001 forcefulness 00000000000000000000000000000000 divides 00000000000000000000000000000000 Crisp 00100000000000000000000000000000 nephew 00000000000111111110111110000001 editor-in-chief 00000000000000000000000000000000 bagpipe 00000000000000000000000000000000 109.73 00000000000000000000000000000000 devout 00000000000000000000000000000000 Wames 00100000000000000000000000000000 Kron 00100000000000000000000000000000 Patty 00100000000000000000000000000000 pleases 00000000000000000000000000000000 jubilant 00000000000000000000000000000000 Popkin 00101111111010001110110010001000 Woodworth 00100000000000000000000000000000 Ducky 00100000000000000000000000000000 competitve 00000000000000000000000000000000 ascent 00000000010101000111111001100111 newsweekly 00000000000000000000000000000000 2691.19 00000000000000000000000000000000 classical-music 00000000000000000000000000000000 14,560,000 00000000000000000000000000000000 unveils 00000000000000000000000000000000 Patsy 00100000000000000000000000000000 Buckles 00100000000000000000000000000000 Skiing 00100000000111000000101100100001 daring 00000000000011111011010010010000 outgrown 00000000000000000000000000000000 dropper 00000000000000000000000000000000 FIRMS 01000000000110000100010011110011 gliding 00000000000000000000000000000000 sun-drenched 00000000000000000000000000000000 Lantz 00100000000000000000000000000000 BRITISH 01000000000000000000100100110000 tot 00000000000000000000000000000000 Jeffry 00100000000000000000000000000000 snowsuit 00000000000000000000000000000000 unsubstantiated 00000000000000000000000000000000 vitiate 00000000000000000000000000000000 know'til 00000000000000000000000000000000 hot-dog 00000000000000000000000000000000 twenties 00000000000111000011011010100111 thirties 00000000000111101100110000010111 Kathe 00100000000000000000000000000000 brushoff 00000000000000000000000000000000 LaBella 01000000000000000000000000000000 Taos 00100000000000000000000000000000 shuttle-busing 00000000000000000000000000000000 playland 00000000000000000000000000000000 pan 00000000000111111010110101001000 dad 00000000000111101110011110000001 sitter 00000000000000000000000000000000 time-strapped 00000000000000000000000000000000 Borgeson 00100000000000000000000000000000 warm-weather 00000000000000000000000000000000 Katonah 00100000000000000000000000000000 overcrowded 00000000000110011010101000110000 Aftershocks 00100000000000000000000000000000 Brisk 00100000000000001111100000010000 wrought 00000000000000000000000000000000 60,000-odd 00000000000000000000000000000000 5:04 00000000000000000000000000000000 pre-game 00000000000000000000000000000000 upper-deck 00000000000000000000000000000000 newsies 00000000000000000000000000000000 laughingly 00000000000000000000000000000000 Riklis 00101111111101111001000000001000 microphones 00000000000000000000000000000000 spied 00000000000000000000000000000000 credential 00000000000000000000000000000000 Dictates 00100000001111010011000000010010 withstanding 00000000000000000000000000000000 disturbance 00000000000000000000000000000000 girder 00000000000000000000000000000000 Meshulam 00100000000000000000000000000000 failings 00000000000000000000000000000000 still-daylighted 00000000000000000000000000000000 Scale 00100000000111110011011001000111 7.0 00000000000000000000000000000000 5:40 00000000000000000000000000000000 aforethought 00000000000000000000000000000000 relation-back 00000000000000000000000000000000 bulldozed 00000000000000000000000000000000 lugging 00000000000000011101111101000000 natured 00000000000111111111111011000001 bemused 00000000000000000000000000000000 Booths 00100000000000000000000000000000 GANNETT 01000000000111111101011100101000 Erroll 00100000000000000000000000000000 half-block 00000000000000000000000000000000 six-mile 00000000000000000000000000000000 Sandor 00100000000000000000000000000000 Garpian 00100000000000000000000000000000 randomness 00000000000000000000000000000000 cold-cuts 00000000000000000000000000000000 142.84 00000000000000000000000000000000 snoring 00000000000000000000000000000000 71,309 00000000000000000000000000000000 horrifying 00000000001001010101010010010000 nameless 00000000000000000000000000000000 3.2-acre 00000000000000000000000000000000 arable 00000000000000000000000000000000 half-staff 00000000000000000000000000000000 Bart 00100000000000000000000000000000 Giamatti 00100000000000000000000000000000 ruins 00000000000000000000000000000000 dullest 00000000000000000000000000000000 one-sided 00000000000000000000000000000000 Detroit-over-San 01000000000000000000000000000000 rainout 00000000000000000000000000000000 zenith 00000000000101100011000100101000 less-intrusive 00000000000000000000000000000000 sofas 00000000000000000000000000000000 827.9 00000000000000000000000000000000 804.3 00000000000000000000000000000000 Racketeering 00100000000010100001000000110000 three-bedroom 00000000000000000000000000000000 highly-confident 00000000000000000000000000000000 Solow 00100000000000000000000000000000 falloff 00000000000000000000000000000000 Payout 00100000000111101111100011000111 syndications 00000000000111110101000010000001 Fleischer 00101111111111000010100010001000 Monday-morning 00100000000000000000000000000000 quarterbacks 00000000000000000000000000000000 Severence 00100000000000000000000000000000 Hope 00100000000111111110000110110010 Takanori 00100000000000000000000000000000 Mizuno 00100000000000000000000000000000 874 00000000000000000000000000000000 prior-notice 00000000000000000000000000000000 sweatshirts 00000000000000000000000000000000 Organized 00100000000010001001101001000000 981.2 00000000000000000000000000000000 35.875 00000000000000000000000000000000 nursery 00000000000111010001111010110000 hot-rolled 00000000000000000000000000000000 coil 00000000000000000000000000000000 Luerssen 00100000000000000000000000000000 204.5 00000000000000000000000000000000 5.76 00000000000000000000000000000000 164 00000000000000000000000000000000 Colleagues 00100000000111111110110000110011 earthquake-resistant 00000000000000000000000000000000 aftershock-resistant 00000000000000000000000000000000 Oz 00100000000000000000000000000000 price-determination 00000000000000000000000000000000 unlinked 00000000000000000000000000000000 coursed 00000000000000000000000000000000 Wizard 00100000000110100001100101100111 1983-85 00000000000000000000000000000000 aftershock-damping 00000000000000000000000000000000 Dicks 00100000000000000000000000000000 property-liability 00000000000000000000000000000000 micro-liquidity 00000000000000000000000000000000 real-time 00000000000000000000000000000000 shock-damping 00000000000000000000000000000000 Peake 00100000000000000000000000000000 SEE 01000000000111111110100110110010 stutter 00000000000000000000000000000000 Mistake 00100000000111001111101010110111 vane 00000000000000000000000000000000 nutshell 00000000000000000000000000000000 heavier-than-usual 00000000000000000000000000000000 urban-development 00000000000000000000000000000000 Office. 00100000000000000000000000000000 Rock'n 00100000000000000000000000000000 126.15 00000000000000000000000000000000 torch 00000000000000000000000000000000 566.54 00000000000000000000000000000000 Neuhaus 00100000000000000000000000000000 nastier 00000000000000000000000000000000 embezzled 00000000000000000000000000000000 Sigma 00100000000000000000000000000000 navigate 00000000000000000000000000000000 sparkplugs 00000000000000000000000000000000 double-bladed 00000000000000000000000000000000 land-use 00000000000000000000000000000000 acetylene 00000000000000000000000000000000 lightened 00000000000000000000000000000000 in-and-outer 00000000000000000000000000000000 Nokomis 00100000000000000000000000000000 done-and 00000000000000000000000000000000 Low 00100000000011000011011100010000 Perk 00100000000000000000000000000000 Small-company 00100000000000000000000000000000 big-company 00000000000000000000000000000000 recession-wary 00000000000000000000000000000000 blackest 00000000000000000000000000000000 firehoops 00000000000000000000000000000000 Mariel 00100000000000000000000000000000 Clemensen 00100000000000000000000000000000 sweeteners 00000000000000000000000000000000 kickers 00000000000000000000000000000000 seven-eighths 00000000000000000000000000000000 7.955 00000000000000000000000000000000 8.032 00000000000000000000000000000000 7.937 00000000000000000000000000000000 8.007 00000000000000000000000000000000 7.56 00000000000000000000000000000000 Cuyahoga 00100000000000000000000000000000 Flottl 00100000000000000000000000000000 7.22 00000000000000000000000000000000 semi-obscure 00000000000000000000000000000000 Away 00100000000000000001111100110010 bloods 00000000000000000000000000000000 Georgette 00100000000000000000000000000000 government-subsidized 00000000000000000000000000000000 current-coupon 00000000000000000000000000000000 long-dated 00000000000000000000000000000000 short-dated 00000000000000000000000000000000 9.42 00000000000000000000000000000000 crank 00000000101010010110010110110010 10.09 00000000000000000000000000000000 12.94 00000000000000000000000000000000 95.72 00000000000000000000000000000000 7.02 00000000000000000000000000000000 PANHANDLER 01000000000000000000000000000000 Hoboken 00100000000000000000000000000000 3.83 00000000000000000000000000000000 Astor 00100000000000000000000000000000 vanishes 00000000000000000000000000000000 panhandler 00000000000000000000000000000000 dribble 00000000000000000000000000000000 intake 00000000000000000001101101001111 devoured 00000000000000000000000000000000 high-living 00000000000000000000000000000000 Philanthropic 00100000000000000000000000000000 BBB 01000000000000000000000000000000 involuntarily 00000000000000000000000000000000 ripoffs 00000000000000000000000000000000 friendships 00000000000000000000000000000000 kitty 00000000000000000000000000000000 misspent 00000000000000000000000000000000 droppers 00000000000000000000000000000000 Lucullan 00100000000000000000000000000000 Shelton 00100000000000000000000000000000 Forfeiture 00100000000010000101101101001111 Arthritis 00100000000011100010101000110000 bone-marrow 00000000000000000000000000000000 Elle 00100000000111100000110100101000 raiser 00000000000001110000011010000111 We've 00100000000000000000000000000000 first-amendment 00000000000000000000000000000000 drumming 00000000000000000000000000000000 loss-expense 00000000000000000000000000000000 namedropper 00000000000000000000000000000000 miscreants 00000000000000000000000000000000 2,809 00000000000000000000000000000000 cunning 00000000000000000000000000000000 pathologically 00000000000000000000000000000000 innately 00000000000000000000000000000000 name-dropper 00000000000000000000000000000000 inveterate 00000000000000000000000000000000 Stretch 00100000000011101011001010110111 pithy 00000000000000000000000000000000 Nomenklatura 00100000000000000000000000000000 incriminating 00000000000000000000000000000000 12,591 00000000000000000000000000000000 Drunk 00100000000000110100011010010000 hunker 00000000000000000000000000000000 lynch-mob 00000000000000000000000000000000 742 00000000000000000000000000000000 staf 00000000000000000000000000000000 Overhead 00100000000000000011011100000111 cow 00000000000100011110101000100001 Collectively 00100000101100000000001001110010 Imelda 00100000000000000000000000000000 flight-attendants 00000000000000000000000000000000 enforces 00000000000000000000000000000000 all-employee 00000000000000000000000000000000 hello 00000000000000000000000000000000 already-reluctant 00000000000000000000000000000000 190.125 00000000000000000000000000000000 923,500 00000000000000000000000000000000 January-June 01000000000000000000000000000000 desist 00000000000000000000000000000000 relented 00000000000000000000000000000000 undecided 00000000000111100100110110010000 Indemnity 00100000000000001000010010110000 145.4 00000000000000000000000000000000 520,000 00000000000000000000000000000000 3,524,000 00000000000000000000000000000000 1,640,000 00000000000000000000000000000000 slacks 00000000000000000000000000000000 Pemberton 00100000000000000000000000000000 low-sulphur 00000000000000000000000000000000 troublemakers 00000000000000000000000000000000 anti-hooligan 00000000000000000000000000000000 Marginal 00100000000010100000011100010000 gored 00000000000000000000000000000000 righted 00000000000000000000000000000000 bilges 00000000000000000000000000000000 minted 00000000000000000000000000000000 workdays 00000000000111010110110100100111 134,000 00000000000000000000000000000000 593.5 00000000000000000000000000000000 50-story 00000000000000000000000000000000 Scandalios 00100000000000000000000000000000 vacate 00000000000000000000000000000000 WALL 01000000000111111111011110101000 STREET 01000000000000000000100010101000 SHAKE 01000000001111010110010110110010 sequined 00000000000000000000000000000000 Newspeak 00100000000000000000000000000000 heretical 00000000000000000000000000000000 backside 00000000000000000000000000000000 mellifluous 00000000000000000000000000000000 Sardi 00100000000000000000000000000000 panjandrums 00000000000000000000000000000000 340,000 00000000000000000000000000000000 Trotting 00100000010011010110100001000000 Minnelli 00100000000000000000000000000000 CONTROL 01000000000000100010110000101111 swore 00000000000000000000000000000000 DJ 01000000000000000000000000000000 connotations 00000000000000000000000000000000 matron 00000000000000000000000000000000 dignified 00000000000000000000000000000000 agro-industry 00000000000000000000000000000000 Katzenjammer 00100000000000000000000000000000 grouses 00000000000000000000000000000000 name-drops 00000000000000000000000000000000 government-plus 00000000000000000000000000000000 lessers 00000000000000000000000000000000 dabble 00000000000000000000000000000000 fishery 00000000000000000000000000000000 grievous 00000000000000000000000000000000 frontend 00000000000000000000000000000000 no-loads 00000000000000000000000000000000 exit-load 00000000000000000000000000000000 shorn 00000000000000000000000000000000 DATA 01000000000100001100001010111001 betters 00000000000010000100111101100011 downtrodden 00000000000100100111000010010000 Bettner 00100000000000000000000000000000 debt-service 00000000000000000000000000000000 Wiegers 00100000000000000000000000000000 325,000 00000000000000000000000000000000 Perozo 00100000000000000000000000000000 droppable 00000000000000000000000000000000 921.6 00000000000000000000000000000000 845.7 00000000000000000000000000000000 earlier-period 00000000000000000000000000000000 205.3 00000000000000000000000000000000 tumbledown 00000000000000000000000000000000 indenture 00000000000000000000000000000000 disbursement 00000000000000000000000000000000 auto-strop 00000000000000000000000000000000 Gaisman 00100000000000000000000000000000 hairdresser 00000000000000000000000000000000 duds 00000000000000000000000000000000 Blount 00100000000000000000000000000000 sniffing 00000000000111010110100001000000 Winton 00100000000000000000000000000000 Ritz 00100000000110011000000000001000 Purple 00100000001010110010001000110000 28.53 00000000000000000000000000000000 cubs 00000000000000010111110000100101 beholden 00000000000000000000000000000000 inattention 00000000000000000000000000000000 Caddyshack 00100000000000000000000000000000 Longtime 00100000000000000100101001110000 Bookman 00100000000000000000000000000000 chimes 00000000000110100101111000000001 detractors 00000000000000010000000010110011 hot-tempered 00000000000000000000000000000000 bully 00000000000011111000100110110111 enthusiast 00000000000000000000000000000000 subterfuge 00000000000000000000000000000000 Thrice 00100000000000000000000000000000 on-set 00000000000000000000000000000000 Basinger 00100000000000000000000000000000 Non-Proliferation 01000000000000000000000000000000 Bruckheimer 00100000000000000000000000000000 shepherded 00000000000000000000000000000000 bristle 00000000000000000000000000000000 unreadable 00000000000000000000000000000000 pals 00000000000000000000000000000000 heavy-water 00000000000000000000000000000000 fumpered 00000000000000000000000000000000 schmumpered 00000000000000000000000000000000 Drexel-underwritten 00100000000000000000000000000000 barreling 00000000000000000000000000000000 kernel 00000000000111111110100110111111 naturalist 00000000000000000000000000000000 dwarfs 00000000000000000000000000000000 Vyquest 00100000000000000000000000000000 Candu 00100000000000000000000000000000 DiLoreto 01000000000000000000000000000000 Rwanda 00100000000000000000000000000000 gorillas 00000000000000000000000000000000 co-produce 00000000000000000000000000000000 TRS-80 01000000000000000000000000000000 Gilbraltar 00100000000000000000000000000000 assiduously 00000000000000000000000000000000 Recruited 00100001000101000101010000110010 Driver 00100000000111101111111000100001 Shampoo 00100000011101101011111010110000 Filmworks 00100000000000000000000000000000 Midnight 00100000000111111010010000101000 clinkers 00000000000000000000000000000000 Billie 00100000000000000000000000000000 VisionQuest 01000000000000000000000000000000 Clue 00100000000111111010111100010111 Clan 00100000000000000000000000000000 Cave 00100000000100111110000000001000 ingrates 00000000000000000000000000000000 Goliath 00100000000000000000000000000000 AP 01000000000000000000000000000000 small-fry 00000000000000000000000000000000 single-D 01000000000000000000000000000000 indemnify 00000000000101011011101110110010 16.625 00000000000000000000000000000000 Politrick 00100000000000000000000000000000 precedents 00000000000011100010001000100011 Puttnam 00101111111100001110110010001000 PITCH 01000000000100110101111010110111 alchemists 00000000000000000000000000000000 homeequity 00000000000000000000000000000000 time-shares 00000000000000000000000000000000 death-backed 00000000000000000000000000000000 deftly 00000000000000000000000000000000 unhocked 00000000000000000000000000000000 Addiss 00100000000000000000000000000000 forfeitable 00000000000000000000000000000000 Czeslaw 00100000000000000000000000000000 Asset-backed 00100000000000000000000000000000 outperforming 00000000000000000000000000000000 127.03 00000000000000000000000000000000 relative-performance 00000000000000000000000000000000 derby 00000000000001000000101100100001 high-tax 00000000000000000000000000000000 time-share 00000000000000000000000000000000 investment-management 00000000000000000000000000000000 Evaluating 00100000000111110110010101000000 bond-insurance 00000000000000000000000000000000 knack 00000000000111111000001111100111 Gregoire 00100000000000000000000000000000 eyeballs 00000000000000000000000000000000 overeager 00000000000000000000000000000000 defensively 00000000000000000000000000000000 Nope 00100000000000000000000000000000 personification 00000000000000000000000000000000 Unprovable 00100000000000000000000000000000 Highly 00100000000000110000000001110010 Probable 00100000000011101000000000010000 Theory 00100000000111011111111101100111 above-normal 00000000000000000000000000000000 frauds 00000000000110000111100010100111 Hannah 00100000000000000000000000000000 FORCE 01000000000000101010010001010111 one-word 00000000000000000000000000000000 Diversify 00100000000110010010111110110010 Erdos 00100000000000000000000000000000 squalls 00000000000000000000000000000000 7-28 00000000000000000000000000000000 951 00000000000000000000000000000000 extrapolated 00000000000000000000000000000000 hens 00000000000000000000000000000000 sober 00000000011011100101010010010000 better-safe-than 00000000000000000000000000000000 Lyle 00101111111111000101110001001000 parameters 00000000000000000000000000000000 quality-conscious 00000000000000000000000000000000 agressive 00000000000000000000000000000000 Respondents 00100000000000000000000110110011 3-6 00000000000000000000000000000000 ultra-safe 00000000000000000000000000000000 humiliating 00000000000000000000000000000000 once-devoted 00000000000000000000000000000000 297,446 00000000000000000000000000000000 2,204.62 00000000000000000000000000000000 12,283,217 00000000000000000000000000000000 11,429,243 00000000000000000000000000000000 assisted-living 00000000000000000000000000000000 purchase-and-lease 00000000000000000000000000000000 easy-to-use 00000000000000000000000000000000 VALLEY 01000000000000000000000010100101 all-day 00000000000000000000000000000000 Noel 00101111111000011011010100001000 less-advanced 00000000000000000000000000000000 Cleave 00100000000000000000000000000000 pirated 00000000000000000000000000000000 amplifier 00000000000000000000000000000000 cryptographers 00000000000000000000000000000000 encrypting 00000000000000000000000000000000 Epp 00100000000000000000000000000000 small-office 00000000000000000000000000000000 Micronyx 00100000000000000000000000000000 redistributing 00000000000000000000000000000000 Notwithstanding 00100000000010001000001001110010 Jacques-Francois 01000000000000000000000000000000 some... 00000000000000000000000000000000 28.625 00000000000000000000000000000000 4.31 00000000000000000000000000000000 10.01 00000000000000000000000000000000 463.06 00000000000000000000000000000000 Grid 00100000000000000000000000000000 460.33 00000000000000000000000000000000 Eppler 00100000000000000000000000000000 18.11 00000000000000000000000000000000 761.38 00000000000000000000000000000000 486.74 00000000000000000000000000000000 537.91 00000000000000000000000000000000 458.52 00000000000000000000000000000000 545.96 00000000000000000000000000000000 1.97 00000000000000000000000000000000 937 00000000000000000000000000000000 1,435 00000000000000000000000000000000 629 00000000000000000000000000000000 Shahal 00100000000000000000000000000000 Strongly 00100010000000000000010001110010 Autodesk 00100000000000000000000000000000 12.82 00000000000000000000000000000000 flat-to-lower 00000000000000000000000000000000 944,000 00000000000000000000000000000000 Nutmeg 00100000000000000000000000000000 first-base 00000000000000000000000000000000 new-mown 00000000000000000000000000000000 self-indulgent 00000000000000000000000000000000 Tigers 00100000000000110110110100000001 symmetrical 00000000000000000000000000000000 friendliness 00000000010101000101110010100111 electroreality 00000000000000000000000000000000 ratifying 00000000000000000000000000000000 occurrence 00000000000000000000000000000000 historicized 00000000000000000000000000000000 postcards 00000000000000000000000000000000 trivia 00000000000101000111110010100111 lanzador 00000000000000000000000000000000 Homerun 00100000000000000000000000000000 jonron 00000000000000000000000000000000 reverberate 00000000000000000000000000000000 surfers 00000000000000000000000000000000 wipeout 00000000000000000000000000000000 representations 00000000000000000000000000000000 Magic 00100000000111000011110000000001 short-circuited 00000000000000000000000000000000 crevasses 00000000000000000000000000000000 crevasse 00000000000000000000000000000000 eyewitness 00000000000000000000000000000000 raced 00000000000100111011001000110010 tragedies 00000000000000000000000000000000 Intergraph 00100000000000000000000000000000 hotdog 00000000000000000000000000000000 deformed 00000000000000000000000000000000 terra 00000000011000001111000100001000 firma 00000000000000000000000000000000 translating 00000000000000000000000000000000 Walkmen 00100000000000000000000000000000 Watchmen 00100000000000000000000000000000 piglets 00000000000000000000000000000000 magnetized 00000000000000000000000000000000 nucleus 00000000000000000000000000000000 blacked 00000000000000000000000000000000 plume 00000000000000000000000000000000 Darkness 00100000001011100101110010100111 blacked-out 00000000000000000000000000000000 Translation 00100000000010001001100101100111 ganglion 00000000000000000000000000000000 firefighting 00000000000000000000000000000000 tv 00000000000000000000000000000000 McLuhan 01000000000000000000000000000000 76-page 00000000000000000000000000000000 MC68030 01000000000000000000000000000000 ISRAEL 01000000000111100101111101101000 red-faced 00000000000000000000000000000000 exhibiting 00000000000000000000000000000000 inequitable 00000000000000000000000000000000 reverse-engineering 00000000000000000000000000000000 Kasten 00100000000000000000000000000000 earlier-the 00000000000000000000000000000000 MC88200 01000000000000000000000000000000 overheated 00000000000010011010101000110000 market-driven 00000000000000000000000000000000 MISUSE 01000000000111110011011001101111 coddled 00000000000000000000000000000000 JAPAN'S 01000000000000000000000000000000 semi-private 00000000000000000000000000000000 disfavor 00000000000000000000000000000000 re-emphasize 00000000000000000000000000000000 penalizes 00000000010101110001000000010010 plenum 00000000000111011001000100101000 Sino-foreign 00100000000000000000000000000000 inter-company 00000000000000000000000000000000 Jiangsu 00100000000000000000000000000000 Zhejiang 00100000000000000000000000000000 McCaughey 01000000000000000000000000000000 breadbasket 00000000000000000000000000000000 shopkeepers 00000000000000000000000000000000 buyings 00000000000000000000000000000000 Tack 00100000000101001001111010110111 anti-tax-shelter 00000000000000000000000000000000 Charitable 00100000000101100000000000110000 itemize 00000000000000000000000000000000 Reverse 00100000001111111111110110110010 heavy-industry 00000000000000000000000000000000 Groom 00100000000000000000000000000000 REACTOR 01000000000111101110110010001001 legislating 00000000000000000000000000000000 court-reporting 00000000000000000000000000000000 tuxedo-rental 00000000000000000000000000000000 fast-approaching 00000000000000000000000000000000 videoconferencing 00000000000000000000000000000000 tax-give-away 00000000000000000000000000000000 third-ranking 00000000000000000000000000000000 barnyard 00000000000000000000000000000000 Swiss-cheese 00100000000000000000000000000000 pro-investment 00000000000000000000000000000000 mindset 00000000000000000000000000000000 Huard 00100000000000000000000000000000 Charls 00100000000000000000000000000000 NUCLEAR 01000000000000000001110000110000 omission 00000000000010000111111001100111 contemplates 00000000000000000000000000000000 distances 00000000000100011111001000100011 Antique 00100000000000110000001000110000 AUSTIN 01000000000111100110101001101000 Showing 00100000000000000000110101000000 read-only 00000000000000000000000000000000 passive-loss 00000000000000000000000000000000 unasked 00000000000000000000000000000000 programmable 00000000000000000000000000000000 tax-and-budget 00000000000000000000000000000000 erasable 00000000000000000000000000000000 30th 00000000000000000000000000000000 reunion 00000000000000001100110100000001 Mimi 00100000000000000000000000000000 moans 00000000000000000000000000000000 non-volatile 00000000000000000000000000000000 638,000 00000000000000000000000000000000 569,000 00000000000000000000000000000000 Load 00100000000010001000010011000111 67.1 00000000000000000000000000000000 66.6 00000000000000000000000000000000 215,845 00000000000000000000000000000000 4-kilobit 00000000000000000000000000000000 audiocassettes 00000000000000000000000000000000 Foresight 00100000000000000000000000000000 servile 00000000000000000000000000000000 champ 00000000000111101100101100100001 weep 00000000000000000000000000000000 100,980 00000000000000000000000000000000 floppy-disk 00000000000000000000000000000000 titanate 00000000000000000000000000000000 ECONOMIC 01000000000000000011000000110000 burlesque 00000000000000000000000000000000 Champ 00100000000111101100101100100001 zirconate 00000000000000000000000000000000 Spenser 00100000000000000000000000000000 blessings 00000000000000000000000000000000 Waterloo 00100000000000000000000000000000 hard-boiled 00000000000000000000000000000000 roars 00000000000000000000000000000000 a.k.a 00000000000000000000000000000000 Fleetwood 00100000000000000000000000000000 bride 00000000000111100110000100000001 Loring 00100000000000000000000000000000 Goodbye 00100000000001000010010001110010 houseman 00000000000000000000000000000000 lovebirds 00000000000000000000000000000000 patter 00000000000000000000000000000000 cameo 00000000000000000000000000000000 data-storing 00000000000000000000000000000000 Ohls 00100000000000000000000000000000 Memory 00100000000000010100010000100001 bothersome 00000000000000000000000000000000 anachronisms 00000000000000000000000000000000 Non-executive 00100000000000000000000000000000 Tequila 00100000000000000000000000000000 Sunrise 00100000000001111000110100101000 re-creating 00000000000000000000000000000000 Ko 00100000000000000000000000000000 Szeto 00100000000000000000000000000000 flight-to-quality 00000000000000000000000000000000 Printed 00100000001011000101101001000000 Customer 00100000000000000001111000100001 treatises 00000000000000000000000000000000 management-services 00000000000000000000000000000000 groundbreakers 00000000000000000000000000000000 Susumu 00100000000000000000000000000000 Ohara 00100000000000000000000000000000 Shinbun 00100000000000000000000000000000 Kenney 00101111111101110000000010001000 BetaWest 01000000000000000000000000000000 consumer-telephone 00000000000000000000000000000000 business-telephone 00000000000000000000000000000000 618.9 00000000000000000000000000000000 599.4 00000000000000000000000000000000 12.1 00000000000000000000000000000000 MacAllister 01001111111000010101000100001000 664.3 00000000000000000000000000000000 747.7 00000000000000000000000000000000 71.25 00000000000000000000000000000000 network-services 00000000000000000000000000000000 177.4 00000000000000000000000000000000 144.1 00000000000000000000000000000000 Network-access 00100000000000000000000000000000 618.6 00000000000000000000000000000000 148,000 00000000000000000000000000000000 100.625 00000000000000000000000000000000 131.3 00000000000000000000000000000000 nonregulated 00000000000000000000000000000000 private-line 00000000000000000000000000000000 three-month-old 00000000000000000000000000000000 AGS 01000000000000000000000000000000 non-regulated 00000000000000000000000000000000 81.125 00000000000000000000000000000000 non-telephone 00000000000000000000000000000000 Monteith 00100000000000000000000000000000 Shinpan 00100000000000000000000000000000 Innovative 00100000000011000000110100010000 423.9 00000000000000000000000000000000 394.4 00000000000000000000000000000000 333.3 00000000000000000000000000000000 314 00000000000000000000000000000000 85.50 00000000000000000000000000000000 83.3 00000000000000000000000000000000 298 00000000000000000000000000000000 a-Includes 01000000000000000000000000000000 88.7 00000000000000000000000000000000 commonstock 00000000000000000000000000000000 stock-margin 00000000000000000000000000000000 b-Includes 01000000000000000000000000000000 FiberCom 01000000000000000000000000000000 552 00000000000000000000000000000000 48.375 00000000000000000000000000000000 Petrofina 00100000000111111010001010101000 Fina 00100000000000000000000000000000 711.9 00000000000000000000000000000000 696.1 00000000000000000000000000000000 Naji 00100000000000000000000000000000 319 00000000000000000000000000000000 19.93 00000000000000000000000000000000 38.1 00000000000000000000000000000000 Gero 00100000000000000000000000000000 Varo 00100000000000010100111100101000 Hatchett 00100000000000000000000000000000 462.2 00000000000000000000000000000000 spookiest 00000000000000000000000000000000 Clothestime 00100000000100011010111100101000 Amtran 00100000000000000000000000000000 non-auto 00000000000000000000000000000000 genie 00000000000000000000000000000000 Turk 00100000000000000000000000000000 middle-ground 00000000000000000000000000000000 bi-polar 00000000000000000000000000000000 4,695 00000000000000000000000000000000 Catalog 00100000000001001011111010110000 pre-Christmas 01000000000000000000000000000000 Popolare 00100000000000000000000000000000 Enthusiast 00100000000000000000000000000000 cellars 00000000000000000000000000000000 Wish 00100000000011011110000110110010 14.70 00000000000000000000000000000000 linkup 00000000000000000000000000000000 13.26 00000000000000000000000000000000 Suckow 00100000000000000000000000000000 Locker 00100000000000111001111010110000 A.-controlled 00100000000000000000000000000000 'You 01000000000000000000000000000000 perversities 00000000000000000000000000000000 undeserved 00000000000000000000000000000000 stormy 00000000000000000011011010010000 renown 00000000000000000000000000000000 rubber-necking 00000000000000000000000000000000 Crash 00100000000111111111010001100111 fascists 00000000000000000000000000000000 forbearance 00000000000000000000000000000000 vagabonds 00000000000000000000000000000000 murderers 00000000000001101000100000110011 McFarlan 01000000000000000000000000000000 aimlessly 00000000000000000000000000000000 dried-out 00000000000000000000000000000000 Fate 00100000000111011110111000001111 flower-bordered 00000000000000000000000000000000 207.4 00000000000000000000000000000000 thistles 00000000000000000000000000000000 283.3 00000000000000000000000000000000 pears 00000000000000000000000000000000 ANSA 01000000000000000000000000000000 perfumed 00000000000000000000000000000000 happiness 00000000000101101010110010100111 Venetoen 00100000000000000000000000000000 scowl 00000000000000000000000000000000 travelogues 00000000000000000000000000000000 interest-deferred 00000000000000000000000000000000 Viaje 00100000000000000000000000000000 Alcarria 00100000000000000000000000000000 scrounged 00000000000000000000000000000000 inns 00000000000111100101111011101001 Hive 00100000000000000000000000000000 Cattolica 00100000000000000000000000000000 sardonic 00000000000000000000000000000000 Dona 00100000000000000000000000000000 encrusted 00000000000000000000000000000000 filth 00000000000000000000000000000000 Ecco 00100000000000000000000000000000 Assicurazioni 00100000000000000000000000000000 excerpt 00000000000111111111100100110111 Alonso 00100000000000000000000000000000 11-week 00000000000000000000000000000000 manuscript 00000000000111110000000001100111 Cepeda 00100000000000000000000000000000 Rest 00100000000111111111111100001111 exemplary 00000000000010111100110100010000 Senorita 00100000000000000000000000000000 Elvira 00100000000000000000000000000000 4.01 00000000000000000000000000000000 hemispheric 00000000000000000000000000000000 Undoubtedly 00100000011001000000001001110010 nonintervention 00000000000000000000000000000000 assertive 00000000000000000000000000000000 McGee 01001111101001011100000010001000 Hoenlein 00100000000000000000000000000000 adventurism 00000000000000000000000000000000 Volio 00100000000000000000000000000000 categorically 00000000000000000000000000000000 wrist 00000000000110001000110000000001 unpunished 00000000000000000000000000000000 Unemployed 00100000000101001010101000110000 Wozniak 00100000000000000000000000000000 festivity 00000000000000000000000000000000 Bracknell 00100000000000000000000000000000 anti-Sandinista 01000000000000000000000000000000 sensing 00000000000110100001111010000010 meteorological 00000000000000000000000000000000 unblock 00000000000000000000000000000000 retraining 00000000000000010110001101100001 Fundamentalists 00100000000010011110100000110011 largess 00000000000000000000000000000000 non-Russian 01000000000000000000000000000000 Fittingly 00100000000000000000000000000000 Hondurans 00100000000000000000000000000000 legitimized 00000000000000000000000000000000 hobbyists 00000000000000000000000000000000 superpowers 00000000000000010000000110110011 Meteorological 00100000000000000000000000000000 Recovering 00100000000111111011100001000000 radiophonic 00000000000000000000000000000000 Esteli 00100000000000000000000000000000 Y-MP 01000000000000000000000000000000 entrenchment 00000000000000000000000000000000 75.5 00000000000000000000000000000000 much-heralded 00000000000000000000000000000000 Ricans 00100000000000000000000000000000 furrows 00000000000000000000000000000000 Daremblum 00100000000000000000000000000000 Nacion 00100000000000000000000000000000 Suites 00100000000000001111100100001001 61.4 00000000000000000000000000000000 58.8 00000000000000000000000000000000 Harrah 00100000000000000000000000000000 433.5 00000000000000000000000000000000 422.1 00000000000000000000000000000000 3.86 00000000000000000000000000000000 advancements 00000000000000000000000000000000 Sokol 00100000000000000000000000000000 95.25 00000000000000000000000000000000 commencement 00000000000000000000000000000000 Advertiser 00100000000000011001100000110101 Calls 00100000000000000000000110110010 WWOR 01000000000000000000000000000000 Tokai 00100000000000000000000000000000 nesting 00000000000000000000000000000000 co-venture 00000000000000000000000000000000 Saturdays 00100000000111100011101001100010 weeknights 00000000000000000000000000000000 GROWTH 01000000000111100000001010100111 APPEARS 01000000000000010001101000110010 matryoshka 00000000000000000000000000000000 KTXL 01000000000000000000000000000000 Armenia 00100000000110010101011101101000 324 00000000000000000000000000000000 Zeiger 00100000000000000000000000000000 seaport 00000000000000000000000000000000 Alberto 00100000000000011100001000011000 Paracchini 00100000000000000000000000000000 Shelley 00101111111101001110000100001000 cooly 00000000000000000000000000000000 BankWatch 01000000000000000000000000000000 caters 00000000000010100001101000110010 616 00000000000000000000000000000000 Suffering 00100000000101111101100001000000 counter-trade 00000000000000000000000000000000 4.46 00000000000000000000000000000000 Comvik 00100000000000000000000000000000 Kinnevik 00100000000000000000000000000000 Arfeen 00100000000000000000000000000000 Turkmenia 00100000000000000000000000000000 21.23 00000000000000000000000000000000 pigsty 00000000000000000000000000000000 Uzbekistan 00100000000000000000000000000000 12.48 00000000000000000000000000000000 Tadzhikistan 00100000000000000000000000000000 Camel 00100000000110011100100000100001 Sheehy 00101111111001100000001010001000 flotations 00000000000000000000000000000000 blades 00000000000010110111101001100011 Playskool 00100000000000000000000000000000 Hassenfeld 00100000000000000000000000000000 2.41-to-1 00000000000000000000000000000000 Scrabble 00100000000110110010001101100001 992.7 00000000000000000000000000000000 carpentry 00000000000000000000000000000000 524.5 00000000000000000000000000000000 539.4 00000000000000000000000000000000 encompassed 00000000000000000000000000000000 Whaler 00100000000000000000000000000000 Acton 00100000000111111000000101001000 Azerbaijan 00100000000110011110110001101000 734.8 00000000000000000000000000000000 650.9 00000000000000000000000000000000 dictating 00000000000000000000000000000000 1.5-mile 00000000000000000000000000000000 band-wagon 00000000000000000000000000000000 55-a-share 00000000000000000000000000000000 wrenched 00000000000000000000000000000000 spearheading 00000000000000000000000000000000 deadliest 00000000000000000000000000000000 Sorting 00100000011011101110100001000000 jackhammers 00000000000000000000000000000000 2.79-to-1 00000000000000000000000000000000 wheeled 00000000010101110101101001000000 snafus 00000000000000000000000000000000 Arrington 00100000000000000000000000000000 Spokespersons 00100000000000000000000000000000 three-stage 00000000000000000000000000000000 lighter-than-normal 00000000000000000000000000000000 tremblor 00000000000000000000000000000000 encasing 00000000000000000000000000000000 black-majority 00000000000000000000000000000000 186,000 00000000000000000000000000000000 Gods 00100000000111111011011110110011 Crusade 00100000000111110100000001100111 estuarian 00000000000000000000000000000000 multiple-column 00000000000000000000000000000000 viaducts 00000000000000000000000000000000 Burch 00100000000000000000000000000000 Bachtold 00100000000000000000000000000000 stock-for-debt 00000000000000000000000000000000 quarreling 00000000000000000000000000000000 Biedermann 00100000000000000000000000000000 7.47 00000000000000000000000000000000 white-majority 00000000000000000000000000000000 Urals 00100000000000000000000000000000 stand-by 00000000000000000000000000000000 837.5 00000000000000000000000000000000 inpenetrable 00000000000000000000000000000000 freemarket 00000000000000000000000000000000 Wieslawa 00100000000000000000000000000000 seeded 00000000000000000000000000000000 Doing 00100000000111011101000101000000 bookkeeper 00000000000000000000000000000000 credit-backing 00000000000000000000000000000000 secretarial 00000000000000000000000000000000 Amerman 00100000000000000000000000000000 proofreading 00000000000000000000000000000000 long-rumored 00000000000000000000000000000000 Shupe 00100000000000000000000000000000 Muffin 00100000000000000000000000000000 Turtle 00100000000000000000000000000000 877.6 00000000000000000000000000000000 702.4 00000000000000000000000000000000 Actively 00100000000000010111001001110010 Mainly 00100000000110001011000001110010 giggle 00000000000000000000000000000000 one-issue 00000000000000000000000000000000 opinion-makers 00000000000000000000000000000000 mattered 00000000000000000000000000000000 emigrated 00000000000000000000000000000000 Unificationism 00100000000000000000000000000000 7.17 00000000000000000000000000000000 Pro-life 00100000000000000000000000000000 wavered 00000000000000000000000000000000 tavern 00000000000111110001111010110000 automobile-parts 00000000000000000000000000000000 Amusing 00100000000011000110110110010000 counseled 00000000000000000000000000000000 veto-proof 00000000000000000000000000000000 standout 00000000000000000000000000000000 pacified 00000000000000000000000000000000 Divide 00100000000100011110101110110010 religions 00000000000000000000000000000000 Darla 00100000000000000000000000000000 dieting 00000000000000000000000000000000 evened 00000000000000000000000000000000 Moonie 00100000000000000000000000000000 non-`` 00000000000000000000000000000000 Caldwell 00100000000000000000000000000000 appeased 00000000000000000000000000000000 piroghi 00000000000000000000000000000000 gloat 00000000000000000000000000000000 glee 00000000000110111001110000000001 trimesters 00000000000000000000000000000000 unpolarizing 00000000000000000000000000000000 pre-empted 00000000000000000000000000000000 Religion 00100000000101101011110010100111 140.1 00000000000000000000000000000000 loadings 00000000000000000000000000000000 Goncharov 00100000000000000000000000000000 Overnite 00100000000000000000000000000000 427.7 00000000000000000000000000000000 3.98 00000000000000000000000000000000 456.4 00000000000000000000000000000000 402.7 00000000000000000000000000000000 4.49 00000000000000000000000000000000 search-and-examination 00000000000000000000000000000000 Gogol 00100000000000000000000000000000 Sovietized 00100000000000000000000000000000 second-guessing 00000000000000000000000000000000 state-level 00000000000000000000000000000000 MARK 01000000000111101010111100001000 RESOURCES 01000000000001100010001101001001 dreary 00000000000000000000000000000000 Disposition 00100000000111111110101001001111 reverberations 00000000000000000000000000000000 carves 00000000000000000000000000000000 inexhaustible 00000000000000000000000000000000 blandness 00000000000000000000000000000000 co-editor 00000000000000000000000000000000 Halpern 00100000000000000000000000000000 9.664 00000000000000000000000000000000 triple-B-minus 01000000000000000000000000000000 19912000 00000000000000000000000000000000 1991-1996 00000000000000000000000000000000 1997-2000 00000000000000000000000000000000 50,005,000 00000000000000000000000000000000 1990-2000 00000000000000000000000000000000 9.76 00000000000000000000000000000000 11,775,000 00000000000000000000000000000000 13,865,000 00000000000000000000000000000000 Italiana 00101111111011110100100001001000 9.13 00000000000000000000000000000000 101.90 00000000000000000000000000000000 16.59 00000000000000000000000000000000 co-publisher 00000000000000000000000000000000 Allendale 00100000000000000000000000000000 baring 00000000000011000111011000101000 Westdeutsche 00100000000000000000000000000000 sensual 00000000000000000000000000000000 8.80 00000000000000000000000000000000 17-member 00000000000000000000000000000000 Melton 00100000000000000000000000000000 computer-edited 00000000000000000000000000000000 Filtered 00100000000000000000000000000000 Dyson 00101111111111111100001000001000 sinful 00000000000000000000000000000000 wade 00001111111110101110000100001000 co-edited 00000000000000000000000000000000 Anterior 00100000000000000000000000000000 Paragon 00100000000000000000000000000000 districting 00000000000000000000000000000000 beeps 00000000000000000000000000000000 art-nouveau 00000000000000000000000000000000 Semmel 00100000000000000000000000000000 presenter 00000000000000000000000000000000 unrolls 00000000000000000000000000000000 three-to-five 00000000000000000000000000000000 'Who 01000000000000000000000000000000 Newswire 00100000000000000000000000000000 Guests 00100000000110110111110000110011 Agenda 00100000000111111110101001100111 selects 00000000000000000000000000000000 evoking 00000000000110110111001101000000 Salton 00100000000000000000000000000000 actionable 00000000000000000000000000000000 Yosi 00100000000000000000000000000000 curses 00000000000000000000000000000000 McGraw 01001111111101110001000100001000 thesaurus 00000000000000000000000000000000 I.B.M. 01000000000000000000000000000000 catered 00000000000000000000000000000000 get-togethers 00000000000000000000000000000000 Chantilly 00100000000000000000000000000000 1,800-a-year 00000000000000000000000000000000 Homebrew 00100000000000000000000000000000 abstracts 00000000000000000000000000000000 coded 00000000000000000000000000000000 three-to-five-page 00000000000000000000000000000000 1206.26 00000000000000000000000000000000 inter-office 00000000000000000000000000000000 interconnected 00000000000000000000000000000000 thousand-person 00000000000000000000000000000000 soirees 00000000000000000000000000000000 extravagant 00000000000010111000110100010000 party-giving 00000000000000000000000000000000 refine 00000000000000000000000000000000 404,294 00000000000000000000000000000000 196,785 00000000000000000000000000000000 guideposts 00000000000000000000000000000000 69,105 00000000000000000000000000000000 deserved 00000000000110111011000000010010 eloquence 00000000000000000000000000000000 666,666 00000000000000000000000000000000 corporate-bond 00000000000000000000000000000000 waitress 00000000000000000000000000000000 DILLARD 01000000000100101010110000001000 DEPARTMENT 01000000000000000000001110010101 folkish 00000000000000000000000000000000 chirpy 00000000000000000000000000000000 166.4 00000000000000000000000000000000 Samovar 00100000000000000000000000000000 city-wide 00000000000000000000000000000000 247.6 00000000000000000000000000000000 458.8 00000000000000000000000000000000 unneeded 00000000000000000000000000000000 9.03 00000000000000000000000000000000 SANTA 01000000000111101110101101110000 FE 01000000000000010000000001001000 at-large 00000000000000000000000000000000 PIPELINE 01000000000100000001111010110000 refined-petroleum-products 00000000000000000000000000000000 LIES 01000000001000100110001000110010 LOW 01000000000011000011011100010000 FALTERS 01000000000000000000000000000000 wither 00000000000000000000000000000000 Peres 00101111111110000000110010001000 renunciation 00000000000000000000000000000000 sprang 00000000000010101100001000110010 carving 00000000000011011110100001000000 Jibril 00100000000000000000000000000000 DARMAN'S 01000000000000000000000000000000 MANEUVERS 01000000000111101110110100100011 deficitcutting 00000000000000000000000000000000 miscommunication 00000000000000000000000000000000 ridicules 00000000000000000000000000000000 dissipate 00000000000000000000000000000000 paragraphing 00000000000000000000000000000000 stitched 00000000000000000000000000000000 breakthroughs 00000000000111100010011000100011 COOPERATION 01000000000111100101111010100111 WANES 01000000000000000000000000000000 Villages 00100000000110111011110001100011 BOTH 01000000000000001011011011000000 SIDES 01000000000000000100100111110011 feasts 00000000000000000000000000000000 TOPIC 01000000000111101001111101100111 Chekovian 00100000000000000000000000000000 computer-distributed 00000000000000000000000000000000 CONSERVATIVES 01000000000111101111010110110011 EXPECT 01000000000111111101000110110010 Uhlmann 00100000000000000000000000000000 Breger 00100000000000000000000000000000 Toensing 00100000000000000000000000000000 smokes 00000001011010000011000000010010 Him 00100000000000000101010001110010 Capri 00100000000000000000000000000000 ultra-thin 00000000000000000000000000000000 MC 01000000000000000000000000000000 SHIPPING 01000000001001000010110001000000 charter-shipping 00000000000000000000000000000000 church-owned 00000000000000000000000000000000 yachting 00000000000000000000000000000000 show-piece 00000000000000000000000000000000 hatbox 00000000000000000000000000000000 navigator 00000000000000000000000000000000 1,298 00000000000000000000000000000000 Stars 00100000000110101001110101100011 Stripes 00100000000100101101111101100011 fallow 00000000000000000000000000000000 Vittoria 00100000000000000000000000000000 dreaming 00000000000101011110100001000000 catamaran 00000000000000000000000000000000 90-foot 00000000000000000000000000000000 monohull 00000000000000000000000000000000 Fay 00101111111101000101001000001000 sportsmen 00000000000000000000000000000000 Hurst 00100000000000000000000000000000 smelt 00000000000000000000000000000000 four-mile 00000000000000000000000000000000 farmsteads 00000000000000000000000000000000 Atchinson 00100000000000000000000000000000 8th 00000000000000000000000000000000 appraisers 00000000000000000000000000000000 100-foot-long 00000000000000000000000000000000 Daugherty 00100000000000000000000000000000 Hiram 00100000000000000000000000000000 Kiev 00100000000000000000000000000000 restorer 00000000000000000000000000000000 trendsetter 00000000000000000000000000000000 Stanton 00101111111101101010000100001000 faulted 00000000001000101101010000110010 workmen 00000000000000000000000000000000 Sommer 00100000000000000000000000000000 Tinseltown 00100000000000000000000000000000 freakishly 00000000000000000000000000000000 Lekberg 00100000000000000000000000000000 minutiae 00000000000000000000000000000000 370.60 00000000000000000000000000000000 5.133 00000000000000000000000000000000 491.10 00000000000000000000000000000000 1.2795 00000000000000000000000000000000 stoppages 00000000000000000010100001010111 delving 00000000000000000000000000000000 Melvin 00101111111000100100001000011000 Torts 00100000000000000000000000000000 Suits 00100000000111111011110000100011 local-government 00000000000000000000000000000000 ironclad 00000000000000000000000000000000 Premiere 00100000000011001100100101100111 president-elect 00000000000000000000000000000000 6,000-member 00000000000000000000000000000000 daze 00000000000000000000000000000000 omissions 00000000000000000000000000000000 archness 00000000000000000000000000000000 50.38 00000000000000000000000000000000 99.93 00000000000000000000000000000000 publicity-conscious 00000000000000000000000000000000 code-related 00000000000000000000000000000000 Ignazio 00100000000000000000000000000000 melds 00000000000000000000000000000000 Distributed 00100000000011000000110000110010 profiled 00000000000000000000000000000000 prodigy 00000000000000000000000000000000 inaugurated 00000000000000000000000000000000 strewn 00000000000000000000000000000000 town-house 00000000000000000000000000000000 1845 00000000000000000000000000000000 committes 00000000000000000000000000000000 Start-up 00100000000000000000000000000000 Vauxhill 00100000000000000000000000000000 defection 00000000000110100111111000001111 rivaling 00000000000000000000000000000000 Amhowitz 00100000000000000000000000000000 UK 01000000000000000000000000000000 drug-policy 00000000000000000000000000000000 then-City 01000000000000000000000000000000 incarcerate 00000000000000000000000000000000 143,800 00000000000000000000000000000000 Isikoff 00100000000000000000000000000000 97.70 00000000000000000000000000000000 federal-local 00000000000000000000000000000000 disaster-prone 00000000000000000000000000000000 specifies 00000000000000000000000000000000 dusting 00000000000000000000000000000000 Preparedness 00100000000000000000000000000000 Self-sufficiency 00100000000000000000000000000000 immigrated 00000000000000000000000000000000 Absorbed 00100000001011001100010000110010 Tips 00100000000111101010110101100011 Pantyhose 00100000000000000000000000000000 slings 00000000000000000000000000000000 removable 00000000000000000000000000000000 non-Hispanic 01000000000000000000000000000000 Prompted 00100000000000010111010000110010 equipping 00000000000000000000000000000000 -unlike 00000000000000000000000000000000 Keatingland 00100000000000000000000000000000 16-story 00000000000000000000000000000000 isolates 00000000011010110001000000010010 walkie-talkies 00000000000000000000000000000000 public-address 00000000000000000000000000000000 7.33 00000000000000000000000000000000 sighed 00000000000000000000000000000000 delved 00000000000000000000000000000000 10.93 00000000000000000000000000000000 Empty 00100000000000010011110100010000 precautionary 00000000000000000000000000000000 50.45 00000000000000000000000000000000 wrested 00000000000000000000000000000000 brace 00001111111000000100101000101000 promise... 00000000000000000000000000000000 negligently 00000000000000000000000000000000 Abbe 00100000000000000000000000000000 FHLBB 01000000000000000000000000000000 MAITRE'D 01000000000000000000000000000000 CLAIMS 01000000000111101110110000100011 the... 00000000000000000000000000000000 95.22 00000000000000000000000000000000 heist 00000000000000000000000000000000 Kary 00100000000000000000000000000000 pols 00000000000000000000000000000000 svelte-looking 00000000000000000000000000000000 svelte 00000000000001110011000010010000 cripples 00000000000000000000000000000000 vases 00000000000000000000000000000000 Revision 00100000000110010111101010100111 bank-fraud 00000000000000000000000000000000 Ohio-chartered 00100000000000000000000000000000 seven-month 00000000000000000000000000000000 ALCEE 01000000000000000000000000000000 astounded 00000000000000000000000000000000 key-someone 00000000000000000000000000000000 acquittal 00000000000000000000000000000000 RICHMOND 01000000000111111111101001101000 RESIGNATIONS 01000000000101011111111000001111 Browder 00100000000000000000000000000000 Jacqueline 00100000000000000000000000000000 Epps 00100000000000000000000000000000 OBrion 01000000000000000000000000000000 NOTES 01000000000111111111111010000111 Hargrave 00100000000000000000000000000000 Devans 00100000000000000000000000000000 Boorstyn 00100000000000000000000000000000 McCutchen 01000000000000000000000000000000 Enersen 00100000000000000000000000000000 Watch 00100000001111101110101110110010 28.125 00000000000000000000000000000000 newspaper-industry 00000000000000000000000000000000 ginseng 00000000000000000000000000000000 subsistence 00000000000000000000000000000000 handstands 00000000000000000000000000000000 Ochs 00100000000000000000000000000000 Waldman 00100000000000000000000000000000 color-printing 00000000000000000000000000000000 built-from-kit 00000000000000000000000000000000 Appert 00100000000000000000000000000000 Level 00100000000111101100111001000111 34.9 00000000000000000000000000000000 34.5 00000000000000000000000000000000 encouragingly 00000000000000000000000000000000 subtraction 00000000000000000000000000000000 outleaped 00000000000000000000000000000000 brokerage-house 00000000000000000000000000000000 Garnett 00100000000000000000000000000000 bat-roost 00000000000000000000000000000000 cinch 00000000000000000000000000000000 136,800 00000000000000000000000000000000 Mateyo 00100000000000000000000000000000 councilman 00000000000000100111011110110101 198.1 00000000000000000000000000000000 honorariums 00000000000000000000000000000000 Gaining 00100000000000001000100101000000 1,235 00000000000000000000000000000000 220.45 00000000000000000000000000000000 Adlai 00100000000000000000000000000000 Goldwater 00100000000000000000000000000000 stickler 00000000000000000000000000000000 bank-baiting 00000000000000000000000000000000 Patman 00100000000000000000000000000000 vices 00000000000000000000000000000000 D'Amato 01000000000111000000111010001000 BANCORP 01000000000000001011010001001000 Alfonse 00100000000000000000000000000000 blackjack 00000000000000000000000000000000 535 00000000000000000000000000000000 tenaciously 00000000000000000000000000000000 no-no 00000000000000000000000000000000 corroborate 00000000000000000000000000000000 DiLorenzo 01000000000000000000000000000000 mid-to-late 00000000000000000000000000000000 majority-party 00000000000000000000000000000000 incumbency 00000000000111101010011110100001 intersections 00000000000000000000000000000000 Republican-governor 00100000000000000000000000000000 cross-state 00000000000000000000000000000000 econometric 00000000000000101011000000110000 benefactor 00000000000000000000000000000000 Zupan 00100000000000000000000000000000 finite 00000000000000000000000000000000 67-31 00000000000000000000000000000000 Reversing 00100000000111111110001101000000 191.2 00000000000000000000000000000000 EDA 01000000000000000000000000000000 stockyards 00000000000000000000000000000000 apprehension 00000000000110001110111010100111 Seldom 00100000000101100000001001110010 Seville 00100000000000000000000000000000 620.5 00000000000000000000000000000000 redistricting 00000000000000000000000000000000 Watching 00100000000111000001110101000000 grimace 00000000000000000000000000000000 labors 00000000000000000000000000000000 anguished 00000000000000000000000000000000 darker 00000000000000000000000000000000 trekked 00000000000000000000000000000000 Eliminate 00100000000111001111111110110010 revels 00000000000000000000000000000000 busload 00000000000000000000000000000000 winking 00000000000000000000000000000000 epiphany 00000000000000000000000000000000 confreres 00000000000000000000000000000000 undid 00000000000000000000000000000000 Hasidic 00100000000000000000000000000000 disposes 00000000000000000000000000000000 impound 00000000000000000000000000000000 foxes 00000000000000000000000000000000 straitjacket 00000000000000000000000000000000 earthquake-ravaged 00000000000000000000000000000000 45-member 00000000000000000000000000000000 0.30 00000000000000000000000000000000 tallied 00000000000000000000000000000000 Binghamton 00100000000000000000000000000000 downpayments 00000000000000000000000000000000 tallies 00000000000000000000000000000000 inputs 00000000000000000000000000000000 off-line 00000000000000000000000000000000 Securities-trading 00100000000000000000000000000000 global-funds 00000000000000000000000000000000 Mundo 00100000000000000000000000000000 twotiered 00000000000000000000000000000000 Rusty 00100000000000000000000000000000 facades 00000000000000000000000000000000 Noticias 00100000000000000000000000000000 subterranean 00000000000000000000000000000000 131.64 00000000000000000000000000000000 3411.08 00000000000000000000000000000000 Uruguay 00100000000000011010101000110000 fissures 00000000000000000000000000000000 facings 00000000000000000000000000000000 Beaux 00100000000000000000000000000000 skirts 00000000001101101111000000010010 wreaking 00000000000000000000000000000000 shattering 00000000000111101101010001000000 picturesquely 00000000000000000000000000000000 scratched 00000000000000000000000000000000 fender 00000000000000000000000000000000 highway-relief 00000000000000000000000000000000 diminishes 00000000000000000000000000000000 800-462-9029 00000000000000000000000000000000 pandemonium 00000000000000000000000000000000 overflow 00000000000000000011111001100111 flotilla 00000000000000000000000000000000 predawn 00000000000000000000000000000000 all-too-familiar 00000000000000000000000000000000 215.35 00000000000000000000000000000000 5.86 00000000000000000000000000000000 Sann 00100000000000000000000000000000 Recall 00100000000111001011110110110010 anti-Somoza 01000000000000000000000000000000 Laos 00100000000000000000000000000000 Encouraging 00100000000000000011110101000000 Tse-tung 00100000000000000000000000000000 1236.66 00000000000000000000000000000000 overseers 00000000000000000000000000000000 135,860,000 00000000000000000000000000000000 conscript 00000000000000000000000000000000 malaria 00000000000000000000000000000000 malnourishment 00000000000000000000000000000000 unsurpassed 00000000000000000000000000000000 tyranny 00000000000000000000000000000000 utopians 00000000000000000000000000000000 PARENT 01000000000111111100010000110101 Cambodians 00100000000000000000000000000000 Surgical 00100000000000001100101010110000 Pol 00100000000000000000000000000000 Pot 00100000000110001101100101100111 holed 00000000000000000000000000000000 Thai-Cambodian 01000000000000000000000000000000 Policies 00100000000111111100111100100011 Indochina 00100000000000000000000000000000 Fight 00100000000111111101110010110111 Valery 00100000000000000000000000000000 tangoed 00000000000000000000000000000000 rearm 00000000000000000000000000000000 Laurance 00100000000000000000000000000000 redrawn 00000000000000000000000000000000 AIR'S 01000000000000000000000000000000 procreation 00000000000000000000000000000000 Lobsenz 00100000000000000000000000000000 small-incision 00000000000000000000000000000000 88.1 00000000000000000000000000000000 pinstripe-suited 00000000000000000000000000000000 half-share 00000000000000000000000000000000 hightailing 00000000000000000000000000000000 chauffeur-driven 00000000000000000000000000000000 limousines 00000000000000000000000000000000 carpetbaggers 00000000000000000000000000000000 twang 00000000000000000000000000000000 299 00000000000000000000000000000000 Crosse 00100000000000000000000000000000 xenophobic 00000000000000000000000000000000 774,000 00000000000000000000000000000000 swagger 00000000000000000000000000000000 deprogrammings 00000000000000000000000000000000 GERMANY'S 01000000000000000000000000000000 Barlow 00100000000000000000000000000000 outlanders 00000000000000000000000000000000 parasites 00000000000000000000000000000000 most-jingoistic 00000000000000000000000000000000 hails 00000000000000000000000000000000 97.2 00000000000000000000000000000000 Carolinians 00100000000000000000000000000000 Ohioans 00100000000000000000000000000000 out-of-staters 00000000000000000000000000000000 distinctiveness 00000000000000000000000000000000 Klineberg 00100000000000000000000000000000 iced-tea 00000000000000000000000000000000 Cliffs 00100000000000100110100010100101 dock-siders 00000000000000000000000000000000 paddleball 00000000000000000000000000000000 Buksbaum 00100000000000000000000000000000 stereotypical 00000000000000000000000000000000 Pro 00100000011111001010010000010000 tear-jerking 00000000000000000000000000000000 F.S.B. 01000000000000000000000000000000 anthem 00000000000000000000000000000000 Perelman 00101111111101111000001010001000 Texasness 00100000000000000000000000000000 outsell 00000000000000000000000000000000 burnouts 00000000000000000000000000000000 Galles 00100000000000000000000000000000 buddies 00000000000000000000000000000000 Morino 00100000000000000000000000000000 Defections 00100000000111101010000010100111 lifestyle 00000000000000000000000000000000 ad-agency 00000000000000000000000000000000 most-strident 00000000000000000000000000000000 anti-outsider 00000000000000000000000000000000 Commercials 00100000000101001111110101100011 heart-rending 00000000000000000000000000000000 chest-swelling 00000000000000000000000000000000 ain't-it-great-to-be-a-Texan 01000000000000000000000000000000 Independents 00100000000111110100111000110011 introductory 00000000000001101110010100010000 Alamo 00100000000000000000000000000000 fajitas 00000000000000000000000000000000 mince 00000000000000000000000000000000 sniff 00000000000000000000000000000000 howdy 00000000000000000000000000000000 y'all 00000000000000000000000000000000 cowboy 00000000000000100001101100100001 Duquesne 00100000000000000000000000000000 3436.58 00000000000000000000000000000000 Waring 00100000000000000000000000000000 LaRosa 01000000000000000000000000000000 MEDIA 01000000000000000011001010110000 POLICY 01000000000110001000000011111001 MacNamara 01001111110111110101001000001000 Clapp 00100000000000000000000000000000 385 00000000000000000000000000000000 14.4 00000000000000000000000000000000 micoprocessors 00000000000000000000000000000000 Poyner 00100000000000000000000000000000 Vegetables 00100000000111001010111001100011 Gunmen 00100000000000001100100000110011 78,600 00000000000000000000000000000000 foreign-car 00000000000000000000000000000000 African-controlled 00100000000000000000000000000000 Centrale 00100000000000000000000000000000 Transol 00100000000000000000000000000000 Koreagate 00100000000000000000000000000000 35.125 00000000000000000000000000000000 Watergate-beleaguered 00100000000000000000000000000000 Transatlantic 00100000000001001000001010110000 Hennessy 00101111111001101000100010001000 KRENZ 01000000000000000000000000000000 319,000 00000000000000000000000000000000 114.2 00000000000000000000000000000000 112.2 00000000000000000000000000000000 323.4 00000000000000000000000000000000 357.2 00000000000000000000000000000000 3.48 00000000000000000000000000000000 IranU.S 01000000000000000000000000000000 Tribunal 00100000000100101111000001010101 8.88 00000000000000000000000000000000 Transformers 00100000000000000000000000000000 ENGLAND 01000000000000010101011110000010 CRITICAL 01000000000000011000011000010000 pickles 00000000000000000000000000000000 52.50 00000000000000000000000000000000 Periods 00100000000111100101101001000111 Westburne 00100000000000000000000000000000 21.98 00000000000000000000000000000000 relocating 00000000000000000000000000000000 201,028 00000000000000000000000000000000 quake-prone 00000000000000000000000000000000 razed 00000000000000000000000000000000 publicity-seeking 00000000000000000000000000000000 Grubb 00101111111100101111111010101000 Residential 00100000000000001111010000110000 little-publicized 00000000000000000000000000000000 anticult 00000000000000000000000000000000 state-funded 00000000000000000000000000000000 elswehere 00000000000000000000000000000000 413 00000000000000000000000000000000 earthquake-proof 00000000000000000000000000000000 NATIONWIDE 01000000000000000001000001000111 1973-75 00000000000000000000000000000000 708,000 00000000000000000000000000000000 25-cent-a-share 00000000000000000000000000000000 reapportion 00000000000000000000000000000000 1937-40 00000000000000000000000000000000 Thermal 00100000000101011100101010110000 technology-licensing 00000000000000000000000000000000 drop-out 00000000000000000000000000000000 Guerrilla 00100000000000010001011000110000 one-sixth 00000000000000000000000000000000 129.91 00000000000000000000000000000000 stock-appreciation 00000000000000000000000000000000 471.6 00000000000000000000000000000000 178.0 00000000000000000000000000000000 515.4 00000000000000000000000000000000 63,971 00000000000000000000000000000000 sauerkraut 00000000000000000000000000000000 61,493 00000000000000000000000000000000 Laundered 00100000000000000000000000000000 US116.7 01000000000000000000000000000000 Harbanse 00100000000000000000000000000000 Vancouver-based 00100000000000000000000000000000 interprovincial 00000000000000000000000000000000 Territories 00100000000000111100101111100011 investor-owned 00000000000000000000000000000000 279.8 00000000000000000000000000000000 4.88 00000000000000000000000000000000 CoastAmerica 01000000000000000000000000000000 Mid 00100000000111111000110110101000 830.5 00000000000000000000000000000000 301.9 00000000000000000000000000000000 582.6 00000000000000000000000000000000 Surety 00100000000000000000000000000000 309.3 00000000000000000000000000000000 RTC-appointed 01000000000000000000000000000000 smokehouse 00000000000000000000000000000000 125.7 00000000000000000000000000000000 10,300 00000000000000000000000000000000 31.8 00000000000000000000000000000000 1928-33 00000000000000000000000000000000 l'Ouest 01000000000000000000000000000000 Africaine 00100000000000000000000000000000 101.5 00000000000000000000000000000000 WARNED 01000000000111011111110111000010 optical-disk 00000000000000000000000000000000 laser-read 00000000000000000000000000000000 videodisks 00000000000000000000000000000000 videodisk 00000000000000000000000000000000 optically 00000000000000000000000000000000 Fiedler 00100000000000000000000000000000 7,400 00000000000000000000000000000000 663,000 00000000000000000000000000000000 0.76 00000000000000000000000000000000 35374.22 00000000000000000000000000000000 841 00000000000000000000000000000000 645-293 00000000000000000000000000000000 170.65 00000000000000000000000000000000 35544.87 00000000000000000000000000000000 0.86 00000000000000000000000000000000 2665.66 00000000000000000000000000000000 Sentiment 00100000000111100110111010100111 Murai 00100000000000000000000000000000 Tustin 00100000000000000000000000000000 415.8 00000000000000000000000000000000 rotated 00000000111001110010110000110010 1,930 00000000000000000000000000000000 13.64 00000000000000000000000000000000 4,170 00000000000000000000000000000000 Eisai 00100000000000000000000000000000 Enhancements 00100000000111111110001010100011 2,610 00000000000000000000000000000000 2,940 00000000000000000000000000000000 2,490 00000000000000000000000000000000 hailing 00000000000000000000000000000000 Kumagai-Gumi 01000000000000000000000000000000 1,490 00000000000000000000000000000000 2,890 00000000000000000000000000000000 788 00000000000000000000000000000000 despicable 00000000000000000000000000000000 Mugabe 00100000000000000000000000000000 861 00000000000000000000000000000000 2189.3 00000000000000000000000000000000 1772.1 00000000000000000000000000000000 382.9 00000000000000000000000000000000 theocracy 00000000000000000000000000000000 building-related 00000000000000000000000000000000 10.44 00000000000000000000000000000000 Storehouse 00100000000101001011101100101000 abounding 00000000000000000000000000000000 10.13 00000000000000000000000000000000 21.33 00000000000000000000000000000000 coast-to-coast 00000000000000000000000000000000 name-calling 00000000000000000000000000000000 ticked 00000000000000000000000000000000 Iranians 00100000000111101110101110110011 messiah 00000000000000000000000000000000 Rafsanjani 00101111111011011000001010001000 hatchet 00000000000000000000000000000000 Alameda 00100000000000000000000000000000 211,666 00000000000000000000000000000000 reshape 00000000000101100110111110110010 Opportunities 00100000000010001001101110100011 accessory 00000000000000000000000000000000 cottages 00000000000000000000000000000000 home-sharing 00000000000000000000000000000000 sale-lease-back 00000000000000000000000000000000 650,000 00000000000000000000000000000000 temporal 00000000000000000000000000000000 militias 00000000000000001000100000110011 SURGED 01000000000000000101000100110010 management-pilots 00000000000000000000000000000000 squandered 00000000000000000000000000000000 molding 00000000000000000000000000000000 Borrowed 00100000000001000100010000110010 1263.51 00000000000000000000000000000000 15.64 00000000000000000000000000000000 215.42 00000000000000000000000000000000 3398.65 00000000000000000000000000000000 130.13 00000000000000000000000000000000 0.23 00000000000000000000000000000000 130.46 00000000000000000000000000000000 0.0015 00000000000000000000000000000000 renewals 00000000000000000000000000000000 Testament-style 00100000000000000000000000000000 AFTERSHOCKS 01000000000000000000000000000000 RATTLED 01000000000000000000000000000000 5.0 00000000000000000000000000000000 still-limited 00000000000000000000000000000000 razing 00000000000000000000000000000000 837 00000000000000000000000000000000 Guildford 00100000000000000000000000000000 Irishmen 00100000000000000000000000000000 Englishwoman 00100000000000000000000000000000 Pascual 00100000000000000000000000000000 authoritative 00000000000000000000000000000000 Lutheran 00100000000000000000000000000000 conferred 00000001110011110110010000110010 Greifswald 00100000000000000000000000000000 Jiri 00100000000000000000000000000000 Hajak 00100000000000000000000000000000 Syrian-backed 00100000000000000000000000000000 Vaclav 00100000000000000000000000000000 Havel 00100000000000000000000000000000 furthering 00000000000000000000000000000000 unerringly 00000000000000000000000000000000 Christianity 00100000000000000000000000000000 Explosions 00100000000110110101100110001001 touchdown 00000000000000000000000000000000 Rebel 00100000000001110001011000110000 artillerists 00000000000000000000000000000000 airlifting 00000000000000000000000000000000 shrouded 00000000000000000000000000000000 Khost 00100000000000000000000000000000 Assad 00101111110000001010110110001000 jurist 00000000000000000000000000000000 disassociate 00000000000000000000000000000000 1.5990 00000000000000000000000000000000 Fog 00100000000101010000110000000001 141.93 00000000000000000000000000000000 40,800 00000000000000000000000000000000 Beame 00100000000000000000000000000000 commonality 00000000000000000000000000000000 decelerated 00000000000000000000000000000000 sale-purchase 00000000000000000000000000000000 Altair 00100000000000000000000000000000 psychologically 00000000010101101000000001110010 pro-mark 00000000000000000000000000000000 Jupiter-bound 00100000000000000000000000000000 367.10 00000000000000000000000000000000 366.85 00000000000000000000000000000000 1954 00000000000000000000000000000000 Excluded 00100100100111010100010000110010 home-care 00000000000000000000000000000000 Szuros 00100000000000000000000000000000 5.44 00000000000000000000000000000000 evangelist-industrialist 00000000000000000000000000000000 diversifications 00000000000000000000000000000000 torch-lit 00000000000000000000000000000000 roughed 00000000000000000000000000000000 lifes 00000000000000000000000000000000 anti-Stalinist 01000000000000000000000000000000 Myung 00100000000000000000000000000000 preparer 00000000000000000000000000000000 8%-10 00000000000000000000000000000000 goblins 00000000000000000000000000000000 home-computer 00000000000000000000000000000000 Symbol:HRB 01000000000000000000000000000000 Preparation 00100000000111111111011100111001 899.6 00000000000000000000000000000000 145,954 00000000000000000000000000000000 commemorated 00000000000000000000000000000000 PUTS 01000000000010000011000000010010 CALLS 01000000000000000000000110110010 PATOIS 01000000000000000000000000000000 chafed 00000000010101011110001000110010 livestock-dealing 00000000000000000000000000000000 all-options 00000000000000000000000000000000 beginnings 00000000000101000111111000001111 lunchroom 00000000000000000000000000000000 Puts 00100000000010000011000000010010 Rescue 00100000000000001000011110110111 minimum-fee 00000000000000000000000000000000 Helm 00100000000110010111111000001111 snarls 00000000000000000000000000000000 orthodoxy 00000000000000000000000000000000 BATTLED 01000000000111000101010000110010 setters 00000000000000000101000011100111 health-care-product 00000000000000000000000000000000 Cichan 00100000000000000000000000000000 730.1 00000000000000000000000000000000 679.5 00000000000000000000000000000000 52.75 00000000000000000000000000000000 106.7 00000000000000000000000000000000 Cecelia 00100000000000000000000000000000 stock-selection 00000000000000000000000000000000 monomer 00000000000000000000000000000000 105.2 00000000000000000000000000000000 8.525 00000000000000000000000000000000 8.425 00000000000000000000000000000000 9.87 00000000000000000000000000000000 97-nation 00000000000000000000000000000000 trade-liberalizing 00000000000000000000000000000000 world-commerce 00000000000000000000000000000000 Zhaoxing 00100000000000000000000000000000 Nationalist 00100000000101000001011000110000 Chiang 00101111110100101100100000001000 Kai-shek 00100000000000000000000000000000 Nationalists 00100000000111111110000110110011 preclearance 00000000000000000000000000000000 Jiotto 00100000000000000000000000000000 Caspita 00100000000000000000000000000000 213,000 00000000000000000000000000000000 Caspita-brand 00100000000000000000000000000000 COMMUTERS 01000000000000000000000000000000 960,000 00000000000000000000000000000000 Sonia 00100000000000000000000000000000 estranged 00000000000000000000000000000000 NTSB 01000000000000000000000000000000 Ripper 00100000000000000000000000000000 libeled 00000000000000000000000000000000 451 00000000000000000000000000000000 130-unit 00000000000000000000000000000000 34-floor 00000000000000000000000000000000 386,000 00000000000000000000000000000000 Chernobyl-type 00100000000000000000000000000000 reassessing 00000000000000000000000000000000 Viktor 00100000000000000000000000000000 Sidorenko 00100000000000000000000000000000 Kursk 00100000000000000000000000000000 Smolensk 00100000000000000000000000000000 Byelorussia 00100000000000000000000000000000 AREA 01000000000111101110011001100111 BAY 01000000000000000001010010100101 Beng 00100000000000000000000000000000 preflight 00000000000000000000000000000000 dispersing 00000000000000000000000000000000 U.N.-backed 01000000000000000000000000000000 Anti-Ballistic 01000000000000000000000000000000 Oxford 00100000000100000111111000101000 Superstitions 00100000000000000000000000000000 Kaitaia 00100000000000000000000000000000 phone-company 00000000000000000000000000000000 lower-volume 00000000000000000000000000000000 PTL 01000000000000000000000000000000 82-day 00000000000000000000000000000000 161-day 00000000000000000000000000000000 Comanche 00100000000000000000000000000000 Pro-Iranian 01000000000000000000000000000000 ADMITTED 01000000000011101001110111000010 Jeep-Eagle 01000000000000000000000000000000 20. 00000000000000000000000000000000 proportional 00000000000000000000000000000000 non-Jewish 01000000000000000000000000000000 championing 00000000000000000000000000000000 4,320 00000000000000000000000000000000 SHEVARDNADZE 01001111111111100000110010001000 non-recourse 00000000000000000000000000000000 143,178 00000000000000000000000000000000 162,190 00000000000000000000000000000000 142,117 00000000000000000000000000000000 r-Revised 01000000000000000000000000000000 LOTUS 01000000000100110010100100101000 DEVELOPMENT 01000000000011000000101001100001 71.6 00000000000000000000000000000000 482.3 00000000000000000000000000000000 393.1 00000000000000000000000000000000 kidnappers 00000000000111000110011110110011 captives 00000000000000000000000000000000 VIACOM 01000000000111101001010100101000 lease-rental 00000000000000000000000000000000 909 00000000000000000000000000000000 150,000-barrel-a-day 00000000000000000000000000000000 octane 00000000000000000000000000000000 disclaims 00000000000000000000000000000000 dismantling 00000000000100101111010001000000 refurbish 00000000000000000000000000000000 feedstock 00000000000000000000000000000000 19.8 00000000000000000000000000000000 Braking 00100000000000001010110001000000 Engineered 00100000000100100001101001000000 Fabrics 00100000000000000011011111001001 RTS 01000000000000000000000000000000 ALQ-178 01000000000000000000000000000000 Rapport 00100000000000000000000000000000 35500.64 00000000000000000000000000000000 295.7 00000000000000000000000000000000 293.9 00000000000000000000000000000000 36.4 00000000000000000000000000000000 528.4 00000000000000000000000000000000 549.9 00000000000000000000000000000000 Bookings 00100000000000000000010100011001 432 00000000000000000000000000000000 EMPIRE 01000000000111110000100100100001 PENCIL 01000000000110101100110000000001 Empire-Berol 01000000000000000000000000000000 fiscal-third 00000000000000000000000000000000 557,000 00000000000000000000000000000000 Cartridge 00100000000000000000000000000000 cartridges 00000000000000000000000000000000 750th 00000000000000000000000000000000 232.6 00000000000000000000000000000000 682.7 00000000000000000000000000000000 614.6 00000000000000000000000000000000 Echelon 00100000000000000000000000000000 63.79 00000000000000000000000000000000 steam-generating 00000000000000000000000000000000 Energie 00100000000000000000000000000000 Verfahrenstechnik 00100000000000000000000000000000 Baltimore-Washington 01000000000000000000000000000000 Kaolin 00100000000000000000000000000000 Unimin 00100000000000000000000000000000 446,000 00000000000000000000000000000000 unincorporated 00000000000000000000000000000000 self-explanatory 00000000000000000000000000000000 stock-holding 00000000000000000000000000000000 househld 00000000000000000000000000000000 asseet 00000000000000000000000000000000 Primary 00100000000000000110010011010000 Durables 00100000000100101110010011001001 Automobiles 00100000000110101111111001100011 checking-account 00000000000000000000000000000000 Excludes 00100000001001100001000000010010 Unincorporated 00100000000000000000000000000000 proprietorships 00000000000000000000000000000000 charred 00000000010011100101101001000000 50.8 00000000000000000000000000000000 less-binding 00000000000000000000000000000000 918.4 00000000000000000000000000000000 806.7 00000000000000000000000000000000 music-entertainment 00000000000000000000000000000000 book-publishing 00000000000000000000000000000000 aloud 00000000000000000000000000000000 California-backed 00100000000000000000000000000000 120.1 00000000000000000000000000000000 89.2 00000000000000000000000000000000 Impasse 00100000000111111011101000100111 Till 00100000000000010110000000101010 evens 00000000000000000000000000000000 devouring 00000000000000000000000000000000 Tremendae 00100000000000000000000000000000 effete 00000000000000000000000000000000 Tyrannosaurus 00100000000000000000000000000000 Cretaceous 00100000000000000000000000000000 Reproduced 00100000000000000000000000000000 meat-processing 00000000000000000000000000000000 deriving 00000000000000000000000000000000 608,413 00000000000000000000000000000000 shuttering 00000000000000000000000000000000 Briarcliff 00100000000000000000000000000000 Manor 00100000000101100001100000110000 white-walled 00000000000000000000000000000000 linear 00000000000100010000101100101000 rumbles 00000000000000000000000000000000 35564.43 00000000000000000000000000000000 scurries 00000000000000000000000000000000 Reformed 00100000000010111110101001000000 saucers 00000000000000000000000000000000 wastepaper 00000000000000000000000000000000 squeegee 00000000000000000000000000000000 storeroom 00000000000000000000000000000000 Bran 00100000000000000000000000000000 D.,Calif. 01000000000000000000000000000000 trembling 00000000000000000000000000000000 Johannesburg 00100000000100100011111001101000 storming 00000000000000000000000000000000 IMSAI 01000000000000000000000000000000 Oat 00100000000000110111101110110000 Dutch-descended 00100000000000000000000000000000 26-7 00000000000000000000000000000000 Original 00100000000000000000010011010000 card-carrying 00000000000000000000000000000000 loony 00000000000100100110011000110000 unhindered 00000000000000000000000000000000 theologians 00000000000000000000000000000000 Johan 00100000000000000000000000000000 Fifteenth 00100000000101111011100011010000 crawls 00000000000000000000000000000000 planter 00000000000000000000000000000000 U.N.-supervised 01000000000000000000000000000000 sunflowers 00000000000000000000000000000000 townhouses 00000000000000000000000000000000 Alida 00100000000000000000000000000000 Willem 00100000000000000000000000000000 Heerden 00100000000000000000000000000000 Morfey 00100000000000000000000000000000 slave 00000000000110111110101001000000 comforts 00000000000000000000000000000000 sincerely 00000000000000000000000000000000 Pieter 00100000000000000000000000000000 Bruwer 00100000000000000000000000000000 scribe 00000000000000000000000000000000 pamphleteer 00000000000000000000000000000000 8,100 00000000000000000000000000000000 Afrikanerdom 00100000000000000000000000000000 reside 00000000000000000000000000000000 Weeds 00100000000110100111110010100111 storefronts 00000000000000000000000000000000 shantytown 00000000000000000000000000000000 whitewalled 00000000000000000000000000000000 650-or-so 00000000000000000000000000000000 67,400 00000000000000000000000000000000 Impossible 00100000000111101101011110010000 Conradie 00100000000000000000000000000000 Rudi 00100000000000000000000000000000 Dyk 00100000000000000000000000000000 B.C.-based 01000000000000000000000000000000 nuclear-weapons 00000000000000000000000000000000 apologizes 00000000000000000000000000000000 Okay 00100000000111110011110110010000 immediate-response 00000000000000000000000000000000 droplets 00000000000000000000000000000000 overcommitted 00000000000000000000000000000000 prune 00000000000000000000000000000000 thought-out 00000000000000000000000000000000 GET 01000000000111111010101110110010 RID 01000000000000000000111000101111 DOGS 01000000000000101111110101100011 Sell 00100000000111111110001110110010 WATCH 01000000001111101110101110110010 DISAPPOINTMENTS 01000000000111111100010000000011 ingenuity 00000000000000000000000000000000 cautionary 00000000000101011101000000010000 Substituting 00100000000111100001111101000000 BEWARE 01000000000111101111001000101111 HEAVY 01000000000000000010011100010000 DEBT 01000000000000000000000010110001 stooges 00000000000000000000000000000000 Bailard 00100000000000000000000000000000 SELL 01000000000111111110001110110010 WHISPER 01000000000000000000000000000000 COMPARE 01000000000111001011011110110010 brewed 00000000000000000000000000000000 RATIOS 01000000000111111010111001000111 WITH 01000000000000000000001000001010 PROSPECTS 01000000000111111111111100111001 slavishly 00000000000000000000000000000000 EXAMINE 01000000000111011110011110110010 Braumeisters 00100000000000000000000000000000 spokeman 00000000000000000000000000000000 Oswald 00100000000000000000000000000000 Eiszner 00100000000000000000000000000000 Shipley 00100000000000000000000000000000 rocket-like 00000000000000000000000000000000 ruinous 00000000000000000000000000000000 234.4 00000000000000000000000000000000 foreign-country 00000000000000000000000000000000 Tillery 00100000000000000000000000000000 0.92 00000000000000000000000000000000 well-regarded 00000000000000000000000000000000 Lech 00100000000000000000000000000000 Crowley 00101111111111011001001000001000 Beise 00100000000000000000000000000000 Walesa 00100000000000110000111010001000 ex-president 00000000000000000000000000000000 4.23 00000000000000000000000000000000 3.91 00000000000000000000000000000000 P* 00100000000000000000000000000000 17.47 00000000000000000000000000000000 71.36 00000000000000000000000000000000 833 00000000000000000000000000000000 Babel 00100000000000000000000000000000 dumbest 00000000000000000000000000000000 ad-hoc 00000000000000000000000000000000 Cost-effective 00100000000000000000000000000000 Piszczalski 00100000000000000000000000000000 hooking 00000000000000000000000000000000 hookups 00000000000000000000000000000000 computer-integrated 00000000000000000000000000000000 Hillsboro 00100000000000000000000000000000 luster 00000000000100100111110100100111 panacea 00000000000000000000000000000000 banish 00000000000000000000000000000000 GROWING 01000000000000000001010001000000 interfered 00000000010110110110010000110010 Artzt 00100000000000000000000000000000 31-cent 00000000000000000000000000000000 hulking 00000000000000000000000000000000 mare-COOR 01000000000000000000000000000000 967,809 00000000000000000000000000000000 6,320 00000000000000000000000000000000 808.3 00000000000000000000000000000000 enticing 00000000000000000000000000000000 bargelike 00000000000000000000000000000000 commissioning 00000000000100110001111101000000 stewardship 00000000000000000000000000000000 foundered 00000000101001000110001000110010 double-wing 00000000000000000000000000000000 807.6 00000000000000000000000000000000 Merkurs 00100000000000000000000000000000 15,261 00000000000000000000000000000000 downhill 00000000000000000000000000000000 Hoot 00100000000000000000000000000000 McInerney 01000000000000000000000000000000 Lincoln-Mercury-Merkur 01000000000000000000000000000000 4,600 00000000000000000000000000000000 SWUNG 01000000000000010101101000110010 20.25 00000000000000000000000000000000 Canada-U.S. 01000000000000000000000000000000 Chicago-Montreal 01000000000000000000000000000000 398,000 00000000000000000000000000000000 407.9 00000000000000000000000000000000 433.2 00000000000000000000000000000000 131.01 00000000000000000000000000000000 52.1 00000000000000000000000000000000 earring 00000000000000000000000000000000 resort-casino 00000000000000000000000000000000 299,000 00000000000000000000000000000000 34-a-share 00000000000000000000000000000000 Lynne 00100000000000000000000000000000 934.7 00000000000000000000000000000000 6.23 00000000000000000000000000000000 PLASTIC 01000000000000100010101010110000 PENCILS 01000000001010011111110101100011 CODE-NAMED 01000000000000000000000000000000 E-71 00100000000000000000000000000000 hush-hush 00000000000000000000000000000000 five-and-dime 00000000000000000000000000000000 Shelbyville 00100000000000000000000000000000 A.D.L. 01000000000000000000000000000000 981.7 00000000000000000000000000000000 food-services 00000000000000000000000000000000 coextrude 00000000000000000000000000000000 sheaths 00000000000000000000000000000000 graphite-plastic 00000000000000000000000000000000 cores 00000000000000000000000000000000 eraser-fitted 00000000000000000000000000000000 sharpens 00000000000000000000000000000000 slivered 00000000000000000000000000000000 cleanly 00000000000000000000000000000000 constrains 00000000000000000000000000000000 3-type 00000000000000000000000000000000 draftsmen 00000000000000000000000000000000 Eagle-Berol 01000000000000000000000000000000 Legislating 00100000000000000000000000000000 128.1 00000000000000000000000000000000 134.2 00000000000000000000000000000000 68.4 00000000000000000000000000000000 67.9 00000000000000000000000000000000 188.7 00000000000000000000000000000000 155.3 00000000000000000000000000000000 53.75 00000000000000000000000000000000 overpurchase 00000000000000000000000000000000 375.9 00000000000000000000000000000000 yield-management 00000000000000000000000000000000 optimum 00000000000000000000000000000000 Wheeling-Pittsburgh 01000000000000000000000000000000 60-inch 00000000000000000000000000000000 Allenport 00100000000000000000000000000000 143.4 00000000000000000000000000000000 Plastow 00100000000000000000000000000000 finery 00000000000000000000000000000000 146.3 00000000000000000000000000000000 cutouts 00000000001001101011110101100011 CB-radio-style 01000000000000000000000000000000 Sausalito 00100000000000000000000000000000 liveliest 00000000000000000000000000000000 teemed 00000000000000000000000000000000 first-hand 00000000000000000000000000000000 Daylight 00100000000000000000000000000000 initials 00000000000000000000000000000000 11:54 00000000000000000000000000000000 JCKC 01000000000000000000000000000000 Wow 00100000000011101000110100101000 Beat 00100000000111000110101110110010 BEAT 01000000000111000110101110110010 1210.70 00000000000000000000000000000000 297.1 00000000000000000000000000000000 JKD 01000000000000000000000000000000 glanced 00000000000000000000000000000000 25.96 00000000000000000000000000000000 mouthed 00000000000000000000000000000000 Earth-quake 00100000000000000000000000000000 12:06 00000000000000000000000000000000 HRH 01000000000000000000000000000000 Endless 00100000000001000110110100010000 shower 00000000000100111101111000000001 evil-looking 00000000000000000000000000000000 12:07 00000000000000000000000000000000 ONEZIE 01000000000000000000000000000000 Hustead 00100000000000000000000000000000 Towing 00100000000000000000000000000000 12:15 00000000000000000000000000000000 DHAWK 01000000000000000000000000000000 187.1 00000000000000000000000000000000 three-story 00000000000000000000000000000000 12:38 00000000000000000000000000000000 DAYAC 01000000000000000000000000000000 Alcatraz 00100000000000000000000000000000 Oakland-Berkeley 01000000000000000000000000000000 12:48 00000000000000000000000000000000 LMEYER 01000000000000000000000000000000 pier 00000000000000011001110110110000 hairline 00000000000000000000000000000000 Ruined 00100000001111011101101001000000 1:00 00000000000000000000000000000000 HEYNOW 01000000000000000000000000000000 Matamoros 00100000000000000000000000000000 Spreads 00100000000100000111001000100011 stilts 00000000000000000000000000000000 Richmond-San 01000000000000000000000000000000 265,000-square-foot 00000000000000000000000000000000 SQUIBB 01000000000011111100111100101000 RD 01000000000000000000000000000000 typed 00000000000000000000000000000000 1:20 00000000000000000000000000000000 DGAULT 01000000000000000000000000000000 BRISTOL-MYERS 01000000000000000000000000000000 57.9 00000000000000000000000000000000 swarms 00000000000000000000000000000000 -had 00000000000000000000000000000000 SAMURAI 01000000000010001110111000000001 numb 00000000000000000000000000000000 MACPOST 01000000000000000000000000000000 Downtown 00100000000000101000001000110000 17.39 00000000000000000000000000000000 Co-op 00100000000000000000000000000000 quivers 00000000000000000000000000000000 Stinson 00100000000000000000000000000000 rougher 00000000000000000000000000000000 oozing 00000000000000000000000000000000 Puritan 00100000000000000000000000000000 4:02 00000000000000000000000000000000 SHIBUMI 01000000000000000000000000000000 UCSF 01000000000000000000000000000000 triage 00000000000000000000000000000000 KIM 01001111111000101000010100001000 Cupboard 00100000000000000000000000000000 scooted 00000000000000000000000000000000 nixed 00000000000000000000000000000000 shivering 00000000000100000111000001000000 JROE 01000000000000000000000000000000 Sunset 00100000000111101000101100100001 6:50 00000000000000000000000000000000 CAROLG 01000000000000000000000000000000 flimsy 00000000000000000000000000000000 lunged 00000000000000000000000000000000 7:13 00000000000000000000000000000000 CALLIOPE 01000000000000000000000000000000 embarrassingly 00000000000000000000000000000000 8.16 00000000000000000000000000000000 8:01 00000000000000000000000000000000 HLR 01000000000000000000000000000000 215.04 00000000000000000000000000000000 freaked 00000000000000000000000000000000 Kitchen 00100000000101101111111000000001 slithering 00000000000000000000000000000000 9:31 00000000000000000000000000000000 9:38 00000000000000000000000000000000 FIG 01000000000000000000000000000000 9:53 00000000000000000000000000000000 PANDA 01000000000000000000000000000000 Flesh 00100000000111101111000010110111 95.8 00000000000000000000000000000000 market:8.60 00000000000000000000000000000000 3425.22 00000000000000000000000000000000 CHG 01000000000000000000000000000000 logging 00000000001001111010110001000000 constricting 00000000001000011111010001000000 6.94 00000000000000000000000000000000 23-5 00000000000000000000000000000000 CLOSE 01000000000111111010110110110010 COUNTRY 01000000000111111111101111000101 129.24 00000000000000000000000000000000 laissez-faire 00000000000000000000000000000000 deregulaton 00000000000000000000000000000000 2170.1 00000000000000000000000000000000 1758.5 00000000000000000000000000000000 643.4 00000000000000000000000000000000 ISSUE 01000000000111101111101000110111 451.6 00000000000000000000000000000000 554 00000000000000000000000000000000 252.5 00000000000000000000000000000000 10.98 00000000000000000000000000000000 754 00000000000000000000000000000000 130.76 00000000000000000000000000000000 318.7 00000000000000000000000000000000 Helaba 00100000000000000000000000000000 35107.56 00000000000000000000000000000000 0.0115 00000000000000000000000000000000 505-455 00000000000000000000000000000000 sufficed 00000000000000000000000000000000 2642.88 00000000000000000000000000000000 135.09 00000000000000000000000000000000 35242.65 00000000000000000000000000000000 communal 00000000000000000000000000000000 characterless 00000000000000000000000000000000 rotate 00000000000000000000000000000000 large-volume 00000000000000000000000000000000 905 00000000000000000000000000000000 6.34 00000000000000000000000000000000 bargain-hunters 00000000000000000000000000000000 2,840 00000000000000000000000000000000 1,980 00000000000000000000000000000000 1,263,000 00000000000000000000000000000000 Originally 00100000000000000101001001110010 Alberg 00100000000000000000000000000000 971,000 00000000000000000000000000000000 multi-family 00000000000000000000000000000000 1,022,000 00000000000000000000000000000000 1,296,000 00000000000000000000000000000000 overstatement 00000000000100001100111001100111 102.5 00000000000000000000000000000000 87.1 00000000000000000000000000000000 18.125 00000000000000000000000000000000 marketmaking 00000000000000000000000000000000 Defect 00100000000111101001101010110111 Premarin 00100000000000000000000000000000 estrogen-replacement 00000000000000000000000000000000 102.25 00000000000000000000000000000000 healthcare 00000000000000100001100000110000 Christian-Democratic 01000000000000000000000000000000 1523.22 00000000000000000000000000000000 614 00000000000000000000000000000000 angina 00000000000000000000000000000000 Monorail 00100000000000000000000000000000 Piccolino 00100000000000000000000000000000 nearer 00000000000000000000000000000000 coronary 00000000000000000010101011100001 67.75 00000000000000000000000000000000 743.7 00000000000000000000000000000000 dermatological 00000000000000000000000000000000 anti-infectives 00000000000000000000000000000000 Significantly 00100000000000001000010001110010 Stay 00100000000110011101010110110010 74.125 00000000000000000000000000000000 krona 00000000000000000000000000000000 Crossair 00100000000000000000000000000000 340B 01000000000000000000000000000000 gems 00000000000000000000000000000000 miserably 00000000000000000000000000000000 Lost 00100000000000000100010000110010 Lot 00100000000111111111111001111111 Gentility 00100000000000000000000000000000 280.5 00000000000000000000000000000000 irreplaceable 00000000000000000000000000000000 indeterminable 00000000000000000000000000000000 1772.6 00000000000000000000000000000000 centering 00000000000000000000000000000000 historichomes 00000000000000000000000000000000 stereotypically 00000000000000000000000000000000 epic 00000000000000000100001100100001 insensitive 00000000000111101010011110010000 Depicting 00100001011010010000000000001010 2189.7 00000000000000000000000000000000 contrived 00000000000000000000000000000000 aristocratic 00000000000000000000000000000000 faux 00000000000000000000000000000000 Charlestonians 00100000000000000000000000000000 Spotted 00100010010101000101010000110010 Kikkoman 00100000000000000000000000000000 Bankcard 00100000000000000000000000000000 Avianca 00100000000000000000000000000000 2,060 00000000000000000000000000000000 aspire 00000000000000000000000000000000 easy-to-read 00000000000000000000000000000000 chimney 00000000000000000000000000000000 Hernandez 00101111111000110010000100001000 Galicia 00100000000000000000000000000000 fester 00000000000000000000000000000000 graft-riddled 00000000000000000000000000000000 4,440 00000000000000000000000000000000 subcontracting 00000000000000000000000000000000 1,770 00000000000000000000000000000000 technocrats 00000000000000000000000000000000 Brawls 00100000000000000000000000000000 Leftist 00100000000000010101011000110000 Cuauhtemoc 00100000000000000000000000000000 Cardenas 00101111111101110000101010001000 nationalism 00000000000111101111010010100111 Hakko 00100000000000000000000000000000 drains 00000000000000000000000000000000 graft 00000000000010001001110010100111 Kyowa 00100000000000000000000000000000 pro-enterprise 00000000000000000000000000000000 laborer 00000000000000000000000000000000 union-owned 00000000000000000000000000000000 roughneck 00000000000000000000000000000000 9,800 00000000000000000000000000000000 non-union 00000000000000000000000000000000 transitory 00000000000000000000000000000000 thrilled 00000000001110101101110000110010 retaking 00000000000000000000000000000000 Robles 00100000000000000000000000000000 subdirector 00000000000000000000000000000000 3-Day-Old 01000000000000000000000000000000 capriciousness 00000000000000000000000000000000 Velasco 00100000000000000000000000000000 Taming 00100000000000000000000000000000 936 00000000000000000000000000000000 Teijin 00100000000000000000000000000000 Heberto 00100000000000000000000000000000 outward-looking 00000000000000000000000000000000 interdependence 00000000000000000000000000000000 Couple 00100000000111111111101001111111 Counseling 00100000000110000000101101100001 Grows 00100000000001101000001000110010 Defuse 00100000000110011011111110110010 Stress 00100000000111101110001010110111 Whisper 00100000000000000000000000000000 YEARS 01000000000000000000000000111011 resented 00000000000000000000000000000000 Ploys 00100000000000000000000000000000 temperament 00000000000111010111110010100111 dual-career 00000000000000000000000000000000 'I'm 01000000000000000000000000000000 Marjorie 00100000000000000000000000000000 10.40 00000000000000000000000000000000 Relationships 00100000000111100000010000100111 detoxification 00000000000000000000000000000000 purging 00000000000000000000000000000000 1,480 00000000000000000000000000000000 Maeda 00100000000000000000000000000000 Tobishima 00100000000000000000000000000000 sodas 00000000000000000000000000000000 Ricca 00100000000000000000000000000000 2,472 00000000000000000000000000000000 Floss 00100000000000000000000000000000 604.72 00000000000000000000000000000000 274,475 00000000000000000000000000000000 24,891 00000000000000000000000000000000 team-management 00000000000000000000000000000000 Fallout 00100000000110100011001100100111 Beware 00100000000111101111001000101111 Dishonesty 00100000000000000000000000000000 spawns 00000000000000000000000000000000 Shealy 00100000000000000000000000000000 Co-author 00100000000000000000000000000000 Hollinger 00100000000000000000000000000000 Pilferage 00100000000000000000000000000000 tell-tale 00000000000000000000000000000000 expense-account 00000000000000000000000000000000 fudging 00000000000000000000000000000000 sap 00000000000000000000000000000000 Consultant 00100000000111101000011110110101 Southlake 00100000000000000000000000000000 Duston 00100000000000000000000000000000 disciplining 00000000000000000000000000000000 Distributing 00100000000011001111111101000000 midsize 00000000000000011111100100110000 Sirota 00100000000000000000000000000000 Alper 00100000000000000000000000000000 Pfau 00100000000000000000000000000000 640,000 00000000000000000000000000000000 domestic-demand 00000000000000000000000000000000 28.55 00000000000000000000000000000000 6.63 00000000000000000000000000000000 Erensel 00100000000000000000000000000000 Okasan 00100000000000000000000000000000 appraise 00000000000000000000000000000000 230-a-share 00000000000000000000000000000000 20%-plus 00000000000000000000000000000000 Valente 00100000000000000000000000000000 preadmission 00000000000000000000000000000000 hospitalizations 00000000000100111000111001100011 Relatively 00100000000100001100000001110010 bodegas 00000000000000000000000000000000 2687.53 00000000000000000000000000000000 ambulatory 00000000000000000000000000000000 Rahill 00100000000000000000000000000000 milks 00000000000000000000000000000000 napkin 00000000000000000000000000000000 paperwork 00000000000000000001111000111001 Utilization 00100000000000000110110011000111 discotheque 00000000000000000000000000000000 Trucks 00100000000110101110111001100011 reduced-fat 00000000000000000000000000000000 Bapilly 00100000000000000000000000000000 157.8 00000000000000000000000000000000 35586.60 00000000000000000000000000000000 pooling 00000000001101011111010001000000 entailed 00000000000000000000000000000000 2.5-ton 00000000000000000000000000000000 4.2-ton 00000000000000000000000000000000 Rover 00100000000000001001010100101000 truck-building 00000000000000000000000000000000 Vehicles 00100000000000000001101001100011 Industriels 00100000000000000000000000000000 16%-owned 00000000000000000000000000000000 Doorne 00100000000000000000000000000000 35689.98 00000000000000000000000000000000 unpleasantness 00000000000000000000000000000000 35670 00000000000000000000000000000000 unresponsive 00000000000000000000000000000000 23.53 00000000000000000000000000000000 10-fold 00000000000000000000000000000000 35585.52 00000000000000000000000000000000 longer-run 00000000000000000000000000000000 disqualification 00000000000000000000000000000000 plausibly 00000000000000000000000000000000 creamier 00000000000000000000000000000000 sundry 00000000000000000000000000000000 stew 00000000000000000000000000000000 higher-fat 00000000000000000000000000000000 unpolitical 00000000000000000000000000000000 894 00000000000000000000000000000000 guessing 00000000000111100000110101100111 price-level 00000000000000000000000000000000 price-stability 00000000000000000000000000000000 155.4 00000000000000000000000000000000 44.6 00000000000000000000000000000000 124.2 00000000000000000000000000000000 most-contentious 00000000000000000000000000000000 Strict 00100000000010101001000000010000 reawakening 00000000000000000000000000000000 lassitude 00000000000000000000000000000000 Hickman 00100000000000000000000000000000 compatriots 00000000000000000000000000000000 Halva-Neubauer 01000000000000000000000000000000 Furman 00101111111111001011110000101000 semiliterate 00000000000000000000000000000000 foe 00000000000110001111101001100111 seven-point 00000000000000000000000000000000 Embryo 00100000000000000000000000000000 trimester 00000000000111111111011110010111 RESEARCHERS 01000000000000000110000010110011 Rogin 00100000000000000000000000000000 FOOD 01000000000000001111111010110000 25.125 00000000000000000000000000000000 prognosis 00000000000000000000000000000000 410.4 00000000000000000000000000000000 mobilization 00000000000000000000000000000000 Jacki 00100000000000000000000000000000 Ragan 00100000000000000000000000000000 pro-abortion 00000000000000000000000000000000 Spaulding 00100000000000000000000000000000 Michelman 00100000000000000000000000000000 31.7 00000000000000000000000000000000 medical-assistance 00000000000000000000000000000000 pre-natal 00000000000000000000000000000000 neonatal 00000000001011010010101000110000 care. 00000000000000000000000000000000 spousal 00000000000000000000000000000000 required. 00000000000000000000000000000000 emergency. 00000000000000000000000000000000 mother. 00000000000000000000000000000000 tissue. 00000000000000000000000000000000 MOST 01000000000111101011101011000000 fangs 00000000000000000000000000000000 Trained 00100000000001110100010000110010 pur-poises 00000000000000000000000000000000 Marrill 00100000000000000000000000000000 Pederson 00100000000000000000000000000000 knitwear 00000000000000000000000000000000 Tastes 00100000000100101001111101100011 54.6 00000000000000000000000000000000 U.S.-Mexico 01000000000000000000000000000000 196.7 00000000000000000000000000000000 P-3 00100000000000000000000000000000 three-day-old 00000000000000000000000000000000 large-size 00000000000000000000000000000000 retroactively 00000001111000010000010001110010 366.79 00000000000000000000000000000000 1983-1987 00000000000000000000000000000000 Arkansas-based 00100000000000000000000000000000 Mississippian 00100000000000000000000000000000 Klatman 00100000000000000000000000000000 21.03 00000000000000000000000000000000 value-boosting 00000000000000000000000000000000 11.91 00000000000000000000000000000000 28-pence 00000000000000000000000000000000 greenback 00000000000000000000000000000000 Pacitti 00100000000000000000000000000000 Concocts 00100000000000000000000000000000 unfold 00000000000000000000000000000000 lower-growth 00000000000000000000000000000000 higher-multiple 00000000000000000000000000000000 Cinema 00100000000000000110010001001000 ocean-shipping 00000000000000000000000000000000 officals 00000000000000000000000000000000 142.40 00000000000000000000000000000000 hell-bent 00000000000000000000000000000000 1.5885 00000000000000000000000000000000 Sacremento 00100000000000000000000000000000 emergency-medical 00000000000000000000000000000000 foodstuff 00000000000000000000000000000000 apparat 00000000000000000000000000000000 10:45 00000000000000000000000000000000 motor-home 00000000000000000000000000000000 north-south 00000000000000000000000000000000 coastline 00000000000000000000000000000000 proof-of-purchases 00000000000000000000000000000000 kinked 00000000000000000000000000000000 FALL 01000000000111111111011000110111 Rail-transit 00100000000000000000000000000000 26-point 00000000000000000000000000000000 befell 00000000000000000000000000000000 Terminals 00100000000111101110101001100011 Runways 00100000000000100111110001100011 Stockton 00100000000000000000000000000000 unusable 00000000000000000000000000000000 sprinkler 00000000000000000000000000000000 Stapleton 00100000000000000000000000000000 rerouted 00000000000000000000000000000000 Burlingame 00100000000000000000000000000000 Weinroth 00100000000000000000000000000000 vineyards 00000000010111001011110101100011 788.8 00000000000000000000000000000000 three-to-five-year 00000000000000000000000000000000 BALLOT 01000000000111100010000001100111 Laphroaig 00100000000000000000000000000000 single-malt 00000000000000000000000000000000 Buckingham 00100000000000000000000000000000 Wile 00100000000000000000000000000000 Cutty 00100000000000000000000000000000 Sark 00100000000000000000000000000000 Lavin 00100000000000000000000000000000 Peak 00100000000110001011011010100111 Vineyards 00100000010111001011110101100011 distillery 00000000000000000000000000000000 174.5 00000000000000000000000000000000 language-housekeeper 00000000000000000000000000000000 Neill 00100000000000000000000000000000 Junor 00100000000000000000000000000000 WoodMac 01000000000000000000000000000000 Tanqueray 00100000000000000000000000000000 development... 00000000000000000000000000000000 ISSUES 01000000000110100000001011100011 white-spirit 00000000000000000000000000000000 white-spirits 00000000000000000000000000000000 35.4 00000000000000000000000000000000 315.5 00000000000000000000000000000000 223.2 00000000000000000000000000000000 off-year 00000000000000000000000000000000 last-ditch 00000000000000000000000000000000 307.9 00000000000000000000000000000000 Boddington 00100000000000000000000000000000 Heineken 00100000000000000000000000000000 Stella 00100000000000000000000000000000 Artois 00100000000000000000000000000000 steakhouse 00000000000000000000000000000000 Keg 00100000000000000000000000000000 Focusing 00100000000111111100100000110010 364.1 00000000000000000000000000000000 Dewar 00100000000000000000000000000000 honorary 00000000000000000000000000000000 Cast 00100000000110001010010110110010 NEWHALL 01000000000010011100110100101000 LAND 01000000000101100101100000100001 FARMING 01000000000000101000001100100001 Valencia 00100000000000000000000000000000 122.4 00000000000000000000000000000000 coming-out 00000000000000000000000000000000 closet-sized 00000000000000000000000000000000 number-crunchers 00000000000000000000000000000000 poaching 00000000001001101010110001000000 nimble 00000000000000000000000000000000 Glorioso 00100000000000000000000000000000 water-cooled 00000000000000000000000000000000 extraordinary... 00000000000000000000000000000000 3090s 00000000000000000000000000000000 knockout 00000000000000011000110000000001 Scotch 00100000000110100000101100100001 faster-growing 00000000000000000000000000000000 J&B 01000000000000000000000000000000 bank-teller 00000000000000000000000000000000 unplug 00000000000000000000000000000000 guzzle 00000000000000000000000000000000 outgrew 00000000000000000000000000000000 pre-signed 00000000000000000000000000000000 super-charger 00000000000000000000000000000000 leans 00000000000110101100001000110010 hormone-treated 00000000000000000000000000000000 Pitman 00100000000000000000000000000000 NAS 01000000000000000000000000000000 NH 01000000000000000000000000000000 large-city 00000000000000000000000000000000 limited-edition 00000000000000000000000000000000 Prudence 00100000000111010011010010100111 Sergiusz 00100000000000000000000000000000 Grabowiec 00100000000000000000000000000000 unit-price 00000000000000000000000000000000 seventh-consecutive 00000000000000000000000000000000 DALIS 01000000000000000000000000000000 FAKE 01000000000001110010011010010000 CASE 01000000000111111111100001100111 0.0085 00000000000000000000000000000000 Madson 00100000000000000000000000000000 Slobodin 00100000000000000000000000000000 best-run 00000000000000000000000000000000 WLF 01000000000000000000000000000000 coupling 00000000000000000000000000000000 savor 00000000000000000000000000000000 Costs 00100000000111101111101000000011 415.9 00000000000000000000000000000000 6.59 00000000000000000000000000000000 360.1 00000000000000000000000000000000 Mode 00100000000100001111101001100111 Ill-considered 00100000000000000000000000000000 P.J. 01000000000000000000000000000000 Subsidizing 00100000000000000101011101000000 Odd-year 00100000000000000000000000000000 ecologically 00000000000000000000000000000000 Palms 00100000000000000000000000000000 ratcheting 00000000000000000000000000000000 Junk-bond 00100000000000000000000000000000 453,000 00000000000000000000000000000000 Private-property 00100000000000000000000000000000 beach-house 00000000000000000000000000000000 barrier-island 00000000000000000000000000000000 Y. 00101111111111100101101011011000 Lerman 00100000000000000000000000000000 statistically 00000000000001101000000001110010 equitably 00000000000000000000000000000000 Summarizing 00100001110010010000000000001010 Prenatal 00100000000001110001100000110000 tradedistorting 00000000000000000000000000000000 58.64 00000000000000000000000000000000 female-headed 00000000000000000000000000000000 12,092 00000000000000000000000000000000 31.6 00000000000000000000000000000000 scotches 00000000000000000000000000000000 41.5 00000000000000000000000000000000 Confirming 00100000000110000001111010000010 mass-murderer 00000000000000000000000000000000 death-sentence 00000000000000000000000000000000 27,225 00000000000000000000000000000000 32,191 00000000000000000000000000000000 BUNDY'S 01000000000000000000000000000000 recalculated 00000000000000000000000000000000 Nofzinger 00100000000000000000000000000000 rumbled 00000000000000000000000000000000 J.R. 01000000000000000000000000000000 American-developed 00100000000000000000000000000000 Schieffelin 00100000000000000000000000000000 TED 01001111111000010000101000011000 Investigating 00100000000111110100010101000000 Tobias 00100000000000000000000000000000 planets 00000000000000000000000000000000 lifeless 00000000000000000000000000000000 comets 00000000000000000000000000000000 asteroids 00000000000000000000000000000000 lodge 00000000000101111001100010100101 Lyn 00100000000000000000000000000000 geysers 00000000000000000000000000000000 sulfurous 00000000000000000000000000000000 Torrence 00100000000000000000000000000000 polluting 00000000000000000000000000000000 12:54 00000000000000000000000000000000 Commander 00100000000101111111110000110101 Fly 00100000000001011101010110110010 polymeric 00000000000000000000000000000000 demolition 00000000000000000000000000000000 Benny 00101111111010010000001000011000 Chin 00100000000111111000111110000001 proprieter 00000000000000000000000000000000 gene-copying 00000000000000000000000000000000 stucco 00000000000000000000000000000000 gravitational 00000000000000000000000000000000 infiltrate 00000000000000000000000000000000 anti-Galileo 01000000000000000000000000000000 CONVICTION 01000000000111100111111101100111 referenda 00000000000000000000000000000000 Venus 00100000000000000000000000000000 beta-thalassemia 00000000000000000000000000000000 CRIMINAL 01000000000000000001000000110000 deleterious 00000000000000000000000000000000 18,136 00000000000000000000000000000000 reorganization-plan 00000000000000000000000000000000 telescope 00000000000111011101100011010000 faintest 00000000000000000000000000000000 galaxies 00000000000000000000000000000000 reiterates 00000000000000000000000000000000 high-rolling 00000000000000000000000000000000 CLAIMANTS 01000000000111110101100110110011 citizen-sparked 00000000000000000000000000000000 SHIELD 01000000000000001000110100100001 DALKON 01000000000111100010001000110000 business-judgment 00000000000000000000000000000000 Gitter 00100000000000000000000000000000 HEARS 01000000110101100011000000010010 leniency 00000000000000000000000000000000 SEEKING 01000000000011001110111000110010 oil-recycling 00000000000000000000000000000000 Greaney 00100000000000000000000000000000 YORK'S 01000000000000000000000000000000 tight-lipped 00000000000000000000000000000000 Liman 00101111111111100000001010001000 deliberation 00000000000000000000000000000000 Milbank 00100000000000000000000000000000 Tweed 00100000000000000000000000000000 Hadley 00100000000000000000000000000000 McCloy 01000000000000000000000000000000 unintentionally 00000000000000000000000000000000 Repeat 00100000000101111111110110110010 15-month 00000000000000000000000000000000 5,400 00000000000000000000000000000000 JOIN 01000000000111101111111110110010 odd-year 00000000000000000000000000000000 redirected 00000000000000000000000000000000 anemia 00000000000100011011110010100111 mated 00000000000000000000000000000000 GRAB 01000000000000011110101110110010 then-prevailing 00000000000000000000000000000000 Aldrich 00100000000000000000000000000000 Waltch 00100000000000000000000000000000 uterus 00000000000000000000000000000000 emptied 00000000000000000000000000000000 spinoffs 00000000000000000000000000000000 Spirited 00100000000110000111000010010000 Reichmanns 00100000000000000000000000000000 Closing 00100000000111101111111001110111 Stirs 00100101101110000011000000010010 less-rigorous 00000000000000000000000000000000 Schloss 00100000000000000000000000000000 slop 00000000000000000000000000000000 Canellos 00100000000000000000000000000000 33-point 00000000000000000000000000000000 spigots 00000000000000000000000000000000 school-lunch 00000000000000000000000000000000 transfusions 00000000000111110111100110001001 emergency-relief 00000000000000000000000000000000 20.625 00000000000000000000000000000000 caseload 00000000000111100000011000100001 money-wise 00000000000000000000000000000000 Suchocki 00100000000000000000000000000000 Drinker 00100000000000000000000000000000 vouchers 00000000000000000100110100100011 community-development 00000000000000000000000000000000 medical-airlift 00000000000000000000000000000000 Letterman 00100000000000000000000000000000 Volland 00100000000000000000000000000000 one-page 00000000000000000000000000000000 Maple 00100000001111110010001000110000 Mulrooney 00100000000000000000000000000000 Larson 00100000000000000000000000000000 McGinley 01000000000000000000000000000000 FARMERS 01000000000001001110111000110011 REAP 01000000000111001111101110110010 drought-ravaged 00000000000000000000000000000000 Beef 00100000000111101111010110110111 non-public 00000000000000000000000000000000 clump 00000000000000000000000000000000 Pankyo 00100000000000000000000000000000 Stokely 00100000000000000000000000000000 peas 00000000000000000000000000000000 VITRO 01000000000011001010111100101000 fertilization 00000000000100111111101111100001 Costly 00100000000000000100110010010000 19.94 00000000000000000000000000000000 proliferate 00000000000000000000000000000000 hope... 00000000000000000000000000000000 vitro 00000000000011001010111100101000 MOVES 01000000000111100011001000100011 Lowry 00100000000000000000000000000000 WORLD 01000000000111010100111011000101 ODDITIES 01000000000000000000000000000000 CD-ROM 01000000000000000000000000000000 belch 00000000000000000000000000000000 ARTY 01000000000000000000000000000000 Hockney 00100000000000000000000000000000 27.125 00000000000000000000000000000000 Emmerich 00100000000000000000000000000000 teased 00000000000000000000000000000000 PACS 01000000000111101100010000110011 GIVE 01000000000111110011101110110010 39.75 00000000000000000000000000000000 duet 00000000000110000000111101100111 Latest 00100000000000000010000011010000 Roskind 00100000000000000000000000000000 CHRISTMAS 01000000000000000000000000100001 SHOPPERS 01000000000001101100111000110011 11th-hour 00000000000000000000000000000000 Honeybee 00100000000000000000000000000000 polymerase 00000000000000000000000000000000 Guarana 00100000000000000000000000000000 Amcap 00100000000000000000000000000000 ginger 00000000000000000000000000000000 ale 00001111111111111110011010110000 cherries 00000000000000000000000000000000 Amenities 00100000000111110100001010100011 Parkshore 00100000000000000000000000000000 counselor 00000000000110111101010110110101 Shugart 00100000000000000000000000000000 Places 00100000000111101111000010100011 Almanac 00100000000010010001011001100111 soot-stained 00000000000000000000000000000000 Yuba 00100000000000000000000000000000 Unamused 00100000000000000000000000000000 Kiss 00100000000110101011001010110111 almanac 00000000000010010001011001100111 dethroned 00000000000000000000000000000000 Poppenberg 00100000000000000000000000000000 Atlantans 00100000000000000000000000000000 Co-authors 00100000000000000000000000000000 infertile 00000000000000000000000000000000 Gloucester 00100000000000000000000000000000 Asheville 00100000000000000000000000000000 pretensions 00000000000000000000000000000000 Anaheim-Santa 01000000000000000000000000000000 Nassau-Suffolk 01000000000000000000000000000000 dignify 00000000000000000000000000000000 Hemmer 00100000000000000000000000000000 mastermind 00000000000000000000000000000000 74,351 00000000000000000000000000000000 2.52 00000000000000000000000000000000 76.4 00000000000000000000000000000000 54.875 00000000000000000000000000000000 ALQ-135 01000000000000000000000000000000 190.3 00000000000000000000000000000000 Tactical 00100000000000101101110000110000 Fighter 00100000000001010010001010110000 Backlog 00100000000111100011000101100111 352.9 00000000000000000000000000000000 210.3 00000000000000000000000000000000 5.03 00000000000000000000000000000000 208.8 00000000000000000000000000000000 7.06 00000000000000000000000000000000 frittered 00000000000000000000000000000000 Magleby 00100000000000000000000000000000 product-launch 00000000000000000000000000000000 implantation 00000000000000000000000000000000 32.50 00000000000000000000000000000000 153.9 00000000000000000000000000000000 116.8 00000000000000000000000000000000 salable 00000000000000000000000000000000 upgrades 00000000001010100010001000100011 manufacturing-cost 00000000000000000000000000000000 MVL 01000000000000000000000000000000 outsold 00000000000000000000000000000000 four-to-one 00000000000000000000000000000000 dishwashers 00000000000000000000000000000000 Kurlak 00100000000000000000000000000000 mopping 00000000000000000000000000000000 tiles 00000000000000000000000000000000 eyeballing 00000000000000000000000000000000 calibrated 00000000000000000000000000000000 458 00000000000000000000000000000000 PHOTOGRAPH 01000000000111101011001000111111 blackouts 00000000000000000000000000000000 hosannas 00000000000000000000000000000000 tremulous 00000000000000000000000000000000 price-conscious 00000000000000000000000000000000 shutoff 00000000000000000000000000000000 snake 00000000000111111101111000000001 just-in-time 00000000000000000000000000000000 Dobi 00100000000000000000000000000000 arises 00000000001100000110001000110010 self-diagnostic 00000000000000000000000000000000 Livermore 00100000000000000000000000000000 show-stoppers 00000000000000000000000000000000 150-plus 00000000000000000000000000000000 one-square-mile 00000000000000000000000000000000 Mansfield 00100000000000000000000000000000 Telescope 00100000000111011101100011010000 emitted 00000000000000000000000000000000 farthest 00000000000000000000000000000000 contribued 00000000000000000000000000000000 Egg-industry 00100000000000000000000000000000 recession-sensitive 00000000000000000000000000000000 COLLECTING 01000000000010101111111101000000 Misa 00100000000000000000000000000000 tarred 00000000000000000000000000000000 sanitize 00000000000000000000000000000000 forbidden 00000000001101000101101001000000 liquified 00000000000000000000000000000000 bakers 00000000000000000000000000000000 preparers 00000000000000000000000000000000 eclairs 00000000000000000000000000000000 30-pound 00000000000000000000000000000000 cylinder 00000000000000100101111000000001 perforated 00000000000000000000000000000000 R2-D2 01000000000000000000000000000000 3,390 00000000000000000000000000000000 BRANDS 01000000000110101110001010101000 Chickens 00100000000110100001110101100011 Hens 00100000000000000000000000000000 unclean 00000000000000000000000000000000 sanitized 00000000000000000000000000000000 folio 00000000000000000000000000000000 Kings 00100000000101001010001000110000 Guzewich 00100000000000000000000000000000 Decatur 00100000000000000000000000000000 UEP 01000000000000000000000000000000 battleground 00000000000111101110001101100111 egg-processing 00000000000000000000000000000000 post-bankruptcy 00000000000000000000000000000000 Inspection 00100000000000001110111001100111 more-pressing 00000000000000000000000000000000 Vining 00100000000000000000000000000000 Foiled 00100000000000000000000000000000 Adsi 00100000000000000000000000000000 40,424 00000000000000000000000000000000 chanteuse 00000000000000000000000000000000 passably 00000000000000000000000000000000 coming-of-age 00000000000000000000000000000000 infused 00000000000000000000000000000000 sentimentality 00000000000000000000000000000000 bluesy 00000000000000000000000000000000 wows 00000000000000000000000000000000 sensuality 00000000000000000000000000000000 cinematographer 00000000000000000000000000000000 Yeast 00100000000000000000000000000000 slyly 00000000000000000000000000000000 Equivalents 00100000000000000000101001101001 Fassbinder 00100000000000000000000000000000 Scorsese 00100000000000000000000000000000 Temptation 00100000000111011101111100100111 Christ 00100000000111101000000001000111 banquet-hall 00000000000000000000000000000000 musicianship 00000000000000000000000000000000 Feelings 00100000000111111101111101100011 condescension 00000000000011100001110010100111 heelsthe 00000000000000000000000000000000 Adapted 00100000000111101000110000110010 brotherly 00000000000000000000000000000000 single-lot 00000000000000000000000000000000 Sabre 00100000000011001100100000100001 time-hotels 00000000000000000000000000000000 disparage 00000000000000000000000000000000 Halis 00100000000000000000000000000000 tuxedos 00000000000000000000000000000000 gig 00000000000000000000000000000000 Plump 00100000000000000000000000000000 grovels 00000000000000000000000000000000 bookers 00000000000000000000000000000000 off-hours 00000000000000000000000000000000 cardigan 00000000000000000000000000000000 fancies 00000000000000000000000000000000 canny 00000000000000000000000000000000 consoles 00000000000000000000000000000000 Heady 00100000000000110010011010010000 sadder 00000000000000000000000000000000 chisel 00000000000000000000000000000000 Lie 00100000100101111101010110110010 tweety-bird 00000000000000000000000000000000 Lescaze 00100000000000000000000000000000 prancing 00000000000000000000000000000000 angora 00000000000000000000000000000000 clingy 00000000000000000000000000000000 VIDEO 01000000000000001000001010110000 TIP 01000000000100101001001010110111 Mob 00100000000000001101010000000001 Demme 00100000000000000000000000000000 delightful 00000000000000100011000010010000 Gene-Spliced 01000000000000000000000000000000 magnetism 00000000000000000000000000000000 Round 00100000000111101011111000111111 agriproducts 00000000000000000000000000000000 3M 01000000000000000000000000000000 115,000-square-foot 00000000000000000000000000000000 Milstar 00100000000000000000000000000000 Denis 00101111111000101011100010011000 alloys 00000000000000000000000000000000 Anatol 00100000000000000000000000000000 impersonator 00000000000000000000000000000000 3,950 00000000000000000000000000000000 421 00000000000000000000000000000000 6.71 00000000000000000000000000000000 equips 00000000000000000000000000000000 restate 00000000000101001100111110110010 payables 00000000000000000000000000000000 Loughman 00100000000000000000000000000000 underdressed 00000000000000000000000000000000 commandant 00000000000000000000000000000000 Jewel 00100000000111110111011111111001 Lafontant 00100000000000000000000000000000 Insilco 00100000000101011100111100101000 overdressed 00000000000000000000000000000000 well-operated 00000000000000000000000000000000 wept 00000000000000000000000000000000 launder 00000000000000000000000000000000 Formerly 00100000000000001110011010000010 Benda 00100000000000000000000000000000 Pryce 00100000000000000000000000000000 Money-market 00100000000000000000000000000000 OIL 01000000000000000001001110110000 amours 00000000000000000000000000000000 190.58point 00000000000000000000000000000000 Rachwalski 00100000000000000000000000000000 Maturities 00100000000111101001101001000111 COMPANY 01000000000111101111111000000101 deux 00000000000000000000000000000000 quadruples 00000000000000000000000000000000 318.6 00000000000000000000000000000000 Marseillaise 00100000000000000000000000000000 Wight 00100000000000000000000000000000 Gates-Warren 01000000000000000000000000000000 Concorde 00100000000000000000000000000000 USO 01000000000000000000000000000000 Cracking 00100000001111101110100001000000 24th-largest 00000000000000000000000000000000 Persky 00100000000000000000000000000000 one-woman 00000000000000000000000000000000 Saran 00100000000000000000000000000000 media-related 00000000000000000000000000000000 space-buying 00000000000000000000000000000000 Euroconvertible 00100000000000000000000000000000 Gaulle 00100000000000000000000000000000 Staffers 00100000000000001000000010110011 ultramodern 00000000000000000000000000000000 Plaster 00100000000100101000010110000000 jiggling 00000000000000000000000000000000 conditioner 00000000000011111111011001010111 Aqua 00100000000000000000000000000000 hairspray 00000000000000000000000000000000 movie-like 00000000000000000000000000000000 BOZELL 01000000000111110011110000101000 UCLA 01000000000000000000000000000000 sold-out 00000000000000000000000000000000 BEER 01000000000000111011111010110000 Parallel 00100000000000000110101001000000 Amber 00100000000000001110001000110000 Amstel 00100000000000000000000000000000 tasting 00000000000000000000000000000000 Photograph 00100000000111101011001000111111 callipygous 00000000000000000000000000000000 emulating 00000000000000000000000000000000 tributes 00000000000111110100101110100011 Coupes 00100000000000000000000000000000 antiSony 01000000000000000000000000000000 Gale 00100000000000000000000000000000 Wesleyan 00100000000000000000000000000000 obfuscate 00000000000000000000000000000000 migrations 00000000000000000000000000000000 casuistry 00000000000000000000000000000000 Jolas 00100000000000000000000000000000 designating 00000000000000000000000000000000 Remembrance 00100000000000000000000000000000 Anniversary 00100000000000000000011101000111 Genocide 00100000000000000000000000000000 1915-1923 00000000000000000000000000000000 warring 00000000000100101101011000110000 Collector 00100000000011010010011110110101 indecisiveness 00000000000000000000000000000000 quibbling 00000000000000000000000000000000 fanny 00000000000000000000000000000000 wiggled 00000000000000000000000000000000 anti-Turkish 01000000000000000000000000000000 Judeo-Christian 01000000000000000000000000000000 S.p.A. 01000000000000000000000000000000 single-cell 00000000000000000000000000000000 Kurds 00100000000111011110100000110011 extermination 00000000000000000000000000000000 all-black 00000000000000000000000000000000 dustbin 00000000000000000000000000000000 patronized 00000000000000000000000000000000 embittered 00000000011111100001110000110010 Dismantle 00100000011110111011111110110010 pillorying 00000000000000000000000000000000 buzzsaw 00000000000000000000000000000000 breathlessly 00000000000000000000000000000000 averts 00000011011010000011000000010010 18-story 00000000000000000000000000000000 wailing 00000000000000000000000000000000 phoney 00000000000000000000000000000000 baloney 00000000000011110101110010100111 Chalmers 00101111111101100101000100001000 non-edible 00000000000000000000000000000000 gentlelady 00000000000000000000000000000000 theologian 00000000000110001011011110110101 gentleladies 00000000000000000000000000000000 Pichia 00100000000000000000000000000000 neighbhorhoods 00000000000000000000000000000000 Rainier 00100000000110000011000100101000 Innocent 00100000000001100001110110010000 pastoris 00000000000000000000000000000000 crossfire 00000000000000000000000000000000 Decent 00100000000000000100101010010000 Bricktop 00100000000000000000000000000000 derriere 00000000000000000000000000000000 infested 00000000000000000000000000000000 Establishing 00100000000011101111111101000000 famously 00000000000000000000000000000000 chicanery 00000000000000000000000000000000 precariously 00000000000000000000000000000000 breasts 00000000000111100100110101100011 Panglossian 00100000000000000000000000000000 paeans 00000000000000000000000000000000 coasters 00000000000000000000000000000000 Corresponding 00100000000000001100100000010000 bravest 00000000000000000000000000000000 Tobin 00100000000000000000000000000000 68.9 00000000000000000000000000000000 Result 00100000000111111111111011111111 littered 00000000000000000000000000000000 lemons 00000000000000000000000000000000 shielding 00000000000000000000000000000000 craning 00000000000000000000000000000000 swiveling 00000000000000000000000000000000 meaner 00000000000000000000000000000000 icon 00000000000000000000000000000000 517 00000000000000000000000000000000 Left-stream 00100000000000000000000000000000 Radical 00100000000000010001000000010000 Pollin 00100000000000000000000000000000 Riverside 00100000000110000100101001101000 Norimasa 00100000000000000000000000000000 pliant 00000000000000000000000000000000 empires 00000000000000000000000000000000 obediently 00000000000000000000000000000000 assists 00000000000000000000000000000000 deflationary 00000000000000000000000000000000 Attacks 00100000000111101111100100100111 peering 00000000000000000000000000000000 West... 00100000000000000000000000000000 Morcott 00100000000000000000000000000000 classless 00000000000000000000000000000000 Southwood 00100000000000000000000000000000 198.41 00000000000000000000000000000000 169.28 00000000000000000000000000000000 Governments 00100000000111001000100001110011 Sudol 00100000000000000000000000000000 totter 00000000000000000000000000000000 Capitalism 00100000000111101110110010100111 inequity 00000000000000000000000000000000 ground-cargo 00000000000000000000000000000000 air-cargo 00000000000000000000000000000000 Simat 00100000000000000000000000000000 Helliesen 00100000000000000000000000000000 Eichner 00100000000000000000000000000000 drive-train 00000000000000000000000000000000 Toyko 00100000000000000000000000000000 40.7 00000000000000000000000000000000 freighters 00000000000000000000000000000000 Combis 00100000000000000000000000000000 toeholds 00000000000000000000000000000000 Kenton 00100000000000000000000000000000 gas-derived 00000000000000000000000000000000 Pacific-listed 00100000000000000000000000000000 carpenters 00000000000000000000000000000000 glucose 00000000000000000000000000000000 accomodate 00000000000000000000000000000000 corrects 00000000000000000000000000000000 flashlight 00000000000000000000000000000000 Tie-vole-ee 00100000000000000000000000000000 Navin 00100000000000000000000000000000 whoosh 00000000000000000000000000000000 Single-cell 00100000000000000000000000000000 wingbeat 00000000000000000000000000000000 streaming 00000000000000000000000000000000 floats 00000000000000000000000000000000 Call-In 01000000000000000000000000000000 palamedes 00000000000000000000000000000000 130.875 00000000000000000000000000000000 101.75 00000000000000000000000000000000 inky-brown 00000000000000000000000000000000 pea 00000000000000000000000000000000 hurled 00000000001000101001001000110010 4.84-a-share 00000000000000000000000000000000 scarlet 00000000000000000000000000000000 lantana 00000000000000000000000000000000 event-driven 00000000000000000000000000000000 horoscopes 00000000000000000000000000000000 Nac 00100000000000000000000000000000 blossoms 00000000000000000000000000000000 62.50 00000000000000000000000000000000 spoonbills 00000000000000000000000000000000 cement-makers 00000000000000000000000000000000 Calmat 00100000000111000101011100101000 29.25 00000000000000000000000000000000 innumerable 00000000000000000000000000000000 Andrea 00100000000000000000000000000000 61.875 00000000000000000000000000000000 tutorials 00000000000000000000000000000000 Salk 00100000000000000000000000000000 33.375 00000000000000000000000000000000 Maxxam 00100000000001111001010100101000 Tosco 00100000001101101111111100101000 quadrupeds 00000000000000000000000000000000 31.875 00000000000000000000000000000000 19.625 00000000000000000000000000000000 alligators 00000000000000000000000000000000 Deer 00100000000010010110011010101000 front-runner 00000000000000000000000000000000 sustaining 00000000000011000111111101000000 prairies 00000000000000000000000000000000 undercapitalized 00000000000000000000000000000000 redevelop 00000000000000000000000000000000 mild-mannered 00000000000000000000000000000000 Hunterdon 00100000000000000000000000000000 money-saving 00000000000000000000000000000000 marshes 00000000000000000000000000000000 double-coupon 00000000000000000000000000000000 shaves 00000000000000000000000000000000 artery-clogging 00000000000000000000000000000000 tasty 00000000000000000000000000000000 coverts 00000000000000000000000000000000 image-building 00000000000000000000000000000000 molecularly 00000000000000000000000000000000 switchers 00000000000000000000000000000000 multibillion-yen 00000000000000000000000000000000 Huff 00101111111110011011001000001000 alluvial 00000000000000000000000000000000 Slims 00100000000000000000000000000000 goose 00000000000000000000000000000000 conveys 00000000000000000000000000000000 whooper 00000000000000000000000000000000 Uninhibited 00100000000001011011000110010000 Loyalty 00100000000101101111110100100111 utilitarian 00000000000000000000000000000000 trash-bag 00000000000000000000000000000000 Underwear 00100000010101101011111010110000 gunner 00000000000000000000000000000000 double-breasted 00000000000000000000000000000000 Minato-Mirai 01000000000000000000000000000000 conveniently 00000000000000000000000000000000 Higher-income 00100000000000000000000000000000 capriciously 00000000000000000000000000000000 Ragu 00100000000000000000000000000000 Aransas 00100000000000000000000000000000 Prego 00100000000000000000000000000000 absorbent 00000000000000000000000000000000 Pampers 00100000000000000000000000000000 Huggies 00100000000000000000000000000000 landowner 00000000000000000000000000000000 soups 00000000000000000000000000000000 'All 01000000000000000000000000000000 disloyalty 00000000000000000000000000000000 instill 00000000000000000000000000000000 fervent 00000000000000000000000000000000 direct-marketing 00000000000000000000000000000000 Clayt 00100000000000000000000000000000 Wilhite 00100000000000000000000000000000 Peeking 00100000000000000000000000000000 non-user 00000000000000000000000000000000 attachment 00000000000000000000000000000000 Blackjack 00100000000000000000000000000000 Reider 00100000000000000000000000000000 makeshift 00000000000000000000000000000000 claims-processing 00000000000000000000000000000000 personal-property 00000000000000000000000000000000 homeowner 00000000000111100100111000100001 Franciso 00100000000000000000000000000000 property-claim 00000000000000000000000000000000 Roads 00100000000111111110111001100011 Highways 00100000000110111110111001100011 Jutting 00100000000000000000000000000000 Earthquake-related 00100000000000000000000000000000 Yankus 00100000000000000000000000000000 59.50 00000000000000000000000000000000 atolls 00000000000000000000000000000000 75.875 00000000000000000000000000000000 damned 00000000000011011011011010010000 ramshackle 00000000000000000000000000000000 Picoult 00100000000000000000000000000000 Orin 00101111111000001101110110011000 seacoast 00000000000000000000000000000000 domes 00000000000000000000000000000000 Motorfair 00100000000000000000000000000000 wayside 00000000000000000000000000000000 fetches 00000000000000000000000000000000 39,400 00000000000000000000000000000000 highest-priced 00000000000000000000000000000000 Jaguars 00100000000000000000000000000000 hand-crafted 00000000000000000000000000000000 armory 00000000000111011001001010000001 Mossoviet 00100000000000000000000000000000 paging 00000000000000011010100001100001 2.78 00000000000000000000000000000000 necktie 00000000000000000000000000000000 Clendenin 00100000000000000000000000000000 481 00000000000000000000000000000000 402,000 00000000000000000000000000000000 62.3 00000000000000000000000000000000 Shima 00100000000000000000000000000000 a-reflects 00000000000000000000000000000000 b-reflects 00000000000000000000000000000000 c-reflects 00000000000000000000000000000000 castigated 00000011011101000101010000110010 stoking 00000000000000000000000000000000 pardon 00000000000110100101111010110111 rose-gold 00000000000000000000000000000000 FREDERICK'S 01000000000000000000000000000000 HOLLYWOOD 01000000000000100111110001101000 boutique-store 00000000000000000000000000000000 defaulters 00000000000000000000000000000000 48.6 00000000000000000000000000000000 199.7 00000000000000000000000000000000 Greenwood 00101111111011000101001000001000 Arteries 00100000000110101101110010100111 Boettcher 00101111111000011111111010101000 stabilizes 00000000000000000000000000000000 coddling 00000000000000000000000000000000 hard-earned 00000000000000000000000000000000 Lawless 00100000000000000000000000000000 bull-market 00000000000000000000000000000000 cash-equivalent 00000000000000000000000000000000 coax 00000000000000000000000000000000 stippled 00000000000000000000000000000000 shriveled 00000000000000000000000000000000 retail-volume 00000000000000000000000000000000 buy-backs 00000000000000000000000000000000 inadvertently 00000000110001000001001001110010 250.2 00000000000000000000000000000000 shimmering 00000000000000000000000000000000 zig-zag 00000000000000000000000000000000 Elrick 00100000000000000000000000000000 Lavidge 00100000000000000000000000000000 shatters 00000000000000000000000000000000 skimmers 00000000000000000000000000000000 1989-83 00000000000000000000000000000000 1989-84 00000000000000000000000000000000 Societa 00100000000000000000000000000000 Azioni 00100000000000000000000000000000 Manaifatturiera 00100000000000000000000000000000 101.60 00000000000000000000000000000000 9.07 00000000000000000000000000000000 8.74 00000000000000000000000000000000 0.36 00000000000000000000000000000000 undated 00000000000000000000000000000000 Merill 00100000000000000000000000000000 35.5 00000000000000000000000000000000 Keihin 00100000000000000000000000000000 Seiren 00100000000000000000000000000000 Leu 00100000000011000001111101010101 3.865 00000000000000000000000000000000 3.846 00000000000000000000000000000000 Aegon 00100000000000000000000000000000 7.86 00000000000000000000000000000000 AMRO 01000000000000000000000000000000 98.481 00000000000000000000000000000000 87.026 00000000000000000000000000000000 85.60 00000000000000000000000000000000 FAMILY 01000000000111100011111100000001 85.339 00000000000000000000000000000000 investment-newsletter 00000000000000000000000000000000 stock-registration 00000000000000000000000000000000 anti-fraud 00000000000000000000000000000000 nothin 00000000000000000000000000000000 Kimberly 00101111111000101010111000011000 chuckling 00000000000000000000000000000000 face-amount 00000000000000000000000000000000 consenting 00000000000000000000000000000000 injunctions 00000000000100010011101000100011 10-to-1 00000000000000000000000000000000 second-deadliest 00000000000000000000000000000000 Pickin 00100000000000000000000000000000 once-fashionable 00000000000000000000000000000000 dissipated 00000000000000000000000000000000 cornices 00000000000000000000000000000000 trout 00000000000010000100000000001000 thump-thump 00000000000000000000000000000000 junction 00000000000001111110100010100101 PETS 01000000000110011011110000110011 125-billion-a-year 00000000000000000000000000000000 Sweezey 00100000000000000000000000000000 hardship 00000000000111100010101101100111 impassible 00000000000000000000000000000000 remedied 00000000000000000000000000000000 Corp.-Toyota 01000000000000000000000000000000 Corollas 00100000000000000000000000000000 Prizms 00100000000000000000000000000000 tap-tap 00000000000000000000000000000000 Fienberg 00100000000000000000000000000000 steaming 00000000000000000000000000000000 generator 00000000000000010110111000000001 wiggling 00000000000000000000000000000000 sunken 00000000000000000000000000000000 dial-tone 00000000000000000000000000000000 on-ramps 00000000000000000000000000000000 57.4 00000000000000000000000000000000 VISUALIZING 01000000000000000000000000000000 DRI 01000000000000000000000000000000 Stacy 00100000000000000000000000000000 Kotman 00100000000000000000000000000000 constructon 00000000000000000000000000000000 negligibly 00000000000000000000000000000000 public-policy 00000000000000000000000000000000 connotation 00000000000000000000000000000000 crackle 00000000000000000000000000000000 37,300 00000000000000000000000000000000 worker-compensation 00000000000000000000000000000000 Gargantuan 00100000000000000000000000000000 Atop 00100000000000111101000000001010 pejorative 00000000000000000000000000000000 foot-thick 00000000000000000000000000000000 peck 00001111111100011010111000001000 government-business 00000000000000000000000000000000 four-square-block 00000000000000000000000000000000 seawater 00000000000000000000000000000000 fizzes 00000000000000000000000000000000 rupturing 00000000000000000000000000000000 Onlookers 00100000000000000000000000000000 hereabouts 00000000000000000000000000000000 nozzles 00000000000000000000000000000000 onlookers 00000000000000000000000000000000 barricades 00000000011101100111110101100011 helmeted 00000000000000000000000000000000 firemen 00000000000000000000000000000000 Evelyn 00101111111011011000001000011000 Boccone 00100000000000000000000000000000 PRINCE 01000000000111111011111100001000 HENRI 01000000000111101110001000011000 seisho 00000000000000000000000000000000 hereditary 00000000000000000000000000000000 thrift-overhaul 00000000000000000000000000000000 surtaxes 00000000000000000000000000000000 pharmacists 00000000000010000000111000110011 redfish 00000000000000000000000000000000 Gilgore 00100000000000000000000000000000 rambled 00000000000000000000000000000000 seatrout 00000000000000000000000000000000 Fabbri 00100000000000000000000000000000 recuperation 00000000000000000000000000000000 multipart 00000000000000000000000000000000 do-or-die 00000000000000000000000000000000 speckled 00000000000000000000000000000000 wind-swept 00000000000000000000000000000000 wide-scale 00000000000000000000000000000000 12-county 00000000000000000000000000000000 655 00000000000000000000000000000000 scrub 00000000000000000000000000000000 mortgagebacked 00000000000000000000000000000000 10.08 00000000000000000000000000000000 95.75 00000000000000000000000000000000 5.315 00000000000000000000000000000000 grassy 00000000000000000000000000000000 ridges 00000000000000000000000000000000 lagoons 00000000000000000000000000000000 milky 00000000000001100111010011010000 enclosing 00000000000000000000000000000000 canine 00000000000000000000000000000000 26-man 00000000000000000000000000000000 321-99 00000000000000000000000000000000 ignoble 00000000000000000000000000000000 culminates 00000000000000000000000000000000 iron-handed 00000000000000000000000000000000 harshness 00000000000100100111011000001111 characteristically 00000000000000000000000000000000 warmer 00000000000000011001001111000000 bays 00001111111001000100001000001000 BLOOD 01000000000000000000010000100001 Mittag 00100000000000000000000000000000 Aggie 00100000000000000000000000000000 Hermann 00101111111011101000000100001000 1937 00000000000000000000000000000000 hand-picked 00000000000000000000000000000000 strikingly 00000000000000000000000000000000 hewn 00000000000000000000000000000000 husky 00000000000111110000011000101000 Protestantism 00100000000000000000000000000000 feline 00000000000000000000000000000000 11.01 00000000000000000000000000000000 Bonn-sponsored 00100000000000000000000000000000 Cologne 00100000000000000000000000000000 allied 00000000000001001110000100101000 signify 00000000000000000000000000000000 10.11 00000000000000000000000000000000 reform-minded 00000000000000000000000000000000 Modrow 00100000000000000000000000000000 Schabowski 00100000000000000000000000000000 congratulatory 00000000000000000000000000000000 telegram 00000000000111000010001011100111 Unity 00100000000111110001110010100111 hodgepodge 00000000000000000000000000000000 pro-Gorbachev 01000000000000000000000000000000 tampering 00000000000101110110110000100111 O'Loughlin 01000000000000000000000000000000 Erasing 00100000000000000000000000000000 reordering 00000000000000000000000000000000 statehood 00000000000000000000000000000000 7.34 00000000000000000000000000000000 Unloved 00100000000000000000000000000000 Ulbricht 00100000000000000000000000000000 99.80 00000000000000000000000000000000 compliments 00000000000000000000000000000000 Romania 00100000000111110100111101101000 less-self-confident 00000000000000000000000000000000 Czechoslovaks 00100000000000000000000000000000 Bulgarians 00100000000000000000000000000000 summaries 00000000000000000000000000000000 aimless 00000000000000000000000000000000 Herrman 00100000000000000000000000000000 Gingerly 00100000000000000000000000000000 whispered 00000000000000000000000000000000 socialists 00000000000111111100011110110011 cleanse 00000000000000000000000000000000 pastors 00000000000011000000111000110011 utopia 00000000000000000000000000000000 5.38 00000000000000000000000000000000 Imprisoned 00100001010101110100010000110010 typified 00000000000000000000000000000000 warrior 00000000000001001000110000000001 rankled 00000000000000000000000000000000 steadfast 00000000000000000000000000000000 95.39 00000000000000000000000000000000 comrade 00000000000000000000000000000000 segmented 00000000000000000000000000000000 Slower 00100000000000101000001111000000 non-dairy-creamer 00000000000000000000000000000000 Chongju 00100000000000000000000000000000 Doosan 00100000000000000000000000000000 roasted 00000000000000000000000000000000 nondairy 00000000000000000000000000000000 creamer 00000000000000000000000000000000 150.7 00000000000000000000000000000000 Taster 00100000000000000000000000000000 willingess 00000000000000000000000000000000 Ke 00100000000000000000000000000000 Zaishuo 00100000000000000000000000000000 Chinese-British 01000000000000000000000000000000 Liaison 00100000000110010110110000100111 fait 00000000000000000000000000000000 accompli 00000000000000000000000000000000 Rafi 00100000000000000000000000000000 Har-Lev 01000000000000000000000000000000 Sheraton-Pan 01000000000000000000000000000000 409,000 00000000000000000000000000000000 Karches 00100000000000000000000000000000 401-18 00000000000000000000000000000000 moat 00000000000000000000000000000000 Leng 00100000000000000000000000000000 Chye 00100000000000000000000000000000 dishonestly 00000000000000000000000000000000 Heatherington 00100000000000000000000000000000 Queks 00100000000000000000000000000000 Leong 00100000000000000000000000000000 Tissues 00100000000111100111001010100011 Mongolia 00100000000000000000000000000000 20-mile 00000000000000000000000000000000 catheters 00000000000000000000000000000000 co-developers 00000000000000000000000000000000 jokingly 00000000000000000000000000000000 advanced-ceramics 00000000000000000000000000000000 Chien-Min 01000000000000000000000000000000 sandpaper 00000000000000000000000000000000 190,000 00000000000000000000000000000000 Hempel 00100000000000000000000000000000 WAVE 01000000000111110111101000111111 Browne 00101111111000011101001000001000 Brachfeld 00100000000000000000000000000000 Tirello 00100000000000000000000000000000 presages 00000000000000000000000000000000 Marver 00100000000000000000000000000000 Verde 00100000000000000000000000000000 thrives 00000000000000000000000000000000 SunCor 01000000000100101001111000101000 Malapai 00100000000000000000000000000000 Dorado 00100000000000000000000000000000 inking 00000000000000000000000000000000 Saalfeld 00100000000000000000000000000000 rollup 00000000000000000000000000000000 ensnarled 00000000000000000000000000000000 parachuting 00000000000000000000000000000000 commends 00000000000000000000000000000000 gunslinging 00000000000000000000000000000000 Graphic 00100000000000110010101010110000 Takagi 00100000000000000000000000000000 Jotaro 00100000000000000000000000000000 alumnus 00000000000000000000000000000000 stonewalled 00000000000000000000000000000000 cratering 00000000000000000000000000000000 takeover-proof 00000000000000000000000000000000 13D 01000000000000000000000000000000 Helane 00100000000000000000000000000000 Becker 00101111111100001100001000001000 airfare 00000000000000000000000000000000 pummel 00000000000000000000000000000000 Kaul 00101111110010111100000010001000 takeover-threat 00000000000000000000000000000000 industrial-production 00000000000000000000000000000000 19.60 00000000000000000000000000000000 1,103.11 00000000000000000000000000000000 200.2 00000000000000000000000000000000 Amiga 00100000000000000000000000000000 341.76 00000000000000000000000000000000 320.54 00000000000000000000000000000000 189.32 00000000000000000000000000000000 314,000 00000000000000000000000000000000 231,000 00000000000000000000000000000000 CNA 01000000000000000000000000000000 heavy-construction 00000000000000000000000000000000 Ameron 00100000000000000000000000000000 CRS 01000000000000000000000000000000 Sirrine 00100000000000000000000000000000 Greiner 00100000000000000000000000000000 Lafarge 00100000001100101010111100101000 Southdown 00100000000111001101111100101000 Eljer 00100000000000000000000000000000 14-point 00000000000000000000000000000000 191 00000000000000000000000000000000 5.10 00000000000000000000000000000000 five-session 00000000000000000000000000000000 2.91 00000000000000000000000000000000 378.07 00000000000000000000000000000000 12,500,000 00000000000000000000000000000000 748 00000000000000000000000000000000 621 00000000000000000000000000000000 cocoa-trading 00000000000000000000000000000000 Simple 00100000000000001010011010010000 indefinite 00000000000000101010010100010000 TIRED 01000000001111101011110000110010 10-week 00000000000000000000000000000000 Windflower 00100000000000000000000000000000 Vax 00100000000010011000010000110000 system-management 00000000000000000000000000000000 38-cents-a-share 00000000000000000000000000000000 596.8 00000000000000000000000000000000 self-tender 00000000000000000000000000000000 odd-lot 00000000000000000000000000000000 Tendered 00100000100111110100010000110010 61.125 00000000000000000000000000000000 73.6 00000000000000000000000000000000 Duffus 00100000000000000000000000000000 megawatt 00000000000000000000000000000000 Surplus 00100000000110101101100000100111 Generating 00100000000000010011110001000000 75.3 00000000000000000000000000000000 345.5 00000000000000000000000000000000 311.6 00000000000000000000000000000000 1,027 00000000000000000000000000000000 Dunlaevy 00100000000000000000000000000000 Maumee 00100000000000000000000000000000 22,300 00000000000000000000000000000000 0.37 00000000000000000000000000000000 Hoses 00100000000000000000000000000000 spring-brake 00000000000000000000000000000000 piston-brake 00000000000000000000000000000000 456.2 00000000000000000000000000000000 422 00000000000000000000000000000000 Giancarlo 00100000000000000000000000000000 Parretti 00100000000000000000000000000000 13.79 00000000000000000000000000000000 TRIMMING 01000000000111001101011101000000 76.66 00000000000000000000000000000000 Hammacher 00100000000000000000000000000000 Geneva-based 00100000000000000000000000000000 lira 00000000000111001000011000010111 Milan-based 00100000000000000000000000000000 181.9 00000000000000000000000000000000 Lucisano 00100000000000000000000000000000 16.66 00000000000000000000000000000000 Calisto 00100000000000000000000000000000 Tanzi 00100000000000000000000000000000 23.34 00000000000000000000000000000000 smelled 00000000000000000000000000000000 1-800-453-9000 00000000000000000000000000000000 Moffett 00100000000000000000000000000000 watchword 00000000000000000000000000000000 835 00000000000000000000000000000000 876 00000000000000000000000000000000 3.34 00000000000000000000000000000000 4.0775 00000000000000000000000000000000 Kuse 00100000000000000000000000000000 thirst 00000000000000000000000000000000 temblor-prone 00000000000000000000000000000000 earthquake-trained 00000000000000000000000000000000 loss-recovery 00000000000000000000000000000000 sheriffs 00000000000000000000000000000000 2,480 00000000000000000000000000000000 cots 00000000000000000000000000000000 pints 00000000000000000000000000000000 Type-O 01000000000000000000000000000000 Huricane 00100000000000000000000000000000 Einar 00100000000000000000000000000000 Borrowers 00100000000111001111110000110011 Strokes 00100000000110010000010101100011 137.20 00000000000000000000000000000000 revalued 00000000000000000000000000000000 trauma 00000000000101001100110000000001 nontraditional 00000000000000000000000000000000 486.30 00000000000000000000000000000000 modems 00000000000000000000000000000000 bristled 00000000000000000000000000000000 Moral 00100000000111000000000000110000 bona 00000000000111111011001100010000 fide 00000000000000000110001100010000 humid 00000000000000000000000000000000 courageous 00000000000011100101000010010000 Japan-U.S 01000000000000000000000000000000 38.3 00000000000000000000000000000000 less-than-successful 00000000000000000000000000000000 Taber 00100000000000000000000000000000 salicylic 00000000000000000000000000000000 methyl 00000000000000000000000000000000 salicylate 00000000000000000000000000000000 aspirin 00000000000000001010010000100001 salicylates 00000000000000000000000000000000 51.2 00000000000000000000000000000000 515.1 00000000000000000000000000000000 MK-Ferguson 01000000000000000000000000000000 Idaho-based 00100000000000000000000000000000 97.8 00000000000000000000000000000000 8.96 00000000000000000000000000000000 nightclubs 00000000000000000000000000000000 harassing 00000000000000000000000000000000 Dorena 00100000000000000000000000000000 claudication 00000000000000000000000000000000 reproval 00000000000000000000000000000000 complainant 00000000000000000000000000000000 Dryden 00100000000000000000000000000000 begged 00000000000001101101010000110010 forgiveness 00000000000111101111111000111001 Schlemmer 00100000000000000000000000000000 1.23-a-pound 00000000000000000000000000000000 80.6 00000000000000000000000000000000 24.1 00000000000000000000000000000000 85.8 00000000000000000000000000000000 commercial-credit 00000000000000000000000000000000 mortgage-banking 00000000000000000000000000000000 279.0 00000000000000000000000000000000 248.2 00000000000000000000000000000000 Benj 00100000000000000000000000000000 84,500 00000000000000000000000000000000 coincides 00000000000000000000000000000000 4,800 00000000000000000000000000000000 Shuwa 00100000000101001100111100101000 repayable 00000000000000000000000000000000 1.1960 00000000000000000000000000000000 210.8 00000000000000000000000000000000 Exclusive 00100000000000010101010100010000 415.3 00000000000000000000000000000000 390.5 00000000000000000000000000000000 Larkin 00100000000000000000000000000000 redoubt 00000000000000000000000000000000 13-nation 00000000000000000000000000000000 Fudosan 00100000000000000000000000000000 ADIA 01000000000000000000000000000000 ADVANCED 01000000000000000011101010110000 MICRO 01000000000000010010011010110000 DEVICES 01000000000111101101011001001001 AMDAHL 01000000000111011011011100101000 BUILDING 01000000000111010010110001000000 MAINTENANCE 01000000000000000011000001100001 PRESIDENT 01001111110110110111111000001101 COS. 01000000000000000000000000000000 container-ship 00000000000000000000000000000000 Route 00100000000111001110011000000001 overpass 00000000000000000000000000000000 ANACOMP 01000000000000000000000000000000 Xidex 00100000000000000000000000000000 microfilm 00000000000000000000000000000000 637 00000000000000000000000000000000 ANTHEM 01000000000000000000000000000000 ELECTRONICS 01000000000000000111011010110000 blighted 00000000000000000000000000000000 APPLIED 01000000000111100000110000110010 MATERIALS 01000000000000000001000111001001 independent-minded 00000000000000000000000000000000 functional 00000000010000011010000000110000 ATARI 01000000000000100011111100101000 BANKAMERICA 01000000000111100011001100101000 BECHTEL 01000000000001010011010100101000 Backup 00100000000000000110100000100001 hand-carried 00000000000000000000000000000000 BIO-RAD 01000000000000000000000000000000 LABORATORIES 01000000000010000001001011101001 clinical-products 00000000000000000000000000000000 BORLAND 01000000000111001100111000101000 53rd 00000000000000000000000000000000 BUSINESSLAND 01000000000111010100111100101000 CARTER 01001111111000001100100000001000 HAWLEY 01001111111111000000010000101000 HALE 01001111111000111000111000001000 Seimei 00100000000000000000000000000000 CHEVRON 01000000000111110111011100101000 Ramone 00100000000000000000000000000000 CLOROX 01000000000011101100111100101000 Kingsford 00100000000000000000000000000000 Expects 00100000000111111100101000110010 COHERENT 01000000001111000001000000010000 159 00000000000000000000000000000000 CONSOLIDATED 01000000000000000000000100101000 FREIGHTWAYS 01000000000000000000000000000000 CF 01000000000000000000000000000000 COOPER 01001111111100101011110000001000 DAYTON 01001111111110101000101000101000 HUDSON 01001111111001010011010001001000 countertop 00000000000000000000000000000000 abashed 00000000000000000000000000000000 attuned 00000000000000000000000000000000 DIASONICS 01000000000000111111111100101000 Versicherung 00100000000000000000000000000000 stockroom 00000000000000000000000000000000 DIGITAL 01000000000010001010100100101000 EQUIPMENT 01000000000101100000001001001001 DREYER'S 01000000000000000000000000000000 GRAND 01000000000000000000010110110000 ICE 01000000000111111110001100100001 CREAM 01000000000000000001010100000001 Colonia 00100000000000000000000000000000 EVEREX 01000000000000000000000000000000 fiber-end 00000000000000000000000000000000 377 00000000000000000000000000000000 EXXON 01000000000111101100011100101000 FORD 01000000000111101101011000101000 MOTOR 01000000000000000010100001001000 92.4 00000000000000000000000000000000 satellite-assembly 00000000000000000000000000000000 GAP 01000000000110101001100000100111 GENENTECH 01000000000111011011001100101000 334.8 00000000000000000000000000000000 F.H. 01000000000000000000000000000000 Quatre 00100000000000000000000000000000 MOTORS 01000000000000011110010001001000 123.6 00000000000000000000000000000000 750-car-a-day 00000000000000000000000000000000 GOLDEN 01000000000101000010001000110000 WEST 01000000000111110000101110101000 HEWLETT-PACKARD 01000000000000000000000000000000 HEXCEL 01000000000000000000000000000000 bunches 00000000000000000000000000000000 HOMESTAKE 01000000000110100011000100101000 MINING 01000000000000000011011010110000 miner 00000000000100101110010010110101 432.6 00000000000000000000000000000000 HOMESTEAD 01000000000110110011100100100001 Millbrae 00100000000000000000000000000000 562 00000000000000000000000000000000 INMAC 01000000000000000000000000000000 power-surge 00000000000000000000000000000000 Braye 00100000000000000000000000000000 uninterruptable 00000000000000000000000000000000 INTEL 01000000000111100100011100101000 BUSINESS 01000000000100100000100010100001 MACHINES 01000000000011001111011010101001 Almaden 00100000000000000000000000000000 KAISER 01000000000110101010111000101000 ALUMINUM 01000000000000001100011010110000 28-story 00000000000000000000000000000000 LOCKHEED 01000000000110101111011100101000 cholesterol-rich 00000000000000000000000000000000 Missiles 00100000000111101110010110001001 submarine-based 00000000000000000000000000000000 LONGS 01000000000000000000000000000000 LOGIC 01000000000110110011101001100111 Via 00100000000000000110011010000010 MEASUREX 01000000000000000000000000000000 SEMICONDUCTOR 01000000000000000101011010110000 Piping 00100000000100110011111010110000 waste-treatment 00000000000000000000000000000000 NORDSTROM 01000000001111011010111100101000 59-store 00000000000000000000000000000000 ORACLE 01000000000110001100100100101000 584 00000000000000000000000000000000 GAS 01000000000001000010011010110000 substations 00000000000000000000000000000000 Landing 00100000000000000111100000100001 residences 00000000000110000111110001100011 69,000 00000000000000000000000000000000 reconnect 00000000000000000000000000000000 TELESIS 01000000000010000111110110101000 GROUP 01000000000110100100101101110101 PROCTER 01001111111111110111111010101000 GAMBLE 01001111111111111011110001001000 120.8 00000000000000000000000000000000 RAYCHEM 01000000011010101010111100101000 ROSS 01001111111000001010111000001000 SAFEWAY 01000000000000011101000100101000 CHARLES 01001111111000000001100110011000 SCHWAB 01001111111100111100110000001000 SEAGATE 01000000000110100000100100101000 TRANSPLANT 01000000000000000110101011100001 SOUTHERN 01000000000000000000110110101000 TRANSPORTATION 01000000000010001001110110110000 SUN 01000000000111101111011000101000 MICROSYSTEMS 01000000000000010000100001001000 TANDEM 01000000000000011100100100101000 TRANSAMERICA 01000000000111100010111100101000 pyramid-shaped 00000000000000000000000000000000 VARIAN 01000000000000000010110000001000 VLSI 01000000000000000000000000000000 171.9 00000000000000000000000000000000 WATKINS-JOHNSON 01000000000000000000000000000000 292 00000000000000000000000000000000 WELLS 01001111111010101100010000001000 FARGO 01001111111101010011111010101000 inoperable 00000000000000000000000000000000 WYSE 01000000000110101100100100101000 3COM 01000000000000000000000000000000 substandard 00000000000000000000000000000000 Vie 00100000000111111000000110110010 tragically 00000000000000000000000000000000 well-traveled 00000000000000000000000000000000 Wickliffe 00100000000000000000000000000000 affinities 00000000000000000000000000000000 Moselle 00100000000000000000000000000000 Supervisor 00100000000111100111011110110101 Rhin 00100000000000000000000000000000 calamitous 00000000000000000000000000000000 mid-1940s 00000000000000000000000000000000 horizontally 00000000000000000000000000000000 10.95 00000000000000000000000000000000 bumper-to-bumper 00000000000000000000000000000000 thespian 00000000000000000000000000000000 biophysicist 00000000000000000000000000000000 revolve 00000000000000000000000000000000 22.82 00000000000000000000000000000000 nervy 00000000000000000000000000000000 cash-or-shares 00000000000000000000000000000000 multi-column 00000000000000000000000000000000 bilingual 00000000000001001000000000110000 Funded 00100000010001000001110000110010 documentaries 00000000000000000000000000000000 pay-and-benefit 00000000000000000000000000000000 docudramas 00000000000000000000000000000000 Uzi 00100000000000000000000000000000 Preferred 00100000000000000010110101010000 Coupled 00100000000111111011100000110010 Jelinski 00100000000000000000000000000000 Heston 00100000000000000000000000000000 Charlton 00100000000000000000000000000000 MRI 01000000000000000000000000000000 carping 00000000000000000000000000000000 Beazer 00100000000100001011110000001000 Koppers 00100000000100100010101100101000 142.5 00000000000000000000000000000000 224.5 00000000000000000000000000000000 114.7 00000000000000000000000000000000 180.7 00000000000000000000000000000000 92.6 00000000000000000000000000000000 75.6 00000000000000000000000000000000 29.90 00000000000000000000000000000000 24.68 00000000000000000000000000000000 CalTech 01000000000000000000000000000000 Seismographic 00100000000000000000000000000000 20-to-30-mile 00000000000000000000000000000000 rupture 00000000000000000000000000000000 hopscotched 00000000000000000000000000000000 L'Heureux 01000000000000000000000000000000 Segar 00100000000000000000000000000000 geosciences 00000000000000000000000000000000 liquefies 00000000000000000000000000000000 quilt 00000000000000000000000000000000 seismographic 00000000000000000000000000000000 creditworthy 00000000000000000000000000000000 pre-1950s 00000000000000000000000000000000 unreinforced 00000000000000000000000000000000 Elton 00100000000000000000000000000000 sheared 00000000000000000000000000000000 Reinforcing 00100000000010110101011101000000 faultlines 00000000000000000000000000000000 Calaveras 00100000000000000000000000000000 proxies 00000000000101101100110100011001 merchandised 00000000000000000000000000000000 DIET 01000000000101101010010000000001 Indies 00100000000000000000000000000000 non-caffeine 00000000000000000000000000000000 STRUGGLED 01000000001010101011101000110010 glass-strewn 00000000000000000000000000000000 HONECKER 01001111111101011100110010001000 WAS 01000000000000000000100000010010 gall-bladder 00000000000000000000000000000000 hard-liner 00000000000000000000000000000000 HUNGARY 01000000000111110000111101101000 ADOPTED 01000000000110011001010000110010 21-member 00000000000000000000000000000000 Biederman 00100000000000000000000000000000 Fitzwilliam 00100000000111100000101001101000 377.60 00000000000000000000000000000000 unhelpful 00000000000000000000000000000000 Likud 00100000000010000010001110101000 Castro-led 00100000000000000000000000000000 colonies 00000000000000000000000000000000 embargoes 00000000000000000000000000000000 three-week-old 00000000000000000000000000000000 72-hour 00000000000000000000000000000000 Homart 00100000000000000000000000000000 disallowed 00000001010011010100010000110010 Kohut 00100000000000000000000000000000 Barkley 00100000000000000000000000000000 3.29 00000000000000000000000000000000 94.625 00000000000000000000000000000000 14.60 00000000000000000000000000000000 12.76 00000000000000000000000000000000 3.44 00000000000000000000000000000000 14.85 00000000000000000000000000000000 11.41 00000000000000000000000000000000 13.34 00000000000000000000000000000000 12.38 00000000000000000000000000000000 bad-law 00000000000000000000000000000000 11-member 00000000000000000000000000000000 Nomination 00100000000111111111000001100111 Shook 00100000001010001001001000110010 nastiest 00000000000000000000000000000000 verve 00000000000000000000000000000000 subtitle 00000000000000000000000000000000 demonized 00000000000000000000000000000000 piquant 00000000000000000000000000000000 hard-wire 00000000000000000000000000000000 devious 00000000000000000000000000000000 preventative 00000000000000000000000000000000 attackers 00000000000000000000000000000000 Neas 00100000000000000000000000000000 Norm 00100000000111100000110011100111 imaginary 00000000000000000000000000000000 horribles 00000000000000000000000000000000 emoted 00000000000000000000000000000000 Dworkin 00100000000000000000000000000000 DIAPER 01000000000000100101011010110000 Hurwitt 00100000000000000000000000000000 anti-Bork 01000000000000000000000000000000 successively 00000000001111001000010001110010 Demographics 00100000000110001011111101100011 converged 00000000000000000000000000000000 demonizing 00000000000000000000000000000000 Pozen 00100000000000000000000000000000 battlefield 00000000000111110011100000100001 percenter 00000000000000000000000000000000 reportorial 00000000000000000000000000000000 Bickel 00100000000000000000000000000000 majoritarian 00000000000000000000000000000000 transient 00000000000000000000000000000000 Wilcox 00101111111100111101110001001000 judicially 00000000000000000000000000000000 cohere 00000000000000000000000000000000 reflective 00000000000000000000000000000000 Griswold 00100000000000000000000000000000 degrading 00000000000000000000000000000000 fondness 00000000000000000000000000000000 flashier 00000000000011011000001000110000 Picassos 00100000000000000000000000000000 Impressionists 00100000000000000000000000000000 hardbound 00000000000000000000000000000000 Labs 00100000000110100100110001100011 Mirabello 00100000000000000000000000000000 Bockius 00100000000000000000000000000000 Oman 00100000000111111001011101101000 receptivity 00000000000000000000000000000000 art-acquisition 00000000000000000000000000000000 arrow 00000000000111111001110100100001 cash-up-front 00000000000000000000000000000000 super-absorbent 00000000000000000000000000000000 Coe 00100000000000000000000000000000 squeaky-clean 00000000000000000000000000000000 MRI-type 01000000000000000000000000000000 Askin 00100000000000000000000000000000 auction-house 00000000000000000000000000000000 waives 00000000000000000000000000000000 old-guard 00000000000000000000000000000000 ironfist 00000000000000000000000000000000 Freie 00100000000000000000000000000000 Jugend 00100000000000000000000000000000 despairing 00000000000000000000000000000000 arthritic 00000000000000000000000000000000 Abandoning 00100000000111100001011101000000 custom-made 00000000000000000000000000000000 Cartoonists 00100000000000000000000000000000 mocked 00000000000000000000000000000000 embassies 00000000000111000101110001100011 halogen 00000000000000000000000000000000 5.2180 00000000000000000000000000000000 celebrations 00000000001000110111110101100011 Hyde-to-Jekyll 01000000000000000000000000000000 half-states 00000000000000000000000000000000 Pilsudski 00100000000000000000000000000000 interwar 00000000000000000000000000000000 nonsocialist 00000000000000000000000000000000 Wilsonian 00100000000000000000000000000000 rediscover 00000000000000000000000000000000 willy-nilly 00000000000000000000000000000000 succumbing 00000000000000000000000000000000 apologized 00000000000111100011101000110010 chanting 00000000000000000000000000000000 Gorby 00100000000000000000000000000000 admirably 00000100110000000000010001110010 Politically 00100000000100000000000001110010 kindness 00000000000000000000000000000000 Shlaes 00100000000000000000000000000000 INSURERS 01000000000000000010100001110011 FACING 01000000000000000100010101000000 anti-inflation 00000000000000000000000000000000 213.97 00000000000000000000000000000000 0.57 00000000000000000000000000000000 3371.36 00000000000000000000000000000000 129.90 00000000000000000000000000000000 0.18 00000000000000000000000000000000 130.36 00000000000000000000000000000000 0.39 00000000000000000000000000000000 0.0182 00000000000000000000000000000000 Trevor 00100000000000000000000000000000 impressively 00000000000000000000000000000000 then-current 00000000000000000000000000000000 140.97 00000000000000000000000000000000 liquidity-enhancing 00000000000000000000000000000000 Pincus 00100000000111111010001001001000 militate 00000000000010001001010110110010 368.70 00000000000000000000000000000000 368.15 00000000000000000000000000000000 20.85 00000000000000000000000000000000 unhurt 00000000000000000000000000000000 20.56 00000000000000000000000000000000 54.58 00000000000000000000000000000000 60.6 00000000000000000000000000000000 composition 00000000000111110011111000001111 near-market 00000000000000000000000000000000 1.2645 00000000000000000000000000000000 14.27 00000000000000000000000000000000 Terminator 00100000000000000000000000000000 subsumed 00000000000000000000000000000000 neophyte 00000000000000000000000000000000 unsubordinated 00000000000000000000000000000000 Admistration 00100000000000000000000000000000 teens 00000000000110000011110000110011 judicious 00000000000000000000000000000000 Rejection 00100000000111110111111101001111 heartbeat 00000000000111010101110010100111 pancreas 00000000000000000000000000000000 metabolized 00000000000000000000000000000000 fungus 00000000000000000000000000000000 no-more-nonsense 00000000000000000000000000000000 Transplantation 00100000000000000000000000000000 life-saving 00000000000000000000000000000000 reshuffled 00000000000000000000000000000000 immunologist 00000000000000000000000000000000 anti-rejection 00000000000000000000000000000000 capital-market 00000000000000000000000000000000 nausea 00000000000010010111110010100111 dosage 00000000000000000111100011100001 Babcock 00101111111100011111111010101000 Man-Made 01000000000000000000000000000000 electrocardiogram 00000000000000000000000000000000 rehash 00000000000000000000000000000000 Mogavero 00100000000000000000000000000000 inhumane 00000000000000000000000000000000 spillover 00000000000000000000000000000000 altruism 00000000000000000000000000000000 co-exist 00000000000000000000000000000000 latter-day 00000000000000000000000000000000 scalawags 00000000000000000000000000000000 ice-baggers 00000000000000000000000000000000 toss 00000000001100101110101110110010 rote 00000000000000000000000000000000 economic-efficiency 00000000000000000000000000000000 Signed 00100000000111101001010000110010 Honors 00100001100010001111000000010010 detached 00000000000110101101101001000000 fervently 00000000000000000000000000000000 Galax 00100000000000000000000000000000 anti-profiteering 00000000000000000000000000000000 Piscataway 00100000000000000000000000000000 thrashed 00000000000000000000000000000000 DyDee 01000000000000000000000000000000 Potts 00100000000000000000000000000000 Karim 00100000000000000000000000000000 beware 00000000000111101111001000101111 Scambio 00100000000000000000000000000000 tornadoes 00000000000000000000000000000000 Alicia 00100000000000000000000000000000 Mongan 00100000000000000000000000000000 dazzled 00000000000000000000000000000000 noteworthy 00000000000001010101110110010000 subscribing 00000000000000000000000000000000 patronize 00000000000000000000000000000000 post-Hugo 01000000000000000000000000000000 revivals 00000000000000000000000000000000 Bleacher 00100000000000000000000000000000 Bums 00100000000000000000000000000000 Wrigley 00100000000000000000000000000000 bleachers 00000000000000000000000000000000 spitting 00000000010111010110100001000000 Revivals 00100000000000000000000000000000 troupes 00000000000000000000000000000000 non-family 00000000000000000000000000000000 Families 00100000000111101111111100110011 Elena 00100000000000000000000000000000 falseness 00000000000000000000000000000000 vanity 00000000000111101000010000001000 gravel-chewing 00000000000000000000000000000000 Pate 00100000001101110100000000001000 lendable 00000000000000000000000000000000 zounds 00000000000000000000000000000000 1666 00000000000000000000000000000000 bullhorn 00000000000000000000000000000000 no-nonsense 00000000000000000000000000000000 16-inch 00000000000000000000000000000000 iambic 00000000000000000000000000000000 pentameter 00000000000000000000000000000000 pettiness 00000000000000000000000000000000 slimmed 00000000100100101001001000110010 Thatcherite 00100000000000000000000000000000 aristocracy 00000000000000000000000000000000 sycophants 00000000000000000000000000000000 syllable 00000000000000000000000000000000 rhyming 00000000000000000000000000000000 couplets 00000000000000000000000000000000 Americanized 00100000000000000000000000000000 Darlow 00100000000000000000000000000000 berated 00000000000000000000000000000000 all-night 00000000000000000000000000000000 Compton 00100000000100110000010000001000 Spago 00100000000000000000000000000000 300-year-old 00000000000000000000000000000000 Steinbeck 00100000000000000000000000000000 Closer 00100000000000100000111000110010 hard-nosed 00000000000000000000000000000000 boardrooms 00000000000000000000000000000000 blood-filled 00000000000000000000000000000000 silences 00000000000000000000000000000000 menacing 00000000000000000000000000000000 stares 00000000001000101000001000110010 reverential 00000000000000000000000000000000 Silences 00100000000000000000000000000000 gestured 00000000000000000000000000000000 onstage 00000000000000000000000000000000 Conduits 00100000000000000000000000000000 dissection 00000000000000000000000000000000 sly 00000000000010011100011010010000 grins 00000000111111001111000000010010 grimaces 00000000000000000000000000000000 sputtering 00000000000000000000000000000000 linebackers 00000000000000000000000000000000 disco 00000000000000000000000000000000 Hollis 00101111111110111100001000001000 boxer 00000000000111111000000000001000 liveried 00000000000000000000000000000000 eldest 00000000000000000000000000000000 misbegotten 00000000000000000000000000000000 homecoming 00000000000000000000000000000000 Arney 00100000000000000000000000000000 Moira 00100000000000000000000000000000 Colleen 00100000000000000000000000000000 Dewhurst 00100000000000000000000000000000 overpower 00000000000000000000000000000000 in-law 00000000000000000000000000000000 ancestry 00000000000000000000000000000000 Halsted 00100000000000000000000000000000 troupe 00000000000100111100110100000001 211 00000000000000000000000000000000 one-set 00000000000000000000000000000000 Salesman 00100000000111110111101110110101 Loman 00100000000000000000000000000000 inhibited 00000000000000000000000000000000 Bonecrusher 00100000000111111011000110010000 Hacksaw 00100000000000000000000000000000 mercurial 00000000000000000000000000000000 Malkovich 00100000000000000000000000000000 Chronicles 00100000000000000000000000000000 Glenne 00100000000000000000000000000000 Headly 00100000000000000000000000000000 crumbles 00000000000000000000000000000000 10,450,000 00000000000000000000000000000000 463.28 00000000000000000000000000000000 453.05 00000000000000000000000000000000 4,343 00000000000000000000000000000000 147.6 00000000000000000000000000000000 1,271 00000000000000000000000000000000 811 00000000000000000000000000000000 jockeying 00000000000000000000000000000000 379.46 00000000000000000000000000000000 Insurance-related 00100000000000000000000000000000 3.11 00000000000000000000000000000000 Fox-Pitt 01000000000000000000000000000000 Kelton 00100000000000000000000000000000 462,900 00000000000000000000000000000000 137,200 00000000000000000000000000000000 517,500 00000000000000000000000000000000 455.29 00000000000000000000000000000000 Rales 00101111111011001000000000001000 computer-dependent 00000000000000000000000000000000 Stork 00100000000000000000000000000000 335,700 00000000000000000000000000000000 excused 00000000000000000000000000000000 Killion 00100000000000000000000000000000 Containment 00100000000000000000011111111001 Compounding 00100000000111101110100000001010 Finanziario 00100000000000000000000000000000 smidgins 00000000000000000000000000000000 Velcro 00100000000000000000000000000000 PIR 01000000000000000000000000000000 736 00000000000000000000000000000000 51%-held 00000000000000000000000000000000 append 00000000000000000000000000000000 Denied 00100000000011010001110111000010 surest 00000000000000000000000000000000 jogger 00000000000000000000000000000000 telephoning 00000000000000000000000000000000 ridiculed 00000000000000000000000000000000 fastened 00000000000000000000000000000000 counter-argument 00000000000000000000000000000000 59-dealer 00000000000000000000000000000000 Feess 00100000000000000000000000000000 Payola 00100000000000000000000000000000 44-year-old 00000000000000000000000000000000 E-2C 01000000000000000000000000000000 Sorenson 00100000000000000000000000000000 Plane 00100000000111101111001001000101 Malec 00100000000000000000000000000000 strobe 00000000000000000000000000000000 co-managed 00000000000000000000000000000000 Mutual-fund 00100000000000000000000000000000 38.9 00000000000000000000000000000000 147,300-share 00000000000000000000000000000000 Tea 00100000000011010101101100100001 RIVER 01000000000000000000100010100101 RUN 01000000000111101110010110110010 30.88 00000000000000000000000000000000 28.375 00000000000000000000000000000000 1,062 00000000000000000000000000000000 Kinji 00100000000000000000000000000000 1,143 00000000000000000000000000000000 INTEREST-RATE 01000000000000000000000000000000 PLAYER 01000000000111101111111010110101 peacemaker 00000000000000000000000000000000 125,075 00000000000000000000000000000000 28.43 00000000000000000000000000000000 28.15 00000000000000000000000000000000 bullishness 00000000000000000000000000000000 Stoecklin 00100000000000000000000000000000 Pae 00100000000000000000000000000000 over-leveraged 00000000000000000000000000000000 state-court 00000000000000000000000000000000 W.G. 01000000000000000000000000000000 Beebe 00100000000000000000000000000000 mortgage-securities 00000000000000000000000000000000 abounds 00000000000000000000000000000000 Iaciofano 00100000000000000000000000000000 elapsed 00000000000000000000000000000000 TIMES 01000000000000000000000010011011 SQUARE 01000000000000010010010101010000 co-sponsoring 00000000000000000000000000000000 adhere 00000000000110010111010110110010 Tese 00100000000000000000000000000000 business-related 00000000000000000000000000000000 VA-backed 01000000000000000000000000000000 EXPANDS 01000000001110000011000000010010 tsunami 00000000000000000000000000000000 El-Abed 01000000000000000000000000000000 Semmelman 00100000000000000000000000000000 CANADIAN 01000000000000000000000100110000 AMBASSADOR 01000000000111111000001100100111 57.6 00000000000000000000000000000000 Scheetz 00100000000000000000000000000000 Stikeman 00100000000000000000000000000000 Canadian-U.S. 01000000000000000000000000000000 QUOTABLE 01000000000000000000000000000000 syndciated 00000000000000000000000000000000 pronouncements 00000000000111111001101000100011 YOM 01000000000000000000000000000000 KIPPUR 01000000000000000000000000000000 EGYPT 01000000000111111011111101101000 CRASHED 01000000000110100110001000110010 holiest 00000000000000000000000000000000 far-afield 00000000000000000000000000000000 sedate 00000000000000000000000000000000 irresistable 00000000000000000000000000000000 unorthodox 00000000000000010100110100010000 embargos 00000000000000000000000000000000 Secondary 00100000000111111010111110110000 relabeling 00000000000000000000000000000000 car-happy 00000000000000000000000000000000 oil-consuming 00000000000000000000000000000000 Shortage 00100000000110110111101010100111 mile-long 00000000000000000000000000000000 Makwah 00100000000000000000000000000000 5-a-barrel 00000000000000000000000000000000 35-cents-a-gallon 00000000000000000000000000000000 Ace 00100000000110100011011100100001 35.9 00000000000000000000000000000000 14-month 00000000000000000000000000000000 Tarnopol 00100000000000000000000000000000 Mattone 00100000000000000000000000000000 Michaelcheck 00100000000000000000000000000000 stockbrokerage 00000000000000100100000010110000 Jersey-based 00100000000000000000000000000000 Reeves 00101111111001111100001000001000 Distiller 00100000000111100101100001110101 McCartin 01000000000000000000000000000000 Showdown 00100000000011101110110000100111 diseased 00000000000000000000000000000000 137.5 00000000000000000000000000000000 144.35 00000000000000000000000000000000 Industriale 00100000000000000000000000000000 19931999 00000000000000000000000000000000 TESTS 01000000000101101010001000100011 7.081 00000000000000000000000000000000 7.145 00000000000000000000000000000000 88.35 00000000000000000000000000000000 co-host 00000000000000000000000000000000 verbally 00000000000000000000000000000000 self-destructed 00000000000000000000000000000000 2,800-year-old 00000000000000000000000000000000 double-A-1 01000000000000000000000000000000 SP1-plus 01000000000000000000000000000000 Purepac 00100000000000000000000000000000 55.8 00000000000000000000000000000000 7.26 00000000000000000000000000000000 1989-82 00000000000000000000000000000000 42.3 00000000000000000000000000000000 Hanshin 00100000000000000000000000000000 Toyobo 00100000000000000000000000000000 5000 00000000000000000000000000000000 Sammi 00100000000000000000000000000000 Suh 00100000000000000000000000000000 Mouth 00100000000111101101011110000001 15.44 00000000000000000000000000000000 non-call 00000000000000000000000000000000 96.808 00000000000000000000000000000000 99.691 00000000000000000000000000000000 99.672 00000000000000000000000000000000 doubleA-2 01000000000000000000000000000000 Cosmetic 00100000000001111010000000110000 drug-approval 00000000000000000000000000000000 off-the-record 00000000000000000000000000000000 Ashok 00100000000000000000000000000000 gratuity 00000000000000000000000000000000 60%-owned 00000000000000000000000000000000 8.903 00000000000000000000000000000000 manipulating 00000000000111010111011101000000 manipulations 00000000000000000000000000000000 finagling 00000000000111111011101011100011 traduced 00000000000000000000000000000000 across-the-board-cuts 00000000000000000000000000000000 sophisticates 00000000000000000000000000000000 unserious 00000000000000000000000000000000 FreudToy 01000000000000000000000000000000 Ask 00100000000111011010100110110010 Lasorda 00100000000000000000000000000000 PAC 01000000000000010001111110110000 bursting 00000000000000000000000000000000 17.20 00000000000000000000000000000000 pillow 00000000000000000000000000000000 leafy 00000000000000000000000000000000 honorable 00000000001001011000110100010000 dickered 00000000000000000000000000000000 log-rolled 00000000000000000000000000000000 colossus 00000000000000000000000000000000 637.5 00000000000000000000000000000000 9.617 00000000000000000000000000000000 98.523 00000000000000000000000000000000 675 00000000000000000000000000000000 81%-controlled 00000000000000000000000000000000 mummies 00000000000000000000000000000000 genital 00000000000000000000000000000000 warts 00000000000000000000000000000000 obliterated 00000000000000000000000000000000 bourses 00000000000100100000110011100011 34996.08 00000000000000000000000000000000 smothering 00000000000000000000000000000000 19.30 00000000000000000000000000000000 35015.38 00000000000000000000000000000000 broader-based 00000000000000000000000000000000 10.78 00000000000000000000000000000000 2642.64 00000000000000000000000000000000 brisker 00000000000000000000000000000000 821-201 00000000000000000000000000000000 Smithson 00100000000000000000000000000000 dioxins 00000000000000000000000000000000 Cayman 00100000001110010000001000110000 foolhardy 00000000000010101011110110010000 NKK 01000000000000000000000000000000 705 00000000000000000000000000000000 2,080 00000000000000000000000000000000 2,760 00000000000000000000000000000000 2135.5 00000000000000000000000000000000 61.5-point 00000000000000000000000000000000 1730.7 00000000000000000000000000000000 643.3 00000000000000000000000000000000 24.95 00000000000000000000000000000000 Turnbull 00100000000000000000000000000000 6.18 00000000000000000000000000000000 Credito 00100000000000000000000000000000 Sherblom 00100000000000000000000000000000 966 00000000000000000000000000000000 Espanol 00100000000000000000000000000000 291 00000000000000000000000000000000 261 00000000000000000000000000000000 Racal 00100000000001111101000100101000 218 00000000000000000000000000000000 toxicology 00000000000000000000000000000000 29,400 00000000000000000000000000000000 kilowatt 00000000000000110010010101010000 Hokuriku 00100000000000000000000000000000 Cogeneration 00100000000001100000011010110000 waste-water 00000000000000000000000000000000 bio-analytical 00000000000000000000000000000000 Kucharski 00100000000000000000000000000000 8.77 00000000000000000000000000000000 Lexington-based 00100000000000000000000000000000 101.80 00000000000000000000000000000000 paper-manufacturing 00000000000000000000000000000000 stock-options 00000000000000000000000000000000 Cowen 00100000000000000000000000000000 married-put 00000000000000000000000000000000 CNCA 01000000000000000000000000000000 Defaults 00100000000111101000010000000011 Wildbad 00100000000000000000000000000000 disadvantages 00000000000111111100101110100011 gain. 00000000000000000000000000000000 Hopes 00100000000111111010101000110010 VOLUME 01000000000111101100001110000111 73,803 00000000000000000000000000000000 1,749,000 00000000000000000000000000000000 0.6287 00000000000000000000000000000000 32.4 00000000000000000000000000000000 amalgamate 00000000000000000000000000000000 1989-87 00000000000000000000000000000000 1989-86 00000000000000000000000000000000 Sonora 00100000000000000000000000000000 amalgamations 00000000000000000000000000000000 detector 00000000000010001011011000000001 1989-85 00000000000000000000000000000000 underlie 00000000000000000000000000000000 birthdays 00000000000000000000000000000000 noncompetitively 00000000000000000000000000000000 decommissoned 00000000000000000000000000000000 82.6 00000000000000000000000000000000 30.41 00000000000000000000000000000000 41.18 00000000000000000000000000000000 22,985,000 00000000000000000000000000000000 Archey 00100000000000000000000000000000 entry-level 00000000000000000000000000000000 optical-storage 00000000000000000000000000000000 fomenting 00000000000000000000000000000000 snazzy 00000000000000000000000000000000 4,995 00000000000000000000000000000000 6,495 00000000000000000000000000000000 Optical-storage 00100000000000000000000000000000 edit 00000000000000000000000000000000 more-established 00000000000000000000000000000000 Sprecher 00100000000000000000000000000000 Gustavus 00100000000000000000000000000000 Adolphus 00100000000000000000000000000000 Amaral 00100000000000000000000000000000 Freeberg 00100000000000000000000000000000 19.4 00000000000000000000000000000000 75.7 00000000000000000000000000000000 34.3 00000000000000000000000000000000 203.2 00000000000000000000000000000000 Esber 00100000000000000000000000000000 Government-Sponsored 01000000000000000000000000000000 feedback 00000000000101110111110100100111 Multimate 00100000000000000000000000000000 Framework 00100000000111010011101001100111 15,845,000 00000000000000000000000000000000 6.35 00000000000000000000000000000000 62.2 00000000000000000000000000000000 Tredegar 00100000000000000000000000000000 613.7 00000000000000000000000000000000 521.2 00000000000000000000000000000000 69.2 00000000000000000000000000000000 168.7 00000000000000000000000000000000 2001-2005 00000000000000000000000000000000 intitiative 00000000000000000000000000000000 590.7 00000000000000000000000000000000 575.1 00000000000000000000000000000000 174.8 00000000000000000000000000000000 dibenzofurans 00000000000000000000000000000000 147.5 00000000000000000000000000000000 contradicting 00000000000000000000000000000000 49.375 00000000000000000000000000000000 crude-steel 00000000000000000000000000000000 1,616,000 00000000000000000000000000000000 14,789,000 00000000000000000000000000000000 Terrence 00100000000000000000000000000000 Ringer 00100000000000000000000000000000 6.56 00000000000000000000000000000000 8.87 00000000000000000000000000000000 Lamphere 00100000000000000000000000000000 Loose 00100000000000100010011010010000 Laboratorium 00100000000000000000000000000000 silvery 00000000000000000000000000000000 391 00000000000000000000000000000000 two-door 00000000000000000000000000000000 compact-car 00000000000000000000000000000000 60-month 00000000000000000000000000000000 394 00000000000000000000000000000000 single-engine 00000000000000000000000000000000 turboprops 00000000000000000000000000000000 379 00000000000000000000000000000000 F.A. 01000000000000000000000000000000 Starke 00100000000000000000000000000000 non-enforcement 00000000000000000000000000000000 321,000 00000000000000000000000000000000 Shrinking 00100000000110001101010001000000 Croix 00100000000000000000000000000000 6.056 00000000000000000000000000000000 Criterion 00100000000000010010011000100001 Melinda 00100000000000000000000000000000 coiffed 00000000000000000000000000000000 recites 00000000000000000000000000000000 Onstage 00100000000000000000000000000000 chandelier 00000000000000000000000000000000 lifesize 00000000000000000000000000000000 reproduction 00000000000101011110011010100111 51.81 00000000000000000000000000000000 101.225 00000000000000000000000000000000 TNN 01000000000000000000000000000000 interrogators 00000000000000000000000000000000 Lichtenstein 00100000000000000000000000000000 unnumbered 00000000000000000000000000000000 Incorporated 00100000001011011110010000110010 8.34 00000000000000000000000000000000 Okobank 00100000000000000000000000000000 21.88 00000000000000000000000000000000 Abel 00100000000000000000000000000000 Johnson-era 00100000000000000000000000000000 Teodorani 00100000000000000000000000000000 Offensive 00100000000011000011001100100111 Album 00100000000100101000001000100111 Elvador 00100000000000000000000000000000 Otros 00100000000000000000000000000000 Ambigua 00100000000000000000000000000000 Overtega 00100000000000000000000000000000 podiatrist 00000000000000000000000000000000 now-deceased 00000000000000000000000000000000 Engler 00100000000000000000000000000000 impersonations 00000000000000000000000000000000 Bargen 00100000000000000000000000000000 ramrod-stiff 00000000000000000000000000000000 23.65 00000000000000000000000000000000 self-righteousness 00000000000000000000000000000000 patriotism 00000000000111111011110010100111 brimstone 00000000000000000000000000000000 teary-eyed 00000000000000000000000000000000 emotionalism 00000000000000000000000000000000 far-right 00000000000000000000000000000000 interrogator 00000000000000000000000000000000 Zach 00100000000000000000000000000000 Grenier 00100000000000000000000000000000 maddeningly 00000000000000000000000000000000 officious 00000000000000000000000000000000 aw 00000000000000000000000000000000 shucks 00000000000000000000000000000000 knitting 00000000000110011000001010110000 pearls 00000000000000000000000000000000 imitating 00000000000000000000000000000000 dispensing 00000000000100001010110001000000 jabs 00000000000000000000000000000000 flunky 00000000000000000000000000000000 meteoric 00000000000000111100100000010000 playfulness 00000000000000000000000000000000 deplores 00000000000000000000000000000000 circumlocution 00000000000000000000000000000000 self-important 00000000000000000000000000000000 Kilty 00100000000000000000000000000000 intentioned 00000000000000000000000000000000 emphaticize 00000000000000000000000000000000 hides 00000001001101001111000000010010 rammed 00000000000000000000000000000000 scape 00000000000000000000000000000000 Pentagonese 00100000000000000000000000000000 monetary-stroke-military 00000000000000000000000000000000 Ambiguan 00100000000000000000000000000000 paddle 00000000000000000000000000000000 intones 00000000000100000011010111000010 Publicity 00100000000110100110111010100111 Paschi 00100000000000000000000000000000 sharpness 00000000000000000000000000000000 494.50 00000000000000000000000000000000 Birk 00100000000000000000000000000000 Aliber 00100000000000000000000000000000 83.4 00000000000000000000000000000000 spill-related 00000000000000000000000000000000 Rehfeld 00100000000000000000000000000000 444 00000000000000000000000000000000 displacing 00000000000000000000000000000000 grandees 00000000000000000000000000000000 Gutfreund-Postel 01000000000000000000000000000000 imbroglio 00000000000111101000100011100111 dei 00000000000000000000000000000000 chimneys 00000000000000000000000000000000 tempts 00000000000000000000000000000000 Luxurious 00100000000000000000000000000000 Chugoku 00100000000000000000000000000000 22-foot 00000000000000000000000000000000 Kiki 00100000000000000000000000000000 terrace 00000000000000000000000000000000 flagrante 00000000000000000000000000000000 excavated 00000000000000000000000000000000 hoisting 00000000000000000000000000000000 neighborly 00000000000000000000000000000000 Diesel 00100000000000110010001010110000 bearded 00000000000101101101001000110000 Teito 00100000000000000000000000000000 your... 00000000000000000000000000000000 bellow 00000000000000000000000000000000 bland 00000000000000101100011010010000 handpicked 00000000000000111110101001000000 frocks 00000000000000000000000000000000 Keio 00100000000000000000000000000000 disgorgement 00000000000000000000000000000000 dissimilar 00000000000000000000000000000000 long-term-oriented 00000000000000000000000000000000 cursed 00000000000000000000000000000000 reddened 00000000000000000000000000000000 pale-blue 00000000000000000000000000000000 slits 00000000000000000000000000000000 Belmonts 00100000000000000000000000000000 Warburgs 00100000000000000000000000000000 Lehmans 00100000000000000000000000000000 Baches 00100000000000000000000000000000 Schiffs 00100000000000000000000000000000 probity 00000000000000000000000000000000 extraction 00000000000000000000000000000000 heaves 00000000000000000000000000000000 cuckoos 00000000000000000000000000000000 Loathing 00100000000000000000000000000000 Boardrooms 00100000000000000000000000000000 decorators 00000000000000000000000000000000 nouveau 00000000000000000000000000000000 riche 00000000000000000000000000000000 tawdry 00000000000000000000000000000000 t'aint 00000000000000000000000000000000 slammer 00000000000000000000000000000000 absolving 00000000000000000000000000000000 Pinky 00100000000000000000000000000000 Luxembourg-based 00100000000000000000000000000000 seamy 00000000000000000000000000000000 turn-of-the-century 00000000000000000000000000000000 palazzi 00000000000000000000000000000000 noblemen 00000000000000000000000000000000 piker 00000000000000000000000000000000 Fiske 00100000000000000000000000000000 raptors 00000000000000000000000000000000 10.62 00000000000000000000000000000000 declaratory 00000000000000000000000000000000 6,744,600 00000000000000000000000000000000 122,700 00000000000000000000000000000000 656.5 00000000000000000000000000000000 558 00000000000000000000000000000000 petite 00000000000000000000000000000000 speedup 00000000000000000000000000000000 kindled 00000000000000000000000000000000 Outreach 00100000000000000000000000000000 203.5 00000000000000000000000000000000 528.3 00000000000000000000000000000000 radar-threat 00000000000000000000000000000000 K-resin 00100000000000000000000000000000 mid-1995 00000000000000000000000000000000 Robotics 00100000000000000000000000000000 1,075,000 00000000000000000000000000000000 667 00000000000000000000000000000000 charge-offs 00000000000000000000000000000000 9.192 00000000000000000000000000000000 Stoecker 00100000000000000000000000000000 rationalizing 00000000000000000000000000000000 196.1 00000000000000000000000000000000 195.4 00000000000000000000000000000000 184.9 00000000000000000000000000000000 1,531,000 00000000000000000000000000000000 1,458,000 00000000000000000000000000000000 1,979,000 00000000000000000000000000000000 466,000 00000000000000000000000000000000 323,000 00000000000000000000000000000000 288,000 00000000000000000000000000000000 trills 00000000000000000000000000000000 Imported 00100000000011100001101001000000 Voluntary 00100000000110010001000000010000 Restraint 00100000000111001000110001100111 semifinished 00000000000000000000000000000000 1.465 00000000000000000000000000000000 10.33 00000000000000000000000000000000 424.3 00000000000000000000000000000000 Comeback 00100000000111010011101010100111 Cluggish 00100000000000000000000000000000 exude 00000000011101101111101110110010 spewed 00000000000000000000000000000000 Olissa 00100000000000000000000000000000 footnotes 00000000000000000000000000000000 Metschan 00100000000000000000000000000000 breezier 00000000000000000000000000000000 slumps 00000000000001000000011110000011 Palmatier 00100000000000000000000000000000 Minden 00100000000000000000000000000000 appraised 00000000000000000000100111000010 decorator 00000000000000000000000000000000 wellrun 00000000000000000000000000000000 career-risking 00000000000000000000000000000000 obscured 00000000111110000001110000110010 Wendler 00100000000000000000000000000000 Christiansen 00100000000000000000000000000000 Meta 00100000000000000000000000000000 VS 01000000000000000000000000000000 spook 00000000000000000000000000000000 Eastate 00100000000000000000000000000000 discouragement 00000000000000000000000000000000 Petre 00100000000000000000000000000000 Discouragement 00100000000000000000000000000000 overcollateralized 00000000000000000000000000000000 Durcan 00100000000000000000000000000000 laid-off 00000000000000000000000000000000 Hellman 00100000000000000000000000000000 Framingham 00100000000110110111101001101000 Hired 00100000101111101100010000110010 rejections 00000000000000000000000000000000 negativism 00000000000000000000000000000000 800-acre 00000000000000000000000000000000 water-purification 00000000000000000000000000000000 ammonia 00000000000000000000000000000000 urea 00000000000000000000000000000000 23.125 00000000000000000000000000000000 billowing 00000000000000000000000000000000 local-exchange 00000000000000000000000000000000 728.8 00000000000000000000000000000000 496.7 00000000000000000000000000000000 504.5 00000000000000000000000000000000 37.2 00000000000000000000000000000000 64.125 00000000000000000000000000000000 unaccounted 00000000000000000000000000000000 42.375 00000000000000000000000000000000 Schellke 00100000000000000000000000000000 PrimeTime 01000000000000000000000000000000 Reach 00100000000111111011001110110010 subsidization 00000000000000000000000000000000 Dragging 00100000011111101110100001000000 55.875 00000000000000000000000000000000 223.3 00000000000000000000000000000000 191.4 00000000000000000000000000000000 D.H. 01000000000000000000000000000000 Ds 00100000000000000000000000000000 bulkheads 00000000000000000000000000000000 torque 00000000000000000000000000000000 property-tax-cutting 00000000000000000000000000000000 aft 00000000000000000000000000000000 keel 00000000000101011000000000001000 793 00000000000000000000000000000000 11.08 00000000000000000000000000000000 Sobey 00100000000000000000000000000000 deviant 00000000000000000000000000000000 SHEARSON 01001111111111111111000000101000 LEHMAN 01001111111000000000111001001000 HUTTON 01001111111111111111000001001000 darned 00000000000000000000000000000000 60%-held 00000000000000000000000000000000 2.48 00000000000000000000000000000000 58.3 00000000000000000000000000000000 29.5 00000000000000000000000000000000 prepaying 00000000000000000000000000000000 scalp 00000000000000000000000000000000 21.18 00000000000000000000000000000000 49.5 00000000000000000000000000000000 83.3125 00000000000000000000000000000000 madman 00000000000000000000000000000000 Nidal 00101111111010111110110000011101 stash 00000000000000000000000000000000 375,000 00000000000000000000000000000000 342,122 00000000000000000000000000000000 280,000 00000000000000000000000000000000 37.7 00000000000000000000000000000000 Abu 00101111111101000011001101110000 Friendly 00100000000000100001001100010000 Skies 00100000000100100100111101100011 Conceivably 00100001101100000000001001110010 Bekaa 00100000000000000000000000000000 Coatedboard 00100000000000000000000000000000 Buckhead 00100000000000000000000000000000 Kadonada 00100000000000000000000000000000 hideouts 00000000000000000000000000000000 strafe 00000000000000000000000000000000 Bolduc 00100000000000000000000000000000 first-nine-month 00000000000000000000000000000000 Colonel 00100000000111101010010000110101 Intense 00100000000000000000110100010000 cigars 00000000000000000000000000000000 Aldomet 00100000000000000000000000000000 Indocin 00100000000000000000000000000000 75.25 00000000000000000000000000000000 open-year 00000000000000000000000000000000 Prescription-drug 00100000000000000000000000000000 heebie-jeebies 00000000000000000000000000000000 lipid 00000000000000000000000000000000 Dilzem 00100000000000000000000000000000 Halls 00100000001001000111110101100011 Rolaids 00100000000000000000000000000000 Lubriderm 00100000000000000000000000000000 Confectionery 00100000000000000000000000000000 Certs 00100000000000000000000000000000 Zeal 00100000000101010111110100100111 Clorets 00100000000000000000000000000000 109.50 00000000000000000000000000000000 deploring 00000000000000000000000000000000 renegotiation 00000000000000000000000000000000 Hybritech 00100000000000000000000000000000 1.045 00000000000000000000000000000000 940.6 00000000000000000000000000000000 second-guessed 00000000000000000000000000000000 7.649 00000000000000000000000000000000 drug-sales 00000000000000000000000000000000 Cardiac 00100000000001110000000000110000 Pacemakers 00100000000000000000000000000000 medical-instrument 00000000000000000000000000000000 Ajax 00100000000000000000000000000000 cleanser 00000000000000000000000000000000 Bonita 00100000000000000000000000000000 Kendall 00101111111111111001001000001000 malcontent 00000000000000000000000000000000 Confiding 00100000000000000000000000000000 CIT 01000000000000000000000000000000 crisper 00000000000000000000000000000000 Beantown 00100000000000000000000000000000 scribes 00000000000000000000000000000000 invective 00000000000000000000000000000000 pro-Noriega 01000000000000000000000000000000 Pee 00100000000000000000000000000000 Wee 00100000000000000000000000000000 Patriots 00100000000000000000000000000000 Wamre 00100000000000000000000000000000 Mulvoy 00100000000000000000000000000000 adorn 00000000000000000000000000000000 Taste 00100000000111111110010000000001 micromanage 00000000000000000000000000000000 diarrhea 00000000000000000000000000000000 chit 00000000000000000000000000000000 coat... 00000000000000000000000000000000 renderings 00000000000000000000000000000000 reprinted 00000000000000000000000000000000 pervert 00000000000000000000000000000000 Abe 00100000000100101100100100001000 Bella 00100000000000000000000000000000 screams 00000000000000000000000000000000 hysterically 00000000000000000000000000000000 visages 00000000000000000000000000000000 Howie 00100000000000000000000000000000 Statehouse 00100000000000000000000000000000 hacks 00000000000000000000000000000000 nepotism 00000000000000000000000000000000 forehead 00000000000000000000000000000000 chinless 00000000000000000000000000000000 Shaughnessy 00100000000000000000000000000000 Deeply 00100000000010000000000001110010 leakers 00000000000000000000000000000000 Kissing 00100000000000000000000000000000 Good-bye 00100000000000000000000000000000 Enormous 00100000000000000100010100010000 hunter-gatherers 00000000000000000000000000000000 mammoths 00000000000000000000000000000000 caves 00000000000000000000000000000000 terrestrial 00000000000000000000000000000000 Dominant 00100000000000011100011000010000 capitalist-exploiters-greedy-American-consumers-global 01000000000000000000000000000000 Jocelyn 00100000000000000000000000000000 Tomkin 00100000000000000000000000000000 Astronomy 00100000000111011010001101100001 tax-collecting 00000000000000000000000000000000 120,000-employee 00000000000000000000000000000000 Customarily 00100000001101100000001001110010 top-notch 00000000000000000000000000000000 Maj. 00100000000000000000000000000000 Moises 00100000000000000000000000000000 abortive 00000000000000000000000000000000 gunshot 00000000000000000000000000000000 skull 00000000000000000000000000000000 Battalion-2000 00100000000000000000000000000000 Leaping 00100000000111111010010001000000 crematoriums 00000000000000000000000000000000 sleeps 00000000000000000000000000000000 actuaries 00000000000000000000000000000000 Vicky 00100000000000000000000000000000 Amado 00100000000000000000000000000000 Norma 00100000000000000000000000000000 coup-makers 00000000000000000000000000000000 congratulate 00000000000000011010100110110010 brutal-and 00000000000000000000000000000000 efficient-in 00000000000000000000000000000000 byzantine 00000000000000011101000010010000 spy-in-training 00000000000000000000000000000000 savagely 00000000000000000000000000000000 befriended 00000000000000000000000000000000 7.0808 00000000000000000000000000000000 well-born 00000000000000000000000000000000 Anastasio 00100000000000000000000000000000 Juge 00100000000000000000000000000000 Doc 00100000000000000000000000000000 Duvalier 00100000000101010110100000001000 Japanese-supplied 00100000000000000000000000000000 shortened 00000000000001010010111001000000 excuses 00000000000111111010101110100011 throne 00000000000111110110100001100111 hand-sized 00000000000000000000000000000000 engraved 00000000000000000000000000000000 Guardia 00101111111000000110010000011101 240-a-share 00000000000000000000000000000000 Chorrillos 00100000000000000000000000000000 half-brother 00000000000000000000000000000000 Hurtado 00100000000000000000000000000000 7.0826 00000000000000000000000000000000 pockmarked 00000000000000000000000000000000 Pina 00100000000000000000000000000000 cadets 00000000000000000000000000000000 repudiation 00000000000000000000000000000000 well-off 00000000000000000000000000000000 French-modeled 00100000000000000000000000000000 French-made 00100000000000000000000000000000 militarism 00000000000000000000000000000000 Darien 00100000000000000000000000000000 Ayala 00100000000000000000000000000000 Residents 00100000000000000000100000110011 residue 00000000000000000000000000000000 sowed 00000000000000000000000000000000 turnarounds 00000000000000000000000000000000 plantations 00000000000000000000000000000000 Bocas 00100000000000000000000000000000 Toros 00100000000000000000000000000000 already-strained 00000000000000000000000000000000 Satisfying 00100000000000100101110110110010 PX 01000000000000000000000000000000 no-strike 00000000000000000000000000000000 Capt. 00100000000000000000000000000000 super-spy 00000000000000000000000000000000 sprinkled 00000000000000000000000000000000 mistresses 00000000000000000000000000000000 splashed 00000000011010110110010000110010 handbills 00000000000000000000000000000000 banana-exporting 00000000000000000000000000000000 sweatshirt 00000000000001100110111000000001 nurture... 00000000000000000000000000000000 counter-intelligence 00000000000000000000000000000000 Gulick 00100000000000000000000000000000 public... 00000000000000000000000000000000 studiousness 00000000000000000000000000000000 721 00000000000000000000000000000000 inseparable 00000000000000000000000000000000 slogs 00000000000000000000000000000000 scotched 00000000000000000000000000000000 scold 00000000000000000000000000000000 sergeants 00000000000000000000000000000000 470th 00000000000000000000000000000000 12.9375 00000000000000000000000000000000 jar 00000000000000000000000000000000 Stansfield 00100000000000000000000000000000 79.18 00000000000000000000000000000000 Britta 00100000000000000000000000000000 232.4 00000000000000000000000000000000 reindicting 00000000000000000000000000000000 pal 00000000000000000000000000000000 employee-owned 00000000000000000000000000000000 Firearms 00100000000000000000000000000000 scalps 00000000000000000000000000000000 arsenic 00000000000000000000000000000000 de-facto 00000000000000000000000000000000 chewing 00000000001001101110100001000000 187.4 00000000000000000000000000000000 Aswara 00100000000000000000000000000000 orgy 00000000000000000000000000000000 117.7 00000000000000000000000000000000 Ardito 00100000000000000000000000000000 784.5 00000000000000000000000000000000 summarized 00000000000000000000000000000000 redeploy 00000000000000000000000000000000 Elliot 00101111111000010001000010011000 848.7 00000000000000000000000000000000 Diaz 00101111111111110101000100001000 Herrera 00100000000000000000000000000000 plaintively 00000000000000000000000000000000 knock-out 00000000000000000000000000000000 200.3 00000000000000000000000000000000 UPJOHN 01000000000101101110111100101000 129.3 00000000000000000000000000000000 272 00000000000000000000000000000000 105,000 00000000000000000000000000000000 83.6 00000000000000000000000000000000 84.1 00000000000000000000000000000000 M.W. 01000000000000000000000000000000 142.3 00000000000000000000000000000000 Honiss 00100000000000000000000000000000 Attridge 00100000000000000000000000000000 Omnibank 00100000000000000000000000000000 31.125 00000000000000000000000000000000 Isoda 00100000000000000000000000000000 Tockman 00100000000000000000000000000000 epidemiologist 00000000000111101111010100110101 Hygiene 00100000000000000000000000000000 Measured 00100000000111000001110000110010 Devesa 00100000000000000000000000000000 Blot 00100000000000000000000000000000 high-heeled 00000000000000000000000000000000 35-44 00000000000000000000000000000000 stock-exchange 00000000000000000000000000000000 Smoking 00100000000001000110010000100001 adolescents 00000000000000000000000000000000 clouding 00000000000000000000000000000000 addictive 00000000000101011010101000110000 Stjernsward 00100000000000000000000000000000 Non-smoking 00100000000000000000000000000000 Merryman 00100000000000000000000000000000 age-specific 00000000000000000000000000000000 mortgaged-backed 00000000000000000000000000000000 Undaunted 00100000000111110001111011101000 environmentalist 00000000000000000000000000000000 government-relations 00000000000000000000000000000000 lamp 00000000000000000000000000000000 profit-driven 00000000000000000000000000000000 taxicab 00000000000000000000000000000000 Exhausted 00100011100011010100010000110010 448.49 00000000000000000000000000000000 453.57 00000000000000000000000000000000 Rothe 00100000000000000000000000000000 Arbitraging 00100000000000000000000000000000 supremacy 00000000000000000000000000000000 4,345 00000000000000000000000000000000 1,174 00000000000000000000000000000000 Kristiansen 00100000000000000000000000000000 character-recognition 00000000000000000000000000000000 177.3 00000000000000000000000000000000 thirdquarter 00000000000000000000000000000000 Wilpers 00100000000000000000000000000000 burials 00000000000000000000000000000000 differentiating 00000000000000000000000000000000 indignity 00000000000000000000000000000000 Saving 00100000001111110010110001000000 Enzor 00100000000000000000000000000000 microbe 00000000000000000000000000000000 sanitationists 00000000000000000000000000000000 hygiene 00000000000000000000000000000000 washable 00000000000000000000000000000000 Koji 00100000000000000000000000000000 sepsis 00000000000000000000000000000000 promulgated 00000000000000000000000000000000 expectancy 00000000000000000000000000000000 public-health 00000000000000000000000000000000 Silent 00100000000000101000110110010000 hysterical 00000000000000000000000000000000 uninhabitable 00000000000000000000000000000000 apocalyptic 00000000000001110010010100010000 Commoner 00100000000000000000000000000000 Dubois 00100000000000000000000000000000 out-of-repair 00000000000000000000000000000000 overdosed 00000000000000000000000000000000 systematically 00000010010101000000010001110010 depletes 00000000000000000000000000000000 incineration 00000000000000000000000000000000 heretofore 00000000100100101000000001110010 Alpharetta 00100000000000000000000000000000 Overreacting 00100000000110100110011000110010 blue-ribbon 00000000000000000000000000000000 prescriptive 00000000000000000000000000000000 underreacting 00000000000000000000000000000000 non-objective 00000000000000000000000000000000 556.5 00000000000000000000000000000000 interrelated 00000000000000000000000000000000 inextricably 00000000000000000000000000000000 Lovejoy 00100000000000000000000000000000 39.9 00000000000000000000000000000000 soft-drinks 00000000000000000000000000000000 324.9 00000000000000000000000000000000 Burry 00100000000000000000000000000000 93.8 00000000000000000000000000000000 2.97 00000000000000000000000000000000 25-million-share 00000000000000000000000000000000 801.21 00000000000000000000000000000000 269.3 00000000000000000000000000000000 241.6 00000000000000000000000000000000 winery 00000000000111010000110100000001 jewelery 00000000000000000000000000000000 DeVon 01000000000000000000000000000000 Jewelery 00100000000000000000000000000000 twelve 00000000000110101111000011000000 synonymous 00000000000110110101100000110010 crime-infested 00000000000000000000000000000000 vitreous-china 00000000000000000000000000000000 1881 00000000000000000000000000000000 Alf 00100000000000000000000000000000 Karate 00100000000000011101001000110000 Chipmunks 00100000000000000000000000000000 counterprogram 00000000000000000000000000000000 jovial 00000000000000000000000000000000 internationalists 00000000011011000101110010100111 Tartikoff 00100000000000000000000000000000 mid-season 00000000000000000000000000000000 Chino 00100000000000000000000000000000 Yoshitoki 00100000000000000000000000000000 204.3 00000000000000000000000000000000 Romanesque 00100000000000000000000000000000 Kueneke 00100000000000000000000000000000 Nickelodeon 00100000000000000000000000000000 Doi 00100000000000000000000000000000 Saved 00100000000100011100010000110010 Animated 00100000000000101000110100010000 elongate 00000000000000000000000000000000 623 00000000000000000000000000000000 619.8 00000000000000000000000000000000 Incrementally 00100000000000000000000000000000 187.8 00000000000000000000000000000000 abominable 00000000000000000000000000000000 Sadakane 00100000000000000000000000000000 Wallace 00101111111000101010000100001000 Prab 00100000000000000000000000000000 Viewpoint 00100000000110100101001001100111 speedier 00000000000000110100001111000000 misquotation 00000000000000000000000000000000 Deaths 00100000000111101111000001100011 quicksand 00000000000000000000000000000000 hampers 00000000000000000000000000000000 overblown 00000000000000000000000000000000 colon-cancer 00000000000000000000000000000000 Moertel 00100000000000000000000000000000 Minn 00100000000000000000000000000000 hormones 00000000001100110111110101100011 centralize 00000000000000000000000000000000 front-running 00000000000000000000000000000000 180-foot-tall 00000000000000000000000000000000 lower-emission 00000000000000000000000000000000 transacted 00000000000000000000000000000000 Colucci 00100000000000000000000000000000 mixtures 00000000000000000000000000000000 McHenry 01000000000000000000000000000000 alternative-fueled 00000000000000000000000000000000 clean-fuels 00000000000000000000000000000000 scandal-ridden 00000000000000000000000000000000 cease-and-desist 00000000000000000000000000000000 comprehensively 00000000000000000000000000000000 Junk-Bond 01000000000000000000000000000000 48,100 00000000000000000000000000000000 government-insured 00000000000000000000000000000000 oversimplified 00000000000000000000000000000000 Flanked 00100000000000000000000000000000 spiffy 00000000000000000000000000000000 Haden 00100000000000000000000000000000 775 00000000000000000000000000000000 pre-bankruptcy 00000000000000000000000000000000 HOPES 01000000000111111010101000110010 SIMPLIFYING 01000000000000000000000000000000 still-uncalculated 00000000000000000000000000000000 masterpiece 00000000000010111110101000100001 flim-flammery 00000000000000000000000000000000 Lucille 00100000000000000000000000000000 staring 00000000010111000110100001000000 Samengo-Turner 01000000000000000000000000000000 RAVAGES 01000000000000000000000000000000 hurricane-wracked 00000000000000000000000000000000 Amending 00100000000000000000000000000000 DELAYS 01000000000111100011011000100011 Returns 00100000000111100100001100000011 endeavors 00000000000111110000001010100011 89-136 00000000000000000000000000000000 Fiscal-year 00100000000000000000000000000000 Excise-tax 00100000000000000000000000000000 Extensions 00100000000110110010001000100011 employment-tax 00000000000000000000000000000000 folders 00000000000000000000000000000000 ONE-DAY 01000000000000000000000000000000 JAUNTS 01000000000000000000000000000000 temps 00000000000000000000000000000000 USED-CAR 01000000000000000000000000000000 BUYERS 01000000000111101101100000110011 understating 00000000000000000000000000000000 Estimating 00100000000111000001111010000010 OWNER 01000000000011111111110000110101 5498 00000000000000000000000000000000 decedent 00000000000000000000000000000000 executor 00000000000000000000000000000000 Procedure 00100000000111011101000011100111 89-52 00000000000000000000000000000000 BIGGER 01000000000000000110001111000000 THAN 01000000000000000000001110000010 BREADBOX 01000000000000000000000000000000 hoarder 00000000000000000000000000000000 distrust 00000000000111110110110101100111 caches 00000000000000000000000000000000 Damonne 00100000000000000000000000000000 hardworking 00000000000000000000000000000000 reclusive 00000000000110011101000010010000 84-year-old 00000000000000000000000000000000 124,732 00000000000000000000000000000000 1982-84 00000000000000000000000000000000 52,012 00000000000000000000000000000000 Tupperware 00100000000001101000110100101000 breadbox 00000000000000000000000000000000 obelisk 00000000000000000000000000000000 1974-81 00000000000000000000000000000000 pinching 00000000000000000000000000000000 remorseful 00000000000000000000000000000000 stepmother 00000000000000000000000000000000 ex-employer 00000000000000000000000000000000 26,350 00000000000000000000000000000000 46,892 00000000000000000000000000000000 mounts 00000000000000000000000000000000 tortuous 00000000000000000000000000000000 picture-postcard 00000000000000000000000000000000 vista 00000000000111101101010100101000 glade 00000000000000000000000000000000 aspens 00000000000000000000000000000000 azure 00000000000000000000000000000000 Indian-summer 00100000000000000000000000000000 trudge 00000000000000000000000000000000 Sandwiched 00100000000000000000000000000000 pedaling 00000000000000000000000000000000 seven-bedroom 00000000000000000000000000000000 well-polished 00000000000000000000000000000000 warren 00001111111000000001000100001000 amazingly 00000000000000000000000000000000 overrun 00000000001011100001110000110010 Fiala 00100000000000000000000000000000 hilly 00000000000000000000000000000000 all-terrain 00000000000000000000000000000000 Bikers 00100000000000000000000000000000 fitness-promoting 00000000000000000000000000000000 Perch 00100000000000000000000000000000 landscapes 00000000000000000000000000000000 Sierras 00100000000000000000000000000000 Seaboard 00100000000000000000000000000000 dimes 00000000000000000000000000000000 bicyclist 00000000000000000000000000000000 spyglass 00000000000000000000000000000000 penny-pinching 00000000000000000000000000000000 unsuspecting 00000000000000011101101000110000 public-land 00000000000000000000000000000000 hiking 00000000000101010110100001000000 consigns 00000000000000000000000000000000 treasured 00000000000000000000000000000000 lenient 00000000000000001110010010010000 multiple-use 00000000000000000000000000000000 Trail 00100000000010101001001010110111 trade-in 00000000000000000000000000000000 evocative 00000000001000010101000010010000 steadying 00000000000000000000000000000000 terrain-marring 00000000000000000000000000000000 off-road 00000000000000000000000000000000 inventing 00000000000000000000000000000000 Coan 00100000000000000000000000000000 cyclists 00000000000000000000000000000000 dolledup 00000000000000000000000000000000 acquiesced 00000000000000000000000000000000 Canoga 00100000000000000000000000000000 backpackers 00000000000000000000000000000000 Off-Road 01000000000000000000000000000000 Bicyclists 00100000000000000000000000000000 Blumenthal 00101111111101001010000010001000 Bicycling 00100000000000000000000000000000 biker 00000000000000000000000000000000 ranger 00000000000000100011100100100001 hunted 00000000000101011110001000110010 renegade 00000000000000000000000000000000 Hasenauer 00100000000000000000000000000000 metallurgy 00000000000000000000000000000000 multi-gear 00000000000000000000000000000000 terrain 00000000000111101001001001100111 thin-tired 00000000000000000000000000000000 dwellers 00000000000000000000000000000000 Crested 00100000000000000000000000000000 Butte 00100000000000000000000000000000 Underwoods 00100000000000000000000000000000 jamboree 00000000000000000000000000000000 paperboy 00000000000000000000000000000000 Golar 00100000000000000000000000000000 Gotaas-Larsen 01000000000000000000000000000000 noncumulative 00000000000000000000000000000000 Shared 00100000010011010001110000110010 Smetek 00100000000000000000000000000000 Fitzwilliams 00100000000000000000000000000000 repossess 00000000000000000000000000000000 corporate-earnings 00000000000000000000000000000000 Ismaili 00100000000000000000000000000000 pre-eminent 00000000000000000000000000000000 CSV 01000000000000000000000000000000 Homeowner 00100000000111100100111000100001 Skoal 00100000000000000000000000000000 Daze 00100000000000000000000000000000 revenge 00000000000001100101110010100111 -George 01000000000000000000000000000000 Spaced 00100000000000000000000000000000 Kafaroff 00100000000000000000000000000000 Repression 00100000000101001011111010100111 emote 00000000000000000000000000000000 siphoning 00000000000000000000000000000000 wood-product 00000000000000000000000000000000 166.8 00000000000000000000000000000000 144.9 00000000000000000000000000000000 469.8 00000000000000000000000000000000 410.3 00000000000000000000000000000000 6.95 00000000000000000000000000000000 789 00000000000000000000000000000000 Carole 00100000000000000000000000000000 episodic 00000000000000000000000000000000 13-point 00000000000000000000000000000000 36.3 00000000000000000000000000000000 disavowed 00000000000000000000000000000000 frumpy 00000000000000000000000000000000 rigorously 00000000000000000000000000000000 393.4 00000000000000000000000000000000 806.8 00000000000000000000000000000000 880.9 00000000000000000000000000000000 852 00000000000000000000000000000000 margin-the 00000000000000000000000000000000 502.1 00000000000000000000000000000000 Elections 00100000000111101001010001100111 Vishwanath 00100000000000000000000000000000 Pratap 00100000000000000000000000000000 statisticians 00000000000001010010000010110011 Indira 00100000000000000000000000000000 unrivaled 00000000000000000000000000000000 indignation 00000000000000000000000000000000 Bhabani 00100000000000000000000000000000 Gupta 00100000000000000000000000000000 Versicherungs 00100000000000000000000000000000 liberalizations 00000000000000000000000000000000 Lok 00100000000000000000000000000000 Sabha 00100000000000000000000000000000 separatist 00000000000000101101011000110000 Sikhs 00100000000111111100000110110011 clinched 00000000000000000000000000000000 Bangladesh 00100000000111000101011101101000 chipped 00000000000000000000000000000000 precincts 00000000000000000000000000000000 Chimanbhai 00100000000000000000000000000000 parliamentarian 00000000000000000000000000000000 autumns 00000000000000000000000000000000 flared 00000000001110000110001000110010 zestfully 00000000000000000000000000000000 Unease 00100000000100001110111010100111 111,000 00000000000000000000000000000000 disintegrated 00000000000000000000000000000000 FH-77B 01000000000000000000000000000000 155-mm 00000000000000000000000000000000 Outhwaite 00100000000000000000000000000000 Olof 00100000000000000000000000000000 Palme 00100000000000000000000000000000 Innis-Maggiore-Olson 01000000000000000000000000000000 facsimiles 00000000000000000000000000000000 remittances 00000000000000000000000000000000 auditor-general 00000000000000000000000000000000 Krishnaswami 00100000000000000000000000000000 apprehensions 00000000000000000000000000000000 9. 00000000000000000000000000000000 Pontiac-Cadillac 01000000000000000000000000000000 Bribe 00100000000111101101001101000111 oil-rig 00000000000000000000000000000000 8.685 00000000000000000000000000000000 880,500 00000000000000000000000000000000 86,500 00000000000000000000000000000000 2.3125 00000000000000000000000000000000 2.4375 00000000000000000000000000000000 pre-noon 00000000000000000000000000000000 amps 00000000000000000000000000000000 Leuzzi 00100000000000000000000000000000 hiatus 00000000000000000000000000000000 Lackluster 00100000000000001001100000010000 170,262 00000000000000000000000000000000 dealer-led 00000000000000000000000000000000 654.5 00000000000000000000000000000000 Pre-refunded 00100000000000000000000000000000 escrowed 00000000000000000000000000000000 144.4 00000000000000000000000000000000 Tentative 00100000000000001001001100010000 reoffering 00000000000000000000000000000000 97.85 00000000000000000000000000000000 11-2 00000000000000000000000000000000 stewards 00000000000000000000000000000000 64-35 00000000000000000000000000000000 301-year-old 00000000000000000000000000000000 Opositora 00100000000000000000000000000000 Electoral 00100000001110100000000000110000 5.36 00000000000000000000000000000000 829.9 00000000000000000000000000000000 -mortgage-backed 00000000000000000000000000000000 383-30 00000000000000000000000000000000 Activities 00100000000111101111101100100011 Obey 00100000001010111111110110110010 inasmuch 00000000000000000000000000000000 impassiveness 00000000000000000000000000000000 tri-colored 00000000000000000000000000000000 starch 00000000000000000000000000000000 365 00000000000000000000000000000000 veering 00000000000000000000000000000000 disinflationary 00000000000000000000000000000000 APMS 01000000000000000000000000000000 Dinsa 00100000000000000000000000000000 handcuffed 00000000000000000000000000000000 0.14 00000000000000000000000000000000 14.11 00000000000000000000000000000000 14.24 00000000000000000000000000000000 soybean-meal 00000000000000000000000000000000 A-1 00100000000000000000000000000000 coffeehouse 00000000000000000000000000000000 origins 00000000000110101000111101100011 doormen 00000000000000000000000000000000 Legitimate 00100000000110000001000000010000 Poachers 00100000000000000000000000000000 Constance 00100000000000000000000000000000 thundered 00000000000000000000000000000000 wryly 00000000000000000000000000000000 mite 00000000000000000000000000000000 conservationists 00000000000000000000000000000000 puppies 00000000000000101000111001100011 BLAST 01000000000111110001001010110111 Evil 00100000000001000010101000110000 red-frocked 00000000000000000000000000000000 pens 00000000000110101100111001100011 BENEFITS 01000000000111101110101100000011 fades 00000000000000000000000000000000 deleting 00000000000000000000000000000000 health-coverage 00000000000000000000000000000000 medical-leave 00000000000000000000000000000000 employer-paid 00000000000000000000000000000000 employerpaid 00000000000000000000000000000000 Christine 00100000111001101100001000011000 JUMPING 01000000000110100111100001000000 GUN 01000000000111101000010000000001 centimeter 00000000000000000000000000000000 apologetically 00000000000000000000000000000000 PRISON-SHOP 01000000000000000000000000000000 BLUES 01000000000111101111101101000001 prisoner-made 00000000000000000000000000000000 REPAIR 01000000000000001011011110110111 SHOPS 01000000000011101111110001100011 SCRAP 01000000010101111111110110110010 auto-repair 00000000000000000000000000000000 auto-emission 00000000000000000000000000000000 non-warranty 00000000000000000000000000000000 Hathcock 00100000000000000000000000000000 McKay 01001111111111101000001010001000 Innovation 00100000000001001111110010100111 nozzle 00000000000000000000000000000000 delousing 00000000000000000000000000000000 feel-good 00000000000000000000000000000000 poisoned 00000000000000000000000000000000 Euronotes 00100000000000000000000000000000 recaptilization 00000000000000000000000000000000 Kanjorski 00100000000000000000000000000000 Mfume 00100000000000000000000000000000 Kweisi 00100000000000000000000000000000 McMillen 01000000000000000000000000000000 Soviet-controlled 00100000000000000000000000000000 ointment 00000000000000000000000000000000 Yuli 00100000000000000000000000000000 Vorontsov 00100000000000000000000000000000 SCUD 01000000000000000000000000000000 yttrium-containing 00000000000000000000000000000000 T-72 00100000000000000000000000000000 Dolphin 00100000000000000000000000000000 Reinforced 00100000000100100111010000110010 Motorized 00100000000101011000001000110000 Brigade 00100000000001010111101001100111 Vento 00100000000000000000000000000000 abilities 00000000000111110111011101100011 FROG-7B 01000000000000000000000000000000 An-12 00100000000000000000000000000000 MiG-23BN 01000000000000000000000000000000 liquid-nitrogen 00000000000000000000000000000000 814 00000000000000000000000000000000 F16s 00100000000000000000000000000000 Sukhoi 00100000000000000000000000000000 SU-27 01000000000000000000000000000000 fighter-bombers 00000000000000000000000000000000 conscripts 00000000000000000000000000000000 indoctrinated 00000000000000000000000000000000 asbestos-disease 00000000000000000000000000000000 KHAD 01000000000000000000000000000000 symbolized 00000000000000000000000000000000 Shi'ite 00100000000000000000000000000000 Sultan 00100000000111011110100000001000 Keshtmand 00100000000000000000000000000000 Zia 00101111110000001001010110001000 ostentatiously 00000000000000000000000000000000 McCollum 01000000000000000000000000000000 Border 00100000000111110011111000000001 Guards 00100000000010100101000110001001 ethnically 00000000000000000000000000000000 Afghans 00100000000111101111001110110011 bloody-minded 00000000000000000000000000000000 UNR 01000000000000000000000000000000 Gulbuddin 00100000000000000000000000000000 Hekhmatyar 00100000000000000000000000000000 Dec 00100000000000000000000000000000 63.875 00000000000000000000000000000000 essentials 00000000000000000000000000000000 Experienced 00100000010011101100010000110010 siege 00000000001111011110011010100111 ripens 00000000000000000000000000000000 Jalalabad 00100000000000000000000000000000 minefields 00000000000000000000000000000000 defenseless 00000000000000000000000000000000 re-supplied 00000000000000000000000000000000 Stingers 00100000000000000000000000000000 anti-aircraft 00000000000000000000000000000000 incoherent 00000000000000000000000000000000 cutoff 00000000000111001000100101100111 Creation 00100000000111110100111000001111 Klass 00100000000000000000000000000000 disciples 00000000000000000000000000000000 withering 00000000001010011111010001000000 vine 00000000000000000000000000000000 Reaganauts 00100000000000000000000000000000 138.625 00000000000000000000000000000000 around... 00000000000000000000000000000000 national-priority 00000000000000000000000000000000 weariness 00000000000000000000000000000000 tranquility 00000000000000000000000000000000 receding 00000000000001101101100001000000 backer 00001111111110000011101000101000 nonlethal 00000000000000000000000000000000 impenetrable 00000000000000000000000000000000 strategic-arms 00000000000000000000000000000000 Comedy 00100000000000100110101000100001 anti-ballistic-missile 00000000000000000000000000000000 credulity 00000000000000000000000000000000 shying 00000000000000000000000000000000 drumbeating 00000000000000000000000000000000 arming 00000000000000000000000000000000 anti-communist 00000000000000000000000000000000 presiding 00000000000110110010111010100111 Homosexuals 00100000000101011100111000110011 unread 00000000000000000000000000000000 disgusting 00000000000000000000000000000000 unguided 00000000000000000000000000000000 Stoddard 00101111111101101110000010001000 infelicitous 00000000000000000000000000000000 per-subscriber 00000000000000000000000000000000 humaneness 00000000000000000000000000000000 indulgences 00000000000000000000000000000000 idiocy 00000000000000000000000000000000 invidious 00000000000000000000000000000000 anti-homosexual 00000000000000000000000000000000 screed 00000000000000000000000000000000 Mudd 00100000000000000000000000000000 dared 00000000000000101011101000110010 non-Indian 01000000000000000000000000000000 we're-all-in-this-together 00000000000000000000000000000000 blemishes 00000000000000000000000000000000 707-pence 00000000000000000000000000000000 discs 00000000000000000000000000000000 Weapon 00100000000100111101111101100111 power-transmission 00000000000000000000000000000000 48-year 00000000000000000000000000000000 soy 00000000000000000000000000000000 Lethal 00100000001000000101010010010000 gleaming 00000000000000000000000000000000 exhibitors 00000000000000000000000000000000 air-conditioner 00000000000000000000000000000000 missile-guidance 00000000000000000000000000000000 high-purity 00000000000000000000000000000000 halogenated 00000000000000000000000000000000 hydrocarbon 00000000000000000000000000000000 Masaaki 00100000000000000000000000000000 decentralizing 00000000000000000000000000000000 Leninskoye 00100000000000000000000000000000 Zamya 00100000000000000000000000000000 tree-farming 00000000000000000000000000000000 grossing 00000000000000000000000000000000 Cataracts 00100000000000000000000000000000 tribes 00000000000101101000100000110011 inhabit 00000000000000000000000000000000 4,800-acre 00000000000000000000000000000000 Departmentstore 00100000000000000000000000000000 international-operations 00000000000000000000000000000000 5.56 00000000000000000000000000000000 712 00000000000000000000000000000000 Dada 00100000000000000000000000000000 Symbolist 00100000000000000000000000000000 Ventes 00100000000000000000000000000000 Horta 00100000000000000000000000000000 sabers-along 00000000000000000000000000000000 initiation 00000000000000000000000000000000 pro-forma 00000000000000000000000000000000 pre-sale 00000000000000000000000000000000 top-drawer 00000000000000000000000000000000 Vivien 00100000000000000000000000000000 Antwerp 00100000000000000000000000000000 scribbling 00000000000000000000000000000000 auction-fee 00000000000000000000000000000000 Stefan 00100000000000000000000000000000 Ending 00100000000000000110010100110010 Duty 00100000000110001111110100100111 Crispin 00100000000000000000000000000000 Tickell 00100000000000000000000000000000 437.7 00000000000000000000000000000000 436.3 00000000000000000000000000000000 63.1 00000000000000000000000000000000 Charges 00100000000111101101110000100011 54.1 00000000000000000000000000000000 Ellmann 00100000000000000000000000000000 stock-appreciation-based 00000000000000000000000000000000 mass-merchandise 00000000000000000000000000000000 Superconductors 00100000000000011110111001100011 check-kiting 00000000000000000000000000000000 Calderwood 00100000000000000000000000000000 jumpiness 00000000000000000000000000000000 ever-faster 00000000000000000000000000000000 capital-formation 00000000000000000000000000000000 prognosticators 00000000000000000000000000000000 lemmings 00000000000000000000000000000000 eye-blink 00000000000000000000000000000000 fruitbowl 00000000000000000000000000000000 weightings 00000000000000000000000000000000 McLelland 01000000000000000000000000000000 Rubega 00100000000000000000000000000000 fro 00000000000000000000000000000000 non-retail 00000000000000000000000000000000 Shearon 00100000000000000000000000000000 226,570,380 00000000000000000000000000000000 gorilla 00000000000000000000000000000000 Presumably 00100000010100000000001001110010 value-oriented 00000000000000000000000000000000 Delphi 00100000000000000000000000000000 Arnott 00100000000000000000000000000000 50-point 00000000000000000000000000000000 voracious 00000000000000000000000000000000 1936 00000000000000000000000000000000 Keynes 00100000000000000000000000000000 maxims 00000000000000000000000000000000 antisocial 00000000000000000000000000000000 fetish 00000000000000000000000000000000 high-backed 00000000000000000000000000000000 well-received 00000000000000000000000000000000 spaceborn 00000000000000000000000000000000 expunge 00000000000000000000000000000000 imperious 00000000000110111100110100010000 lingo 00000000000000000000000000000000 bombarding 00000000000000000000000000000000 Physics 00100000000000001011001101100001 record-tying 00000000000000000000000000000000 sweaty 00000000000000000000000000000000 Worms 00100000000011100011110101100011 Killers 00100000000000000000000000000000 optimist 00000000000111111001101000100111 French-franc 00100000000000000000000000000000 Activists 00100000000100000001000010110011 malfunction 00000000000000000000000000000000 space-shuttle 00000000000000000000000000000000 6.19 00000000000000000000000000000000 6.66 00000000000000000000000000000000 Chaos 00100000000101100111111010100111 pi 00000000000000000000000000000000 axiomatic 00000000000000000000000000000000 blur 00000000000000000000000000000000 rapidity 00000000000000000000000000000000 statutorily 00000000000000000000000000000000 3.71 00000000000000000000000000000000 Peduzzi 00100000000000000000000000000000 Polysilicon 00100000000000000000000000000000 radioactivity 00000000000000000000000000000000 Appalled 00100000000001001101110000110010 errand 00000000000000000000000000000000 Hearing 00100000000111110101001011100111 fourth-level 00000000000000000000000000000000 lawfully 00000000000000000000000000000000 criminal-law 00000000000000000000000000000000 Propylene 00100000000000000000000000000000 overzealousness 00000000000000000000000000000000 Arguably 00100000000111000000001001110010 After-the-fact 00100000000000000000000000000000 undeniable 00000000000101010100110100010000 specificity 00000000000000000000000000000000 overgeneralization 00000000000000000000000000000000 industrial-gases 00000000000000000000000000000000 fixation 00000000000000000000000000000000 commission... 00000000000000000000000000000000 culpable 00000000000000000000000000000000 law-making 00000000000000000000000000000000 fact-bound 00000000000000000000000000000000 under-inclusion 00000000000000000000000000000000 overinclusion 00000000000000000000000000000000 RICO-forfeiture 01000000000000000000000000000000 one-sentence 00000000000000000000000000000000 criminalize 00000000000000000000000000000000 breaches 00000000000110111101100100101111 sweepingly 00000000000000000000000000000000 moralistic 00000000001000011100110100010000 line-drawing 00000000000000000000000000000000 openended 00000000000000000000000000000000 123.9 00000000000000000000000000000000 laboratory-services 00000000000000000000000000000000 taxlow 00000000000000000000000000000000 graphite 00000000000000000000000000000000 specialty-material 00000000000000000000000000000000 Samsung-Corning 01000000000000000000000000000000 antifreeze 00000000000000000000000000000000 11:13 00000000000000000000000000000000 60.25-point 00000000000000000000000000000000 Computer-guided 00100000000000000000000000000000 Nervous 00100000000100100111110000110010 Alisarda 00100000000000000000000000000000 Decliners 00100000000101111100101001110011 931 00000000000000000000000000000000 24.50 00000000000000000000000000000000 Ziebarth 00100000000000000000000000000000 buckling 00000000000000000000000000000000 expirations 00000000000000000000000000000000 Laux 00100000000000000000000000000000 lesser-developed-country 00000000000000000000000000000000 chemicals-industry 00000000000000000000000000000000 kickback 00000000000000000001100111001111 M.E. 01000000000000000000000000000000 341.16 00000000000000000000000000000000 188.89 00000000000000000000000000000000 worst-performing 00000000000000000000000000000000 trading-oriented 00000000000000000000000000000000 Sardinia 00100000000000000000000000000000 ducking 00000000000000000000000000000000 repaying 00000000000011110101011101000000 Dravo 00100000000110010101011100101000 Intertan 00100000000010000011101100101000 375.16 00000000000000000000000000000000 16,800,000 00000000000000000000000000000000 885,800 00000000000000000000000000000000 501,200 00000000000000000000000000000000 454,100 00000000000000000000000000000000 331,400 00000000000000000000000000000000 29,000 00000000000000000000000000000000 Satisfaction 00100000000111100100001110100111 ennumerated 00000000000000000000000000000000 LIBERTY 01000000000111111100100100100001 16.50 00000000000000000000000000000000 biases 00000000000000000000000000000000 demand... 00000000000000000000000000000000 Braitman 00100000000000000000000000000000 street... 00000000000000000000000000000000 discernible 00000000000000000000000000000000 rollovers 00000000000000000000000000000000 shortest 00000000000000000000000000000000 large-denomination 00000000000000000000000000000000 yearend 00000000000000000000000000000000 unwavering 00000000000000000000000000000000 Baily 00100000000000000000000000000000 IMF-guided 01000000000000000000000000000000 reschedulable 00000000000000000000000000000000 microeconomics 00000000000000000000000000000000 authorizations 00000000000000000000000000000000 quasi-governmental 00000000000000000000000000000000 shortchanged 00000000000000000000000000000000 burden-sharing 00000000000000000000000000000000 IMF-approved 01000000000000000000000000000000 Upping 00100000000000000000000000000000 Malpass 00100000000000000000000000000000 prearranged 00000000000110101011000110010000 applelike 00000000000000000000000000000000 Cinemax 00100000000000000000000000000000 Kagan 00101111111001010000110010001000 Carmel 00100000000101000111101001101000 mismeasurements 00000000000000000000000000000000 pay-television 00000000000000000000000000000000 Linking 00100011000010010000000000001010 Bratislava 00100000000000000000000000000000 deflators 00000000000000000000000000000000 ex-investment 00000000000000000000000000000000 309,500 00000000000000000000000000000000 estimators 00000000000000000000000000000000 condoms 00000000000110111001111001100011 uninfected 00000000000000000000000000000000 140.95 00000000000000000000000000000000 1.8435 00000000000000000000000000000000 nonbusiness 00000000000000000000000000000000 expedients 00000000000000000000000000000000 Goloven 00100000000000000000000000000000 foggy 00000000000000000000000000000000 currencny 00000000000000000000000000000000 bewildering 00000000000000000000000000000000 incessantly 00000000000000000000000000000000 142.55 00000000000000000000000000000000 142.25 00000000000000000000000000000000 1948-89 00000000000000000000000000000000 injects 00000000000000000000000000000000 finanicial 00000000000000000000000000000000 367.40 00000000000000000000000000000000 366.55 00000000000000000000000000000000 83,206 00000000000000000000000000000000 irrevocable 00000000000000000000000000000000 record-breaking 00000000000000000000000000000000 68-week 00000000000000000000000000000000 12.66 00000000000000000000000000000000 13.9 00000000000000000000000000000000 904,000 00000000000000000000000000000000 1962-63 00000000000000000000000000000000 Handy 00100000000011100100111010000000 Butter-Nut 01000000000000000000000000000000 Tender 00100000000000000000001100010000 Leaf 00100000000000001001110100100001 coffee-roasting 00000000000000000000000000000000 MACMILLAN 01000000000111111110101100101000 BLOEDEL 01000000000000100001101000101000 NEWSPAPERS 01000000000111001100110001100011 Highlander 00100000000000000000000000000000 investment-bank 00000000000000000000000000000000 flux 00000000000111110110000010100011 MicroGeneSys 01000000000000000000000000000000 VaxSyn 01000000000000000000000000000000 HIV-1 01000000000000000000000000000000 morsel 00000000000000000000000000000000 innoculating 00000000000000000000000000000000 thesis 00000000000111111000111101100111 amiss 00000000000000000000000000000000 numerator 00000000000000000000000000000000 RobertsCorp 01000000000000000000000000000000 8.483 00000000000000000000000000000000 8.1255 00000000000000000000000000000000 72-franc 00000000000000000000000000000000 whipsawing 00000000000000000000000000000000 10.16 00000000000000000000000000000000 polyvinyl 00000000000000000000000000000000 60.7 00000000000000000000000000000000 601.3 00000000000000000000000000000000 Polyvinyl 00100000000000000000000000000000 overtaken 00000000000000000000000000000000 PVC 01000000000000000000000000000000 vinyl-products 00000000000000000000000000000000 64.1 00000000000000000000000000000000 taper 00000000000000000000000000000000 49.125 00000000000000000000000000000000 Edzard 00100000000000000000000000000000 Morelli 00100000000000000000000000000000 Tribune-Democrat 01000000000000000000000000000000 ENDED 01000000000000000010010100110010 Spooked 00100000010110100001110000110010 delectable 00000000000000000000000000000000 zigzags 00000000000000000000000000000000 ORTEGA 01001111111101100000110010001000 316 00000000000000000000000000000000 Alistair 00100000000000000000000000000000 12.60 00000000000000000000000000000000 C-S 01000000000000000000000000000000 107,100 00000000000000000000000000000000 Leumi 00100000000000000000000000000000 probabilities 00000000000000000000000000000000 JAGRY 01000000000000000000000000000000 Luxury 00100000000011010000001010110000 44.9 00000000000000000000000000000000 Averae 00100000000000000000000000000000 Ordinary 00100000000000000001101000110000 182.9 00000000000000000000000000000000 11-a-share 00000000000000000000000000000000 electronic-measuring 00000000000000000000000000000000 Barret 00100000000000000000000000000000 9.482 00000000000000000000000000000000 7.567 00000000000000000000000000000000 Positive 00100000000000000100001010010000 120.6 00000000000000000000000000000000 626.3 00000000000000000000000000000000 outstrip 00000000000000000000000000000000 176.4 00000000000000000000000000000000 78.625 00000000000000000000000000000000 73.50 00000000000000000000000000000000 association... 00000000000000000000000000000000 reduced-instruction 00000000000000000000000000000000 RISC-based 01000000000000000000000000000000 supermainframe 00000000000000000000000000000000 generalpurpose 00000000000000000000000000000000 UAL'S 01000000000000000000000000000000 SKIDDED 01000000000000010001000100110010 then-senior 00000000000000000000000000000000 Cuddeford 00100000000000000000000000000000 214.54 00000000000000000000000000000000 3377.43 00000000000000000000000000000000 franc-denominated 00000000000000000000000000000000 129.97 00000000000000000000000000000000 0.0018 00000000000000000000000000000000 O'Rourke 01000000000000000000000000000000 melt-textured 00000000000000000000000000000000 62-a-share 00000000000000000000000000000000 GDL 01000000000000000000000000000000 Valparaiso 00100000000000000000000000000000 Geoffrie 00100000000000000000000000000000 101,000 00000000000000000000000000000000 selloff 00000000000000000000000000000000 perversion 00000000000000000000000000000000 wholesaling 00000000000000000000000000000000 130.1 00000000000000000000000000000000 322.7 00000000000000000000000000000000 124.5 00000000000000000000000000000000 newspaper-delivery 00000000000000000000000000000000 Walbrecher 00100000000000000000000000000000 Polsky 00100000000000000000000000000000 lymph 00000000000000000000000000000000 rearrangement 00000000000000000000000000000000 diagnosing 00000000000000000000000000000000 biopsies 00000000000000000000000000000000 Wyndham 00100000000000000000000000000000 six-year-old 00000000000000000000000000000000 Frucher 00100000000000000000000000000000 Diagnostic 00100000000010000010101010110000 MetWest 01000000000000000000000000000000 Tarzana 00100000000000000000000000000000 synergies 00000000000100110011111010100111 Beigel 00100000000000000000000000000000 Couch-potato 00100000000000000000000000000000 Clothes 00100000000110001111110101100011 Seahorse 00100000000000000000000000000000 ever-growing 00000000000000000000000000000000 Flaherty 00100000000000000000000000000000 zappers 00000000000000000000000000000000 Formed 00100000001011100000010000110010 weds 00000000000000000000000000000000 dewatering 00000000000000000000000000000000 1st 00000000000000000000000000000000 redial 00000000000000000000000000000000 Folcroft 00100000000000000000000000000000 Billing 00100000000001010010110001000000 click 00000000000000000000000000000000 Jovi 00100000000000000000000000000000 topical 00000000000011000111101011100001 900-interactive 00000000000000000000000000000000 Callers 00100000000000100110111000110011 MacLellan 01000000000000000000000000000000 punt 00000000000111001111100000001011 thanking 00000000000000000000000000000000 Jackets 00100000000001100111110101100011 On-Line 01000000000000000000000000000000 couponing 00000000000000000000000000000000 Agnelli-related 00100000000000000000000000000000 Peg 00100000101100111111110110110010 Someday 00100001010100000000001001110010 45.75 00000000000000000000000000000000 Montle 00100000000000000000000000000000 STRUCK 01000000001111001001001000110010 30-foot 00000000000000000000000000000000 8.467 00000000000000000000000000000000 Tarwhine 00100000000000000000000000000000 Psychiatric 00100000000000010001100000110000 parley 00000000000000000000000000000000 readmit 00000000000000000000000000000000 explusion 00000000000000000000000000000000 psychiatry 00000000000000000000000000000000 11.75-a-share 00000000000000000000000000000000 Galbani 00100000000000000000000000000000 diGenova 01000000000000000000000000000000 flag-burner 00000000000000000000000000000000 expel 00000000000000000000000000000000 Soviet-Israeli 01000000000000000000000000000000 95-37 00000000000000000000000000000000 abstentions 00000000000000000000000010111011 36.13 00000000000000000000000000000000 commandos 00000000000000000000000000000000 slayings 00000000000000000000000000000000 44.08 00000000000000000000000000000000 endangered-species 00000000000000000000000000000000 51.65 00000000000000000000000000000000 extraditions 00000000000000000000000000000000 Colombians 00100000000000010001011000110011 Tobruk 00100000000000000000000000000000 Slovenian 00100000000000000000000000000000 282.08 00000000000000000000000000000000 293.29 00000000000000000000000000000000 43.7 00000000000000000000000000000000 information-display 00000000000000000000000000000000 615,000 00000000000000000000000000000000 128.19 00000000000000000000000000000000 reformulation 00000000000000000000000000000000 Fuji-apple 00100000000000000000000000000000 TXO 01000000000000000000000000000000 ray 00001111111000000011010100001000 25,000-member 00000000000000000000000000000000 immigrant 00000000000100100010101000110000 25-point 00000000000000000000000000000000 downdraft 00000000000000000000000000000000 11:15 00000000000000000000000000000000 130.25 00000000000000000000000000000000 onepage 00000000000000000000000000000000 uncalled 00000000000000000000000000000000 39.31 00000000000000000000000000000000 47.46 00000000000000000000000000000000 inexcusable 00000000000000000000000000000000 DiLeo 01000000000000000000000000000000 quandary 00000000000000000000000000000000 Forstmann 00100000000111101010111000101000 re-emerge 00000000000000000000000000000000 46.02 00000000000000000000000000000000 106.2 00000000000000000000000000000000 55.59 00000000000000000000000000000000 stoned 00000000000000000000000000000000 entranced 00000000000000000000000000000000 gratitude 00000000000111111100011100111001 four-week 00000000000000000000000000000000 20-city 00000000000000000000000000000000 synthesizers 00000000000000000000000000000000 collaborators 00000000000110010011110000110011 spaceships 00000000000000000000000000000000 emperor 00000000000111100111111000000001 265.79 00000000000000000000000000000000 Softly 00100000000000000000000000000000 shaggy 00000000000000000000000000000000 variously 00000000000000000000000000000000 108.28 00000000000000000000000000000000 monophonic 00000000000000000000000000000000 hypnotic 00000000000000000000000000000000 tonal 00000000000000000000000000000000 unthreatening 00000000000000000000000000000000 unvaryingly 00000000000000000000000000000000 soporific 00000000000000000000000000000000 unflaggingly 00000000000000000000000000000000 117.94 00000000000000000000000000000000 unmelodic 00000000000000000000000000000000 E-Z 01000000000000000000000000000000 dictum 00000000000000000000000000000000 unabatingly 00000000000000000000000000000000 62.04 00000000000000000000000000000000 simplicities 00000000000000000000000000000000 octave 00000000000000000000000000000000 ragtime 00000000000000000000000000000000 chord 00000000000000000000000000000000 progressions 00000000000000000000000000000000 Opening 00100000000111101111100001110111 Glassworks 00100000000000000000000000000000 straying 00000000000000000000000000000000 octaves 00000000000000000000000000000000 65.53 00000000000000000000000000000000 pianistic 00000000000000000000000000000000 bravura 00000000000000000000000000000000 arpeggios 00000000000000000000000000000000 ticklish 00000000000000000000000000000000 Sutra 00100000000000000000000000000000 improvisatory 00000000000000000000000000000000 riff 00000000000000000000000000000000 modulate 00000000000000000000000000000000 filigree 00000000000000000000000000000000 Contrasts 00100000000000011011100000110010 Knee 00100000000111000101110000000001 interlude 00000000000000000000000000000000 Einstein 00101111111111101100000101001000 toccata 00000000000000000000000000000000 left-hand 00000000000000000000000000000000 Mice 00100000000111111001110101100011 crosses 00000110010110000011000000010010 resonant 00000000000000000000000000000000 leitmotif 00000000000000000000000000000000 indeterminate 00000000000000000000000000000000 charmingly 00000000000000000000000000000000 tellingly 00000000000000000000000000000000 Glasswork 00100000000000000000000000000000 Martyn 00100000000000000000000000000000 Divine 00100000001010100101110110110010 Lucinda 00100000000000000000000000000000 Childs 00100000000000000000000000000000 Metamorphosis 00100000000000000000000000000000 Errol 00100000000000000000000000000000 eeriness 00000000000000000000000000000000 two-note 00000000000000000000000000000000 Served 00100000000111011110001000110010 Admirers 00100000000010111010000010110011 Kostelanetz 00100000000000000000000000000000 encyclopedic 00000000000000000000000000000000 weighty 00000000000000000000000000000000 Well-Tempered 01000000000000000000000000000000 Clavier 00100000000000000000000000000000 claustrophobic 00000000000000000000000000000000 315.12 00000000000000000000000000000000 overlays 00000000000000000000000000000000 bombast 00000000000000000000000000000000 yearn 00000000000111101010000110110010 astringency 00000000000000000000000000000000 neoclassical 00000000000000000000000000000000 156.12 00000000000000000000000000000000 171.04 00000000000000000000000000000000 Berg 00101111111100000010000010001000 Webern 00100000000000000000000000000000 retrospect 00000000000111111111011011010111 concision 00000000000000000000000000000000 Spiegelman 00100000000000000000000000000000 forbidding-looking 00000000000000000000000000000000 unrecoverable 00000000000000000000000000000000 212.1 00000000000000000000000000000000 47.9 00000000000000000000000000000000 5.17 00000000000000000000000000000000 beatific 00000000000000000000000000000000 excursus 00000000000000000000000000000000 informs 00000000000000000000000000000000 Congress's 00100000000000000000000000000000 Buccaneers 00100000000000000000000000000000 buttresses 00000000000000000000000000000000 54.51 00000000000000000000000000000000 55.10 00000000000000000000000000000000 facetiously 00000000000000000000000000000000 tippling 00000000000000000000000000000000 cower 00000000000000000000000000000000 hairyknuckled 00000000000000000000000000000000 McManus 01000000000000000000000000000000 Surrey 00100000000000000000000000000000 high-toned 00000000000000000000000000000000 topless 00000000000000000000000000000000 impugn 00000000000000000000000000000000 101-year-old 00000000000000000000000000000000 rested 00000000000000000000000000000000 hard-to-fault 00000000000000000000000000000000 283 00000000000000000000000000000000 hullabaloo 00000000000000000000000000000000 quirks 00000000000000000000000000000000 frequency,`` 00000000000000000000000000000000 lumping 00000000000000000000000000000000 smaller-than-average 00000000000000000000000000000000 103.98 00000000000000000000000000000000 352.7 00000000000000000000000000000000 Sainte-Chapelle 01000000000000000000000000000000 ant 00000000000000000000000000000000 contemporize 00000000000000000000000000000000 Ad-Unit 01000000000000000000000000000000 Boulet 00100000000000000000000000000000 Dru 00100000000000000000000000000000 Dupuy 00100000000000000000000000000000 107.87 00000000000000000000000000000000 WCRS-Eurocom 01000000000000000000000000000000 delicacy 00000000000000000000000000000000 Northlich 00100000000000000000000000000000 Stolley 00100000000000000000000000000000 LaWarre 01000000000000000000000000000000 foodservice 00000000000000000000000000000000 Novick 00100000000000000000000000000000 infuriate 00000000000000000000000000000000 501.61 00000000000000000000000000000000 486.1 00000000000000000000000000000000 reauthorize 00000000000000000000000000000000 dual-trading 00000000000000000000000000000000 tell... 00000000000000000000000000000000 246.60 00000000000000000000000000000000 Posh 00100000001000111000001000110000 Showrooms 00100000000111111110110000001001 Specifications 00100000000111010111011100100011 ashtrays 00000000000000000000000000000000 Ferron 00100000000000000000000000000000 Dictation 00100000000000000000000000000000 Device 00100000000111101100000011100111 Saga 00100000000111001100101101100111 Lesson 00100000000111010111111101100111 DON'T 01000000000000000000000000000000 248.91 00000000000000000000000000000000 16.02 00000000000000000000000000000000 Blocked 00100000010000010100010000110010 paperclip 00000000000000000000000000000000 researches 00000000001011011101000000010010 micro 00000000000000010010011010110000 abandonment 00000000000111111110001000001111 Summerland 00100000000000000000000000000000 mirrored 00000000011100000001010000110010 follower 00000000000000000000000000000000 leading-edge 00000000000000000000000000000000 innovator 00000000000111000011111001100111 TRIAD 01000000000000000001100110101000 Conrades 00100000000000000000000000000000 Branching 00100000000000000000000000000000 DAY 01000000000111111111111000010111 sycamore 00000000000000000000000000000000 11.11 00000000000000000000000000000000 Steamship 00100000000000000000000000000000 steel-toothed 00000000000000000000000000000000 underside 00000000000000000000000000000000 four-inch 00000000000000000000000000000000 prongs 00000000000000000000000000000000 wonderbars 00000000000000000000000000000000 Blaggs 00100000000000000000000000000000 Parkersburg 00100000000000000000000000000000 Stoner 00100000000000000000000000000000 Temper 00100000000111000110110010110111 STUBBED 01000000000000000000000000000000 bruised 00000000000100010101101001000000 shins 00000000000000000000000000000000 Geste 00100000000000000000000000000000 Goshen 00100000000000000000000000000000 Bedfellows 00100000000000000000000000000000 recessed 00000000000000000000000000000000 Scarsdale 00100000000000000000000000000000 NavforJapan 01000000000000000000000000000000 Montpelier 00100000000000000000000000000000 1941 00000000000000000000000000000000 babel 00000000000000000000000000000000 co-edits 00000000000000000000000000000000 shrines 00000000000000000000000000000000 relics 00000000000000000000000000000000 Forrestal 00100000000000000000000000000000 moaning 00000000000000000000000000000000 frogmen 00000000000000000000000000000000 meanest 00000000000000000000000000000000 ayatollah 00000000000110011011111100001000 Deployment 00100000000111101011111101001111 fooled 00000000110010000001110000110010 81.8 00000000000000000000000000000000 deployable 00000000000000000000000000000000 shoelaces 00000000000000000000000000000000 C-5B 01000000000000000000000000000000 KC-10 01000000000000000000000000000000 prepositioning 00000000000000000000000000000000 ruffled 00000000001011100101101001000000 Zagros 00100000000000000000000000000000 feathers 00000000000000000000000000000000 asses 00000000000000000000000000000000 zilch 00000000000000000000000000000000 baksheesh 00000000000000000000000000000000 potentates 00000000000000000000000000000000 unambiguous 00000000000000000000000000000000 silted 00000000000000000000000000000000 1,244 00000000000000000000000000000000 jillions 00000000000000000000000000000000 land-based 00000000000000000000000000000000 admiral 00000000000000100010101100100101 convoys 00000000000000000000000000000000 Questions 00100000000101101100100010101111 Caleb 00100000000000000000000000000000 clanking 00000000000000000000000000000000 Marley 00100000000000000000000000000000 despots 00000000000000000000000000000000 600-ship 00000000000000000000000000000000 crawling 00000000000000000000000000000000 banshees 00000000000000000000000000000000 howling 00000000000110110111000001000000 Gives 00100000000110000001000000010010 willies 00000000000000000000000000000000 -offer 00000000000000000000000000000000 grander 00000000000000000000000000000000 Anointing 00100000000000000000000000000000 baroque 00000000000000000000000000000000 Mattia 00100000000000000000000000000000 go-go 00000000000000000000000000000000 Neapolitan 00100000000000000000000000000000 pre-18th-century 00000000000000000000000000000000 I.M. 01000000000000000000000000000000 Pei 00100000000000000000000000000000 plucked 00000000000000000000000000000000 dispensation 00000000000000000000000000000000 Gorce 00100000000000000000000000000000 fling 00000000000000000000000000000000 masterpieces 00000000000000000000000000000000 Chevrolets 00100000000000000000000000000000 goldbanded 00000000000000000000000000000000 Moritz 00100000000000000000000000000000 hauteur 00000000000000000000000000000000 50-year-old 00000000000000000000000000000000 chain-smoking 00000000000000000000000000000000 dynamo 00000000000000000000000000000000 Opel 00100000000000000000000000000000 Paintings 00100000000001101101110101100011 Divesting 00100000000000000000000000000000 Embittered 00100000011111100001110000110010 epitomize 00000000000000000000000000000000 ilk 00000000000000000000000000000000 laments 00000000000111111110011111000010 Wildenstein 00100000000000000000000000000000 jurists 00000000000000000000000000000000 freespender 00000000000000000000000000000000 Math 00100000000011011111001101100001 Jansz. 00100000000000000000000000000000 Uyl 00100000000000000000000000000000 343,333 00000000000000000000000000000000 gloated 00000000000000000000000000000000 phoning 00000000000000000000000000000000 gloating 00000000000000000000000000000000 docket 00000000000111101110011001000101 sociological 00000000000000000000000000000000 Wilderness 00100000000000100010110000000001 Battista 00100000000000000000000000000000 Tiepolo 00100000000000000000000000000000 1744 00000000000000000000000000000000 strove 00000000000000000000000000000000 cornucopia 00000000000000000000000000000000 insubstantial 00000000000000000000000000000000 -33 00000000000000000000000000000000 Antiques 00100000000000000000000000000000 Medicis 00100000000000000000000000000000 thrift-institution 00000000000000000000000000000000 puzzlement 00000000000000000000000000000000 obliquely 00000000000000000000000000000000 Govern 00100000000010011110101110110010 storing 00000000000001000111111101000000 dehumidified 00000000000000000000000000000000 safekeeping 00000000000000000000000000000000 below-market 00000000000000000000000000000000 lavished 00000000000000000000000000000000 provenance 00000000000000000000000000000000 Wiener 00100000000000000000000000000000 Appraisers 00100000000000000000000000000000 modish 00000000000000000000000000000000 hyperactive 00000000000010011101000010010000 contemptuous 00000000011001101011110000110010 Impressionist 00100000000000011110101100100001 downstream 00000000000000001101011010100001 sleeper 00000000000101101011100000100001 Shorter 00100000000000100100001111000000 artworks 00000000000000000000000000000000 impulsively 00000000000000000000000000000000 Knuettel 00100000000000000000000000000000 prudently 00000000000000000000000000000000 art-world 00000000000000000000000000000000 Theran 00100000000000000000000000000000 pawning 00000000000000000000000000000000 pupil 00000000000000000000000000000000 fine-arts 00000000000000000000000000000000 appraiser 00000000000000000000000000000000 Frequently 00100000000111100000001001110010 quarter-of-a-century 00000000000000000000000000000000 Zimet 00100000000000000000000000000000 Davids 00100000000000000000000000000000 Heem 00100000000000000000000000000000 opulence 00000000000000000000000000000000 Gatsby 00100000000000000000000000000000 Brinkman 00100000000000000000000000000000 busies 00000000000000000000000000000000 tuxedo 00000000000000000000000000000000 dabs 00000000000000000000000000000000 brim 00000000000000000000000000000000 inlay 00000000000000000000000000000000 hardwood 00000000000000000000000000000000 oriental 00000000000001000000001000110000 top-heavy 00000000000000000000000000000000 leatherbound 00000000000000000000000000000000 implores 00000000000000000000000000000000 splendor 00000000000000000000000000000000 return. 00000000000000000000000000000000 CREATIVE 01000000000001001010000000110000 conglomerates 00000000000111111111110001100011 Principles 00100000000111111101011100100011 pupils 00000000000101100001011100110011 Accountants 00100000000111100110111000110011 seven-member 00000000000000000000000000000000 permissive 00000000000011110110010010010000 unequivocally 00000000000000000000000000000000 overrule 00000000000000000000000000000000 Keepers 00100000000000000000000000000000 filberts 00000000000000000000000000000000 rile 00000000000000000000000000000000 disengage 00000000000000000000000000000000 353,500 00000000000000000000000000000000 405,000 00000000000000000000000000000000 228,000 00000000000000000000000000000000 demagogic 00000000000000000000000000000000 256,000 00000000000000000000000000000000 storability 00000000000000000000000000000000 Locally 00100000001100100001001001110010 Simulation 00100000000000001101100001100001 Edita 00100000000000000000000000000000 simulator 00000000000000000000000000000000 incisions 00000000000000000000000000000000 sonar 00000000000000000000000000000000 UnionFed 01000000000000000000000000000000 scrutinize 00000000000001010111111110110010 truant 00000000000000000000000000000000 Parental 00100000000010100101000000110000 48.2 00000000000000000000000000000000 aircraft-electronics 00000000000000000000000000000000 airborne-radar 00000000000000000000000000000000 123.7 00000000000000000000000000000000 pre-kindergarten 00000000000000000000000000000000 137.2 00000000000000000000000000000000 bikini 00000000000111101000110000000001 Vahid 00100000000000000000000000000000 Fathi 00100000000000000000000000000000 Prescott 00100000000111011011110000101000 Turben 00101111111111111101110001001000 child-development 00000000000000000000000000000000 Bourke 00100000000000000000000000000000 329,600 00000000000000000000000000000000 55.375 00000000000000000000000000000000 strikeout 00000000000000000000000000000000 7.422 00000000000000000000000000000000 megadrop 00000000000000000000000000000000 Weakening 00100000000001000111010001000000 shred 00000000000000000000000000000000 pocketing 00000000000000000000000000000000 2100 00000000000000000000000000000000 Generalizations 00100000000000000000000000000000 LeFrere 01000000000000000000000000000000 cave-in 00000000000000000000000000000000 psyche 00000000000111101000011000100001 reneging 00000000000000000000000000000000 fluff 00000000000000000000000000000000 overreaction 00000000000000000000000000000000 Sakowitz 00100000000000000000000000000000 greater-fool 00000000000000000000000000000000 schoolteachers 00000000000000000000000000000000 reticent 00000000000000000000000000000000 Financo 00100000000000000000000000000000 self-definition 00000000000000000000000000000000 irksome 00000000000000000000000000000000 hone 00000000000000000000000000000000 pomological 00000000000000000000000000000000 EQUITY 01000000000000000000011010100001 3-0 00000000000000000000000000000000 capricious 00000000000000000000000000000000 prejudicial 00000000000001110110010010010000 MEDUSA 01000000000000000000000000000000 INCOME 01000000000111111111010101000111 REALTY 01000000000010001010010010110000 12-cent-a-share 00000000000000000000000000000000 rebuilt 00000000111001010100010000110010 commotion 00000000000000000000000000000000 188.5 00000000000000000000000000000000 Hillman 00100000000000000000000000000000 Panny 00100000000000000000000000000000 illusions 00000000000000000000000000000000 extravagance 00000000000000000000000000000000 Gadsden 00100000000000000000000000000000 convenience-food 00000000000000000000000000000000 Bakery 00100000000100011011111010110000 1,843,000 00000000000000000000000000000000 1,802,000 00000000000000000000000000000000 Selwyn 00100000000000000000000000000000 double-crossed 00000000000000000000000000000000 Ermanno 00100000000000000000000000000000 Pascutto 00100000000000000000000000000000 potentialities 00000000000000000000000000000000 compiler 00000000000000000000000000000000 Larchmont 00100000000000000000000000000000 1,200-year-old 00000000000000000000000000000000 exposition 00000000000000000000000000000000 Pierluigi 00100000000000000000000000000000 Beggiato 00100000000000000000000000000000 hoteliers 00000000000000000000000000000000 expo 00000000000000000000000000000000 Krakow 00100000000000000000000000000000 Bogdan 00100000000000000000000000000000 Gumkowski 00100000000000000000000000000000 LOT 01000000000111111111111001111111 Orbis 00100000000000000000000000000000 Trans-Mediterranean 01000000000000000000000000000000 9,500 00000000000000000000000000000000 NUM 01000000000000000000000000000000 7,800 00000000000000000000000000000000 35-nation 00000000000000000000000000000000 Sofia 00100000000000000000000000000000 fouling 00000000000000000000000000000000 latent 00000000001110011010000000110000 Klaus 00100000000000000000000000000000 Toepfer 00100000000000000000000000000000 Estonian-language 00100000000000000000000000000000 Hasse 00100000000000000000000000000000 Olsson 00101111000011001100000010001000 self-expression 00000000000000000000000000000000 Estonia 00100000000000000000000000000000 Bonniers 00100000000000000000000000000000 Estonian 00100000000000000000000000000000 equated 00000000000000000000000000000000 under-secretary 00000000000000000000000000000000 half-way 00000000000000000000000000000000 Xiaoqing 00100000000000000000000000000000 4,555 00000000000000000000000000000000 Shandong 00100000000000000000000000000000 urgent 00000000000001000001110100010000 Potala 00100000000000000000000000000000 Grocery 00100000000000011101010000110000 spices 00000000000000000000000000000000 seasonings 00000000000000000000000000000000 Erskin 00100000000000000000000000000000 1,035,000 00000000000000000000000000000000 Seifert 00100000000000000000000000000000 Valu 00100000000001001100010010110101 Tu 00100000000000000000000000000000 Pyo 00100000000000000000000000000000 perishables 00000000000000000000000000000000 antidote 00000000000000000000000000000000 Yoon 00100000000000000000000000000000 Kwon 00100000000000000000000000000000 Kwang 00100000000000000000000000000000 Ok 00100000000000000000000000000000 Kyong 00100000000000000000000000000000 LeMans 01000000000000000000000000000000 jaunts 00000000000000000000000000000000 construction-oriented 00000000000000000000000000000000 near-unanimous 00000000000000000000000000000000 Jeep-like 00100000000000000000000000000000 Korando 00100000000000000000000000000000 blasphemous 00000000000000000000000000000000 scrappy 00000000000000000000000000000000 No.3 00100000000000000000000000000000 peppy 00000000000000000000000000000000 Festiva 00100000000000000000000000000000 5,700 00000000000000000000000000000000 econobox 00000000000000000000000000000000 lowest-priced 00000000000000000000000000000000 Loans 00100000000111101111101111100011 Lemans 00100000000000000000000000000000 auto-making 00000000000000000000000000000000 Bulseco 00100000000000000000000000000000 Robie 00100000000000000000000000000000 metaphysical 00000000000000000000000000000000 bailing 00000000000111111000100001000000 CVB 01000000000000000000000000000000 Tryon 00100000000000000000000000000000 SOFT 01000000000010100010101010110000 CONTACT 01000000000110011110110000100111 LENSES 01000000000001100101111001100011 WON 01000000001111101001010000110010 openers 00000000000000000000000000000000 cornflake-size 00000000000000000000000000000000 39,300 00000000000000000000000000000000 softies 00000000000000000000000000000000 sublicense 00000000000000000000000000000000 Wichterle 00100000000000000000000000000000 bailiff 00000000000000000000000000000000 64,000 00000000000000000000000000000000 bootlegged 00000000000000000000000000000000 unlicensed 00000000000000000000000000000000 258,000 00000000000000000000000000000000 wree 00000000000000000000000000000000 accesory 00000000000000000000000000000000 Husky 00100000000111110000011000101000 313,800 00000000000000000000000000000000 Martek 00100000000000000000000000000000 Monster 00100000000111100101010000000001 office-supplies 00000000000000000000000000000000 discounter 00000000000000000000000000000000 Krasnow 00100000000000000000000000000000 nerve-racking 00000000000000000000000000000000 Hand-holding 00100000000000000000000000000000 Officers 00100000000111101110101010110011 79-cents-a-pound 00000000000000000000000000000000 Suncor 00100000000100101001111000101000 Kline 00100000000000000000000000000000 Hadhazy 00100000000000000000000000000000 Econometric 00100000000000101011000000110000 hesitating 00000000000000000000000000000000 Behrendt 00100000000000000000000000000000 Debt-free 00100000000000000000000000000000 computer-products 00000000000000000000000000000000 816,000 00000000000000000000000000000000 Delayed 00100000010001010100010000110010 Anctil 00100000000000000000000000000000 Stratus 00100000000111001100100100101000 mutts 00000000000000000000000000000000 non-event 00000000000000000000000000000000 Bollinger 00100000000000000000000000000000 Lett 00100000000000000000000000000000 Wetzel 00100000000000000000000000000000 income-producing 00000000000000000000000000000000 36.2 00000000000000000000000000000000 41.1 00000000000000000000000000000000 117.2 00000000000000000000000000000000 6.02 00000000000000000000000000000000 6.69 00000000000000000000000000000000 26.02 00000000000000000000000000000000 Reda 00100000000000000000000000000000 Pump 00100000001010110110010110110010 Oilwell 00100000000000000000000000000000 802 00000000000000000000000000000000 791 00000000000000000000000000000000 passenger-restraint 00000000000000000000000000000000 threefold 00000000000000000000000000000000 3.22 00000000000000000000000000000000 tragicomic 00000000000000000000000000000000 monologue 00000000000000000000000000000000 unheroic 00000000000000000000000000000000 self-deceived 00000000000000000000000000000000 458.32 00000000000000000000000000000000 sixties 00000000000110011100110000000001 Britannia 00100000000000000000000000000000 Kazuo 00100000000000000000000000000000 457.52 00000000000000000000000000000000 4.58 00000000000000000000000000000000 homage 00000000000000000000000000000000 morals 00000000000110010111110010100111 snobbery 00000000000000000000000000000000 blindness 00000000000000000000000000000000 role-playing 00000000000000000000000000000000 locutions 00000000000000000000000000000000 Darlington 00100000000000000000000000000000 mulls 00000000000000000000000000000000 McClements 01000000000000000000000000000000 pious 00000000000000000000000000000000 cant 00000000000000000000000000000000 subverts 00000000000000000000000000000000 dutiful 00000000000000000000000000000000 conflation 00000000000000000000000000000000 realms 00000000000000000000000000000000 467.22 00000000000000000000000000000000 crushes 00000000000000000000000000000000 Oxfordshire 00100000000000000000000000000000 Cornwall 00100000000000000000000000000000 Ate 00100000000111011011000000010010 self-portrait 00000000000000000000000000000000 credo 00000000000000000000000000000000 immodest 00000000000000000000000000000000 adjective 00000000000000000000000000000000 calmness 00000000000000000000000000000000 Magnus 00100000000000000000000000000000 demonstrativeness 00000000000000000000000000000000 ill-mannered 00000000000000000000000000000000 banter 00000000000000000000000000000000 comically 00000000000000000000000000000000 crucially 00000000000000000000000000000000 inhabits 00000000000000000000000000000000 command-and-control 00000000000000000000000000000000 butlers 00000000000000000000000000000000 pantry 00000000000000000000000000000000 Versailles 00100000000000000000000000000000 39-cents-a-pound 00000000000000000000000000000000 72-yearold 00000000000000000000000000000000 sorrow 00000000000000000000000000000000 grotesque 00000000000000000000000000000000 repellent 00000000000000000000000000000000 fallible 00000000000000000000000000000000 reciprocity 00000000000111110011011000111001 abundantly 00000000000000000000000000000000 E.M. 01000000000000000000000000000000 aplomb 00000000000000000000000000000000 filial 00000000000000000000000000000000 Democratization 00100000000111100101110010100111 anti-Semitism 01000000000000000000000000000000 overbreadth 00000000000000000000000000000000 impatience 00000000000100101010110000100111 least-cost 00000000000000000000000000000000 problematics 00000000000000000000000000000000 embodies 00000000000000000000000000000000 hereafter 00000000000000000000000000000000 seashore 00000000000000000000000000000000 lordship 00000000000000000000000000000000 quota-trained 00000000000000000000000000000000 rueful 00000000000000000000000000000000 Minerva 00100000000000000000000000000000 virtuosity 00000000000000000000000000000000 movingly 00000000000000000000000000000000 Locke 00101111111110110001000010001000 mow 00000000000000000000000000000000 pricier 00000000000000000000000000000000 Waukesha 00100000000000000000000000000000 AGA 01000000000000000000000000000000 price-based 00000000000000000000000000000000 Stanislav 00100000000000000000000000000000 quantity-based 00000000000000000000000000000000 tastier 00000000000000000000000000000000 Bailiffs 00100000000000000000000000000000 minimized 00000000000000000000000000000000 Boeings 00100000000000000000000000000000 hounded 00000000000000000000000000000000 Least-cost 00100000000000000000000000000000 Soviet-built 00100000000000000000000000000000 Tupolev 00100000000000000000000000000000 204s 00000000000000000000000000000000 Unlikely 00100000000111100101011000110010 spunky 00000000000110110011000010010000 crew-rest 00000000000000000000000000000000 Tankers 00100000000110101110100000110011 Latvian 00100000000000000000000000000000 Ventspils 00100000000000000000000000000000 gas-guzzling 00000000000000000000000000000000 marketization 00000000000000000000000000000000 bartered 00000000000000000000000000000000 resells 00000000000000000000000000000000 Sheremetyevo 00100000000000000000000000000000 Duty-free 00100000000000000000000000000000 Pulkova 00100000000000000000000000000000 Soviet-Finnish 01000000000000000000000000000000 Tashkent 00100000000000000000000000000000 Sochi 00100000000000000000000000000000 computer-assembly 00000000000000000000000000000000 Georgian 00100000000000000000000000000000 Tbilisi 00100000000000000000000000000000 Market-based 00100000000000000000000000000000 w*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x* 00000000000000000000000000000000 York-Moscow 01000000000000000000000000000000 578 00000000000000000000000000000000 Raisa 00100000000000000000000000000000 Haughey 00101111111011010000000010001000 landfall 00000000000000000000000000000000 thirsty 00000000000000000000000000000000 Advances 00100000000111101001111000100011 hop 00000000000101101011001010110111 Moscow-Shannon 01000000000000000000000000000000 ferrying 00000000000000000000000000000000 blarney 00000000000000000000000000000000 high-standard 00000000000000000000000000000000 Equipped 00100000000111110001100000110010 beams 00000000000001001111000000010010 once-staid 00000000000000000000000000000000 manifestos 00000000000000000000000000000000 debt-for-environment 00000000000000000000000000000000 Eager 00100000000111101000011000110010 direct-steelmaking 00000000000000000000000000000000 steelmaking 00000000000000100000011010110000 continously 00000000000000000000000000000000 60.9 00000000000000000000000000000000 39.6 00000000000000000000000000000000 suffice 00000000000000010111010110110010 Darth 00100000000000000000000000000000 Vadar 00100000000000000000000000000000 Crawfordsville 00100000000000000000000000000000 40-million-ton-a-year 00000000000000000000000000000000 pollution-reduction 00000000000000000000000000000000 high-profit 00000000000000000000000000000000 harassed 00000000011100000001110000110010 management-research 00000000000000000000000000000000 Corey 00100000000000000000000000000000 Cementing 00100000000000000000000000000000 502,000 00000000000000000000000000000000 redesigning 00000000000000000000000000000000 aluminum-makers 00000000000000000000000000000000 energy-efficient 00000000000000000000000000000000 suburbia 00000000000000000000000000000000 steel-hungry 00000000000000000000000000000000 offsets 00000000000000000000000000000000 differentiate 00000000001101101111001110110010 higher-profit 00000000000000000000000000000000 capital-improvement 00000000000000000000000000000000 electrogalvanizing 00000000000000000000000000000000 QE 01000000000000000000000000000000 lifeboat 00000000000000000000000000000000 Rim 00100000000011000111110110101000 Nucor-like 00100000000000000000000000000000 Projected 00100000000000000101001001000000 reforestation 00000000000000000000000000000000 Disputada 00100000000000000000000000000000 slog 00000000000000000000000000000000 panning 00000000000000000000000000000000 Ellman 00100000000000000000000000000000 75-day 00000000000000000000000000000000 Calvert 00100000000000000000000000000000 plotted 00000000000100011000110000110010 Labe 00100000000000000000000000000000 distributorship 00000000000000000000000000000000 bullied 00000000000000000000000000000000 Kayton 00100000000000000000000000000000 lost-profits 00000000000000000000000000000000 acidified 00000000011111100101101001000000 Testimony 00100000000111101101101000100011 877 00000000000000000000000000000000 15-cents-a-share 00000000000000000000000000000000 14.31 00000000000000000000000000000000 computes 00000000000000000000000000000000 Djurdjevic 00100000000000000000000000000000 Annex 00100000000000000000000000000000 Bardagy 00100000000000000000000000000000 Comdisco 00100000000000000000000000000000 doubtless 00000000000000000000000000000000 3.17 00000000000000000000000000000000 39.68 00000000000000000000000000000000 unifier 00000000000000000000000000000000 muscled 00000000000000000000000000000000 Darrell 00100000000000000000000000000000 57.125 00000000000000000000000000000000 bottler 00000000000110110011100000100001 soils 00000000000000000000000000000000 Snack-food 00100000000000000000000000000000 Same-store 00100000000000000000000000000000 price-value 00000000000000000000000000000000 tacos 00000000000000000000000000000000 store-sales 00000000000000000000000000000000 Four-fifths 00100000000000000000000000000000 grilled-chicken 00000000000000000000000000000000 extorted 00000000000000000000000000000000 technical-services 00000000000000000000000000000000 businesswoman 00000000000000000000000000000000 B.B. 01000000000000000000000000000000 80-page 00000000000000000000000000000000 provincially 00000000000000000000000000000000 nitrogen 00000000000110001100111111001001 lowest-cost 00000000000000000000000000000000 freshness 00000000000111011001110010100111 Norms 00100000000101010011011100100011 Fosset 00100000000000000000000000000000 woodchucks 00000000000000000000000000000000 lewdness 00000000000000000000000000000000 watchman 00000000000000000000000000000000 OCC 01000000000000000000000000000000 Sabina 00100000000000000000000000000000 Bochniarz 00100000000000000000000000000000 purrs 00000000000000000000000000000000 bustle 00000000000000000000000000000000 decadent 00000000000000000000000000000000 infiltrating 00000000000000000000000000000000 sneak 00000000100010010110010110110010 therapists 00000000000000000000000000000000 upper-level 00000000000000000000000000000000 rubfests 00000000000000000000000000000000 Zbigniew 00100000000000000000000000000000 rubdowns 00000000000000000000000000000000 dimly 00000000000011000111001001110010 stressed-out 00000000000000000000000000000000 clothed 00000000000000000000000000000000 J.F. 01000000000000000000000000000000 O'Reilly 01000000000000000000000000000000 swears 00000000000000000000000000000000 balm 00000000000000000000000000000000 532 00000000000000000000000000000000 kneading 00000000000000000000000000000000 lightheaded 00000000000000000000000000000000 Minnie 00100000000000000000000000000000 Morey 00100000000000000000000000000000 degradation 00000000001001100110011010100111 degraded 00000000000000000000000000000000 plies 00000000000000000000000000000000 grumbled 00000000000000000000000000000000 Mechanisms 00100000000111111110011100100011 Czechs 00100000000000000000000000000000 bodyworkers 00000000000000000000000000000000 reinvigoration 00000000000000000000000000000000 chaste 00000000000000000000000000000000 Harms 00100000000000000000000000000000 Hungarians 00100000000000000110000110110011 Ecological 00100000000101011000000000110000 unbeknownst 00000000000000000000000000000000 escorts 00000000000111100101100110001001 coaxing 00000000000000000000000000000000 Silesia 00100000000000000000000000000000 hippie 00000000000000000000000000000000 democratize 00000000000000000000000000000000 touch-starved 00000000000000000000000000000000 straddling 00000000000000000000000000000000 recliner 00000000000000000000000000000000 padding 00000000000000000000000000000000 odd-looking 00000000000000000000000000000000 contraption 00000000000000000000000000000000 Inquisition 00100000000000000000000000000000 On-Site 01000000000000000000000000000000 30.9 00000000000000000000000000000000 massaging 00000000000000000000000000000000 natural-foods 00000000000000000000000000000000 Paramedics 00100000000000000000000000000000 injustices 00000000000000000000000000000000 Aldridge 00100000000000000000000000000000 Whole 00100000000000000001100011010000 swearing-in 00000000000000000000000000000000 post-June 01000000000000000000000000000000 property-sector 00000000000000000000000000000000 32-story 00000000000000000000000000000000 Shui 00100000000000000000000000000000 guarantor 00000000000000000000000000000000 matured 00000000000000000000000000000000 loan-management 00000000000000000000000000000000 Creditors 00100000000111111111010000110011 domineering 00000000000000000000000000000000 13.63 00000000000000000000000000000000 scowls 00000000000000000000000000000000 192 00000000000000000000000000000000 4.40 00000000000000000000000000000000 165.1 00000000000000000000000000000000 Six-year-old 00100000000000000000000000000000 Margo 00101111111001000101100010011000 161.3 00000000000000000000000000000000 Hood 00100000010111101110000000001000 hypermarkets 00000000000000000000000000000000 warehouse-type 00000000000000000000000000000000 Waldenbooks 00100000000000000000000000000000 Mountains 00100000000111111101110101100011 4.54 00000000000000000000000000000000 Stations 00100000000111101011110100001001 Chaseman 00100000000000000000000000000000 electronic-data 00000000000000000000000000000000 WayMar 01000000000000000000000000000000 Quotrons 00100000000000000000000000000000 foul-up 00000000000000000000000000000000 annoying 00000000000000000000000000000000 11:08 00000000000000000000000000000000 324.75 00000000000000000000000000000000 224.75 00000000000000000000000000000000 blooper 00000000000000000000000000000000 blunders 00000000000000000000000000000000 newswire 00000000000000000000000000000000 layoff 00000000000111110101001101001111 Literally 00100001001001000000001001110010 Machelle 00100000000000000000000000000000 cuff 00000000000000000000000000000000 foothills 00000000000000000000000000000000 walloping 00000000000000000000000000000000 unawares 00000000000000000000000000000000 punchers 00000000000000000000000000000000 pummeling 00000000000000000000000000000000 swat 00000000000000100100101100100001 disabling 00000000000000000000000000000000 Guys 00100000000111101110000100110011 minting 00000000000000000000000000000000 Legittino 00100000000000000000000000000000 fractions 00000000000000000000000000000000 323.85 00000000000000000000000000000000 170.6 00000000000000000000000000000000 15.65 00000000000000000000000000000000 17.7 00000000000000000000000000000000 bragging 00000000000000000000000000000000 railbikes 00000000000000000000000000000000 Duracell 00100000000000000000000000000000 appliance-controls 00000000000000000000000000000000 commercial-switch 00000000000000000000000000000000 stratified 00000000000000000000000000000000 untradeable 00000000000000000000000000000000 Gypsum 00100000000110111010010010110000 M.D.C. 01000000000000000000000000000000 Micropolis 00100000000000000000000000000000 tonic 00000000000000000000000000000000 grenades 00000000000000000000000000000000 Whipsawed 00100000000000000000000000000000 heartstopping 00000000000000000000000000000000 376 00000000000000000000000000000000 473.29 00000000000000000000000000000000 electronic-publishing 00000000000000000000000000000000 16.56 00000000000000000000000000000000 truck-fleet 00000000000000000000000000000000 caveats 00000000000000000000000000000000 nest-egg 00000000000000000000000000000000 Mar 00100000000000000000000000000000 Wedbush 00100000000000000000000000000000 out-trade 00000000000000000000000000000000 out-smart 00000000000000000000000000000000 dollar-cost 00000000000000000000000000000000 Actual 00100000000000000100000100010000 Gehl 00100000000000000000000000000000 1,450,635 00000000000000000000000000000000 549,365 00000000000000000000000000000000 3,111,000 00000000000000000000000000000000 2,425,000 00000000000000000000000000000000 Inefficient-Market 01000000000000000000000000000000 nosediving 00000000000000000000000000000000 befitting 00000000000000000000000000000000 Waltana 00100000000000000000000000000000 107.50 00000000000000000000000000000000 big-league 00000000000000000000000000000000 axles 00000000000000000000000000000000 friendlier 00000000000000000000000000000000 78.50 00000000000000000000000000000000 75.625 00000000000000000000000000000000 87.375 00000000000000000000000000000000 Neidl 00100000000000000000000000000000 Mattis 00100000000000000000000000000000 gracious 00000000000000000000000000000000 275-a-share 00000000000000000000000000000000 F.C 01000000000000000000000000000000 adversarial 00000000001011011000110100010000 Lustgarten 00100000000000000000000000000000 little-feared 00000000000000000000000000000000 truck-parts 00000000000000000000000000000000 417 00000000000000000000000000000000 trusting 00000000000000000000000000000000 840.4 00000000000000000000000000000000 another... 00000000000000000000000000000000 8-to-5 00000000000000000000000000000000 864.1 00000000000000000000000000000000 robe 00000000000000000000000000000000 co-defendants 00000000000000000000000000000000 Franklyn 00100000000000000000000000000000 INTER-TEL 01000000000000000000000000000000 parole 00000000000111000101011000111001 halfway 00000000000111000101100001000000 outburst 00000000000000000000000000000000 fulfillment 00000000000000000000000000000000 pre-sentencing 00000000000000000000000000000000 TEAMSTERS 01000000000000001101110100110000 ELECTIONS 01000000000111101001010001100111 Lacey 00100000000000000000000000000000 Multiples 00100000000111111101011001101111 JUDGE'S 01000000000000000000000000000000 COMMENTS 01000000000111111111101000100011 Rolfe 00100000000000000000000000000000 misquoting 00000000000000000000000000000000 Bartholow 00100000000000000000000000000000 judicial-conduct 00000000000000000000000000000000 sidestepping 00000000000000000000000000000000 bench... 00000000000000000000000000000000 JUDICIARY 01000000000111111101010101010001 COMMITTEE 01000000000000000000100001010101 specialty-chemical 00000000000000000000000000000000 death-row 00000000000000000000000000000000 post-conviction 00000000000000000000000000000000 habeas 00000000000000000000000000000000 state-provided 00000000000000000000000000000000 Legion 00100000000000000000000000000000 backlots 00000000000000000000000000000000 789.87 00000000000000000000000000000000 526.79 00000000000000000000000000000000 Wholesalers 00100000000111001100010000110011 Molly 00100000000000101001111000011000 100.5 00000000000000000000000000000000 art-auction 00000000000000000000000000000000 Feigen 00100000000000000000000000000000 Lorinda 00100000000000000000000000000000 Roulet 00100000000000000000000000000000 consigned 00000000000000000000000000000000 biggie 00000000000000000000000000000000 1.98 00000000000000000000000000000000 high-sulfur 00000000000000000000000000000000 one-size-fits-all 00000000000000000000000000000000 1905 00000000000000000000000000000000 Period 00100000000111101111101001000111 47.85 00000000000000000000000000000000 Self 00100000000000111110101100100001 Yo 00100000000000000000000000000000 impressionists 00000000000000000000000000000000 juicy 00000000000000000000000000000000 Rue 00100000000000000000000000000000 Mosnier 00100000000000000000000000000000 Decorated 00100000011110110110010000110010 1878 00000000000000000000000000000000 Manet 00100000000000000000000000000000 Goldschmidt 00100000000000000000000000000000 316,400 00000000000000000000000000000000 Trunk 00100000000110110110111000000001 modular 00000000000000000000000000000000 Arles 00100000000000000000000000000000 one-owner 00000000000000000000000000000000 d'Harnoncourt 01000000000000000000000000000000 roses 00000000011111001011110101100011 Donations 00100000000111100110111100000011 Able 00100000000011010000011000110010 patrimony 00000000000000000000000000000000 Burge 00100000000000000000000000000000 out-of-town 00000000000000000000000000000000 tryouts 00000000000000000000000000000000 whistle-stop 00000000000000000000000000000000 executors 00000000000000000000000000000000 warmup 00000000000000000000000000000000 paddles 00000000000000000000000000000000 Designer 00100000000000011000100100100001 19%-owned 00000000000000000000000000000000 Big-bucks 00100000000000000000000000000000 acetate 00000000000000000000000000000000 Desmond 00100000000000000000000000000000 Lefevre 00100000000000000000000000000000 Zey 00100000000000000000000000000000 crazee 00000000000000000000000000000000 shrieked 00000000000000000000000000000000 beanstalk 00000000000000000000000000000000 Baskets 00100000000111001011100100101111 precedes 00000000000000000000000000000000 censured 00000011111001010100010000110010 notifies 00000000000000000000000000000000 swearing 00000000000000000000000000000000 1850s 00000000000000000000000000000000 Pennell 00100000000000000000000000000000 Bourke-White 01000000000000000000000000000000 Thiebaud 00100000000000000000000000000000 11150 00000000000000000000000000000000 1970-85 00000000000000000000000000000000 sculptors 00000000000000000000000000000000 crisp 00000000000000000000000000000000 Aycock 00100000000000000000000000000000 20Dec 01000000000000000000000000000000 Barbier-Mueller 01000000000000000000000000000000 Collection 00100000000111111110000101100111 Caroline 00100000000000000000000000000000 culled 00000000000000000000000000000000 bestiary 00000000000000000000000000000000 raiment 00000000000000000000000000000000 Ghanaian 00100000000000000000000000000000 82nd 00000000000000000000000000000000 Ave 00100000000000000000000000000000 Cavin-Morris 01000000000000000000000000000000 Maanen 00100000000000000000000000000000 marble-columned 00000000000000000000000000000000 self-taught 00000000000000000000000000000000 Helmet 00100000000000000000000000000000 Shaped 00100000001001001100010000110010 Skulls 00100000000000000000000000000000 19-Nov 01000000000000000000000000000000 14-ship 00000000000000000000000000000000 dignitaries 00000000000000000000000000000000 six-week 00000000000000000000000000000000 premieres 00000000000000000000000000000000 Noces 00100000000000000000000000000000 Bronislava 00100000000000000000000000000000 Nijinska 00100000000000000000000000000000 Pantages 00100000000000000000000000000000 Present 00100000000010000101110110110010 TWO-A-DAY 01000000000000000000000000000000 2,050 00000000000000000000000000000000 socialistic 00000000000000000000000000000000 Heiwado 00100000000000000000000000000000 rock-scored 00000000000000000000000000000000 Sixties 00100000000110011100110000000001 494.4 00000000000000000000000000000000 24-Dec 01000000000000000000000000000000 581-7907 00000000000000000000000000000000 Mussorgsky 00100000000000000000000000000000 Godunov 00100000000000000000000000000000 Treasures 00100000000000000000000000000000 Morozov 00100000000000000000000000000000 Kirov 00100000000000000000000000000000 mezzo 00000000000000000000000000000000 Irina 00100000000000000000000000000000 Bogacheva 00100000000000000000000000000000 princess 00000000000111110010101100100001 3rdand 00000000000000000000000000000000 236-6510 00000000000000000000000000000000 canto 00000000000000000000000000000000 Gimenez 00100000000000000000000000000000 555.6 00000000000000000000000000000000 Stevie 00100000000000000000000000000000 10,873 00000000000000000000000000000000 crowning 00000000000000000000000000000000 inadvertence 00000000000000000000000000000000 UIC 01000000000000000000000000000000 Pavillion 00100000000000000000000000000000 Cobo 00100000000000000000000000000000 bin 00000000000000000000000000000000 Palumbo 00100000000000000000000000000000 Landover 00100000000111100001101001101000 Centrum 00100000000000000000000000000000 Boutwell 00100000000000000000000000000000 Sundome 00100000000000000000000000000000 Tingley 00100000000000000000000000000000 McNichols 01000000000000000000000000000000 nabbing 00000000000000000000000000000000 Erma 00100000000000000000000000000000 Bombeck 00100000000000000000000000000000 DTH 01000000000000000000000000000000 Herald-Post 01000000000000000000000000000000 Gazette 00100000000000000000000000000000 Hussman 00100000000000000000000000000000 Syndicates 00100000000000111010000100100011 Calling 00100000000111101111110101000000 222,000 00000000000000000000000000000000 370,000 00000000000000000000000000000000 clerk-turned 00000000000000000000000000000000 90,552 00000000000000000000000000000000 Features 00100000001111000111000000010010 cartoonists 00000000000000000000000000000000 13-12 00000000000000000000000000000000 Universal-Morning 01000000000000000000000000000000 Creators 00100000000111100101111101100011 Schwartzman 00100000000000000000000000000000 negotiates 00000010000110000011000000010010 Insurance-industry 00100000000000000000000000000000 preclinical 00000000000000000000000000000000 insurance-reform 00000000000000000000000000000000 Style 00100000000111001101001001100111 dishonest 00000000000000000000000000000000 Prop 00100000000110110110010110110010 historical-claims 00000000000000000000000000000000 auto-insurance 00000000000000000000000000000000 territorial 00000000000100110000000000110000 Insurance-reform 00100000000000000000000000000000 Rosenfield 00100000000000000000000000000000 Revolt 00100000000111110001101010100111 100-acre 00000000000000000000000000000000 296,187 00000000000000000000000000000000 1,402,000 00000000000000000000000000000000 626 00000000000000000000000000000000 31.375 00000000000000000000000000000000 retooling 00000000000000000000000000000000 incentive-buoyed 00000000000000000000000000000000 per-store 00000000000000000000000000000000 4.59 00000000000000000000000000000000 hiccup 00000000000000000000000000000000 now-shuttered 00000000000000000000000000000000 51,000 00000000000000000000000000000000 BRIDGEPORT 01000000000101100111101001101000 gore 00001111111100010100101010001000 bi-monthly 00000000000000000000000000000000 epicurean 00000000000000000000000000000000 370.8 00000000000000000000000000000000 Pennington 00100000000000000000000000000000 Armageddon 00100000000101100001110010100111 manic 00000000011000011010000000110000 Shivers 00100000000000000000000000000000 pershare 00000000000000000000000000000000 innovated 00000000000000000000000000000000 191.3 00000000000000000000000000000000 217.9 00000000000000000000000000000000 Ignoring 00100000000111101111011101000000 Affordable 00100000000111001101001110010000 Cranston-D'Amato 01000000000000000000000000000000 erases 00000000000000000000000000000000 foldability 00000000000000000000000000000000 locomotive 00000000000111001100100000100001 loan-to-value 00000000000000000000000000000000 23,625 00000000000000000000000000000000 partake 00000000000000000000000000000000 Intecknings 00100000000000000000000000000000 Igaras 00100000000000000000000000000000 Desarrollo 00100000000000000000000000000000 impostor 00000000000000000000000000000000 charlatan 00000000000000000000000000000000 Vt 00100000000000000000000000000000 riddle 00000000000101000100000000001000 Jurgen 00100000000000000000000000000000 Brauer 00100000000000000000000000000000 Faculty 00100000000001000001000010000001 Chesapeake 00100000000111001010011010101000 1.8665 00000000000000000000000000000000 wall-paneling 00000000000000000000000000000000 1.87-mark 00000000000000000000000000000000 1.8305 00000000000000000000000000000000 Federal-Mogul 01000000000000000000000000000000 140.73 00000000000000000000000000000000 1.8480 00000000000000000000000000000000 1.8735 00000000000000000000000000000000 23.50 00000000000000000000000000000000 pfennig 00000000000000000000000000000000 1.8560 00000000000000000000000000000000 Croonen 00100000000000000000000000000000 DG 01000000000000000000000000000000 Heiko 00100000000000000000000000000000 tramping 00000000000000000000000000000000 565,000 00000000000000000000000000000000 366.27 00000000000000000000000000000000 Mogul 00100000000100000111110000110101 246.9 00000000000000000000000000000000 bankrolling 00000000000000000000000000000000 Marckesano 00100000000000000000000000000000 absolve 00000000000000000000000000000000 16.97 00000000000000000000000000000000 gagged 00000000000000000000000000000000 cabinet-level 00000000000000000000000000000000 ruminations 00000000000000000000000000000000 non-airline 00000000000000000000000000000000 303.7 00000000000000000000000000000000 foreign-ownership 00000000000000000000000000000000 263.2 00000000000000000000000000000000 midsized-car 00000000000000000000000000000000 APV 01000000000000000000000000000000 minivan 00000000000000110100001000100001 factory-modernization 00000000000000000000000000000000 car-market 00000000000000000000000000000000 GM-10 01000000000000000000000000000000 92-day 00000000000000000000000000000000 752.9 00000000000000000000000000000000 60-to-65-day 00000000000000000000000000000000 Minero 00100000000000000000000000000000 51.5 00000000000000000000000000000000 36.8 00000000000000000000000000000000 510.1 00000000000000000000000000000000 462.9 00000000000000000000000000000000 Merlo 00100000000000000000000000000000 curtailment 00000000000000000000000000000000 Ketchikan 00100000000000000000000000000000 838 00000000000000000000000000000000 104.1 00000000000000000000000000000000 len 00000000000000000000000000000000 135.3 00000000000000000000000000000000 33.8 00000000000000000000000000000000 471.1 00000000000000000000000000000000 weather-related 00000000000000000000000000000000 groused 00000000000000000000000000000000 Garanti 00100000000000000000000000000000 242.8 00000000000000000000000000000000 134.9 00000000000000000000000000000000 558.50 00000000000000000000000000000000 62.6 00000000000000000000000000000000 102,000 00000000000000000000000000000000 Aktiebolaget 00100000000000000000000000000000 dynamically 00000000000000000000000000000000 Finnerty 00100000000000000000000000000000 shades 00000000000111111011000100101111 456.08 00000000000000000000000000000000 Handelsbanken 00100000000000000000000000000000 tagline 00000000000000000000000000000000 artsy 00000000000000000000000000000000 Lermer 00100000000000000000000000000000 airline-interior 00000000000000000000000000000000 despondency 00000000000000000000000000000000 Takashima 00101111001000010100000010001000 accounting-rules 00000000000000000000000000000000 Resnick 00100000000000000000000000000000 posh 00000000001000111000001000110000 self-control 00000000000000000000000000000000 modesty 00000000000000000000000000000000 foreground 00000000000000000000000000000000 3.42 00000000000000000000000000000000 Vadim 00100000000000000000000000000000 Medvedev 00100000000000000000000000000000 hand-tooled 00000000000000000000000000000000 Laptev 00100000000000000000000000000000 Damon 00100000000111111000101100101000 Darlin 00100000000000000000000000000000 assignments 00000000000010000011110100100011 outback 00000000000000000000000000000000 Tee 00100000000000000000000000000000 Hee 00101111111101011000000000001000 Non-`` 00100000000000000000000000000000 Arcata 00100000000000000000000000000000 destitute 00000000000011101011110110010000 rejoice 00000000000000000000000000000000 toiled 00000000000000000000000000000000 bullock 00001111111110001110000010001000 manufacturing-sector 00000000000000000000000000000000 harvests 00000000000011001110010100000111 Overturf 00100000000000000000000000000000 Oceanside 00100000000000000000000000000000 Sunburst 00100000000000000000000000000000 R.E. 01000000000000000000000000000000 Kennington 00100000000000000000000000000000 Paster 00100000000000000000000000000000 Shuttle 00100000000000010001100011010000 Rocketdyne 00100000000000000000000000000000 Marvis 00100000000000000000000000000000 management-union 00000000000000000000000000000000 yeterday 00000000000000000000000000000000 Arbs 00100000000111111111100110110011 Gainers 00100000000101101110101001110011 94.50 00000000000000000000000000000000 63.375 00000000000000000000000000000000 extracts 00000000000000000000000000000000 ox 00000000000000000000000000000000 Executed 00100000100100001100010000110010 lockhold 00000000000000000000000000000000 pesticide-reform 00000000000000000000000000000000 two-year-long 00000000000000000000000000000000 hightops 00000000000000000000000000000000 yell 00000000000000000000000000000000 wolf 00001111111000111011000010001000 Maddox 00100000000000000000000000000000 malleable 00000000000000000000000000000000 Dilenschneider 00100000000000000000000000000000 skillfully 00000000000000000000000000000000 Walsifer 00100000000000000000000000000000 Colts 00100000000000000000000000000000 Influential 00100000000010000000110100010000 RTC-owned 01000000000000000000000000000000 self-help 00000000000000000000000000000000 Cooke 00101111111111111001110001001000 Lynchburg 00100000000000000000000000000000 porches 00000000000000000000000000000000 working-capital 00000000000000000000000000000000 Schumer 00101111111111101011111010001000 remiss 00000000000000000000000000000000 800-number 00000000000000000000000000000000 800-line 00000000000000000000000000000000 Truckee 00100000000000000000000000000000 Taped 00100000000000100101101001000000 lifeline 00000000000000000000000000000000 Roses 00100000011111001011110101100011 revisited 00000000000000000000000000000000 Whiskey 00100000000101110011111010110000 easy-to-film 00000000000000000000000000000000 Nikka 00100000000000000000000000000000 Example 00100000000111111111111111101000 straightening 00000000000000000000000000000000 Cathleen 00100000000000000000000000000000 ARNOLD 01001111111000000000110100001000 allying 00000000000000000000000000000000 Verret 00100000000000000000000000000000 EDUCATION 01000000000111101111101101100001 142-page 00000000000000000000000000000000 I.W. 01000000000000000000000000000000 1,118 00000000000000000000000000000000 publishable 00000000000000000000000000000000 issues... 00000000000000000000000000000000 home-team 00000000000000000000000000000000 bourbons 00000000000000000000000000000000 timberland 00000000000110101011100000100001 Reuschel 00100000000000000000000000000000 left-field 00000000000000000000000000000000 Kishimoto 00100000000000000000000000000000 salted 00000000000000000000000000000000 salve 00000000000000000000000000000000 red-haired 00000000000000000000000000000000 1-for-17 00000000000000000000000000000000 A-men 00100000000000000000000000000000 Nos. 00100000000000000000000000000000 six-shooter 00000000000000000000000000000000 Right-hander 00100000000000000000000000000000 ledger 00000000000000000000000000000000 winningest 00000000000000000000000000000000 21-9 00000000000000000000000000000000 split-fingered 00000000000000000000000000000000 split-finger 00000000000000000000000000000000 ex-hurler 00000000000000000000000000000000 dives 00000000000111101111011110000011 lunging 00000000000000000000000000000000 downshoot 00000000000000000000000000000000 stat 00000000000000000000000000000000 rooters 00000000000000000000000000000000 Subway 00100000000010001000001010110000 conveyance 00000000000000000000000000000000 Desire 00100000000111111001111100100111 Partisans 00100000000000000000000000000000 combatants 00000000000000000000000000000000 49,000-plus 00000000000000000000000000000000 booed 00000000000000000000000000000000 emblems 00000000000000000000000000000000 27,500 00000000000000000000000000000000 septuagenarian 00000000000000000000000000000000 apathy 00000000000000000000000000000000 uniquely 00000000000100101000000001110010 springs 00000000000000101000100010100101 Yankees-Mets 01000000000000000000000000000000 hey 00000000000111111100111011101000 uniformed 00000000000101101001011000110000 suicidal 00000000000000000000000000000000 bifurcate 00000000000000000000000000000000 bonnets 00000000000000000000000000000000 twiggy-looking 00000000000000000000000000000000 second-year 00000000000000000000000000000000 afield 00000000000000000000000000000000 ditto 00000000000000000000000000000000 three-run 00000000000000000000000000000000 homered 00000000000000000000000000000000 Bashers 00100000000000000000000000000000 power-hitter 00000000000000000000000000000000 co-hero 00000000000000000000000000000000 hot-cold 00000000000000000000000000000000 smoked 00000000001111000100010000110010 3-for-3 00000000000000000000000000000000 inroads 00000000000000000001010100100111 groove 00000000000000000000000000000000 3-4-5 00000000000000000000000000000000 5-for-24 00000000000000000000000000000000 ribbies 00000000000000000000000000000000 Dusty 00100000010110010000001000110000 slugger 00000000000000000000000000000000 93.1 00000000000000000000000000000000 75.8 00000000000000000000000000000000 antebellum 00000000000000000000000000000000 registers 00000000000000000000000000000000 Sanjiv 00100000000000000000000000000000 Liqueur 00100000000000000000000000000000 149.6 00000000000000000000000000000000 439.3 00000000000000000000000000000000 264.6 00000000000000000000000000000000 289.7 00000000000000000000000000000000 Fibreboard 00100000000000000000000000000000 4.19 00000000000000000000000000000000 tuning 00000000000101000111000001000000 814,000 00000000000000000000000000000000 account-churning 00000000000000000000000000000000 novelty 00000000000111110010110000000001 522.3 00000000000000000000000000000000 woken 00000000000000000000000000000000 499.4 00000000000000000000000000000000 finessed 00000000000000000000000000000000 grafted 00000000000000000000000000000000 Street-inspired 00100000000000000000000000000000 less-than-alarming 00000000000000000000000000000000 Finsbury 00100000000000000000000000000000 2076.8 00000000000000000000000000000000 157.1 00000000000000000000000000000000 good-humored 00000000000000000000000000000000 d'Amiante 01000000000000000000000000000000 DRG 01000000000000000000000000000000 pasted 00000000000000000000000000000000 Seconds 00100000000000000000011100011011 7,500-share 00000000000000000000000000000000 Koizumi 00100000000000000000000000000000 forlorn 00000000000000000000000000000000 141.1 00000000000000000000000000000000 heaters 00000000000000000000000000000000 13.27 00000000000000000000000000000000 Fundamentally 00100000001010000000000001110010 dangerous... 00000000000000000000000000000000 .fundamentally 00000000000000000000000000000000 weak... 00000000000000000000000000000000 still... 00000000000000000000000000000000 poised... 00000000000000000000000000000000 Smirnoff 00100000000000000000000000000000 2029.7 00000000000000000000000000000000 Heublein 00100011111100110100110000001000 UNIFIRST 01000000000000000000000000000000 Rapatee 00100000000000000000000000000000 Nitze 00100000000000000000000000000000 Notable 00100000000000100100000010010000 Quotable 00100000000000000000000000000000 Bellas 00100000000000000000000000000000 Tremdine 00100000000000000000000000000000 Distilled 00100000000000000000000000000000 deflate 00000000000000000000000000000000 airline-acquisition 00000000000000000000000000000000 13.39 00000000000000000000000000000000 manning 00001111111100100000111000001000 11,700 00000000000000000000000000000000 right-to-work 00000000000000000000000000000000 Renton 00100000000000000000000000000000 59.8 00000000000000000000000000000000 FRANKFURT 01000000000111001100011001101000 157.2 00000000000000000000000000000000 management-employee 00000000000000000000000000000000 Insam 00100000000000000000000000000000 Liechtenstein 00100000000100000111111001101000 firewater 00000000000000000000000000000000 1657.61 00000000000000000000000000000000 bluest 00000000000000000000000000000000 642.2 00000000000000000000000000000000 recovers 00000000000000000000000000000000 Attracted 00100000000001110111010000110010 PARIS 01000000000111111101111001101000 CAC 01000000000000000000000000000000 523.6 00000000000000000000000000000000 Vigier 00100000000000000000000000000000 Dupont 00100000000110101000000000001000 mid-conversation 00000000000000000000000000000000 9.92 00000000000000000000000000000000 233.6 00000000000000000000000000000000 non-accruing 00000000000000000000000000000000 trading-related 00000000000000000000000000000000 474.1 00000000000000000000000000000000 232.8 00000000000000000000000000000000 Nonperformers 00100000000000000000000000000000 230.8 00000000000000000000000000000000 remnants 00000000000000000000000000000000 RepublicBank 01000000000111101001100001101000 76.9 00000000000000000000000000000000 169.4 00000000000000000000000000000000 310.9 00000000000000000000000000000000 185.1 00000000000000000000000000000000 167.9 00000000000000000000000000000000 low-yielding 00000000000000000000000000000000 inter-bank 00000000000000000000000000000000 548.9 00000000000000000000000000000000 469.4 00000000000000000000000000000000 4.13 00000000000000000000000000000000 warranted 00000000010010010010110000110010 104.75 00000000000000000000000000000000 18.875 00000000000000000000000000000000 Feniger 00100000000000000000000000000000 U.S.-Canadian 01000000000000000000000000000000 herring 00000000000000000000000000000000 Sangyo 00100000000000000000000000000000 Crosbie 00100000000000000000000000000000 contradiction 00000000000110100101111101100111 fish-export 00000000000000000000000000000000 Idle 00100000001100100101110110110010 Character 00100000000111111111110000000001 Richstone 00100000000000000000000000000000 Telecussed 00100000000000000000000000000000 intercept 00000000000000000000000000000000 'Cause 01000000000000000000000000000000 Emmons 00100000000000000000000000000000 marrow 00000000000111010010100110001001 open-bank 00000000000000000000000000000000 tax-advantaged 00000000000000000000000000000000 paves 00001110010110000011000000010010 trillion-plus 00000000000000000000000000000000 Disposti 00100000000000000000000000000000 314.6 00000000000000000000000000000000 296.6 00000000000000000000000000000000 underwritings 00000000000111100111001011100011 462.8 00000000000000000000000000000000 Asset-management 00100000000000000000000000000000 580.4 00000000000000000000000000000000 478.9 00000000000000000000000000000000 Omega 00100000000000000000000000000000 444.9 00000000000000000000000000000000 450.7 00000000000000000000000000000000 Schweiz 00100000000000000000000000000000 Selig 00100000000000000000000000000000 76-story 00000000000000000000000000000000 goosey 00000000000000000000000000000000 fiddling 00000000000000000000000000000000 pre-set 00000000000000000000000000000000 Computations 00100000000000000000000000000000 Synchronized 00100000000000000000000000000000 difference... 00000000000000000000000000000000 synchronize 00000000000000000000000000000000 urgings 00000000000101110011101000100011 Freund 00100000000000000000000000000000 UNIFIED 01000000000011000001000010010000 EUROPE 01000000000111111111011101101000 relocations 00000000000000000000000000000000 CLUBBING 01000000000000000000000000000000 FAN 01000000000111101000010100000001 Sewing 00100000000000010101010000110000 heckled 00000000000000000000000000000000 Martinsville 00100000000000000000000000000000 Phillies 00100000000000000000000000000000 9-8 00000000000000000000000000000000 accreted 00000000000000000000000000000000 taunting 00000000000000000000000000000000 jaw 00000000000000000000000000000000 negligent 00000000000111111100000110010000 PROPOSALS 01000000000111101110101000100011 ARISE 01000000000111001101010110110010 technologist 00000000000000000000000000000000 bedside 00000000000000000000000000000000 618 00000000000000000000000000000000 Hewitt 00100000011000010010110000001000 advancement 00000000000111100101111000001111 MRA 01000000000000000000000000000000 Staffing 00100000000000001101100011100001 TREATING 01000000000101000001111101000000 EMPLOYEES 01000000000000000010000000110011 Hay 00100000000000001110000000001000 SPRUCING 01000000000000000000000000000000 DIGS 01000000011101001111000000010010 carpeted 00000000000000000000000000000000 blinds 00000000000000000000000000000000 CURBING 01000000000000111111011101000000 WAGE 01000000000000000000000101110001 BOOSTS 01000000000000000000000010000011 labor-shortage 00000000000000000000000000000000 TEMPORARY 01000000001000000001000000010000 educations 00000000000000000000000000000000 Temporary 00100000001000000001000000010000 2,508 00000000000000000000000000000000 HOME-SALE 01000000000000000000000000000000 LOSSES 01000000000111101111100000000011 439 00000000000000000000000000000000 sales-loss 00000000000000000000000000000000 depreciated 00000000000000000000000000000000 prepurchase 00000000000000000000000000000000 reactionary 00000000000000000000000000000000 Sombrotto 00100000000000000000000000000000 century... 00000000000000000000000000000000 88-points 00000000000000000000000000000000 416.3 00000000000000000000000000000000 rationality 00000000000000000000000000000000 Chains 00100000000111100001000001110101 Ruffled 00100000001011100101101001000000 FAST-FOOD 01000000000000000000000000000000 hatch 00000000000101101100111010001000 grocery-store 00000000000000000000000000000000 home-delivered 00000000000000000000000000000000 takeout 00000000000000000000000000000000 NPD 01000000000000000000000000000000 Popeye 00100000000000000000000000000000 McChicken 01000000000000000000000000000000 char-grilled 00000000000000000000000000000000 home-delivery 00000000000000000000000000000000 stay-at-home 00000000000000000000000000000000 Soft-Sell 01000000000000000000000000000000 Spots 00100000000111101101110101100011 un-advertising 00000000000000000000000000000000 Traveler 00100000000011000110010010110101 un-advertisers 00000000000000000000000000000000 market... 00000000000000000000000000000000 Rittlemann 00100000000000000000000000000000 Floodlights 00100000000000000000000000000000 Pretty 00100000000000001100000001110010 Structures 00100000000111000000110100100011 fundraisers 00000000000000000000000000000000 Retailer 00100000000111100100100001110101 Sees 00100001000111100011000000010010 Pitfalls 00100000000111110100011000100011 noncorrosive 00000000000000000000000000000000 nonchlorinated 00000000000000000000000000000000 major-league 00000000000000000000000000000000 Beairsto 00100000000000000000000000000000 TIGRs 01000000000000000000000000000000 philosophically 00000000000000000000000000000000 NEATNESS 01000000000000000000000000000000 Scanner 00100000000000000000000000000000 endorsers 00000000000000000000000000000000 believable 00000000000000000000000000000000 Garner 00100000000111110000100110110111 persuasiveness 00000000000000000000000000000000 Storyboard 00100000000010010101100100001001 reinvent 00000000000000000000000000000000 Antonia 00100000000000000000000000000000 Koop 00100000000000000111111010001000 burlap 00000000000000000000000000000000 disease-resistant 00000000000000000000000000000000 multifaceted 00000000000000000000000000000000 network-wide 00000000000000000000000000000000 er 00000000000000000000000000000000 anti-recession 00000000000000000000000000000000 wish-list 00000000000000000000000000000000 Celanese 00100000000000110101111100101000 656 00000000000000000000000000000000 Indirect 00100000000001010000010100010000 weeping 00000000000000000000000000000000 meringues 00000000000000000000000000000000 pernicious 00000000000000000000000000000000 156,000 00000000000000000000000000000000 Sheila 00100000000000000000000000000000 treads 00000000000000000000000000000000 Bandow 00100000000000000000000000000000 Wishes 00100000000111000010101000110010 intergovernmental 00000000000000111011000000110000 unanimity 00000000000000000000000000000000 Setting 00100000000011111110100001000000 Diplomatic 00100000000010000000000000110000 crewcut 00000000000000000000000000000000 marshal 00000000000000101001111100001000 procession 00000000000000000000000000000000 ceremonies 00000000000001110010001000100011 union-bidder 00000000000000000000000000000000 appreciating 00000000000000000000000000000000 Lots 00100000000111101001111000101111 signalling 00000000000000000000000000000000 tightness 00000000000111101001001010100111 margined 00000000000000000000000000000000 jeopardized 00000000010100000001110000110010 reining 00000000000000000000000000000000 meddle 00000000000000000000000000000000 fundamentalism 00000000000111101001101100100101 anti-debt 00000000000000000000000000000000 scarcity 00000000000111101010101101001111 dealmakers 00000000000000000000000000000000 tiger 00000000000010000100111000101000 initiatiors 00000000000000000000000000000000 lustily 00000000000000000000000000000000 rhetorical 00000000000000000000000000000000 parades 00000000000000000000000000000000 Jarrell 00100000000000000000000000000000 618.69 00000000000000000000000000000000 35087.38 00000000000000000000000000000000 664.83 00000000000000000000000000000000 35133.83 00000000000000000000000000000000 435.11 00000000000000000000000000000000 34903.80 00000000000000000000000000000000 precipitating 00000000000000000000000000000000 34468.69 00000000000000000000000000000000 2600.88 00000000000000000000000000000000 941-105 00000000000000000000000000000000 526.2 00000000000000000000000000000000 574.7 00000000000000000000000000000000 100.96 00000000000000000000000000000000 3655.40 00000000000000000000000000000000 blood-cell 00000000000000000000000000000000 silicone 00000000000000000000000000000000 moneymakers 00000000000000000000000000000000 Isao 00100000000000000000000000000000 Ushikubo 00100000000000000000000000000000 Toyo 00100000000000000000000000000000 Masato 00100000000000000000000000000000 replaster 00000000000000000000000000000000 Jakarta 00100000000000000000000000000000 Yeung 00100000000000000000000000000000 HK 01000000000000000000000000000000 180.60 00000000000000000000000000000000 2601.70 00000000000000000000000000000000 473.9 00000000000000000000000000000000 Chenevix-Trench 01000000000000000000000000000000 Ordinaries 00100000000000000000000000000000 1601.5 00000000000000000000000000000000 Hinzack 00100000000000000000000000000000 Burdett 00100000000000000000000000000000 Buckeridge 00100000000000000000000000000000 sheep-like 00000000000000000000000000000000 bluechip 00000000000000000000000000000000 gelatin 00000000000000000000000000000000 1738.7 00000000000000000000000000000000 Tannenbaum 00100000000000000000000000000000 steepest 00000000000010101010000011010000 vitality 00000000000110101111011000001111 deplete 00000000000000000000000000000000 wish-lists 00000000000000000000000000000000 Toxics 00100000000000000000000000000000 Interestingly 00100000000000000000000000000000 presuming 00000000000000000000000000000000 greenhouse-effect 00000000000000000000000000000000 Pepperdine 00100000000000000000000000000000 Greenback 00100000000000000000000000000000 anti-toxic 00000000000000000000000000000000 apple-pie 00000000000000000000000000000000 anti-scientific 00000000000000000000000000000000 anti-pocketbook 00000000000000000000000000000000 rubric 00000000000000000000000000000000 futureeither 00000000000000000000000000000000 exhilaration 00000000000000000000000000000000 disbelief 00000000000000000000000000000000 big-stock 00000000000000000000000000000000 Baim 00100000000000000000000000000000 Promises 00100000000111100010101000110010 164.78-point 00000000000000000000000000000000 Transports 00100000000000000000000000000000 pawns 00000000000000000000000000000000 narrowness 00000000000000000000000000000000 whistling 00000000000000000000000000000000 credence 00000000000001110111110100100111 pre-trading 00000000000000000000000000000000 Lyman 00100000000000000000000000000000 27-point 00000000000000000000000000000000 groped 00000000000000000000000000000000 10:15 00000000000000000000000000000000 Machold 00100000000000000000000000000000 Greedily 00100000000000000000000000000000 Fagenson 00100000000000000000000000000000 .Not 01000000000000000000000000000000 glum 00000000000000000000000000000000 queenside 00000000000000000000000000000000 5.74 00000000000000000000000000000000 yelped 00000000000000000000000000000000 Grinned 00100000000000000000000000000000 Griffith 00101111111110001110100010001000 deviated 00000000000000000000000000000000 Gambit 00100000000000000000000000000000 Spitzenburg 00100000000000000000000000000000 Rosenau 00100000000000000000000000000000 figurative 00000000000000000000000000000000 savior 00000000000000000000000000000000 Specialists 00100000000000000010000010110011 Valero 00100000000000000000000000000000 program-related 00000000000000000000000000000000 soulmates 00000000000000000000000000000000 Christic 00100000000000000000000000000000 smelling 00000000000010000110100001000000 anti-defense 00000000000000000000000000000000 politico-plaintiffs 00000000000000000000000000000000 mischievous 00000000000000000000000000000000 6-4 00000000000000000000000000000000 six-hour 00000000000000000000000000000000 weasling 00000000000000000000000000000000 Leery 00100000000101101011110000110010 615 00000000000000000000000000000000 federal-formula 00000000000000000000000000000000 Enjoying 00100000000111101111000101000000 movie-production 00000000000000000000000000000000 coca 00000000000110100111101110110000 denude 00000000000000000000000000000000 crouch 00000000000000000000000000000000 shuffled 00000000000000000000000000000000 sized 00000000001010011101101001000000 2,720,675 00000000000000000000000000000000 306,000 00000000000000000000000000000000 Sejm 00100000000000000000000000000000 Trojan 00100000000000000000000000000000 atrocities 00000000000000000000000000000000 1,376 00000000000000000000000000000000 13-pound 00000000000000000000000000000000 Esopus 00100000000000000000000000000000 over-optimistic 00000000000000000000000000000000 168.1 00000000000000000000000000000000 132.6 00000000000000000000000000000000 bond-market 00000000000000000000000000000000 Consistently 00100000001000000001001001110010 dispatches 00000000000000000000000000000000 0.70 00000000000000000000000000000000 snidely 00000000000000000000000000000000 passivity 00000000000000000000000000000000 600-point 00000000000000000000000000000000 watchful 00000000000000000000000000000000 7.36 00000000000000000000000000000000 96.15 00000000000000000000000000000000 5.245 00000000000000000000000000000000 98.30 00000000000000000000000000000000 Bishops 00100000000100100010100110110101 10.12 00000000000000000000000000000000 12.74 00000000000000000000000000000000 Remic-related 00100000000000000000000000000000 Rebounding 00100000000101111011100001000000 Tax-exempts 00100000000000000000000000000000 Professionals 00100000000000011111000010110011 wrung 00000000000000000000000000000000 Triborough 00100000000000000000000000000000 Tunnel 00100000000000101010111000000001 2027 00000000000000000000000000000000 Mazzera 00100000000000000000000000000000 dessert-menu 00000000000000000000000000000000 47%-controlled 00000000000000000000000000000000 61.41 00000000000000000000000000000000 349.9 00000000000000000000000000000000 250.17 00000000000000000000000000000000 178.61 00000000000000000000000000000000 29.62 00000000000000000000000000000000 26.68 00000000000000000000000000000000 423.3 00000000000000000000000000000000 leisure-oriented 00000000000000000000000000000000 184.74 00000000000000000000000000000000 106.06 00000000000000000000000000000000 renting 00000000000001111101111101000000 Slider 00100000000000000000000000000000 earth-moving 00000000000000000000000000000000 compaction 00000000000000000000000000000000 forklifts 00000000000000000000000000000000 Brophy 00100000000000000000000000000000 955,000 00000000000000000000000000000000 2.43 00000000000000000000000000000000 2.71 00000000000000000000000000000000 Ludlum 00100000000000000000000000000000 steels 00000000000111111001111011100011 108.6 00000000000000000000000000000000 4.81 00000000000000000000000000000000 3.76 00000000000000000000000000000000 dark-squared 00000000000000000000000000000000 7-a-share 00000000000000000000000000000000 78.6 00000000000000000000000000000000 venal 00000000000000000000000000000000 under-serviced 00000000000000000000000000000000 NGL 01000000000000000000000000000000 6,930,000 00000000000000000000000000000000 5,500,000 00000000000000000000000000000000 19-to-$21 00000000000000000000000000000000 154.3 00000000000000000000000000000000 560,839 00000000000000000000000000000000 31.50 00000000000000000000000000000000 typewriters 00000000000111110111111111001001 positional 00000000000000000000000000000000 Trendy 00100000001001010000001000110000 cinematography 00000000000000000000000000000000 Stadiums 00100000000110011111110101100011 colorization 00000000000000000000000000000000 Mednis 00100000000000000000000000000000 Edmar 00100000000000000000000000000000 DeMoulin 01000000000000000000000000000000 resurging 00000000000000000000000000000000 T-Max 01000000000000000000000000000000 3200 00000000000000000000000000000000 Photofinishing 00100000000001110011111010110000 Newsletter 00100000000000000001001101000001 snare 00000000000000000000000000000000 Gala 00100000000000000000000000000000 medalist 00000000000000000000000000000000 Griffith-Joyner 01000000000000000000000000000000 Slated 00100000000010010110111000110010 speciality 00000000000111110101010000110000 DiCara 01000000000000000000000000000000 offside 00000000000000000000000000000000 archival 00000000000000000000000000000000 rook 00000000000000000000000000000000 Crisman 00100000000000000000000000000000 Cleo 00100000000000000000000000000000 Hauser 00100000000000000000000000000000 photographer 00000000000111001010011110110101 Stouffer 00100000000000000000000000000000 latched 00000000000100100000100000110010 On-Broadway 01000000000000000000000000000000 Dayna 00100000000000000000000000000000 Brunsdon 00100000000000000000000000000000 wow 00000000000011101000110100101000 plunking 00000000000000000000000000000000 Black-and-white 00100000000000000000000000000000 photofinishers 00000000000000000000000000000000 Intent 00100000000111111111110100100111 second-rate 00000000000000000000000000000000 enlargers 00000000000000000000000000000000 darkroom 00000000000000000000000000000000 hobbies 00000000000101110101110010100111 Brightman 00100000000000000000000000000000 castling 00000000000000000000000000000000 quantum 00000000000000001011010100101000 leaps 00000000000111111100011110000011 150th 00000000000000000000000000000000 DeBat 01000000000000000000000000000000 Photographers 00100000000111101101111000110011 Leser 00100000000000000000000000000000 94.9 00000000000000000000000000000000 88.3 00000000000000000000000000000000 23.6 00000000000000000000000000000000 279.1 00000000000000000000000000000000 261.3 00000000000000000000000000000000 Agip 00100000000000000000000000000000 five-course 00000000000000000000000000000000 ineffably 00000000000000000000000000000000 Sicilian 00100000000000000000000000000000 222.3 00000000000000000000000000000000 215.3 00000000000000000000000000000000 Dating 00100000000000001111100001000000 Underlying 00100000000000100000000100010000 M2 00100000000000000000000000000000 precursory 00000000000000000000000000000000 foreign-trade 00000000000000000000000000000000 computer-based 00000000000000000000000000000000 wage-floor 00000000000000000000000000000000 133.4 00000000000000000000000000000000 Barilla 00100000000000000000000000000000 CENTRUST 01000000000110001000110100101000 AVOIDED 01000000110000010100010000110010 neige 00000000000000000000000000000000 kryptonite 00000000000000000000000000000000 wholesale-store 00000000000000000000000000000000 214.73 00000000000000000000000000000000 3393.51 00000000000000000000000000000000 130.16 00000000000000000000000000000000 0.0055 00000000000000000000000000000000 fearless 00000000000000000000000000000000 oeufs 00000000000000000000000000000000 .9.82 00000000000000000000000000000000 rate-mortgages 00000000000000000000000000000000 pollinating 00000000000000000000000000000000 hazelnut 00000000000000000000000000000000 8086 00000000000000000000000000000000 minisupercomputers 00000000000000000000000000000000 parallel-computing 00000000000000000000000000000000 berries 00000000000000000000000000000000 gauze 00000000000000000000000000000000 Sterile 00100000000000000000000000000000 148.5 00000000000000000000000000000000 ACCO 01000000000000000000000000000000 68.3 00000000000000000000000000000000 Hardware 00100000000011101000111010110000 Nalcor 00100000000000000000000000000000 Weslock 00100000000000000000000000000000 JPI 01000000000000000000000000000000 collectability 00000000000000000000000000000000 Biscuit 00100000000000000000000000000000 McVities 01000000000000000000000000000000 biscuits 00000000000000000000011011101001 confectionery 00000000000000000000000000000000 Marxist-dominated 00100000000000000000000000000000 overburdened 00000000000000000000000000000000 protein-1 00000000000000000000000000000000 belittle 00000000000000000000000000000000 5.8125 00000000000000000000000000000000 Afrika 00100000000000000000000000000000 Korps 00100000000000000000000000000000 U.N.-monitored 01000000000000000000000000000000 redress 00000000000111000010110010110111 O'Linn's 01000000000000000000000000000000 Weasel 00100000000000000110110110110111 late-in-the-day 00000000000000000000000000000000 l987 00000000000000000000000000000000 471.60 00000000000000000000000000000000 9.60 00000000000000000000000000000000 491.50 00000000000000000000000000000000 price-supporting 00000000000000000000000000000000 20.59 00000000000000000000000000000000 anyhow 00000000000000000000000000000000 Taiwan-born 00100000000000000000000000000000 1.2745 00000000000000000000000000000000 underwhelmed 00000000000000000000000000000000 Bent 00100000000110110100100000110010 10,004 00000000000000000000000000000000 13,575 00000000000000000000000000000000 89,300 00000000000000000000000000000000 1.2965 00000000000000000000000000000000 0.22 00000000000000000000000000000000 74.48 00000000000000000000000000000000 cotton-growing 00000000000000000000000000000000 Colder 00100000000000000000000000000000 13.97 00000000000000000000000000000000 14.22 00000000000000000000000000000000 FARM 01000000000000000111010000110000 millon 00000000000000000000000000000000 grandmasters 00000000000000000000000000000000 gaseous 00000000000000000000000000000000 vented 00000000000000000000000000000000 suppressants 00000000000000000000000000000000 Whirpool 00100000000000000000000000000000 rented 00000000000110001101101001000000 38.875 00000000000000000000000000000000 whippings 00000000000000000000000000000000 weakling 00000000000000000000000000000000 SES 01000000000000000000000000000000 Deminex 00100000000000000000000000000000 OEL 01000000000000000000000000000000 Hispanoil 00100000000000000000000000000000 Hudbay 00100000000000000000000000000000 Inpex 00100000000000000000000000000000 Lasmo 00100000000000000000000000000000 Sunda 00100000000000000000000000000000 TCR 01000000000000000000000000000000 Sumat 00100000000000000000000000000000 Warrior 00100000000001001000110000000001 Pertamina 00100000000000000000000000000000 Indonesian 00100000000001100100010100110000 Forrest 00100000000000000000000000000000 curly 00000000000000000000000000000000 18.625 00000000000000000000000000000000 9.05 00000000000000000000000000000000 borer 00000000000000000000000000000000 surfaces 00000000000110001110010101100011 98-pound 00000000000000000000000000000000 37.375 00000000000000000000000000000000 Electro-Optics 01000000000000000000000000000000 creamy 00000000000010111011011010010000 Danbury 00100000000110010111101001101000 electro-optical 00000000000000000000000000000000 PerkinElmer 01000000000000000000000000000000 Electro-Optical 01000000000000000000000000000000 infrared 00000000000110011100101010110000 41,000 00000000000000000000000000000000 23-day 00000000000000000000000000000000 redistribute 00000000000000000000000000000000 strode 00000000000000000000000000000000 sighing 00000000000000000000000000000000 brandished 00000000000000000000000000000000 unlit 00000000000000000000000000000000 Shopkorn 00100000000000000000000000000000 non-encapsulating 00000000000000000000000000000000 gooseberry 00000000000000000000000000000000 cataclysms 00000000000000000000000000000000 survivable 00000000000110110110010010010000 Adrian 00100000001000000001000010011000 Sween 00100000000000000000000000000000 141.8 00000000000000000000000000000000 backslapping 00000000000000000000000000000000 eyed 00000001111101000101010000110010 647 00000000000000000000000000000000 pell-mell 00000000000000000000000000000000 Proctor 00101111111100011101110001001000 114.5 00000000000000000000000000000000 Batterymarch 00100000000000000000000000000000 2600 00000000000000000000000000000000 symbolically 00000000000000000000000000000000 Ava 00100000000000000000000000000000 Holzfaster 00100000000000000000000000000000 farm-supply 00000000000000000000000000000000 Ogallala 00100000000000000000000000000000 Fines 00100000000111110111110000100011 Bellevue 00100000000110100101101001101000 NP 01000000000000000000000000000000 Kan.-based 00100000000000000000000000000000 19.9 00000000000000000000000000000000 possiblity 00000000000000000000000000000000 payoffs 00000000000111100111001100000011 countdown 00000000000000000000000000000000 formalities 00000000000000000000000000000000 sherbet 00000000000000000000000000000000 anti-social 00000000000000000000000000000000 low-profile 00000000000000000000000000000000 insurrection 00000000000000000000000000000000 economic-restructuring 00000000000000000000000000000000 Olav 00100000000000000000000000000000 V 00100000000000000000000000000000 non-Socialist 01000000000000000000000000000000 Gro 00100000000000000000000000000000 Brundtland 00100000000000000000000000000000 19-member 00000000000000000000000000000000 Syse 00100000000000000000000000000000 165-member 00000000000000000000000000000000 U.S.-supplied 01000000000000000000000000000000 Cornel 00100000000000000000000000000000 Wilde 00100000000000000000000000000000 Danilo 00100000000000000000000000000000 Kis 00100000000000000000000000000000 Yugoslav-born 00100000000000000000000000000000 essayist 00000000000000000000000000000000 kiwi 00000000000000000000000000000000 foldable 00000000000000000000000000000000 mega-stadium 00000000000000000000000000000000 Foy 00100000000000000000000000000000 Toe 00100000000110000101111010110111 Schoeneman 00100000000000000000000000000000 Laurent 00101111111010101000000101001000 53.875 00000000000000000000000000000000 pathlogy 00000000000000000000000000000000 employment-services 00000000000000000000000000000000 infinitely 00000000000000000000000000000000 Antony 00100000000000000000000000000000 solidified 00000000000000000000000000000000 39.4 00000000000000000000000000000000 wonderland 00000000000000000000000000000000 non-Manpower 01000000000000000000000000000000 18.49 00000000000000000000000000000000 18.98 00000000000000000000000000000000 9-5 00000000000000000000000000000000 underachiever 00000000000000000000000000000000 computer-room 00000000000000000000000000000000 vibration-control 00000000000000000000000000000000 815,000 00000000000000000000000000000000 201.7 00000000000000000000000000000000 Mirek 00100000000000000000000000000000 23.00 00000000000000000000000000000000 stagnating 00000000000000000000000000000000 evangelical 00000000001100010000001000110000 20.8 00000000000000000000000000000000 PG&E 01000000000000000000000000000000 drunken 00000000000001111010010000010000 Muniz 00100000000000000000000000000000 Gell 00100000000000000000000000000000 Hartmarx 00101111111110011010111100101000 Right-to-Die 01000000000000000000000000000000 Appeal 00100000000111111111111010110111 Waters 00100000000110000110000000001000 eight-hour 00000000000000000000000000000000 amphobiles 00000000000000000000000000000000 Wankui 00100000000000000000000000000000 dance-committee 00000000000000000000000000000000 compounds 00000000000111011011110100100011 perky 00000000000000000000000000000000 anchorwoman 00000000000000000000000000000000 Nestled 00100000000000000000000000000000 mega-welfare 00000000000000000000000000000000 cradle-to-grave 00000000000000000000000000000000 redundant 00000000000000001011000110010000 glaring 00000000000001000111000010010000 Subsidies 00100000000111100101001100000011 Throwing 00100000011111110110100001000000 downstairs 00000000000000000000000000000000 buns 00000000000000000000000000000000 Patrol 00100000000000001010100110110111 Breakfast 00100000000010111010000000100001 greets 00000000000000000000000000000000 Happily 00100001101100000000010001110010 Donning 00100000000000000000000000000000 denims 00000000000000000000000000000000 steel-making 00000000000000000000000000000000 orange-flavored 00000000000000000000000000000000 cafeterias 00000000000110000101011001101001 Scraps 00100000000000000000000000000000 slop-bucket 00000000000000000000000000000000 blood-red 00000000000000000000000000000000 peppers 00000000000000000000000000000000 NetWare 01000000000000000000000000000000 Yuan 00100000000000000011100000001011 Changyong 00100000000000000000000000000000 Teams 00100000000010101001110101100011 Ollari 00100000000000000000000000000000 Shanyun 00100000000000000000000000000000 Jihong 00100000000000000000000000000000 apron 00000000000000000000000000000000 five-by-eight-inch 00000000000000000000000000000000 sweets 00000000000000000000000000000000 whitewashed 00000000000000000000000000000000 bookcase 00000000000000000000000000000000 Xia 00100000000000000000000000000000 Huaqiong 00100000000000000000000000000000 mobility 00000000000011110111111010100111 Catania 00100000000000000000000000000000 Xiangyang 00100000000000000000000000000000 Elementary 00100000000001111101000100110000 one-company 00000000000000000000000000000000 all-powerful 00000000000000000000000000000000 wanders 00000000000000000000000000000000 restlessly 00000000000000000000000000000000 greet 00000000000000000000000000000000 Inevitably 00100000001100000000001001110010 five-story 00000000000000000000000000000000 second-floor 00000000000000000000000000000000 leafing 00000000000000000000000000000000 Inspects 00100000000000000000000000000000 Operation 00100000000111101111010000001001 Furnace 00100000000000000101111000000001 Yongjian 00100000000000000000000000000000 organizes 00000000000000000000000000000000 outdoors 00000000000110101010101100100001 promenade 00000000000000000000000000000000 Jinshajiang 00100000000000000000000000000000 eight-piece 00000000000000000000000000000000 plods 00000000000000000000000000000000 slender 00000000000111100111000010010000 well-rehearsed 00000000000000000000000000000000 three-step 00000000000000000000000000000000 cheek-to-cheek 00000000000000000000000000000000 oddest 00000000000000000000000000000000 follies 00000000000101011111011000001111 straw-and-mud 00000000000000000000000000000000 revisionists 00000000000000000000000000000000 settlers 00000000000100000000111000110011 Zhijie 00100000000000000000000000000000 filtered 00000000000000000000000000000000 warmth 00000000000101100111110010100111 recuperate 00000000000000000000000000000000 500-bed 00000000000000000000000000000000 cremation 00000000000000000000000000000000 smoothest 00000000000000000000000000000000 Desheng 00100000000000000000000000000000 smock 00001111111011100100000000001000 maternity 00000000000011100101000000110000 NW 01000000000000000000000000000000 BCS 01000000000000000000000000000000 U.LLO 01000000000000000000000000000000 1.33 00000000000000000000000000000000 250-branch 00000000000000000000000000000000 ninth-largest 00000000000000000000000000000000 consortium-ownership 00000000000000000000000000000000 endeavoring 00000000000000000000000000000000 joked 00000000000110010111110111000010 products... 00000000000000000000000000000000 Northwestern 00100000000000100111111000101000 Salwen 00100000000000000000000000000000 Proxmire 00101111111100111010111010001000 intraocular 00000000000000000000000000000000 ill-timed 00000000000000000000000000000000 Producer-Price 01000000000000000000000000000000 innocuous 00000000000000000000000000000000 obstinate 00000000000000000000000000000000 Hibben 00100000000000000000000000000000 binder 00000000000111100001001000001000 1975-80 00000000000000000000000000000000 decapitalize 00000000000000000000000000000000 Generalized 00100000000000000000000000000000 inflation-fuels-growth 00000000000000000000000000000000 instruct 00000000000000000000000000000000 needle-like 00000000000000000000000000000000 373.8 00000000000000000000000000000000 Indio 00100000000000000000000000000000 paraphrase 00000000000000000000000000000000 tattered 00000000000000000000000000000000 46.25 00000000000000000000000000000000 Dowie 00100000000000000000000000000000 482.39 00000000000000000000000000000000 34633.63 00000000000000000000000000000000 611.62 00000000000000000000000000000000 Yoshiro 00100000000000000000000000000000 Inoue 00100000000000000000000000000000 Flemings 00100000000000000000000000000000 flat-headed 00000000000000000000000000000000 unmaterialized 00000000000000000000000000000000 Connoisseur 00100000000000000000000000000000 unavoidable 00000000000000000000000000000000 Hiroaki 00100000000000000000000000000000 Storm 00100000000111101010101101100111 ficials 00000000000000000000000000000000 139.95 00000000000000000000000000000000 320.97 00000000000000000000000000000000 35116.02 00000000000000000000000000000000 Ohira 00100000000000000000000000000000 2782.30 00000000000000000000000000000000 2736 00000000000000000000000000000000 2093 00000000000000000000000000000000 Niem 00100000000000000000000000000000 Schuler 00100000000000000000000000000000 Govette 00100000000000000000000000000000 108-point 00000000000000000000000000000000 420.81 00000000000000000000000000000000 allnight 00000000000000000000000000000000 wallops 00000000000000000000000000000000 forecaster 00000000000001101111101110110101 jaded 00000000000000000000000000000000 gobbling 00000000000000000000000000000000 decoy 00000000000000000000000000000000 decoys 00000000000000000000000000000000 misinformation 00000000000000000000000000000000 standing-room 00000000000000000000000000000000 Monitors 00100000000001000111000000010010 arbitrageurs 00000000000000000000000000000000 1,430,000 00000000000000000000000000000000 12,470,000 00000000000000000000000000000000 Stuecker 00100000000000000000000000000000 Preferences 00100000000111011011011100100011 glass-container 00000000000000000000000000000000 rainstorm 00000000000000000000000000000000 100-point-plus 00000000000000000000000000000000 Loughlin 00100000000000000000000000000000 steepness 00000000000000000000000000000000 pausing 00000000000000000000000000000000 edginess 00000000000000000000000000000000 wind-driven 00000000000000000000000000000000 unexecuted 00000000000000000000000000000000 index-futures 00000000000000000000000000000000 blush 00000000000111100000011000110111 Burzon 00100000000000000000000000000000 100-point-equivalency 00000000000000000000000000000000 withing 00000000000000000000000000000000 98.625 00000000000000000000000000000000 .125 00000000000000000000000000000000 whispers 00000000000010000011010111000010 56.625 00000000000000000000000000000000 nosedived 00000000000000000000000000000000 22-rated 00000000000000000000000000000000 forlornly 00000000000000000000000000000000 floundered 00000000011001000110001000110010 ever-anxious 00000000000000000000000000000000 calamities 00000000000000000000000000000000 sparring 00000000000000000000000000000000 then-Treasury 01000000000000000000000000000000 agreed-on 00000000000000000000000000000000 voicing 00000000000000000000000000000000 151.2 00000000000000000000000000000000 PhacoFlex 01000000000000000000000000000000 market-timing 00000000000000000000000000000000 cheek-to-jowl 00000000000000000000000000000000 222.15 00000000000000000000000000000000 acquisition-minded 00000000000000000000000000000000 quake-torn 00000000000000000000000000000000 52%-36 00000000000000000000000000000000 Dolphins 00100000000000000000000000000000 break-down 00000000000000000000000000000000 applicant 00000000000111010111111001100111 retail-based 00000000000000000000000000000000 Robeson 00100000000000000000000000000000 Adelman 00101111111100000101000010001000 crafty 00000000000000000000000000000000 Frazier 00100000000000000000000000000000 dominoes 00000000000000000000000000000000 5.12 00000000000000000000000000000000 disorganized 00000000000100101011011010010000 3:55 00000000000000000000000000000000 Gathered 00100000010000001100010000110010 cash-squeeze 00000000000000000000000000000000 allout 00000000000000000000000000000000 overburden 00000000000000000000000000000000 thereabouts 00000000000000000000000000000000 stock-optioned 00000000000000000000000000000000 flop 00000000000110011111101010110111 co-lead 00000000000000000000000000000000 collaborative 00000000000000000100100000100001 front-loaded 00000000000000000000000000000000 zippo 00000000000000000000000000000000 Sesit 00100000000000000000000000000000 6.81 00000000000000000000000000000000 units-Texas 01000000000000000000000000000000 regressive 00000000000000000000000000000000 139.30 00000000000000000000000000000000 1.8720 00000000000000000000000000000000 140.90 00000000000000000000000000000000 1.8535 00000000000000000000000000000000 state-registered 00000000000000000000000000000000 TREND-SETTER 01000000000000000000000000000000 Naperville 00100000000000000000000000000000 Clay 00100000000101111010000000001000 1.9140 00000000000000000000000000000000 144.80 00000000000000000000000000000000 chagrin 00000000000110111000111101100011 1.8895 00000000000000000000000000000000 city-owned 00000000000000000000000000000000 Rotondo 00100000000000000000000000000000 Witten 00100000000000000000000000000000 1.70-to-1.90 00000000000000000000000000000000 120-140 00000000000000000000000000000000 uptrend 00000000000000000000000000000000 Gilles 00100000000000000000000000000000 Bazy-Sire 01000000000000000000000000000000 1.8650-1.8850 00000000000000000000000000000000 142-143.50 00000000000000000000000000000000 363.30 00000000000000000000000000000000 368.27 00000000000000000000000000000000 2.81 00000000000000000000000000000000 365.46 00000000000000000000000000000000 print-shop 00000000000000000000000000000000 INDEX 01000000000000000000011110000111 JUNK 01000000000000010000000110110000 High-yielding 00100000000000000000000000000000 LEVERAGED 01000000000111101010111100010000 BUY-OUT 01000000000000000000000000000000 MARGIN 01000000000000000001100011000111 OPTIONS 01000000000110101110001111100011 PORTFOLIO 01000000000111101111000010000001 Rolodex 00100000000000000000000000000000 STOCK-INDEX 01000000000000000000000000000000 FUTURES 01000000000111111110011110110000 encompasses 00000000000000000000000000000000 Circuit-breaker 00100000000000000000000000000000 speeded 00000000000000000000000000000000 cascaded 00000000000000000000000000000000 intermarket 00000000000100111010000000110000 uncorrected 00000000000000000000000000000000 333.65 00000000000000000000000000000000 Pautsch 00100000000000000000000000000000 CST 01000000000000000000000000000000 Sporadic 00100000000001011000000000010000 312 00000000000000000000000000000000 Fri 00100000000000000000000000000000 offi 00000000000000000000000000000000 cials 00000000000000000000000000000000 cross-margining 00000000000000000000000000000000 ascertain 00000000000000000000000000000000 margining 00000000000000000000000000000000 shills 00000000000000000000000000000000 risk-fraught 00000000000000000000000000000000 708 00000000000000000000000000000000 political-reform 00000000000000000000000000000000 66,100 00000000000000000000000000000000 area-code 00000000000000000000000000000000 denials 00000000000000000000000000000000 13,400 00000000000000000000000000000000 359,100 00000000000000000000000000000000 imploring 00000000000000000000000000000000 film-processing 00000000000000000000000000000000 voter-registration 00000000000000000000000000000000 0.0003 00000000000000000000000000000000 Watt 00101111111111000000001010001000 uncontested 00000000000000000000000000000000 160-page 00000000000000000000000000000000 second-guess 00000000000000000000000000000000 Countered 00100000010111110110010000110010 Final-hour 00100000000000000000000000000000 108.1 00000000000000000000000000000000 12th-worst 00000000000000000000000000000000 156.83 00000000000000000000000000000000 employee-management 00000000000000000000000000000000 3:07 00000000000000000000000000000000 100-point 00000000000000000000000000000000 guidepost 00000000000000000000000000000000 114.76 00000000000000000000000000000000 inter-exchange 00000000000000000000000000000000 camped 00000000000000000000000000000000 build-up 00000000000000000000000000000000 demoralized 00000000001100011101101001000000 confidence-crusher 00000000000000000000000000000000 intercom 00000000000000000000000000000000 hunch 00000000000111111000110000000001 DOLLARS 01000000000000000000101000001011 Drop 00100000000111111111001100110111 harp 00000000000000000000000000000000 Yass 00100000000000000000000000000000 Susquehanna 00100000000000000000000000000000 de-linkage 00000000000000000000000000000000 dealer-community 00000000000000000000000000000000 Inject 00100000010111101111101110110010 blood-letting 00000000000000000000000000000000 leeches 00000000000000000000000000000000 and... 00000000000000000000000000000000 air-charter 00000000000000000000000000000000 707s 00000000000000000000000000000000 LJH 01000000000000000000000000000000 million-square-foot 00000000000000000000000000000000 hotel-restaurant 00000000000000000000000000000000 BALLOTS 01000000000001100111000001100011 Richland 00100000000000000000000000000000 Bigg 00100000000000000000000000000000 hypermarket 00000000000000000000000000000000 rot 00000000000000000000000000000000 psychotic 00000000000000000000000000000000 steel-ingot 00000000000000000000000000000000 254,280 00000000000000000000000000000000 274,963 00000000000000000000000000000000 12,006,883 00000000000000000000000000000000 11,141,711 00000000000000000000000000000000 peppered 00000000000000000000000000000000 NOVEMBER 01000000000111101111111001100010 Bogle 00100000000000000000000000000000 Bajakian 00100000000000000000000000000000 croak 00000000000000000000000000000000 infuriated 00000000011100101101110000110010 walk-in 00000000000000000000000000000000 thrips 00000000000000000000000000000000 Sector 00100000000111111011101100001001 lesson... 00000000000000000000000000000000 fiscal-first-quarter 00000000000000000000000000000000 yearearlier 00000000000000000000000000000000 Ripples 00100000000111001001010101100011 352-mile 00000000000000000000000000000000 nonstops 00000000000000000000000000000000 Palmdale 00100000000000000000000000000000 humanizing 00000000000000000000000000000000 737-300 00000000000000000000000000000000 Cyrus 00101111111000111110001100011000 57.375 00000000000000000000000000000000 1069 00000000000000000000000000000000 pro-family 00000000000000000000000000000000 767-300 00000000000000000000000000000000 wide-body 00000000000000000000000000000000 medium-haul 00000000000000000000000000000000 PW4060 01000000000000000000000000000000 O'Brian 01000000000000000000000000000000 coliseum 00000000000011111010111000000001 Landrieu 00100000000000000000000000000000 C.S. 01000000000000000000000000000000 50.1%-owned 00000000000000000000000000000000 31.05 00000000000000000000000000000000 Picus 00100000000000000000000000000000 CONCORDE 01000000000000000000000000000000 Electrosurgery 00100000000000000000000000000000 2.016 00000000000000000000000000000000 64-inch 00000000000000000000000000000000 5,782 00000000000000000000000000000000 5,824 00000000000000000000000000000000 53.4 00000000000000000000000000000000 Joy 00100000000111101010010000001000 mildew 00000000000000000000000000000000 impacts 00000000000111111001001110001111 fracture 00000000000000000000000000000000 pervade 00000000000000000000000000000000 exited 00000000000000000000000000000000 troughs 00000000000000000000000000000000 fluctuates 00000000000000000000000000000000 Benchmark 00100000000111111111011000010000 Calculating 00100000000111011111011101000000 sloshing 00000000000000000000000000000000 spiraled 00000000000000000000000000000000 haggle 00000000000000000000000000000000 doubter 00000000000000000000000000000000 chemical-industry 00000000000000000000000000000000 plant-expansion 00000000000000000000000000000000 deflected 00000000000000000000000000000000 straight-from-the-shoulder 00000000000000000000000000000000 drawn-out 00000000000000000000000000000000 restarting 00000000000000000000000000000000 trade-group 00000000000000000000000000000000 imponderable 00000000000000000000000000000000 business-interruption 00000000000000000000000000000000 dickering 00000000000000000000000000000000 Semegran 00100000000000000000000000000000 Propane 00100000000010110101010000110000 network-buying 00000000000000000000000000000000 Erickson 00101111111101100100001000001000 spot-television 00000000000000000000000000000000 re-examination 00000000000000000000000000000000 Chrisanthopoulos 00100000000000000000000000000000 finalizing 00000000000000000000000000000000 Triggering 00100000000111100111111101000000 ANGELES 01001111111100101000000100011101 LOS 01001111111011010111101101110000 0.48 00000000000000000000000000000000 Korean-U.S. 01000000000000000000000000000000 Negotiators 00100000000000100110100110110011 1%-a-year 00000000000000000000000000000000 stringently 00000000000000000000000000000000 Minolta 00100000000000000000000000000000 Measuring 00100000000010110010110001000000 tablespoons 00000000000000000000000000000000 WINSTON-SALEM 01000000000000000000000000000000 spoonfuls 00000000000000000000000000000000 washload 00000000000000000000000000000000 soapsuds 00000000000000000000000000000000 mortgage-based 00000000000000000000000000000000 mites 00000000000000000000000000000000 watcher 00000000000000000000000000000000 demolish 00000000000000000000000000000000 Superconcentrates 00100000000000000000000000000000 powders 00000000000000000000000000000000 Bleach 00100000000000000000000000000000 softener 00000000000000000000000000000000 pouches 00000000000000000000000000000000 less-established 00000000000000000000000000000000 Jergens 00100000000000000000000000000000 hand-lotion 00000000000000000000000000000000 product-testing 00000000000000000000000000000000 payment... 00000000000000000000000000000000 betwen 00000000000000000000000000000000 tackled 00000010101101000101010000110010 fiscal-year 00000000000000000000000000000000 newspaper-publishing 00000000000000000000000000000000 maggots 00000000000000000000000000000000 Buente 00100000000000000000000000000000 haberdashery 00000000000000000000000000000000 Luxco 00100000000000000000000000000000 operationally 00000000000000000000000000000000 Marcy 00100000000000000000000000000000 overexpansion 00000000000000000000000000000000 mid-1987 00000000000000000000000000000000 Refiners 00100000000110101100010000110011 milder 00000000000000000000000000000000 Coordinating 00100000000111110110010110110000 align 00000000000000000000000000000000 government-mandated 00000000000000000000000000000000 L.M. 01000000000000000000000000000000 unhealed 00000000000000000000000000000000 feuded 00000000000000000000000000000000 284 00000000000000000000000000000000 detests 00000000000000000000000000000000 newborn 00000000000010001010101000110000 Vagabonds 00100000000000000000000000000000 representives 00000000000000000000000000000000 nightmares 00000000000101001101111101100011 Holderbank 00100000000000000000000000000000 Glaris 00100000000000000000000000000000 VICTORIES 01000000000111000001111000100011 Dundee 00101111111100111000010000101000 87.2 00000000000000000000000000000000 drought-induced 00000000000000000000000000000000 Pharaoh 00100000000000000000000000000000 Wanders 00100000000000000000000000000000 drought-stunted 00000000000000000000000000000000 4-a-bushel 00000000000000000000000000000000 4.0675 00000000000000000000000000000000 Basse 00100000000000000000000000000000 AgResource 01000000000000000000000000000000 CBOT 01000000000000000000000000000000 Unseasonably 00100000000000000000000000000000 Beckwith 00100000000000000000000000000000 panhandle 00000000000111111001001010101000 exams 00000000001111100010001000100011 pivot 00000000000000000000000000000000 Feltes 00100000000000000000000000000000 Juice 00100000000011101010000010100101 90-pound 00000000000000000000000000000000 146.6 00000000000000000000000000000000 breast-cancer 00000000000000000000000000000000 4.95 00000000000000000000000000000000 1.3210 00000000000000000000000000000000 dollar-priced 00000000000000000000000000000000 harvesting 00000000000001111010110001000000 Hinton 00100000000000000000000000000000 Stotler 00100000000000000000000000000000 20.89 00000000000000000000000000000000 buoyancy 00000000000000000000000000000000 predator 00000000000000000000000000000000 Colombatto 00100000000000000000000000000000 pharaohs 00000000000000000000000000000000 Holliday 00100000000000000000000000000000 Cosmopulos 00100000000000000000000000000000 NOT-GUILTY 01000000000000000000000000000000 PLEA 01000000000110100111001011100111 Abrahams 00100000000000000000000000000000 KOREAN 01000000000000000001010100110000 AGENCY 01000000000000001000010000100101 Cheil 00100000000000000000000000000000 1,848,000 00000000000000000000000000000000 computer-data-storage 00000000000000000000000000000000 81.5 00000000000000000000000000000000 Operationally 00100000000000000000000000000000 161.8 00000000000000000000000000000000 Walden 00100000000000000000000000000000 10-K 01000000000000000000000000000000 10K 01000000000000000000000000000000 86.2 00000000000000000000000000000000 Gelles 00100000000000000000000000000000 tallying 00000000000000000000000000000000 adjourned 00000001011011010100010000110010 89.7 00000000000000000000000000000000 Groton 00100000000000000000000000000000 Upsala 00100000000000000000000000000000 make-work 00000000000000000000000000000000 hyaluronic 00000000000000000000000000000000 rooster-comb 00000000000000000000000000000000 first-phase 00000000000000000000000000000000 unsteadiness 00000000000000000000000000000000 decontrol 00000000000000000000000000000000 Improved 00100000000000000010011001000000 revolutionized 00000000000000000000000000000000 capitulated 00000000000000000000000000000000 2,735 00000000000000000000000000000000 404.1 00000000000000000000000000000000 383.8 00000000000000000000000000000000 Kassan 00100000000000000000000000000000 flippant 00000000000000000000000000000000 vehicle-making 00000000000000000000000000000000 Lakewood 00100000000110100100101001101000 no-layoff 00000000000000000000000000000000 snowstorm 00000000000000000000000000000000 blasting 00000000000000000000000000000000 insensitivity 00000000000000000000000000000000 reassignments 00000000000000000000000000000000 Firebird 00100000000000000000000000000000 Camaro 00100000000110000100000001000111 Folks 00100000000111101111000100110011 Therese 00100000000000000000000000000000 Shrieves 00100000000000000000000000000000 flex 00000000000000000000000000000000 141.9 00000000000000000000000000000000 formulations 00000000000000000000000000000000 Featherston 00100000000000000000000000000000 two-seater 00000000000000000000000000000000 romp 00000000000111000100110000100111 union-management 00000000000000000000000000000000 801.6 00000000000000000000000000000000 Nymark 00100000000000000000000000000000 net-benefit 00000000000000000000000000000000 Jodi 00100000000000000000000000000000 Harvie 00100000000000000000000000000000 Viren 00100000000000000000000000000000 Isaly 00100000000000000000000000000000 bio-research 00000000000000000000000000000000 Grossner 00100000000000000000000000000000 fungi 00000000000000000000000000000000 flammable 00000000000000000000000000000000 preferred-dividend 00000000000000000000000000000000 over-allotments 00000000000000000000000000000000 stiffening 00000000000000000000000000000000 94.8 00000000000000000000000000000000 149.9 00000000000000000000000000000000 anti-cholesterol 00000000000000000000000000000000 Vasotec 00100000000000000000000000000000 Primaxin 00100000000000000000000000000000 Pepcid 00100000000000000000000000000000 anti-ulcer 00000000000000000000000000000000 311.8 00000000000000000000000000000000 171.4 00000000000000000000000000000000 87.7 00000000000000000000000000000000 sharp-rising 00000000000000000000000000000000 Capoten 00100000000000000000000000000000 Bristol-Meyers 01000000000000000000000000000000 ScheringPlough 01000000000000000000000000000000 94.4 00000000000000000000000000000000 Feldene 00100000000000000000000000000000 216.8 00000000000000000000000000000000 Butane 00100000000000000000000000000000 Xanax 00100000000000000000000000000000 tranquilizer 00000000000000000000000000000000 Halcion 00100000000000000000000000000000 sedative 00000000000000000000000000000000 tranquilizing 00000000000000000000000000000000 hair-growing 00000000000000000000000000000000 Rogaine 00100000001001111001110010100111 customs-clearance 00000000000000000000000000000000 47.2 00000000000000000000000000000000 botanical 00000000000000000000000000000000 memoir 00000000000000000000000000000000 Arrangements 00100000000111100100010000100111 peopled 00000000001010100001110000110010 eccentrics 00000000000000000000000000000000 oddballs 00000000000000000000000000000000 sexpot 00000000000000000000000000000000 hell-kitten 00000000000000000000000000000000 mediocrity 00000000000000000000000000000000 descents 00000000000000000000000000000000 13.3 00000000000000000000000000000000 glamorized 00000000000000000000000000000000 nonflammable 00000000000000000000000000000000 Snezak 00100000000000000000000000000000 hallways 00000000000000000000000000000000 Syrians 00100000000000000000000000000000 horde 00000000000000000000000000000000 friezes 00000000000000000000000000000000 Pompeii 00100000000000000000000000000000 discombobulation 00000000000000000000000000000000 inwardly 00000000000000000000000000000000 conjecture 00000000000000000000000000000000 human-generated 00000000000000000000000000000000 heathen 00000000000000000000000000000000 Sharp-witted 00100000000000000000000000000000 memorialist 00000000000000000000000000000000 Truman 00101111111000100110101010001000 Capote 00100000000000000000000000000000 bitchy 00000000000000000000000000000000 bark-nibbling 00000000000000000000000000000000 130.6 00000000000000000000000000000000 realigned 00000000000000000000000000000000 bedrooms 00000000000000000000000000000000 uncles 00000000000000000000000000000000 Gabe 00100000000000000000000000000000 rotten 00000000000000100111011010010000 rhymed 00000000000000000000000000000000 strangeness 00000000000000000000000000000000 baker 00001111111100100001001010001000 stratosphere 00000000000000000000000000000000 disliked 00000000000000000000000000000000 lugged 00000000000000000000000000000000 work-in-progress 00000000000000000000000000000000 Philosophy 00100000000110101011101001100111 delightfully 00000000000000000000000000000000 saucy 00000000000000000000000000000000 countervailing 00000000000001011000000000110000 flirtation 00000000000000000000000000000000 quaintly 00000000000000000000000000000000 out-of-synch 00000000000000000000000000000000 riffing 00000000000000000000000000000000 operas 00000000000100011111010101100011 drug-seeking 00000000000000000000000000000000 part-owner 00000000000000000000000000000000 21-square-mile 00000000000000000000000000000000 intercorporate 00000000000000000000000000000000 highest-ranking 00000000000000000000000000000000 saluted 00000000000000000000000000000000 comeuppance 00000000000111100011101110100111 48.125 00000000000000000000000000000000 personalize 00000000000000000000000000000000 sunburn 00000000000000000000000000000000 lopped 00000000000000000000000000000000 120.75 00000000000000000000000000000000 Trumped 00100000000000000000000000000000 once-desirable 00000000000000000000000000000000 Faith 00100000000111110010001110100111 earthlings 00000000000000000000000000000000 Garrick-Aug 01000000000000000000000000000000 VAX9000 01000000000000000000000000000000 11.56 00000000000000000000000000000000 Spear 00100000000111100110010000101000 plaguing 00000000000000000010010101000000 Avenues 00100000000111111011001110100011 foaming 00000000000000000000000000000000 up-and-coming 00000000000000000000000000000000 PCST 01000000000000000000000000000000 722 00000000000000000000000000000000 Risks 00100000000111101011011000100011 insulator 00000000000000000000000000000000 Precision 00100000000111010010101010110000 Castparts 00100000000000000000000000000000 PCP 01000000000000000000000000000000 castings 00000000000000000000000000000000 RBSPr 01000000000000000000000000000000 Telephones 00100000000111011110111001100011 Polyurethane 00100000000000000000000000000000 anniversaries 00000000000000000000000000000000 83-year-old 00000000000000000000000000000000 3.02 00000000000000000000000000000000 Thurgood 00100000000000000000000000000000 just-picked 00000000000000000000000000000000 80s 00000000000000000000000000000000 frustrations 00000000000110101100111101100011 eke 00000000000000000000000000000000 mid-1960s 00000000000000000000000000000000 shields 00001111111001101001000000001000 Gases 00100000000110010011011111001001 ruefully 00000000000000000000000000000000 revisits 00000000000000000000000000000000 dissenter 00000000000000000000000000000000 81-year-old 00000000000000000000000000000000 veterinarians 00000000000000000000000000000000 periodontal 00000000000000000000000000000000 impassioned 00000000000000000000000000000000 A.E. 01000000000000000000000000000000 clean-bank 00000000000000000000000000000000 Acquirers 00100000000111101001100000110011 Pitman-Moore 01000000000000000000000000000000 banishment 00000000000000000000000000000000 beached 00000000000000000000000000000000 whales 00000000000000000000000000000000 branch-by-branch 00000000000000000000000000000000 30.5 00000000000000000000000000000000 949 00000000000000000000000000000000 989 00000000000000000000000000000000 80-nation 00000000000000000000000000000000 soundings 00000000000000000000000000000000 UniHealth 01000000000000000000000000000000 Pricor 00100000000000000000000000000000 de-emphasize 00000000000000000000000000000000 mass-circulation 00000000000000000000000000000000 circulations 00000000000000000000000000000000 hyper-competitive 00000000000000000000000000000000 361.8 00000000000000000000000000000000 wean 00000000000000000000000000000000 tacky 00000000000000000000000000000000 Giveaways 00100000000000000000000000000000 Drexler 00100000000000000000000000000000 reliant 00000000000111100000100000110010 soars 00000000000000000000000000000000 punchy 00000000000000000000000000000000 hourlong 00000000000000000000000000000000 head-to-head 00000000000000000000000000000000 co-anchored 00000000000000000000000000000000 signatories 00000000000000000000000000000000 thin-walled 00000000000000000000000000000000 thick-walled 00000000000000000000000000000000 bulky 00000000000000000000000000000000 investigative-reporting 00000000000000000000000000000000 Headline 00100000000111010011111101100111 repositioning 00000000000000000000000000000000 channel-zapping 00000000000000000000000000000000 grazers 00000000000000000000000000000000 junkies 00000000000000000000000000000000 molded 00000000000000000000000000000000 Daybreak 00100000000000000000000000000000 Daywatch 00100000000000000000000000000000 Newsnight 00100000000000000000000000000000 more-distinctive 00000000000000000000000000000000 summer-holiday 00000000000000000000000000000000 world-affairs 00000000000000000000000000000000 differentiated 00000000000000000000000000000000 Crossfire 00100000000000000000000000000000 cable-television-equipped 00000000000000000000000000000000 Shaw-Crier 01000000000000000000000000000000 newcasts 00000000000000000000000000000000 two-time 00000000000000000000000000000000 Huntley-Brinkley 01000000000000000000000000000000 award-winning 00000000000000000000000000000000 branded 00000000001110010001101001000000 McCracken 01000000000000000000000000000000 MacNeil-Lehrer 01000000000000000000000000000000 NewsHour 01000000000000000000000000000000 indispensable 00000000000011100101001110010000 less-experienced 00000000000000000000000000000000 cable-TV-system 01000000000000000000000000000000 general-interest 00000000000000000000000000000000 long-format 00000000000000000000000000000000 Stengel 00100000000000000000000000000000 Herwick 00100000000000000000000000000000 Phosphate 00100000000000000000000000000000 Backs 00100000010100100111000000010010 Phosphates 00100000000000000000000000000000 Vihon 00100000000000000000000000000000 numbering 00000000000000000000000000000000 moot 00000000000010001011110110010000 dockets 00000000000000000000000000000000 McIntosh 01000000000000000000000000000000 appellate-court 00000000000000000000000000000000 asbestosis 00000000000000000000000000000000 prudential 00000000000111001001111000101000 Mil-Spec 01000000000000000000000000000000 Kurth 00100000000000000000000000000000 Rolm 00100000000000111100111100101000 booby 00000000000000000000000000000000 peremptory 00000000000000000000000000000000 SOUTH 01000000000010000010000110101000 AFRICA 01000000000101111101110101101000 FREED 01000001100011010100010000110010 brandishing 00000000000000000000000000000000 depots 00000000000000000000000000000000 vicitims 00000000000000000000000000000000 purge 00000000000111001101001010110111 anti-party 00000000000000000000000000000000 exploiters 00000000000000000000000000000000 student-led 00000000000000000000000000000000 Zaire 00100000000110110100111101101000 Mobutu 00100000000000000000000000000000 Angolan 00100000000110000101011000110000 Savimbi 00100000000000000000000000000000 Zairean 00100000000000000000000000000000 Baghdad 00100000000111100010101101101000 mediators 00000000000000000000000000000000 Texas-Louisiana 01000000000000000000000000000000 low-lying 00000000000000000000000000000000 subconscious 00000000000000000000000000000000 Sisk 00100000000000000000000000000000 R.B. 01000000000000000000000000000000 withholdings 00000000000000000000000000000000 grimmest 00000000000000000000000000000000 145.21 00000000000000000000000000000000 unquestionably 00000001111001000000001001110010 Dongen 00100000000000000000000000000000 Wholesaler-Distributors 01000000000000000000000000000000 omen 00000000000000000000000000000000 32.82 00000000000000000000000000000000 Producer 00100000000111101111000001110101 mesothelioma 00000000000000000000000000000000 485,000 00000000000000000000000000000000 watered 00000000110110101001001000110010 2,050-passenger 00000000000000000000000000000000 tradeable 00000000000000000000000000000000 participations 00000000000000000000000000000000 hounding 00000000000000000000000000000000 antsy 00000000000000000000000000000000 Branches 00100000000000000011000001100011 useless 00000000000110100111110110010000 cheeses 00000000000000000000000000000000 nibble 00000000000000000000000000000000 three-hour-show 00000000000000000000000000000000 Hime 00100000000000000000000000000000 Lawyer 00100000000111101111111110110101 Bet 00100000000111111110011010110111 invaders 00000000000000000000000000000000 cheesy 00000000000000000000000000000000 knock-offs 00000000000000000000000000000000 semi-celebrities 00000000000000000000000000000000 grammar-school 00000000000000000000000000000000 on-air 00000000000000000000000000000000 pretending 00000000000000000000000000000000 flatout 00000000000000000000000000000000 clamored 00000000000000000000000000000000 Cacao 00100000000000000000000000000000 showgirls 00000000000000000000000000000000 Topping 00100000000111101101001101000000 Gottschalk 00100000000000000000000000000000 slanted 00000000000000000000000000000000 frying 00000000000000000000000000000000 pancakes 00000000000000000000000000000000 protectionist 00000000000010010001000000010000 Mega-hits 00100000000000000000000000000000 pan-European 01000000000000000000000000000000 three-hour-long 00000000000000000000000000000000 Eurovision 00100000000000000000000000000000 Contest 00100000000111111111110010110111 soft-rock 00000000000000000000000000000000 Jeux 00100000000000000000000000000000 Sans 00100000000000000000000000000000 Frontieres 00100000000000000000000000000000 dart-throwing 00000000000000000000000000000000 snooker 00000000000000000000000000000000 marathons 00000000000000000000000000000000 knock-off 00000000000000000000000000000000 Chateauvallon 00100000000000000000000000000000 Schwarzwaldklinik 00100000000000000000000000000000 Piovra 00100000000000000000000000000000 Octopus 00100000000100100111100100100001 Palermo 00100000000000000000000000000000 mini-series 00000000000000000000000000000000 Juncal 00100000000000000000000000000000 bullfighter 00000000000000000000000000000000 Wenham 00100000000000000000000000000000 home-produced 00000000000000000000000000000000 tampers 00000000000000000000000000000000 cheap-to-make 00000000000000000000000000000000 expensive-to-produce 00000000000000000000000000000000 Australian-American 01000000000000000000000000000000 baffling 00000000000000000000000000000000 Reef 00100000000000000000000000000000 Skippy 00100000000000000000000000000000 Creator 00100000000101010111111000001111 Grishaw-Mueller 01000000000000000000000000000000 Colby 00100000000000000000000000000000 Carrington 00101111111101011000000101001000 Carlta 00100000000000000000000000000000 Vitzhum 00100000000000000000000000000000 Gillers 00100000000000000000000000000000 Eurodynamics 00100000000000000000000000000000 once-balkanized 00000000000000000000000000000000 Seltzer 00100000000000000000000000000000 Dowty 00100000000000000000000000000000 tight-fisted 00000000000000000000000000000000 Plessey 00100000000111101000111100101000 Messerschmitt-Boelkow 01000000000000000000000000000000 Blohm 00100000000110011011000001001000 Aerospatiale 00100000000000000000000000000000 Rapier 00100000000000000000000000000000 Computer-generated 00100000000000000000000000000000 Crotale 00100000000000000000000000000000 Canadian-dollar 00100000000000000000000000000000 Feick 00100000000000000000000000000000 Edmonton 00100000000110010011101001101000 fast-shrinking 00000000000000000000000000000000 integrated-steel 00000000000000000000000000000000 Ryerson 00100000000000000000000000000000 shipping-rate 00000000000000000000000000000000 intergrated-steel 00000000000000000000000000000000 steel-service-center 00000000000000000000000000000000 Predicting 00100000000111111110110101000000 75.50 00000000000000000000000000000000 reassurances 00000000000000000000000000000000 defies 00000000000000000000000000000000 typefaces 00000000000000000000000000000000 rebelled 00000000000000000000000000000000 Warnock 00100000000000000000000000000000 pre-tested 00000000000000000000000000000000 microchannel 00000000000000000000000000000000 Slick 00100000000110011000011010010000 Users 00100000000111100000010000110011 laggards 00000000000000000000000000000000 integrated-circuit 00000000000000000000000000000000 Semifinished 00100000000000000000000000000000 Ever-more 00100000000000000000000000000000 obsoleted 00000000000000000000000000000000 server 00000000000000000000000000000000 Drain 00100000000110100011001010110111 IOWA 01000000000111111111110001101000 MAKING 01000000000111111111111101000000 midwestern 00000000000000111101000100110000 bluish 00000000000000000000000000000000 Maintain 00100000000111110111111110110010 THANKS 01000000000111110101111000110010 noninstitutionalized 00000000000000000000000000000000 Careers 00100000000111101101011101100011 Count 00100000000111101100001000110111 Well-to-Do 01000000000000000000000000000000 MANY 01000000000001001001001011000000 AFFLUENT 01000000000001000110101000110000 discolored 00000000000000000000000000000000 Two-thirds 00100000000000000000000000000000 super-rich 00000000000000000000000000000000 775,000 00000000000000000000000000000000 twothirds 00000000000000000000000000000000 Thirty-five 00100000000000000000000000000000 NUMBER 01000000000111111111111010111111 Per-capita 00100000000000000000000000000000 divvied 00000000000000000000000000000000 16,489 00000000000000000000000000000000 15,472 00000000000000000000000000000000 11,116 00000000000000000000000000000000 23,059 00000000000000000000000000000000 rhymes 00000000000000000000000000000000 Willson 00100000000000000000000000000000 kindred 00000000000000000000000000000000 fanciest 00000000000000000000000000000000 market-research 00000000000000000000000000000000 Spruill 00100000000000000000000000000000 unjustly 00000000000000000000000000000000 Manske 00100000000000000000000000000000 Pocket 00100000000111100111010000000001 Billiards 00100000000000000000000000000000 suit-and-tie 00000000000000000000000000000000 rowdy 00000000000000000000000000000000 Introducing 00100000000011010011111101000000 Councilwoman 00100000000000000000000000000000 Reinker 00100000000000000000000000000000 Councilman 00100000000000100111011110110101 Haole 00100000000000000000000000000000 redone 00000000000000000000000000000000 37.3 00000000000000000000000000000000 tucking 00000000000000000000000000000000 brah 00000000000000000000000000000000 bruddah 00000000000000000000000000000000 Sorry 00100000000000101111110000110010 9:30-10 00000000000000000000000000000000 parted 00000000000000000000000000000000 deli 00000000000000000000000000000000 Borscht 00100000000000000000000000000000 instinctively 00000000000000000000000000000000 vernacular 00000000000000000000000000000000 shvartze 00000000000000000000000000000000 mustache 00000000000111100100010010110101 inward 00000000000000011011111100110010 outward 00000000001000010011001100100111 underdog 00000000000000000000000000000000 minstrel 00000000000000000000000000000000 underemployed 00000000000000000000000000000000 gentile 00000000000000000000000000000000 zealot 00000000000000000000000000000000 blade 00000000000010101100001000100001 Pre-trial 00100000000000000000000000000000 prattle 00000000000000000000000000000000 co-existence 00000000000000000000000000000000 intolerance 00000000000000000000000000000000 high-performing 00000000000000000000000000000000 passe 00000000000000000000000000000000 genre 00000000000111101100111101100111 Creations 00100000000110001101111101100011 Bostonians 00100000000000000000000000000000 shoe-horn 00000000000000000000000000000000 Redgrave 00100000000000000000000000000000 Karin 00100000000000000000000000000000 Maggart 00100000000000000000000000000000 disapproving 00000000000000000000000000000000 accents 00000000000000000000000000000000 Abie 00100000000000000000000000000000 assimilated 00000000000000000000000000000000 plagiarism 00000000000000010111100010100111 Birney 00101111111111110001110001001000 bubbles 00000000000000000000000000000000 didactic 00000000000000000000000000000000 Lear 00101111111110000010010000001000 enlighten 00000000000000000000000000000000 overplanted 00000000000000000000000000000000 incompatibility 00000000000000000000000000000000 preachiness 00000000000000000000000000000000 standup 00000000000000000000000000000000 meting 00000000000000000000000000000000 routines 00000000000000000000000000000000 trade-ethnic 00000000000000000000000000000000 Catholic-Jewish 01000000000000000000000000000000 Carmelite 00100000000000000000000000000000 Auschwitz 00100000000000000000000000000000 interrupt 00000000000110001011111110110010 shtik 00000000000000000000000000000000 shmaltzy 00000000000000000000000000000000 60-year 00000000000000000000000000000000 economy... 00000000000000000000000000000000 indices 00000000000000000000000000000000 country... 00000000000000000000000000000000 Amperex 00100000000000000000000000000000 Markrud 00100000000000000000000000000000 87-7 00000000000000000000000000000000 trimmer 00000000000000000000000000000000 acquiesce 00000000000000000000000000000000 objectively 00000010010000000000010001110010 soon-to-expire 00000000000000000000000000000000 chillingly 00000000000000000000000000000000 physician-reimbursement 00000000000000000000000000000000 completed-contract 00000000000000000000000000000000 Prevent 00100000000011110111111110110010 uninitiated 00000000000000000000000000000000 Curb 00100000000111100010111110110010 Raise 00100000000110111111001110110010 Forecasting 00100000000000001000110001000000 Aromatiques 00100000000000000000000000000000 Elkins 00100000000000000000000000000000 Withhold 00100000001111001111101110110010 semimonthly 00000000000000000000000000000000 Restrict 00100000000001011010111110110010 air-passenger 00000000000000000000000000000000 3-a-person 00000000000000000000000000000000 Removal 00100000000111111111111101001111 pre-try 00000000000000000000000000000000 airline-landing 00000000000000000000000000000000 Airports 00100000000111101111010001100011 semi-liquefied 00000000000000000000000000000000 Increases 00100000000111101111101010000011 Direction 00100000000111111011001001100111 Patterns 00100000000100000001111100100011 captioned 00000000000000000000000000000000 Reva 00100000000000000000000000000000 BULL 01000000000111111110111110110000 shoring 00000000000000000000000000000000 INFORMATION 01000000000110001011100010111001 low-grade 00000000000000000000000000000000 Ba-2 00100000000000000000000000000000 L.F. 01000000000000000000000000000000 obey 00000000001010111111110110110010 2450 00000000000000000000000000000000 Sort 00100000000111111111110110111111 headcount-control 00000000000000000000000000000000 Swaine 00101111111111010111101001001000 clocked 00000000000000000000000000000000 Cravath 00100000000111100011110000101000 manifestation 00000000000111110101001000111111 recurrent 00000000000110110001000000010000 Valais 00100000000000000000000000000000 Thirties 00100000000111101100110000010111 nibbling 00000000000000000000000000000000 pricked 00000000000000000000000000000000 Woodside 00100000000000000000000000000000 elucidative 00000000000000000000000000000000 C-Span 01000000000000000000000000000000 heaping 00000000000000000000000000000000 loaves 00000000000000000000000000000000 bilious 00000000000000000000000000000000 court... 00000000000000000000000000000000 Absolute 00100000000000001101010100010000 criterion 00000000000000010010011000100001 doth 00000000000000000000000000000000 demographically 00000000000000000000000000000000 34.625 00000000000000000000000000000000 trust.. 00000000000000000000000000000000 quasi-parliamentary 00000000000000000000000000000000 incompetency 00000000000000000000000000000000 Tail 00100000000010101010111000000001 Gunner 00100000000000000000000000000000 Weber 00101111110100100000000010001000 Renewed 00100000000000010101010001000000 precludes 00000000000010110001000000010010 Palmingiano 00100000000000000000000000000000 308 00000000000000000000000000000000 retry 00000000000000000000000000000000 unconstitutionally 00000000000000000000000000000000 concur 00000000000000000000000000000000 Drawing 00100000000101001110100001000000 Spalsbury 00100000000000000000000000000000 Estes 00100000000000000000000000000000 triskaidekaphobia 00000000000000000000000000000000 10-2 00000000000000000000000000000000 Ricardo 00100000000000000000000000000000 spanned 00000000000000000000000000000000 1962-85 00000000000000000000000000000000 jinxed 00000000000000000000000000000000 unlucky 00000000000000000000000000000000 you-know-what 00000000000000000000000000000000 1940-1987 00000000000000000000000000000000 delicious 00000000000000000000000000000000 cradle 00000000000111010001100101100111 14.90 00000000000000000000000000000000 467.29 00000000000000000000000000000000 16.18 00000000000000000000000000000000 46.12-point 00000000000000000000000000000000 167.7 00000000000000000000000000000000 single-day 00000000000000000000000000000000 college-educated 00000000000000000000000000000000 thrived 00000000000000000000000000000000 fundamantalist 00000000000000000000000000000000 bargain-hunt 00000000000000000000000000000000 449.33 00000000000000000000000000000000 9.31 00000000000000000000000000000000 462.98 00000000000000000000000000000000 Methodists 00100000000000000000000000000000 27.50-a-share 00000000000000000000000000000000 8.11 00000000000000000000000000000000 8.37 00000000000000000000000000000000 9.91 00000000000000000000000000000000 scooping 00000000000000000000000000000000 Rightly 00100010001001000001001001110010 daunted 00000000000000000000000000000000 752 00000000000000000000000000000000 27.97 00000000000000000000000000000000 discerns 00000000000000000000000000000000 re-emergence 00000000000000000000000000000000 overlaid 00000000000000000000000000000000 severest 00000000000000000000000000000000 Presbyterians 00100000000000000000000000000000 mortis 00000000000000000000000000000000 16-year-olds 00000000000000000000000000000000 701 00000000000000000000000000000000 urinary 00000000000000000000000000000000 Episcopalians 00100000000000000000000000000000 1872 00000000000000000000000000000000 Kaufhaus 00100000000000000000000000000000 management-controlled 00000000000000000000000000000000 vote-diluting 00000000000000000000000000000000 Koninklijke 00100000000000000000000000000000 hatred 00000000001100011110011010100111 Politicians 00100000000110111100111000110011 singly 00000000000000000000000000000000 semi-public 00000000000000000000000000000000 mum 00000000000000000000000000000000 eerily 00000000000000000000000000000000 gimmick-ridden 00000000000000000000000000000000 repetition 00000000000000000000000000000000 be-that 00000000000000000000000000000000 maneuverings 00000000000000000000000000000000 adminstration 00000000000000000000000000000000 reconciling 00000000000000000000000000000000 left-leaning 00000000000000000000000000000000 B&H 01000000000000000000000000000000 CSS 01000000000000000000000000000000 Knowledgeware 00100000000000000000000000000000 1990A 01000000000000000000000000000000 55,730,000 00000000000000000000000000000000 68,230,000 00000000000000000000000000000000 36.23 00000000000000000000000000000000 Facility 00100000000111101111011010001001 Dawkins 00100000000000000000000000000000 Strand 00100000000000000000000000000000 Yost 00100000000000000000000000000000 anti-war-related 00000000000000000000000000000000 78-year-old 00000000000000000000000000000000 Ashwood 00100000000000000000000000000000 Regency 00100000001101101001000100101000 Showalter 00100000000000000000000000000000 calmly 00000000000000000000000000000000 Discount 00100000000111110010010011000111 Scwhab 00100000000000000000000000000000 Helfman 00100000000000000000000000000000 multi-million 00000000000000000000000000000000 TC 01000000000000000000000000000000 Maserati 00100000000000000000000000000000 gloaters 00000000000000000000000000000000 Berrigan 00100000000000000000000000000000 bitten 00000000000000000000000000000000 clipboard-sized 00000000000000000000000000000000 consorting 00000000000000000000000000000000 Sophisticated 00100000000100000001010010010000 munchkin 00000000000000000000000000000000 skimp 00000000000000000000000000000000 briefcases 00000000000000000000000000000000 scolded 00000000000000000000000000000000 misleadingly 00000000000000000000000000000000 ambitiously 00000000000000000000000000000000 Palmtops 00100000000000000000000000000000 AA 01000000000000000000000000000000 chaps 00000000000000000000000000000000 palmtop 00000000000000000000000000000000 Grail 00100000000000000000000000000000 Laptops 00100000000010101000111001100011 Amitai 00100000000000000000000000000000 Purdy 00101111111001101101000100001000 gadget 00000000000000000000000000000000 opening-hour 00000000000000000000000000000000 inevitability 00000000000000000000000000000000 center-stage 00000000000000000000000000000000 test-tube 00000000000000000000000000000000 Canion 00100000000000000000000000000000 MinisPort 01000000000000000000000000000000 two-inch 00000000000000000000000000000000 floppies 00000000000000000000000000000000 uncombed 00000000000000000000000000000000 Talsky 00100000000000000000000000000000 Lempesis 00100000000000000000000000000000 DataQuest 01000000000111011101101000101000 modem 00000000000000000000000000000000 T-1000 00100000000000000000000000000000 T-1600 00100000000000000000000000000000 69.7 00000000000000000000000000000000 purges 00000000000000000000000000000000 46.7 00000000000000000000000000000000 electronic-warfare 00000000000000000000000000000000 Avco 00100000000000000000000000000000 90.1 00000000000000000000000000000000 Plunge 00100000000111111010101100110111 Twenty-four 00100000000000000000000000000000 unmasks 00000000000000000000000000000000 Angry 00100000000010011010110100010000 5.625 00000000000000000000000000000000 Navistar 00100000000100110011010100101000 braved 00000000000000000000000000000000 14.125 00000000000000000000000000000000 ended... 00000000000000000000000000000000 Finnie 00100000000000000000000000000000 action-adventure 00000000000000000000000000000000 Nightwatch 00100000000000000000000000000000 fractioning 00000000000000000000000000000000 Arsenio 00100000000000000000000000000000 Appleseed 00100000000000000000000000000000 383.9 00000000000000000000000000000000 memorialized 00000000000000000000000000000000 ubiquity 00000000000000000000000000000000 savored 00000000000000000000000000000000 configurations 00000000000000000000000000000000 siphon 00000000000000000000000000000000 irrepressible 00000000000000000000000000000000 strangely 00000000000000000000000000000000 one-person 00000000000000000000000000000000 Akers 00101111111000111010000010001000 Sharply 00100000000011101000010001110010 sustenance 00000000000000000000000000000000 8.820 00000000000000000000000000000000 anti-nausea 00000000000000000000000000000000 retrench 00000000000000000000000000000000 debt... 00000000000000000000000000000000 reigniting 00000000000000000000000000000000 go-around 00000000000000000000000000000000 skidding 00000000000000000000000000000000 Bogner 00100000000000000000000000000000 NSA 01000000000000000000000000000000 pigments 00000000000000000000000000000000 Ravitz 00100000000000000000000000000000 107.8 00000000000000000000000000000000 Centel 00100000000111110101111100101000 99.943 00000000000000000000000000000000 9.008 00000000000000000000000000000000 8.78 00000000000000000000000000000000 product-liability 00000000000000000000000000000000 afoot 00000000000000000000000000000000 PSA 01000000000000000000000000000000 10.72 00000000000000000000000000000000 1,350,000 00000000000000000000000000000000 Two-Way 01000000000000000000000000000000 C.E. 01000000000000000000000000000000 bedding 00000000000000000000000000000000 cohorts 00000000000000000000000000000000 D.s 00101111111011011011001100001000 slickly 00000000000000000000000000000000 Turned 00100000000111001001001000110010 blabs 00000000000000000000000000000000 perfidious 00000000000000000000000000000000 innocently 00000000000000000000000000000000 loutish 00000000000000000000000000000000 kelp 00000000000000000000000000000000 hurries 00000000000000000000000000000000 conspicuously 00000001001001000001001001110010 canary-colored 00000000000000000000000000000000 Porsche 00100000000111011101111100101000 beat-up 00000000000000000000000000000000 pliers 00000000000000000000000000000000 ignition 00000000000000000000000000000000 Twenty-one 00100000000000000000000000000000 anomalies 00000000000000000000000000000000 graphic 00000000000000110010101010110000 Thatcherian 00100000000000000000000000000000 Yuppily 00100000000000000000000000000000 palatable 00000000000011001011001110010000 inflates 00000000000000000000000000000000 pony-tailed 00000000000000000000000000000000 laundromat 00000000000000000000000000000000 punky 00000000000000000000000000000000 dupes 00000000000000000000000000000000 piranha 00000000000000000000000000000000 Dieppe 00100000000000000000000000000000 inconsiderable 00000000000000000000000000000000 quid 00000000000000000000000000000000 volley 00000000000000000000000000000000 flog 00000000000000000000000000000000 Yank-oriented 00100000000000000000000000000000 automotive-parts 00000000000000000000000000000000 discreetly 00000000000000000000000000000000 antecedents 00000000000000000000000000000000 white-coated 00000000000000000000000000000000 trading-room 00000000000000000000000000000000 minded 00000000000101100111000010010000 resemblances 00000000000000000000000000000000 Joanna 00100000000000000000000000000000 Kanska 00100000000000000000000000000000 Conreid 00100000000000000000000000000000 Hodge 00100000000000000000000000000000 Farentino 00100000000000000000000000000000 Rolf 00100000000000000000000000000000 Saxon 00101111111011011011001000001000 Noonan 00100000000000000000000000000000 Dorian 00100000000000000000000000000000 Healy 00101111111111111100110010001000 Akerfeldt 00100000000000000000000000000000 blank-faced 00000000000000000000000000000000 backflips 00000000000000000000000000000000 explodes 00000000000000000000000000000000 microchips 00000000000100001010111001100011 non-insurance 00000000000000000000000000000000 20.71 00000000000000000000000000000000 propsed 00000000000000000000000000000000 very-highly 00000000000000000000000000000000 Dismal 00100000000001010011100000010000 160,510 00000000000000000000000000000000 Domestically 00100000000000111111111001100011 86,555 00000000000000000000000000000000 Wink 00100000000000000000000000000000 fledging 00000000000000000000000000000000 month-end 00000000000000000000000000000000 19-year-olds 00000000000000000000000000000000 rocket-propulsion 00000000000000000000000000000000 Borten 00100000000000000000000000000000 electro-optics 00000000000000000000000000000000 Szabad 00100000000000000000000000000000 Barnabas 00100000000000000000000000000000 Bueky 00100000000000000000000000000000 Mayland 00100000000000000000000000000000 computer-science 00000000000000000000000000000000 stripe 00000000000000000000000000000000 Newsstands 00100000000000000000000000000000 livelier 00000000000000000000000000000000 tongues 00000000000000000000000000000000 Belorussian 00100000000000000000000000000000 Kazakh 00100000000000000000000000000000 Kirghiz 00100000000000000000000000000000 rename 00000000000000000000000000000000 Geza 00100000000000000000000000000000 Szocs 00100000000000000000000000000000 frequencies 00000000000000000000000000000000 messengers 00000000000111011101010101100011 Nagykanizsa 00100000000000000000000000000000 Nyiregyhaza 00100000000000000000000000000000 40-minute 00000000000000000000000000000000 Newsreel 00100000000000000000000000000000 35-minute 00000000000000000000000000000000 lighthearted 00000000000000000000000000000000 intersperses 00000000000000000000000000000000 Proposals 00100000000111101110101000100011 government-operated 00000000000000000000000000000000 influenza 00000000000000000000000000000000 flare 00000000000111110010011000110111 politic 00000000000000000000000000000000 mutate 00000000000000000000000000000000 afflict 00000000000000000000000000000000 aspersion 00000000000000000000000000000000 smallpox 00000000000000000000000000000000 Granny 00100000000000000000000000000000 inferred 00000000000000000000000000000000 evokes 00000000000000000000000000000000 wastrel 00000000000000000000000000000000 self-discipline 00000000000000000000000000000000 curing 00000000000000000000000000000000 second-by-second 00000000000000000000000000000000 squiggly 00000000000000000000000000000000 emptying 00000000000000000000000000000000 bedpans 00000000000000000000000000000000 tutoring 00000000000000000000000000000000 librarians 00000000000000000000000000000000 voucher 00000000000000000000000000000000 Mind 00100000000111111110110101010111 unskilled 00000000001010001000101000110000 18-year-olds 00000000000000000000000000000000 devotees 00000000000000000000000000000000 Opposition 00100000000111101011001100100111 military-service 00000000000000000000000000000000 stove 00000000000000000000000000000000 expansionism 00000000000000000000000000000000 nouvelle 00000000000000000000000000000000 leftovers 00000000000000000000000000000000 work-study 00000000000000000000000000000000 palate 00000000000000000000000000000000 engorgement 00000000000000000000000000000000 VISTA 01000000000111101101010100101000 Volunteer 00100000000000000000100110110111 Grandparent 00100000000000000000000000000000 Companion 00100000000000010011110000000001 spoil 00000000000000000000000000000000 broth 00000000000000000000000000000000 unwholesome 00000000000000000000000000000000 glop 00000000000000000000000000000000 scholarships 00000000010110100111110101100011 Tymnet 00100000000000000000000000000000 menial 00000000000000000000000000000000 labor-saving 00000000000000000000000000000000 overpay 00000000000000000000000000000000 exert 00000000001111101111101110110010 generalized 00000000000000000000000000000000 ill-disposed 00000000000000000000000000000000 endow 00000000000000000000000000000000 Points 00100000000000000000000001011011 exhort 00000000000000000000000000000000 volunteerism 00000000000000000000000000000000 knee-socked 00000000000000000000000000000000 progenitors 00000000000000000000000000000000 dissected 00000000000000000000000000000000 Slovakia 00100000000000000000000000000000 Bedminster 00100000000000000000000000000000 prerequisite 00000000000000000000000000000000 McCurdy 01000000011101010000111010001000 cyanide-laced 00000000000000000000000000000000 Mikulski 00100000000000000000000000000000 Entering 00100000000101011111111101000000 YES 01000000000111110011111011101000 flinch 00000000000000000000000000000000 re-energized 00000000000000000000000000000000 abomination 00000000000000000000000000000000 Elements 00100000000111100111100100101111 regimentation 00000000001001011110011010100111 compulsory 00000000000000101101000000010000 Part-time 00100000000000000000000000000000 management-labor 00000000000000000000000000000000 barracks 00000000000111111111101010001001 Middle-class 00100000000000000000000000000000 cross-section 00000000000000000000000000000000 Encouragement 00100000000110010111110100100111 compulsion 00000000000000000000000000000000 Compelled 00100000000000011100011000110010 unenforceable 00000000000000000000000000000000 refusers 00000000000000000000000000000000 volunteering 00000000000101010111000001000000 tutored 00000000000000000000000000000000 stipends 00000000000000000000000000000000 Full-time 00100000000000000000000000000000 Non-residential 00100000000000000000000000000000 Evaluations 00100000000011110010001000100011 challengeable 00000000000000000000000000000000 unprecedentedly 00000000000000000000000000000000 behaviors 00000000000000000000000000000000 reoriented 00000000000000000000000000000000 dune-grass 00000000000000000000000000000000 Strictly 00100000000101011000000001110010 incurring 00000000000001100100100101000000 Mean 00100000000111101000100110110010 undertones 00000000000000000000000000000000 portrayals 00000000000000000000000000000000 reticence 00000000000000000000000000000000 Massive 00100000000000001000100000010000 631,163 00000000000000000000000000000000 render 00000000000111011011101110110010 g-10.06.89 00000000000000000000000000000000 NAV:22.15 01000000000000000000000000000000 z-Not 01000000000000000000000000000000 breaths 00000000000000000000000000000000 Resist 00100000000011010011111110110010 massacres 00000000000000000000000000000000 pat 00001111111001010110010000011000 closedown 00000000000000000000000000000000 learns 00000000000111010100110111000010 rekindled 00000000100000100111010000110010 Aubrey 00101111111100101111110110011000 Lanston 00100000000000000000000000000000 put-option 00000000000000000000000000000000 praiseworthy 00000000000000000000000000000000 European-American 01000000000000000000000000000000 fork 00000000000000000000000000000000 Malek 00100000000000000000000000000000 Ubberroth 00100000000000000000000000000000 cross-market 00000000000000000000000000000000 CDT 01000000000000000000000000000000 2:45 00000000000000000000000000000000 Sidecar 00100000000000000000000000000000 well-drilled 00000000000000000000000000000000 then-biggest 00000000000000000000000000000000 remake 00000001101100111111110110110010 Sporkin 00100000000000000000000000000000 barnacles 00000000000000000000000000000000 Arguing 00100000000111111011111010000010 marketplaces 00000000000000000000000000000000 super-regulator 00000000000000000000000000000000 unify 00000000000111100100111110110010 sops 00000000011001101100110000110010 interventionists 00000000000000000000000000000000 Establish 00100000000111011111101110110010 Unify 00100000000111100100111110110010 trade-clearing 00000000000000000000000000000000 risk-taking 00000000000000000000000000000000 Transfer 00100000000111010111110110110010 stock-related 00000000000000000000000000000000 Opposed 00100000000111111000110000110010 Create 00100000000110111111101110110010 counterespionage 00000000000000000000000000000000 DIED 01000000000110111110001000110010 Fas-antigen 00100000000000000000000000000000 deadlock 00000000000110110110110000100111 pinball-parlor 00000000000000000000000000000000 Japanese-style 00100000000000000000000000000000 infiltrated 00000001101101000101010000110010 Tsuruo 00100000000000000000000000000000 U.N.-sponsored 01000000000000000000000000000000 parakeets 00000000000000000000000000000000 orchids 00000000000000000000000000000000 Lyster 00100000000000000000000000000000 frigate 00000000000111101001011001000101 affinity 00000000000000000000000000000000 high-interest-rate 00000000000000000000000000000000 Co-operative 00100000000000000000000000000000 harnessing 00000000000000000000000000000000 non-staple 00000000000000000000000000000000 yuan 00000000000000000011100000001011 priests 00000000000110101000100000110011 400th 00000000000000000000000000000000 patriarchate 00000000000000000000000000000000 15th-century 00000000000000000000000000000000 Uspensky 00100000000000000000000000000000 crowned 00000000000000000000000000000000 34-foot-tall 00000000000000000000000000000000 Buddha 00100000000000000000000000000000 Sik 00100000000000000000000000000000 Wan 00100000000000000000000000000000 Po 00100000000000010011001011000000 Monastery 00100000000000000000000000000000 frustrate 00000000001111100111111110110010 preschool 00000000000000000000000000000000 Replied 00100000000111101010010111000010 underselling 00000000000000000000000000000000 wrathful 00000000000000000000000000000000 undersold 00000000000000000000000000000000 keychain 00000000000000000000000000000000 non-defense 00000000000000000000000000000000 Rubik 00100000000000000000000000000000 Cube 00100000000000000000000000000000 grind 00000000001010011110010110110010 Capetronic 00100000000000000000000000000000 teddy 00000000000010100000001000011000 brightly 00000000000000000000000000000000 fire-engine 00000000000000000000000000000000 fairs 00000000000000000000000000000000 Recalls 00100000000111111111011111000010 skirmished 00000000000000000000000000000000 strong-arm 00000000000000000000000000000000 debilitating 00000000001101011101000000010000 Tenney 00100000000000000000000000000000 U.S.-grown 01000000000000000000000000000000 34,602 00000000000000000000000000000000 Exeter 00100000000000000000000000000000 AIDS-research 01000000000000000000000000000000 156.82 00000000000000000000000000000000 9.69 00000000000000000000000000000000 pecks 00000000000000000000000000000000 neoprene 00000000000000000000000000000000 zillion 00000000000000000000000000000000 Clarendon 00100000000000000000000000000000 1,234,100 00000000000000000000000000000000 Wollaeger 00100000000000000000000000000000 toy-making 00000000000000000000000000000000 10-store 00000000000000000000000000000000 creditworthiness 00000000000000000000000000000000 23.57 00000000000000000000000000000000 Statements 00100000000110101101101000100011 arousing 00000000000000000000000000000000 connector 00000000000000000000000000000000 Miyata 00100000000000000000000000000000 vicissitudes 00000000000111000111011000001111 Varese 00100000000000000000000000000000 pawing 00000000000000000000000000000000 T-37 00100000000000000000000000000000 T34C 01000000000000000000000000000000 MB-339 01000000000000000000000000000000 tandem-trainer 00000000000000000000000000000000 tandem-seat 00000000000000000000000000000000 19-day 00000000000000000000000000000000 metalworkers 00000000000000000000000000000000 Frenchman 00100000000000000000000000000000 job-rating 00000000000000000000000000000000 stoke 00000000000000000000000000000000 Simultaneously 00100001001000000000010001110010 pervaded 00000000000000000000000000000000 7-11 00000000000000000000000000000000 Bloomingdales 00100000000000000000000000000000 cures 00000000000000000000000000000000 Penniman 00100000000000000000000000000000 Crisanti 00100000000000000000000000000000 Maffei 00100000000000000000000000000000 Abbett 00100000000000000000000000000000 creamed 00000000000000000000000000000000 well-structured 00000000000000000000000000000000 'What 01000000000000000000000000000000 law. 00000000000000000000000000000000 readjustment 00000000000000000000000000000000 speculative-grade 00000000000000000000000000000000 eying 00000000000000000000000000000000 8,500,000 00000000000000000000000000000000 higher-quality 00000000000000000000000000000000 Lowenstein 00100000000000000000000000000000 gobbled 00000000000000000000000000000000 ticker 00000000000000000000000000000000 impacted 00000000000000000000000000000000 one-by-one 00000000000000000000000000000000 trickery 00000000000000000000000000000000 fogged 00000000000000000000000000000000 smokescreens 00000000000000000000000000000000 anti-airline 00000000000000000000000000000000 Congratulations 00100000000000000000000000000000 existance 00000000000000000000000000000000 thankfully 00000000000000000000000000000000 binges 00000000000000000000000000000000 liaison 00000000000110010110110000100111 underpriced 00000000000010011101101001000000 foreign-loan 00000000000000000000000000000000 60.4 00000000000000000000000000000000 misadventure 00000000000000000000000000000000 pseudosocialism 00000000000000000000000000000000 conservative-communist 00000000000000000000000000000000 --/-- 00000000000000000000000000000000 carcass 00000000000000000000000000000000 post-electoral 00000000000000000000000000000000 hagglings 00000000000000000000000000000000 miscegenation 00000000000000000000000000000000 Constantine 00100000000000000000000000000000 car-development 00000000000000000000000000000000 quaint 00000000000001100011011010010000 pro-Soviet 01000000000000000000000000000000 Euro-Communist 01000000000000000000000000000000 Hellenic 00100000000000000000000000000000 precursor 00000000000000000000000000000000 ostensible 00000000000000000000000000000000 mop-up 00000000000000000000000000000000 catharsis 00000000000000000000000000000000 parte 00000000000000000000000000000000 long-bubbling 00000000000000000000000000000000 bank-looting 00000000000000000000000000000000 accuser 00000000000000000000000000000000 self-confessed 00000000000000000000000000000000 embezzler 00000000000000000000000000000000 residing 00000000000000000000000000000000 forthright 00000000000110010101000010010000 734,000 00000000000000000000000000000000 eluding 00000000000000000000000000000000 drachmas 00000000000000000000000000000000 circumstantial 00000000000000000000000000000000 clinching 00000000000000000000000000000000 EYP 01000000000000000000000000000000 OKing 01000000000000000000000000000000 U.S.based 01000000000000000000000000000000 chums 00000000000000000000000000000000 unwittingly 00000000000000000000000000000000 platter 00000000000110110001100101100111 traipse 00000000000000000000000000000000 jinks 00000000000000000000000000000000 ousting 00000000000000000000000000000000 thwarting 00000000000101000111111101000000 well-respected 00000000000000000000000000000000 scandal-stench 00000000000000000000000000000000 seals 00000000000111001111010101100011 harshest 00000000000000000000000000000000 Crucial 00100000000000111000011000010000 Mohammed 00100000000000000011000010011000 auto-sales 00000000000000000000000000000000 wild-eyed 00000000000000000000000000000000 lash-up 00000000000000000000000000000000 hamstring 00000000000000000000000000000000 conservative-led 00000000000000000000000000000000 glaringly 00000000000000000000000000000000 clarity 00000000000111100011100000100001 rectification 00000000000000000000000000000000 slingers 00000000000000000000000000000000 raked 00000000000000000000000000000000 MOVED 01000000000111001111001000110010 mapped 00000000000000000000000000000000 Prospects 00100000000111111111111100111001 management-pilot 00000000000000000000000000000000 Gruber 00100000000000000000000000000000 251,170,000 00000000000000000000000000000000 1406.29 00000000000000000000000000000000 78.06 00000000000000000000000000000000 211.96 00000000000000000000000000000000 7.29 00000000000000000000000000000000 3421.29 00000000000000000000000000000000 129.87 00000000000000000000000000000000 129.25 00000000000000000000000000000000 1.8740 00000000000000000000000000000000 0.0343 00000000000000000000000000000000 concurrently 00000000000000000000000000000000 63.50 00000000000000000000000000000000 17.37 00000000000000000000000000000000 counterbalanced 00000000000000000000000000000000 pertains 00000000000000000000000000000000 long-troubled 00000000000000000000000000000000 Grannon 00100000000000000000000000000000 Chimicles 00100000000000000000000000000000 Milberg 00100000000000000000000000000000 Bershad 00100000000000000000000000000000 Specthrie 00100000000000000000000000000000 Lerach 00100000000000000000000000000000 ORDERED 01000001000011000101010000110010 once-promising 00000000000000000000000000000000 trebled 00000000000000000000000000000000 125,849 00000000000000000000000000000000 1,500,000 00000000000000000000000000000000 Finley 00101111111011100111110000101000 Kumble 00101111111100001101101001001000 Wagner 00101111111111111010111000001000 Underberg 00100000000000000000000000000000 Pappas 00100000000000000000000000000000 260,000 00000000000000000000000000000000 Shepard 00100000000000000000000000000000 requisition 00000000000000000000000000000000 HOUSTON-CALGARY 01000000000000000000000000000000 ALLIANCE 01000000000111101011011001100111 precocious 00000000000000000000000000000000 assembly-line 00000000000000000000000000000000 energy-industry 00000000000000000000000000000000 fair-trade-related 00000000000000000000000000000000 585-lawyer 00000000000000000000000000000000 80-lawyer 00000000000000000000000000000000 Saville 00100000000000000000000000000000 SIGNAL 01000000000111100111011010110111 retardant 00000000000000000000000000000000 COUNSEL 01000000000000001110001000110101 JOINS 01000001000001100011000000010010 Entrepreneurs 00100000000110001000111000110011 500-lawyer 00000000000000000000000000000000 Foerster 00100000000000000000000000000000 mass-media 00000000000000000000000000000000 RICHARD 01001111111000000010100110011000 MAGURNO 01000000000000000000000000000000 bogging 00000000000000000000000000000000 200-lawyer 00000000000000000000000000000000 31. 00000000000000000000000000000000 holiday-season 00000000000000000000000000000000 IIGS 01000000000000000000000000000000 expectant 00000000000000000000000000000000 million-mark 00000000000000000000000000000000 74.9 00000000000000000000000000000000 25.1 00000000000000000000000000000000 buster 00000000000000000000000000000000 Eating 00100000000011001110100001000000 service-oriented 00000000000000000000000000000000 839 00000000000000000000000000000000 irregular 00000000000000000000000000000000 8.734 00000000000000000000000000000000 9.934 00000000000000000000000000000000 18.819 00000000000000000000000000000000 780,000 00000000000000000000000000000000 Telemedia 00100000000000000000000000000000 milion 00000000000000000000000000000000 230.5 00000000000000000000000000000000 190.4 00000000000000000000000000000000 413,000 00000000000000000000000000000000 billet 00000000111101100100000000001000 coasts 00000000000000000011000010101000 order-taker 00000000000000000000000000000000 100-year-old 00000000000000000000000000000000 red-tipped 00000000000000000000000000000000 fencing 00000000000000000000000000000000 barbed 00000000000000000000000000000000 Interlake 00100000000000000000000000000000 Donaldsonville 00100000000000000000000000000000 mothballing 00000000000000000000000000000000 75-cent 00000000000000000000000000000000 laminated 00000000000000000000000000000000 human-sounding 00000000000000000000000000000000 15-second 00000000000000000000000000000000 per-ad 00000000000000000000000000000000 tone-generating 00000000000000000000000000000000 bank-credit 00000000000000000000000000000000 mealy 00000000000000000000000000000000 non-Mexican 01000000000000000000000000000000 577 00000000000000000000000000000000 604 00000000000000000000000000000000 mega-mergers 00000000000000000000000000000000 Suitors 00100000000111101100111001110011 expansion-minded 00000000000000000000000000000000 debt-happy 00000000000000000000000000000000 InterMedia 01000000000000000000000000000000 Berland 00100000000000000000000000000000 observatory 00000000000000000000000000000000 weeked 00000000000000000000000000000000 commerical 00000000000000000000000000000000 Vitro-Anchor 01000000000000000000000000000000 well-financed 00000000000000000000000000000000 Tomilson 00100000000000000000000000000000 junkbond-financed 00000000000000000000000000000000 27-a-share 00000000000000000000000000000000 Vernitron 00100000000000000000000000000000 worst-hit 00000000000000000000000000000000 Century-Fox 01000000000000000000000000000000 Twentieth 00100000000111111101111100001000 junkbond 00000000000000000000000000000000 waking 00000000010100000110100001000000 Vantage 00100000000001010011001100100111 counter-cyclical 00000000000000000000000000000000 see-through 00000000000000000000000000000000 Keck 00100000000000000000000000000000 42,000 00000000000000000000000000000000 self-fulfilling 00000000000000000000000000000000 prophecy 00000000000000000000000000000000 beltway 00000000000111101001100011010000 Vacancy 00100000000000011000010011000111 mid-20 00000000000000000000000000000000 flattening 00000000000000000000000000000000 Leinberger 00100000000000000000000000000000 athletic-shoe 00000000000000000000000000000000 powerboat 00000000000000000000000000000000 marine-related 00000000000000000000000000000000 interceded 00000000000000000000000000000000 anti-racketeering 00000000000000000000000000000000 question... 00000000000000000000000000000000 Lifestyles 00100000000000000000000000000000 fending 00000000000000000000000000000000 belatedly 00000000000000000000000000000000 13,433 00000000000000000000000000000000 Cat 00100000000111110010010000000001 Cay 00100000000000000000000000000000 Abney 00100000000000000000000000000000 1,450 00000000000000000000000000000000 venues 00000000000000000000000000000000 shootings 00000000000000000000000000000000 Yeh 00100000000000000000000000000000 497.34 00000000000000000000000000000000 Hu 00101111111000110010100000001000 Scully 00100000000000000000000000000000 Avoiding 00100000000110011111111101000000 15.92 00000000000000000000000000000000 11.28 00000000000000000000000000000000 Perfecta 00100000000000000000000000000000 Kader 00100000000000000000000000000000 Worries 00100000000111101111011010101111 Worlds 00100000000111011111000100101111 Successful 00100000000000000001000010010000 heavens 00000000000000000000000000000000 Teenage 00100000000000000000000000000000 Mutant 00100000000000000000000000000000 Brenmor 00100000000000000000000000000000 super-user 00000000000000000000000000000000 Orondo 00100000000000000000000000000000 Introduced 00100000000111011001010000110010 mid-1988 00000000000000000000000000000000 15-centimeter-tall 00000000000000000000000000000000 turtles 00000000000000000000000000000000 parts-engineering 00000000000000000000000000000000 reptilian 00000000000000000000000000000000 fast-selling 00000000000000000000000000000000 overstrained 00000000000000000000000000000000 industrialization 00000000000000000000000000000000 harder-line 00000000000000000000000000000000 Hodgson 00100000000000000000000000000000 Siedenburg 00100000000000000000000000000000 humility 00000000000000000000000000000000 679,000 00000000000000000000000000000000 671,000 00000000000000000000000000000000 buffing 00000000000000000000000000000000 filter 00000000000111111011110110110111 Syndication 00100000000011110010100001100001 now-scuttled 00000000000000000000000000000000 program-maker 00000000000000000000000000000000 privy 00000000000000000000000000000000 uninhibited 00000000000001011011000110010000 lapse 00000000000111111010011000110111 vociferous 00000000000000000000000000000000 Studio 00100000000110100111000100000001 talks-including 00000000000000000000000000000000 Fries 00100000000111111111001010101000 unshackled 00000000000000000000000000000000 Trinitron 00100000000000000000000000000000 J.B. 01000000000000000000000000000000 atrun 00000000000000000000000000000000 decrying 00000000000000000000000000000000 Time-Warner 01000000000000000000000000000000 Lilley 00100000000000000000000000000000 Fin-syn 00100000000000000000000000000000 convolutions 00000000000000000000000000000000 descriptive 00000000000000000000000000000000 Moonlighting 00100000000000000000000000000000 tantalizingly 00000000000000000000000000000000 D-Mass. 01000000000000000000000000000000 Sony-Columbia 01000000000000000000000000000000 series. 00000000000000000000000000000000 findings. 00000000000000000000000000000000 intervenes 00000000000000000000000000000000 comprise. 00000000000000000000000000000000 agree. 00000000000000000000000000000000 balk. 00000000000000000000000000000000 contract-steering 00000000000000000000000000000000 ex-member 00000000000000000000000000000000 142.7 00000000000000000000000000000000 Earning 00100000000111101000100101000000 771.4 00000000000000000000000000000000 784.9 00000000000000000000000000000000 747.3 00000000000000000000000000000000 Maximum 00100000000001101100011100010000 S.Grove 01000000000000000000000000000000 book-to-bill 00000000000000000000000000000000 367.1 00000000000000000000000000000000 reunited 00000000000000000000000000000000 hoisted 00000000000000000000000000000000 rickety 00000000000000000000000000000000 scarves 00000000000000011001010101100011 four-room 00000000000000000000000000000000 Elias 00101111111111000010000100001000 Motsoaledi 00100000000000000000000000000000 unionist 00000000000000000000000000000000 fairy 00000000000001001010101100100001 humiliation 00000000000110011110011010100111 well-wishers 00000000000000000000000000000000 tooted 00000000000000000000000000000000 dapper 00000000000000000000000000000000 fists 00000000000000000000000000000000 87-store 00000000000000000000000000000000 Zambia 00100000000111110001011101101000 unconditional 00000000000000000000000000000000 rebirth 00000000000000000000000000000000 Cassim 00100000000000000000000000000000 Saloojee 00100000000000000000000000000000 Anglican 00100000000000000101011000110000 Deafening 00100000000000000000000000000000 chants 00000000000110111101010101100011 half-measure 00000000000000000000000000000000 Africanist 00100000000000000000000000000000 Burned 00100000000101001100010000110010 disillusionment 00000000000111011010111010100111 agitation 00000000000000000000000000000000 1,657,736 00000000000000000000000000000000 Mokaba 00100000000000000000000000000000 Mlangeni 00100000000000000000000000000000 pandering 00000000000000000000000000000000 backhome 00000000000000000000000000000000 discount-coupon 00000000000000000000000000000000 conjure 00000000000000000000000000000000 M*A*S*H 01000000000000000000000000000000 pointers 00000000000000000000000000000000 anti-U.S. 01000000000000000000000000000000 Gregg 00101111111011111100001000001000 vandalized 00000000000000000000000000000000 unapproved 00000000000000000000000000000000 Panmunjom 00100000000000000000000000000000 palpable 00000000000000000000000000000000 frictions 00000000000000000000000000000000 revaluation 00000000000110001001101010100111 interior-decorating 00000000000000000000000000000000 94.6 00000000000000000000000000000000 1,342,264 00000000000000000000000000000000 data-service 00000000000000000000000000000000 new-telephone-line 00000000000000000000000000000000 338.9 00000000000000000000000000000000 120.2 00000000000000000000000000000000 agreeement 00000000000000000000000000000000 unethically 00000000000000000000000000000000 dishonorable 00000000000000000000000000000000 knowingly 00000000100001000001001001110010 fulfilment 00000000000000000000000000000000 betrayal 00000000000000000000000000000000 nurturing 00000000000000000000000000000000 reposed 00000000000000000000000000000000 inducements 00000000000111101111001100000011 Altama 00100000000000000000000000000000 DuCharme 01000000000000000000000000000000 16.125 00000000000000000000000000000000 disastrously 00000000011001101000000001110010 first-mortgage 00000000000000000000000000000000 foreign-bank 00000000000000000000000000000000 Microlog 00100000000000000000000000000000 Whampoa 00100000000000000000000000000000 three-point 00000000000000000000000000000000 gnaw 00000000000000000000000000000000 13.73 00000000000000000000000000000000 dynamos 00000000000000000000000000000000 government-assisted 00000000000000000000000000000000 slough 00000000000000000000000000000000 Brezinski 00100000000000000000000000000000 Hartman 00101111001110101100000010001000 58.7 00000000000000000000000000000000 cookbooks 00000000000000000000000000000000 custom-designed 00000000000000000000000000000000 top-secret 00000000000000000000000000000000 recapitalized 00000000000000101010001001000000 Abboud 00101111111100100011110010001000 MCorp 01000000000111000000101100101000 Equimark 00100000001001001111111100101000 Steinhart 00100000000000000000000000000000 asset-quality 00000000000000000000000000000000 multibank 00000000000000000000000000000000 45th 00000000000000000000000000000000 Inter-American 01000000000000000000000000000000 atrocity 00000000000000000000000000000000 Luz 00100000000000000000000000000000 Soler 00100000000000000000000000000000 terrify 00000000000000000000000000000000 torchbearer 00000000000000000000000000000000 battalions 00000000000000000000000000000000 crudest 00000000000000000000000000000000 bullying 00000000001101101010110001000000 Borge 00100000000000000000000000000000 proteges 00000000000100110011110000110011 drug-financed 00000000000000000000000000000000 M-19 00100000000000000000000000000000 Merkel 00100000000000000000000000000000 Abello 00100000000000000000000000000000 fourth-ranking 00000000000000000000000000000000 Virgilia 00100000000000000000000000000000 Leonidas 00100000000000000000000000000000 Paz 00100000000000000000000000000000 Zamora 00100000000000000000000000000000 international-money-markets 00000000000000000000000000000000 government-securities 00000000000000000000000000000000 90.625 00000000000000000000000000000000 21.875 00000000000000000000000000000000 Brasil 00100000000000000000000000000000 multimillion-pound-per-year 00000000000000000000000000000000 Ladies 00100000000000110010011100110011 fluoropolymer 00000000000000000000000000000000 Teflon 00100000000000000000000000000000 328,000 00000000000000000000000000000000 2,204,000 00000000000000000000000000000000 2,156,000 00000000000000000000000000000000 1,837,800 00000000000000000000000000000000 1,839,600 00000000000000000000000000000000 Marlene 00100000000000000000000000000000 Solomonic 00100000000000000000000000000000 furnishing 00000000000000000000000000000000 loathes 00000000000000000000000000000000 Lousy 00100000000000000001001010010000 high-security 00000000000000000000000000000000 Moines-based 00100000000000000000000000000000 browsing. 00000000000000000000000000000000 Stressed-out 00100000000000000000000000000000 browse 00000000000000000000000000000000 trendiest 00000000000000000000000000000000 numbingly 00000000000000000000000000000000 Rauh 00100000000000000000000000000000 focus-group 00000000000000000000000000000000 purposefully 00000000000000000000000000000000 Stillerman 00100000000000000000000000000000 remodeled 00000000000000000000000000000000 center-aisle 00000000000000000000000000000000 Cyd 00100000000000000000000000000000 Celnicker 00100000000000000000000000000000 Hannover 00100000000000000000000000000000 Complaints 00100000000110101011101000100011 Ress 00100000000000000000000000000000 spritzers 00000000000000000000000000000000 blouse 00000000000000000000000000000000 Nordstrom 00100000001111011010111100101000 prices... 00000000000000000000000000000000 sectional 00000000000000000000000000000000 reciprocal 00000000001000011101000000010000 Edith 00100000000000000000000000000000 pomologist 00000000000000000000000000000000 sectorial 00000000000000000000000000000000 Jean-Pascal 01000000000000000000000000000000 Delamuraz 00100000000000000000000000000000 general-insurance 00000000000000000000000000000000 tri-state 00000000000000000000000000000000 financial-related 00000000000000000000000000000000 Chore 00100000000000000000000000000000 brighter 00000000000000100001001111000000 Highest 00100000000000011010000011010000 Coming 00100000000111101111100001000000 Potter 00101111111000000100001000001000 president-U.S. 01000000000000000000000000000000 Richman 00101111111001110101000010001000 Shoe 00100000011100001011111010110000 113.2 00000000000000000000000000000000 Sportswear 00100000000011110011111010110000 776,470 00000000000000000000000000000000 24,405 00000000000000000000000000000000 Samurai 00100000000010001110111000000001 earlier-expressed 00000000000000000000000000000000 diesels 00000000000000000000000000000000 high-horsepower 00000000000000000000000000000000 accruals 00000000000000000000000000000000 Tumazos 00100000000000000000000000000000 Sparrows 00100000000000000000000000000000 steelworkers 00000000000000100010001010101000 incongruity 00000000000000000000000000000000 Doctor 00100000000111101101110010110101 jailhouse 00000000000000000000000000000000 Solved 00100001000010010010110000110010 Riddle 00100000000101000100000000001000 Rare 00100000000001000000011010010000 lesbians 00000000000000000000000000000000 fulfills 00001001011010000011000000010010 medical-support 00000000000000000000000000000000 Ferrier 00100000000000000000000000000000 desperation 00000000000111110011110010100111 discreet 00000000001010000101010010010000 cliques 00000000000000000000000000000000 Groff 00100000000000000000000000000000 Boeskys 00100000000000000000000000000000 Millkens 00100000000000000000000000000000 Icahns 00100000000000000000000000000000 self-seeking 00000000000000000000000000000000 woeful 00000000000000000000000000000000 Sandro 00100000000000000000000000000000 Dana-Farber 01000000000000000000000000000000 reflex 00000000000000000000000000000000 30.75 00000000000000000000000000000000 760 00000000000000000000000000000000 reroofing 00000000000000000000000000000000 reinforced-fiberglass 00000000000000000000000000000000 boat-building 00000000000000000000000000000000 plastic-body 00000000000000000000000000000000 Cuckoo 00100000000000000000000000000000 Regains 00100000000000000000000000000000 Campuses 00100000000100011100111000110011 Fare 00100000000000000000001111110111 serpent 00000000000100100110111000000001 1971-1974 00000000000000000000000000000000 Hebert 00100000000000000000000000000000 buoys 00000000000000000000000000000000 unequaled 00000000000000000000000000000000 sign-carrying 00000000000000000000000000000000 L.C. 01000000000000000000000000000000 Gallen 00100000000000000000000000000000 gears 00000000000011100111000000010010 57,500 00000000000000000000000000000000 176,470 00000000000000000000000000000000 Lal 00100000000000000000000000000000 Advani 00100000000000000000000000000000 opposition-party 00000000000000000000000000000000 Kamal 00100000000000000000000000000000 Kant 00100000000000000000000000000000 Seidler 00100000000000000000000000000000 seesawing 00000000000000000000000000000000 Broadcasts 00100000000101000101110101100011 debuted 00000000000000000000000000000000 illiterate 00000000000000000000000000000000 blatantly 00000000010100101000000001110010 Ajit 00100000000000000000000000000000 Ratner 00100000000000000000000000000000 Probhat 00100000000000000000000000000000 Chandra 00100000000000000000000000000000 Chatterji 00100000000000000000000000000000 scandal-plagued 00000000000000000000000000000000 Paradise 00100000000110101110101100100001 Pa.-based 00100000000000000000000000000000 Briton 00100000000000000000000000000000 332.5 00000000000000000000000000000000 Pie 00100000000000000001011000000001 Italia 00100000000000000000000000000000 Callender 00100000000000000000000000000000 site-development 00000000000000000000000000000000 reserve-draining 00000000000000000000000000000000 subtly 00000000110101000000010001110010 surfeit 00000000000000000000000000000000 McGroarty 01000000000000000000000000000000 eased... 00000000000000000000000000000000 much-revised 00000000000000000000000000000000 casino-company 00000000000000000000000000000000 1.5463 00000000000000000000000000000000 143.60 00000000000000000000000000000000 144.60 00000000000000000000000000000000 credit-softening 00000000000000000000000000000000 Vowing 00100000000010101010111000110010 363.40 00000000000000000000000000000000 363.35 00000000000000000000000000000000 COASTAL 01000000000000010111110110101000 580.6 00000000000000000000000000000000 136.28 00000000000000000000000000000000 34795.05 00000000000000000000000000000000 445.02 00000000000000000000000000000000 35000 00000000000000000000000000000000 145.96 00000000000000000000000000000000 34941.01 00000000000000000000000000000000 857-161 00000000000000000000000000000000 13.07 00000000000000000000000000000000 36.89 00000000000000000000000000000000 2623.60 00000000000000000000000000000000 Masami 00100000000000000000000000000000 Okuma 00100000000000000000000000000000 Yukio 00100000000000000000000000000000 Itagaki 00100000000000000000000000000000 Kokusai 00100000000000000000000000000000 903 00000000000000000000000000000000 1,010 00000000000000000000000000000000 2,830 00000000000000000000000000000000 2,470 00000000000000000000000000000000 Seiyu 00100000000000000000000000000000 2,710 00000000000000000000000000000000 Daiei 00100000000000000000000000000000 2,980 00000000000000000000000000000000 4,720 00000000000000000000000000000000 1,510 00000000000000000000000000000000 1,130 00000000000000000000000000000000 2,820 00000000000000000000000000000000 projectors 00000000000000000000000000000000 1,550 00000000000000000000000000000000 2,270 00000000000000000000000000000000 2237.8 00000000000000000000000000000000 1817.7 00000000000000000000000000000000 437.4 00000000000000000000000000000000 503.2 00000000000000000000000000000000 base-rate 00000000000000000000000000000000 437 00000000000000000000000000000000 Revised 00100000000000000010001001000000 Isosceles 00100000000000000000000000000000 Argyll 00100000000000001111010100101000 Tesco 00100000000000000000000000000000 Sainsbury 00100000000000000000000000000000 Telecommuncations 00100000000000000000000000000000 misjudged 00000000000000000000000000000000 Blaming 00100000000111101000001101000000 softdrink 00000000000000000000000000000000 cherry-flavored 00000000000000000000000000000000 sizzle 00000000000000000000000000000000 ducklings 00000000000000000000000000000000 swans 00000000000000000000000000000000 Michelob 00100000000000000000000000000000 beer-related 00000000000000000000000000000000 Tamara 00100000000001110011010100001000 wordplay 00000000000000000000000000000000 Amdec 00100000000000000000000000000000 1924 00000000000000000000000000000000 goodbye 00000000000001000010010001110010 Convict 00100000000101101000100110110111 1830-1930 00000000000000000000000000000000 Consisting 00100000000001011010101000101111 tantalizing 00000000000000000000000000000000 Gevergeyeva 00100000000000000000000000000000 curtain 00000000000000011001110100100001 undersubscription 00000000000000000000000000000000 Levki 00100000000000000000000000000000 Gevergeyev 00100000000000000000000000000000 bibles 00000000000000000000000000000000 atheist 00000000000000000000000000000000 vestments 00000000000000000000000000000000 26-room 00000000000000000000000000000000 sequestered 00001011101011010100010000110010 Bolsheviks 00100000000000000000000000000000 Ostrovsky 00100000000000000000000000000000 prodigiously 00000000000000000000000000000000 deprivations 00000000000000000000000000000000 imagines 00000000000000000000000000000000 devotedly 00000000000000000000000000000000 perished 00000000000000000000000000000000 Siege 00100000001111011110011010100111 German-born 00100000000000000000000000000000 Andrei 00100000000000000000000000000000 Roller 00100000010101101010101010110000 1805-91 00000000000000000000000000000000 Bucknell 00100000000000000000000000000000 illuminating 00000000000000000011001001111001 manmade-fiber 00000000000000000000000000000000 1890 00000000000000000000000000000000 1892 00000000000000000000000000000000 Raymonda 00100000000000000000000000000000 1897 00000000000000000000000000000000 derailed 00001110001011010100010000110010 ambiance 00000000000000000000000000000000 fountainhead 00000000000000000000000000000000 balletic 00000000000000000000000000000000 classicism 00000000000000000000000000000000 choreography 00000000000000000000000000000000 ballerinas 00000000000000000000000000000000 Mathilde 00100000000000000000000000000000 Ahlerich 00100000000000000000000000000000 engagement 00000000000111110011111001100111 Hesse-Darmstadt 01000000000000000000000000000000 Isadora 00100000000000000000000000000000 self-professed 00000000000000000000000000000000 enchanting 00000000000000000000000000000000 1910 00000000000000000000000000000000 reclining 00000000000000000000000000000000 chaise 00000000000000000000000000000000 longue 00000000000000000000000000000000 balcony 00000000000000000000000000000000 Diaghilev 00100000000000000000000000000000 Ballets 00100000000000000000000000000000 Russes 00100000000000000000000000000000 Balanchine 00100000000000000000000000000000 teenager 00000000000000000000000000000000 ruthlessly 00000000000000000000000000000000 Feodor 00100000000000000000000000000000 Lopukhov 00100000000000000000000000000000 post-Revolutionary 01000000000000000000000000000000 indisputable 00000000000000000000000000000000 Miscellaneous 00100000000001101111010000110000 Pavlova 00100000000000000000000000000000 slipper 00000000000000000000000000000000 1830 00000000000000000000000000000000 well-illustrated 00000000000000000000000000000000 Saratoga 00100000000000000000000000000000 spokewoman 00000000000000000000000000000000 French-government-owned 00100000000000000000000000000000 82.7 00000000000000000000000000000000 Angers 00100000000000000000000000000000 31.55 00000000000000000000000000000000 69.4 00000000000000000000000000000000 externally 00000000000000000000000000000000 breakneck 00000000000000000000000000000000 full-range 00000000000000000000000000000000 derive 00000000000000000000000000000000 billion-franc 00000000000000000000000000000000 independant 00000000000000000000000000000000 disarmingly 00000000000000000000000000000000 originality 00000000000000000000000000000000 vocation 00000000000111011001101001100111 front-desk 00000000000000000000000000000000 crusader 00000000000000000000000000000000 Milt 00100000000000000000000000000000 soup-to-nuts 00000000000000000000000000000000 cerebral 00000000000000000000000000000000 Ecole 00100000000000000000000000000000 d'Administration 01000000000000000000000000000000 aikido 00000000000000000000000000000000 unfocussed 00000000000000000000000000000000 banalization 00000000000000000000000000000000 Lorenz 00100000000000000000000000000000 scarcest 00000000000000000000000000000000 unaccompanied 00000000000000000000000000000000 singles 00000000000110110010101100100001 billfold 00000000000000000000000000000000 homicide 00000000000000000000000000000000 Cochrane 00100000000000000000000000000000 Raful 00100000000000000000000000000000 Thorne 00100000000000000000000000000000 Splits 00100000000000110110000010100111 112.50 00000000000000000000000000000000 ripoff 00000000000000000000000000000000 Reinisch 00100000000000000000000000000000 8,700 00000000000000000000000000000000 pro-shareholder 00000000000000000000000000000000 Silberberg 00100000000000000000000000000000 Advises 00100000001000100011000000010010 Metz 00101111111100111010101010001000 underwiters 00000000000000000000000000000000 Scotia-McLeod 01000000000000000000000000000000 63.8 00000000000000000000000000000000 W.H. 01000000000000000000000000000000 destroyer 00000000000100100101111000000001 DDG-51 01000000000000000000000000000000 Arleigh 00100000000000000000000000000000 drug-trafficking 00000000000000000000000000000000 Exocet 00100000000000000000000000000000 superstructure 00000000000000000000000000000000 sensibly 00000110011000000000010001110010 Aegis-class 00100000000000000000000000000000 Snoozing 00100000000000000000000000000000 Adi 00100000000000000000000000000000 Diary 00100000000111100110110000000001 Thirteen 00100000000101111111000011000000 Leisire 00100000000000000000000000000000 rough-cut 00000000000000000000000000000000 unretouched 00000000000000000000000000000000 diary 00000000000111100110110000000001 lice 00000000000000000000000000000000 mushroom 00000000000000100011110110110111 high-gloss 00000000000000000000000000000000 footnoted 00000000000000000000000000000000 insta-book 00000000000000000000000000000000 Taconic 00100000000000000000000000000000 REPLIGEN 01000000000000000000000000000000 pizzerias 00000000000000000000000000000000 Words 00100000000111101111000110100011 Beady 00100000000000000000000000000000 flexing 00000000000000000000000000000000 synonyms 00000000000000000000000000000000 Numbers 00100000000111101110100000100011 raison 00000000000000000000000000000000 d'etre 00000000000000000000000000000000 Horseman 00100000000000000000000000000000 reinman 00000000000000000000000000000000 20.83 00000000000000000000000000000000 kitchen-sink 00000000000000000000000000000000 aureus 00000000000000000000000000000000 reserve-building 00000000000000000000000000000000 staphylococcus 00000000000000000000000000000000 Fourteen 00100000000101001111000011000000 smaller-size 00000000000000000000000000000000 42-million 00000000000000000000000000000000 sweetening 00000000000000000000000000000000 5.375 00000000000000000000000000000000 6.375 00000000000000000000000000000000 quite-comfortable 00000000000000000000000000000000 68-ounce 00000000000000000000000000000000 electrosurgical 00000000000000000000000000000000 overshadows 00000000000000000000000000000000 Lectec 00100000000000000000000000000000 tinges 00000000000000000000000000000000 Subverts 00100000000000000000000000000000 Weimar 00100000000000000000000000000000 Eisenach 00100000000000000000000000000000 Erfurt 00100000000000000000000000000000 boom-boxes 00000000000000000000000000000000 anti-pollution 00000000000000000000000000000000 Napkins 00100000000000000000000000000000 unacceptably 00000000000101101100000001110010 Weckel 00100000000000000000000000000000 shortcuts 00000000000000000000000000000000 paradises 00000000000000000000000000000000 etch 00000000000000000000000000000000 Karel 00100000000000000000000000000000 Micronite 00100000000000000000000000000000 325,000-a-year 00000000000000000000000000000000 502,613 00000000000000000000000000000000 slippery 00000000000000000000000000000000 Gian 00100000000000000000000000000000 Fulgoni 00100000000000000000000000000000 Drug-industry 00100000000000000000000000000000 Erling 00100000000000000000000000000000 Refsum 00100000000000000000000000000000 ex-Beecham 01000000000000000000000000000000 duplicative 00000000000000000000000000000000 Tatman 00100000000000000000000000000000 sanitation-control 00000000000000000000000000000000 home-nursing 00000000000000000000000000000000 brine 00000000000000000000000000000000 nursing-homes 00000000000000000000000000000000 electronicmedical-equipment 00000000000000000000000000000000 361.3 00000000000000000000000000000000 295.6 00000000000000000000000000000000 2.13 00000000000000000000000000000000 rollout 00000000000000000000000000000000 Sprite 00100000000000000000000000000000 rainy 00000000000000000000000000000000 mushroom-processing 00000000000000000000000000000000 Minute 00100000000111111010011000010111 Maid 00100000000001000110000000100001 96-ounce 00000000000000000000000000000000 966.6 00000000000000000000000000000000 809.2 00000000000000000000000000000000 6.72 00000000000000000000000000000000 symphony 00000000000000000111101100100001 50-cent-a-share 00000000000000000000000000000000 5.06 00000000000000000000000000000000 E-Systems 01000000000000000000000000000000 inured 00000000001001101100110000110010 metal-benders 00000000000000000000000000000000 modifying 00000000000111101101011101000000 EP-3E 01000000000000000000000000000000 reconnaissance 00000000000000000000000000000000 swallows 00000000000000000000000000000000 brokerage-by-brokerage 00000000000000000000000000000000 hastens 00000000000000000000000000000000 Blechman 00100000000000000000000000000000 Forecast 00100000000111110101011010110111 unsatisfactory 00000000000010011011000110010000 LeRoy 01000000000000000000000000000000 Haugh 00100000000000000000000000000000 1.33-a-share 00000000000000000000000000000000 July-September 01000000000000000000000000000000 food-poisoning 00000000000000000000000000000000 Merlis 00100000000000000000000000000000 unpleasantly 00000000000000000000000000000000 2.96 00000000000000000000000000000000 Masse 00100000001000000001110100100001 Radio-television 00100000000000000000000000000000 Shintaro 00100000000000000000000000000000 Aboff 00100000000000000000000000000000 eschew 00000000000000000000000000000000 Confucian 00100000000000000000000000000000 74-page 00000000000000000000000000000000 typewritten 00000000000000000000000000000000 bureacratic 00000000000000000000000000000000 translators 00000000000000000000000000000000 sub-underwriting 00000000000000000000000000000000 Prometrix 00100000000000000000000000000000 backtracking 00000000000000000000000000000000 state-subsidized 00000000000000000000000000000000 Distorts 00100111101110000011000000010010 22.95 00000000000000000000000000000000 coasted 00000000000000000000000000000000 food-production 00000000000000000000000000000000 Gingl 00100000000000000000000000000000 reconciled 00000000011010101101110000110010 Sludge 00100000000111100101110000100001 workman 00000000000000000000000000000000 contexts 00000000000000000000000000000000 unthinkingly 00000000000000000000000000000000 Populares 00100000000000000000000000000000 Hippie 00100000000000000000000000000000 Confused 00100000000010010101110000110010 disoriented 00000000000000000000000000000000 obfuscations 00000000000000000000000000000000 visionary 00000000000111011101000010010000 Subsistencias 00100000000000000000000000000000 deep-rooted 00000000000000000000000000000000 suspicions... 00000000000000000000000000000000 litigate 00000000000000000000000000000000 sub-underwriters 00000000000000000000000000000000 Ought 00100000000110000001101000110010 Quaid 00100000000000000000000000000000 months-long 00000000000000000000000000000000 Touted 00100000000001000010110000110010 bashes 00000000000000000000000000000000 anti-alcohol 00000000000000000000000000000000 Killer 00100000000100100100001100100001 potty 00000000000000000000000000000000 slander 00000000000000000000000000000000 spoof 00000000000000000000000000000000 8.025 00000000000000000000000000000000 8.067 00000000000000000000000000000000 7.989 00000000000000000000000000000000 8.076 00000000000000000000000000000000 7.66 00000000000000000000000000000000 Compania 00100000000000000000000000000000 often-criticized 00000000000000000000000000000000 Aguirre-Sacasa 01000000000000000000000000000000 9.41 00000000000000000000000000000000 NT&SA-run 01000000000000000000000000000000 6.634 00000000000000000000000000000000 time-tested 00000000000000000000000000000000 1993-1999 00000000000000000000000000000000 526.4 00000000000000000000000000000000 discount-rate 00000000000000000000000000000000 yen-bond 00000000000000000000000000000000 noncommercial 00000000000000000000000000000000 5.475 00000000000000000000000000000000 0.04 00000000000000000000000000000000 7.07 00000000000000000000000000000000 Support 00100000000111111111010010110111 13.23 00000000000000000000000000000000 inward-looking 00000000000000000000000000000000 untarnished 00000000000000000000000000000000 waggishly 00000000000000000000000000000000 Shahon 00100000000000000000000000000000 parastatals 00000000000000000000000000000000 car-parts 00000000000000000000000000000000 price-valuation 00000000000000000000000000000000 relatonship 00000000000000000000000000000000 rectify 00000000000000000000000000000000 Sperling 00101111110001111000000010001000 Bath 00100000000000111100100000100001 Horace 00100000000000000000000000000000 Foodmaker 00100000000110011110111100101000 476.3 00000000000000000000000000000000 lateral 00000000000000000000000000000000 Situation 00100000000111111111101101100111 Room 00100000000110101010110100100111 teleconferences 00000000000000000000000000000000 formalized 00000000000000000000000000000000 Oval 00100000000000010010110101010001 bureauracy 00000000000000000000000000000000 joking 00000000000000000000000000000000 Unflattering 00100000000000000000000000000000 inferiority 00000000000000000000000000000000 hubris 00000000000000000000000000000000 translates 00000000000100101100001000110010 Sweathouse 00100000000000000000000000000000 smarts 00000000000000000000000000000000 Gertrude 00100000000000000000000000000000 downsize 00000000000000000000000000000000 wallowed 00000000000000000000000000000000 metropolis 00000000000000000000000000000000 deflecting 00000000000000000000000000000000 Chardonnay-sipping 00100000000000000000000000000000 windy 00000000000001111000011010101000 flea-infested 00000000000000000000000000000000 300-foot 00000000000000000000000000000000 redwoods 00000000000000000000000000000000 Barbary 00100000000000000000000000000000 surrounds 00000000011001110001000000010010 Weather 00100000000111101111000001111001 ghetto 00000000000111000010110000000001 Boxy 00100000000000000000000000000000 skyscrapers 00000000000000000000000000000000 gluttony 00000000000000000000000000000000 sobriquet 00000000000000000000000000000000 Stomach 00100000000111101011010000000001 exhume 00000000000000000000000000000000 terrors 00000000000000000000000000000000 souvenirs 00000000000000000000000000000000 obscenities 00000000000000000000000000000000 vomit 00000000000000000000000000000000 unearthly 00000000000000000000000000000000 implanting 00000000000000000000000000000000 military-style 00000000000000000000000000000000 Padres 00100000000000000000000000000000 Full 00100000000000000100011100010000 balmy 00000000000000000000000000000000 sun-kissed 00000000000000000000000000000000 business-like 00000000000000000000000000000000 spy-chaser 00000000000000000000000000000000 booing 00000000000000000000000000000000 supporter 00000000000111100101101100111111 seven-inning 00000000000000000000000000000000 seventh-inning 00000000000000000000000000000000 retch 00000000000000000000000000000000 Wave 00100000000111110111101000111111 streaks 00000000000000000000000000000000 hardier 00000000000000000000000000000000 Marco 00100000000000000000000000000000 Hank 00100000000000000000000000000000 civilize 00000000000000000000000000000000 tofu 00000000000000000000000000000000 diaper-changing 00000000000000000000000000000000 no-drinking 00000000000000000000000000000000 immature 00000000000000000000000000000000 Auckland 00100000000000000000000000000000 greenish 00000000000000000000000000000000 sneers 00000000000000000000000000000000 annulled 00000000000000000000000000000000 augmenting 00000000000000000000000000000000 MacGyver 01000000000000000000000000000000 penknife 00000000000000000000000000000000 U.N.C.L.E 01000000000000000000000000000000 Godot 00100000000000000000000000000000 persuasions 00000000000000000000000000000000 Isolating 00100000000000000000000000000000 grumbling 00000000000111101100011010101111 Roma 00101111111011100010101010001000 barbecued 00000000000000000000000000000000 Autorapido 00100000000000000000000000000000 McDLT 01000000000000000000000000000000 tentacles 00000000000000000000000000000000 enviably 00000000000000000000000000000000 should-be 00000000000000000000000000000000 iron-rod 00000000000000000000000000000000 Amador 00100000000000000000000000000000 causeway 00000000000000000000000000000000 bunker 00001111111001110110000000001000 pre-kidnap 00000000000000000000000000000000 saber 00000000000000000000000000000000 unseat 00000000011011010111111110110010 treaties 00000000000110101100010000100111 Miraflores 00100000000000000000000000000000 Locks 00100000001000011111000000010010 51-mile 00000000000000000000000000000000 pathway 00000000000000000000000000000000 frowned 00000000000000000000000000000000 Phoenicians 00100000000000000000000000000000 sail 00000000000010010110010110110010 Kempe 00100000000000000000000000000000 G.P. 01000000000000000000000000000000 nurture 00000000011100111111110110110010 grudge 00000000000000000000000000000000 deposition 00000000000110101111001011100111 publishing-group 00000000000000000000000000000000 434,000 00000000000000000000000000000000 Amateur 00100000000000000111101000110000 budget-strapped 00000000000000000000000000000000 re-oriented 00000000000000000000000000000000 less-perfectly 00000000000000000000000000000000 Gershman 00100000000000000000000000000000 multipartisan 00000000000000000000000000000000 Wedged 00100000000000000000000000000000 totalitarian 00000000000000101001011000110000 Fragua 00100000000000000000000000000000 amateurism 00000000000000000000000000000000 impugning 00000000000000000000000000000000 spy-chasing 00000000000000000000000000000000 pests 00000000000000000000000000000000 Chromosome 00100000000000000011111100010000 Sabena 00100000000001100100110100101000 8.019 00000000000000000000000000000000 magnesium 00000000000000000000000000000000 weevils 00000000000000000000000000000000 pathology 00000000000000000000000000000000 blood-forming 00000000000000000000000000000000 aberrations 00000000000000000000000000000000 fumigant 00000000000000000000000000000000 respirators 00000000000000000000000000000000 tetrachloride 00000000000000000000000000000000 disulfide 00000000000000000000000000000000 crunching 00000000000000000000000000000000 Sequester 00100000000000000000000000000000 cupboard 00000000000000000000000000000000 provisionally 00000000000000000000000000000000 shrieks 00000000000000000000000000000000 sharpener 00000000000000000000000000000000 little-understood 00000000000000000000000000000000 exempts 00000000000100110001000000010010 Salaries 00100000000111100110100100000011 quirk 00000000000000000000000000000000 111.6 00000000000000000000000000000000 Moses 00100000000111110001000100001000 hospices 00000000000000000000000000000000 undergraduates 00000000000000000000000000000000 ails 00000000000000000000000000000000 Cogan 00100000000000000000000000000000 Kika 00100000000000000000000000000000 Mindy 00100000000000000000000000000000 Minsk 00100000000000000000000000000000 Terence 00101111111000000101110110011000 drought-shriveled 00000000000000000000000000000000 Outlook 00100000000111111101111100111001 Kazakhstan 00100000000000000000000000000000 Adjust 00100000000111110010001110110010 2.064 00000000000000000000000000000000 Turn 00100000000111111110010110110010 frost 00000000000111001110000000001000 7-for-1 00000000000000000000000000000000 Tech-Sym 01000000000000000000000000000000 multiple-state 00000000000000000000000000000000 memory-expansion 00000000000000000000000000000000 upwards 00000000000000000000000000000000 buffetted 00000000000000000000000000000000 clubby 00000000000000000000000000000000 grain-trading 00000000000000000000000000000000 non-stop 00000000000000000000000000000000 Bannister 00100000000000000000000000000000 wad-working 00000000000000000000000000000000 Money-making 00100000000000000000000000000000 Leiby 00100000000000000000000000000000 Hering 00100000000000000000000000000000 acknowledgment 00000000000000000000000000000000 nudging 00000000000000000000000000000000 Snecma 00100000000000000000000000000000 catsup 00000000000000000000000000000000 Reasoning 00100000000110111011111101100111 37.4 00000000000000000000000000000000 S&P-down 01000000000000000000000000000000 52.3 00000000000000000000000000000000 1,024 00000000000000000000000000000000 fourfold 00000000000000000000000000000000 stockpickers 00000000000000000000000000000000 underperformance 00000000000000000000000000000000 Well-Seasoned 01000000000000000000000000000000 outguess 00000000000000000000000000000000 non-interstate 00000000000000000000000000000000 Forecaster 00100000000001101111101110110101 overinvested 00000000000000000000000000000000 outslugged 00000000000000000000000000000000 skew 00000000000000000000000000000000 small-cap 00000000000000000000000000000000 Values 00100000000111101000001000100011 computed 00000000000000000000000000000000 believers 00000000000000111100100000110011 Vitale 00100000000000000000000000000000 8.0087 00000000000000000000000000000000 Billock 00100000000000000000000000000000 Syferd 00100000000000000000000000000000 Eckhardt 00100000000000000000000000000000 FRANKENBERRY 01000000000000000000000000000000 LINK-UP 01000000000000000000000000000000 Sausage 00100000000000000000000000000000 miles-per-hour 00000000000000000000000000000000 handing 00000000000110011010100001000000 Sirowitz 00100000000000000000000000000000 Jericho 00100000000000000000000000000000 Plate 00100000000110011110111000000001 hammerlock 00000000000100101011001011100111 like-minded 00000000000000000000000000000000 Stalinists 00100000000000000000000000000000 Fatalities 00100000000110100011101001100011 Dashitchev 00100000000000000000000000000000 482.19 00000000000000000000000000000000 916 00000000000000000000000000000000 274,000 00000000000000000000000000000000 3,650,000 00000000000000000000000000000000 418,200 00000000000000000000000000000000 3,450,000 00000000000000000000000000000000 triple-Crated 01000000000000000000000000000000 Polypropylene 00100000000110000100011010110000 clamshells 00000000000000000000000000000000 41.50 00000000000000000000000000000000 mausoleum 00000000000000000000000000000000 rebuffing 00000000000000000000000000000000 gluey 00000000000000000000000000000000 clay 00000000000101111010000000001000 dank 00000000000000000000000000000000 shack 00000000000001011011100100001001 gray-black 00000000000000000000000000000000 grime 00000000000000000000000000000000 rambles 00000000000000000000000000000000 incoherence 00000000000000000000000000000000 pant 00000000000000000000000000000000 gunmetal-gray 00000000000000000000000000000000 8.395 00000000000000000000000000000000 diagnose 00000000000000000000000000000000 abscess 00000000000000000000000000000000 softball 00000000000000000000000000000000 sewage-polluted 00000000000000000000000000000000 softly 00000000000000000000000000000000 earthquake-stricken 00000000000000000000000000000000 blacker 00000000000000000000000000000000 year-old 00000000000000000000000000000000 picture-taking 00000000000000000000000000000000 unbelievably 00000000000000000000000000000000 bloom 00001111111100110101110010001000 benignant 00000000000000000000000000000000 molasses 00000000000000000000000000000000 Tallahatchie 00100000000000000000000000000000 Yalobusha 00100000000000000000000000000000 Gilt 00100000000111010010111110110000 Braggadocio 00100000000000000000000000000000 50%-plus 00000000000000000000000000000000 L.T. 01000000000000000000000000000000 Simes 00100000000000000000000000000000 dryly 00000000000000000000000000000000 Alstyne 00100000000000000000000000000000 CBS-TV 01000000000000000000000000000000 grubby 00000000000000000000000000000000 1,685 00000000000000000000000000000000 dumpster 00000000000000000000000000000000 caste 00000000000000000000000000000000 land-owning 00000000000000000000000000000000 complacently 00000000000000000000000000000000 hardscrabble 00000000000000000000000000000000 1980-84 00000000000000000000000000000000 fraying 00000000011010000110100001000000 1,954 00000000000000000000000000000000 Papasan 00100000000000000000000000000000 diplomas 00000000000000000000000000000000 photographing 00000000000000000000000000000000 Dust 00100000000111010111111000000001 Okies 00100000000000000000000000000000 prowled 00000000000000000000000000000000 Sharecropping 00100000000000000000000000000000 sharecropper 00000000000000000000000000000000 uncompensated 00000000000111110001100000110000 Reconstruction 00100000000000000010101101001111 still-continuing 00000000000000000000000000000000 Wyche 00100000000000000000000000000000 Breaux 00100000000000000000000000000000 gut-Democratic 01000000000000000000000000000000 Thad 00100000000000000000000000000000 Cochran 00100000000000000000000000000000 crosscurrents 00000000000000000000000000000000 retargeting 00000000000000000000000000000000 federal-state-local 00000000000000000000000000000000 bypassed 00000000000000000000000000000000 computer-age 00000000000000000000000000000000 Vaughn 00100000000000000000000000000000 Tiptonville 00100000000000000000000000000000 Chengdu 00100000000000000000000000000000 Reorganizing 00100000000110110101011101000000 Second-quarter 00100000000000000000000000000000 mid-1989 00000000000000000000000000000000 Shenzhen 00100000000111110100110001101000 208,992 00000000000000000000000000000000 metal-coil 00000000000000000000000000000000 AMCA 01000000000000000000000000000000 McGinty 01000000000000000000000000000000 MINORITY 01000000000000000000101000110000 technologically-improved 00000000000000000000000000000000 Stanger 00101111111000110100111000001000 Shrewsbury 00100000000000000000000000000000 syndicators 00000000000010001100010000110011 355.3 00000000000000000000000000000000 241.3 00000000000000000000000000000000 plunked 00000001000100101001001000110010 159.8 00000000000000000000000000000000 102.3 00000000000000000000000000000000 Kaneb 00100000000110001001000100101000 UDC 01000000000000000000000000000000 pulchritude 00000000000000000000000000000000 much-respected 00000000000000000000000000000000 fast-rising 00000000000000000000000000000000 Lea 00100000000000000000000000000000 Industri 00100000000000000000000000000000 8.3875 00000000000000000000000000000000 takings 00000000000111111011011000111001 Haber 00100000000000000000000000000000 Comer 00100000000000000000000000000000 drug-making 00000000000000000000000000000000 biochemical 00000000000000000000000000000000 Soichiro 00100000000000000000000000000000 RECRUITING 01000000001001110010110001000000 trickling 00000000000110001101100001000000 genetics 00000000000101100111100101100001 Biochemical 00100000000000000000000000000000 67.5 00000000000000000000000000000000 RNA-based 01000000000000000000000000000000 flicker 00000000000000000000000000000000 millionths-of-a-second 00000000000000000000000000000000 masers 00000000000000000000000000000000 Honored 00100000000001101101110000110010 ions 00000000000000000000000000000000 Dehmelt 00100000000000000000000000000000 tenet 00000000000000000000000000000000 mid-1950s 00000000000000000000000000000000 double-helix 00000000000000000000000000000000 bead-like 00000000000000000000000000000000 secluded 00000000000000000000000000000000 necklace-like 00000000000000000000000000000000 anti-morning-sickness 00000000000000000000000000000000 copy-cat 00000000000000000000000000000000 protein-making 00000000000000000000000000000000 biochemists 00000000000000000000000000000000 Recruiter 00101111111111101100011000110101 cutting-and-pasting 00000000000000000000000000000000 enzyme-like 00000000000000000000000000000000 splicing 00000000000000000000000000000000 self-splicing 00000000000000000000000000000000 exemplar 00000000000000000000000000000000 ribonucleic 00000000000000000000000000000000 six-week-old 00000000000000000000000000000000 Ribozymes 00100000000000000000000000000000 RNAs 01000000000000000000000000000000 cleave 00000000000000000000000000000000 inactivate 00000000000000000000000000000000 ribozyme 00000000000000000000000000000000 disrupts 00000000000000000000000000000000 inactivated 00000000000000000000000000000000 126.7 00000000000000000000000000000000 6.14 00000000000000000000000000000000 54.7 00000000000000000000000000000000 170.9 00000000000000000000000000000000 counter-measures 00000000000000000000000000000000 120.3 00000000000000000000000000000000 ground-launched 00000000000000000000000000000000 air-launched 00000000000000000000000000000000 391.9 00000000000000000000000000000000 362.3 00000000000000000000000000000000 5.98 00000000000000000000000000000000 Sean 00100000000000001101010110011000 Klauer 00100000000000000000000000000000 Mattison 00100000000000000000000000000000 flatish 00000000000000000000000000000000 434.4 00000000000000000000000000000000 Bouncing 00100000000111010011100001000000 mini-doll 00000000000000000000000000000000 docks 00000000000000000000000000000000 Viewmaster-Ideal 01000000000000000000000000000000 driftnet 00000000000000000000000000000000 Dynoriders 00100000000000000000000000000000 Oopsie 00100000000000000000000000000000 Licks 00100000000000000000000000000000 Hovercraft 00100000000111010011101001100011 radio-controlled 00000000000000000000000000000000 Minnetonka 00100000000110111010111100101000 267.5 00000000000000000000000000000000 de-emphasis 00000000000000000000000000000000 Sega 00100000000000000000000000000000 Connectables 00100000000000000000000000000000 Ring 00100000000110101111001010110111 Raiders 00100000000111101011110000110011 Kooten 00100000000000000000000000000000 Pettis 00100000000000000000000000000000 Polian 00100000000000000000000000000000 Neb 00100000000000000000000000000000 non-option 00000000000000000000000000000000 stock-basket 00000000000000000000000000000000 market-basket 00000000000000000000000000000000 Teeter 00101111111101001101000010001000 hijacked 00000000000000000000000000000000 Rector 00100000000000000000000000000000 multitudes 00000000000000000000000000000000 Lobbyists 00100000000010010110000010110011 Mailings 00100000000010000101110101100011 Fisheries 00100000000111000110010010110000 Sixteen 00100000000111111111000011000000 Shays 00100000000000000000000000000000 Shrewd 00100000000000100101000010010000 Start 00100000000111101001110110110010 median-family 00000000000000000000000000000000 dependent-care 00000000000000000000000000000000 Vogue 00100000000110011111111001101000 Cashiering 00100000000000000000000000000000 gentrified 00000000000000000000000000000000 saber-rattling 00000000000000000000000000000000 Conservationists 00100000000000000000000000000000 534,000 00000000000000000000000000000000 union-represented 00000000000000000000000000000000 revelation 00000000000110110000111101100111 convertibility 00000000000000000000000000000000 inflexible 00000000000111111100110100010000 ever-increasing 00000000000000000000000000000000 assigning 00000000000100001011111101000000 tradesmen 00000000000000000000000000000000 Keeling 00100000000000000000000000000000 nonunionized 00000000000000000000000000000000 Impressions 00100000000110111101111101100011 Absenteeism 00100000000111111111111100000111 Uchida 00100000000000000000000000000000 toting 00000000000000000000000000000000 trustworthy 00000000000000000000000000000000 Quieter 00100000000000101100001111000000 even-tempered 00000000000000000000000000000000 media-conscious 00000000000000000000000000000000 Chilver 00100000000000000000000000000000 Germany-based 00100000000000000000000000000000 entertainer 00000000001100110011100000110101 Merv 00101111111011001101001010011000 forte 00000000000000000000000000000000 Orens 00100000000000000000000000000000 boyhood 00000000000000000000000000000000 719,000 00000000000000000000000000000000 tactful 00000000000000000000000000000000 sandy-haired 00000000000000000000000000000000 grandstanding 00000000000000000000000000000000 repatriation 00000000000000000000000000000000 Tyson-Spinks 01000000000000000000000000000000 boxing 00000000000000010010001100100001 Mercer-Meidinger-Hansen 01000000000000000000000000000000 once-mighty 00000000000000000000000000000000 bypassing 00000000000000000000000000000000 618,000 00000000000000000000000000000000 neglects 00000000000000000000000000000000 Clays 00100000000000000000000000000000 1,161 00000000000000000000000000000000 896 00000000000000000000000000000000 1,681 00000000000000000000000000000000 4,451 00000000000000000000000000000000 propellers 00000000000000000000000000000000 incapacitated 00000000000000000000000000000000 expectancies 00000000000000000000000000000000 Wiesenthal 00100000000000000000000000000000 Broadly 00100000000110101000010001110010 Entitlements 00100000000000000000000000000000 Losing 00100000000000000100100101000000 Oi 00100000000000000000000000000000 muddy 00000000000000000000000000000000 waist 00000000000000000000000000000000 signers 00000000000000000000000000000000 vagueness 00000000000000000000000000000000 Believe 00100000000111101111100110110010 demurrer 00000000000000000000000000000000 queue 00000000000000000000000000000000 238,140 00000000000000000000000000000000 drafters 00000000000011001010000010110011 injunctive 00000000000000000000000000000000 craftsmanship 00000000000000000000000000000000 near-total 00000000000000000000000000000000 court-supervised 00000000000000000000000000000000 consent-decree 00000000000000000000000000000000 small-equipment 00000000000000000000000000000000 thorny 00000000000000101100011000010000 Avoids 00100001010100000011000000010010 explored 00000101010111010100010000110010 monopolistic 00000000000000000000000000000000 much-needed 00000000000000000000000000000000 presaging 00000000000000000000000000000000 revenue-law 00000000000000000000000000000000 penalty-free 00000000000000000000000000000000 repealing 00000000000000000000000000000000 geothermal 00000000000010001001000100101000 ocean-thermal 00000000000000000000000000000000 Permanent 00100000000010000001000000010000 Imposition 00100000000111000101011000001111 3-per-passenger 00000000000000000000000000000000 Reinstatement 00100000000111111011101101001111 cent-per-barrel 00000000000000000000000000000000 spill-cleanup 00000000000000000000000000000000 Winn 00100000000000000000000000000000 Elsevier 00100000000001001111111100101000 Data-destroying 00100000000000000000000000000000 infesting 00000000000000000000000000000000 Nazi-occupied 00100000000000000000000000000000 Thirty-four 00100000000000000000000000000000 exploitative 00000000000000000000000000000000 price-gouging 00000000000000000000000000000000 Rooker 00100000000000000000000000000000 reliability 00000000000111111110100011100001 vaccine-vendor 00000000000000000000000000000000 Dispatch 00100000000111000111100110110111 ASP 01000000000000000000000000000000 Certus 00100000000000000000000000000000 Ware 00100000000000000000000000000000 Tippett 00100000000000000000000000000000 visionaries 00000000000101001100010000110011 Viruscan 00100000000000000000000000000000 Meyerson 00100000000000000000000000000000 edits 00000000000000000000000000000000 compassionate 00000000001111100101010010010000 clamoring 00000000000110011110110000110010 Humanity 00100000000111001001110010100111 may... 00000000000000000000000000000000 gradations 00000000000000000000000000000000 circumspection 00000000000000000000000000000000 inconveniences 00000000000000000000000000000000 miseries 00000000000000000000000000000000 dogmatically 00000000000000000000000000000000 liberate 00000000000000000000000000000000 dungeons 00000000000000000000000000000000 melee 00000000000000000000000000000000 Red-Green 01000000000000000000000000000000 germaneness 00000000000000000000000000000000 congressional-item 00000000000000000000000000000000 vote-begging 00000000000000000000000000000000 perplexed 00000000000000000000000000000000 roams 00000000000000000000000000000000 class-warrior 00000000000000000000000000000000 hindsight 00000000000111000111111001101000 Pop 00100000000001000100110110110111 spike 00000000000100111001101010100111 ascend 00000000000000000000000000000000 sliding-rate 00000000000000000000000000000000 theoretically 00000000110100000000001001110010 sanctify 00000000000000000000000000000000 reintroduces 00000000000000000000000000000000 pre-1986 00000000000000000000000000000000 progressivity 00000000000000000000000000000000 disfavored 00000000000000000000000000000000 white-shoe 00000000000000000000000000000000 buccaneers 00000000000000000000000000000000 coalitions 00000000000000111110000100100011 60%-plus 00000000000000000000000000000000 flagpole 00000000000000000000000000000000 757s 00000000000000000000000000000000 narrow-bodied 00000000000000000000000000000000 Rothmeier 00100000000000000000000000000000 chafing 00000000000000000000000000000000 end-of-year 00000000000000000000000000000000 horticulturist 00000000000000000000000000000000 sages 00000000000000000000000000000000 Rippe 00100000000000000000000000000000 152 00000000000000000000000000000000 598.7 00000000000000000000000000000000 FACES 01000000000001000011000000010010 grouse 00000000000000000000000000000000 Anytime 00100000000000001110000000101010 catastrophic-health 00000000000000000000000000000000 GERMAN 01000000000000000000000010101000 TURMOIL 01000000000110101011111010100111 swamping 00000000000000000000000000000000 FED 01000000000111101111110000100101 FEARS 01000000000111101110101010101111 COUP 01000000000000001000111010110101 REBUFF 01000000000000000000000000000000 FINAL 01000000000000010000000011010000 IRONY 01000000000111101011110000001111 Heartburn 00100000000000000000000000000000 ROSTY'S 01000000000000000000000000000000 REFLECTIONS 01000000000000000000000000000000 ponders 00000000000000000000000000000000 SOVIET 01000000000000001000110100110000 GLASNOST 01000000000110101111110010100111 B'nai 00100000000000000000000000000000 B'rith 00100000000000000000000000000000 Riga 00100000000000000000000000000000 Vilnius 00100000000000000000000000000000 GENERIC-DRUG 01000000000000000000000000000000 FRAUDS 01000000000110000111100010100111 Phamaceutical 00100000000000000000000000000000 double-checking 00000000000000000000000000000000 Wyden 00100000000000000000000000000000 Sikorski 00100000000000000000000000000000 Sigourney 00100000000000000000000000000000 Wendell 00100000000000000101100010011000 lectern 00000000000000000000000000000000 assails 00000000000000000000000000000000 vampirism 00000000000000000000000000000000 Improprieties 00100000000101000111100010100111 intercede 00000000000000000000000000000000 countercharges 00000000000000000000000000000000 Cirona 00100000000000000000000000000000 Dawn 00100000000111101100010000101000 bubbled 00000000000000000000000000000000 devour 00000000000000000000000000000000 fanning 00000000000000000000000000000000 overhyped 00000000000000000000000000000000 Rotenberg 00100000000000000000000000000000 31,000-member 00000000000000000000000000000000 Belisle 00100000000000000000000000000000 Datacrime 00100000000000000000000000000000 wipes 00000000000000000000000000000000 variant 00000000000000000000000000000000 COM 01000000000110101010010010110000 social-welfare 00000000000000000000000000000000 1,168 00000000000000000000000000000000 1,280 00000000000000000000000000000000 Westphalia 00100000000000000000000000000000 1,514 00000000000000000000000000000000 EXE 01000000000000000000000000000000 Corp.-compatible 00100000000000000000000000000000 operating-system 00000000000000000000000000000000 Infection 00100000000110111010110010100111 Repairing 00100000000000100111111101000000 Viruses 00100000000111111010111001100011 intimidates 00000000000000000000000000000000 catchy 00000000000000000000000000000000 North-Rhine 01000000000000000000000000000000 Greenbelt 00100000000000000000000000000000 resembled 00000000000000000000000000000000 eradicated 00000000000000000000000000000000 CGP 01000000000000000000000000000000 ANP 01000000000000000000000000000000 Lurgi 00100000000000000000000000000000 apple-industry 00000000000000000000000000000000 342-million 00000000000000000000000000000000 energy-hungry 00000000000000000000000000000000 Vt.-based 00100000000000000000000000000000 anti-foreigner 00000000000000000000000000000000 helluva 00000000000000000000000000000000 Medicaid-covered 00100000000000000000000000000000 commands 00000000000011111111000000010010 70-75 00000000000000000000000000000000 loyalists 00000000000011000001010110110101 8.86 00000000000000000000000000000000 99.869 00000000000000000000000000000000 9.267 00000000000000000000000000000000 88.4 00000000000000000000000000000000 1990-2005 00000000000000000000000000000000 1989-81 00000000000000000000000000000000 9.09 00000000000000000000000000000000 Cassa 00100000000000000000000000000000 Risparmio 00100000000000000000000000000000 delle 00000000000000000000000000000000 Provincie 00100000000000000000000000000000 Lombarde 00100000000000000000000000000000 CARIPLO 01000000000000000000000000000000 Kagakushi 00100000000000000000000000000000 Kogyo 00100000000000000000000000000000 Sankai 00100000000000000000000000000000 Fixing 00100000011110000010110001000000 Exercise 00100000000110110111110110110010 Definitive 00100000000000010001001100010000 misusing 00000000000000000000000000000000 retrace 00000000000000000000000000000000 98-count 00000000000000000000000000000000 Mattox 00100000000000000000000000000000 ISO 01000000000000000000000000000000 ACTING 01000000000001000000000001000000 ATTORNEY 01000000000000001110110000110101 Benito 00100000000000000000000000000000 enigma 00000000000000000000000000000000 Dewey 00101111111011110000000100001000 Bushby 00100000000000000000000000000000 Morvillo 00100000000000000000000000000000 Abramowitz 00100000000000000000000000000000 MYERSON 01001111111101100110111000001000 KUHN 01001111111100110001110001001000 Nessen 00100000000000000000000000000000 Kamin 00100000000000000000000000000000 Killelea 00100000000000000000000000000000 Waffen 00100000000000000000000000000000 dashing 00000000000000000000000000000000 Nevermind 00100000000000000000000000000000 neckline 00000000000000000000000000000000 giggling 00000000000000000000000000000000 left-of-center 00000000000000000000000000000000 consumerism 00000000000000000000000000000000 diehards 00000000000000000000000000000000 PERFORMANCE 01000000000111101101011010100111 divorcee 00000000000000000000000000000000 leopard-trimmed 00000000000000000000000000000000 hesitates 00000000000000000000000000000000 uncontrollably 00000000000000000000000000000000 Pollak 00100000000000000000000000000000 Compulsive 00100000000000000000000000000000 Miriam 00100000001010101101111000011000 80-year-old 00000000000000000000000000000000 gregarious 00000000000000000000000000000000 Knowing 00100000000111001101111010000010 Equestrian 00100000000000000000000000000000 brunette 00000000000000000000000000000000 Paini 00100000000000000000000000000000 gazing 00000000011110000110100001000000 burnt-orange 00000000000000000000000000000000 crocodile 00001111111011000100110100101000 nattily 00000000000000000000000000000000 Guess 00100000000101011110000110110010 Baden-Wuerttemburg 01000000000000000000000000000000 darting 00000000000000000000000000000000 ultra-right 00000000000000000000000000000000 miniskirt 00000000000000000000000000000000 hot-pink 00000000000000000000000000000000 Erin 00100000000000000000000000000000 Harkess 00100000000000000000000000000000 spraining 00000000000000000000000000000000 frowns 00000000000000000000000000000000 Melrose 00100000000000000000000000000000 Jeri 00100000000000000000000000000000 13-year-old 00000000000000000000000000000000 super-regionals 00000000000000000000000000000000 Winston-Salem 01000000000000000000000000000000 Eichof 00100000000000000000000000000000 34.85 00000000000000000000000000000000 45.48 00000000000000000000000000000000 Stockholder 00100000000001000000111100010000 3.32 00000000000000000000000000000000 938.6 00000000000000000000000000000000 Brauerei 00100000000000000000000000000000 49.50 00000000000000000000000000000000 Dominican 00100000000011001101011000110000 Felice 00100000000000000000000000000000 non-interest-bearing 00000000000000000000000000000000 Interest-rate 00100000000000000000000000000000 costcutting 00000000000000000000000000000000 338.2 00000000000000000000000000000000 324.4 00000000000000000000000000000000 basis-point 00000000000000000000000000000000 Solutions 00100000000111100111001110100011 installment-loan 00000000000000000000000000000000 33-basis 00000000000000000000000000000000 37.125 00000000000000000000000000000000 spread-sensitive 00000000000000000000000000000000 Adair 00100000000000000000000000000000 big-deposit 00000000000000000000000000000000 higher-rate 00000000000000000000000000000000 Puglisi 00100000000000000000000000000000 4.09 00000000000000000000000000000000 733 00000000000000000000000000000000 296 00000000000000000000000000000000 midwest 00000000000111101110001110101000 510 00000000000000000000000000000000 31.15 00000000000000000000000000000000 34.75 00000000000000000000000000000000 strives 00000000000000000000000000000000 extra-nasty 00000000000000000000000000000000 acreage 00000000000011100011011000100001 Brascade 00100000000000000000000000000000 customs-cleared 00000000000000000000000000000000 7.76 00000000000000000000000000000000 17.05 00000000000000000000000000000000 24.29 00000000000000000000000000000000 4.78 00000000000000000000000000000000 3.88 00000000000000000000000000000000 8.67 00000000000000000000000000000000 Auto-parts 00100000000000000000000000000000 Pike 00101111111110111011001000001000 5.55 00000000000000000000000000000000 4.37 00000000000000000000000000000000 Adjusted 00100000000010110110110000110010 23.28 00000000000000000000000000000000 Hondas 00100000000000000000000000000000 breaching 00000000000000000000000000000000 ex-officers 00000000000000000000000000000000 Lackland 00100000000000000000000000000000 Ministries 00100000000100011010000100100011 Massey-Ferguson 01000000000000000000000000000000 Italian-based 00100000000000000000000000000000 Fenn 00100000000000000000000000000000 EuroBelge 01000000000000000000000000000000 Korean-American 01000000000000000000000000000000 steadfastness 00000000000000000000000000000000 Eighth 00100000000111000011100011010000 U.S.-Korean 01000000000000000000000000000000 Bureaucratic 00100000001010100000000000110000 arresting 00000000000000011111110001000000 democracy-free 00000000000000000000000000000000 infraction 00000000000000000000000000000000 Chun 00101111111000001000100110001000 Doo 00101111111010000010011100100101 Hwan 00101111111101111101101100010101 COLGATE-PALMOLIVE 01000000000000000000000000000000 31.57 00000000000000000000000000000000 355.39 00000000000000000000000000000000 333.57 00000000000000000000000000000000 0.83 00000000000000000000000000000000 196.98 00000000000000000000000000000000 160,120,000 00000000000000000000000000000000 164,070,000 00000000000000000000000000000000 IMO 01000000000111011110111100101000 Thiokol 00101111111010111011010001001000 MGM-UA 01000000000000000000000000000000 Rowan 00100000000000000000000000000000 Bairnco 00100000000000000000000000000000 yearago 00000000000000000000000000000000 Anthem 00100000000000000000000000000000 Nettleton 00101111111011010111110001001000 0.67 00000000000000000000000000000000 395.01 00000000000000000000000000000000 KMW 01000000000000000000000000000000 5.25-a-share 00000000000000000000000000000000 Yale-New 01000000000000000000000000000000 drinkers 00000000000111010100010000110011 guzzles 00000000000000000000000000000000 18%-owned 00000000000000000000000000000000 fizzy 00000000000000000000000000000000 Pure 00100000000001000010011010010000 45.6 00000000000000000000000000000000 flour-milling 00000000000000000000000000000000 processed-meat 00000000000000000000000000000000 RFM 01000000000000000000000000000000 39.125 00000000000000000000000000000000 billion-peso 00000000000000000000000000000000 miscues 00000000000000000000000000000000 freer-spending 00000000000000000000000000000000 Soft-drink 00100000000000000000000000000000 Soft 00100000000010100010101010110000 fruit-juice 00000000000000000000000000000000 marketing-and-distribution 00000000000000000000000000000000 eclipsed 00000000000100100001110000110010 Benigno 00101111111100100100101100011000 7-Up 01000000000000000000000000000000 ornery 00000000000000000000000000000000 216.3 00000000000000000000000000000000 212.7 00000000000000000000000000000000 26.125 00000000000000000000000000000000 uncoated 00000000000000000000000000000000 441 00000000000000000000000000000000 121.7 00000000000000000000000000000000 4.79 00000000000000000000000000000000 35.1 00000000000000000000000000000000 318.4 00000000000000000000000000000000 273.7 00000000000000000000000000000000 96.8 00000000000000000000000000000000 911.9 00000000000000000000000000000000 798.7 00000000000000000000000000000000 Lewiston 00100000000000000000000000000000 Cloquet 00100000000000000000000000000000 Parkland 00100000000000000000000000000000 Canning 00100000000000000000000000000000 droop 00000000000000000000000000000000 stupendously 00000000000000000000000000000000 Sensing 00100000000110100001111010000010 accumulator 00000000000000000000000000000000 out-of-favor 00000000000000000000000000000000 Rockville 00100000000111101000101001101000 Bessie 00100000000000000000000000000000 helmsman 00000000000000000000000000000000 first-floor 00000000000000000000000000000000 BS 01000000000000000000000000000000 5.49 00000000000000000000000000000000 311,734 00000000000000000000000000000000 mailgrams 00000000000000000000000000000000 eleventh 00000000000000000100000011010000 Balking 00100000000000000000000000000000 gasping 00000000000000000000000000000000 766 00000000000000000000000000000000 Streeters 00100000000000000001100010101000 El-Sadr 01000000000000000000000000000000 Manhattan-based 00100000000000000000000000000000 Wafaa 00100000000000000000000000000000 emphatic 00000000000000000000000000000000 ostrich 00000000000000000000000000000000 Morse 00100000011000101000010000001000 TWX 01000000000000000000000000000000 gambles 00000000000000000000000000000000 layering 00000000000000000000000000000000 Kheel 00100000000000000000000000000000 Evans-Black 01000000000000000000000000000000 entreaties 00000000000000000000000000000000 Liggett 00100000000001100101010100101000 cropping 00000000000000000000000000000000 arduous 00000000000000000000000000000000 400,000-a-year 00000000000000000000000000000000 Unwanted 00100000000001110000010100010000 blindsided 00000000000000000000000000000000 Telex 00100000000001101110111100101000 35%-to-40 00000000000000000000000000000000 875.9 00000000000000000000000000000000 junked 00000000000000000000000000000000 business-services 00000000000000000000000000000000 son-of-exchange 00000000000000000000000000000000 EasyLink 01000000000000000000000000000000 lower-middle-class 00000000000000000000000000000000 distresses 00000000000000000000000000000000 sketched 00000000110000101001001000110010 Turning 00100000000111111101100001000000 dunk 00000000000000000000000000000000 stinks 00000000000000000000000000000000 Chemfix 00100000000000000000000000000000 once-popular 00000000000000000000000000000000 Dedication 00100000000111010101111100100111 hinders 00000000000000000000000000000000 blobby 00000000000000000000000000000000 FEAR 01000000000111101110000110110010 Arne 00100000000000000000000000000000 Loopholes 00100000000111110110101110100011 stupidity 00000000000111000111110010100111 decease 00000000000000000000000000000000 Belzberg 00100000000001010000000000001000 howls 00000000000000000000000000000000 clumsily 00000000000000000000000000000000 Schmolka 00100000000000000000000000000000 Berson 00100000000000000000000000000000 Retiree 00100000000000011110111000100001 company-arranged 00000000000000000000000000000000 Geld 00100000000000000000000000000000 Meidinger 00100000000000000000000000000000 benefits-consulting 00000000000000000000000000000000 SOME 01000000000000000000001011000000 PHYSICIANS 01000000000100111100111000110011 over-50 00000000000000000000000000000000 flooring 00000000000000000000000000000000 Kanan 00100000000000000000000000000000 Nalick 00100000000000000000000000000000 gynecologic 00000000000000000000000000000000 oncology 00000000000111101011110110111001 Samaritan 00100000000111110111011011000001 Challenger 00100000000001001010000000001000 ovarian 00000000000000000000000000000000 Hoff 00100000000000000000000000000000 Therapy 00100000000011100110011010100111 Naren 00100000000000000000000000000000 Kapadia 00100000000000000000000000000000 oncologist 00000000000000000000000000000000 Waukegan 00100000000000000000000000000000 CONTAIN 01000000000000110001101110110010 Nary 00100000000000000000000000000000 homemakers 00000000000000000000000000000000 homebound 00000000000000000000000000000000 Slow 00100000000100000101110110110010 HOSPITALS 01000000000111111010110001100011 wards 00000000000000000000000000000000 Margret 00100000000000000000000000000000 Amatayakul 00100000000000000000000000000000 945 00000000000000000000000000000000 815 00000000000000000000000000000000 12.19 00000000000000000000000000000000 dyes 00000000000000000000000000000000 aircraft-engine 00000000000000000000000000000000 Power-generation 00100000000000000000000000000000 outplacement 00000000000001010100000010110000 juniors 00000000000000000000000000000000 FRINGE-BENEFIT 01000000000000000000000000000000 Wierton 00100000000000000000000000000000 contractually 00000000000000000000000000000000 fabricating 00000000000000001011100001100001 Prothro 00100000000000000000000000000000 stain-resistant 00000000000000000000000000000000 176.8 00000000000000000000000000000000 172.8 00000000000000000000000000000000 LONG-TERM 01000000000000000000000000000000 corporate-tax 00000000000000000000000000000000 Medibank 00100000000000000000000000000000 health-insurance 00000000000000000000000000000000 yet... 00000000000000000000000000000000 Salazar 00100000000000000000000000000000 Tijuana 00100000001100000111111001101000 Sony-owned 00100000000000000000000000000000 1,063 00000000000000000000000000000000 Seitz 00100000000000000000000000000000 six-week-long 00000000000000000000000000000000 re-education 00000000000000000000000000000000 Ten-year-old 00100000000000000000000000000000 372,949 00000000000000000000000000000000 368.3 00000000000000000000000000000000 Zehnder 00100000000000000000000000000000 M-1 00100000000000000000000000000000 9.85 00000000000000000000000000000000 concealment 00000000000111010111100010100111 False 00100000000000000001000110010000 recur 00000000000000000000000000000000 14.55 00000000000000000000000000000000 24.45 00000000000000000000000000000000 infringements 00000000000000000000000000000000 Belzbergs 00100000000111100111001110110011 brightener 00000000000000000000000000000000 whiteness 00000000000000000000000000000000 Pucik 00100000000000000000000000000000 securities-based 00000000000000000000000000000000 Ultra 00100000000010101101111100001000 Chicopee 00100000000000000000000000000000 Evenflo 00100000000000000000000000000000 Amer 00100000000000000000000000000000 diagramming 00000000000000000000000000000000 CALFED 01000000000010111110111100101000 Vegas-based 00100000000000000000000000000000 58.1 00000000000000000000000000000000 2,360,000 00000000000000000000000000000000 22.60 00000000000000000000000000000000 702,750 00000000000000000000000000000000 22.7 00000000000000000000000000000000 XYVISION 01000000000000000000000000000000 Jeopardy 00100000000111111010110101010111 game-show 00000000000000000000000000000000 Springdale 00100000000000000000000000000000 by-products 00000000000000000000000000000000 Farms 00100000000001001001100000101001 THF 01000000000000000000000000000000 West-End 01000000000000000000000000000000 clashing 00000000000000000000000000000000 Sedona 00100000000000000000000000000000 eye-to-eye 00000000000000000000000000000000 10,125 00000000000000000000000000000000 125-day 00000000000000000000000000000000 LaMacchia 01000000000000000000000000000000 coverings 00000000000000000000000000000000 Halloran 00100000000000000000000000000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_letsmt_Le0100644 0000000 0000000 00000000157 14135770370 032652 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtDocument.jav0100664 0001750 0001750 00000010516 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.letsmt; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.xml.parsers.SAXParser; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import opennlp.tools.util.XmlUtil; /** * A structure to hold the letsmt document. The documents contains sentences and depending on the * source it either contains tokenized text (words) or an un-tokenized sentence string. *

LetsmtSentenceStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); LetsmtDocument letsmtDoc = null; try { letsmtDoc = LetsmtDocument.parse(params.getData()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } // TODO: // Implement a filter stream to remove splits which are not at an eos char ObjectStream samples = new LetsmtSentenceStream(letsmtDoc); if (params.getDetokenizer() != null) { try { Detokenizer detokenizer = new DictionaryDetokenizer( new DetokenizationDictionary(params.getDetokenizer())); samples = new DetokenizeSentenceSampleStream(detokenizer, samples); } catch (IOException e) { throw new TerminateToolException(-1, "Failed to load detokenizer rules!", e); } } return samples; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_letsmt_Le0100644 0000000 0000000 00000000165 14135770370 032651 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStre0100664 0001750 0001750 00000004527 14135770370 034255 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.letsmt; import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; class LetsmtSentenceStream implements ObjectStream { private final LetsmtDocument source; private Iterator sentenceIt; LetsmtSentenceStream(LetsmtDocument source) { this.source = source; reset(); } @Override public SentenceSample read() throws IOException { StringBuilder sentencesString = new StringBuilder(); List sentenceSpans = new LinkedList<>(); for (int i = 0; sentenceIt.hasNext() && i < 25 ; i++) { LetsmtDocument.LetsmtSentence sentence = sentenceIt.next(); int begin = sentencesString.length(); if (sentence.getTokens() != null) { sentencesString.append(String.join(" ", sentence.getTokens())); } else if (sentence.getNonTokenizedText() != null) { sentencesString.append(sentence.getNonTokenizedText()); } sentenceSpans.add(new Span(begin, sentencesString.length())); sentencesString.append(' '); } // end of stream is reached, indicate that with null return value if (sentenceSpans.size() == 0) { return null; } return new SentenceSample(sentencesString.toString(), sentenceSpans.toArray(new Span[sentenceSpans.size()])); } @Override public void reset() { sentenceIt = source.getSentences().iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Conll02Na0100644 0000000 0000000 00000000161 14135770370 032405 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStream.j0100664 0001750 0001750 00000014664 14135770370 033735 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * Parser for the dutch and spanish ner training files of the CONLL 2002 shared task. *

* The dutch data has a -DOCSTART- tag to mark article boundaries, * adaptive data in the feature generators will be cleared before every article.
* The spanish data does not contain article boundaries, * adaptive data will be cleared for every sentence. *

* The data contains four named entity types: Person, Organization, Location and Misc.
*

* Data can be found on this web site:
* http://www.cnts.ua.ac.be/conll2002/ner/ *

* Note: Do not use this class, internal use only! */ public class Conll02NameSampleStream implements ObjectStream { public enum LANGUAGE { NLD, SPA } public static final int GENERATE_PERSON_ENTITIES = 0x01; public static final int GENERATE_ORGANIZATION_ENTITIES = 0x01 << 1; public static final int GENERATE_LOCATION_ENTITIES = 0x01 << 2; public static final int GENERATE_MISC_ENTITIES = 0x01 << 3; public static final String DOCSTART = "-DOCSTART-"; private final LANGUAGE lang; private final ObjectStream lineStream; private final int types; public Conll02NameSampleStream(LANGUAGE lang, ObjectStream lineStream, int types) { this.lang = lang; this.lineStream = lineStream; this.types = types; } public Conll02NameSampleStream(LANGUAGE lang, InputStreamFactory in, int types) throws IOException { this.lang = lang; try { this.lineStream = new PlainTextByLineStream(in, StandardCharsets.UTF_8); System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8.name())); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } this.types = types; } static Span extract(int begin, int end, String beginTag) throws InvalidFormatException { String type = beginTag.substring(2); switch (type) { case "PER": type = "person"; break; case "LOC": type = "location"; break; case "MISC": type = "misc"; break; case "ORG": type = "organization"; break; default: throw new InvalidFormatException("Unknown type: " + type); } return new Span(begin, end, type); } public NameSample read() throws IOException { List sentence = new ArrayList<>(); List tags = new ArrayList<>(); boolean isClearAdaptiveData = false; // Empty line indicates end of sentence String line; while ((line = lineStream.read()) != null && !StringUtil.isEmpty(line)) { if (LANGUAGE.NLD.equals(lang) && line.startsWith(DOCSTART)) { isClearAdaptiveData = true; continue; } String[] fields = line.split(" "); if (fields.length == 3) { sentence.add(fields[0]); tags.add(fields[2]); } else { throw new IOException("Expected three fields per line in training data, got " + fields.length + " for line '" + line + "'!"); } } // Always clear adaptive data for spanish if (LANGUAGE.SPA.equals(lang)) isClearAdaptiveData = true; if (sentence.size() > 0) { // convert name tags into spans List names = new ArrayList<>(); int beginIndex = -1; int endIndex = -1; for (int i = 0; i < tags.size(); i++) { String tag = tags.get(i); if (tag.endsWith("PER") && (types & GENERATE_PERSON_ENTITIES) == 0) tag = "O"; if (tag.endsWith("ORG") && (types & GENERATE_ORGANIZATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("LOC") && (types & GENERATE_LOCATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("MISC") && (types & GENERATE_MISC_ENTITIES) == 0) tag = "O"; if (tag.startsWith("B-")) { if (beginIndex != -1) { names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = -1; endIndex = -1; } beginIndex = i; endIndex = i + 1; } else if (tag.startsWith("I-")) { endIndex++; } else if (tag.equals("O")) { if (beginIndex != -1) { names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = -1; endIndex = -1; } } else { throw new IOException("Invalid tag: " + tag); } } // if one span remains, create it here if (beginIndex != -1) names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); return new NameSample(sentence.toArray(new String[sentence.size()]), names.toArray(new Span[names.size()]), isClearAdaptiveData); } else if (line != null) { // Just filter out empty events, if two lines in a row are empty return read(); } else { // source stream is not returning anymore lines return null; } } public void reset() throws IOException, UnsupportedOperationException { lineStream.reset(); } public void close() throws IOException { lineStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADChun0100644 0000000 0000000 00000000160 14135770370 032462 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADChunkSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADChunkSampleStream.ja0100664 0001750 0001750 00000021214 14135770370 033712 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.formats.ad.ADSentenceStream.Sentence; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Leaf; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Node; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.TreeElement; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.StringUtil; /** * Parser for Floresta Sita(c)tica Arvores Deitadas corpus, output to for the * Portuguese Chunker training. *

* The heuristic to extract chunks where based o paper 'A Machine Learning * Approach to Portuguese Clause Identification', (Eraldo Fernandes, Cicero * Santos and Ruy Milidiú).
*

* Data can be found on this web site:
* http://www.linguateca.pt/floresta/corpus.html *

* Information about the format:
* Susana Afonso. * "Árvores deitadas: Descrição do formato e das opções de análise na Floresta Sintáctica" * .
* 12 de Fevereiro de 2006. * http://www.linguateca.pt/documentos/Afonso2006ArvoresDeitadas.pdf *

* Detailed info about the NER tagset: * http://beta.visl.sdu.dk/visl/pt/info/portsymbol.html#semtags_names *

* Note: Do not use this class, internal use only! */ public class ADChunkSampleStream implements ObjectStream { protected final ObjectStream adSentenceStream; private int start = -1; private int end = -1; private int index = 0; public static final String OTHER = "O"; /** * Creates a new {@link NameSample} stream from a line stream, i.e. * {@link ObjectStream}<{@link String}>, that could be a * {@link PlainTextByLineStream} object. * * @param lineStream * a stream of lines as {@link String} */ public ADChunkSampleStream(ObjectStream lineStream) { this.adSentenceStream = new ADSentenceStream(lineStream); } public ADChunkSampleStream(InputStreamFactory in, String charsetName) throws IOException { try { this.adSentenceStream = new ADSentenceStream(new PlainTextByLineStream( in, charsetName)); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } } public ChunkSample read() throws IOException { Sentence paragraph; while ((paragraph = this.adSentenceStream.read()) != null) { if (end > -1 && index >= end) { // leave return null; } if (start > -1 && index < start) { index++; // skip this one } else { Node root = paragraph.getRoot(); List sentence = new ArrayList<>(); List tags = new ArrayList<>(); List target = new ArrayList<>(); processRoot(root, sentence, tags, target); if (sentence.size() > 0) { index++; return new ChunkSample(sentence, tags, target); } } } return null; } protected void processRoot(Node root, List sentence, List tags, List target) { if (root != null) { TreeElement[] elements = root.getElements(); for (TreeElement element : elements) { if (element.isLeaf()) { processLeaf((Leaf) element, false, OTHER, sentence, tags, target); } else { processNode((Node) element, sentence, tags, target, null); } } } } private void processNode(Node node, List sentence, List tags, List target, String inheritedTag) { String phraseTag = getChunkTag(node); boolean inherited = false; if (phraseTag.equals(OTHER) && inheritedTag != null) { phraseTag = inheritedTag; inherited = true; } TreeElement[] elements = node.getElements(); for (int i = 0; i < elements.length; i++) { if (elements[i].isLeaf()) { boolean isIntermediate = false; String tag = phraseTag; Leaf leaf = (Leaf) elements[i]; String localChunk = getChunkTag(leaf); if (localChunk != null && !tag.equals(localChunk)) { tag = localChunk; } if (isIntermediate(tags, target, tag) && (inherited || i > 0)) { isIntermediate = true; } if (!isIncludePunctuations() && leaf.getFunctionalTag() == null && ( !( i + 1 < elements.length && elements[i + 1].isLeaf() ) || !( i > 0 && elements[i - 1].isLeaf() ) ) ) { isIntermediate = false; tag = OTHER; } processLeaf(leaf, isIntermediate, tag, sentence, tags, target); } else { int before = target.size(); processNode((Node) elements[i], sentence, tags, target, phraseTag); // if the child node was of a different type we should break the chunk sequence for (int j = target.size() - 1; j >= before; j--) { if (!target.get(j).endsWith("-" + phraseTag)) { phraseTag = OTHER; break; } } } } } protected void processLeaf(Leaf leaf, boolean isIntermediate, String phraseTag, List sentence, List tags, List target) { String chunkTag; if (leaf.getFunctionalTag() != null && phraseTag.equals(OTHER)) { phraseTag = getPhraseTagFromPosTag(leaf.getFunctionalTag()); } if (!phraseTag.equals(OTHER)) { if (isIntermediate) { chunkTag = "I-" + phraseTag; } else { chunkTag = "B-" + phraseTag; } } else { chunkTag = phraseTag; } sentence.add(leaf.getLexeme()); if (leaf.getSyntacticTag() == null) { tags.add(leaf.getLexeme()); } else { tags.add(ADChunkSampleStream.convertFuncTag(leaf.getFunctionalTag(), false)); } target.add(chunkTag); } protected String getPhraseTagFromPosTag(String functionalTag) { if (functionalTag.equals("v-fin")) { return "VP"; } else if (functionalTag.equals("n")) { return "NP"; } return OTHER; } public static String convertFuncTag(String t, boolean useCGTags) { if (useCGTags) { if ("art".equals(t) || "pron-det".equals(t) || "pron-indef".equals(t)) { t = "det"; } } return t; } protected String getChunkTag(Leaf leaf) { String tag = leaf.getSyntacticTag(); if ("P".equals(tag)) { return "VP"; } return null; } protected String getChunkTag(Node node) { String tag = node.getSyntacticTag(); String phraseTag = tag.substring(tag.lastIndexOf(":") + 1); while (phraseTag.endsWith("-")) { phraseTag = phraseTag.substring(0, phraseTag.length() - 1); } // maybe we should use only np, vp and pp, but will keep ap and advp. if (phraseTag.equals("np") || phraseTag.equals("vp") || phraseTag.equals("pp") || phraseTag.equals("ap") || phraseTag.equals("advp") || phraseTag.equals("adjp")) { phraseTag = StringUtil.toUpperCase(phraseTag); } else { phraseTag = OTHER; } return phraseTag; } public void setStart(int aStart) { this.start = aStart; } public void setEnd(int aEnd) { this.end = aEnd; } public void reset() throws IOException, UnsupportedOperationException { adSentenceStream.reset(); } public void close() throws IOException { adSentenceStream.close(); } protected boolean isIncludePunctuations() { return false; } protected boolean isIntermediate(List tags, List target, String phraseTag) { return target.size() > 0 && target.get(target.size() - 1).endsWith("-" + phraseTag); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADName0100644 0000000 0000000 00000000157 14135770370 032453 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStream.jav0100664 0001750 0001750 00000036702 14135770370 033720 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.formats.ad.ADSentenceStream.Sentence; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Leaf; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Node; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.TreeElement; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; /** * Parser for Floresta Sita(c)tica Arvores Deitadas corpus, output to for the * Portuguese NER training. *

* The data contains four named entity types: Person, Organization, Group, * Place, Event, ArtProd, Abstract, Thing, Time and Numeric.
*

* Data can be found on this web site:
* http://www.linguateca.pt/floresta/corpus.html *

* Information about the format:
* Susana Afonso. * "Árvores deitadas: Descrição do formato e das opções de análise na Floresta Sintáctica" * .
* 12 de Fevereiro de 2006. * http://www.linguateca.pt/documentos/Afonso2006ArvoresDeitadas.pdf *

* Detailed info about the NER tagset: * http://beta.visl.sdu.dk/visl/pt/info/portsymbol.html#semtags_names *

* Note: Do not use this class, internal use only! */ public class ADNameSampleStream implements ObjectStream { /** * Pattern of a NER tag in Arvores Deitadas */ private static final Pattern tagPattern = Pattern.compile("<(NER:)?(.*?)>"); private static final Pattern whitespacePattern = Pattern.compile("\\s+"); private static final Pattern underlinePattern = Pattern.compile("[_]+"); private static final Pattern hyphenPattern = Pattern.compile("((\\p{L}+)-$)|(^-(\\p{L}+)(.*))|((\\p{L}+)-(\\p{L}+)(.*))"); private static final Pattern alphanumericPattern = Pattern.compile("^[\\p{L}\\p{Nd}]+$"); /** * Map to the Arvores Deitadas types to our types. It is read-only. */ private static final Map HAREM; static { Map harem = new HashMap<>(); final String person = "person"; harem.put("hum", person); harem.put("official", person); harem.put("member", person); final String organization = "organization"; harem.put("admin", organization); harem.put("org", organization); harem.put("inst", organization); harem.put("media", organization); harem.put("party", organization); harem.put("suborg", organization); final String group = "group"; harem.put("groupind", group); harem.put("groupofficial", group); final String place = "place"; harem.put("top", place); harem.put("civ", place); harem.put("address", place); harem.put("site", place); harem.put("virtual", place); harem.put("astro", place); final String event = "event"; harem.put("occ", event); harem.put("event", event); harem.put("history", event); final String artprod = "artprod"; harem.put("tit", artprod); harem.put("pub", artprod); harem.put("product", artprod); harem.put("V", artprod); harem.put("artwork", artprod); final String _abstract = "abstract"; harem.put("brand", _abstract); harem.put("genre", _abstract); harem.put("school", _abstract); harem.put("idea", _abstract); harem.put("plan", _abstract); harem.put("author", _abstract); harem.put("absname", _abstract); harem.put("disease", _abstract); final String thing = "thing"; harem.put("object", thing); harem.put("common", thing); harem.put("mat", thing); harem.put("class", thing); harem.put("plant", thing); harem.put("currency", thing); final String time = "time"; harem.put("date", time); harem.put("hour", time); harem.put("period", time); harem.put("cyclic", time); final String numeric = "numeric"; harem.put("quantity", numeric); harem.put("prednum", numeric); harem.put("currency", numeric); HAREM = Collections.unmodifiableMap(harem); } private final ObjectStream adSentenceStream; /** * To keep the last left contraction part */ private String leftContractionPart = null; private final boolean splitHyphenatedTokens; /** * Creates a new {@link NameSample} stream from a line stream, i.e. * {@link ObjectStream}<{@link String}>, that could be a * {@link PlainTextByLineStream} object. * * @param lineStream * a stream of lines as {@link String} * @param splitHyphenatedTokens * if true hyphenated tokens will be separated: "carros-monstro" > * "carros" "-" "monstro" */ public ADNameSampleStream(ObjectStream lineStream, boolean splitHyphenatedTokens) { this.adSentenceStream = new ADSentenceStream(lineStream); this.splitHyphenatedTokens = splitHyphenatedTokens; } /** * Creates a new {@link NameSample} stream from a {@link InputStream} * * @param in * the Corpus {@link InputStream} * @param charsetName * the charset of the Arvores Deitadas Corpus * @param splitHyphenatedTokens * if true hyphenated tokens will be separated: "carros-monstro" > * "carros" "-" "monstro" */ @Deprecated public ADNameSampleStream(InputStreamFactory in, String charsetName, boolean splitHyphenatedTokens) throws IOException { try { this.adSentenceStream = new ADSentenceStream(new PlainTextByLineStream( in, charsetName)); this.splitHyphenatedTokens = splitHyphenatedTokens; } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } } private int textID = -1; public NameSample read() throws IOException { Sentence paragraph; // we should look for text here. while ((paragraph = this.adSentenceStream.read()) != null) { int currentTextID = getTextID(paragraph); boolean clearData = false; if (currentTextID != textID) { clearData = true; textID = currentTextID; } Node root = paragraph.getRoot(); List sentence = new ArrayList<>(); List names = new ArrayList<>(); process(root, sentence, names); return new NameSample(sentence.toArray(new String[sentence.size()]), names.toArray(new Span[names.size()]), clearData); } return null; } /** * Recursive method to process a node in Arvores Deitadas format. * * @param node * the node to be processed * @param sentence * the sentence tokens we got so far * @param names * the names we got so far */ private void process(Node node, List sentence, List names) { if (node != null) { for (TreeElement element : node.getElements()) { if (element.isLeaf()) { processLeaf((Leaf) element, sentence, names); } else { process((Node) element, sentence, names); } } } } /** * Process a Leaf of Arvores Detaitadas format * * @param leaf * the leaf to be processed * @param sentence * the sentence tokens we got so far * @param names * the names we got so far */ private void processLeaf(Leaf leaf, List sentence, List names) { boolean alreadyAdded = false; if (leftContractionPart != null) { // will handle the contraction String right = leaf.getLexeme(); String c = PortugueseContractionUtility.toContraction( leftContractionPart, right); if (c != null) { String[] parts = whitespacePattern.split(c); sentence.addAll(Arrays.asList(parts)); alreadyAdded = true; } else { // contraction was missing! why? sentence.add(leftContractionPart); // keep alreadyAdded false. } leftContractionPart = null; } String namedEntityTag = null; int startOfNamedEntity = -1; String leafTag = leaf.getSecondaryTag(); boolean expandLastNER = false; // used when we find a tag if (leafTag != null) { if (leafTag.contains("") && !alreadyAdded) { String[] lexemes = underlinePattern.split(leaf.getLexeme()); if (lexemes.length > 1) { sentence.addAll(Arrays.asList(lexemes).subList(0, lexemes.length - 1)); } leftContractionPart = lexemes[lexemes.length - 1]; return; } if (leafTag.contains("")) { // this one an be part of the last name expandLastNER = true; } namedEntityTag = getNER(leafTag); } if (namedEntityTag != null) { startOfNamedEntity = sentence.size(); } if (!alreadyAdded) { sentence.addAll(processLexeme(leaf.getLexeme())); } if (namedEntityTag != null) { names .add(new Span(startOfNamedEntity, sentence.size(), namedEntityTag)); } if (expandLastNER) { // if the current leaf has the tag , it can be the continuation of // a NER. // we check if it is true, and expand the last NER int lastIndex = names.size() - 1; if (names.size() > 0) { Span last = names.get(lastIndex); if (last.getEnd() == sentence.size() - 1) { names.set(lastIndex, new Span(last.getStart(), sentence.size(), last.getType())); } } } } private List processLexeme(String lexemeStr) { List out = new ArrayList<>(); String[] parts = underlinePattern.split(lexemeStr); for (String tok : parts) { if (tok.length() > 1 && !alphanumericPattern.matcher(tok).matches()) { out.addAll(processTok(tok)); } else { out.add(tok); } } return out; } private List processTok(String tok) { boolean tokAdded = false; String original = tok; List out = new ArrayList<>(); LinkedList suffix = new LinkedList<>(); char first = tok.charAt(0); if (first == '«') { out.add(Character.toString(first)); tok = tok.substring(1); } char last = tok.charAt(tok.length() - 1); if (last == '»' || last == ':' || last == ',' || last == '!' ) { suffix.add(Character.toString(last)); tok = tok.substring(0, tok.length() - 1); } // lets split all hyphens if (this.splitHyphenatedTokens && tok.contains("-") && tok.length() > 1) { Matcher matcher = hyphenPattern.matcher(tok); String firstTok = null; String hyphen = "-"; String secondTok = null; String rest = null; if (matcher.matches()) { if (matcher.group(1) != null) { firstTok = matcher.group(2); } else if (matcher.group(3) != null) { secondTok = matcher.group(4); rest = matcher.group(5); } else if (matcher.group(6) != null) { firstTok = matcher.group(7); secondTok = matcher.group(8); rest = matcher.group(9); } addIfNotEmpty(firstTok, out); addIfNotEmpty(hyphen, out); addIfNotEmpty(secondTok, out); addIfNotEmpty(rest, out); tokAdded = true; } } if (!tokAdded) { if (!original.equals(tok) && tok.length() > 1 && !alphanumericPattern.matcher(tok).matches()) { out.addAll(processTok(tok)); } else { out.add(tok); } } out.addAll(suffix); return out; } private void addIfNotEmpty(String firstTok, List out) { if (firstTok != null && firstTok.length() > 0) { out.addAll(processTok(firstTok)); } } /** * Parse a NER tag in Arvores Deitadas format. * * @param tags * the NER tag in Arvores Deitadas format * @return the NER tag, or null if not a NER tag in Arvores Deitadas format */ private static String getNER(String tags) { if (tags.contains("")) { return null; } String[] tag = tags.split("\\s+"); for (String t : tag) { Matcher matcher = tagPattern.matcher(t); if (matcher.matches()) { String ner = matcher.group(2); if (HAREM.containsKey(ner)) { return HAREM.get(ner); } } } return null; } public void reset() throws IOException, UnsupportedOperationException { adSentenceStream.reset(); } public void close() throws IOException { adSentenceStream.close(); } enum Type { ama, cie, lit } private Type corpusType = null; private Pattern metaPattern; // works for Amazonia // private static final Pattern meta1 = Pattern // .compile("^(?:[a-zA-Z\\-]*(\\d+)).*?p=(\\d+).*"); // // // works for selva cie // private static final Pattern meta2 = Pattern // .compile("^(?:[a-zA-Z\\-]*(\\d+)).*?p=(\\d+).*"); private int textIdMeta2 = -1; private String textMeta2 = ""; private int getTextID(Sentence paragraph) { String meta = paragraph.getMetadata(); if (corpusType == null) { if (meta.startsWith("LIT")) { corpusType = Type.lit; metaPattern = Pattern.compile("^([a-zA-Z\\-]+)(\\d+).*?p=(\\d+).*"); } else if (meta.startsWith("CIE")) { corpusType = Type.cie; metaPattern = Pattern.compile("^.*?source=\"(.*?)\".*"); } else { // ama corpusType = Type.ama; metaPattern = Pattern.compile("^(?:[a-zA-Z\\-]*(\\d+)).*?p=(\\d+).*"); } } if (corpusType.equals(Type.lit)) { Matcher m2 = metaPattern.matcher(meta); if (m2.matches()) { String textId = m2.group(1); if (!textId.equals(textMeta2)) { textIdMeta2++; textMeta2 = textId; } return textIdMeta2; } else { throw new RuntimeException("Invalid metadata: " + meta); } } else if (corpusType.equals(Type.cie)) { Matcher m2 = metaPattern.matcher(meta); if (m2.matches()) { String textId = m2.group(1); if (!textId.equals(textMeta2)) { textIdMeta2++; textMeta2 = textId; } return textIdMeta2; } else { throw new RuntimeException("Invalid metadata: " + meta); } } else if (corpusType.equals(Type.ama)) { Matcher m2 = metaPattern.matcher(meta); if (m2.matches()) { return Integer.parseInt(m2.group(1)); // currentPara = Integer.parseInt(m.group(2)); } else { throw new RuntimeException("Invalid metadata: " + meta); } } return 0; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADName0100644 0000000 0000000 00000000166 14135770370 032453 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADNameSampleStreamFact0100664 0001750 0001750 00000006412 14135770370 033732 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.LanguageSampleStreamFactory; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * A Factory to create a Arvores Deitadas NameSampleDataStream from the command line * utility. *

* Note: Do not use this class, internal use only! */ public class ADNameSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters { //all have to be repeated, because encoding is not optional, //according to the check if (encoding == null) { below (now removed) @ParameterDescription(valueName = "charsetName", description = "encoding for reading and writing text, if absent the system default is used.") Charset getEncoding(); @ParameterDescription(valueName = "sampleData", description = "data to be used, usually a file name.") File getData(); @ParameterDescription(valueName = "split", description = "if true all hyphenated tokens will be separated (default true)") @OptionalParameter(defaultValue = "true") Boolean getSplitHyphenatedTokens(); @ParameterDescription(valueName = "language", description = "language which is being processed.") String getLang(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "ad", new ADNameSampleStreamFactory(Parameters.class)); } protected

ADNameSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); language = params.getLang(); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new ADNameSampleStream(lineStream, params.getSplitHyphenatedTokens()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADSent0100644 0000000 0000000 00000000172 14135770370 032501 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream0100664 0001750 0001750 00000006050 14135770370 034016 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.LanguageSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Note: Do not use this class, internal use only! */ public class ADSentenceSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters { @ParameterDescription(valueName = "charsetName", description = "encoding for reading and writing text.") Charset getEncoding(); @ParameterDescription(valueName = "sampleData", description = "data to be used, usually a file name.") File getData(); @ParameterDescription(valueName = "language", description = "language which is being processed.") String getLang(); @ParameterDescription(valueName = "includeTitles", description = "if true will include sentences marked as headlines.") @OptionalParameter(defaultValue = "false") Boolean getIncludeTitles(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "ad", new ADSentenceSampleStreamFactory(Parameters.class)); } protected

ADSentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); language = params.getLang(); boolean includeTitle = params.getIncludeTitles(); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new ADSentenceSampleStream(lineStream, includeTitle); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADPOSS0100644 0000000 0000000 00000000165 14135770370 032356 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADPOSSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADPOSSampleStreamFacto0100664 0001750 0001750 00000006332 14135770370 033673 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.LanguageSampleStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Note: Do not use this class, internal use only! */ public class ADPOSSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters { @ParameterDescription(valueName = "charsetName", description = "encoding for reading and writing text, if absent the system default is used.") Charset getEncoding(); @ParameterDescription(valueName = "sampleData", description = "data to be used, usually a file name.") File getData(); @ParameterDescription(valueName = "language", description = "language which is being processed.") String getLang(); @ParameterDescription(valueName = "expandME", description = "expand multiword expressions.") @OptionalParameter(defaultValue = "false") Boolean getExpandME(); @ParameterDescription(valueName = "includeFeatures", description = "combine POS Tags with word features, like number and gender.") @OptionalParameter(defaultValue = "false") Boolean getIncludeFeatures(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, "ad", new ADPOSSampleStreamFactory(Parameters.class)); } protected

ADPOSSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); language = params.getLang(); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new ADPOSSampleStream(lineStream, params.getExpandME(), params.getIncludeFeatures()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADSent0100644 0000000 0000000 00000000163 14135770370 032501 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceSampleStream0100664 0001750 0001750 00000013410 14135770370 034014 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.FileInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.formats.ad.ADSentenceStream.Sentence; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; /** * Note: Do not use this class, internal use only! */ public class ADSentenceSampleStream implements ObjectStream { private final ObjectStream adSentenceStream; private int text = -1; private int para = -1; private boolean isSameText; private boolean isSamePara; private Sentence sent; private boolean isIncludeTitles = true; private boolean isTitle; private final char[] ptEosCharacters; /** * Creates a new {@link SentenceSample} stream from a line stream, i.e. * {@link ObjectStream}<{@link String}>, that could be a * {@link PlainTextByLineStream} object. * * @param lineStream * a stream of lines as {@link String} * @param includeHeadlines * if true will output the sentences marked as news headlines */ public ADSentenceSampleStream(ObjectStream lineStream, boolean includeHeadlines) { this.adSentenceStream = new ADSentenceStream(lineStream); ptEosCharacters = Factory.ptEosCharacters; Arrays.sort(ptEosCharacters); this.isIncludeTitles = includeHeadlines; } /** * Creates a new {@link SentenceSample} stream from a {@link FileInputStream} * * @param in * input stream from the corpus * @param charsetName * the charset to use while reading the corpus * @param includeHeadlines * if true will output the sentences marked as news headlines */ public ADSentenceSampleStream(InputStreamFactory in, String charsetName, boolean includeHeadlines) throws IOException { try { this.adSentenceStream = new ADSentenceStream(new PlainTextByLineStream( in, charsetName)); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } ptEosCharacters = Factory.ptEosCharacters; Arrays.sort(ptEosCharacters); this.isIncludeTitles = includeHeadlines; } // The Arvores Deitadas Corpus has information about texts and paragraphs. public SentenceSample read() throws IOException { if (sent == null) { sent = this.adSentenceStream.read(); updateMeta(); if (sent == null) { return null; } } StringBuilder document = new StringBuilder(); List sentences = new ArrayList<>(); do { do { if (!isTitle || isIncludeTitles) { if (hasPunctuation(sent.getText())) { int start = document.length(); document.append(sent.getText()); sentences.add(new Span(start, document.length())); document.append(" "); } } sent = this.adSentenceStream.read(); updateMeta(); } while (isSamePara); // break; // got one paragraph! } while (isSameText); String doc; if (document.length() > 0) { doc = document.substring(0, document.length() - 1); } else { doc = document.toString(); } return new SentenceSample(doc, sentences.toArray(new Span[sentences.size()])); } private boolean hasPunctuation(String text) { text = text.trim(); if (text.length() > 0) { char lastChar = text.charAt(text.length() - 1); return Arrays.binarySearch(ptEosCharacters, lastChar) >= 0; } return false; } // there are some different types of metadata depending on the corpus. // todo: merge this patterns private Pattern meta1 = Pattern .compile("^(?:[a-zA-Z\\-]*(\\d+)).*?p=(\\d+).*"); private void updateMeta() { if (this.sent != null) { String meta = this.sent.getMetadata(); Matcher m = meta1.matcher(meta); int currentText; int currentPara; if (m.matches()) { currentText = Integer.parseInt(m.group(1)); currentPara = Integer.parseInt(m.group(2)); } else { throw new RuntimeException("Invalid metadata: " + meta); } isSamePara = isSameText = false; if (currentText == text) isSameText = true; if (isSameText && currentPara == para) isSamePara = true; isTitle = meta.contains("title"); text = currentText; para = currentPara; } else { this.isSamePara = this.isSameText = false; } } public void reset() throws IOException, UnsupportedOperationException { adSentenceStream.reset(); } public void close() throws IOException { adSentenceStream.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADSentenceStream.java0100664 0001750 0001750 00000042642 14135770370 033603 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.Stack; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Node; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Stream filter which merges text lines into sentences, following the Arvores * Deitadas syntax. *

* Information about the format:
* Susana Afonso. * "Árvores deitadas: Descrição do formato e das opções de análise na Floresta Sintáctica" * .
* 12 de Fevereiro de 2006. * http://www.linguateca.pt/documentos/Afonso2006ArvoresDeitadas.pdf *

* The format specification can be found * here. */ public class LetsmtDocument { public static class LetsmtSentence { private String nonTokenizedText; private String[] tokens; public String getNonTokenizedText() { return nonTokenizedText; } public String[] getTokens() { if (tokens != null) { return Arrays.copyOf(tokens, tokens.length); } return null; } } // define a content handler to receive the sax events ... public static class LetsmtDocumentHandler extends DefaultHandler { private List sentences = new ArrayList<>(); private StringBuilder chars = new StringBuilder(); private List tokens = new ArrayList<>(); @Override public void characters(char[] ch, int start, int length) throws SAXException { chars.append(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); // Note: // words are optional in sentences, if there are no words just the chars have to be captured switch (qName) { case "w": tokens.add(chars.toString().trim()); chars.setLength(0); break; // TODO: The sentence should contain the id, so it can be tracked back to the // place it came from case "s": LetsmtSentence sentence = new LetsmtSentence(); if (tokens.size() > 0) { sentence.tokens = tokens.toArray(new String[tokens.size()]); tokens = new ArrayList<>(); } else { sentence.nonTokenizedText = chars.toString().trim(); } sentences.add(sentence); chars.setLength(0); } } } private List sentences = new ArrayList<>(); private LetsmtDocument(List sentences) { this.sentences = sentences; } public List getSentences() { return Collections.unmodifiableList(sentences); } static LetsmtDocument parse(InputStream letsmtXmlIn) throws IOException { SAXParser saxParser = XmlUtil.createSaxParser(); try { XMLReader xmlReader = saxParser.getXMLReader(); LetsmtDocumentHandler docHandler = new LetsmtDocumentHandler(); xmlReader.setContentHandler(docHandler); xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); xmlReader.parse(new InputSource(letsmtXmlIn)); return new LetsmtDocument(docHandler.sentences); } catch (SAXException e) { throw new IOException("Failed to parse letsmt xml!", e); } } static LetsmtDocument parse(File file) throws IOException { try (InputStream in = new FileInputStream(file)) { return parse(in); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_letsmt_De0100644 0000000 0000000 00000000177 14135770370 032644 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/DetokenizeSentence0100664 0001750 0001750 00000004724 14135770370 034247 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.letsmt; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class DetokenizeSentenceSampleStream extends FilterObjectStream { private final Detokenizer detokenizer; public DetokenizeSentenceSampleStream(Detokenizer detokenizer, ObjectStream samples) { super(samples); this.detokenizer = Objects.requireNonNull(detokenizer); } @Override public SentenceSample read() throws IOException { SentenceSample sample = samples.read(); if (sample != null) { List sentenceTexts = new ArrayList<>(); for (Span sentenceSpan : sample.getSentences()) { sentenceTexts.add(sample.getDocument().substring(sentenceSpan.getStart(), sentenceSpan.getEnd())); } StringBuilder documentText = new StringBuilder(); List newSentenceSpans = new ArrayList<>(); for (String sentenceText : sentenceTexts) { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(sentenceText); int begin = documentText.length(); documentText.append(detokenizer.detokenize(tokens, null)); newSentenceSpans.add(new Span(begin, documentText.length())); documentText.append(' '); } return new SentenceSample(documentText, newSentenceSpans.toArray(new Span[newSentenceSpans.size()])); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_letsmt_Le0100644 0000000 0000000 00000000174 14135770370 032651 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/letsmt/LetsmtSentenceStre0100664 0001750 0001750 00000006025 14135770370 034250 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.letsmt; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.tokenize.DetokenizationDictionary; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.DictionaryDetokenizer; import opennlp.tools.util.ObjectStream; public class LetsmtSentenceStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { @ArgumentParser.ParameterDescription(valueName = "dictionary", description = "specifies the file with detokenizer dictionary.") @ArgumentParser.OptionalParameter File getDetokenizer(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "letsmt", new LetsmtSentenceStreamFactory( LetsmtSentenceStreamFactory.Parameters.class)); } protected

* Note: Do not use this class, internal use only! */ public class ADSentenceStream extends FilterObjectStream { public static class Sentence { private String text; private Node root; private String metadata; public static final String META_LABEL_FINAL = "final"; public String getText() { return text; } public void setText(String text) { this.text = text; } public Node getRoot() { return root; } public void setRoot(Node root) { this.root = root; } public void setMetadata(String metadata) { this.metadata = metadata; } public String getMetadata() { return metadata; } } /** * Parses a sample of AD corpus. A sentence in AD corpus is represented by a * Tree. In this class we declare some types to represent that tree. Today we get only * the first alternative (A1). */ public static class SentenceParser { private Pattern nodePattern = Pattern .compile("([=-]*)([^:=]+:[^\\(\\s]+)(\\(([^\\)]+)\\))?\\s*(?:(\\((<.+>)\\))*)\\s*$"); private Pattern leafPattern = Pattern .compile("^([=-]*)([^:=]+):([^\\(\\s]+)\\([\"'](.+)[\"']\\s*((?:<.+>)*)\\s*([^\\)]+)?\\)\\s+(.+)"); private Pattern bizarreLeafPattern = Pattern .compile("^([=-]*)([^:=]+=[^\\(\\s]+)\\(([\"'].+[\"'])?\\s*([^\\)]+)?\\)\\s+(.+)"); private Pattern punctuationPattern = Pattern.compile("^(=*)(\\W+)$"); private String text,meta; /** * Parse the sentence */ public Sentence parse(String sentenceString, int para, boolean isTitle, boolean isBox) { BufferedReader reader = new BufferedReader(new StringReader(sentenceString)); Sentence sentence = new Sentence(); Node root = new Node(); try { // first line is String line = reader.readLine(); boolean useSameTextAndMeta = false; // to handle cases where there are diff sug of parse (&&) // should find the source source while (!line.startsWith("SOURCE")) { if (line.equals("&&")) { // same sentence again! useSameTextAndMeta = true; break; } line = reader.readLine(); if (line == null) { return null; } } if (!useSameTextAndMeta) { // got source, get the metadata String metaFromSource = line.substring(7); line = reader.readLine(); // we should have the plain sentence // we remove the first token int start = line.indexOf(" "); text = line.substring(start + 1).trim(); text = fixPunctuation(text); String titleTag = ""; if (isTitle) titleTag = " title"; String boxTag = ""; if (isBox) boxTag = " box"; if (start > 0) { meta = line.substring(0, start) + " p=" + para + titleTag + boxTag + metaFromSource; } } sentence.setText(text); sentence.setMetadata(meta); // now we look for the root node // skip lines starting with ### line = reader.readLine(); while (line != null && line.startsWith("###")) { line = reader.readLine(); } // got the root. Add it to the stack Stack nodeStack = new Stack<>(); root.setSyntacticTag("ROOT"); root.setLevel(0); nodeStack.add(root); /* now we have to take care of the lastLevel. Every time it raises, we will add the leaf to the node at the top. If it decreases, we remove the top. */ while (line != null && line.length() != 0 && !line.startsWith("") && !line.equals("&&")) { TreeElement element = this.getElement(line); if (element != null) { // The idea here is to keep a stack of nodes that are candidates for // parenting the following elements (nodes and leafs). // 1) When we get a new element, we check its level and remove from // the top of the stack nodes that are brothers or nephews. while (!nodeStack.isEmpty() && element.getLevel() > 0 && element.getLevel() <= nodeStack.peek().getLevel()) { Node nephew = nodeStack.pop(); } if (element.isLeaf() ) { // 2a) If the element is a leaf and there is no parent candidate, // add it as a daughter of the root. if (nodeStack.isEmpty()) { root.addElement(element); } else { // 2b) There are parent candidates. // look for the node with the correct level Node peek = nodeStack.peek(); if (element.level == 0) { // add to the root nodeStack.firstElement().addElement(element); } else { Node parent = null; int index = nodeStack.size() - 1; while (parent == null) { if (peek.getLevel() < element.getLevel()) { parent = peek; } else { index--; if (index > -1) { peek = nodeStack.get(index); } else { parent = nodeStack.firstElement(); } } } parent.addElement(element); } } } else { // 3) Check if the element that is at the top of the stack is this // node parent, if yes add it as a son if (!nodeStack.isEmpty() && nodeStack.peek().getLevel() < element.getLevel()) { nodeStack.peek().addElement(element); } else { System.err.println("should not happen!"); } // 4) Add it to the stack so it is a parent candidate. nodeStack.push((Node) element); } } line = reader.readLine(); } } catch (Exception e) { System.err.println(sentenceString); e.printStackTrace(); return sentence; } // second line should be SOURCE sentence.setRoot(root); return sentence; } private String fixPunctuation(String text) { text = text.replaceAll("\\»\\s+\\.", "»."); text = text.replaceAll("\\»\\s+\\,", "»,"); return text; } /** * Parse a tree element from a AD line * * @param line * the AD line * @return the tree element */ public TreeElement getElement(String line) { // Note: all levels are higher than 1, because 0 is reserved for the root. // try node Matcher nodeMatcher = nodePattern.matcher(line); if (nodeMatcher.matches()) { int level = nodeMatcher.group(1).length() + 1; String syntacticTag = nodeMatcher.group(2); Node node = new Node(); node.setLevel(level); node.setSyntacticTag(syntacticTag); return node; } Matcher leafMatcher = leafPattern.matcher(line); if (leafMatcher.matches()) { int level = leafMatcher.group(1).length() + 1; String syntacticTag = leafMatcher.group(2); String funcTag = leafMatcher.group(3); String lemma = leafMatcher.group(4); String secondaryTag = leafMatcher.group(5); String morphologicalTag = leafMatcher.group(6); String lexeme = leafMatcher.group(7); Leaf leaf = new Leaf(); leaf.setLevel(level); leaf.setSyntacticTag(syntacticTag); leaf.setFunctionalTag(funcTag); leaf.setSecondaryTag(secondaryTag); leaf.setMorphologicalTag(morphologicalTag); leaf.setLexeme(lexeme); leaf.setLemma(lemma); return leaf; } Matcher punctuationMatcher = punctuationPattern.matcher(line); if (punctuationMatcher.matches()) { int level = punctuationMatcher.group(1).length() + 1; String lexeme = punctuationMatcher.group(2); Leaf leaf = new Leaf(); leaf.setLevel(level); leaf.setLexeme(lexeme); return leaf; } // process the bizarre cases if (line.equals("_") || line.startsWith("].*")) { return null; } Leaf leaf = new Leaf(); leaf.setLevel(level + 1); leaf.setSyntacticTag(""); leaf.setMorphologicalTag(""); leaf.setLexeme(lexeme); return leaf; } } System.err.println("Couldn't parse leaf: " + line); Leaf leaf = new Leaf(); leaf.setLevel(1); leaf.setSyntacticTag(""); leaf.setMorphologicalTag(""); leaf.setLexeme(line); return leaf; } /** Represents a tree element, Node or Leaf */ public abstract class TreeElement { private String syntacticTag; private String morphologicalTag; private int level; public boolean isLeaf() { return false; } public void setSyntacticTag(String syntacticTag) { this.syntacticTag = syntacticTag; } public String getSyntacticTag() { return syntacticTag; } public void setLevel(int level) { this.level = level; } public int getLevel() { return level; } public void setMorphologicalTag(String morphologicalTag) { this.morphologicalTag = morphologicalTag; } public String getMorphologicalTag() { return morphologicalTag; } } /** Represents the AD node */ public class Node extends TreeElement { private List elems = new ArrayList<>(); public void addElement(TreeElement element) { elems.add(element); } public TreeElement[] getElements() { return elems.toArray(new TreeElement[elems.size()]); } @Override public String toString() { StringBuilder sb = new StringBuilder(); // print itself and its children for (int i = 0; i < this.getLevel(); i++) { sb.append("="); } sb.append(this.getSyntacticTag()); if (this.getMorphologicalTag() != null) { sb.append(this.getMorphologicalTag()); } sb.append("\n"); for (TreeElement element : elems) { sb.append(element.toString()); } return sb.toString(); } } /** Represents the AD leaf */ public class Leaf extends TreeElement { private String word; private String lemma; private String secondaryTag; private String functionalTag; @Override public boolean isLeaf() { return true; } public void setFunctionalTag(String funcTag) { this.functionalTag = funcTag; } public String getFunctionalTag() { return this.functionalTag; } public void setSecondaryTag(String secondaryTag) { this.secondaryTag = secondaryTag; } public String getSecondaryTag() { return this.secondaryTag; } public void setLexeme(String lexeme) { this.word = lexeme; } public String getLexeme() { return word; } private String emptyOrString(String value, String prefix, String suffix) { if (value == null) return ""; return prefix + value + suffix; } @Override public String toString() { StringBuilder sb = new StringBuilder(); // print itself and its children for (int i = 0; i < this.getLevel(); i++) { sb.append("="); } if (this.getSyntacticTag() != null) { sb.append(this.getSyntacticTag()).append(":") .append(getFunctionalTag()).append("(") .append(emptyOrString(getLemma(), "'", "' ")) .append(emptyOrString(getSecondaryTag(), "", " ")) .append(this.getMorphologicalTag()).append(") "); } sb.append(this.word).append("\n"); return sb.toString(); } public void setLemma(String lemma) { this.lemma = lemma; } public String getLemma() { return lemma; } } } /** * The start sentence pattern */ private static final Pattern sentStart = Pattern.compile("]*>"); /** * The end sentence pattern */ private static final Pattern sentEnd = Pattern.compile(""); private static final Pattern extEnd = Pattern.compile(""); /** * The start sentence pattern */ private static final Pattern titleStart = Pattern.compile("]*>"); /** * The end sentence pattern */ private static final Pattern titleEnd = Pattern.compile(""); /** * The start sentence pattern */ private static final Pattern boxStart = Pattern.compile("]*>"); /** * The end sentence pattern */ private static final Pattern boxEnd = Pattern.compile(""); /** * The start sentence pattern */ private static final Pattern paraStart = Pattern.compile("]*>"); /** * The start sentence pattern */ private static final Pattern textStart = Pattern.compile("]*>"); private SentenceParser parser; private int paraID = 0; private boolean isTitle = false; private boolean isBox = false; public ADSentenceStream(ObjectStream lineStream) { super(lineStream); parser = new SentenceParser(); } public Sentence read() throws IOException { StringBuilder sentence = new StringBuilder(); boolean sentenceStarted = false; while (true) { String line = samples.read(); if (line != null) { if (sentenceStarted) { if (sentEnd.matcher(line).matches() || extEnd.matcher(line).matches()) { sentenceStarted = false; } else if (!line.startsWith("A1")) { sentence.append(line).append('\n'); } } else { if (sentStart.matcher(line).matches()) { sentenceStarted = true; } else if (paraStart.matcher(line).matches()) { paraID++; } else if (titleStart.matcher(line).matches()) { isTitle = true; } else if (titleEnd.matcher(line).matches()) { isTitle = false; } else if (textStart.matcher(line).matches()) { paraID = 0; } else if (boxStart.matcher(line).matches()) { isBox = true; } else if (boxEnd.matcher(line).matches()) { isBox = false; } } if (!sentenceStarted && sentence.length() > 0) { return parser.parse(sentence.toString(), paraID, isTitle, isBox); } } else { // handle end of file if (sentenceStarted) { if (sentence.length() > 0) { return parser.parse(sentence.toString(), paraID, isTitle, isBox); } } else { return null; } } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADToke0100644 0000000 0000000 00000000167 14135770370 032476 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADTokenSampleStreamFac0100664 0001750 0001750 00000004174 14135770370 033751 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.convert.NameToTokenSampleStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ADTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends ADNameSampleStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, "ad", new ADTokenSampleStreamFactory(Parameters.class)); } protected

ADTokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream samples = StreamFactoryRegistry.getFactory( NameSample.class, "ad").create( ArgumentParser.filter(args, ADNameSampleStreamFactory.Parameters.class)); return new NameToTokenSampleStream(createDetokenizer(params), samples); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADChun0100644 0000000 0000000 00000000167 14135770370 032471 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADChunkSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADChunkSampleStreamFac0100664 0001750 0001750 00000007054 14135770370 033741 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.LanguageSampleStreamFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * A Factory to create a Arvores Deitadas ChunkStream from the command line * utility. *

* Note: Do not use this class, internal use only! */ public class ADChunkSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters { //all have to be repeated, because encoding is not optional, //according to the check if (encoding == null) { below (now removed) @ParameterDescription(valueName = "charsetName", description = "encoding for reading and writing text, if absent the system default is used.") Charset getEncoding(); @ParameterDescription(valueName = "sampleData", description = "data to be used, usually a file name.") File getData(); @ParameterDescription(valueName = "language", description = "language which is being processed.") String getLang(); @ParameterDescription(valueName = "start", description = "index of first sentence") @OptionalParameter Integer getStart(); @ParameterDescription(valueName = "end", description = "index of last sentence") @OptionalParameter Integer getEnd(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(ChunkSample.class, "ad", new ADChunkSampleStreamFactory(Parameters.class)); } protected

ADChunkSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); language = params.getLang(); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } ADChunkSampleStream sampleStream = new ADChunkSampleStream(lineStream); if (params.getStart() != null && params.getStart() > -1) { sampleStream.setStart(params.getStart()); } if (params.getEnd() != null && params.getEnd() > -1) { sampleStream.setEnd(params.getEnd()); } return sampleStream; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_Portug0100644 0000000 0000000 00000000171 14135770370 032642 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/PortugueseContractionUtility.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/PortugueseContractionU0100664 0001750 0001750 00000015535 14135770370 034232 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.util.Collections; import java.util.HashMap; import java.util.Map; import opennlp.tools.util.StringUtil; /** * Utility class to handle Portuguese contractions. *

* Some Corpora splits contractions in its parts, for example, "da" > "de" + * "a", but according to the fase of language processing, NER for instance, we * can't decide if to split a contraction or not, specially because contractions * inside names are not separated, but outside are. * *

* Note: Do not use this class, internal use only! */ public class PortugueseContractionUtility { protected static final Map CONTRACTIONS; static { Map elems = new HashMap<>(); // 103 CONTRACTIONS. elems.put("a+a", "\u00e0"); elems.put("a+as", "\u00e0s"); elems.put("a+aquele", "\u00e0quele"); elems.put("a+aqueles", "\u00e0queles"); elems.put("a+aquela", "\u00e0quela"); elems.put("a+aquelas", "\u00e0quelas"); elems.put("a+aquilo", "\u00e0quilo"); elems.put("a+o", "ao"); elems.put("a+os", "aos"); elems.put("com+mim", "comigo"); elems.put("com+n\u00f2s", "conosco"); elems.put("com+si", "consigo"); elems.put("com+ti", "contigo"); elems.put("com+v\u00f2s", "convosco"); elems.put("de+a\u00ed", "da\u00ed"); elems.put("de+algu\u00e9m", "dalgu\u00e9m"); elems.put("de+algum", "dalgum"); elems.put("de+alguma", "dalguma"); elems.put("de+alguns", "dalguns"); elems.put("de+algumas", "dalgumas"); elems.put("de+ali", "dali"); elems.put("de+aqu\u00e9m", "daqu\u00e9m"); elems.put("de+aquele", "daquele"); elems.put("de+aquela", "daquela"); elems.put("de+aqueles", "daqueles"); elems.put("de+aquelas", "daquelas"); elems.put("de+aqui", "daqui"); elems.put("de+aquilo", "daquilo"); elems.put("de+ele", "dele"); elems.put("de+ela", "dela"); elems.put("de+eles", "deles"); elems.put("de+elas", "delas"); elems.put("de+entre", "dentre"); elems.put("de+esse", "desse"); elems.put("de+essa", "dessa"); elems.put("de+esses", "desses"); elems.put("de+essas", "dessas"); elems.put("de+este", "deste"); elems.put("de+esta", "desta"); elems.put("de+estes", "destes"); elems.put("de+estas", "destas"); elems.put("de+isso", "disso"); elems.put("de+isto", "disto"); elems.put("de+o", "do"); elems.put("de+a", "da"); elems.put("de+os", "dos"); elems.put("de+as", "das"); elems.put("de+outrem", "doutrem"); elems.put("de+outro", "doutro"); elems.put("de+outra", "doutra"); elems.put("de+outros", "doutros"); elems.put("de+outras", "doutras"); elems.put("de+um", "dum"); elems.put("de+uma", "duma"); elems.put("de+uns", "duns"); elems.put("de+umas", "dumas"); elems.put("esse+outro", "essoutro"); elems.put("essa+outra", "essoutra"); elems.put("este+outro", "estoutro"); elems.put("este+outra", "estoutra"); elems.put("ele+o", "lho"); elems.put("ele+a", "lha"); elems.put("ele+os", "lhos"); elems.put("ele+as", "lhas"); elems.put("em+algum", "nalgum"); elems.put("em+alguma", "nalguma"); elems.put("em+alguns", "nalguns"); elems.put("em+algumas", "nalgumas"); elems.put("em+aquele", "naquele"); elems.put("em+aquela", "naquela"); elems.put("em+aqueles", "naqueles"); elems.put("em+aquelas", "naquelas"); elems.put("em+aquilo", "naquilo"); elems.put("em+ele", "nele"); elems.put("em+ela", "nela"); elems.put("em+eles", "neles"); elems.put("em+elas", "nelas"); elems.put("em+esse", "nesse"); elems.put("em+essa", "nessa"); elems.put("em+esses", "nesses"); elems.put("em+essas", "nessas"); elems.put("em+este", "neste"); elems.put("em+esta", "nesta"); elems.put("em+estes", "nestes"); elems.put("em+estas", "nestas"); elems.put("em+isso", "nisso"); elems.put("em+isto", "nisto"); elems.put("em+o", "no"); elems.put("em+a", "na"); elems.put("em+os", "nos"); elems.put("em+as", "nas"); elems.put("em+outro", "noutro"); elems.put("em+outra", "noutra"); elems.put("em+outros", "noutros"); elems.put("em+outras", "noutras"); elems.put("em+um", "num"); elems.put("em+uma", "numa"); elems.put("em+uns", "nuns"); elems.put("em+umas", "numas"); elems.put("por+o", "pelo"); elems.put("por+a", "pela"); elems.put("por+os", "pelos"); elems.put("por+as", "pelas"); elems.put("para+a", "pra"); elems.put("para+o", "pro"); elems.put("para+as", "pras"); elems.put("para+os", "pros"); CONTRACTIONS = Collections.unmodifiableMap(elems); } /** * Merges a contraction * * @param left * the left component * @param right * the right component * @return the merged contraction */ public static String toContraction(String left, String right) { String key = left + "+" + right; if (CONTRACTIONS.containsKey(key)) { return CONTRACTIONS.get(key); } else { StringBuilder sb = new StringBuilder(); String[] parts = left.split("_"); for (int i = 0; i < parts.length - 1; i++) { sb.append(parts[i]).append(" "); } key = parts[parts.length - 1] + "+" + right; if (CONTRACTIONS.containsKey(key)) { sb.append(CONTRACTIONS.get(key)); return sb.toString(); } if (right.contains("_")) { parts = right.split("_"); key = left + "+" + parts[0]; if (CONTRACTIONS.containsKey(key)) { sb.append(CONTRACTIONS.get(key)).append(" "); for (int i = 1; i < parts.length; i++) { sb.append(parts[i]).append(" "); } return sb.toString(); } } String leftLower = StringUtil.toLowerCase(parts[parts.length - 1]); key = leftLower + "+" + right; if (CONTRACTIONS.containsKey(key)) { String r = CONTRACTIONS.get(key); String firstChar = r.substring(0, 1); r = StringUtil.toUpperCase(firstChar) + r.substring(1); sb.append(r); return sb.toString(); } } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ad_ADPOSS0100644 0000000 0000000 00000000156 14135770370 032356 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADPOSSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ad/ADPOSSampleStream.java0100664 0001750 0001750 00000013322 14135770370 033633 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ad; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import opennlp.tools.formats.ad.ADSentenceStream.Sentence; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Leaf; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.Node; import opennlp.tools.formats.ad.ADSentenceStream.SentenceParser.TreeElement; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Note: Do not use this class, internal use only! */ public class ADPOSSampleStream implements ObjectStream { private final ObjectStream adSentenceStream; private boolean expandME; private boolean isIncludeFeatures; /** * Creates a new {@link POSSample} stream from a line stream, i.e. * {@link ObjectStream}<{@link String}>, that could be a * {@link PlainTextByLineStream} object. * * @param lineStream * a stream of lines as {@link String} * @param expandME * if true will expand the multiword expressions, each word of the * expression will have the POS Tag that was attributed to the * expression plus the prefix B- or I- (CONLL convention) * @param includeFeatures * if true will combine the POS Tag with the feature tags */ public ADPOSSampleStream(ObjectStream lineStream, boolean expandME, boolean includeFeatures) { this.adSentenceStream = new ADSentenceStream(lineStream); this.expandME = expandME; this.isIncludeFeatures = includeFeatures; } /** * Creates a new {@link POSSample} stream from a {@link InputStream} * * @param in * the Corpus {@link InputStream} * @param charsetName * the charset of the Arvores Deitadas Corpus * @param expandME * if true will expand the multiword expressions, each word of the * expression will have the POS Tag that was attributed to the * expression plus the prefix B- or I- (CONLL convention) * @param includeFeatures * if true will combine the POS Tag with the feature tags */ public ADPOSSampleStream(InputStreamFactory in, String charsetName, boolean expandME, boolean includeFeatures) throws IOException { try { this.adSentenceStream = new ADSentenceStream(new PlainTextByLineStream(in, charsetName)); this.expandME = expandME; this.isIncludeFeatures = includeFeatures; } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } } public POSSample read() throws IOException { Sentence paragraph; while ((paragraph = this.adSentenceStream.read()) != null) { Node root = paragraph.getRoot(); List sentence = new ArrayList<>(); List tags = new ArrayList<>(); process(root, sentence, tags); return new POSSample(sentence, tags); } return null; } private void process(Node node, List sentence, List tags) { if (node != null) { for (TreeElement element : node.getElements()) { if (element.isLeaf()) { processLeaf((Leaf) element, sentence, tags); } else { process((Node) element, sentence, tags); } } } } private void processLeaf(Leaf leaf, List sentence, List tags) { if (leaf != null) { String lexeme = leaf.getLexeme(); String tag = leaf.getFunctionalTag(); if (tag == null) { tag = leaf.getLexeme(); } if (isIncludeFeatures && leaf.getMorphologicalTag() != null) { tag += " " + leaf.getMorphologicalTag(); } tag = tag.replaceAll("\\s+", "="); if (tag == null) tag = lexeme; if (expandME && lexeme.contains("_")) { StringTokenizer tokenizer = new StringTokenizer(lexeme, "_"); if (tokenizer.countTokens() > 0) { List toks = new ArrayList<>(tokenizer.countTokens()); List tagsWithCont = new ArrayList<>( tokenizer.countTokens()); toks.add(tokenizer.nextToken()); tagsWithCont.add("B-" + tag); while (tokenizer.hasMoreTokens()) { toks.add(tokenizer.nextToken()); tagsWithCont.add("I-" + tag); } sentence.addAll(toks); tags.addAll(tagsWithCont); } else { sentence.add(lexeme); tags.add(tag); } } else { sentence.add(lexeme); tags.add(tag); } } } public void reset() throws IOException, UnsupportedOperationException { adSentenceStream.reset(); } public void close() throws IOException { adSentenceStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Rela0100644 0000000 0000000 00000000161 14135770370 032610 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/RelationAnnotation.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/RelationAnnotation.j0100664 0001750 0001750 00000002463 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; public class RelationAnnotation extends BratAnnotation { private final String arg1; private final String arg2; protected RelationAnnotation(String id, String type, String arg1, String arg2) { super(id, type); this.arg1 = arg1; this.arg2 = arg2; } public String getArg1() { return arg1; } public String getArg2() { return arg2; } @Override public String toString() { return super.toString() + " arg1:" + getArg1() + " arg2:" + getArg2(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocument.java0100664 0001750 0001750 00000006702 14135770370 033406 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.util.ObjectStream; public class BratDocument { private final AnnotationConfiguration config; private final String id; private final String text; private final Map annotationMap; public BratDocument(AnnotationConfiguration config, String id, String text, Collection annotations) { this.config = config; this.id = id; this.text = text; Map annMap = new HashMap<>(); List noteList = new ArrayList<>(); for (BratAnnotation annotation : annotations) { if (annotation instanceof AnnotatorNoteAnnotation) { noteList.add((AnnotatorNoteAnnotation)annotation); } else { annMap.put(annotation.getId(), annotation); } } // attach AnnotatorNote to the appropriate Annotation. // the note should ALWAYS have an appropriate id in the map, // but just to be safe, check for null. for (AnnotatorNoteAnnotation note: noteList) { BratAnnotation annotation = annMap.get(note.getAttachedId()); if (annotation != null) { annotation.setNote(note.getNote()); } } annotationMap = Collections.unmodifiableMap(annMap); } public AnnotationConfiguration getConfig() { return config; } public String getId() { return id; } public String getText() { return text; } public BratAnnotation getAnnotation(String id) { return annotationMap.get(id); } public Collection getAnnotations() { return annotationMap.values(); } public static BratDocument parseDocument(AnnotationConfiguration config, String id, InputStream txtIn, InputStream annIn) throws IOException { Reader txtReader = new InputStreamReader(txtIn, StandardCharsets.UTF_8); StringBuilder text = new StringBuilder(); char[] cbuf = new char[1024]; int len; while ((len = txtReader.read(cbuf)) > 0) { text.append(cbuf, 0, len); } Collection annotations = new ArrayList<>(); ObjectStream annStream = new BratAnnotationStream(config, id, annIn); BratAnnotation ann; while ((ann = annStream.read()) != null) { annotations.add(ann); } annStream.close(); return new BratDocument(config, id, text.toString(), annotations); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Anno0100644 0000000 0000000 00000000166 14135770370 032625 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfiguration.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfigurat0100664 0001750 0001750 00000006731 14135770370 034235 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.HashMap; import java.util.Map; import opennlp.tools.tokenize.WhitespaceTokenizer; public class AnnotationConfiguration { public static final String SPAN_TYPE = "Span"; public static final String ENTITY_TYPE = "Entity"; public static final String RELATION_TYPE = "Relation"; public static final String ATTRIBUTE_TYPE = "Attribute"; public static final String EVENT_TYPE = "Event"; private final Map typeToClassMap; public AnnotationConfiguration(Map typeToClassMap) { this.typeToClassMap = Collections.unmodifiableMap(new HashMap<>(typeToClassMap)); } public String getTypeClass(String type) { return typeToClassMap.get(type); } public static AnnotationConfiguration parse(InputStream in) throws IOException { Map typeToClassMap = new HashMap<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); // Note: This only supports entities and relations section String line; String sectionType = null; while ((line = reader.readLine()) != null) { line = line.trim(); if (!line.isEmpty()) { if (!line.startsWith("#")) { if (line.startsWith("[") && line.endsWith("]")) { sectionType = line.substring(line.indexOf('[') + 1, line.indexOf(']')); } else { String typeName = WhitespaceTokenizer.INSTANCE.tokenize(line)[0]; switch (sectionType) { case "entities": typeToClassMap.put(typeName, AnnotationConfiguration.ENTITY_TYPE); break; case "relations": typeToClassMap.put(typeName, AnnotationConfiguration.RELATION_TYPE); break; case "attributes": typeToClassMap.put(typeName, AnnotationConfiguration.ATTRIBUTE_TYPE); break; case "events": typeToClassMap.put(typeName, AnnotationConfiguration.EVENT_TYPE); break; default: break; } } } } } return new AnnotationConfiguration(typeToClassMap); } public static AnnotationConfiguration parse(File annConfigFile) throws IOException { try (InputStream in = new BufferedInputStream(new FileInputStream(annConfigFile))) { return parse(in); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotation.java0100664 0001750 0001750 00000002671 14135770370 033743 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.util.Objects; public abstract class BratAnnotation { private final String id; private final String type; private String note; protected BratAnnotation(String id, String type) { this.id = Objects.requireNonNull(id); this.type = Objects.requireNonNull(type); this.note = ""; } public String getId() { return id; } public String getType() { return type; } public void setNote(String note) { this.note = note; } public String getNote() { return note; } @Override public String toString() { return (id + " " + type + " " + note).trim(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000163 14135770370 032617 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratNameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratNameSampleStream0100664 0001750 0001750 00000007464 14135770370 034114 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.IOException; import java.util.List; import java.util.Set; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.util.ObjectStream; /** * Generates Name Sample objects for a Brat Document object. */ public class BratNameSampleStream extends SegmenterObjectStream { private final BratDocumentParser parser; /** * Creates a new {@link BratNameSampleStream}. * @param sentDetector a {@link SentenceDetector} instance * @param tokenizer a {@link Tokenizer} instance * @param samples a {@link BratDocument} {@link ObjectStream} */ public BratNameSampleStream(SentenceDetector sentDetector, Tokenizer tokenizer, ObjectStream samples) { super(samples); this.parser = new BratDocumentParser(sentDetector, tokenizer, null); } /** * Creates a new {@link BratNameSampleStream}. * @param sentModel a {@link SentenceModel} model * @param tokenModel a {@link TokenizerModel} model * @param samples a {@link BratDocument} {@link ObjectStream} */ public BratNameSampleStream(SentenceModel sentModel, TokenizerModel tokenModel, ObjectStream samples) { super(samples); // TODO: We can pass in custom validators here ... this.parser = new BratDocumentParser(new SentenceDetectorME(sentModel), new TokenizerME(tokenModel), null); } /** * Creates a new {@link BratNameSampleStream}. * @param sentDetector a {@link SentenceDetector} instance * @param tokenizer a {@link Tokenizer} instance * @param samples a {@link BratDocument} {@link ObjectStream} * @param nameTypes the name types to use or null if all name types */ public BratNameSampleStream(SentenceDetector sentDetector, Tokenizer tokenizer, ObjectStream samples, Set nameTypes) { super(samples); this.parser = new BratDocumentParser(sentDetector, tokenizer, nameTypes); } /** * Creates a new {@link BratNameSampleStream}. * @param sentModel a {@link SentenceModel} model * @param tokenModel a {@link TokenizerModel} model * @param samples a {@link BratDocument} {@link ObjectStream} * @param nameTypes the name types to use or null if all name types */ public BratNameSampleStream(SentenceModel sentModel, TokenizerModel tokenModel, ObjectStream samples, Set nameTypes) { super(samples); // TODO: We can pass in custom validators here ... this.parser = new BratDocumentParser(new SentenceDetectorME(sentModel), new TokenizerME(tokenModel), nameTypes); } @Override protected List read(BratDocument sample) throws IOException { return parser.parse(sample); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000172 14135770370 032617 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratNameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratNameSampleStream0100664 0001750 0001750 00000013302 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Set; import java.util.stream.Collectors; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.NewlineSentenceDetector; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; public class BratNameSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters { @ParameterDescription(valueName = "bratDataDir", description = "location of brat data dir") File getBratDataDir(); @ParameterDescription(valueName = "annConfFile") File getAnnotationConfig(); @ParameterDescription(valueName = "modelFile") @OptionalParameter File getSentenceDetectorModel(); @ParameterDescription(valueName = "modelFile") @OptionalParameter File getTokenizerModel(); @ParameterDescription(valueName = "name") @OptionalParameter String getRuleBasedTokenizer(); @ParameterDescription(valueName = "value") @OptionalParameter(defaultValue = "false") Boolean getRecursive(); @ParameterDescription(valueName = "names") @OptionalParameter String getNameTypes(); } protected BratNameSampleStreamFactory() { super(Parameters.class); } /** * Checks that non of the passed values are null. * * @param objects * @return true or false */ private boolean notNull(Object... objects) { for (Object obj : objects) { if (obj == null) return false; } return true; } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); if (notNull(params.getRuleBasedTokenizer(), params.getTokenizerModel())) { throw new TerminateToolException(-1, "Either use rule based or statistical tokenizer!"); } // TODO: Provide the file name to the annotation.conf file and implement the parser ... AnnotationConfiguration annConfig; try { annConfig = AnnotationConfiguration.parse(params.getAnnotationConfig()); } catch (IOException e) { throw new TerminateToolException(1, "Failed to parse annotation.conf file!"); } // TODO: Add an optional parameter to search recursive // TODO: How to handle the error here ? terminate the tool? not nice if used by API! ObjectStream samples; try { samples = new BratDocumentStream(annConfig, params.getBratDataDir(), params.getRecursive(), null); } catch (IOException e) { throw new TerminateToolException(-1, e.getMessage()); } SentenceDetector sentDetector; if (params.getSentenceDetectorModel() != null) { try { sentDetector = new SentenceDetectorME(new SentenceModel(params.getSentenceDetectorModel())); } catch (IOException e) { throw new TerminateToolException(-1, "Failed to load sentence detector model!", e); } } else { sentDetector = new NewlineSentenceDetector(); } Tokenizer tokenizer = WhitespaceTokenizer.INSTANCE; if (params.getTokenizerModel() != null) { try { tokenizer = new TokenizerME(new TokenizerModel(params.getTokenizerModel())); } catch (IOException e) { throw new TerminateToolException(-1, "Failed to load tokenizer model!", e); } } else if (params.getRuleBasedTokenizer() != null) { String tokenizerName = params.getRuleBasedTokenizer(); if ("simple".equals(tokenizerName)) { tokenizer = SimpleTokenizer.INSTANCE; } else if ("whitespace".equals(tokenizerName)) { tokenizer = WhitespaceTokenizer.INSTANCE; } else { throw new TerminateToolException(-1, "Unkown tokenizer: " + tokenizerName); } } Set nameTypes = null; if (params.getNameTypes() != null) { String[] nameTypesArr = params.getNameTypes().split(","); if (nameTypesArr.length > 0) { nameTypes = Arrays.stream(nameTypesArr).map(String::trim).collect(Collectors.toSet()); } } return new BratNameSampleStream(sentDetector, tokenizer, samples, nameTypes); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "brat", new BratNameSampleStreamFactory()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/SpanAnnotation.java0100664 0001750 0001750 00000002720 14135770370 033747 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.util.Arrays; import opennlp.tools.util.Span; public class SpanAnnotation extends BratAnnotation { private final Span[] spans; private final String coveredText; SpanAnnotation(String id, String type, Span[] spans, String coveredText) { super(id, type); this.spans = Arrays.copyOf(spans, spans.length); Arrays.sort(this.spans); this.coveredText = coveredText; } public Span[] getSpans() { return spans; } public String getCoveredText() { return coveredText; } @Override public String toString() { return super.toString() + " " + Arrays.toString(spans) + " " + getCoveredText(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000161 14135770370 032615 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentStream.j0100664 0001750 0001750 00000007341 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.BufferedInputStream; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Stack; import opennlp.tools.util.ObjectStream; public class BratDocumentStream implements ObjectStream { private AnnotationConfiguration config; private List documentIds = new LinkedList<>(); private Iterator documentIdIterator; /** * Creates a BratDocumentStream which reads the documents from the given input directory. * * @param config the annotation.conf from the brat project as an Annotation Configuration object * @param bratCorpusDirectory the directory containing all the brat training data files * @param searchRecursive specifies if the corpus directory should be traversed recursively * to find training data files. * @param fileFilter a custom file filter to filter out certain files or null to accept all files * * @throws IOException if reading from the brat directory fails in anyway */ public BratDocumentStream(AnnotationConfiguration config, File bratCorpusDirectory, boolean searchRecursive, FileFilter fileFilter) throws IOException { if (!bratCorpusDirectory.isDirectory()) { throw new IOException("Input corpus directory must be a directory " + "according to File.isDirectory()!"); } this.config = config; Stack directoryStack = new Stack<>(); directoryStack.add(bratCorpusDirectory); while (!directoryStack.isEmpty()) { for (File file : directoryStack.pop().listFiles(fileFilter)) { if (file.isFile()) { String annFilePath = file.getAbsolutePath(); if (annFilePath.endsWith(".ann")) { // cutoff last 4 chars ... String documentId = annFilePath.substring(0, annFilePath.length() - 4); File txtFile = new File(documentId + ".txt"); if (txtFile.exists() && txtFile.isFile()) { documentIds.add(documentId); } } } else if (searchRecursive && file.isDirectory()) { directoryStack.push(file); } } } reset(); } public BratDocument read() throws IOException { BratDocument doc = null; if (documentIdIterator.hasNext()) { String id = documentIdIterator.next(); try (InputStream txtIn = new BufferedInputStream(new FileInputStream(id + ".txt")); InputStream annIn = new BufferedInputStream(new FileInputStream(id + ".ann"))) { doc = BratDocument.parseDocument(config, id, txtIn, annIn); } } return doc; } public void reset() { documentIdIterator = documentIds.iterator(); } public void close() { // No longer needed, make the object unusable documentIds = null; documentIdIterator = null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Segm0100644 0000000 0000000 00000000164 14135770370 032623 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/SegmenterObjectStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/SegmenterObjectStrea0100664 0001750 0001750 00000003264 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.IOException; import java.util.Collections; import java.util.Iterator; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public abstract class SegmenterObjectStream extends FilterObjectStream { private Iterator sampleIt = Collections.emptySet().iterator(); public SegmenterObjectStream(ObjectStream in) { super(in); } protected abstract List read(S sample) throws IOException; public final T read() throws IOException { if (sampleIt.hasNext()) { return sampleIt.next(); } else { S inSample = samples.read(); if (inSample != null) { List outSamples = read(inSample); if (outSamples != null) { sampleIt = outSamples.iterator(); } return read(); } } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Attr0100644 0000000 0000000 00000000162 14135770370 032640 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AttributeAnnotation.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AttributeAnnotation.0100664 0001750 0001750 00000002557 14135770370 034157 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; public class AttributeAnnotation extends BratAnnotation { private final String attachedTo; private final String value; protected AttributeAnnotation(String id, String type, String attachedTo, String value) { super(id, type); this.attachedTo = attachedTo; this.value = value; } public String getAttachedTo() { return attachedTo; } public String getValue() { return value; } @Override public String toString() { return super.toString() + " " + attachedTo + (value != null ? " " + value : ""); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000161 14135770370 032615 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratDocumentParser.j0100664 0001750 0001750 00000015173 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.SentenceDetector; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.Span; public class BratDocumentParser { private SentenceDetector sentDetector; private Tokenizer tokenizer; private final Set nameTypes; public BratDocumentParser(SentenceDetector sentenceDetector, Tokenizer tokenizer) { this(sentenceDetector, tokenizer, null); } public BratDocumentParser(SentenceDetector sentenceDetector, Tokenizer tokenizer, Set nameTypes) { if (nameTypes != null && nameTypes.size() == 0) { throw new IllegalArgumentException("nameTypes should be null or have one or more elements"); } this.sentDetector = sentenceDetector; this.tokenizer = tokenizer; this.nameTypes = nameTypes; } public List parse(BratDocument sample) { // Note: Some entities might not match sentence boundaries, // to be able to print warning a set of entities id must be maintained // to check if all entities have been used up after the matching is done Set entityIdSet = new HashSet<>(); Map coveredIndexes = new HashMap<>(); for (BratAnnotation ann : sample.getAnnotations()) { if (isSpanAnnotation(ann)) { entityIdSet.add(ann.getId()); for (Span span : ((SpanAnnotation) ann).getSpans()) { for (int i = span.getStart(); i < span.getEnd(); i++) { coveredIndexes.put(i, span); } } } } // Map spans to tokens, and merge fragments based on token // // Detect sentence and correct sentence spans assuming no split can be inside a name annotation List sentences = new ArrayList<>(); for (Span sentence : sentDetector.sentPosDetect(sample.getText())) { Span conflictingName = coveredIndexes.get(sentence.getStart()); if (sentences.size() > 0 && conflictingName != null && conflictingName.getStart() < sentence.getStart()) { Span lastSentence = sentences.remove(sentences.size() - 1); sentences.add(new Span(lastSentence.getStart(), sentence.getEnd())); System.out.println("Correcting sentence segmentation in document " + sample.getId()); } else { sentences.add(sentence); } } // TODO: Token breaks should be enforced on name span boundaries // a) Just split tokens // b) Implement a custom token split validator which can be injected into the Tokenizer // Currently we are missing all List samples = new ArrayList<>(sentences.size()); for (Span sentence : sentences) { String sentenceText = sentence.getCoveredText( sample.getText()).toString(); Span[] tokens = tokenizer.tokenizePos(sentenceText); // Note: // A begin and end token index can be identical, but map to different // tokens, to distinguish between between the two begin indexes are // stored with a negative sign, and end indexes are stored with a positive sign // in the tokenIndexMap. // The tokenIndexMap maps to the sentence local token index. Map tokenIndexMap = new HashMap<>(); for (int i = 0; i < tokens.length; i++) { tokenIndexMap.put(-(sentence.getStart() + tokens[i].getStart()), i); tokenIndexMap.put(sentence.getStart() + tokens[i].getEnd(), i + 1); } List names = new ArrayList<>(); for (BratAnnotation ann : sample.getAnnotations()) { if (isSpanAnnotation(ann)) { SpanAnnotation entity = (SpanAnnotation) ann; List mappedFragments = new ArrayList<>(); for (Span entitySpan : entity.getSpans()) { if (sentence.contains(entitySpan)) { entityIdSet.remove(ann.getId()); entitySpan = entitySpan.trim(sample.getText()); Integer nameBeginIndex = tokenIndexMap.get(-entitySpan.getStart()); Integer nameEndIndex = tokenIndexMap.get(entitySpan.getEnd()); if (nameBeginIndex != null && nameEndIndex != null) { mappedFragments.add(new Span(nameBeginIndex, nameEndIndex, entity.getType())); } else { System.err.println("Dropped entity " + entity.getId() + " (" + entitySpan.getCoveredText(sample.getText()) + ") " + " in document " + sample.getId() + ", it is not matching tokenization!"); } } } Collections.sort(mappedFragments); for (int i = 1; i < mappedFragments.size(); i++) { if (mappedFragments.get(i - 1).getEnd() == mappedFragments.get(i).getStart()) { mappedFragments.set(i, new Span(mappedFragments.get(i - 1).getStart(), mappedFragments.get(i).getEnd(), mappedFragments.get(i).getType())); mappedFragments.set(i - 1, null); } } for (Span span : mappedFragments) { if (span != null ) { names.add(span); } } } } samples.add(new NameSample(sample.getId(), Span.spansToStrings(tokens, sentenceText), names.toArray(new Span[names.size()]), null, samples.size() == 0)); } for (String id : entityIdSet) { System.err.println("Dropped entity " + id + " in document " + sample.getId() + ", is not matching sentence segmentation!"); } return samples; } private boolean isSpanAnnotation(BratAnnotation ann) { return ann instanceof SpanAnnotation && (nameTypes == null || nameTypes.contains(ann.getType())); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Even0100644 0000000 0000000 00000000156 14135770370 032626 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java0100664 0001750 0001750 00000002727 14135770370 034136 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Objects; public class EventAnnotation extends BratAnnotation { private final String eventTrigger; private final Map arguments; protected EventAnnotation(String id, String type, String eventTrigger, Map arguments) { super(id, type); this.eventTrigger = Objects.requireNonNull(eventTrigger); this.arguments = Collections.unmodifiableMap(new HashMap<>(arguments)); } public String getEventTrigger() { return eventTrigger; } public Map getArguments() { return arguments; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Anno0100644 0000000 0000000 00000000166 14135770370 032625 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotatorNoteAnnotation.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotatorNoteAnnotat0100664 0001750 0001750 00000002245 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; public class AnnotatorNoteAnnotation extends BratAnnotation { private final String attachedId; protected AnnotatorNoteAnnotation(String id, String attachedId, String note) { super(id, "#AnnotationNote"); this.attachedId = attachedId; this.setNote(note); } public String getAttachedId() { return attachedId; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_brat_Brat0100644 0000000 0000000 00000000163 14135770370 032617 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/brat/BratAnnotationStream0100664 0001750 0001750 00000022350 14135770370 034173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.brat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * Reads the annotations from the brat .ann annotation file. */ public class BratAnnotationStream implements ObjectStream { static abstract class BratAnnotationParser { static final int ID_OFFSET = 0; static final int TYPE_OFFSET = 1; static final String NOTES_TYPE = "AnnotatorNotes"; BratAnnotation parse(Span[] tokens, CharSequence line) throws IOException { return null; } protected int parseInt(String intString) throws InvalidFormatException { try { return Integer.parseInt(intString); } catch (NumberFormatException e) { throw new InvalidFormatException(e); } } } static class SpanAnnotationParser extends BratAnnotationParser { private static final int BEGIN_OFFSET = 2; private static final int END_OFFSET = 3; @Override BratAnnotation parse(Span[] values, CharSequence line) throws IOException { if (values.length > 4) { String type = values[BratAnnotationParser.TYPE_OFFSET].getCoveredText(line).toString(); int firstTextTokenIndex = -1; int beginIndex = parseInt(values[BEGIN_OFFSET].getCoveredText(line).toString()); List fragments = new ArrayList<>(); for (int i = END_OFFSET; i < values.length; i++) { int endOffset; int nextBeginOffset = -1; if (values[i].getCoveredText(line).toString().contains(";")) { String[] parts = values[i].getCoveredText(line).toString().split(";"); endOffset = parseInt(parts[0]); fragments.add(new Span(beginIndex, endOffset, type)); beginIndex = parseInt(parts[1]); } else { endOffset = parseInt(values[i].getCoveredText(line).toString()); firstTextTokenIndex = i + 1; fragments.add(new Span(beginIndex, endOffset, type)); break; } } String id = values[BratAnnotationParser.ID_OFFSET].getCoveredText(line).toString(); String coveredText = line.subSequence(values[firstTextTokenIndex].getStart(), values[values.length - 1].getEnd()).toString(); try { return new SpanAnnotation(id, type, fragments.toArray(new Span[fragments.size()]), coveredText); } catch (IllegalArgumentException e) { throw new InvalidFormatException(e); } } else { throw new InvalidFormatException("Line must have at least 5 fields"); } } } static class RelationAnnotationParser extends BratAnnotationParser { private static final int ARG1_OFFSET = 2; private static final int ARG2_OFFSET = 3; private String parseArg(String arg) throws InvalidFormatException { if (arg.length() > 4) { return arg.substring(5).trim(); } else { throw new InvalidFormatException("Failed to parse argument: " + arg); } } @Override BratAnnotation parse(Span[] tokens, CharSequence line) throws IOException { return new RelationAnnotation(tokens[BratAnnotationParser.ID_OFFSET].getCoveredText(line).toString(), tokens[BratAnnotationParser.TYPE_OFFSET].getCoveredText(line).toString(), parseArg(tokens[ARG1_OFFSET].getCoveredText(line).toString()), parseArg(tokens[ARG2_OFFSET].getCoveredText(line).toString())); } } static class EventAnnotationParser extends BratAnnotationParser { @Override BratAnnotation parse(Span[] tokens, CharSequence line) throws IOException { String[] typeParts = tokens[TYPE_OFFSET].getCoveredText(line).toString().split(":"); if (typeParts.length != 2) { throw new InvalidFormatException(String.format( "Failed to parse [%s], type part must be in the format type:trigger", line)); } String type = typeParts[0]; String eventTrigger = typeParts[1]; Map arguments = new HashMap<>(); for (int i = TYPE_OFFSET + 1; i < tokens.length; i++) { String[] parts = tokens[i].getCoveredText(line).toString().split(":"); if (parts.length != 2) { throw new InvalidFormatException(String.format( "Failed to parse [%s], argument parts must be in form argument:value", line)); } arguments.put(parts[0], parts[1]); } return new EventAnnotation(tokens[ID_OFFSET].getCoveredText(line).toString(),type, eventTrigger, arguments); } } static class AttributeAnnotationParser extends BratAnnotationParser { private static final int ATTACHED_TO_OFFSET = 2; private static final int VALUE_OFFSET = 3; @Override BratAnnotation parse(Span[] values, CharSequence line) throws IOException { if (values.length == 3 || values.length == 4) { String value = null; if (values.length == 4) { value = values[VALUE_OFFSET].getCoveredText(line).toString(); } return new AttributeAnnotation(values[ID_OFFSET].getCoveredText(line).toString(), values[TYPE_OFFSET].getCoveredText(line).toString(), values[ATTACHED_TO_OFFSET].getCoveredText(line).toString(), value); } else { throw new InvalidFormatException("Line must have 3 or 4 fields"); } } } static class AnnotatorNoteParser extends BratAnnotationParser { private static final int ATTACH_TO_OFFSET = 2; private static final int START_VALUE_OFFSET = 3; @Override BratAnnotation parse(Span[] tokens, CharSequence line) throws IOException { Span noteSpan = new Span( tokens[START_VALUE_OFFSET].getStart(), tokens[tokens.length - 1].getEnd() ); return new AnnotatorNoteAnnotation(tokens[ID_OFFSET].getCoveredText(line).toString(), tokens[ATTACH_TO_OFFSET].getCoveredText(line).toString(), noteSpan.getCoveredText(line).toString()); } } private final AnnotationConfiguration config; private final BufferedReader reader; private final String id; BratAnnotationStream(AnnotationConfiguration config, String id, InputStream in) { this.config = config; this.id = id; reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); } public BratAnnotation read() throws IOException { String line = reader.readLine(); if (line != null) { Span[] tokens = WhitespaceTokenizer.INSTANCE.tokenizePos(line); if (tokens.length > 2) { String annId = tokens[BratAnnotationParser.ID_OFFSET].getCoveredText(line).toString(); if (annId.length() == 0) { throw new InvalidFormatException("annotation id is empty"); } // The first leter of the annotation id marks the annotation type final BratAnnotationParser parser; switch (annId.charAt(0)) { case 'T': parser = new SpanAnnotationParser(); break; case 'R': parser = new RelationAnnotationParser(); break; case 'A': parser = new AttributeAnnotationParser(); break; case 'E': parser = new EventAnnotationParser(); break; case '#': // the # can be a Note or a comment... if a note, handle it, otherwise skip the unsupported type.. if ( tokens[BratAnnotationParser.TYPE_OFFSET].getCoveredText(line).toString().equals( BratAnnotationParser.NOTES_TYPE) ) { parser = new AnnotatorNoteParser(); } else { return read(); } break; default: // Skip it, do that for everything unsupported (e.g. "*" id) return read(); } try { return parser.parse(tokens, line); } catch (IOException e) { throw new IOException(String.format("Failed to parse ann document with id [%s.ann]", id), e); } } } return null; } public void reset() throws IOException, UnsupportedOperationException { reader.reset(); } public void close() throws IOException { reader.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_TwentyNew0100644 0000000 0000000 00000000174 14135770370 032665 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TwentyNewsgroupSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TwentyNewsgroupSampleStre0100664 0001750 0001750 00000006746 14135770370 034363 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EncodingParameter; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; public class TwentyNewsgroupSampleStreamFactory extends AbstractSampleStreamFactory { public static void registerFactory() { StreamFactoryRegistry.registerFactory(DocumentSample.class, "20newsgroup", new TwentyNewsgroupSampleStreamFactory(TwentyNewsgroupSampleStreamFactory.Parameters.class)); } protected

TwentyNewsgroupSampleStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { TwentyNewsgroupSampleStreamFactory.Parameters params = ArgumentParser.parse(args, TwentyNewsgroupSampleStreamFactory.Parameters.class); Tokenizer tokenizer = WhitespaceTokenizer.INSTANCE; if (params.getTokenizerModel() != null) { try { tokenizer = new TokenizerME(new TokenizerModel(params.getTokenizerModel())); } catch (IOException e) { throw new TerminateToolException(-1, "Failed to load tokenizer model!", e); } } else if (params.getRuleBasedTokenizer() != null) { String tokenizerName = params.getRuleBasedTokenizer(); if ("simple".equals(tokenizerName)) { tokenizer = SimpleTokenizer.INSTANCE; } else if ("whitespace".equals(tokenizerName)) { tokenizer = WhitespaceTokenizer.INSTANCE; } else { throw new TerminateToolException(-1, "Unkown tokenizer: " + tokenizerName); } } try { return new TwentyNewsgroupSampleStream( tokenizer, params.getDataDir().toPath()); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while opening sample data: " + e.getMessage(), e); } } interface Parameters extends EncodingParameter { @ArgumentParser.ParameterDescription(valueName = "dataDir", description = "dir containing the 20newsgroup folders") File getDataDir(); @ArgumentParser.ParameterDescription(valueName = "modelFile") @ArgumentParser.OptionalParameter File getTokenizerModel(); @ArgumentParser.ParameterDescription(valueName = "name") @ArgumentParser.OptionalParameter String getRuleBasedTokenizer(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Directory0100644 0000000 0000000 00000000157 14135770370 032666 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DirectorySampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DirectorySampleStream.jav0100664 0001750 0001750 00000007131 14135770370 034205 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Stack; import opennlp.tools.util.ObjectStream; /** * The directory sample stream allows for creating a stream * from a directory listing of files. */ public class DirectorySampleStream implements ObjectStream { private final List inputDirectories; private final boolean recursive; private final FileFilter fileFilter; private Stack directories = new Stack<>(); private Stack textFiles = new Stack<>(); /** * Creates a new directory sample stream. * @param dirs The directories to read. * @param fileFilter The {@link FileFilter filter} to apply while enumerating files. * @param recursive Enables or disables recursive file listing. */ public DirectorySampleStream(File[] dirs, FileFilter fileFilter, boolean recursive) { this.fileFilter = fileFilter; this.recursive = recursive; List inputDirectoryList = new ArrayList<>(dirs.length); for (File dir : dirs) { if (!dir.isDirectory()) { throw new IllegalArgumentException( "All passed in directories must be directories, but \"" + dir + "\" is not!"); } inputDirectoryList.add(dir); } inputDirectories = Collections.unmodifiableList(inputDirectoryList); directories.addAll(inputDirectories); } /** * Creates a new directory sample stream. * @param dir The {@link File directory}. * @param fileFilter The {@link FileFilter filter} to apply while enumerating files. * @param recursive Enables or disables recursive file listing. */ public DirectorySampleStream(File dir, FileFilter fileFilter, boolean recursive) { this(new File[]{dir}, fileFilter, recursive); } @Override public File read() throws IOException { while (textFiles.isEmpty() && !directories.isEmpty()) { File dir = directories.pop(); File[] files; if (fileFilter != null) { files = dir.listFiles(fileFilter); } else { files = dir.listFiles(); } Arrays.sort(files); for (File file : files) { if (file.isFile()) { textFiles.push(file); } else if (recursive && file.isDirectory()) { directories.push(file); } } } if (!textFiles.isEmpty()) { return textFiles.pop(); } else { return null; } } @Override public void reset() { directories.clear(); textFiles.clear(); directories.addAll(inputDirectories); } /** * {@inheritDoc} * Calling this function has no effect on * the stream. */ @Override public void close() throws IOException { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000157 14135770370 032637 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluWordLine.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluWordLine.jav0100664 0001750 0001750 00000007341 14135770370 034122 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import opennlp.tools.util.InvalidFormatException; public class ConlluWordLine { private final String id; private final String form; private final String lemma; private final String uPosTag; private final String xPosTag; private final String feats; private final String head; private final String deprel; private final String deps; private final String misc; ConlluWordLine(String id, String form, String lemma, String uPosTag, String xPosTag, String feats, String head, String deprel, String deps, String misc) { this.id = id; this.form = form; this.lemma = lemma; this.uPosTag = uPosTag; this.xPosTag = xPosTag; this.feats = feats; this.head = head; this.deprel = deprel; this.deps = deps; this.misc = misc; } ConlluWordLine(String line) throws InvalidFormatException { String[] fields = line.split("\t"); if (fields.length != 10) { throw new InvalidFormatException("Line must have exactly 10 fields"); } id = fields[0]; form = fields[1]; lemma = fields[2]; uPosTag = fields[3]; xPosTag = fields[4]; feats = fields[5]; head = fields[6]; deprel = fields[7]; deps = fields[8]; misc = fields[9]; } /** * Retrieves the word index. An Integer starting at 1 for each new sentence; * may be a range for multiword tokens; may be a decimal number for empty nodes. */ public String getId() { return id; } /** * Retrieve the word form or punctuation symbol. */ public String getForm() { return form; } /** * Retrieve the lemma or stem of the word form. */ public String getLemma() { return lemma; } /** * Retrieve the Universal part-of-speech tag or the language-specific part-of-speech tag; * underscore if not available. * * @param tagset the type of tag to retrieve, either universial (u) or language specific (x) */ public String getPosTag(ConlluTagset tagset) { switch (tagset) { case U: return uPosTag; case X: return xPosTag; default: throw new IllegalStateException("Unexpected tagset value: " + tagset); } } /** * Retrieve list of morphological features from the universal feature inventory or from a * defined language-specific extension; underscore if not available. */ public String getFeats() { return feats; } /** * Head of the current word, which is either a value of ID or zero (0). */ public String getHead() { return head; } /** * Universal dependency relation to the HEAD (root iff HEAD = 0) or a * defined language-specific subtype of one. */ public String getDeprel() { return deprel; } /** * Enhanced dependency graph in the form of a list of head-deprel pairs. */ public String getDeps() { return deps; } /** * Retrieve any other annotation. */ public String getMisc() { return misc; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluTagset.java0100664 0001750 0001750 00000001557 14135770370 033772 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; public enum ConlluTagset { U, X } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000202 14135770370 032626 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSamp0100664 0001750 0001750 00000004653 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluSentenceSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { @ArgumentParser.ParameterDescription(valueName = "sentencesPerSample", description = "number of sentences per sample") String getSentencesPerSample(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, ConlluPOSSampleStreamFactory.CONLLU_FORMAT, new ConlluSentenceSampleStreamFactory(ConlluSentenceSampleStreamFactory.Parameters.class)); } protected

ConlluSentenceSampleStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); InputStreamFactory inFactory = CmdLineUtil.createInputStreamFactory(params.getData()); try { return new ConlluSentenceSampleStream(new ConlluStream(inFactory), Integer.parseInt(params.getSentencesPerSample())); } catch (IOException e) { // That will throw an exception CmdLineUtil.handleCreateObjectStreamError(e); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000173 14135770370 032635 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentenceSamp0100664 0001750 0001750 00000004104 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class ConlluSentenceSampleStream extends FilterObjectStream { private final int sentencesPerSample; public ConlluSentenceSampleStream(ObjectStream samples, int sentencesPerSample) { super(samples); this.sentencesPerSample = sentencesPerSample; } @Override public SentenceSample read() throws IOException { StringBuilder documentText = new StringBuilder(); List sentenceSpans = new ArrayList<>(); ConlluSentence sentence; for (int i = 0; i < sentencesPerSample && (sentence = samples.read()) != null; i++) { int startIndex = documentText.length(); documentText.append(sentence.getTextComment()).append(' '); sentenceSpans.add(new Span(startIndex, documentText.length() - 1)); } if (documentText.length() > 0) { documentText.setLength(documentText.length() - 1); return new SentenceSample(documentText, sentenceSpans.toArray(new Span[sentenceSpans.size()])); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000166 14135770370 032637 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluPOSSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluPOSSampleStr0100664 0001750 0001750 00000003421 14135770370 034107 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import opennlp.tools.postag.POSSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class ConlluPOSSampleStream extends FilterObjectStream { private final ConlluTagset tagset; ConlluPOSSampleStream(ObjectStream samples, ConlluTagset tagset) { super(samples); this.tagset = Objects.requireNonNull(tagset); } @Override public POSSample read() throws IOException { ConlluSentence sentence = samples.read(); if (sentence != null) { List tokens = new ArrayList<>(); List tags = new ArrayList<>(); for (ConlluWordLine line : sentence.getWordLines()) { tokens.add(line.getForm()); tags.add(line.getPosTag(tagset)); } return new POSSample(tokens, tags); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000170 14135770370 032632 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluLemmaSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluLemmaSampleS0100664 0001750 0001750 00000003522 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class ConlluLemmaSampleStream extends FilterObjectStream { private final ConlluTagset tagset; public ConlluLemmaSampleStream(ObjectStream samples, ConlluTagset tagset) { super(samples); this.tagset = tagset; } @Override public LemmaSample read() throws IOException { ConlluSentence sentence = samples.read(); if (sentence != null) { List tokens = new ArrayList<>(); List tags = new ArrayList<>(); List lemmas = new ArrayList<>(); for (ConlluWordLine line : sentence.getWordLines()) { tokens.add(line.getForm()); tags.add(line.getPosTag(tagset)); lemmas.add(line.getLemma()); } return new LemmaSample(tokens, tags, lemmas); } return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluStream.java0100664 0001750 0001750 00000014431 14135770370 033771 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.stream.Collectors; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ParagraphStream; import opennlp.tools.util.PlainTextByLineStream; /** * The CoNNL-U Format is specified here: * http://universaldependencies.org/format.html */ public class ConlluStream implements ObjectStream { private final ObjectStream sentenceStream; public ConlluStream(InputStreamFactory in) throws IOException { this.sentenceStream = new ParagraphStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); } @Override public ConlluSentence read() throws IOException { String sentence = sentenceStream.read(); if (sentence != null) { List wordLines = new ArrayList<>(); BufferedReader reader = new BufferedReader(new StringReader(sentence)); String sentenceId = null; String text = null; String line; while ((line = reader.readLine()) != null) { // # indicates a comment line and contains additional data if (line.trim().startsWith("#")) { String commentLine = line.trim().substring(1); int separator = commentLine.indexOf('='); if (separator != -1) { String firstPart = commentLine.substring(0, separator).trim(); String secondPart = commentLine.substring(separator + 1, commentLine.length()).trim(); if (!secondPart.isEmpty()) { switch (firstPart) { case "sent_id": sentenceId = secondPart; break; case "text": text = secondPart; break; } } } } else { wordLines.add(new ConlluWordLine(line)); } } wordLines = postProcessContractions(wordLines); return new ConlluSentence(wordLines, sentenceId, text); } return null; } private List postProcessContractions(List lines) { // 1. Find contractions Map index = new HashMap<>(); Map> contractions = new HashMap<>(); List linesToDelete = new ArrayList<>(); for (int i = 0; i < lines.size(); i++) { ConlluWordLine line = lines.get(i); index.put(line.getId(), i); if (line.getId().contains("-")) { List expandedContractions = new ArrayList<>(); String[] ids = line.getId().split("-"); int start = Integer.parseInt(ids[0]); int end = Integer.parseInt(ids[1]); for (int j = start; j <= end; j++) { String js = Integer.toString(j); expandedContractions.add(js); linesToDelete.add(js); } contractions.put(line.getId(), expandedContractions); } } // 2. Merge annotation for (Entry> entry : contractions.entrySet()) { final String contractionId = entry.getKey(); final List expandedContractions = entry.getValue(); int contractionIndex = index.get(contractionId); ConlluWordLine contraction = lines.get(contractionIndex); List expandedParts = new ArrayList<>(); for (String id : expandedContractions) { expandedParts.add(lines.get(index.get(id))); } ConlluWordLine merged = mergeAnnotation(contraction, expandedParts); lines.set(contractionIndex, merged); } // 3. Delete the expanded parts for (int i = linesToDelete.size() - 1; i >= 0; i--) { lines.remove(index.get(linesToDelete.get(i)).intValue()); } return lines; } /** * Merges token level annotations * @param contraction the line that receives the annotation * @param expandedParts the lines to get annotation * @return the merged line */ private ConlluWordLine mergeAnnotation(ConlluWordLine contraction, List expandedParts) { String id = contraction.getId(); String form = contraction.getForm(); String lemma = expandedParts.stream() .filter(p -> !"_".equals(p.getLemma())) .map(p -> p.getLemma()) .collect(Collectors.joining("+")); String uPosTag = expandedParts.stream() .filter(p -> !"_".equals(p.getPosTag(ConlluTagset.U))) .map(p -> p.getPosTag(ConlluTagset.U)) .collect(Collectors.joining("+")); String xPosTag = expandedParts.stream() .filter(p -> !"_".equals(p.getPosTag(ConlluTagset.X))) .map(p -> p.getPosTag(ConlluTagset.X)) .collect(Collectors.joining("+")); String feats = expandedParts.stream() .filter(p -> !"_".equals(p.getFeats())) .map(p -> p.getFeats()) .collect(Collectors.joining("+")); String head = contraction.getHead(); String deprel = contraction.getDeprel(); String deps = contraction.getDeps(); String misc = contraction.getMisc(); return new ConlluWordLine(id, form, lemma, uPosTag, xPosTag, feats,head, deprel, deps, misc); } @Override public void close() throws IOException { sentenceStream.close(); } @Override public void reset() throws IOException, UnsupportedOperationException { sentenceStream.reset(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000157 14135770370 032637 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentence.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluSentence.jav0100664 0001750 0001750 00000002637 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.util.List; public class ConlluSentence { private List wordLines; private String sentenceIdComment; private String textComment; ConlluSentence(List wordLines, String sentenceIdComment, String textComment) { this.wordLines = wordLines; this.sentenceIdComment = sentenceIdComment; this.textComment = textComment; } public List getWordLines() { return wordLines; } public String getSentenceIdComment() { return sentenceIdComment; } public String getTextComment() { return textComment; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000170 14135770370 032632 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluTokenSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluTokenSampleS0100664 0001750 0001750 00000005030 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.StringUtil; public class ConlluTokenSampleStream extends FilterObjectStream { public ConlluTokenSampleStream(ObjectStream samples) { super(samples); } @Override public TokenSample read() throws IOException { ConlluSentence sentence = samples.read(); if (sentence != null) { if (sentence.getTextComment() != null) { StringBuilder text = new StringBuilder(sentence.getTextComment()); int searchIndex = 0; for (ConlluWordLine wordLine : sentence.getWordLines()) { // skip over inserted words which are not in the source text if (wordLine.getId().contains(".")) { continue; } String token = wordLine.getForm(); int tokenIndex = text.indexOf(token, searchIndex); if (tokenIndex == -1) { throw new IOException(String.format("Failed to match token [%s] in sentence [%s] with text [%s]", token, sentence.getSentenceIdComment(), text)); } searchIndex = tokenIndex + token.length(); if (searchIndex < text.length()) { if (!StringUtil.isWhitespace(text.charAt(searchIndex))) { text.insert(searchIndex, TokenSample.DEFAULT_SEPARATOR_CHARS); } } } return TokenSample.parse(text.toString(), TokenSample.DEFAULT_SEPARATOR_CHARS); } else { throw new IOException("Sentence is missing raw text sample!"); } } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000177 14135770370 032641 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluTokenSampleS0100664 0001750 0001750 00000004253 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; public class ConlluTokenSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, ConlluPOSSampleStreamFactory.CONLLU_FORMAT, new ConlluTokenSampleStreamFactory(ConlluTokenSampleStreamFactory.Parameters.class)); } protected

ConlluTokenSampleStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); InputStreamFactory inFactory = CmdLineUtil.createInputStreamFactory(params.getData()); try { return new ConlluTokenSampleStream(new ConlluStream(inFactory)); } catch (IOException e) { // That will throw an exception CmdLineUtil.handleCreateObjectStreamError(e); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000175 14135770370 032637 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluPOSSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluPOSSampleStr0100664 0001750 0001750 00000005444 14135770370 034116 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ConlluPOSSampleStreamFactory extends AbstractSampleStreamFactory { public static final String CONLLU_FORMAT = "conllu"; interface Parameters extends BasicFormatParams { @ArgumentParser.ParameterDescription(valueName = "tagset", description = "u|x u for unified tags and x for language-specific part-of-speech tags") @ArgumentParser.OptionalParameter(defaultValue = "u") String getTagset(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, CONLLU_FORMAT, new ConlluPOSSampleStreamFactory(Parameters.class)); } protected

ConlluPOSSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ConlluTagset tagset; switch (params.getTagset()) { case "u": tagset = ConlluTagset.U; break; case "x": tagset = ConlluTagset.X; break; default: throw new TerminateToolException(-1, "Unkown tagset parameter: " + params.getTagset()); } InputStreamFactory inFactory = CmdLineUtil.createInputStreamFactory(params.getData()); try { return new ConlluPOSSampleStream(new ConlluStream(inFactory), tagset); } catch (IOException e) { // That will throw an exception CmdLineUtil.handleCreateObjectStreamError(e); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_conllu_Co0100644 0000000 0000000 00000000177 14135770370 032641 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluLemmaSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/conllu/ConlluLemmaSampleS0100664 0001750 0001750 00000005445 14135770370 034143 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.conllu; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ConlluLemmaSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { @ArgumentParser.ParameterDescription(valueName = "tagset", description = "u|x u for unified tags and x for language-specific part-of-speech tags") @ArgumentParser.OptionalParameter(defaultValue = "u") String getTagset(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(LemmaSample.class, ConlluPOSSampleStreamFactory.CONLLU_FORMAT, new ConlluLemmaSampleStreamFactory(Parameters.class)); } protected

ConlluLemmaSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ConlluTagset tagset; switch (params.getTagset()) { case "u": tagset = ConlluTagset.U; break; case "x": tagset = ConlluTagset.X; break; default: throw new TerminateToolException(-1, "Unkown tagset parameter: " + params.getTagset()); } InputStreamFactory inFactory = CmdLineUtil.createInputStreamFactory(params.getData()); try { return new ConlluLemmaSampleStream(new ConlluStream(inFactory), tagset); } catch (IOException e) { // That will throw an exception CmdLineUtil.handleCreateObjectStreamError(e); } return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/package-info.java0100664 0001750 0001750 00000001632 14135770370 032410 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Experimental package related to converting various corpora to OpenNLP Format. */ package opennlp.tools.formats; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_LanguageS0100644 0000000 0000000 00000000165 14135770370 032567 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LanguageSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LanguageSampleStreamFacto0100664 0001750 0001750 00000002233 14135770370 034160 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; /** * Stream factory for those streams which carry language. */ public abstract class LanguageSampleStreamFactory extends AbstractSampleStreamFactory { protected String language; protected

LanguageSampleStreamFactory(Class

params) { super(params); } @Override public String getLang() { return language; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_frenchtre0100644 0000000 0000000 00000000201 14135770370 032670 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitParseSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitPar0100664 0001750 0001750 00000004104 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.frenchtreebank; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import org.xml.sax.SAXException; import opennlp.tools.parser.Parse; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.XmlUtil; public class ConstitParseSampleStream extends FilterObjectStream { private SAXParser saxParser; private List parses = new ArrayList<>(); protected ConstitParseSampleStream(ObjectStream samples) { super(samples); saxParser = XmlUtil.createSaxParser(); } public Parse read() throws IOException { if (parses.isEmpty()) { byte[] xmlbytes = samples.read(); if (xmlbytes != null) { List producedParses = new ArrayList<>(); try { saxParser.parse(new ByteArrayInputStream(xmlbytes), new ConstitDocumentHandler(producedParses)); } catch (SAXException e) { //TODO update after Java6 upgrade throw new IOException(e.getMessage(), e); } parses.addAll(producedParses); } } if (parses.size() > 0) { return parses.remove(0); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_frenchtre0100644 0000000 0000000 00000000177 14135770370 032704 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitDocumentHandler.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitDoc0100664 0001750 0001750 00000013135 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.frenchtreebank; import java.util.LinkedList; import java.util.List; import java.util.Stack; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.Constituent; import opennlp.tools.parser.Parse; import opennlp.tools.util.Span; class ConstitDocumentHandler extends DefaultHandler { private static final String SENT_ELEMENT_NAME = "SENT"; private static final String WORD_ELEMENT_NAME = "w"; private static final String SENT_TYPE_NAME = "S"; private final List parses; private boolean insideSentenceElement; /** * A token buffer, a token might be build up by multiple * {@link #characters(char[], int, int)} calls. */ private final StringBuilder tokenBuffer = new StringBuilder(); private final StringBuilder text = new StringBuilder(); private int offset; private final Stack stack = new Stack<>(); private final List cons = new LinkedList<>(); ConstitDocumentHandler(List parses) { this.parses = parses; } private String cat; private String subcat; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { String type = qName; if (SENT_ELEMENT_NAME.equals(qName)) { // Clear everything to be ready for the next sentence text.setLength(0); offset = 0; stack.clear(); cons.clear(); type = SENT_TYPE_NAME; insideSentenceElement = true; } else if (WORD_ELEMENT_NAME.equals(qName)) { // Note: // If there are compound words they are represented in a couple // of ways in the training data. // Many of them are marked with the compound attribute, but not // all of them. Thats why it is not used in the code to detect // a compound word. // Compounds are detected by the fact that a w tag is appearing // inside a w tag. // // The type of a compound word can be encoded either cat of the compound // plus the catint of each word of the compound. // Or all compound words have the cat plus subcat of the compound, in this // case they have an empty cat attribute. // // This implementation hopefully decodes these cases correctly! String newCat = attributes.getValue("cat"); if (newCat != null && newCat.length() > 0) { cat = newCat; } String newSubcat = attributes.getValue("subcat"); if (newSubcat != null && newSubcat.length() > 0) { subcat = newSubcat; } if (cat != null) { type = cat + (subcat != null ? subcat : ""); } else { String catint = attributes.getValue("catint"); if (catint != null) { type = cat + catint; } else { type = cat + subcat; } } } stack.push(new Constituent(type, new Span(offset, offset))); tokenBuffer.setLength(0); } @Override public void characters(char[] ch, int start, int length) throws SAXException { tokenBuffer.append(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { boolean isCreateConstituent = true; if (insideSentenceElement) { if (WORD_ELEMENT_NAME.equals(qName)) { String token = tokenBuffer.toString().trim(); if (token.length() > 0) { cons.add(new Constituent(AbstractBottomUpParser.TOK_NODE, new Span(offset, offset + token.length()))); text.append(token).append(" "); offset += token.length() + 1; } else { isCreateConstituent = false; } } Constituent unfinishedCon = stack.pop(); if (isCreateConstituent) { int start = unfinishedCon.getSpan().getStart(); if (start < offset) { cons.add(new Constituent(unfinishedCon.getLabel(), new Span(start, offset - 1))); } } if (SENT_ELEMENT_NAME.equals(qName)) { // Finished parsing sentence, now put everything together and create // a Parse object String txt = text.toString(); int tokenIndex = -1; Parse p = new Parse(txt, new Span(0, txt.length()), AbstractBottomUpParser.TOP_NODE, 1,0); for (Constituent con : cons) { String type = con.getLabel(); if (!type.equals(AbstractBottomUpParser.TOP_NODE)) { if (AbstractBottomUpParser.TOK_NODE.equals(type)) { tokenIndex++; } Parse c = new Parse(txt, con.getSpan(), type, 1, tokenIndex); p.insert(c); } } parses.add(p); insideSentenceElement = false; } tokenBuffer.setLength(0); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_frenchtre0100644 0000000 0000000 00000000210 14135770370 032670 xustar000000000 0000000 136 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitParseSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/frenchtreebank/ConstitPar0100664 0001750 0001750 00000003703 14135770370 034214 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.frenchtreebank; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToByteArraySampleStream; import opennlp.tools.parser.Parse; import opennlp.tools.util.ObjectStream; public class ConstitParseSampleStreamFactory extends AbstractSampleStreamFactory { // TODO: The parameters have an encoding, but the data is in xml interface Parameters extends BasicFormatParams { } private ConstitParseSampleStreamFactory() { super(Parameters.class); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); return new ConstitParseSampleStream(new FileToByteArraySampleStream( new DirectorySampleStream(params.getData(), null, false))); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(Parse.class, "frenchtreebank", new ConstitParseSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_AbstractS0100644 0000000 0000000 00000000165 14135770370 032607 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/AbstractSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/AbstractSampleStreamFacto0100664 0001750 0001750 00000002501 14135770370 034176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import opennlp.tools.cmdline.ObjectStreamFactory; /** * Base class for sample stream factories. */ public abstract class AbstractSampleStreamFactory implements ObjectStreamFactory { protected Class params; private AbstractSampleStreamFactory() { } protected

AbstractSampleStreamFactory(Class

params) { this.params = params; } public String getLang() { return "eng"; } @SuppressWarnings({"unchecked"}) public

Class

getParameters() { return params; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Conll03Na0100644 0000000 0000000 00000000170 14135770370 032406 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStreamFa0100664 0001750 0001750 00000006365 14135770370 033754 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.Conll03NameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; public class Conll03NameSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters extends BasicFormatParams { @ParameterDescription(valueName = "eng|deu") String getLang(); @ParameterDescription(valueName = "per,loc,org,misc") String getTypes(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "conll03", new Conll03NameSampleStreamFactory(Parameters.class)); } protected

Conll03NameSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); // TODO: support the other languages with this CoNLL. LANGUAGE lang; if ("eng".equals(params.getLang())) { lang = LANGUAGE.EN; language = params.getLang(); } else if ("deu".equals(params.getLang())) { lang = LANGUAGE.DE; language = params.getLang(); } else { throw new TerminateToolException(1, "Unsupported language: " + params.getLang()); } int typesToGenerate = 0; if (params.getTypes().contains("per")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_PERSON_ENTITIES; } if (params.getTypes().contains("org")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES; } if (params.getTypes().contains("loc")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES; } if (params.getTypes().contains("misc")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; } try { return new Conll03NameSampleStream(lang, CmdLineUtil.createInputStreamFactory(params.getData()), typesToGenerate); } catch (IOException e) { throw CmdLineUtil.createObjectStreamError(e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ConllXSen0100644 0000000 0000000 00000000173 14135770370 032565 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXSentenceSampleStrea0100664 0001750 0001750 00000004351 14135770370 034172 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.convert.POSToSentenceSampleStream; import opennlp.tools.postag.POSSample; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ConllXSentenceSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends ConllXPOSSampleStreamFactory.Parameters, DetokenizerParameter { // TODO: make chunk size configurable } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, ConllXPOSSampleStreamFactory.CONLLX_FORMAT, new ConllXSentenceSampleStreamFactory(Parameters.class)); } protected

ConllXSentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream posSampleStream = StreamFactoryRegistry.getFactory(POSSample.class, ConllXPOSSampleStreamFactory.CONLLX_FORMAT).create( ArgumentParser.filter(args, ConllXPOSSampleStreamFactory.Parameters.class)); return new POSToSentenceSampleStream(createDetokenizer(params), posSampleStream, 30); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_NameSampl0100644 0000000 0000000 00000000165 14135770370 032576 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/NameSampleDataStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/NameSampleDataStreamFacto0100664 0001750 0001750 00000004511 14135770370 034110 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleDataStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link NameSampleDataStream}s. */ public class NameSampleDataStreamFactory extends AbstractSampleStreamFactory { public static interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new NameSampleDataStreamFactory(Parameters.class)); } protected

NameSampleDataStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new NameSampleDataStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Detokeniz0100644 0000000 0000000 00000000170 14135770370 032651 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DetokenizerSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DetokenizerSampleStreamFa0100664 0001750 0001750 00000003375 14135770370 034222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.tokenize.DetokenizationDictionary; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.DictionaryDetokenizer; /** * Base class for factories which need detokenizer. */ public abstract class DetokenizerSampleStreamFactory extends AbstractSampleStreamFactory { protected

DetokenizerSampleStreamFactory(Class

params) { super(params); } protected Detokenizer createDetokenizer(DetokenizerParameter p) { try { return new DictionaryDetokenizer(new DetokenizationDictionary( new FileInputStream(new File(p.getDetokenizer())))); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while loading detokenizer dict: " + e.getMessage(), e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_NameFinde0100644 0000000 0000000 00000000166 14135770370 032550 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/NameFinderCensus90NameStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/NameFinderCensus90NameStr0100664 0001750 0001750 00000010234 14135770370 033776 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.nio.charset.Charset; import java.util.Locale; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; /** * This class helps to read the US Census data from the files to build a * StringList for each dictionary entry in the name-finder dictionary. * The entries in the source file are as follows: *

* SMITH 1.006 1.006 1 *

    *
  • The first field is the name (in ALL CAPS). *
  • The next field is a frequency in percent. *
  • The next is a cumulative frequency in percent. *
  • The last is a ranking. *
*

* Note: Do not use this class, internal use only! */ public class NameFinderCensus90NameStream implements ObjectStream { private final Locale locale; private final Charset encoding; private final ObjectStream lineStream; /** * This constructor takes an ObjectStream and initializes the class to handle * the stream. * * @param lineStream an ObjectSteam<String> that represents the * input file to be attached to this class. */ public NameFinderCensus90NameStream(ObjectStream lineStream) { this.locale = new Locale("en"); // locale is English this.encoding = Charset.defaultCharset(); // todo how do we find the encoding for an already open ObjectStream() ? this.lineStream = lineStream; } /** * This constructor takes an InputStream and a Charset * and opens an associated stream object with the specified encoding specified. * * @param in an InputStreamFactory for the input file. * @param encoding the Charset to apply to the input stream. * @throws IOException */ public NameFinderCensus90NameStream(InputStreamFactory in, Charset encoding) throws IOException { this.locale = new Locale("en"); // locale is English this.encoding = encoding; this.lineStream = new PlainTextByLineStream(in, this.encoding); } public StringList read() throws IOException { String line = lineStream.read(); StringList name = null; if ((line != null) && (!StringUtil.isEmpty(line))) { String name2; // find the location of the name separator in the line of data. int pos = line.indexOf(' '); if ((pos != -1)) { String parsed = line.substring(0, pos); // the data is in ALL CAPS ... so the easiest way is to convert // back to standard mixed case. if ((parsed.length() > 2) && (parsed.startsWith("MC"))) { name2 = parsed.substring(0,1).toUpperCase(locale) + parsed.substring(1,2).toLowerCase(locale) + parsed.substring(2,3).toUpperCase(locale) + parsed.substring(3).toLowerCase(locale); } else { name2 = parsed.substring(0,1).toUpperCase(locale) + parsed.substring(1).toLowerCase(locale); } name = new StringList(new String[]{name2}); } } return name; } public void reset() throws IOException, UnsupportedOperationException { lineStream.reset(); } public void close() throws IOException { lineStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Conll03Na0100644 0000000 0000000 00000000161 14135770370 032406 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll03NameSampleStream.j0100664 0001750 0001750 00000014617 14135770370 033734 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * An import stream which can parse the CONLL03 data. */ public class Conll03NameSampleStream implements ObjectStream { public enum LANGUAGE { EN, DE } private final LANGUAGE lang; private final ObjectStream lineStream; private final int types; /** * * @param lang the language of the CONLL 03 data * @param lineStream an Object Stream over the lines in the CONLL 03 data file * @param types the entity types to include in the Name Sample object stream */ public Conll03NameSampleStream(LANGUAGE lang, ObjectStream lineStream, int types) { this.lang = lang; this.lineStream = lineStream; this.types = types; } public Conll03NameSampleStream(LANGUAGE lang, InputStreamFactory in, int types) throws IOException { this.lang = lang; try { this.lineStream = new PlainTextByLineStream(in, StandardCharsets.UTF_8); System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8.name())); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } this.types = types; } public NameSample read() throws IOException { List sentence = new ArrayList<>(); List tags = new ArrayList<>(); boolean isClearAdaptiveData = false; // Empty line indicates end of sentence String line; while ((line = lineStream.read()) != null && !StringUtil.isEmpty(line)) { if (line.startsWith(Conll02NameSampleStream.DOCSTART)) { isClearAdaptiveData = true; String emptyLine = lineStream.read(); if (!StringUtil.isEmpty(emptyLine)) throw new IOException("Empty line after -DOCSTART- not empty: '" + emptyLine + "'!"); continue; } String[] fields = line.split(" "); // For English: WORD POS-TAG SC-TAG NE-TAG if (LANGUAGE.EN.equals(lang) && fields.length == 4) { sentence.add(fields[0]); tags.add(fields[3]); // 3 is NE-TAG } // For German: WORD LEMA-TAG POS-TAG SC-TAG NE-TAG else if (LANGUAGE.DE.equals(lang) && fields.length == 5) { sentence.add(fields[0]); tags.add(fields[4]); // 4 is NE-TAG } else { throw new IOException("Incorrect number of fields per line for language: '" + line + "'!"); } } if (sentence.size() > 0) { // convert name tags into spans List names = new ArrayList<>(); int beginIndex = -1; int endIndex = -1; for (int i = 0; i < tags.size(); i++) { String tag = tags.get(i); if (tag.endsWith("PER") && (types & Conll02NameSampleStream.GENERATE_PERSON_ENTITIES) == 0) tag = "O"; if (tag.endsWith("ORG") && (types & Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("LOC") && (types & Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("MISC") && (types & Conll02NameSampleStream.GENERATE_MISC_ENTITIES) == 0) tag = "O"; if (tag.equals("O")) { // O means we don't have anything this round. if (beginIndex != -1) { names.add(Conll02NameSampleStream.extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = -1; endIndex = -1; } } else if (tag.startsWith("B-")) { // B- prefix means we have two same entities next to each other if (beginIndex != -1) { names.add(Conll02NameSampleStream.extract(beginIndex, endIndex, tags.get(beginIndex))); } beginIndex = i; endIndex = i + 1; } else if (tag.startsWith("I-")) { // I- starts or continues a current name entity if (beginIndex == -1) { beginIndex = i; endIndex = i + 1; } else if (!tag.endsWith(tags.get(beginIndex).substring(1))) { // we have a new tag type following a tagged word series // also may not have the same I- starting the previous! names.add(Conll02NameSampleStream.extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = i; endIndex = i + 1; } else { endIndex ++; } } else { throw new IOException("Invalid tag: " + tag); } } // if one span remains, create it here if (beginIndex != -1) names.add(Conll02NameSampleStream.extract(beginIndex, endIndex, tags.get(beginIndex))); return new NameSample(sentence.toArray(new String[sentence.size()]), names.toArray(new Span[names.size()]), isClearAdaptiveData); } else if (line != null) { // Just filter out empty events, if two lines in a row are empty return read(); } else { // source stream is not returning anymore lines return null; } } public void reset() throws IOException, UnsupportedOperationException { lineStream.reset(); } public void close() throws IOException { lineStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_TwentyNew0100644 0000000 0000000 00000000165 14135770370 032665 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TwentyNewsgroupSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TwentyNewsgroupSampleStre0100664 0001750 0001750 00000004400 14135770370 034344 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.ObjectStream; public class TwentyNewsgroupSampleStream implements ObjectStream { private Tokenizer tokenizer; private Map catFileMap = new HashMap<>(); private Iterator> catFileTupleIterator; TwentyNewsgroupSampleStream(Tokenizer tokenizer, Path dataDir) throws IOException { this.tokenizer = tokenizer; for (Path dir : Files.newDirectoryStream(dataDir, entry -> Files.isDirectory(entry))) { for (Path file : Files.newDirectoryStream(dir)) { catFileMap.put(file, dir.getFileName().toString()); } } reset(); } @Override public DocumentSample read() throws IOException { if (catFileTupleIterator.hasNext()) { Map.Entry catFileTuple = catFileTupleIterator.next(); String text = new String(Files.readAllBytes(catFileTuple.getKey())); return new DocumentSample(catFileTuple.getValue(), tokenizer.tokenize(text)); } return null; } @Override public void reset() throws IOException, UnsupportedOperationException { catFileTupleIterator = catFileMap.entrySet().iterator(); } @Override public void close() throws IOException { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ParseSamp0100644 0000000 0000000 00000000162 14135770370 032611 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ParseSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ParseSampleStreamFactory.0100664 0001750 0001750 00000004427 14135770370 034147 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParseSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link ParseSampleStream}s. */ public class ParseSampleStreamFactory extends AbstractSampleStreamFactory { public interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(Parse.class, StreamFactoryRegistry.DEFAULT_FORMAT, new ParseSampleStreamFactory(Parameters.class)); } protected

ParseSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new ParseSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_EvalitaNa0100644 0000000 0000000 00000000161 14135770370 032561 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStream.j0100664 0001750 0001750 00000016064 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * Parser for the Italian NER training files of the Evalita 2007 and 2009 NER shared tasks. *

* The data does not contain article boundaries, * adaptive data will be cleared for every sentence. *

* Named Entities are annotated in the IOB2 format (as used in CoNLL 2002 shared task) *

* The Named Entity tag consists of two parts: * 1. The IOB2 tag: 'B' (for 'begin') denotes the first token of a * Named Entity, I (for 'inside') is used for all other tokens in a * Named Entity, and 'O' (for 'outside') is used for all other words; * 2. The Entity type tag: PER (for Person), ORG (for Organization), * GPE (for Geo-Political Entity), or LOC (for Location). *

* Each file consists of four columns separated by a blank, containing * respectively the token, the Elsnet PoS-tag, the Adige news story to * which the token belongs, and the Named Entity tag. *

* Data can be found on this web site:
* http://www.evalita.it *

* Note: Do not use this class, internal use only! */ public class EvalitaNameSampleStream implements ObjectStream { public enum LANGUAGE { IT } public static final int GENERATE_PERSON_ENTITIES = 0x01; public static final int GENERATE_ORGANIZATION_ENTITIES = 0x01 << 1; public static final int GENERATE_LOCATION_ENTITIES = 0x01 << 2; public static final int GENERATE_GPE_ENTITIES = 0x01 << 3; public static final String DOCSTART = "-DOCSTART-"; private final LANGUAGE lang; private final ObjectStream lineStream; private final int types; public EvalitaNameSampleStream(LANGUAGE lang, ObjectStream lineStream, int types) { this.lang = lang; this.lineStream = lineStream; this.types = types; } public EvalitaNameSampleStream(LANGUAGE lang, InputStreamFactory in, int types) throws IOException { this.lang = lang; try { this.lineStream = new PlainTextByLineStream(in, StandardCharsets.UTF_8); System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8.name())); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } this.types = types; } private static Span extract(int begin, int end, String beginTag) throws InvalidFormatException { String type = beginTag.substring(2); switch (type) { case "PER": type = "person"; break; case "LOC": type = "location"; break; case "GPE": type = "gpe"; break; case "ORG": type = "organization"; break; default: throw new InvalidFormatException("Unknown type: " + type); } return new Span(begin, end, type); } public NameSample read() throws IOException { List sentence = new ArrayList<>(); List tags = new ArrayList<>(); boolean isClearAdaptiveData = false; // Empty line indicates end of sentence String line; while ((line = lineStream.read()) != null && !StringUtil.isEmpty(line)) { if (line.startsWith(DOCSTART)) { isClearAdaptiveData = true; String emptyLine = lineStream.read(); if (!StringUtil.isEmpty(emptyLine)) throw new IOException("Empty line after -DOCSTART- not empty: '" + emptyLine + "'!"); continue; } String[] fields = line.split(" "); // For Italian: WORD POS-TAG SC-TAG NE-TAG if (LANGUAGE.IT.equals(lang) && fields.length == 4) { sentence.add(fields[0]); tags.add(fields[3]); // 3 is NE-TAG } else { throw new IOException("Incorrect number of fields per line for language: '" + line + "'!"); } } // Always clear adaptive data for Italian if (LANGUAGE.IT.equals(lang)) isClearAdaptiveData = true; if (sentence.size() > 0) { // convert name tags into spans List names = new ArrayList<>(); int beginIndex = -1; int endIndex = -1; for (int i = 0; i < tags.size(); i++) { String tag = tags.get(i); if (tag.endsWith("PER") && (types & GENERATE_PERSON_ENTITIES) == 0) tag = "O"; if (tag.endsWith("ORG") && (types & GENERATE_ORGANIZATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("LOC") && (types & GENERATE_LOCATION_ENTITIES) == 0) tag = "O"; if (tag.endsWith("GPE") && (types & GENERATE_GPE_ENTITIES) == 0) tag = "O"; if (tag.startsWith("B-")) { if (beginIndex != -1) { names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = -1; endIndex = -1; } beginIndex = i; endIndex = i + 1; } else if (tag.startsWith("I-")) { endIndex++; } else if (tag.equals("O")) { if (beginIndex != -1) { names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); beginIndex = -1; endIndex = -1; } } else { throw new IOException("Invalid tag: " + tag); } } // if one span remains, create it here if (beginIndex != -1) names.add(extract(beginIndex, endIndex, tags.get(beginIndex))); return new NameSample(sentence.toArray(new String[sentence.size()]), names.toArray(new Span[names.size()]), isClearAdaptiveData); } else if (line != null) { // Just filter out empty events, if two lines in a row are empty return read(); } else { // source stream is not returning anymore lines return null; } } public void reset() throws IOException, UnsupportedOperationException { lineStream.reset(); } public void close() throws IOException { lineStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_DocumentS0100644 0000000 0000000 00000000165 14135770370 032622 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DocumentSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/DocumentSampleStreamFacto0100664 0001750 0001750 00000004505 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.doccat.DocumentSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link DocumentSampleStream}s. */ public class DocumentSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(DocumentSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new DocumentSampleStreamFactory(Parameters.class)); } protected

DocumentSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new DocumentSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ConllXPOS0100644 0000000 0000000 00000000166 14135770370 032503 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStreamFact0100664 0001750 0001750 00000005101 14135770370 034034 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ConllXPOSSampleStreamFactory extends AbstractSampleStreamFactory { public static final String CONLLX_FORMAT = "conllx"; interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, CONLLX_FORMAT, new ConllXPOSSampleStreamFactory(Parameters.class)); } protected

ConllXPOSSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); InputStreamFactory inFactory = CmdLineUtil.createInputStreamFactory(params.getData()); try { System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8.name())); return new ConllXPOSSampleStream(inFactory, StandardCharsets.UTF_8); } catch (UnsupportedEncodingException e) { // this shouldn't happen throw new TerminateToolException(-1, "UTF-8 encoding is not supported: " + e.getMessage(), e); } catch (IOException e) { // That will throw an exception CmdLineUtil.handleCreateObjectStreamError(e); return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_WordTagSa0100644 0000000 0000000 00000000164 14135770370 032553 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/WordTagSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/WordTagSampleStreamFactor0100664 0001750 0001750 00000004465 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.WordTagSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Note: Do not use this class, internal use only! */ public class WordTagSampleStreamFactory extends AbstractSampleStreamFactory { public static interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new WordTagSampleStreamFactory(Parameters.class)); } protected

WordTagSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new WordTagSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_muc_Docum0100644 0000000 0000000 00000000164 14135770370 032633 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/DocumentSplitterStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/DocumentSplitterStrea0100664 0001750 0001750 00000004677 14135770370 034250 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; class DocumentSplitterStream extends FilterObjectStream { private static final String DOC_START_ELEMENT = ""; private static final String DOC_END_ELEMENT = ""; private List docs = new ArrayList<>(); DocumentSplitterStream(ObjectStream samples) { super(samples); } public String read() throws IOException { if (docs.isEmpty()) { String newDocs = samples.read(); if (newDocs != null) { int docStartOffset = 0; while (true) { int startDocElement = newDocs.indexOf(DOC_START_ELEMENT, docStartOffset); int endDocElement = newDocs.indexOf(DOC_END_ELEMENT, docStartOffset); if (startDocElement != -1 && endDocElement != -1) { if (startDocElement < endDocElement) { docs.add(newDocs.substring(startDocElement, endDocElement + DOC_END_ELEMENT.length())); docStartOffset = endDocElement + DOC_END_ELEMENT.length(); } else { throw new InvalidFormatException(" element is not closed!"); } } else if (startDocElement != endDocElement) { throw new InvalidFormatException("Missing or element!"); } else { break; } } } } if (docs.size() > 0) { return docs.remove(0); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_muc_MucNa0100644 0000000 0000000 00000000161 14135770370 032564 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameSampleStream.j0100664 0001750 0001750 00000003720 14135770370 034023 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class MucNameSampleStream extends FilterObjectStream { private final Tokenizer tokenizer; private List storedSamples = new ArrayList<>(); protected MucNameSampleStream(Tokenizer tokenizer, ObjectStream samples) { super(samples); this.tokenizer = tokenizer; } public NameSample read() throws IOException { if (storedSamples.isEmpty()) { String document = samples.read(); if (document != null) { // Note: This is a hack to fix invalid formating in // some MUC files ... document = document.replace(">>", ">"); new SgmlParser().parse(new StringReader(document), new MucNameContentHandler(tokenizer, storedSamples)); } } if (storedSamples.size() > 0) { return storedSamples.remove(0); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_muc_Muc6N0100644 0000000 0000000 00000000171 14135770370 032512 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/Muc6NameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/Muc6NameSampleStreamF0100664 0001750 0001750 00000005151 14135770370 033767 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.File; import java.nio.charset.StandardCharsets; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.cmdline.tokenizer.TokenizerModelLoader; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.StringUtil; public class Muc6NameSampleStreamFactory extends AbstractSampleStreamFactory { protected Muc6NameSampleStreamFactory() { super(Parameters.class); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "muc6", new Muc6NameSampleStreamFactory()); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); TokenizerModel tokenizerModel = new TokenizerModelLoader().load(params.getTokenizerModel()); Tokenizer tokenizer = new TokenizerME(tokenizerModel); ObjectStream mucDocStream = new FileToStringSampleStream( new DirectorySampleStream(params.getData(), file -> StringUtil.toLowerCase(file.getName()).endsWith(".sgm"), false), StandardCharsets.UTF_8); return new MucNameSampleStream(tokenizer, mucDocStream); } interface Parameters extends BasicFormatParams { @ParameterDescription(valueName = "modelFile") File getTokenizerModel(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_muc_MucNa0100644 0000000 0000000 00000000163 14135770370 032566 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler0100664 0001750 0001750 00000010172 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.Stack; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.Span; public class MucNameContentHandler extends SgmlParser.ContentHandler { private static final String ENTITY_ELEMENT_NAME = "ENAMEX"; private static final String TIME_ELEMENT_NAME = "TIMEX"; private static final String NUM_ELEMENT_NAME = "NUMEX"; private static final Set NAME_ELEMENT_NAMES; private static final Set EXPECTED_TYPES; static { Set types = new HashSet<>(); types.add("PERSON"); types.add("ORGANIZATION"); types.add("LOCATION"); types.add("DATE"); types.add("TIME"); types.add("MONEY"); types.add("PERCENT"); EXPECTED_TYPES = Collections.unmodifiableSet(types); Set nameElements = new HashSet<>(); nameElements.add(ENTITY_ELEMENT_NAME); nameElements.add(TIME_ELEMENT_NAME); nameElements.add(NUM_ELEMENT_NAME); NAME_ELEMENT_NAMES = Collections.unmodifiableSet(nameElements); } private final Tokenizer tokenizer; private final List storedSamples; private boolean isInsideContentElement = false; private final List text = new ArrayList<>(); private boolean isClearAdaptiveData = false; private final Stack incompleteNames = new Stack<>(); private List names = new ArrayList<>(); public MucNameContentHandler(Tokenizer tokenizer, List storedSamples) { this.tokenizer = tokenizer; this.storedSamples = storedSamples; } @Override public void startElement(String name, Map attributes) throws InvalidFormatException { if (MucElementNames.DOC_ELEMENT.equals(name)) { isClearAdaptiveData = true; } if (MucElementNames.CONTENT_ELEMENTS.contains(name)) { isInsideContentElement = true; } if (NAME_ELEMENT_NAMES.contains(name)) { String nameType = attributes.get("TYPE"); if (!EXPECTED_TYPES.contains(nameType)) { throw new InvalidFormatException("Unknown timex, numex or namex type: " + nameType + ", expected one of " + EXPECTED_TYPES); } incompleteNames.add(new Span(text.size(), text.size(), nameType.toLowerCase(Locale.ENGLISH))); } } @Override public void characters(CharSequence chars) { if (isInsideContentElement) { String[] tokens = tokenizer.tokenize(chars.toString()); text.addAll(Arrays.asList(tokens)); } } @Override public void endElement(String name) { if (NAME_ELEMENT_NAMES.contains(name)) { Span nameSpan = incompleteNames.pop(); nameSpan = new Span(nameSpan.getStart(), text.size(), nameSpan.getType()); names.add(nameSpan); } if (MucElementNames.CONTENT_ELEMENTS.contains(name)) { storedSamples.add(new NameSample(text.toArray(new String[text.size()]), names.toArray(new Span[names.size()]), isClearAdaptiveData)); if (isClearAdaptiveData) { isClearAdaptiveData = false; } text.clear(); names.clear(); isInsideContentElement = false; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/SgmlParser.java0100664 0001750 0001750 00000011250 14135770370 032724 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.io.IOException; import java.io.Reader; import java.util.HashMap; import java.util.Map; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringUtil; /** * SAX style SGML parser. *

* Note:
* The implementation is very limited, but good enough to * parse the MUC corpora. Its must very likely be extended/improved/fixed to parse * a different SGML corpora. */ public class SgmlParser { public static abstract class ContentHandler { public void startElement(String name, Map attributes) throws InvalidFormatException { } public void characters(CharSequence chars) throws InvalidFormatException{ } public void endElement(String name) throws InvalidFormatException { } } private static String extractTagName(CharSequence tagChars) throws InvalidFormatException { int fromOffset = 1; if (tagChars.length() > 1 && tagChars.charAt(1) == '/') { fromOffset = 2; } for (int ci = 1; ci < tagChars.length(); ci++) { if (tagChars.charAt(ci) == '>' || StringUtil.isWhitespace(tagChars.charAt(ci))) { return tagChars.subSequence(fromOffset, ci).toString(); } } throw new InvalidFormatException("Failed to extract tag name!"); } private static Map getAttributes(CharSequence tagChars) { // format: // space // key // = // " <- begin // value chars // " <- end Map attributes = new HashMap<>(); StringBuilder key = new StringBuilder(); StringBuilder value = new StringBuilder(); boolean extractKey = false; boolean extractValue = false; for (int i = 0; i < tagChars.length(); i++) { // White space indicates begin of new key name if (StringUtil.isWhitespace(tagChars.charAt(i)) && !extractValue) { extractKey = true; } // Equals sign indicated end of key name else if (extractKey && ('=' == tagChars.charAt(i) || StringUtil.isWhitespace(tagChars.charAt(i)))) { extractKey = false; } // Inside key name, extract all chars else if (extractKey) { key.append(tagChars.charAt(i)); } // " Indicates begin or end of value chars else if ('"' == tagChars.charAt(i)) { if (extractValue) { attributes.put(key.toString(), value.toString()); // clear key and value buffers key.setLength(0); value.setLength(0); } extractValue = !extractValue; } // Inside value, extract all chars else if (extractValue) { value.append(tagChars.charAt(i)); } } return attributes; } public void parse(Reader in, ContentHandler handler) throws IOException { StringBuilder buffer = new StringBuilder(); boolean isInsideTag = false; boolean isStartTag = true; int lastChar = -1; int c; while ((c = in.read()) != -1) { if ('<' == c) { if (isInsideTag) { throw new InvalidFormatException("Did not expect < char!"); } if (buffer.toString().trim().length() > 0) { handler.characters(buffer.toString().trim()); } buffer.setLength(0); isInsideTag = true; isStartTag = true; } buffer.appendCodePoint(c); if ('/' == c && lastChar == '<') { isStartTag = false; } if ('>' == c) { if (!isInsideTag) { throw new InvalidFormatException("Did not expect > char!"); } if (isStartTag) { handler.startElement(extractTagName(buffer), getAttributes(buffer)); } else { handler.endElement(extractTagName(buffer)); } buffer.setLength(0); isInsideTag = false; } lastChar = c; } if (isInsideTag) { throw new InvalidFormatException("Did not find matching > char!"); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucElementNames.java0100664 0001750 0001750 00000003156 14135770370 033675 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.muc; import java.util.Collections; import java.util.HashSet; import java.util.Set; class MucElementNames { static final String DOC_ELEMENT = "DOC"; static final String HEADLINE_ELEMENT = "HL"; static final String DATELINE_ELEMENT = "DATELINE"; static final String DD_ELEMENT = "DD"; static final String SENTENCE_ELEMENT = "s"; static final Set CONTENT_ELEMENTS; static { Set contentElementNames = new HashSet<>(); contentElementNames.add(MucElementNames.HEADLINE_ELEMENT); contentElementNames.add(MucElementNames.DATELINE_ELEMENT); contentElementNames.add(MucElementNames.DD_ELEMENT); contentElementNames.add(MucElementNames.SENTENCE_ELEMENT); CONTENT_ELEMENTS = Collections.unmodifiableSet(contentElementNames); } private MucElementNames() { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_BioNLP2000100644 0000000 0000000 00000000173 14135770370 032225 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStrea0100664 0001750 0001750 00000005572 14135770370 033506 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; public class BioNLP2004NameSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { @ParameterDescription(valueName = "DNA,protein,cell_type,cell_line,RNA") String getTypes(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "bionlp2004", new BioNLP2004NameSampleStreamFactory(Parameters.class)); } protected

BioNLP2004NameSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); int typesToGenerate = 0; if (params.getTypes().contains("DNA")) { typesToGenerate = typesToGenerate | BioNLP2004NameSampleStream.GENERATE_DNA_ENTITIES; } else if (params.getTypes().contains("protein")) { typesToGenerate = typesToGenerate | BioNLP2004NameSampleStream.GENERATE_PROTEIN_ENTITIES; } else if (params.getTypes().contains("cell_type")) { typesToGenerate = typesToGenerate | BioNLP2004NameSampleStream.GENERATE_CELLTYPE_ENTITIES; } else if (params.getTypes().contains("cell_line")) { typesToGenerate = typesToGenerate | BioNLP2004NameSampleStream.GENERATE_CELLLINE_ENTITIES; } else if (params.getTypes().contains("RNA")) { typesToGenerate = typesToGenerate | BioNLP2004NameSampleStream.GENERATE_RNA_ENTITIES; } try { return new BioNLP2004NameSampleStream( CmdLineUtil.createInputStreamFactory(params.getData()), typesToGenerate); } catch (IOException e) { throw new IllegalStateException(e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_moses_Mos0100644 0000000 0000000 00000000171 14135770370 032662 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSample0100664 0001750 0001750 00000004026 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.moses; import java.io.IOException; import java.util.LinkedList; import java.util.List; import opennlp.tools.sentdetect.EmptyLinePreprocessorStream; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class MosesSentenceSampleStream extends FilterObjectStream { public MosesSentenceSampleStream(ObjectStream sentences) { super(new EmptyLinePreprocessorStream(sentences)); } public SentenceSample read() throws IOException { StringBuilder sentencesString = new StringBuilder(); List sentenceSpans = new LinkedList<>(); String sentence; for (int i = 0; i < 25 && (sentence = samples.read()) != null; i++) { int begin = sentencesString.length(); sentence = sentence.trim(); sentencesString.append(sentence); int end = sentencesString.length(); sentenceSpans.add(new Span(begin, end)); sentencesString.append(' '); } if (sentenceSpans.size() > 0) { return new SentenceSample(sentencesString.toString(), sentenceSpans.toArray(new Span[sentenceSpans.size()])); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_moses_Mos0100644 0000000 0000000 00000000200 14135770370 032653 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/moses/MosesSentenceSample0100664 0001750 0001750 00000004520 14135770370 034206 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.moses; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link MosesSentenceSampleStream}s. */ public class MosesSentenceSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "moses", new MosesSentenceSampleStreamFactory(Parameters.class)); } protected

MosesSentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new MosesSentenceSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_LanguageD0100644 0000000 0000000 00000000175 14135770370 032551 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LanguageDetectorSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LanguageDetectorSampleStr0100664 0001750 0001750 00000004667 14135770370 034227 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.doccat.DocumentSampleStream; import opennlp.tools.langdetect.LanguageDetectorSampleStream; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link DocumentSampleStream}s. */ public class LanguageDetectorSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(LanguageSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new LanguageDetectorSampleStreamFactory(Parameters.class)); } protected

LanguageDetectorSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new LanguageDetectorSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000205 14135770370 032724 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankDocument.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000022016 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.StringBuilder; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.Span; import opennlp.tools.util.XmlUtil; /** * A structure to hold an Irish Sentence Bank document, which is a collection * of tokenized sentences. *

* The sentence bank can be downloaded from, and is described * here */ public class IrishSentenceBankDocument { public static class IrishSentenceBankFlex { String surface; String[] flex; public String getSurface() { return surface; } public String[] getFlex() { return flex; } public IrishSentenceBankFlex(String sf, String[] fl) { this.surface = sf; this.flex = fl; } } public static class IrishSentenceBankSentence { private String source; private String translation; private String original; private Span[] tokens; private IrishSentenceBankFlex[] flex; public String getSource() { return source; } public String getTranslation() { return translation; } public String getOriginal() { return original; } public Span[] getTokens() { return tokens; } public IrishSentenceBankFlex[] getFlex() { return flex; } public TokenSample getTokenSample() { return new TokenSample(original, tokens); } public IrishSentenceBankSentence(String src, String trans, String orig, Span[] toks, IrishSentenceBankFlex[] flx) { this.source = src; this.translation = trans; this.original = orig; this.tokens = toks; this.flex = flx; } } private List sentences; public IrishSentenceBankDocument() { sentences = new ArrayList(); } public void add(IrishSentenceBankSentence sent) { this.sentences.add(sent); } public List getSentences() { return Collections.unmodifiableList(sentences); } /** * Helper to adjust the span of punctuation tokens: ignores spaces to the left of the string * @param s the string to check * @param start the offset of the start of the string * @return the offset adjusted to ignore spaces to the left */ private static int advanceLeft(String s, int start) { int ret = start; for (char c : s.toCharArray()) { if (c == ' ') { ret++; } else { return ret; } } return ret; } /** * Helper to adjust the span of punctuation tokens: ignores spaces to the right of the string * @param s the string to check * @param start the offset of the start of the string * @return the offset of the end of the string, adjusted to ignore spaces to the right */ private static int advanceRight(String s, int start) { int end = s.length() - 1; int ret = start + end + 1; for (int i = end; i > 0; i--) { if (s.charAt(i) == ' ') { ret--; } else { return ret; } } return ret; } public static IrishSentenceBankDocument parse(InputStream is) throws IOException { IrishSentenceBankDocument document = new IrishSentenceBankDocument(); try { DocumentBuilder docBuilder = XmlUtil.createDocumentBuilder(); Document doc = docBuilder.parse(is); String root = doc.getDocumentElement().getNodeName(); if (!root.equalsIgnoreCase("sentences")) { throw new IOException("Expected root node " + root); } NodeList nl = doc.getDocumentElement().getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { Node sentnode = nl.item(i); if (sentnode.getNodeName().equals("sentence")) { String src = sentnode.getAttributes().getNamedItem("source").getNodeValue(); String trans = ""; Map toks = new HashMap<>(); Map> flx = new HashMap<>(); List spans = new ArrayList<>(); NodeList sentnl = sentnode.getChildNodes(); int flexes = 1; StringBuilder orig = new StringBuilder(); for (int j = 0; j < sentnl.getLength(); j++) { final String name = sentnl.item(j).getNodeName(); switch (name) { case "flex": String slottmpa = sentnl.item(j).getAttributes().getNamedItem("slot").getNodeValue(); Integer flexslot = Integer.parseInt(slottmpa); if (flexslot > flexes) { flexes = flexslot; } flx.computeIfAbsent(flexslot, k -> new ArrayList<>()); String tkn = sentnl.item(j).getAttributes().getNamedItem("lemma").getNodeValue(); flx.get(flexslot).add(tkn); break; case "translation": trans = sentnl.item(j).getFirstChild().getTextContent(); break; case "original": int last = 0; NodeList orignl = sentnl.item(j).getChildNodes(); for (int k = 0; k < orignl.getLength(); k++) { switch (orignl.item(k).getNodeName()) { case "token": String tmptok = orignl.item(k).getFirstChild().getTextContent(); spans.add(new Span(last, last + tmptok.length())); String slottmpb = orignl.item(k).getAttributes().getNamedItem("slot").getNodeValue(); Integer tokslot = Integer.parseInt(slottmpb); if (tokslot > flexes) { flexes = tokslot; } toks.put(tokslot, tmptok); orig.append(tmptok); last += tmptok.length(); break; case "#text": String tmptxt = orignl.item(k).getTextContent(); orig.append(tmptxt); if (!" ".equals(tmptxt)) { spans.add(new Span(advanceLeft(tmptxt, last), advanceRight(tmptxt, last))); } last += tmptxt.length(); break; default: throw new IOException("Unexpected node: " + orignl.item(k).getNodeName()); } } break; case "#text": case "#comment": break; default: throw new IOException("Unexpected node: " + name); } } IrishSentenceBankFlex[] flexa = new IrishSentenceBankFlex[flexes]; for (Entry entry : toks.entrySet()) { final Integer flexidx = entry.getKey(); final String left = entry.getValue(); if (flx.get(flexidx) == null) { flexa = null; break; } int rsize = flx.get(flexidx).size(); String[] right = new String[rsize]; right = flx.get(flexidx).toArray(right); flexa[flexidx - 1] = new IrishSentenceBankFlex(left, right); } Span[] spanout = new Span[spans.size()]; spanout = spans.toArray(spanout); document.add(new IrishSentenceBankSentence(src, trans, orig.toString(), spanout, flexa)); } else if (!sentnode.getNodeName().equals("#text") && !sentnode.getNodeName().equals("#comment")) { throw new IOException("Unexpected node: " + sentnode.getNodeName()); } } return document; } catch (SAXException e) { throw new IOException("Failed to parse IrishSentenceBank document", e); } } static IrishSentenceBankDocument parse(File file) throws IOException { try (InputStream in = new FileInputStream(file)) { return parse(in); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000216 14135770370 032726 xustar000000000 0000000 142 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankTokenSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000003225 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.IOException; import java.util.Iterator; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; class IrishSentenceBankTokenSampleStream implements ObjectStream { private final IrishSentenceBankDocument source; private Iterator sentenceIt; IrishSentenceBankTokenSampleStream(IrishSentenceBankDocument source) { this.source = source; reset(); } @Override public TokenSample read() throws IOException { if (sentenceIt.hasNext()) { IrishSentenceBankDocument.IrishSentenceBankSentence sentence = sentenceIt.next(); return sentence.getTokenSample(); } else { return null; } } @Override public void reset() { sentenceIt = source.getSentences().iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000222 14135770370 032723 xustar000000000 0000000 146 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000004244 14135770370 034213 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; public class IrishSentenceBankSentenceStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "irishsentencebank", new IrishSentenceBankSentenceStreamFactory( IrishSentenceBankSentenceStreamFactory.Parameters.class)); } protected

IrishSentenceBankSentenceStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); IrishSentenceBankDocument isbDoc = null; try { isbDoc = IrishSentenceBankDocument.parse(params.getData()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new IrishSentenceBankSentenceStream(isbDoc); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000225 14135770370 032726 xustar000000000 0000000 149 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000004237 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; public class IrishSentenceBankTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, "irishsentencebank", new IrishSentenceBankTokenSampleStreamFactory( IrishSentenceBankTokenSampleStreamFactory.Parameters.class)); } protected

IrishSentenceBankTokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); IrishSentenceBankDocument isbDoc = null; try { isbDoc = IrishSentenceBankDocument.parse(params.getData()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new IrishSentenceBankTokenSampleStream(isbDoc); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_irishsent0100644 0000000 0000000 00000000213 14135770370 032723 xustar000000000 0000000 139 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSentenceBankSentenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/irishsentencebank/IrishSe0100664 0001750 0001750 00000004430 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.irishsentencebank; import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; class IrishSentenceBankSentenceStream implements ObjectStream { private final IrishSentenceBankDocument source; private Iterator sentenceIt; IrishSentenceBankSentenceStream(IrishSentenceBankDocument source) { this.source = source; reset(); } @Override public SentenceSample read() throws IOException { StringBuilder sentencesString = new StringBuilder(); List sentenceSpans = new LinkedList<>(); while (sentenceIt.hasNext()) { IrishSentenceBankDocument.IrishSentenceBankSentence sentence = sentenceIt.next(); int begin = sentencesString.length(); if (sentence.getOriginal() != null) { sentencesString.append(sentence.getOriginal()); } sentenceSpans.add(new Span(begin, sentencesString.length())); sentencesString.append(' '); } // end of stream is reached, indicate that with null return value if (sentenceSpans.size() == 0) { return null; } return new SentenceSample(sentencesString.toString(), sentenceSpans.toArray(new Span[sentenceSpans.size()])); } @Override public void reset() { sentenceIt = source.getSentences().iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_SentenceS0100644 0000000 0000000 00000000165 14135770370 032610 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/SentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/SentenceSampleStreamFacto0100664 0001750 0001750 00000004513 14135770370 034204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.sentdetect.SentenceSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link SentenceSampleStream}s. */ public class SentenceSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new SentenceSampleStreamFactory(Parameters.class)); } protected

SentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new SentenceSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ConllXPOS0100644 0000000 0000000 00000000157 14135770370 032503 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXPOSSampleStream.jav0100664 0001750 0001750 00000006364 14135770370 034031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import opennlp.tools.postag.POSSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ParagraphStream; import opennlp.tools.util.PlainTextByLineStream; /** * Parses the data from the CONLL 06 shared task into POS Samples. *

* More information about the data format can be found here:
* http://www.cnts.ua.ac.be/conll2006/ *

* Note: Do not use this class, internal use only! */ public class ConllXPOSSampleStream extends FilterObjectStream { public ConllXPOSSampleStream(ObjectStream lineStream) { super(new ParagraphStream(lineStream)); } public ConllXPOSSampleStream(InputStreamFactory in, Charset charset) throws IOException { super(new ParagraphStream(new PlainTextByLineStream(in, charset))); } public POSSample read() throws IOException { // The CONLL-X data has a word per line and each line is tab separated // in the following format: // ID, FORM, LEMMA, CPOSTAG, POSTAG, ... (max 10 fields) // One paragraph contains a whole sentence and, the token // and tag will be read from the FORM and POSTAG field. String paragraph = samples.read(); POSSample sample = null; if (paragraph != null) { // paragraph get lines BufferedReader reader = new BufferedReader(new StringReader(paragraph)); List tokens = new ArrayList<>(100); List tags = new ArrayList<>(100); String line; while ((line = reader.readLine()) != null) { final int minNumberOfFields = 5; String[] parts = line.split("\t"); if (parts.length >= minNumberOfFields) { tokens.add(parts[1]); tags.add(parts[4]); } else { throw new InvalidFormatException("Every non-empty line must have at least " + minNumberOfFields + " fields: '" + line + "'!"); } } // just skip empty samples and read next sample if (tokens.size() == 0) sample = read(); sample = new POSSample(tokens.toArray(new String[tokens.size()]), tags.toArray(new String[tags.size()])); } return sample; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_BioNLP2000100644 0000000 0000000 00000000164 14135770370 032225 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/BioNLP2004NameSampleStrea0100664 0001750 0001750 00000012676 14135770370 033511 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * Parser for the training files of the BioNLP/NLPBA 2004 shared task. *

* The data contains five named entity types: DNA, RNA, protein, cell_type and cell_line.
*

* Data can be found on this web site:
* http://www-tsujii.is.s.u-tokyo.ac.jp/GENIA/ERtask/report.html *

* Note: Do not use this class, internal use only! */ public class BioNLP2004NameSampleStream implements ObjectStream { public static final int GENERATE_DNA_ENTITIES = 0x01; public static final int GENERATE_PROTEIN_ENTITIES = 0x01 << 1; public static final int GENERATE_CELLTYPE_ENTITIES = 0x01 << 2; public static final int GENERATE_CELLLINE_ENTITIES = 0x01 << 3; public static final int GENERATE_RNA_ENTITIES = 0x01 << 4; private final int types; private final ObjectStream lineStream; public BioNLP2004NameSampleStream(InputStreamFactory in, int types) throws IOException { try { this.lineStream = new PlainTextByLineStream(in, StandardCharsets.UTF_8); System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8.name())); } catch (UnsupportedEncodingException e) { // UTF-8 is available on all JVMs, will never happen throw new IllegalStateException(e); } this.types = types; } public NameSample read() throws IOException { List sentence = new ArrayList<>(); List tags = new ArrayList<>(); boolean isClearAdaptiveData = false; // Empty line indicates end of sentence String line; while ((line = lineStream.read()) != null && !StringUtil.isEmpty(line.trim())) { if (line.startsWith("###MEDLINE:")) { isClearAdaptiveData = true; lineStream.read(); continue; } if (line.contains("ABSTRACT TRUNCATED")) continue; String[] fields = line.split("\t"); if (fields.length == 2) { sentence.add(fields[0]); tags.add(fields[1]); } else { throw new IOException("Expected two fields per line in training data, got " + fields.length + " for line '" + line + "'!"); } } if (sentence.size() > 0) { // convert name tags into spans List names = new ArrayList<>(); int beginIndex = -1; int endIndex = -1; for (int i = 0; i < tags.size(); i++) { String tag = tags.get(i); if (tag.endsWith("DNA") && (types & GENERATE_DNA_ENTITIES) == 0) tag = "O"; if (tag.endsWith("protein") && (types & GENERATE_PROTEIN_ENTITIES) == 0) tag = "O"; if (tag.endsWith("cell_type") && (types & GENERATE_CELLTYPE_ENTITIES) == 0) tag = "O"; if (tag.endsWith("cell_line") && (types & GENERATE_CELLTYPE_ENTITIES) == 0) tag = "O"; if (tag.endsWith("RNA") && (types & GENERATE_RNA_ENTITIES) == 0) tag = "O"; if (tag.startsWith("B-")) { if (beginIndex != -1) { names.add(new Span(beginIndex, endIndex, tags.get(beginIndex).substring(2))); beginIndex = -1; endIndex = -1; } beginIndex = i; endIndex = i + 1; } else if (tag.startsWith("I-")) { endIndex++; } else if (tag.equals("O")) { if (beginIndex != -1) { names.add(new Span(beginIndex, endIndex, tags.get(beginIndex).substring(2))); beginIndex = -1; endIndex = -1; } } else { throw new IOException("Invalid tag: " + tag); } } // if one span remains, create it here if (beginIndex != -1) names.add(new Span(beginIndex, endIndex, tags.get(beginIndex).substring(2))); return new NameSample(sentence.toArray(new String[sentence.size()]), names.toArray(new Span[names.size()]), isClearAdaptiveData); } else if (line != null) { // Just filter out empty events, if two lines in a row are empty return read(); } else { // source stream is not returning anymore lines return null; } } public void reset() throws IOException, UnsupportedOperationException { lineStream.reset(); } public void close() throws IOException { lineStream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Conll02Na0100644 0000000 0000000 00000000170 14135770370 032405 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/Conll02NameSampleStreamFa0100664 0001750 0001750 00000006502 14135770370 033744 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.Conll02NameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class Conll02NameSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters extends BasicFormatParams { @ParameterDescription(valueName = "spa|nld") String getLang(); @ParameterDescription(valueName = "per,loc,org,misc") String getTypes(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "conll02", new Conll02NameSampleStreamFactory(Parameters.class)); } protected

Conll02NameSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); LANGUAGE lang; if ("nl".equals(params.getLang()) || "nld".equals(params.getLang())) { lang = LANGUAGE.NLD; language = params.getLang(); } else if ("es".equals(params.getLang()) || "spa".equals(params.getLang())) { lang = LANGUAGE.SPA; language = params.getLang(); } else { throw new TerminateToolException(1, "Unsupported language: " + params.getLang()); } int typesToGenerate = 0; if (params.getTypes().contains("per")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_PERSON_ENTITIES; } if (params.getTypes().contains("org")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_ORGANIZATION_ENTITIES; } if (params.getTypes().contains("loc")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_LOCATION_ENTITIES; } if (params.getTypes().contains("misc")) { typesToGenerate = typesToGenerate | Conll02NameSampleStream.GENERATE_MISC_ENTITIES; } try { return new Conll02NameSampleStream(lang, CmdLineUtil.createInputStreamFactory(params.getData()), typesToGenerate); } catch (IOException e) { throw CmdLineUtil.createObjectStreamError(e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_leipzig_S0100644 0000000 0000000 00000000165 14135770370 032646 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/SampleShuffleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/SampleShuffleStre0100664 0001750 0001750 00000003267 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.leipzig; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Random; import opennlp.tools.util.ObjectStream; class SampleShuffleStream implements ObjectStream { private List bufferedSamples = new ArrayList<>(); private Iterator sampleIt; SampleShuffleStream(ObjectStream samples) throws IOException { T sample; while ((sample = samples.read()) != null) { bufferedSamples.add(sample); } Collections.shuffle(bufferedSamples, new Random(23)); reset(); } @Override public T read() throws IOException { if (sampleIt.hasNext()) { return sampleIt.next(); } return null; } @Override public void reset() throws IOException, UnsupportedOperationException { sampleIt = bufferedSamples.iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_leipzig_L0100644 0000000 0000000 00000000175 14135770370 032640 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/LeipzigLanguageSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/LeipzigLanguageSa0100664 0001750 0001750 00000013433 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.leipzig; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.IntStream; import opennlp.tools.langdetect.Language; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class LeipzigLanguageSampleStream implements ObjectStream { private class LeipzigSentencesStream implements ObjectStream { private final String lang; private Iterator lineIterator; LeipzigSentencesStream(String lang, File sentencesFile, int sentencesPerSample, int numberOfSamples) throws IOException { this.lang = lang; // The file name contains the number of lines, but to make this more stable // the file is once scanned for the count even tough this is slower int totalLineCount = (int) Files.lines(sentencesFile.toPath()).count(); int requiredLines = sentencesPerSample * numberOfSamples; if (totalLineCount < requiredLines) throw new InvalidFormatException( String.format("%s does not contain enough lines (%d lines < %d required lines).", sentencesFile.getPath(), totalLineCount, requiredLines)); List indexes = IntStream.range(0, totalLineCount) .boxed().collect(Collectors.toList()); Collections.shuffle(indexes, random); Set selectedLines = new HashSet<>(indexes.subList(0, requiredLines)); List sentences = new ArrayList<>(); try (ObjectStream lineStream = new PlainTextByLineStream( new MarkableFileInputStreamFactory(sentencesFile), StandardCharsets.UTF_8)) { int lineIndex = 0; String line; while ((line = lineStream.read()) != null) { int tabIndex = line.indexOf('\t'); if (tabIndex != -1) { if (selectedLines.contains(lineIndex)) { sentences.add(line); } } lineIndex++; } } Collections.shuffle(sentences, random); lineIterator = sentences.iterator(); } @Override public LanguageSample read() throws IOException { StringBuilder sampleString = new StringBuilder(); int count = 0; while (count < sentencesPerSample && lineIterator.hasNext()) { String line = lineIterator.next(); int textStart = line.indexOf('\t') + 1; sampleString.append(line.substring(textStart) + " "); count++; } if (sampleString.length() > 0) { return new LanguageSample(new Language(lang), sampleString); } return null; } } private final int sentencesPerSample; private Map langSampleCounts; private File[] sentencesFiles; private Iterator sentencesFilesIt; private ObjectStream sampleStream; private final Random random; public LeipzigLanguageSampleStream(File leipzigFolder, final int sentencesPerSample, final int samplesPerLanguage) throws IOException { this.sentencesPerSample = sentencesPerSample; sentencesFiles = leipzigFolder.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return !pathname.isHidden() && pathname.isFile() && pathname.getName().length() >= 3 && pathname.getName().substring(0,3).matches("[a-z]+"); } }); Arrays.sort(sentencesFiles); Map langCounts = Arrays.stream(sentencesFiles) .map(file -> file.getName().substring(0, 3)) .collect(Collectors.groupingBy(String::toString, Collectors.summingInt(v -> 1))); langSampleCounts = langCounts.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, e -> samplesPerLanguage / e.getValue())); random = new Random(23); reset(); } public LanguageSample read() throws IOException { LanguageSample sample; if (sampleStream != null && (sample = sampleStream.read()) != null) { return sample; } else { if (sentencesFilesIt.hasNext()) { File sentencesFile = sentencesFilesIt.next(); String lang = sentencesFile.getName().substring(0, 3); sampleStream = new LeipzigSentencesStream(lang, sentencesFile, sentencesPerSample, langSampleCounts.get(lang)); return read(); } } return null; } @Override public void reset() throws IOException { sentencesFilesIt = Arrays.asList(sentencesFiles).iterator(); sampleStream = null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_leipzig_L0100644 0000000 0000000 00000000204 14135770370 032631 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/LeipzigLanguageSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/LeipzigLanguageSa0100664 0001750 0001750 00000006201 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.leipzig; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EncodingParameter; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class LeipzigLanguageSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends EncodingParameter { @ParameterDescription(valueName = "sentencesDir", description = "dir with Leipig sentences to be used") File getSentencesDir(); @ParameterDescription(valueName = "sentencesPerSample", description = "number of sentences per sample") String getSentencesPerSample(); @ParameterDescription(valueName = "samplesPerLanguage", description = "number of samples per language") String getSamplesPerLanguage(); @ParameterDescription(valueName = "samplesToSkip", description = "number of samples to skip before returning") @OptionalParameter(defaultValue = "0") String getSamplesToSkip(); } protected

LeipzigLanguageSampleStreamFactory(Class

params) { super(params); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(LanguageSample.class, "leipzig", new LeipzigLanguageSampleStreamFactory(Parameters.class)); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); File sentencesFileDir = params.getSentencesDir(); try { return new SampleSkipStream(new SampleShuffleStream( new LeipzigLanguageSampleStream(sentencesFileDir, Integer.parseInt(params.getSentencesPerSample()), Integer.parseInt(params.getSamplesPerLanguage()) + Integer.parseInt(params.getSamplesToSkip()))), Integer.parseInt(params.getSamplesToSkip())); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while opening sample data.", e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_leipzig_S0100644 0000000 0000000 00000000162 14135770370 032643 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/SampleSkipStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/leipzig/SampleSkipStream.0100664 0001750 0001750 00000003067 14135770370 034115 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.leipzig; import java.io.IOException; import opennlp.tools.util.ObjectStream; class SampleSkipStream implements ObjectStream { private final ObjectStream samples; private final int samplesToSkip; SampleSkipStream(ObjectStream samples, int samplesToSkip) throws IOException { this.samples = samples; this.samplesToSkip = samplesToSkip; skipSamples(); } @Override public T read() throws IOException { return samples.read(); } @Override public void reset() throws IOException, UnsupportedOperationException { this.samples.reset(); skipSamples(); } private void skipSamples() throws IOException { int i = 0; while (i < samplesToSkip && (samples.read()) != null) { i++; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ConllXTok0100644 0000000 0000000 00000000170 14135770370 032572 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ConllXTokenSampleStreamFa0100664 0001750 0001750 00000004212 14135770370 034126 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.convert.POSToTokenSampleStream; import opennlp.tools.postag.POSSample; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ConllXTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends ConllXPOSSampleStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, ConllXPOSSampleStreamFactory.CONLLX_FORMAT, new ConllXTokenSampleStreamFactory(Parameters.class)); } protected

ConllXTokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream samples = StreamFactoryRegistry.getFactory(POSSample.class, ConllXPOSSampleStreamFactory.CONLLX_FORMAT).create( ArgumentParser.filter(args, ConllXPOSSampleStreamFactory.Parameters.class)); return new POSToTokenSampleStream(createDetokenizer(params), samples); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_EvalitaNa0100644 0000000 0000000 00000000170 14135770370 032561 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/EvalitaNameSampleStreamFa0100664 0001750 0001750 00000006203 14135770370 034116 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.EvalitaNameSampleStream.LANGUAGE; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class EvalitaNameSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters extends BasicFormatParams { @ParameterDescription(valueName = "it") String getLang(); @ParameterDescription(valueName = "per,loc,org,gpe") String getTypes(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "evalita", new EvalitaNameSampleStreamFactory(Parameters.class)); } protected

EvalitaNameSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); LANGUAGE lang; if ("it".equals(params.getLang())) { lang = LANGUAGE.IT; language = params.getLang(); } else { throw new TerminateToolException(1, "Unsupported language: " + params.getLang()); } int typesToGenerate = 0; if (params.getTypes().contains("per")) { typesToGenerate = typesToGenerate | EvalitaNameSampleStream.GENERATE_PERSON_ENTITIES; } if (params.getTypes().contains("org")) { typesToGenerate = typesToGenerate | EvalitaNameSampleStream.GENERATE_ORGANIZATION_ENTITIES; } if (params.getTypes().contains("loc")) { typesToGenerate = typesToGenerate | EvalitaNameSampleStream.GENERATE_LOCATION_ENTITIES; } if (params.getTypes().contains("gpe")) { typesToGenerate = typesToGenerate | EvalitaNameSampleStream.GENERATE_GPE_ENTITIES; } try { return new EvalitaNameSampleStream(lang, CmdLineUtil.createInputStreamFactory(params.getData()), typesToGenerate); } catch (IOException e) { throw CmdLineUtil.createObjectStreamError(e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_TokenSamp0100644 0000000 0000000 00000000162 14135770370 032617 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/TokenSampleStreamFactory.0100664 0001750 0001750 00000004454 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link TokenSampleStream}s. */ public class TokenSampleStreamFactory extends LanguageSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new TokenSampleStreamFactory(Parameters.class)); } protected

TokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new TokenSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ChunkerSa0100644 0000000 0000000 00000000164 14135770370 032603 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ChunkerSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ChunkerSampleStreamFactor0100664 0001750 0001750 00000004460 14135770370 034222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkSampleStream; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link ChunkSampleStream}s. */ public class ChunkerSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(ChunkSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new ChunkerSampleStreamFactory(Parameters.class)); } protected

ChunkerSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new ChunkSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000204 14135770370 032743 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSa0100664 0001750 0001750 00000004222 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import java.io.File; import java.nio.charset.StandardCharsets; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; public class OntoNotesNameSampleStreamFactory extends AbstractSampleStreamFactory { public OntoNotesNameSampleStreamFactory() { super(OntoNotesFormatParameters.class); } public ObjectStream create(String[] args) { OntoNotesFormatParameters params = ArgumentParser.parse(args, OntoNotesFormatParameters.class); ObjectStream documentStream = new DirectorySampleStream(new File( params.getOntoNotesDir()), file -> { if (file.isFile()) { return file.getName().endsWith(".name"); } return file.isDirectory(); }, true); return new OntoNotesNameSampleStream( new FileToStringSampleStream(documentStream, StandardCharsets.UTF_8)); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(NameSample.class, "ontonotes", new OntoNotesNameSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000176 14135770370 032753 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesParseSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesParseS0100664 0001750 0001750 00000003311 14135770370 034236 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import java.io.IOException; import opennlp.tools.parser.Parse; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; // Should be possible with this one, to train the parser and pos tagger! public class OntoNotesParseSampleStream extends FilterObjectStream { public OntoNotesParseSampleStream(ObjectStream samples) { super(samples); } public Parse read() throws IOException { StringBuilder parseString = new StringBuilder(); while (true) { String parse = samples.read(); if (parse != null) { parse = parse.trim(); } if (parse == null || parse.isEmpty()) { if (parseString.length() > 0) { return Parse.parseParse(parseString.toString()); } else { return null; } } parseString.append(parse).append(" "); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000203 14135770370 032742 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesPOSSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesPOSSam0100664 0001750 0001750 00000003423 14135770370 034147 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.formats.convert.ParseToPOSSampleStream; import opennlp.tools.parser.Parse; import opennlp.tools.postag.POSSample; import opennlp.tools.util.ObjectStream; public class OntoNotesPOSSampleStreamFactory extends AbstractSampleStreamFactory { private OntoNotesParseSampleStreamFactory parseSampleStreamFactory = new OntoNotesParseSampleStreamFactory(); protected OntoNotesPOSSampleStreamFactory() { super(OntoNotesFormatParameters.class); } public ObjectStream create(String[] args) { ObjectStream parseSampleStream = parseSampleStreamFactory.create(args); return new ParseToPOSSampleStream(parseSampleStream); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, "ontonotes", new OntoNotesPOSSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000170 14135770370 032745 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/DocumentToLineStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/DocumentToLineS0100664 0001750 0001750 00000003151 14135770370 034206 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import opennlp.tools.formats.brat.SegmenterObjectStream; import opennlp.tools.util.ObjectStream; /** * Reads a plain text file and return each line as a String object. */ public class DocumentToLineStream extends SegmenterObjectStream { public DocumentToLineStream(ObjectStream samples) { super(samples); } @Override protected List read(String sample) throws IOException { List lines = Arrays.asList(sample.split("\n")); // documents must be empty line terminated if (!lines.get(lines.size() - 1).trim().isEmpty()) { lines = new ArrayList<>(lines); lines.add(""); } return lines; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000205 14135770370 032744 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesParseSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesParseS0100664 0001750 0001750 00000004577 14135770370 034255 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import java.io.File; import java.nio.charset.StandardCharsets; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.formats.DirectorySampleStream; import opennlp.tools.formats.convert.FileToStringSampleStream; import opennlp.tools.parser.Parse; import opennlp.tools.util.ObjectStream; public class OntoNotesParseSampleStreamFactory extends AbstractSampleStreamFactory { protected OntoNotesParseSampleStreamFactory() { super(OntoNotesFormatParameters.class); } public ObjectStream create(String[] args) { OntoNotesFormatParameters params = ArgumentParser.parse(args, OntoNotesFormatParameters.class); ObjectStream documentStream = new DirectorySampleStream(new File( params.getOntoNotesDir()), file -> { if (file.isFile()) { return file.getName().endsWith(".parse"); } return file.isDirectory(); }, true); // We need file to line here ... and that is probably best doen with the plain text stream // lets copy it over here, refactor it, and then at some point we replace the current version // with the refactored version return new OntoNotesParseSampleStream(new DocumentToLineStream(new FileToStringSampleStream( documentStream, StandardCharsets.UTF_8))); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(Parse.class, "ontonotes", new OntoNotesParseSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000175 14135770370 032752 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSa0100664 0001750 0001750 00000012025 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * Name Sample Stream parser for the OntoNotes 4.0 corpus. */ public class OntoNotesNameSampleStream extends FilterObjectStream { private final Map tokenConversionMap; private List nameSamples = new LinkedList<>(); public OntoNotesNameSampleStream(ObjectStream samples) { super(samples); Map tokenConversionMap = new HashMap<>(); tokenConversionMap.put("-LRB-", "("); tokenConversionMap.put("-RRB-", ")"); tokenConversionMap.put("-LSB-", "["); tokenConversionMap.put("-RSB-", "]"); tokenConversionMap.put("-LCB-", "{"); tokenConversionMap.put("-RCB-", "}"); tokenConversionMap.put("-AMP-", "&"); this.tokenConversionMap = Collections.unmodifiableMap(tokenConversionMap); } private String convertToken(String token) { StringBuilder convertedToken = new StringBuilder(token); int startTagEndIndex = convertedToken.indexOf(">"); if (token.contains("=\"") && startTagEndIndex != -1) { convertedToken.delete(0, startTagEndIndex + 1); } int endTagBeginIndex = convertedToken.indexOf("<"); int endTagEndIndex = convertedToken.indexOf(">"); if (endTagBeginIndex != -1 && endTagEndIndex != -1) { convertedToken.delete(endTagBeginIndex, endTagEndIndex + 1); } String cleanedToken = convertedToken.toString(); if (tokenConversionMap.get(cleanedToken) != null) { cleanedToken = tokenConversionMap.get(cleanedToken); } return cleanedToken; } public NameSample read() throws IOException { if (nameSamples.isEmpty()) { String doc = samples.read(); if (doc != null) { BufferedReader docIn = new BufferedReader(new StringReader(doc)); boolean clearAdaptiveData = true; String line; while ((line = docIn.readLine()) != null) { if (line.startsWith("")) { break; } String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(line); List entities = new LinkedList<>(); List cleanedTokens = new ArrayList<>(tokens.length); int tokenIndex = 0; int entityBeginIndex = -1; String entityType = null; boolean insideStartEnmaxTag = false; for (String token : tokens) { // Split here, next part of tag is in new token if (token.startsWith("")) { entityBeginIndex = tokenIndex; insideStartEnmaxTag = false; } else { continue; } } if (token.endsWith("")) { entities.add(new Span(entityBeginIndex, tokenIndex + 1, entityType)); entityBeginIndex = -1; } cleanedTokens.add(convertToken(token)); tokenIndex++; } nameSamples.add(new NameSample(cleanedTokens .toArray(new String[cleanedTokens.size()]), entities .toArray(new Span[entities.size()]), clearAdaptiveData)); clearAdaptiveData = false; } } } if (!nameSamples.isEmpty()) { return nameSamples.remove(0); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_ontonotes0100644 0000000 0000000 00000000175 14135770370 032752 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesFormatParameters.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesFormat0100664 0001750 0001750 00000002040 14135770370 034267 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.ontonotes; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; public interface OntoNotesFormatParameters { @ParameterDescription(valueName = "OntoNotes 4.0 corpus directory") String getOntoNotesDir(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_N0100644 0000000 0000000 00000000203 14135770370 032647 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToSentenceSam0100664 0001750 0001750 00000004335 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.NameSampleDataStreamFactory; import opennlp.tools.namefind.NameSample; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class NameToSentenceSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends NameSampleDataStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "namefinder", new NameToSentenceSampleStreamFactory(Parameters.class)); } protected

NameToSentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream nameSampleStream = StreamFactoryRegistry.getFactory( NameSample.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, NameSampleDataStreamFactory.Parameters.class)); return new NameToSentenceSampleStream(createDetokenizer(params), nameSampleStream, 30); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000201 14135770370 032647 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToTokenSampl0100664 0001750 0001750 00000004350 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.ParseSampleStreamFactory; import opennlp.tools.formats.WordTagSampleStreamFactory; import opennlp.tools.parser.Parse; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ParseToTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends ParseSampleStreamFactory.Parameters, DetokenizerParameter { } private ParseToTokenSampleStreamFactory() { super(Parameters.class); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream parseSampleStream = StreamFactoryRegistry.getFactory(Parse.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, WordTagSampleStreamFactory.Parameters.class)); return new POSToTokenSampleStream(createDetokenizer(params), new ParseToPOSSampleStream(parseSampleStream)); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, "parse", new ParseToTokenSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000202 14135770370 032650 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToSentenceSamp0100664 0001750 0001750 00000004307 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.WordTagSampleStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class POSToSentenceSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends WordTagSampleStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "pos", new POSToSentenceSampleStreamFactory(Parameters.class)); } protected

POSToSentenceSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream posSampleStream = StreamFactoryRegistry.getFactory(POSSample.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, WordTagSampleStreamFactory.Parameters.class)); return new POSToSentenceSampleStream(createDetokenizer(params), posSampleStream, 30); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_N0100644 0000000 0000000 00000000200 14135770370 032644 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToTokenSample0100664 0001750 0001750 00000004277 14135770370 034162 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.NameSampleDataStreamFactory; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class NameToTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends NameSampleDataStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, "namefinder", new NameToTokenSampleStreamFactory(Parameters.class)); } protected

NameToTokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream nameSampleStream = StreamFactoryRegistry.getFactory( NameSample.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, NameSampleDataStreamFactory.Parameters.class)); return new NameToTokenSampleStream(createDetokenizer(params), nameSampleStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000177 14135770370 032663 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToTokenSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToTokenSampleS0100664 0001750 0001750 00000004251 14135770370 034056 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.WordTagSampleStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class POSToTokenSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends WordTagSampleStreamFactory.Parameters, DetokenizerParameter { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(TokenSample.class, "pos", new POSToTokenSampleStreamFactory(Parameters.class)); } protected

POSToTokenSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream posSampleStream = StreamFactoryRegistry.getFactory(POSSample.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, WordTagSampleStreamFactory.Parameters.class)); return new POSToTokenSampleStream(createDetokenizer(params), posSampleStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000177 14135770370 032663 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToPOSSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToPOSSampleS0100664 0001750 0001750 00000004022 14135770370 034044 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.formats.LanguageSampleStreamFactory; import opennlp.tools.formats.ParseSampleStreamFactory; import opennlp.tools.parser.Parse; import opennlp.tools.postag.POSSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ParseToPOSSampleStreamFactory extends LanguageSampleStreamFactory { private ParseToPOSSampleStreamFactory() { super(ParseSampleStreamFactory.Parameters.class); } public ObjectStream create(String[] args) { ParseSampleStreamFactory.Parameters params = ArgumentParser.parse(args, ParseSampleStreamFactory.Parameters.class); ObjectStream parseSampleStream = StreamFactoryRegistry.getFactory(Parse.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, ParseSampleStreamFactory.Parameters.class)); return new ParseToPOSSampleStream(parseSampleStream); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(POSSample.class, "parse", new ParseToPOSSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_F0100644 0000000 0000000 00000000175 14135770370 032647 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/FileToByteArraySampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/FileToByteArraySa0100664 0001750 0001750 00000003566 14135770370 034125 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class FileToByteArraySampleStream extends FilterObjectStream { public FileToByteArraySampleStream(ObjectStream samples) { super(samples); } private static byte[] readFile(File file) throws IOException { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); try (InputStream in = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer = new byte[1024]; int length; while ((length = in.read(buffer, 0, buffer.length)) > 0) { bytes.write(buffer, 0, length); } } return bytes.toByteArray(); } public byte[] read() throws IOException { File sampleFile = samples.read(); if (sampleFile != null) { return readFile(sampleFile); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_F0100644 0000000 0000000 00000000172 14135770370 032644 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/FileToStringSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/FileToStringSampl0100664 0001750 0001750 00000005316 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Provides the ability to read the contents of files * contained in an object stream of files. * */ public class FileToStringSampleStream extends FilterObjectStream { private final Charset encoding; /** * Creates a new file-to-string sample stream. * @param samples The {@link ObjectStream} containing the files. * @param encoding The {@link Charset} encoding of the files. */ public FileToStringSampleStream(ObjectStream samples, Charset encoding) { super(samples); this.encoding = encoding; } /** * Reads the contents of a file to a string. * @param textFile The {@link File} to read. * @param encoding The {@link Charset} for the file. * @return The string contents of the file. * @throws IOException Thrown if the file cannot be read. */ private static String readFile(File textFile, Charset encoding) throws IOException { Reader in = new BufferedReader(new InputStreamReader(new FileInputStream(textFile), encoding)); StringBuilder text = new StringBuilder(); try { char[] buffer = new char[1024]; int length; while ((length = in.read(buffer, 0, buffer.length)) > 0) { text.append(buffer, 0, length); } } finally { try { in.close(); } catch (IOException e) { // sorry that this can fail! } } return text.toString(); } @Override public String read() throws IOException { File sampleFile = samples.read(); if (sampleFile != null) { return readFile(sampleFile, encoding); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_N0100644 0000000 0000000 00000000174 14135770370 032656 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToSentenceSam0100664 0001750 0001750 00000002567 14135770370 034145 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class NameToSentenceSampleStream extends AbstractToSentenceSampleStream { public NameToSentenceSampleStream(Detokenizer detokenizer, ObjectStream samples, int chunkSize) { super(detokenizer, samples, chunkSize); } @Override protected String[] toSentence(NameSample sample) { return sample.getSentence(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000170 14135770370 032654 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToTokenSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToTokenSampleS0100664 0001750 0001750 00000003376 14135770370 034065 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.IOException; import java.util.Objects; import opennlp.tools.postag.POSSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class POSToTokenSampleStream extends FilterObjectStream { private final Detokenizer detokenizer; public POSToTokenSampleStream(Detokenizer detokenizer, ObjectStream samples) { super(samples); this.detokenizer = Objects.requireNonNull(detokenizer, "detokenizer must not be null!"); } public TokenSample read() throws IOException { POSSample posSample = samples.read(); TokenSample tokenSample = null; if (posSample != null ) { tokenSample = new TokenSample(detokenizer, posSample.getSentence()); } return tokenSample; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000170 14135770370 032654 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToPOSSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToPOSSampleS0100664 0001750 0001750 00000003342 14135770370 034050 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.parser.Parse; import opennlp.tools.postag.POSSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ParseToPOSSampleStream extends FilterObjectStream { public ParseToPOSSampleStream(ObjectStream samples) { super(samples); } public POSSample read() throws IOException { Parse parse = samples.read(); if (parse != null) { List sentence = new ArrayList<>(); List tags = new ArrayList<>(); for (Parse tagNode : parse.getTagNodes()) { sentence.add(tagNode.getCoveredText()); tags.add(tagNode.getType()); } return new POSSample(sentence, tags); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_N0100644 0000000 0000000 00000000171 14135770370 032653 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToTokenSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/NameToTokenSample0100664 0001750 0001750 00000003266 14135770370 034157 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.IOException; import opennlp.tools.namefind.NameSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class NameToTokenSampleStream extends FilterObjectStream { private final Detokenizer detokenizer; public NameToTokenSampleStream(Detokenizer detokenizer, ObjectStream samples) { super(samples); this.detokenizer = detokenizer; } public TokenSample read() throws IOException { NameSample nameSample = samples.read(); TokenSample tokenSample = null; if (nameSample != null ) { tokenSample = new TokenSample(detokenizer, nameSample.getSentence()); } return tokenSample; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000204 14135770370 032652 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/ParseToSentenceSa0100664 0001750 0001750 00000004313 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.DetokenizerParameter; import opennlp.tools.formats.DetokenizerSampleStreamFactory; import opennlp.tools.formats.ParseSampleStreamFactory; import opennlp.tools.parser.Parse; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class ParseToSentenceSampleStreamFactory extends DetokenizerSampleStreamFactory { interface Parameters extends ParseSampleStreamFactory.Parameters, DetokenizerParameter { } private ParseToSentenceSampleStreamFactory() { super(Parameters.class); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); ObjectStream parseSampleStream = StreamFactoryRegistry.getFactory(Parse.class, StreamFactoryRegistry.DEFAULT_FORMAT).create( ArgumentParser.filter(args, ParseSampleStreamFactory.Parameters.class)); return new POSToSentenceSampleStream(createDetokenizer(params), new ParseToPOSSampleStream(parseSampleStream), 30); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "parse", new ParseToSentenceSampleStreamFactory()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_P0100644 0000000 0000000 00000000173 14135770370 032657 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/POSToSentenceSamp0100664 0001750 0001750 00000002614 14135770370 034077 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import opennlp.tools.postag.POSSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.util.ObjectStream; /** * Note: Do not use this class, internal use only! */ public class POSToSentenceSampleStream extends AbstractToSentenceSampleStream { public POSToSentenceSampleStream(Detokenizer detokenizer, ObjectStream samples, int chunkSize) { super(detokenizer, samples, chunkSize); } @Override protected String[] toSentence(POSSample sample) { return sample.getSentence(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_convert_A0100644 0000000 0000000 00000000200 14135770370 032627 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/AbstractToSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/convert/AbstractToSentenc0100664 0001750 0001750 00000004547 14135770370 034222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.convert; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public abstract class AbstractToSentenceSampleStream extends FilterObjectStream { private final Detokenizer detokenizer; private final int chunkSize; AbstractToSentenceSampleStream(Detokenizer detokenizer, ObjectStream samples, int chunkSize) { super(samples); this.detokenizer = Objects.requireNonNull(detokenizer, "detokenizer must not be null"); if (chunkSize < 0) { throw new IllegalArgumentException("chunkSize must be zero or larger but was " + chunkSize + "!"); } if (chunkSize > 0) { this.chunkSize = chunkSize; } else { this.chunkSize = Integer.MAX_VALUE; } } protected abstract String[] toSentence(T sample); public SentenceSample read() throws IOException { List sentences = new ArrayList<>(); T posSample; int chunks = 0; while ((posSample = samples.read()) != null && chunks < chunkSize) { sentences.add(toSentence(posSample)); chunks++; } if (sentences.size() > 0) { return new SentenceSample(detokenizer, sentences.toArray(new String[sentences.size()][])); } else if (posSample != null) { return read(); // filter out empty line } return null; // last sample was read } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000157 14135770370 032506 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPTextDocument.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPTextDocument.jav0100664 0001750 0001750 00000014520 14135770370 033773 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import opennlp.tools.util.XmlUtil; public class NKJPTextDocument { Map divtypes; Map>> texts; NKJPTextDocument() { divtypes = new HashMap<>(); texts = new HashMap<>(); } NKJPTextDocument(Map divtypes, Map>> texts) { this(); this.divtypes = divtypes; this.texts = texts; } public static NKJPTextDocument parse(InputStream is) throws IOException { Map divtypes = new HashMap<>(); Map>> texts = new HashMap<>(); try { DocumentBuilder docBuilder = XmlUtil.createDocumentBuilder();; Document doc = docBuilder.parse(is); XPathFactory xPathfactory = XPathFactory.newInstance(); XPath xpath = xPathfactory.newXPath(); final XPathExpression TEXT_NODES_EXAMPLE = xpath.compile("/teiCorpus/TEI/text/group/text"); final XPathExpression TEXT_NODES_SAMPLE = xpath.compile("/teiCorpus/TEI/text"); final XPathExpression DIV_NODES = xpath.compile("./body/div"); final XPathExpression PARA_NODES = xpath.compile("./p|./ab"); doc.getDocumentElement().normalize(); String root = doc.getDocumentElement().getNodeName(); if (!root.equalsIgnoreCase("teiCorpus")) { throw new IOException("Expected root node " + root); } String current_text = ""; NodeList textnl = (NodeList) TEXT_NODES_EXAMPLE.evaluate(doc, XPathConstants.NODESET); if (textnl.getLength() == 0) { textnl = (NodeList) TEXT_NODES_SAMPLE.evaluate(doc, XPathConstants.NODESET); } for (int i = 0; i < textnl.getLength(); i++) { Node textnode = textnl.item(i); current_text = attrib(textnode, "xml:id", true); Map> current_divs = new HashMap<>(); NodeList divnl = (NodeList) DIV_NODES.evaluate(textnode, XPathConstants.NODESET); for (int j = 0; j < divnl.getLength(); j++) { Node divnode = divnl.item(j); String divtype = attrib(divnode, "type", false); String divid = attrib(divnode, "xml:id", true); divtypes.put(divid, divtype); Map current_paras = new HashMap<>(); NodeList paranl = (NodeList) PARA_NODES.evaluate(divnode, XPathConstants.NODESET); for (int k = 0; k < paranl.getLength(); k++) { Node pnode = paranl.item(k); String pid = attrib(pnode, "xml:id", true); if (pnode.getChildNodes().getLength() != 1 && !pnode.getFirstChild().getNodeName().equals("#text")) { throw new IOException("Unexpected content in p element " + pid); } String ptext = pnode.getTextContent(); current_paras.put(pid, ptext); } current_divs.put(divid, current_paras); } texts.put(current_text, current_divs); } } catch (SAXException | XPathExpressionException | IOException e) { throw new IOException("Failed to parse NKJP document", e); } return new NKJPTextDocument(divtypes, texts); } static NKJPTextDocument parse(File file) throws IOException { try (InputStream in = new FileInputStream(file)) { return parse(in); } } Map getDivtypes() { return Collections.unmodifiableMap(this.divtypes); } Map>> getTexts() { return Collections.unmodifiableMap(this.texts); } /** * Segmentation etc. is done only in relation to the paragraph, * which are unique within a document. This is to simplify * working with the paragraphs within the document * @return a map of paragaph IDs and their text */ Map getParagraphs() { Map paragraphs = new HashMap<>(); for (String dockey : texts.keySet()) { for (String divkey : texts.get(dockey).keySet()) { for (String pkey : texts.get(dockey).get(divkey).keySet()) { paragraphs.put(pkey, texts.get(dockey).get(divkey).get(pkey)); } } } return paragraphs; } /** * Helper method to get the value of an attribute * @param n The node being processed * @param attrib The name of the attribute * @param required Whether or not the attribute is required * @return The value of the attribute, or null if not required and not present * @throws Exception */ private static String attrib(Node n, String attrib, boolean required) throws IOException { if (required && (n.getAttributes() == null || n.getAttributes().getLength() == 0)) { throw new IOException("Missing required attributes in node " + n.getNodeName()); } if (n.getAttributes().getNamedItem(attrib) != null) { return n.getAttributes().getNamedItem(attrib).getTextContent(); } else { if (required) { throw new IOException("Required attribute \"" + attrib + "\" missing in node " + n.getNodeName()); } else { return null; } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000167 14135770370 032507 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSegmentationDocument.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSegmentationDocu0100664 0001750 0001750 00000020013 14135770370 034033 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.LinkedHashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import opennlp.tools.util.Span; import opennlp.tools.util.XmlUtil; public class NKJPSegmentationDocument { public static class Pointer { String doc; String id; int offset; int length; boolean space_after; public Pointer(String doc, String id, int offset, int length, boolean space_after) { this.doc = doc; this.id = id; this.offset = offset; this.length = length; this.space_after = space_after; } public Span toSpan() { return new Span(this.offset, this.offset + this.length); } @Override public String toString() { return doc + "#string-range(" + id + "," + Integer.toString(offset) + "," + Integer.toString(length) + ")"; } } public Map> getSegments() { return segments; } Map> segments; NKJPSegmentationDocument() { this.segments = new LinkedHashMap<>(); } NKJPSegmentationDocument(Map> segments) { this(); this.segments = segments; } public static NKJPSegmentationDocument parse(InputStream is) throws IOException { Map> sentences = new LinkedHashMap<>(); try { DocumentBuilder docBuilder = XmlUtil.createDocumentBuilder();; Document doc = docBuilder.parse(is); XPathFactory xPathfactory = XPathFactory.newInstance(); XPath xpath = xPathfactory.newXPath(); final XPathExpression SENT_NODES = xpath.compile("/teiCorpus/TEI/text/body/p/s"); final XPathExpression SEG_NODES = xpath.compile("./seg|./choice"); final XPathExpression SEG_NODES_ONLY = xpath.compile("./seg"); NodeList nl = (NodeList) SENT_NODES.evaluate(doc, XPathConstants.NODESET); for (int i = 0; i < nl.getLength(); i++) { Node sentnode = nl.item(i); String sentid = null; if (sentnode.getAttributes().getNamedItem("xml:id") != null) { sentid = sentnode.getAttributes().getNamedItem("xml:id").getTextContent(); } Map segments = new LinkedHashMap<>(); NodeList segnl = (NodeList) SEG_NODES.evaluate(sentnode, XPathConstants.NODESET); for (int j = 0; j < segnl.getLength(); j++) { Node n = segnl.item(j); if (n.getNodeName().equals("seg")) { String segid = xmlID(n); Pointer pointer = fromSeg(n); segments.put(segid, pointer); } else if (n.getNodeName().equals("choice")) { NodeList choices = n.getChildNodes(); for (int k = 0; k < choices.getLength(); k++) { if (choices.item(k).getNodeName().equals("nkjp:paren")) { if (!checkRejectedParen(choices.item(k))) { NodeList paren_segs = (NodeList) SEG_NODES_ONLY.evaluate(choices.item(k), XPathConstants.NODESET); for (int l = 0; l < paren_segs.getLength(); l++) { String segid = xmlID(paren_segs.item(l)); Pointer pointer = fromSeg(paren_segs.item(l)); segments.put(segid, pointer); } } } else if (choices.item(k).getNodeName().equals("seg")) { if (!checkRejected(choices.item(k))) { String segid = xmlID(choices.item(k)); Pointer pointer = fromSeg(choices.item(k)); segments.put(segid, pointer); } } } } } sentences.put(sentid, segments); } } catch (SAXException | XPathExpressionException | IOException e) { throw new IOException("Failed to parse NKJP document", e); } return new NKJPSegmentationDocument(sentences); } static boolean checkRejected(Node n) { if (n.getAttributes() == null) { return false; } if (n.getAttributes().getNamedItem("nkjp:rejected") == null) { return false; } String rejected = n.getAttributes().getNamedItem("nkjp:rejected").getTextContent(); return rejected.equals("true"); } static boolean checkRejectedParen(Node n) { if (n.getChildNodes().getLength() == 0) { return false; } else { for (int i = 0; i < n.getChildNodes().getLength(); i++) { Node m = n.getChildNodes().item(i); if (m.getNodeName().equals("seg")) { if (!checkRejected(m)) { return false; } } } return true; } } static String xmlID(Node n) throws IOException { if (n.getAttributes() == null || n.getAttributes().getLength() < 1) { throw new IOException("Missing required attributes"); } String id = null; if (n.getAttributes().getNamedItem("xml:id") != null) { id = n.getAttributes().getNamedItem("xml:id").getTextContent(); } if (id == null) { throw new IOException("Missing xml:id attribute"); } return id; } static Pointer fromSeg(Node n) throws IOException { if (n.getAttributes() == null || n.getAttributes().getLength() < 2) { throw new IOException("Missing required attributes"); } String ptr = null; if (n.getAttributes().getNamedItem("corresp") != null) { ptr = n.getAttributes().getNamedItem("corresp").getTextContent(); } String spacing = ""; if (n.getAttributes().getNamedItem("nkjp:nps") != null) { spacing = n.getAttributes().getNamedItem("nkjp:nps").getTextContent(); } if (ptr == null) { throw new IOException("Missing required attribute"); } boolean space_after = (ptr.equals("yes")); if (!ptr.contains("#") || !ptr.contains("(") || ptr.charAt(ptr.length() - 1) != ')') { throw new IOException("String " + ptr + " does not appear to be a valid NKJP corresp attribute"); } int docend = ptr.indexOf('#'); String document = ptr.substring(0, docend); int pointer_start = ptr.indexOf('(') + 1; String[] pieces = ptr.substring(pointer_start, ptr.length() - 1).split(","); if (pieces.length < 3 || pieces.length > 4) { throw new IOException("String " + ptr + " does not appear to be a valid NKJP corresp attribute"); } String docid = pieces[0]; int offset = 0; int length = 0; if (pieces.length == 3) { offset = Integer.parseInt(pieces[1]); length = Integer.parseInt(pieces[2]); } else { int os1 = Integer.parseInt(pieces[1]); int os2 = Integer.parseInt(pieces[2]); offset = (os1 * 1000) + os2; length = Integer.parseInt(pieces[3]); } return new Pointer(document, docid, offset, length, space_after); } static NKJPSegmentationDocument parse(File file) throws IOException { try (InputStream in = new FileInputStream(file)) { return parse(in); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000167 14135770370 032507 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleSt0100664 0001750 0001750 00000007103 14135770370 034005 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class NKJPSentenceSampleStream implements ObjectStream { private final NKJPSegmentationDocument segments; private final NKJPTextDocument text; private Iterator>> segmentIt; NKJPSentenceSampleStream(NKJPSegmentationDocument segments, NKJPTextDocument text) { this.segments = segments; this.text = text; reset(); } @Override public SentenceSample read() throws IOException { StringBuilder sentencesString = new StringBuilder(); List sentenceSpans = new LinkedList<>(); Map paragraphs = text.getParagraphs(); while (segmentIt.hasNext()) { Map.Entry> segment = segmentIt.next(); int start = 0; int end = 0; boolean started = false; String lastParagraphId = ""; String currentParagraph = ""; for (String s : segment.getValue().keySet()) { NKJPSegmentationDocument.Pointer currentPointer = segment.getValue().get(s); Span currentSpan = currentPointer.toSpan(); if (!started) { start = currentSpan.getStart(); started = true; lastParagraphId = currentPointer.id; currentParagraph = paragraphs.get(currentPointer.id); } if (!lastParagraphId.equals(currentPointer.id)) { int new_start = sentencesString.length(); sentencesString.append(currentParagraph.substring(start, end)); int new_end = sentencesString.length(); sentenceSpans.add(new Span(new_start, new_end)); sentencesString.append(' '); start = currentSpan.getStart(); end = currentSpan.getEnd(); lastParagraphId = currentPointer.id; currentParagraph = paragraphs.get(currentPointer.id); } else { end = currentSpan.getEnd(); } } int new_start = sentencesString.length(); sentencesString.append(currentParagraph.substring(start, end)); int new_end = sentencesString.length(); sentenceSpans.add(new Span(new_start, new_end)); sentencesString.append(' '); } // end of stream is reached, indicate that with null return value if (sentenceSpans.size() == 0) { return null; } return new SentenceSample(sentencesString.toString(), sentenceSpans.toArray(new Span[sentenceSpans.size()])); } @Override public void reset() { segmentIt = segments.getSegments().entrySet().iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_nkjp_NKJP0100644 0000000 0000000 00000000176 14135770370 032507 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/nkjp/NKJPSentenceSampleSt0100664 0001750 0001750 00000004655 14135770370 034016 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats.nkjp; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.formats.AbstractSampleStreamFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.ObjectStream; public class NKJPSentenceSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { @ArgumentParser.ParameterDescription(valueName = "text", description = "file containing NKJP text") File getTextFile(); } public static void registerFactory() { StreamFactoryRegistry.registerFactory(SentenceSample.class, "nkjp", new NKJPSentenceSampleStreamFactory( NKJPSentenceSampleStreamFactory.Parameters.class)); } protected

NKJPSentenceSampleStreamFactory(Class

params) { super(params); } @Override public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); CmdLineUtil.checkInputFile("Text", params.getTextFile()); NKJPSegmentationDocument segDoc = null; NKJPTextDocument textDoc = null; try { segDoc = NKJPSegmentationDocument.parse(params.getData()); textDoc = NKJPTextDocument.parse(params.getTextFile()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new NKJPSentenceSampleStream(segDoc, textDoc); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_formats_Lemmatize0100644 0000000 0000000 00000000167 14135770370 032652 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LemmatizerSampleStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/formats/LemmatizerSampleStreamFac0100664 0001750 0001750 00000004477 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.formats; import java.io.IOException; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.params.BasicFormatParams; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmaSampleStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Factory producing OpenNLP {@link LemmaSampleStream}s. */ public class LemmatizerSampleStreamFactory extends AbstractSampleStreamFactory { interface Parameters extends BasicFormatParams { } public static void registerFactory() { StreamFactoryRegistry.registerFactory(LemmaSample.class, StreamFactoryRegistry.DEFAULT_FORMAT, new LemmatizerSampleStreamFactory(Parameters.class)); } protected

LemmatizerSampleStreamFactory(Class

params) { super(params); } public ObjectStream create(String[] args) { Parameters params = ArgumentParser.parse(args, Parameters.class); CmdLineUtil.checkInputFile("Data", params.getData()); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(params.getData()); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, params.getEncoding()); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new LemmaSampleStream(lineStream); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_TokenCon0100644 0000000 0000000 00000000160 14135770370 032611 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenContextGenerator.ja0100664 0001750 0001750 00000002446 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; /** * Interface for {@link TokenizerME} context generators. */ public interface TokenContextGenerator { /** * Returns an array of features for the specified sentence string at the specified index. * * @param sentence The string for a sentence. * @param index The index to consider splitting as a token. * * @return an array of features for the specified sentence string at the * specified index. */ String[] getContext(String sentence, int index); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerModel.java0100664 0001750 0001750 00000010552 14135770370 033175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.BaseModel; import opennlp.tools.util.model.ModelUtil; /** * The {@link TokenizerModel} is the model used * by a learnable {@link Tokenizer}. * * @see TokenizerME */ public final class TokenizerModel extends BaseModel { private static final String COMPONENT_NAME = "TokenizerME"; private static final String TOKENIZER_MODEL_ENTRY = "token.model"; /** * Initializes the current instance. * * @param tokenizerModel the model * @param manifestInfoEntries the manifest * @param tokenizerFactory the factory */ public TokenizerModel(MaxentModel tokenizerModel, Map manifestInfoEntries, TokenizerFactory tokenizerFactory) { super(COMPONENT_NAME, tokenizerFactory.getLanguageCode(), manifestInfoEntries, tokenizerFactory); artifactMap.put(TOKENIZER_MODEL_ENTRY, tokenizerModel); checkArtifactMap(); } /** * Initializes the current instance. * * @param in the Input Stream to load the model from * * @throws IOException if reading from the stream fails in anyway * @throws InvalidFormatException if the stream doesn't have the expected format */ public TokenizerModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } /** * Initializes the current instance. * * @param modelFile the file containing the tokenizer model * * @throws IOException if reading from the stream fails in anyway */ public TokenizerModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public TokenizerModel(Path modelPath) throws IOException { this(modelPath.toFile()); } /** * Initializes the current instance. * * @param modelURL the URL pointing to the tokenizer model * * @throws IOException if reading from the stream fails in anyway */ public TokenizerModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } /** * Checks if the tokenizer model has the right outcomes. * * @param model * @return */ private static boolean isModelCompatible(MaxentModel model) { return ModelUtil.validateOutcomes(model, TokenizerME.SPLIT, TokenizerME.NO_SPLIT); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(TOKENIZER_MODEL_ENTRY) instanceof AbstractModel)) { throw new InvalidFormatException("Token model is incomplete!"); } if (!isModelCompatible(getMaxentModel())) { throw new InvalidFormatException("The maxent model is not compatible with the tokenizer!"); } } public TokenizerFactory getFactory() { return (TokenizerFactory) this.toolFactory; } @Override protected Class getDefaultFactory() { return TokenizerFactory.class; } public MaxentModel getMaxentModel() { return (MaxentModel) artifactMap.get(TOKENIZER_MODEL_ENTRY); } public Dictionary getAbbreviations() { if (getFactory() != null) { return getFactory().getAbbreviationDictionary(); } return null; } public boolean useAlphaNumericOptimization() { return getFactory() != null && getFactory().isUseAlphaNumericOptmization(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSampleStream.java0100664 0001750 0001750 00000004352 14135770370 033641 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.util.Objects; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * This class is a stream filter which reads in string encoded samples and creates * {@link TokenSample}s out of them. The input string sample is tokenized if a * whitespace or the special separator chars occur. *

* Sample:
* "token1 token2 token3<SPLIT>token4"
* The tokens token1 and token2 are separated by a whitespace, token3 and token3 * are separated by the special character sequence, in this case the default * split sequence. *

* The sequence must be unique in the input string and is not escaped. */ public class TokenSampleStream extends FilterObjectStream { private final String separatorChars; public TokenSampleStream(ObjectStream sampleStrings, String separatorChars) { super(Objects.requireNonNull(sampleStrings, "sampleStrings must not be null")); this.separatorChars = Objects.requireNonNull(separatorChars,"separatorChars must not be null"); } public TokenSampleStream(ObjectStream sentences) { this(sentences, TokenSample.DEFAULT_SEPARATOR_CHARS); } public TokenSample read() throws IOException { String sampleString = samples.read(); if (sampleString != null) { return TokenSample.parse(sampleString, separatorChars); } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerStream.java0100664 0001750 0001750 00000003346 14135770370 033373 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * The {@link TokenizerStream} uses a tokenizer to tokenize the * input string and output {@link TokenSample}s. */ public class TokenizerStream implements ObjectStream { private Tokenizer tokenizer; private ObjectStream input; public TokenizerStream(Tokenizer tokenizer, ObjectStream input) { this.tokenizer = tokenizer; this.input = input; } public TokenSample read() throws IOException { String inputString = input.read(); if (inputString != null) { Span[] tokens = tokenizer.tokenizePos(inputString); return new TokenSample(inputString, tokens); } return null; } public void close() throws IOException { input.close(); } public void reset() throws IOException, UnsupportedOperationException { input.reset(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/package-info.java0100664 0001750 0001750 00000002162 14135770370 032564 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Contains classes related to finding token or words in a string. All * tokenizer implement the Tokenizer interface. Currently there is the * learnable TokenizerME, the WhitespaceTokenizer and * the SimpleTokenizer which is a character class tokenizer. */ package opennlp.tools.tokenize; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_DefaultT0100644 0000000 0000000 00000000167 14135770370 032610 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DefaultTokenContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DefaultTokenContextGener0100664 0001750 0001750 00000010645 14135770370 034240 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import opennlp.tools.util.StringUtil; /** * Generate events for maxent decisions for tokenization. */ public class DefaultTokenContextGenerator implements TokenContextGenerator { protected final Set inducedAbbreviations; /** * Creates a default context generator for tokenizer. */ public DefaultTokenContextGenerator() { this(Collections.emptySet()); } /** * Creates a default context generator for tokenizer. * * @param inducedAbbreviations the induced abbreviations */ public DefaultTokenContextGenerator(Set inducedAbbreviations) { this.inducedAbbreviations = inducedAbbreviations; } /* (non-Javadoc) * @see opennlp.tools.tokenize.TokenContextGenerator#getContext(java.lang.String, int) */ public String[] getContext(String sentence, int index) { List preds = createContext(sentence, index); String[] context = new String[preds.size()]; preds.toArray(context); return context; } /** * Returns an {@link ArrayList} of features for the specified sentence string * at the specified index. Extensions of this class can override this method * to create a customized {@link TokenContextGenerator} * * @param sentence * the token been analyzed * @param index * the index of the character been analyzed * @return an {@link ArrayList} of features for the specified sentence string * at the specified index. */ protected List createContext(String sentence, int index) { List preds = new ArrayList<>(); String prefix = sentence.substring(0, index); String suffix = sentence.substring(index); preds.add("p=" + prefix); preds.add("s=" + suffix); if (index > 0) { addCharPreds("p1", sentence.charAt(index - 1), preds); if (index > 1) { addCharPreds("p2", sentence.charAt(index - 2), preds); preds.add("p21=" + sentence.charAt(index - 2) + sentence.charAt(index - 1)); } else { preds.add("p2=bok"); } preds.add("p1f1=" + sentence.charAt(index - 1) + sentence.charAt(index)); } else { preds.add("p1=bok"); } addCharPreds("f1", sentence.charAt(index), preds); if (index + 1 < sentence.length()) { addCharPreds("f2", sentence.charAt(index + 1), preds); preds.add("f12=" + sentence.charAt(index) + sentence.charAt(index + 1)); } else { preds.add("f2=bok"); } if (sentence.charAt(0) == '&' && sentence.charAt(sentence.length() - 1) == ';') { preds.add("cc");//character code } if (index == sentence.length() - 1 && inducedAbbreviations.contains(sentence)) { preds.add("pabb"); } return preds; } /** * Helper function for getContext. */ protected void addCharPreds(String key, char c, List preds) { preds.add(key + "=" + c); if (Character.isLetter(c)) { preds.add(key + "_alpha"); if (Character.isUpperCase(c)) { preds.add(key + "_caps"); } } else if (Character.isDigit(c)) { preds.add(key + "_num"); } else if (StringUtil.isWhitespace(c)) { preds.add(key + "_ws"); } else { if (c == '.' || c == '?' || c == '!') { preds.add(key + "_eos"); } else if (c == '`' || c == '"' || c == '\'') { preds.add(key + "_quote"); } else if (c == '[' || c == '{' || c == '(') { preds.add(key + "_lp"); } else if (c == ']' || c == '}' || c == ')') { preds.add(key + "_rp"); } } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerEvaluator.java0100664 0001750 0001750 00000004044 14135770370 034076 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * The {@link TokenizerEvaluator} measures the performance of * the given {@link Tokenizer} with the provided reference * {@link TokenSample}s. * * @see Evaluator * @see Tokenizer * @see TokenSample */ public class TokenizerEvaluator extends Evaluator { private FMeasure fmeasure = new FMeasure(); /** * The {@link Tokenizer} used to create the * predicted tokens. */ private Tokenizer tokenizer; /** * Initializes the current instance with the * given {@link Tokenizer}. * * @param tokenizer the {@link Tokenizer} to evaluate. * @param listeners evaluation sample listeners */ public TokenizerEvaluator(Tokenizer tokenizer, TokenizerEvaluationMonitor ... listeners) { super(listeners); this.tokenizer = tokenizer; } @Override protected TokenSample processSample(TokenSample reference) { Span[] predictions = tokenizer.tokenizePos(reference.getText()); fmeasure.updateScores(reference.getTokenSpans(), predictions); return new TokenSample(reference.getText(), predictions); } public FMeasure getFMeasure() { return fmeasure; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Detokeni0100644 0000000 0000000 00000000163 14135770370 032636 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DetokenizationDictionary.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DetokenizationDictionary0100664 0001750 0001750 00000012137 14135770370 034340 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import opennlp.tools.dictionary.serializer.Attributes; import opennlp.tools.dictionary.serializer.DictionaryEntryPersistor; import opennlp.tools.dictionary.serializer.Entry; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; public class DetokenizationDictionary { public enum Operation { /** * Attaches the token to the token on the right side. */ MOVE_RIGHT, /** * Attaches the token to the token on the left side. */ MOVE_LEFT, /** * Attaches the token to the token on the left and right sides. */ MOVE_BOTH, /** * Attaches the token token to the right token on first occurrence, and * to the token on the left side on the second occurrence. */ RIGHT_LEFT_MATCHING; public static Operation parse(String operation) { if (MOVE_RIGHT.toString().equals(operation)) { return MOVE_RIGHT; } else if (MOVE_LEFT.toString().equals(operation)) { return MOVE_LEFT; } else if (MOVE_BOTH.toString().equals(operation)) { return MOVE_BOTH; } else if (RIGHT_LEFT_MATCHING.toString().equals(operation)) { return RIGHT_LEFT_MATCHING; } else { return null; } } } private final Map operationTable = new HashMap<>(); /** * Initializes the current instance. * * @param tokens an array of tokens that should be detokenized according to an operation * @param operations an array of operations which specifies which operation * should be used for the provided tokens */ public DetokenizationDictionary(String[] tokens, DetokenizationDictionary.Operation[] operations) { if (tokens.length != operations.length) throw new IllegalArgumentException("tokens and ops must have the same length: tokens=" + tokens.length + ", operations=" + operations.length + "!"); for (int i = 0; i < tokens.length; i++) { String token = tokens[i]; DetokenizationDictionary.Operation operation = operations[i]; if (token == null) throw new IllegalArgumentException("token at index " + i + " must not be null!"); if (operation == null) throw new IllegalArgumentException("operation at index " + i + " must not be null!"); operationTable.put(token, operation); } } public DetokenizationDictionary(InputStream in) throws IOException { init(in); } public DetokenizationDictionary(File file) throws IOException { try (InputStream in = new BufferedInputStream(new FileInputStream(file))) { init(in); } } private void init(InputStream in) throws IOException { DictionaryEntryPersistor.create(in, entry -> { String operationString = entry.getAttributes().getValue("operation"); StringList word = entry.getTokens(); if (word.size() != 1) throw new InvalidFormatException("Each entry must have exactly one token! " + word); // parse operation Operation operation = Operation.parse(operationString); if (operation == null) throw new InvalidFormatException("Unknown operation type: " + operationString); operationTable.put(word.getToken(0), operation); }); } DetokenizationDictionary.Operation getOperation(String token) { return operationTable.get(token); } // serialize method public void serialize(OutputStream out) throws IOException { Iterator entries = new Iterator() { Iterator iterator = operationTable.keySet().iterator(); public boolean hasNext() { return iterator.hasNext(); } public Entry next() { String token = iterator.next(); Attributes attributes = new Attributes(); attributes.setValue("operation", getOperation(token).toString()); return new Entry(new StringList(token), attributes); } public void remove() { throw new UnsupportedOperationException(); } }; DictionaryEntryPersistor.serialize(out, entries, false); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Detokeni0100644 0000000 0000000 00000000157 14135770370 032641 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DetokenizerEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DetokenizerEvaluator.jav0100664 0001750 0001750 00000005077 14135770370 034255 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.ArrayList; import opennlp.tools.cmdline.tokenizer.DetokenEvaluationErrorListener; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * The {@link DetokenizerEvaluator} measures the performance of * the given {@link Detokenizer} with the provided reference * {@link TokenSample}s. * * @see DetokenizerEvaluator * @see Detokenizer * @see TokenSample */ public class DetokenizerEvaluator extends Evaluator { private FMeasure fmeasure = new FMeasure(); /** * The {@link Detokenizer} used to create the * predicted tokens. */ private Detokenizer detokenizer; /** * Initializes the current instance with the * given {@link Detokenizer}. * * @param detokenizer the {@link Detokenizer} to evaluate. * @param listeners evaluation sample listeners */ public DetokenizerEvaluator(Detokenizer detokenizer, DetokenEvaluationErrorListener... listeners) { super(listeners); this.detokenizer = detokenizer; } @Override protected TokenSample processSample(TokenSample reference) { String[] tokens = Span.spansToStrings(reference.getTokenSpans(), reference.getText()); String tokensstring = detokenizer.detokenize(tokens, null); ArrayList predictionsArray = new ArrayList<>(); ArrayList referencesArray = new ArrayList<>(); predictionsArray.add(tokensstring); referencesArray.add(reference.getText()); Object[] references = referencesArray.toArray(); Object[] predictions = predictionsArray.toArray(); fmeasure.updateScores(references, predictions); return new TokenSample(tokensstring, reference.getTokenSpans()); } public FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/AbstractTokenizer.java0100664 0001750 0001750 00000001775 14135770370 033707 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import opennlp.tools.util.Span; abstract class AbstractTokenizer implements Tokenizer { public String[] tokenize(String s) { return Span.spansToStrings(tokenizePos(s), s); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/SimpleTokenizer.java0100664 0001750 0001750 00000005701 14135770370 033366 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * Performs tokenization using character classes. */ public class SimpleTokenizer extends AbstractTokenizer { static class CharacterEnum { static final CharacterEnum WHITESPACE = new CharacterEnum("whitespace"); static final CharacterEnum ALPHABETIC = new CharacterEnum("alphabetic"); static final CharacterEnum NUMERIC = new CharacterEnum("numeric"); static final CharacterEnum OTHER = new CharacterEnum("other"); private String name; private CharacterEnum(String name) { this.name = name; } @Override public String toString() { return name; } } public static final SimpleTokenizer INSTANCE; static { INSTANCE = new SimpleTokenizer(); } /** * @deprecated Use INSTANCE field instead to obtain an instance, constructor * will be made private in the future. */ @Deprecated public SimpleTokenizer() { } public Span[] tokenizePos(String s) { CharacterEnum charType = CharacterEnum.WHITESPACE; CharacterEnum state = charType; List tokens = new ArrayList<>(); int sl = s.length(); int start = -1; char pc = 0; for (int ci = 0; ci < sl; ci++) { char c = s.charAt(ci); if (StringUtil.isWhitespace(c)) { charType = CharacterEnum.WHITESPACE; } else if (Character.isLetter(c)) { charType = CharacterEnum.ALPHABETIC; } else if (Character.isDigit(c)) { charType = CharacterEnum.NUMERIC; } else { charType = CharacterEnum.OTHER; } if (state == CharacterEnum.WHITESPACE) { if (charType != CharacterEnum.WHITESPACE) { start = ci; } } else { if (charType != state || charType == CharacterEnum.OTHER && c != pc) { tokens.add(new Span(start, ci)); start = ci; } } state = charType; pc = c; } if (charType != CharacterEnum.WHITESPACE) { tokens.add(new Span(start, sl)); } return tokens.toArray(new Span[tokens.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/Tokenizer.java0100664 0001750 0001750 00000005107 14135770370 032214 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import opennlp.tools.util.Span; /** * The interface for tokenizers, which segment a string into its tokens. *

* Tokenization is a necessary step before more complex NLP tasks can be applied, * these usually process text on a token level. The quality of tokenization is * important because it influences the performance of high-level task applied to it. *

* In segmented languages like English most words are segmented by white spaces * expect for punctuations, etc. which is directly attached to the word without a white space * in between, it is not possible to just split at all punctuations because in abbreviations dots * are a part of the token itself. A tokenizer is now responsible to split these tokens * correctly. *

* In non-segmented languages like Chinese tokenization is more difficult since words * are not segmented by a whitespace. *

* Tokenizers can also be used to segment already identified tokens further into more * atomic parts to get a deeper understanding. This approach helps more complex task * to gain insight into tokens which do not represent words like numbers, units or tokens * which are part of a special notation. *

* For most further task it is desirable to over tokenize rather than under tokenize. */ public interface Tokenizer { /** * Splits a string into its atomic parts * * @param s The string to be tokenized. * @return The String[] with the individual tokens as the array * elements. */ String[] tokenize(String s); /** * Finds the boundaries of atomic parts in a string. * * @param s The string to be tokenized. * @return The Span[] with the spans (offsets into s) for each * token as the individuals array elements. */ Span[] tokenizePos(String s); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerFactory.java0100664 0001750 0001750 00000020714 14135770370 033545 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.tokenize.lang.Factory; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ext.ExtensionLoader; /** * The factory that provides {@link Tokenizer} default implementations and * resources. Users can extend this class if their application requires * overriding the {@link TokenContextGenerator}, {@link Dictionary} etc. */ public class TokenizerFactory extends BaseToolFactory { private String languageCode; private Dictionary abbreviationDictionary; private Boolean useAlphaNumericOptimization = false; private Pattern alphaNumericPattern; private static final String ABBREVIATIONS_ENTRY_NAME = "abbreviations.dictionary"; private static final String USE_ALPHA_NUMERIC_OPTIMIZATION = "useAlphaNumericOptimization"; private static final String ALPHA_NUMERIC_PATTERN = "alphaNumericPattern"; /** * Creates a {@link TokenizerFactory} that provides the default implementation * of the resources. */ public TokenizerFactory() { } /** * Creates a {@link TokenizerFactory}. Use this constructor to * programmatically create a factory. * * @param languageCode * the language of the natural text * @param abbreviationDictionary * an abbreviations dictionary * @param useAlphaNumericOptimization * if true alpha numerics are skipped * @param alphaNumericPattern * null or a custom alphanumeric pattern (default is: * "^[A-Za-z0-9]+$", provided by {@link Factory#DEFAULT_ALPHANUMERIC} */ public TokenizerFactory(String languageCode, Dictionary abbreviationDictionary, boolean useAlphaNumericOptimization, Pattern alphaNumericPattern) { this.init(languageCode, abbreviationDictionary, useAlphaNumericOptimization, alphaNumericPattern); } protected void init(String languageCode, Dictionary abbreviationDictionary, boolean useAlphaNumericOptimization, Pattern alphaNumericPattern) { this.languageCode = languageCode; this.useAlphaNumericOptimization = useAlphaNumericOptimization; this.alphaNumericPattern = alphaNumericPattern; this.abbreviationDictionary = abbreviationDictionary; } @Override public void validateArtifactMap() throws InvalidFormatException { if (this.artifactProvider.getManifestProperty(USE_ALPHA_NUMERIC_OPTIMIZATION) == null) throw new InvalidFormatException(USE_ALPHA_NUMERIC_OPTIMIZATION + " is a mandatory property!"); Object abbreviationsEntry = this.artifactProvider.getArtifact(ABBREVIATIONS_ENTRY_NAME); if (abbreviationsEntry != null && !(abbreviationsEntry instanceof Dictionary)) { throw new InvalidFormatException("Abbreviations dictionary '" + abbreviationsEntry + "' has wrong type, needs to be of type Dictionary!"); } } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); // Abbreviations are optional if (abbreviationDictionary != null) { artifactMap.put(ABBREVIATIONS_ENTRY_NAME, abbreviationDictionary); } return artifactMap; } @Override public Map createManifestEntries() { Map manifestEntries = super.createManifestEntries(); manifestEntries.put(USE_ALPHA_NUMERIC_OPTIMIZATION, Boolean.toString(isUseAlphaNumericOptmization())); // alphanumeric pattern is optional if (getAlphaNumericPattern() != null) { manifestEntries.put(ALPHA_NUMERIC_PATTERN, getAlphaNumericPattern().pattern()); } return manifestEntries; } /** * Factory method the framework uses create a new {@link TokenizerFactory}. * * @param subclassName the name of the class implementing the {@link TokenizerFactory} * @param languageCode the language code the tokenizer should use * @param abbreviationDictionary an optional dictionary containing abbreviations, or null if not present * @param useAlphaNumericOptimization indicate if the alpha numeric optimization * should be enabled or disabled * @param alphaNumericPattern the pattern the alpha numeric optimization should use * * @return the instance of the Tokenizer Factory * * @throws InvalidFormatException if once of the input parameters doesn't comply if the expected format */ public static TokenizerFactory create(String subclassName, String languageCode, Dictionary abbreviationDictionary, boolean useAlphaNumericOptimization, Pattern alphaNumericPattern) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new TokenizerFactory(languageCode, abbreviationDictionary, useAlphaNumericOptimization, alphaNumericPattern); } try { TokenizerFactory theFactory = ExtensionLoader.instantiateExtension( TokenizerFactory.class, subclassName); theFactory.init(languageCode, abbreviationDictionary, useAlphaNumericOptimization, alphaNumericPattern); return theFactory; } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } /** * Gets the alpha numeric pattern. * * @return the user specified alpha numeric pattern or a default. */ public Pattern getAlphaNumericPattern() { if (this.alphaNumericPattern == null) { if (this.artifactProvider != null) { String prop = this.artifactProvider.getManifestProperty(ALPHA_NUMERIC_PATTERN); if (prop != null) { this.alphaNumericPattern = Pattern.compile(prop); } } // could not load from manifest, will get from language dependent factory if (this.alphaNumericPattern == null) { Factory f = new Factory(); this.alphaNumericPattern = f.getAlphanumeric(languageCode); } } return this.alphaNumericPattern; } /** * Gets whether to use alphanumeric optimization. * * @return true if the alpha numeric optimization is enabled, otherwise false */ public boolean isUseAlphaNumericOptmization() { if (artifactProvider != null) { this.useAlphaNumericOptimization = Boolean.valueOf(this.artifactProvider .getManifestProperty(USE_ALPHA_NUMERIC_OPTIMIZATION)); } return this.useAlphaNumericOptimization; } /** * Gets the abbreviation dictionary * * @return null or the abbreviation dictionary */ public Dictionary getAbbreviationDictionary() { if (this.abbreviationDictionary == null && artifactProvider != null) { this.abbreviationDictionary = this.artifactProvider.getArtifact(ABBREVIATIONS_ENTRY_NAME); } return this.abbreviationDictionary; } /** * Retrieves the language code. * * @return the language code */ public String getLanguageCode() { if (this.languageCode == null && this.artifactProvider != null) { this.languageCode = this.artifactProvider.getLanguage(); } return this.languageCode; } /** * Gets the context generator * * @return a new instance of the context generator */ public TokenContextGenerator getContextGenerator() { Factory f = new Factory(); Set abbs; Dictionary abbDict = getAbbreviationDictionary(); if (abbDict != null) { abbs = abbDict.asStringSet(); } else { abbs = Collections.emptySet(); } return f.createTokenContextGenerator(getLanguageCode(), abbs); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokSpanEventStream.java0100664 0001750 0001750 00000012531 14135770370 033776 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.regex.Pattern; import opennlp.tools.ml.model.Event; import opennlp.tools.tokenize.lang.Factory; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * This class reads the {@link TokenSample}s from the given {@link Iterator} * and converts the {@link TokenSample}s into {@link Event}s which * can be used by the maxent library for training. */ public class TokSpanEventStream extends AbstractEventStream { private TokenContextGenerator cg; private boolean skipAlphaNumerics; private final Pattern alphaNumeric; /** * Initializes the current instance. * * @param tokenSamples * @param skipAlphaNumerics * @param cg */ public TokSpanEventStream(ObjectStream tokenSamples, boolean skipAlphaNumerics, Pattern alphaNumeric, TokenContextGenerator cg) { super(tokenSamples); this.alphaNumeric = alphaNumeric; this.skipAlphaNumerics = skipAlphaNumerics; this.cg = cg; } /** * Initializes the current instance. * * @param tokenSamples * @param skipAlphaNumerics * @param cg */ public TokSpanEventStream(ObjectStream tokenSamples, boolean skipAlphaNumerics, TokenContextGenerator cg) { super(tokenSamples); Factory factory = new Factory(); this.alphaNumeric = factory.getAlphanumeric(null); this.skipAlphaNumerics = skipAlphaNumerics; this.cg = cg; } /** * Initializes the current instance. * * @param tokenSamples * @param skipAlphaNumerics */ public TokSpanEventStream(ObjectStream tokenSamples, boolean skipAlphaNumerics) { this(tokenSamples, skipAlphaNumerics, new DefaultTokenContextGenerator()); } /** * Adds training events to the event stream for each of the specified tokens. * * @param tokenSample character offsets into the specified text. * @return The text of the tokens. */ @Override protected Iterator createEvents(TokenSample tokenSample) { List events = new ArrayList<>(50); Span[] tokens = tokenSample.getTokenSpans(); String text = tokenSample.getText(); if (tokens.length > 0) { int start = tokens[0].getStart(); int end = tokens[tokens.length - 1].getEnd(); String sent = text.substring(start, end); Span[] candTokens = WhitespaceTokenizer.INSTANCE.tokenizePos(sent); int firstTrainingToken = -1; int lastTrainingToken = -1; for (Span candToken : candTokens) { Span cSpan = candToken; String ctok = sent.substring(cSpan.getStart(), cSpan.getEnd()); //adjust cSpan to text offsets cSpan = new Span(cSpan.getStart() + start, cSpan.getEnd() + start); //should we skip this token if (ctok.length() > 1 && (!skipAlphaNumerics || !alphaNumeric.matcher(ctok).matches())) { //find offsets of annotated tokens inside of candidate tokens boolean foundTrainingTokens = false; for (int ti = lastTrainingToken + 1; ti < tokens.length; ti++) { if (cSpan.contains(tokens[ti])) { if (!foundTrainingTokens) { firstTrainingToken = ti; foundTrainingTokens = true; } lastTrainingToken = ti; } else if (cSpan.getEnd() < tokens[ti].getEnd()) { break; } else if (tokens[ti].getEnd() < cSpan.getStart()) { //keep looking } else { System.out.println("Bad training token: " + tokens[ti] + " cand: " + cSpan + " token=" + text.substring(tokens[ti].getStart(), tokens[ti].getEnd())); } } // create training data if (foundTrainingTokens) { for (int ti = firstTrainingToken; ti <= lastTrainingToken; ti++) { Span tSpan = tokens[ti]; int cStart = cSpan.getStart(); for (int i = tSpan.getStart() + 1; i < tSpan.getEnd(); i++) { String[] context = cg.getContext(ctok, i - cStart); events.add(new Event(TokenizerME.NO_SPLIT, context)); } if (tSpan.getEnd() != cSpan.getEnd()) { String[] context = cg.getContext(ctok, tSpan.getEnd() - cStart); events.add(new Event(TokenizerME.SPLIT, context)); } } } } } } return events.iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_lang_en_0100644 0000000 0000000 00000000164 14135770370 032637 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/en/TokenSampleStrea0100664 0001750 0001750 00000007650 14135770370 034073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize.lang.en; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.regex.Pattern; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.Span; /** * Class which produces an Iterator<TokenSample> from a file of space delimited token. * This class uses a number of English-specific heuristics to un-separate tokens which * are typically found together in text. */ public class TokenSampleStream implements Iterator { private BufferedReader in; private String line; private Pattern alphaNumeric = Pattern.compile("[A-Za-z0-9]"); private boolean evenq = true; public TokenSampleStream(InputStream is) throws IOException { this.in = new BufferedReader(new InputStreamReader(is)); line = in.readLine(); } public boolean hasNext() { return line != null; } public TokenSample next() { String[] tokens = line.split("\\s+"); if (tokens.length == 0) { evenq = true; } StringBuilder sb = new StringBuilder(line.length()); List spans = new ArrayList<>(); int length = 0; for (int ti = 0; ti < tokens.length; ti++) { String token = tokens[ti]; String lastToken = ti - 1 >= 0 ? tokens[ti - 1] : ""; switch (token) { case "-LRB-": token = "("; break; case "-LCB-": token = "{"; break; case "-RRB-": token = ")"; break; case "-RCB-": token = "}"; break; } if (sb.length() != 0) { if (!alphaNumeric.matcher(token).find() || token.startsWith("'") || token.equalsIgnoreCase("n't")) { if ((token.equals("``") || token.equals("--") || token.equals("$") || token.equals("(") || token.equals("&") || token.equals("#") || (token.equals("\"") && (evenq && ti != tokens.length - 1))) && (!lastToken.equals("(") || !lastToken.equals("{"))) { //System.out.print(" "+token); length++; } } else { if (!lastToken.equals("``") && (!lastToken.equals("\"") || evenq) && !lastToken.equals("(") && !lastToken.equals("{") && !lastToken.equals("$") && !lastToken.equals("#")) { length++; } } } if (token.equals("\"")) { evenq = ti == tokens.length - 1 || !evenq; } if (sb.length() < length) { sb.append(" "); } sb.append(token); spans.add(new Span(length, length + token.length())); length += token.length(); } try { line = in.readLine(); } catch (IOException e) { e.printStackTrace(); line = null; } return new TokenSample(sb.toString(),spans.toArray(new Span[spans.size()])); } public void remove() { throw new UnsupportedOperationException(); } private static void usage() { System.err.println("TokenSampleStream [-spans] < in"); System.err.println("Where in is a space delimited list of tokens."); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/lang/Factory.java0100664 0001750 0001750 00000003567 14135770370 032602 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize.lang; import java.util.Set; import java.util.regex.Pattern; import opennlp.tools.tokenize.DefaultTokenContextGenerator; import opennlp.tools.tokenize.TokenContextGenerator; public class Factory { public static final String DEFAULT_ALPHANUMERIC = "^[A-Za-z0-9]+$"; /** * Gets the alpha numeric pattern for the language. Please save the value * locally because this call is expensive. * * @param languageCode * the language code. If null or unknow the default pattern will be * returned. * @return the alpha numeric pattern for the language or the default pattern. */ public Pattern getAlphanumeric(String languageCode) { if ("pt".equals(languageCode) || "por".equals(languageCode)) { return Pattern.compile("^[0-9a-záãâàéêíóõôúüçA-ZÁÃÂÀÉÊÍÓÕÔÚÜÇ]+$"); } return Pattern.compile(DEFAULT_ALPHANUMERIC); } public TokenContextGenerator createTokenContextGenerator(String languageCode, Set abbreviations) { return new DefaultTokenContextGenerator(abbreviations); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Whitespa0100644 0000000 0000000 00000000160 14135770370 032655 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenStream.ja0100664 0001750 0001750 00000003711 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * This stream formats a {@link TokenSample}s into whitespace * separated token strings. */ public class WhitespaceTokenStream extends FilterObjectStream { public WhitespaceTokenStream(ObjectStream tokens) { super(tokens); } public String read() throws IOException { TokenSample tokenSample = samples.read(); if (tokenSample != null) { StringBuilder whitespaceSeparatedTokenString = new StringBuilder(); for (Span token : tokenSample.getTokenSpans()) { whitespaceSeparatedTokenString.append( token.getCoveredText(tokenSample.getText())); whitespaceSeparatedTokenString.append(' '); } // Shorten string by one to get rid of last space if (whitespaceSeparatedTokenString.length() > 0) { whitespaceSeparatedTokenString.setLength( whitespaceSeparatedTokenString.length() - 1 ); } return whitespaceSeparatedTokenString.toString(); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Tokenize0100644 0000000 0000000 00000000162 14135770370 032663 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerCrossValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerCrossValidator.0100664 0001750 0001750 00000004713 14135770370 034234 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.FMeasure; public class TokenizerCrossValidator { private final TrainingParameters params; private FMeasure fmeasure = new FMeasure(); private TokenizerEvaluationMonitor[] listeners; private final TokenizerFactory factory; public TokenizerCrossValidator(TrainingParameters params, TokenizerFactory factory, TokenizerEvaluationMonitor... listeners) { this.params = params; this.listeners = listeners; this.factory = factory; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner.next(); // Maybe throws IOException if temporary file handling fails ... TokenizerModel model = TokenizerME.train(trainingSampleStream, this.factory, params); TokenizerEvaluator evaluator = new TokenizerEvaluator(new TokenizerME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); fmeasure.mergeInto(evaluator.getFMeasure()); } } public FMeasure getFMeasure() { return fmeasure; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Tokenize0100644 0000000 0000000 00000000165 14135770370 032666 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerEvaluationMonit0100664 0001750 0001750 00000001722 14135770370 034332 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import opennlp.tools.util.eval.EvaluationMonitor; public interface TokenizerEvaluationMonitor extends EvaluationMonitor { } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java0100664 0001750 0001750 00000015252 14135770370 032466 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import opennlp.tools.tokenize.Detokenizer.DetokenizationOperation; import opennlp.tools.util.Span; /** * A {@link TokenSample} is text with token spans. */ public class TokenSample implements Serializable { public static final String DEFAULT_SEPARATOR_CHARS = ""; private static final String separatorChars = DEFAULT_SEPARATOR_CHARS; private final String text; private final List tokenSpans; /** * Initializes the current instance. * * @param text the text which contains the tokens. * @param tokenSpans the spans which mark the begin and end of the tokens. */ public TokenSample(String text, Span[] tokenSpans) { Objects.requireNonNull(tokenSpans, "tokenSpans must not be null"); this.text = Objects.requireNonNull(text, "text must not be null"); this.tokenSpans = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(tokenSpans))); for (Span tokenSpan : tokenSpans) { if (tokenSpan.getStart() < 0 || tokenSpan.getStart() > text.length() || tokenSpan.getEnd() > text.length() || tokenSpan.getEnd() < 0) { throw new IllegalArgumentException("Span " + tokenSpan + " is out of bounds, text length: " + text.length() + "!"); } } } public TokenSample(Detokenizer detokenizer, String[] tokens) { StringBuilder sentence = new StringBuilder(); DetokenizationOperation[] operations = detokenizer.detokenize(tokens); List mergedTokenSpans = new ArrayList<>(); for (int i = 0; i < operations.length; i++) { boolean isSeparateFromPreviousToken = i > 0 && !isMergeToRight(operations[i - 1]) && !isMergeToLeft(operations[i]); if (isSeparateFromPreviousToken) { sentence.append(' '); } int beginIndex = sentence.length(); sentence.append(tokens[i]); mergedTokenSpans.add(new Span(beginIndex, sentence.length())); } text = sentence.toString(); tokenSpans = Collections.unmodifiableList(mergedTokenSpans); } private boolean isMergeToRight(DetokenizationOperation operation) { return DetokenizationOperation.MERGE_TO_RIGHT.equals(operation) || DetokenizationOperation.MERGE_BOTH.equals(operation); } private boolean isMergeToLeft(DetokenizationOperation operation) { return DetokenizationOperation.MERGE_TO_LEFT.equals(operation) || DetokenizationOperation.MERGE_BOTH.equals(operation); } /** * Retrieves the text. */ public String getText() { return text; } /** * Retrieves the token spans. */ public Span[] getTokenSpans() { return tokenSpans.toArray(new Span[tokenSpans.size()]); } @Override public String toString() { StringBuilder sentence = new StringBuilder(); int lastEndIndex = -1; for (Span token : tokenSpans) { if (lastEndIndex != -1) { // If there are no chars between last token // and this token insert the separator chars // otherwise insert a space String separator; if (lastEndIndex == token.getStart()) separator = separatorChars; else separator = " "; sentence.append(separator); } sentence.append(token.getCoveredText(text)); lastEndIndex = token.getEnd(); } return sentence.toString(); } private static void addToken(StringBuilder sample, List tokenSpans, String token, boolean isNextMerged) { int tokenSpanStart = sample.length(); sample.append(token); int tokenSpanEnd = sample.length(); tokenSpans.add(new Span(tokenSpanStart, tokenSpanEnd)); if (!isNextMerged) sample.append(" "); } public static TokenSample parse(String sampleString, String separatorChars) { Objects.requireNonNull(sampleString, "sampleString must not be null"); Objects.requireNonNull(separatorChars, "separatorChars must not be null"); Span[] whitespaceTokenSpans = WhitespaceTokenizer.INSTANCE.tokenizePos(sampleString); // Pre-allocate 20% for newly created tokens List realTokenSpans = new ArrayList<>((int) (whitespaceTokenSpans.length * 1.2d)); StringBuilder untaggedSampleString = new StringBuilder(); for (Span whiteSpaceTokenSpan : whitespaceTokenSpans) { String whitespaceToken = whiteSpaceTokenSpan.getCoveredText(sampleString).toString(); boolean wasTokenReplaced = false; int tokStart = 0; int tokEnd; while ((tokEnd = whitespaceToken.indexOf(separatorChars, tokStart)) > -1) { String token = whitespaceToken.substring(tokStart, tokEnd); addToken(untaggedSampleString, realTokenSpans, token, true); tokStart = tokEnd + separatorChars.length(); wasTokenReplaced = true; } if (wasTokenReplaced) { // If the token contains the split chars at least once // a span for the last token must still be added String token = whitespaceToken.substring(tokStart); addToken(untaggedSampleString, realTokenSpans, token, false); } else { // If it does not contain the split chars at lest once // just copy the original token span addToken(untaggedSampleString, realTokenSpans, whitespaceToken, false); } } return new TokenSample(untaggedSampleString.toString(), realTokenSpans.toArray( new Span[realTokenSpans.size()])); } @Override public int hashCode() { return Objects.hash(getText(), Arrays.hashCode(getTokenSpans())); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof TokenSample) { TokenSample a = (TokenSample) obj; return getText().equals(a.getText()) && Arrays.equals(getTokenSpans(), a.getTokenSpans()); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Dictiona0100644 0000000 0000000 00000000160 14135770370 032623 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DictionaryDetokenizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/DictionaryDetokenizer.ja0100664 0001750 0001750 00000011222 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.HashSet; import java.util.Set; /** * A rule based detokenizer. Simple rules which indicate in which direction a token should be * moved are looked up in a {@link DetokenizationDictionary} object. * * @see Detokenizer * @see DetokenizationDictionary */ public class DictionaryDetokenizer implements Detokenizer { private final DetokenizationDictionary dict; public DictionaryDetokenizer(DetokenizationDictionary dict) { this.dict = dict; } public DetokenizationOperation[] detokenize(String[] tokens) { DetokenizationOperation[] operations = new DetokenizationOperation[tokens.length]; Set matchingTokens = new HashSet<>(); for (int i = 0; i < tokens.length; i++) { DetokenizationDictionary.Operation dictOperation = dict.getOperation(tokens[i]); if (dictOperation == null) { operations[i] = Detokenizer.DetokenizationOperation.NO_OPERATION; } else if (DetokenizationDictionary.Operation.MOVE_LEFT.equals(dictOperation)) { operations[i] = Detokenizer.DetokenizationOperation.MERGE_TO_LEFT; } else if (DetokenizationDictionary.Operation.MOVE_RIGHT.equals(dictOperation)) { operations[i] = Detokenizer.DetokenizationOperation.MERGE_TO_RIGHT; } else if (DetokenizationDictionary.Operation.MOVE_BOTH.equals(dictOperation)) { operations[i] = Detokenizer.DetokenizationOperation.MERGE_BOTH; } else if (DetokenizationDictionary.Operation.RIGHT_LEFT_MATCHING.equals(dictOperation)) { if (matchingTokens.contains(tokens[i])) { // The token already occurred once, move it to the left // and clear the occurrence flag operations[i] = Detokenizer.DetokenizationOperation.MERGE_TO_LEFT; matchingTokens.remove(tokens[i]); } else { // First time this token is seen, move it to the right // and remember it operations[i] = Detokenizer.DetokenizationOperation.MERGE_TO_RIGHT; matchingTokens.add(tokens[i]); } } else { throw new IllegalStateException("Unknown operation: " + dictOperation); } } return operations; } public String detokenize(String[] tokens, String splitMarker) { DetokenizationOperation[] operations = detokenize(tokens); if (tokens.length != operations.length) throw new IllegalArgumentException("tokens and operations array must have same length: tokens=" + tokens.length + ", operations=" + operations.length + "!"); StringBuilder untokenizedString = new StringBuilder(); for (int i = 0; i < tokens.length; i++) { // attach token to string buffer untokenizedString.append(tokens[i]); boolean isAppendSpace; boolean isAppendSplitMarker; // if this token is the last token do not attach a space if (i + 1 == operations.length) { isAppendSpace = false; isAppendSplitMarker = false; } // if next token move left, no space after this token, // its safe to access next token else if (operations[i + 1].equals(DetokenizationOperation.MERGE_TO_LEFT) || operations[i + 1].equals(DetokenizationOperation.MERGE_BOTH)) { isAppendSpace = false; isAppendSplitMarker = true; } // if this token is move right, no space else if (operations[i].equals(DetokenizationOperation.MERGE_TO_RIGHT) || operations[i].equals(DetokenizationOperation.MERGE_BOTH)) { isAppendSpace = false; isAppendSplitMarker = true; } else { isAppendSpace = true; isAppendSplitMarker = false; } if (isAppendSpace) { untokenizedString.append(' '); } if (isAppendSplitMarker && splitMarker != null) { untokenizedString.append(splitMarker); } } return untokenizedString.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenizerME.java0100664 0001750 0001750 00000020505 14135770370 032435 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.tokenize.lang.Factory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * A Tokenizer for converting raw text into separated tokens. It uses * Maximum Entropy to make its decisions. The features are loosely * based off of Jeff Reynar's UPenn thesis "Topic Segmentation: * Algorithms and Applications.", which is available from his * homepage: http://www.cis.upenn.edu/~jcreynar. *

* This tokenizer needs a statistical model to tokenize a text which reproduces * the tokenization observed in the training data used to create the model. * The {@link TokenizerModel} class encapsulates the model and provides * methods to create it from the binary representation. *

* A tokenizer instance is not thread safe. For each thread one tokenizer * must be instantiated which can share one TokenizerModel instance * to safe memory. *

* To train a new model {{@link #train(ObjectStream, TokenizerFactory, TrainingParameters)} method * can be used. *

* Sample usage: *

* * InputStream modelIn;
*
* ...
*
* TokenizerModel model = TokenizerModel(modelIn);
*
* Tokenizer tokenizer = new TokenizerME(model);
*
* String tokens[] = tokenizer.tokenize("A sentence to be tokenized."); *
* * @see Tokenizer * @see TokenizerModel * @see TokenSample */ public class TokenizerME extends AbstractTokenizer { /** * Constant indicates a token split. */ public static final String SPLIT = "T"; /** * Constant indicates no token split. */ public static final String NO_SPLIT = "F"; /** * Alpha-Numeric Pattern * @deprecated As of release 1.5.2, replaced by {@link Factory#getAlphanumeric(String)} */ @Deprecated public static final Pattern alphaNumeric = Pattern.compile(Factory.DEFAULT_ALPHANUMERIC); private final Pattern alphanumeric; /** * The maximum entropy model to use to evaluate contexts. */ private MaxentModel model; /** * The context generator. */ private final TokenContextGenerator cg; /** * Optimization flag to skip alpha numeric tokens for further * tokenization */ private boolean useAlphaNumericOptimization; /** * List of probabilities for each token returned from a call to * tokenize or tokenizePos. */ private List tokProbs; private List newTokens; public TokenizerME(TokenizerModel model) { TokenizerFactory factory = model.getFactory(); this.alphanumeric = factory.getAlphaNumericPattern(); this.cg = factory.getContextGenerator(); this.model = model.getMaxentModel(); this.useAlphaNumericOptimization = factory.isUseAlphaNumericOptmization(); newTokens = new ArrayList<>(); tokProbs = new ArrayList<>(50); } /** * @deprecated use {@link TokenizerFactory} to extend the Tokenizer * functionality */ public TokenizerME(TokenizerModel model, Factory factory) { String languageCode = model.getLanguage(); this.alphanumeric = factory.getAlphanumeric(languageCode); this.cg = factory.createTokenContextGenerator(languageCode, getAbbreviations(model.getAbbreviations())); this.model = model.getMaxentModel(); useAlphaNumericOptimization = model.useAlphaNumericOptimization(); newTokens = new ArrayList<>(); tokProbs = new ArrayList<>(50); } private static Set getAbbreviations(Dictionary abbreviations) { if (abbreviations == null) { return Collections.emptySet(); } return abbreviations.asStringSet(); } /** * Returns the probabilities associated with the most recent * calls to {@link TokenizerME#tokenize(String)} or {@link TokenizerME#tokenizePos(String)}. * * @return probability for each token returned for the most recent * call to tokenize. If not applicable an empty array is returned. */ public double[] getTokenProbabilities() { double[] tokProbArray = new double[tokProbs.size()]; for (int i = 0; i < tokProbArray.length; i++) { tokProbArray[i] = tokProbs.get(i); } return tokProbArray; } /** * Tokenizes the string. * * @param d The string to be tokenized. * * @return A span array containing individual tokens as elements. */ public Span[] tokenizePos(String d) { Span[] tokens = WhitespaceTokenizer.INSTANCE.tokenizePos(d); newTokens.clear(); tokProbs.clear(); for (Span s : tokens) { String tok = d.substring(s.getStart(), s.getEnd()); // Can't tokenize single characters if (tok.length() < 2) { newTokens.add(s); tokProbs.add(1d); } else if (useAlphaNumericOptimization() && alphanumeric.matcher(tok).matches()) { newTokens.add(s); tokProbs.add(1d); } else { int start = s.getStart(); int end = s.getEnd(); final int origStart = s.getStart(); double tokenProb = 1.0; for (int j = origStart + 1; j < end; j++) { double[] probs = model.eval(cg.getContext(tok, j - origStart)); String best = model.getBestOutcome(probs); tokenProb *= probs[model.getIndex(best)]; if (best.equals(TokenizerME.SPLIT)) { newTokens.add(new Span(start, j)); tokProbs.add(tokenProb); start = j; tokenProb = 1.0; } } newTokens.add(new Span(start, end)); tokProbs.add(tokenProb); } } Span[] spans = new Span[newTokens.size()]; newTokens.toArray(spans); return spans; } /** * Trains a model for the {@link TokenizerME}. * * @param samples * the samples used for the training. * @param factory * a {@link TokenizerFactory} to get resources from * @param mlParams * the machine learning train parameters * @return the trained {@link TokenizerModel} * @throws IOException * it throws an {@link IOException} if an {@link IOException} is * thrown during IO operations on a temp file which is created * during training. Or if reading from the {@link ObjectStream} * fails. */ public static TokenizerModel train(ObjectStream samples, TokenizerFactory factory, TrainingParameters mlParams) throws IOException { Map manifestInfoEntries = new HashMap<>(); ObjectStream eventStream = new TokSpanEventStream(samples, factory.isUseAlphaNumericOptmization(), factory.getAlphaNumericPattern(), factory.getContextGenerator()); EventTrainer trainer = TrainerFactory.getEventTrainer( mlParams, manifestInfoEntries); MaxentModel maxentModel = trainer.train(eventStream); return new TokenizerModel(maxentModel, manifestInfoEntries, factory); } /** * Returns the value of the alpha-numeric optimization flag. * * @return true if the tokenizer should use alpha-numeric optimization, false otherwise. */ public boolean useAlphaNumericOptimization() { return useAlphaNumericOptimization; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/Detokenizer.java0100664 0001750 0001750 00000004362 14135770370 032527 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; /** * A Detokenizer merges tokens back to their untokenized representation. * */ public interface Detokenizer { /** * This enum contains an operation for every token to merge the * tokens together to their detokenized form. */ enum DetokenizationOperation { /** * The current token should be attached to the begin token on the right side. */ MERGE_TO_RIGHT, /** * The current token should be attached to the string on the left side. */ MERGE_TO_LEFT, /** * The current token should be attached to the string on the left side, as * well as to the begin token on the right side. */ MERGE_BOTH, /** * Do not perform a merge operation for this token, but is possible that another * token can be attached to the left or right side of this one. */ NO_OPERATION } /** * Detokenize the input tokens. * * @param tokens the tokens to detokenize. * @return the merge operations to detokenize the input tokens. */ DetokenizationOperation[] detokenize(String[] tokens); /** * Detokenize the input tokens into a String. Tokens which * are connected without a space inbetween can be separated by * a split marker. * * @param tokens the token which should be concatenated * @param splitMarker the split marker or null * * @return the concatenated tokens */ String detokenize(String[] tokens, String splitMarker); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_tokenize_Whitespa0100644 0000000 0000000 00000000156 14135770370 032662 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/tokenize/WhitespaceTokenizer.java0100664 0001750 0001750 00000004156 14135770370 034234 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.tokenize; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; /** * This tokenizer uses white spaces to tokenize the input text. * * To obtain an instance of this tokenizer use the static final * INSTANCE field. */ public class WhitespaceTokenizer extends AbstractTokenizer { /** * Use this static reference to retrieve an instance of the * {@link WhitespaceTokenizer}. */ public static final WhitespaceTokenizer INSTANCE = new WhitespaceTokenizer(); /** * Use the {@link WhitespaceTokenizer#INSTANCE} field to retrieve an instance. */ private WhitespaceTokenizer() { } public Span[] tokenizePos(String d) { int tokStart = -1; List tokens = new ArrayList<>(); boolean inTok = false; //gather up potential tokens int end = d.length(); for (int i = 0; i < end; i++) { if (StringUtil.isWhitespace(d.charAt(i))) { if (inTok) { tokens.add(new Span(tokStart, i)); inTok = false; tokStart = -1; } } else { if (!inTok) { tokStart = i; inTok = true; } } } if (inTok) { tokens.add(new Span(tokStart, end)); } return tokens.toArray(new Span[tokens.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserCrossValidator.java0100664 0001750 0001750 00000005215 14135770370 034022 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.FMeasure; public class ParserCrossValidator { private final String languageCode; private final TrainingParameters params; private final HeadRules rules; private final FMeasure fmeasure = new FMeasure(); private ParserType parserType; private ParserEvaluationMonitor[] monitors; public ParserCrossValidator(String languageCode, TrainingParameters params, HeadRules rules, ParserType parserType, ParserEvaluationMonitor... monitors) { this.languageCode = languageCode; this.params = params; this.rules = rules; this.parserType = parserType; } public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner.next(); ParserModel model; if (ParserType.CHUNKING.equals(parserType)) { model = opennlp.tools.parser.chunking.Parser.train(languageCode, samples, rules, params); } else if (ParserType.TREEINSERT.equals(parserType)) { model = opennlp.tools.parser.treeinsert.Parser.train(languageCode, samples, rules, params); } else { throw new IllegalStateException("Unexpected parser type: " + parserType); } ParserEvaluator evaluator = new ParserEvaluator(ParserFactory.create(model), monitors); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); fmeasure.mergeInto(evaluator.getFMeasure()); } } public FMeasure getFMeasure() { return fmeasure; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_AbstractPa0100644 0000000 0000000 00000000162 14135770370 032563 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractParserEventStream.0100664 0001750 0001750 00000014424 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import opennlp.tools.chunker.ChunkerContextGenerator; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.Event; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.postag.DefaultPOSContextGenerator; import opennlp.tools.postag.POSContextGenerator; import opennlp.tools.util.ObjectStream; /** * Abstract class extended by parser event streams which perform tagging and chunking. */ public abstract class AbstractParserEventStream extends opennlp.tools.util.AbstractEventStream { private ChunkerContextGenerator chunkerContextGenerator; private POSContextGenerator tagContextGenerator; protected HeadRules rules; protected Set punctSet; /** * The type of events being generated by this event stream. */ protected ParserEventTypeEnum etype; protected boolean fixPossesives; protected Dictionary dict; public AbstractParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype, Dictionary dict) { super(d); this.dict = dict; if (etype == ParserEventTypeEnum.CHUNK) { this.chunkerContextGenerator = new ChunkContextGenerator(); } else if (etype == ParserEventTypeEnum.TAG) { this.tagContextGenerator = new DefaultPOSContextGenerator(null); } this.rules = rules; punctSet = rules.getPunctuationTags(); this.etype = etype; init(); } @Override protected Iterator createEvents(Parse sample) { List newEvents = new ArrayList<>(); Parse.pruneParse(sample); if (fixPossesives) { Parse.fixPossesives(sample); } sample.updateHeads(rules); Parse[] chunks = getInitialChunks(sample); if (etype == ParserEventTypeEnum.TAG) { addTagEvents(newEvents, chunks); } else if (etype == ParserEventTypeEnum.CHUNK) { addChunkEvents(newEvents, chunks); } else { addParseEvents(newEvents, Parser.collapsePunctuation(chunks,punctSet)); } return newEvents.iterator(); } protected void init() { fixPossesives = false; } public AbstractParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype) { this(d,rules,etype,null); } public static Parse[] getInitialChunks(Parse p) { List chunks = new ArrayList<>(); getInitialChunks(p, chunks); return chunks.toArray(new Parse[chunks.size()]); } private static void getInitialChunks(Parse p, List ichunks) { if (p.isPosTag()) { ichunks.add(p); } else { Parse[] kids = p.getChildren(); boolean allKidsAreTags = true; for (Parse kid : kids) { if (!kid.isPosTag()) { allKidsAreTags = false; break; } } if (allKidsAreTags) { ichunks.add(p); } else { for (Parse kid : kids) { getInitialChunks(kid, ichunks); } } } } /** * Produces all events for the specified sentence chunks * and adds them to the specified list. * @param newEvents A list of events to be added to. * @param chunks Pre-chunked constituents of a sentence. */ protected abstract void addParseEvents(List newEvents, Parse[] chunks); private void addChunkEvents(List chunkEvents, Parse[] chunks) { List toks = new ArrayList<>(); List tags = new ArrayList<>(); List preds = new ArrayList<>(); for (Parse c : chunks) { if (c.isPosTag()) { toks.add(c.getCoveredText()); tags.add(c.getType()); preds.add(Parser.OTHER); } else { boolean start = true; String ctype = c.getType(); Parse[] kids = c.getChildren(); for (Parse tok : kids) { toks.add(tok.getCoveredText()); tags.add(tok.getType()); if (start) { preds.add(Parser.START + ctype); start = false; } else { preds.add(Parser.CONT + ctype); } } } } for (int ti = 0, tl = toks.size(); ti < tl; ti++) { chunkEvents.add(new Event(preds.get(ti), chunkerContextGenerator.getContext(ti, toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]), preds.toArray(new String[preds.size()])))); } } private void addTagEvents(List tagEvents, Parse[] chunks) { List toks = new ArrayList<>(); List preds = new ArrayList<>(); for (Parse c : chunks) { if (c.isPosTag()) { toks.add(c.getCoveredText()); preds.add(c.getType()); } else { Parse[] kids = c.getChildren(); for (Parse tok : kids) { toks.add(tok.getCoveredText()); preds.add(tok.getType()); } } } for (int ti = 0, tl = toks.size(); ti < tl; ti++) { tagEvents.add(new Event(preds.get(ti), tagContextGenerator.getContext(ti, toks.toArray(new String[toks.size()]), preds.toArray(new String[preds.size()]), null))); } } /** * Returns true if the specified child is the last child of the specified parent. * @param child The child parse. * @param parent The parent parse. * @return true if the specified child is the last child of the specified parent; false otherwise. */ protected boolean lastChild(Parse child, Parse parent) { Parse[] kids = AbstractBottomUpParser.collapsePunctuation(parent.getChildren(),punctSet); return kids[kids.length - 1] == child; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_chunking_p0100644 0000000 0000000 00000000156 14135770370 032667 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/package-info.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/package-info.java0100664 0001750 0001750 00000001666 14135770370 034046 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package containing code for performing full syntactic parsing using shift/reduce-style decisions. */ package opennlp.tools.parser.chunking; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_chunking_C0100644 0000000 0000000 00000000167 14135770370 032614 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/CheckContextGener0100664 0001750 0001750 00000010400 14135770370 034127 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.chunking; import java.util.ArrayList; import java.util.Collection; import java.util.List; import opennlp.tools.parser.AbstractContextGenerator; import opennlp.tools.parser.Parse; /** * Class for generating predictive context for deciding when a constituent is complete. */ public class CheckContextGenerator extends AbstractContextGenerator { /** * Creates a new context generator for generating predictive context for deciding * when a constituent is complete. */ public CheckContextGenerator() { super(); } public String[] getContext(Object o) { Object[] params = (Object[]) o; return getContext((Parse[]) params[0], (String) params[1], (Integer) params[2], (Integer) params[3]); } /** * Returns predictive context for deciding whether the specified constituents between the * specified start and end index can be combined to form a new constituent of the specified type. * * @param constituents The constituents which have yet to be combined into new constituents. * @param type The type of the new constituent proposed. * @param start The first constituent of the proposed constituent. * @param end The last constituent of the proposed constituent. * @return The predictive context for deciding whether a new constituent should be created. */ public String[] getContext(Parse[] constituents, String type, int start, int end) { int ps = constituents.length; List features = new ArrayList<>(100); //default features.add("default"); //first constituent label features.add("fl=" + constituents[0].getLabel()); Parse pstart = constituents[start]; Parse pend = constituents[end]; checkcons(pstart, "begin", type, features); checkcons(pend, "last", type, features); StringBuilder production = new StringBuilder(20); StringBuilder punctProduction = new StringBuilder(20); production.append("p=").append(type).append("->"); punctProduction.append("pp=").append(type).append("->"); for (int pi = start; pi < end; pi++) { Parse p = constituents[pi]; checkcons(p, pend, type, features); production.append(p.getType()).append(","); punctProduction.append(p.getType()).append(","); Collection nextPunct = p.getNextPunctuationSet(); if (nextPunct != null) { for (Parse punct : nextPunct) { punctProduction.append(punct.getType()).append(","); } } } production.append(pend.getType()); punctProduction.append(pend.getType()); features.add(production.toString()); features.add(punctProduction.toString()); Parse p_2 = null; Parse p_1 = null; Parse p1 = null; Parse p2 = null; Collection p1s = constituents[end].getNextPunctuationSet(); Collection p2s = null; Collection p_1s = constituents[start].getPreviousPunctuationSet(); Collection p_2s = null; if (start - 2 >= 0) { p_2 = constituents[start - 2]; } if (start - 1 >= 0) { p_1 = constituents[start - 1]; p_2s = p_1.getPreviousPunctuationSet(); } if (end + 1 < ps) { p1 = constituents[end + 1]; p2s = p1.getNextPunctuationSet(); } if (end + 2 < ps) { p2 = constituents[end + 2]; } surround(p_1, -1, type, p_1s, features); surround(p_2, -2, type, p_2s, features); surround(p1, 1, type, p1s, features); surround(p2, 2, type, p2s, features); return features.toArray(new String[features.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_chunking_B0100644 0000000 0000000 00000000167 14135770370 032613 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/BuildContextGener0100664 0001750 0001750 00000022513 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.chunking; import java.util.ArrayList; import java.util.Collection; import java.util.List; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.parser.AbstractContextGenerator; import opennlp.tools.parser.Cons; import opennlp.tools.parser.Parse; import opennlp.tools.util.StringList; /** * Class to generator predictive contexts for deciding how constituents should be combined together. */ public class BuildContextGenerator extends AbstractContextGenerator { private Dictionary dict; private String[] unigram; private String[] bigram; private String[] trigram; /** * Creates a new context generator for making decisions about combining constitients togehter. * */ public BuildContextGenerator() { super(); zeroBackOff = false; useLabel = true; } public BuildContextGenerator(Dictionary dict) { this(); this.dict = dict; unigram = new String[1]; bigram = new String[2]; trigram = new String[3]; } public String[] getContext(Object o) { Object[] params = (Object[]) o; return getContext((Parse[]) params[0], (Integer) params[1]); } /** * Returns the predictive context used to determine how constituent at the specified index * should be combined with other contisuents. * @param constituents The constituents which have yet to be combined into new constituents. * @param index The index of the constituent whcihi is being considered. * @return the context for building constituents at the specified index. */ public String[] getContext(Parse[] constituents, int index) { List features = new ArrayList<>(100); int ps = constituents.length; // cons(-2), cons(-1), cons(0), cons(1), cons(2) // cons(-2) Collection punct2s = null; Collection punct_2s = null; Parse p_2 = null; if (index - 2 >= 0) { p_2 = constituents[index - 2]; } Parse p_1 = null; if (index - 1 >= 0) { p_1 = constituents[index - 1]; punct_2s = p_1.getPreviousPunctuationSet(); } Parse p0 = constituents[index]; Collection punct_1s = p0.getPreviousPunctuationSet(); Collection punct1s = p0.getNextPunctuationSet(); Parse p1 = null; if (index + 1 < ps) { p1 = constituents[index + 1]; punct2s = p1.getNextPunctuationSet(); } Parse p2 = null; if (index + 2 < ps) { p2 = constituents[index + 2]; } boolean u_2 = true; boolean u_1 = true; boolean u0 = true; boolean u1 = true; boolean u2 = true; boolean b_2_1 = true; boolean b_10 = true; boolean b01 = true; boolean b12 = true; boolean t_2_10 = true; boolean t_101 = true; boolean t012 = true; if (dict != null) { if (p_2 != null) { unigram[0] = p_2.getHead().getCoveredText(); u_2 = dict.contains(new StringList(unigram)); } if (p2 != null) { unigram[0] = p2.getHead().getCoveredText(); u2 = dict.contains(new StringList(unigram)); } unigram[0] = p0.getHead().getCoveredText(); u0 = dict.contains(new StringList(unigram)); if (p_2 != null && p_1 != null) { bigram[0] = p_2.getHead().getCoveredText(); bigram[1] = p_1.getHead().getCoveredText(); b_2_1 = dict.contains(new StringList(bigram)); trigram[0] = p_2.getHead().getCoveredText(); trigram[1] = p_1.getHead().getCoveredText(); trigram[2] = p0.getHead().getCoveredText(); t_2_10 = dict.contains(new StringList(trigram)); } if (p_1 != null && p1 != null) { trigram[0] = p_1.getHead().getCoveredText(); trigram[1] = p0.getHead().getCoveredText(); trigram[2] = p1.getHead().getCoveredText(); t_101 = dict.contains(new StringList(trigram)); } if (p_1 != null) { unigram[0] = p_1.getHead().getCoveredText(); u_1 = dict.contains(new StringList(unigram)); //extra check for 2==null case b_2_1 = b_2_1 && u_1 & u_2; t_2_10 = t_2_10 && u_1 & u_2 & u0; t_101 = t_101 && u_1 & u0 && u1; bigram[0] = p_1.getHead().getCoveredText(); bigram[1] = p0.getHead().getCoveredText(); b_10 = dict.contains(new StringList(bigram)) && u_1 && u0; } if (p1 != null && p2 != null) { bigram[0] = p1.getHead().getCoveredText(); bigram[1] = p2.getHead().getCoveredText(); b12 = dict.contains(new StringList(bigram)); trigram[0] = p0.getHead().getCoveredText(); trigram[1] = p1.getHead().getCoveredText(); trigram[2] = p2.getHead().getCoveredText(); t012 = dict.contains(new StringList(trigram)); } if (p1 != null) { unigram[0] = p1.getHead().getCoveredText(); u1 = dict.contains(new StringList(unigram)); //extra check for 2==null case b12 = b12 && u1 && u2; t012 = t012 && u1 && u2 && u0; t_101 = t_101 && u0 && u_1 && u1; bigram[0] = p0.getHead().getCoveredText(); bigram[1] = p1.getHead().getCoveredText(); b01 = dict.contains(new StringList(bigram)); b01 = b01 && u0 && u1; } } String consp_2 = cons(p_2, -2); String consp_1 = cons(p_1, -1); String consp0 = cons(p0, 0); String consp1 = cons(p1, 1); String consp2 = cons(p2, 2); String consbop_2 = consbo(p_2, -2); String consbop_1 = consbo(p_1, -1); String consbop0 = consbo(p0, 0); String consbop1 = consbo(p1, 1); String consbop2 = consbo(p2, 2); Cons c_2 = new Cons(consp_2,consbop_2,-2,u_2); Cons c_1 = new Cons(consp_1,consbop_1,-1,u_1); Cons c0 = new Cons(consp0,consbop0,0,u0); Cons c1 = new Cons(consp1,consbop1,1,u1); Cons c2 = new Cons(consp2,consbop2,2,u2); //default features.add("default"); //first constituent label //features.add("fl="+constituents[0].getLabel()); // features.add("stage=cons(i)"); // cons(-2), cons(-1), cons(0), cons(1), cons(2) if (u0) features.add(consp0); features.add(consbop0); if (u_2) features.add(consp_2); features.add(consbop_2); if (u_1) features.add(consp_1); features.add(consbop_1); if (u1) features.add(consp1); features.add(consbop1); if (u2) features.add(consp2); features.add(consbop2); //cons(0),cons(1) cons2(features,c0,c1,punct1s,b01); //cons(-1),cons(0) cons2(features,c_1,c0,punct_1s,b_10); //features.add("stage=cons(0),cons(1),cons(2)"); cons3(features,c0,c1,c2,punct1s,punct2s,t012,b01,b12); cons3(features,c_2,c_1,c0,punct_2s,punct_1s,t_2_10,b_2_1,b_10); cons3(features,c_1,c0,c1,punct_1s,punct1s,t_101,b_10,b01); //features.add("stage=other"); String p0Tag = p0.getType(); if (p0Tag.equals("-RRB-")) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getType().equals("-LRB-")) { features.add("bracketsmatch"); break; } if (p.getLabel().startsWith(Parser.START)) { break; } } } if (p0Tag.equals("-RCB-")) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getType().equals("-LCB-")) { features.add("bracketsmatch"); break; } if (p.getLabel().startsWith(Parser.START)) { break; } } } if (p0Tag.equals("''")) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getType().equals("``")) { features.add("quotesmatch"); break; } if (p.getLabel().startsWith(Parser.START)) { break; } } } if (p0Tag.equals("'")) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getType().equals("`")) { features.add("quotesmatch"); break; } if (p.getLabel().startsWith(Parser.START)) { break; } } } if (p0Tag.equals(",")) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getType().equals(",")) { features.add("iscomma"); break; } if (p.getLabel().startsWith(Parser.START)) { break; } } } if (p0Tag.equals(".") && index == ps - 1) { for (int pi = index - 1; pi >= 0; pi--) { Parse p = constituents[pi]; if (p.getLabel().startsWith(Parser.START)) { if (pi == 0) { features.add("endofsentence"); } break; } } } return features.toArray(new String[features.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java0100664 0001750 0001750 00000033061 14135770370 032750 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.chunking; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.chunker.Chunker; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.ChunkSampleStream; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserChunkerFactory; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.ParserType; import opennlp.tools.parser.PosSampleStream; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTagger; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; /** * Class for a shift reduce style parser based on Adwait Ratnaparkhi's 1998 thesis. */ public class Parser extends AbstractBottomUpParser { private MaxentModel buildModel; private MaxentModel checkModel; private BuildContextGenerator buildContextGenerator; private CheckContextGenerator checkContextGenerator; private double[] bprobs; private double[] cprobs; private static final String TOP_START = START + TOP_NODE; private int topStartIndex; private Map startTypeMap; private Map contTypeMap; private int completeIndex; private int incompleteIndex; public Parser(ParserModel model, int beamSize, double advancePercentage) { this(model.getBuildModel(), model.getCheckModel(), new POSTaggerME(model.getParserTaggerModel()), new ChunkerME(model.getParserChunkerModel()), model.getHeadRules(), beamSize, advancePercentage); } public Parser(ParserModel model) { this(model, defaultBeamSize, defaultAdvancePercentage); } /** * Creates a new parser using the specified models and head rules using the specified beam * size and advance percentage. * @param buildModel The model to assign constituent labels. * @param checkModel The model to determine a constituent is complete. * @param tagger The model to assign pos-tags. * @param chunker The model to assign flat constituent labels. * @param headRules The head rules for head word perculation. * @param beamSize The number of different parses kept during parsing. * @param advancePercentage The minimal amount of probability mass which advanced outcomes must represent. * Only outcomes which contribute to the top "advancePercentage" will be explored. */ private Parser(MaxentModel buildModel, MaxentModel checkModel, POSTagger tagger, Chunker chunker, HeadRules headRules, int beamSize, double advancePercentage) { super(tagger, chunker, headRules, beamSize, advancePercentage); this.buildModel = buildModel; this.checkModel = checkModel; bprobs = new double[buildModel.getNumOutcomes()]; cprobs = new double[checkModel.getNumOutcomes()]; this.buildContextGenerator = new BuildContextGenerator(); this.checkContextGenerator = new CheckContextGenerator(); startTypeMap = new HashMap<>(); contTypeMap = new HashMap<>(); for (int boi = 0, bon = buildModel.getNumOutcomes(); boi < bon; boi++) { String outcome = buildModel.getOutcome(boi); if (outcome.startsWith(START)) { //System.err.println("startMap "+outcome+"->"+outcome.substring(START.length())); startTypeMap.put(outcome, outcome.substring(START.length())); } else if (outcome.startsWith(CONT)) { //System.err.println("contMap "+outcome+"->"+outcome.substring(CONT.length())); contTypeMap.put(outcome, outcome.substring(CONT.length())); } } topStartIndex = buildModel.getIndex(TOP_START); completeIndex = checkModel.getIndex(COMPLETE); incompleteIndex = checkModel.getIndex(INCOMPLETE); } @Override protected void advanceTop(Parse p) { buildModel.eval(buildContextGenerator.getContext(p.getChildren(), 0), bprobs); p.addProb(StrictMath.log(bprobs[topStartIndex])); checkModel.eval(checkContextGenerator.getContext(p.getChildren(), TOP_NODE, 0, 0), cprobs); p.addProb(StrictMath.log(cprobs[completeIndex])); p.setType(TOP_NODE); } @Override protected Parse[] advanceParses(final Parse p, double probMass) { double q = 1 - probMass; /* The closest previous node which has been labeled as a start node. */ Parse lastStartNode = null; /* The index of the closest previous node which has been labeled as a start node. */ int lastStartIndex = -1; /* The type of the closest previous node which has been labeled as a start node. */ String lastStartType = null; /* The index of the node which will be labeled in this iteration of advancing the parse. */ int advanceNodeIndex; /* The node which will be labeled in this iteration of advancing the parse. */ Parse advanceNode = null; Parse[] originalChildren = p.getChildren(); Parse[] children = collapsePunctuation(originalChildren,punctSet); int numNodes = children.length; if (numNodes == 0) { return null; } //determines which node needs to be labeled and prior labels. for (advanceNodeIndex = 0; advanceNodeIndex < numNodes; advanceNodeIndex++) { advanceNode = children[advanceNodeIndex]; if (advanceNode.getLabel() == null) { break; } else if (startTypeMap.containsKey(advanceNode.getLabel())) { lastStartType = startTypeMap.get(advanceNode.getLabel()); lastStartNode = advanceNode; lastStartIndex = advanceNodeIndex; //System.err.println("lastStart "+i+" "+lastStart.label+" "+lastStart.prob); } } int originalAdvanceIndex = mapParseIndex(advanceNodeIndex,children,originalChildren); List newParsesList = new ArrayList<>(buildModel.getNumOutcomes()); //call build buildModel.eval(buildContextGenerator.getContext(children, advanceNodeIndex), bprobs); double bprobSum = 0; while (bprobSum < probMass) { // The largest unadvanced labeling. int max = 0; for (int pi = 1; pi < bprobs.length; pi++) { //for each build outcome if (bprobs[pi] > bprobs[max]) { max = pi; } } if (bprobs[max] == 0) { break; } double bprob = bprobs[max]; bprobs[max] = 0; //zero out so new max can be found bprobSum += bprob; String tag = buildModel.getOutcome(max); //System.out.println("trying "+tag+" "+bprobSum+" lst="+lst); if (max == topStartIndex) { // can't have top until complete continue; } //System.err.println(i+" "+tag+" "+bprob); if (startTypeMap.containsKey(tag)) { //update last start lastStartIndex = advanceNodeIndex; lastStartNode = advanceNode; lastStartType = startTypeMap.get(tag); } else if (contTypeMap.containsKey(tag)) { if (lastStartNode == null || !lastStartType.equals(contTypeMap.get(tag))) { continue; //Cont must match previous start or continue } } Parse newParse1 = (Parse) p.clone(); //clone parse if (createDerivationString) newParse1.getDerivation().append(max).append("-"); //replace constituent being labeled to create new derivation newParse1.setChild(originalAdvanceIndex,tag); newParse1.addProb(StrictMath.log(bprob)); //check //String[] context = checkContextGenerator.getContext(newParse1.getChildren(), lastStartType, // lastStartIndex, advanceNodeIndex); checkModel.eval(checkContextGenerator.getContext( collapsePunctuation(newParse1.getChildren(),punctSet), lastStartType, lastStartIndex, advanceNodeIndex), cprobs); //System.out.println("check "+lastStartType+" "+cprobs[completeIndex]+" "+cprobs[incompleteIndex] // +" "+tag+" "+java.util.Arrays.asList(context)); Parse newParse2; if (cprobs[completeIndex] > q) { //make sure a reduce is likely newParse2 = (Parse) newParse1.clone(); if (createDerivationString) newParse2.getDerivation().append(1).append("."); newParse2.addProb(StrictMath.log(cprobs[completeIndex])); Parse[] cons = new Parse[advanceNodeIndex - lastStartIndex + 1]; boolean flat = true; //first cons[0] = lastStartNode; flat &= cons[0].isPosTag(); //last cons[advanceNodeIndex - lastStartIndex] = advanceNode; flat &= cons[advanceNodeIndex - lastStartIndex].isPosTag(); //middle for (int ci = 1; ci < advanceNodeIndex - lastStartIndex; ci++) { cons[ci] = children[ci + lastStartIndex]; flat &= cons[ci].isPosTag(); } if (!flat) { //flat chunks are done by chunker //check for top node to include end and begining punctuation if (lastStartIndex == 0 && advanceNodeIndex == numNodes - 1) { //System.err.println("ParserME.advanceParses: reducing entire span: " // +new Span(lastStartNode.getSpan().getStart(), advanceNode.getSpan().getEnd())+" " // +lastStartType+" "+java.util.Arrays.asList(children)); newParse2.insert(new Parse(p.getText(), p.getSpan(), lastStartType, cprobs[1], headRules.getHead(cons, lastStartType))); } else { newParse2.insert(new Parse(p.getText(), new Span(lastStartNode.getSpan().getStart(), advanceNode.getSpan().getEnd()), lastStartType, cprobs[1], headRules.getHead(cons, lastStartType))); } newParsesList.add(newParse2); } } if (cprobs[incompleteIndex] > q) { //make sure a shift is likely if (createDerivationString) newParse1.getDerivation().append(0).append("."); if (advanceNodeIndex != numNodes - 1) { //can't shift last element newParse1.addProb(StrictMath.log(cprobs[incompleteIndex])); newParsesList.add(newParse1); } } } Parse[] newParses = new Parse[newParsesList.size()]; newParsesList.toArray(newParses); return newParses; } public static void mergeReportIntoManifest(Map manifest, Map report, String namespace) { for (Map.Entry entry : report.entrySet()) { manifest.put(namespace + "." + entry.getKey(), entry.getValue()); } } public static ParserModel train(String languageCode, ObjectStream parseSamples, HeadRules rules, TrainingParameters mlParams) throws IOException { System.err.println("Building dictionary"); Dictionary mdict = buildDictionary(parseSamples, rules, mlParams); parseSamples.reset(); Map manifestInfoEntries = new HashMap<>(); // build System.err.println("Training builder"); ObjectStream bes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.BUILD, mdict); Map buildReportMap = new HashMap<>(); EventTrainer buildTrainer = TrainerFactory.getEventTrainer(mlParams.getParameters("build"), buildReportMap); MaxentModel buildModel = buildTrainer.train(bes); mergeReportIntoManifest(manifestInfoEntries, buildReportMap, "build"); parseSamples.reset(); // tag TrainingParameters posTaggerParams = mlParams.getParameters("tagger"); if (!posTaggerParams.getObjectSettings().containsKey(BeamSearch.BEAM_SIZE_PARAMETER)) { mlParams.put("tagger", BeamSearch.BEAM_SIZE_PARAMETER, 10); } POSModel posModel = POSTaggerME.train(languageCode, new PosSampleStream(parseSamples), mlParams.getParameters("tagger"), new POSTaggerFactory()); parseSamples.reset(); // chunk ChunkerModel chunkModel = ChunkerME.train(languageCode, new ChunkSampleStream(parseSamples), mlParams.getParameters("chunker"), new ParserChunkerFactory()); parseSamples.reset(); // check System.err.println("Training checker"); ObjectStream kes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.CHECK); Map checkReportMap = new HashMap<>(); EventTrainer checkTrainer = TrainerFactory.getEventTrainer(mlParams.getParameters("check"), checkReportMap); MaxentModel checkModel = checkTrainer.train(kes); mergeReportIntoManifest(manifestInfoEntries, checkReportMap, "check"); // TODO: Remove cast for HeadRules return new ParserModel(languageCode, buildModel, checkModel, posModel, chunkModel, rules, ParserType.CHUNKING, manifestInfoEntries); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_chunking_P0100644 0000000 0000000 00000000163 14135770370 032625 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/ParserEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/ParserEventStream0100664 0001750 0001750 00000013741 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.chunking; import java.util.List; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.Event; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.AbstractParserEventStream; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.util.ObjectStream; /** * Wrapper class for one of four parser event streams. The particular event stream is specified * at construction. */ public class ParserEventStream extends AbstractParserEventStream { protected BuildContextGenerator bcg; protected CheckContextGenerator kcg; /** * Create an event stream based on the specified data stream of the specified type using * the specified head rules. * @param d A 1-parse-per-line Penn Treebank Style parse. * @param rules The head rules. * @param etype The type of events desired (tag, chunk, build, or check). * @param dict A tri-gram dictionary to reduce feature generation. */ public ParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype, Dictionary dict) { super(d,rules,etype,dict); } @Override protected void init() { if (etype == ParserEventTypeEnum.BUILD) { this.bcg = new BuildContextGenerator(dict); } else if (etype == ParserEventTypeEnum.CHECK) { this.kcg = new CheckContextGenerator(); } } public ParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype) { this (d,rules,etype,null); } /** * Returns true if the specified child is the first child of the specified parent. * @param child The child parse. * @param parent The parent parse. * @return true if the specified child is the first child of the specified parent; false otherwise. */ protected boolean firstChild(Parse child, Parse parent) { return AbstractBottomUpParser.collapsePunctuation(parent.getChildren(), punctSet)[0] == child; } public static Parse[] reduceChunks(Parse[] chunks, int ci, Parse parent) { String type = parent.getType(); // perform reduce int reduceStart = ci; int reduceEnd = ci; while (reduceStart >= 0 && chunks[reduceStart].getParent() == parent) { reduceStart--; } reduceStart++; Parse[] reducedChunks; if (!type.equals(AbstractBottomUpParser.TOP_NODE)) { //total - num_removed + 1 (for new node) reducedChunks = new Parse[chunks.length - (reduceEnd - reduceStart + 1) + 1]; //insert nodes before reduction System.arraycopy(chunks, 0, reducedChunks, 0, reduceStart); //insert reduced node reducedChunks[reduceStart] = parent; //propagate punctuation sets parent.setPrevPunctuation(chunks[reduceStart].getPreviousPunctuationSet()); parent.setNextPunctuation(chunks[reduceEnd].getNextPunctuationSet()); //insert nodes after reduction int ri = reduceStart + 1; for (int rci = reduceEnd + 1; rci < chunks.length; rci++) { reducedChunks[ri] = chunks[rci]; ri++; } ci = reduceStart - 1; //ci will be incremented at end of loop } else { reducedChunks = new Parse[0]; } return reducedChunks; } /** * Adds events for parsing (post tagging and chunking to the specified list of events for * the specified parse chunks. * @param parseEvents The events for the specified chunks. * @param chunks The incomplete parses to be parsed. */ @Override protected void addParseEvents(List parseEvents, Parse[] chunks) { int ci = 0; while (ci < chunks.length) { //System.err.println("parserEventStream.addParseEvents: chunks="+Arrays.asList(chunks)); Parse c = chunks[ci]; Parse parent = c.getParent(); if (parent != null) { String type = parent.getType(); String outcome; if (firstChild(c, parent)) { outcome = AbstractBottomUpParser.START + type; } else { outcome = AbstractBottomUpParser.CONT + type; } // System.err.println("parserEventStream.addParseEvents: chunks["+ci+"]="+c+" label=" // +outcome+" bcg="+bcg); c.setLabel(outcome); if (etype == ParserEventTypeEnum.BUILD) { parseEvents.add(new Event(outcome, bcg.getContext(chunks, ci))); } int start = ci - 1; while (start >= 0 && chunks[start].getParent() == parent) { start--; } if (lastChild(c, parent)) { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.COMPLETE, kcg.getContext( chunks, type, start + 1, ci))); } //perform reduce int reduceStart = ci; while (reduceStart >= 0 && chunks[reduceStart].getParent() == parent) { reduceStart--; } reduceStart++; chunks = reduceChunks(chunks,ci,parent); ci = reduceStart - 1; //ci will be incremented at end of loop } else { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.INCOMPLETE, kcg.getContext(chunks, type, start + 1, ci))); } } } ci++; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/GapLabeler.java0100664 0001750 0001750 00000002262 14135770370 031703 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.Stack; /** * Interface for labeling nodes which contain traces so that these traces can be predicted * by the parser. */ public interface GapLabeler { /** * Labels the constituents found in the stack with gap labels if appropriate. * @param stack The stack of un-completed constituents. */ void labelGaps(Stack stack); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/HeadRules.java0100664 0001750 0001750 00000003014 14135770370 031555 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.Set; /** * Interface for encoding the head rules associated with parsing. */ public interface HeadRules { /** * Returns the head constituent for the specified constituents of the specified type. * * @param constituents The constituents which make up a constituent of the specified type. * @param type The type of a constituent which is made up of the specified constituents. * @return The constituent which is the head. */ Parse getHead(Parse[] constituents, String type); /** * Returns the set of punctuation tags. Attachment decisions for these tags will not be modeled. * * @return the set of punctuation tags. */ Set getPunctuationTags(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/package-info.java0100664 0001750 0001750 00000001621 14135770370 032227 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package containing common code for performing full syntactic parsing. */ package opennlp.tools.parser; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserType.java0100664 0001750 0001750 00000002216 14135770370 032002 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; public enum ParserType { CHUNKING, TREEINSERT; public static ParserType parse(String type) { if (ParserType.CHUNKING.name().equals(type)) { return ParserType.CHUNKING; } else if (ParserType.TREEINSERT.name().equals(type)) { return ParserType.TREEINSERT; } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/Parser.java0100664 0001750 0001750 00000003643 14135770370 031145 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; /** * Interface for full-syntactic parsers. */ public interface Parser { /** * Returns the specified number of parses or fewer for the specified tokens.
* Note: The nodes within * the returned parses are shared with other parses and therefore their parent node references * will not be consistent with their child node reference. {@link Parse#setParent(Parse)} * can be used to make the parents consistent with a particular parse, but subsequent calls * to setParents can invalidate the results of earlier calls.
* @param tokens A parse containing the tokens with a single parent node. * @param numParses The number of parses desired. * @return the specified number of parses for the specified tokens. */ Parse[] parse(Parse tokens, int numParses); /** * Returns a parse for the specified parse of tokens. * * @param tokens The root node of a flat parse containing only tokens. * @return A full parse of the specified tokens or the flat chunks of the tokens if a * fullparse could not be found. */ Parse parse(Parse tokens); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/Cons.java0100664 0001750 0001750 00000002253 14135770370 030607 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; /** * Class to hold feature information about a specific parse node. */ public class Cons { final String cons; final String consbo; final int index; final boolean unigram; public Cons(String cons, String consbo, int index, boolean unigram) { this.cons = cons; this.consbo = consbo; this.index = index; this.unigram = unigram; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkSampleStream.java0100664 0001750 0001750 00000006011 14135770370 033267 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class ChunkSampleStream extends FilterObjectStream { public ChunkSampleStream(ObjectStream in) { super(in); } private static void getInitialChunks(Parse p, List ichunks) { if (p.isPosTag()) { ichunks.add(p); } else { Parse[] kids = p.getChildren(); boolean allKidsAreTags = true; for (Parse kid : kids) { if (!kid.isPosTag()) { allKidsAreTags = false; break; } } if (allKidsAreTags) { ichunks.add(p); } else { for (Parse kid : kids) { getInitialChunks(kid, ichunks); } } } } public static Parse[] getInitialChunks(Parse p) { List chunks = new ArrayList<>(); getInitialChunks(p, chunks); return chunks.toArray(new Parse[chunks.size()]); } public ChunkSample read() throws IOException { Parse parse = samples.read(); if (parse != null) { Parse[] chunks = getInitialChunks(parse); List toks = new ArrayList<>(); List tags = new ArrayList<>(); List preds = new ArrayList<>(); for (Parse c : chunks) { if (c.isPosTag()) { toks.add(c.getCoveredText()); tags.add(c.getType()); preds.add(Parser.OTHER); } else { boolean start = true; String ctype = c.getType(); Parse[] kids = c.getChildren(); for (Parse tok : kids) { toks.add(tok.getCoveredText()); tags.add(tok.getType()); if (start) { preds.add(Parser.START + ctype); start = false; } else { preds.add(Parser.CONT + ctype); } } } } return new ChunkSample(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]), preds.toArray(new String[preds.size()])); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_treeinsert0100644 0000000 0000000 00000000172 14135770370 032724 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGe0100664 0001750 0001750 00000012362 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.treeinsert; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; import opennlp.tools.parser.AbstractContextGenerator; import opennlp.tools.parser.Cons; import opennlp.tools.parser.Parse; public class AttachContextGenerator extends AbstractContextGenerator { public AttachContextGenerator(Set punctSet) { this.punctSet = punctSet; } public String[] getContext(Object o) { Object[] parts = (Object[]) o; return getContext((Parse[]) parts[0], (Integer) parts[1],(List) parts[2], (Integer) parts[3]); } private boolean containsPunct(Collection puncts, String punct) { if (puncts != null) { for (Parse p : puncts) { if (p.getType().equals(punct)) { return true; } } } return false; } /** * * @param constituents The constituents as they have been constructed so far. * @param index The constituent index of the node being attached. * @param rightFrontier The nodes which have been not attach to so far. * @return A set of contextual features about this attachment. */ public String[] getContext(Parse[] constituents, int index, List rightFrontier, int rfi) { List features = new ArrayList<>(100); Parse fn = rightFrontier.get(rfi); Parse fp = null; if (rfi + 1 < rightFrontier.size()) { fp = rightFrontier.get(rfi + 1); } Parse p_1 = null; if (rightFrontier.size() > 0) { p_1 = rightFrontier.get(0); } Parse p0 = constituents[index]; Parse p1 = null; if (index + 1 < constituents.length) { p1 = constituents[index + 1]; } Collection punct_1fs = fn.getPreviousPunctuationSet(); Collection punct_1s = p0.getPreviousPunctuationSet(); Collection punct1s = p0.getNextPunctuationSet(); String consfp = cons(fp, -3); String consf = cons(fn, -2); String consp_1 = cons(p_1, -1); String consp0 = cons(p0, 0); String consp1 = cons(p1, 1); String consbofp = consbo(fp, -3); String consbof = consbo(fn, -2); String consbop_1 = consbo(p_1, -1); String consbop0 = consbo(p0, 0); String consbop1 = consbo(p1, 1); Cons cfp = new Cons(consfp,consbofp,-3,true); Cons cf = new Cons(consf,consbof,-2,true); Cons c_1 = new Cons(consp_1,consbop_1,-1,true); Cons c0 = new Cons(consp0,consbop0,0,true); Cons c1 = new Cons(consp1,consbop1,1,true); //default features.add("default"); //unigrams features.add(consfp); features.add(consbofp); features.add(consf); features.add(consbof); features.add(consp_1); features.add(consbop_1); features.add(consp0); features.add(consbop0); features.add(consp1); features.add(consbop1); //productions String prod = production(fn,false); //String punctProd = production(fn,true,punctSet); features.add("pn=" + prod); features.add("pd=" + prod + "," + p0.getType()); features.add("ps=" + fn.getType() + "->" + fn.getType() + "," + p0.getType()); if (punct_1s != null) { StringBuilder punctBuf = new StringBuilder(5); for (Parse punct : punct_1s) { punctBuf.append(punct.getType()).append(","); } //features.add("ppd="+punctProd+","+punctBuf.toString()+p0.getType()); //features.add("pps="+fn.getType()+"->"+fn.getType()+","+punctBuf.toString()+p0.getType()); } //bi-grams //cons(fn),cons(0) cons2(features,cfp,c0,punct_1s,true); cons2(features,cf,c0,punct_1s,true); cons2(features,c_1,c0,punct_1s,true); cons2(features,c0,c1,punct1s,true); cons3(features,cf,c_1,c0,null,punct_1s,true,true,true); cons3(features,cf,c0,c1,punct_1s,punct1s,true,true,true); cons3(features,cfp,cf,c0,null,punct_1s,true,true,true); /* for (int ri=0;ri punctSet) { this.punctSet = punctSet; leftNodes = new Parse[2]; } public String[] getContext(Object arg0) { // TODO Auto-generated method stub return null; } public String[] getContext(Parse parent, Parse[] constituents, int index, boolean trimFrontier) { List features = new ArrayList<>(100); //default features.add("default"); Parse[] children = Parser.collapsePunctuation(parent.getChildren(),punctSet); Parse pstart = children[0]; Parse pend = children[children.length - 1]; String type = parent.getType(); checkcons(pstart, "begin", type, features); checkcons(pend, "last", type, features); String production = "p=" + production(parent,false); String punctProduction = "pp=" + production(parent,true); features.add(production); features.add(punctProduction); Parse p1 = null; Parse p2 = null; Collection p1s = constituents[index].getNextPunctuationSet(); Collection p2s = null; Collection p_1s = constituents[index].getPreviousPunctuationSet(); Collection p_2s = null; List rf; if (index == 0) { rf = Collections.emptyList(); } else { rf = Parser.getRightFrontier(constituents[0], punctSet); if (trimFrontier) { int pi = rf.indexOf(parent); if (pi == -1) { throw new RuntimeException("Parent not found in right frontier:" + parent + " rf=" + rf); } else { for (int ri = 0; ri <= pi; ri++) { rf.remove(0); } } } } getFrontierNodes(rf,leftNodes); Parse p_1 = leftNodes[0]; Parse p_2 = leftNodes[1]; int ps = constituents.length; if (p_1 != null) { p_2s = p_1.getPreviousPunctuationSet(); } if (index + 1 < ps) { p1 = constituents[index + 1]; p2s = p1.getNextPunctuationSet(); } if (index + 2 < ps) { p2 = constituents[index + 2]; } surround(p_1, -1, type, p_1s, features); surround(p_2, -2, type, p_2s, features); surround(p1, 1, type, p1s, features); surround(p2, 2, type, p2s, features); return features.toArray(new String[features.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_treeinsert0100644 0000000 0000000 00000000171 14135770370 032723 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/BuildContextGen0100664 0001750 0001750 00000010743 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.treeinsert; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; import opennlp.tools.parser.AbstractContextGenerator; import opennlp.tools.parser.Cons; import opennlp.tools.parser.Parse; /** * Creates the features or contexts for the building phase of parsing. * This phase builds constituents from the left-most node of these * constituents. */ public class BuildContextGenerator extends AbstractContextGenerator { private Parse[] leftNodes; public BuildContextGenerator() { super(); leftNodes = new Parse[2]; } public String[] getContext(Object o) { Object[] parts = (Object[]) o; return getContext((Parse[]) parts[0], (Integer) parts[1]); } /** * Returns the contexts/features for the decision to build a new constituent for the specified parse * at the specified index. * @param constituents The constituents of the parse so far. * @param index The index of the constituent where a build decision is being made. * @return the contexts/features for the decision to build a new constituent. */ public String[] getContext(Parse[] constituents, int index) { int ps = constituents.length; Parse p0 = constituents[index]; Parse p1 = null; if (index + 1 < ps) { p1 = constituents[index + 1]; } Parse p2 = null; if (index + 2 < ps) { p2 = constituents[index + 2]; } Collection punct_1s = p0.getPreviousPunctuationSet(); Collection punct1s = p0.getNextPunctuationSet(); Collection punct2s = null; if (p1 != null) { punct2s = p1.getNextPunctuationSet(); } List rf; if (index == 0) { rf = Collections.emptyList(); } else { //this isn't a root node so, punctSet won't be used and can be passed as empty. Set emptyPunctSet = Collections.emptySet(); rf = Parser.getRightFrontier(constituents[0], emptyPunctSet); } getFrontierNodes(rf,leftNodes); Parse p_1 = leftNodes[0]; Parse p_2 = leftNodes[1]; Collection punct_2s = null; if (p_1 != null) { punct_2s = p_1.getPreviousPunctuationSet(); } String consp_2 = cons(p_2, -2); String consp_1 = cons(p_1, -1); String consp0 = cons(p0, 0); String consp1 = cons(p1, 1); String consp2 = cons(p2, 2); String consbop_2 = consbo(p_2, -2); String consbop_1 = consbo(p_1, -1); String consbop0 = consbo(p0, 0); String consbop1 = consbo(p1, 1); String consbop2 = consbo(p2, 2); Cons c_2 = new Cons(consp_2,consbop_2,-2,true); Cons c_1 = new Cons(consp_1,consbop_1,-1,true); Cons c0 = new Cons(consp0,consbop0,0,true); Cons c1 = new Cons(consp1,consbop1,1,true); Cons c2 = new Cons(consp2,consbop2,2,true); List features = new ArrayList<>(); features.add("default"); //unigrams features.add(consp_2); features.add(consbop_2); features.add(consp_1); features.add(consbop_1); features.add(consp0); features.add(consbop0); features.add(consp1); features.add(consbop1); features.add(consp2); features.add(consbop2); //cons(0),cons(1) cons2(features,c0,c1,punct1s,true); //cons(-1),cons(0) cons2(features,c_1,c0,punct_1s,true); //features.add("stage=cons(0),cons(1),cons(2)"); cons3(features,c0,c1,c2,punct1s,punct2s,true,true,true); cons3(features,c_2,c_1,c0,punct_2s,punct_1s,true,true,true); cons3(features,c_1,c0,c1,punct_1s,punct_1s,true,true,true); if (rf.isEmpty()) { features.add(EOS + "," + consp0); features.add(EOS + "," + consbop0); } return features.toArray(new String[features.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java0100664 0001750 0001750 00000051670 14135770370 033334 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.treeinsert; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import opennlp.tools.chunker.Chunker; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.ChunkSampleStream; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserChunkerFactory; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.ParserType; import opennlp.tools.parser.PosSampleStream; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTagger; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * Built/attach parser. Nodes are built when their left-most * child is encountered. Subsequent children are attached as * daughters. Attachment is based on node in the right-frontier * of the tree. After each attachment or building, nodes are * assesed as either complete or incomplete. Complete nodes * are no longer elligable for daughter attachment. * Complex modifiers which produce additional node * levels of the same type are attached with sister-adjunction. * Attachment can not take place higher in the right-frontier * than an incomplete node. */ public class Parser extends AbstractBottomUpParser { /** Outcome used when a constituent needs an no additional parent node/building. */ public static final String DONE = "d"; /** Outcome used when a node should be attached as a sister to another node. */ public static final String ATTACH_SISTER = "s"; /** Outcome used when a node should be attached as a daughter to another node. */ public static final String ATTACH_DAUGHTER = "d"; /** Outcome used when a node should not be attached to another node. */ public static final String NON_ATTACH = "n"; /** Label used to distinguish build nodes from non-built nodes. */ public static final String BUILT = "built"; private MaxentModel buildModel; private MaxentModel attachModel; private MaxentModel checkModel; static boolean checkComplete = false; private BuildContextGenerator buildContextGenerator; private AttachContextGenerator attachContextGenerator; private CheckContextGenerator checkContextGenerator; private double[] bprobs; private double[] aprobs; private double[] cprobs; private int doneIndex; private int sisterAttachIndex; private int daughterAttachIndex; private int nonAttachIndex; private int completeIndex; private int[] attachments; public Parser(ParserModel model, int beamSize, double advancePercentage) { this(model.getBuildModel(), model.getAttachModel(), model.getCheckModel(), new POSTaggerME(model.getParserTaggerModel()), new ChunkerME(model.getParserChunkerModel()), model.getHeadRules(), beamSize, advancePercentage); } public Parser(ParserModel model) { this(model, defaultBeamSize, defaultAdvancePercentage); } private Parser(MaxentModel buildModel, MaxentModel attachModel, MaxentModel checkModel, POSTagger tagger, Chunker chunker, HeadRules headRules, int beamSize, double advancePercentage) { super(tagger,chunker,headRules,beamSize,advancePercentage); this.buildModel = buildModel; this.attachModel = attachModel; this.checkModel = checkModel; this.buildContextGenerator = new BuildContextGenerator(); this.attachContextGenerator = new AttachContextGenerator(punctSet); this.checkContextGenerator = new CheckContextGenerator(punctSet); this.bprobs = new double[buildModel.getNumOutcomes()]; this.aprobs = new double[attachModel.getNumOutcomes()]; this.cprobs = new double[checkModel.getNumOutcomes()]; this.doneIndex = buildModel.getIndex(DONE); this.sisterAttachIndex = attachModel.getIndex(ATTACH_SISTER); this.daughterAttachIndex = attachModel.getIndex(ATTACH_DAUGHTER); this.nonAttachIndex = attachModel.getIndex(NON_ATTACH); attachments = new int[] {daughterAttachIndex,sisterAttachIndex}; this.completeIndex = checkModel.getIndex(Parser.COMPLETE); } /** * Returns the right frontier of the specified parse tree with nodes ordered from deepest * to shallowest. * @param root The root of the parse tree. * @return The right frontier of the specified parse tree. */ public static List getRightFrontier(Parse root,Set punctSet) { List rf = new LinkedList<>(); Parse top; if (AbstractBottomUpParser.TOP_NODE.equals(root.getType()) || AbstractBottomUpParser.INC_NODE.equals(root.getType())) { top = collapsePunctuation(root.getChildren(),punctSet)[0]; } else { top = root; } while (!top.isPosTag()) { rf.add(0,top); Parse[] kids = top.getChildren(); top = kids[kids.length - 1]; } return new ArrayList<>(rf); } private void setBuilt(Parse p) { String l = p.getLabel(); if (l == null) { p.setLabel(Parser.BUILT); } else { if (isComplete(p)) { p.setLabel(Parser.BUILT + "." + Parser.COMPLETE); } else { p.setLabel(Parser.BUILT + "." + Parser.INCOMPLETE); } } } private void setComplete(Parse p) { String l = p.getLabel(); if (!isBuilt(p)) { p.setLabel(Parser.COMPLETE); } else { p.setLabel(Parser.BUILT + "." + Parser.COMPLETE); } } private void setIncomplete(Parse p) { if (!isBuilt(p)) { p.setLabel(Parser.INCOMPLETE); } else { p.setLabel(Parser.BUILT + "." + Parser.INCOMPLETE); } } private boolean isBuilt(Parse p) { String l = p.getLabel(); return l != null && l.startsWith(Parser.BUILT); } private boolean isComplete(Parse p) { String l = p.getLabel(); return l != null && l.endsWith(Parser.COMPLETE); } @Override protected Parse[] advanceChunks(Parse p, double minChunkScore) { Parse[] parses = super.advanceChunks(p, minChunkScore); for (Parse parse : parses) { Parse[] chunks = parse.getChildren(); for (Parse chunk : chunks) { setComplete(chunk); } } return parses; } @Override protected Parse[] advanceParses(Parse p, double probMass) { double q = 1 - probMass; /* The index of the node which will be labeled in this iteration of advancing the parse. */ int advanceNodeIndex; /* The node which will be labeled in this iteration of advancing the parse. */ Parse advanceNode = null; Parse[] originalChildren = p.getChildren(); Parse[] children = collapsePunctuation(originalChildren,punctSet); int numNodes = children.length; if (numNodes == 0) { return null; } else if (numNodes == 1) { //put sentence initial and final punct in top node if (children[0].isPosTag()) { return null; } else { p.expandTopNode(children[0]); return new Parse[] { p }; } } //determines which node needs to adanced. for (advanceNodeIndex = 0; advanceNodeIndex < numNodes; advanceNodeIndex++) { advanceNode = children[advanceNodeIndex]; if (!isBuilt(advanceNode)) { break; } } int originalZeroIndex = mapParseIndex(0,children,originalChildren); int originalAdvanceIndex = mapParseIndex(advanceNodeIndex,children,originalChildren); List newParsesList = new ArrayList<>(); //call build model buildModel.eval(buildContextGenerator.getContext(children, advanceNodeIndex), bprobs); double doneProb = bprobs[doneIndex]; if (debugOn) System.out.println("adi=" + advanceNodeIndex + " " + advanceNode.getType() + "." + advanceNode.getLabel() + " " + advanceNode + " choose build=" + (1 - doneProb) + " attach=" + doneProb); if (1 - doneProb > q) { double bprobSum = 0; while (bprobSum < probMass) { /* The largest unadvanced labeling. */ int max = 0; for (int pi = 1; pi < bprobs.length; pi++) { //for each build outcome if (bprobs[pi] > bprobs[max]) { max = pi; } } if (bprobs[max] == 0) { break; } double bprob = bprobs[max]; bprobs[max] = 0; //zero out so new max can be found bprobSum += bprob; String tag = buildModel.getOutcome(max); if (!tag.equals(DONE)) { Parse newParse1 = (Parse) p.clone(); Parse newNode = new Parse(p.getText(),advanceNode.getSpan(),tag,bprob,advanceNode.getHead()); newParse1.insert(newNode); newParse1.addProb(StrictMath.log(bprob)); newParsesList.add(newParse1); if (checkComplete) { cprobs = checkModel.eval(checkContextGenerator.getContext(newNode, children, advanceNodeIndex,false)); if (debugOn) System.out.println("building " + tag + " " + bprob + " c=" + cprobs[completeIndex]); if (cprobs[completeIndex] > probMass) { //just complete advances setComplete(newNode); newParse1.addProb(StrictMath.log(cprobs[completeIndex])); if (debugOn) System.out.println("Only advancing complete node"); } else if (1 - cprobs[completeIndex] > probMass) { //just incomplete advances setIncomplete(newNode); newParse1.addProb(StrictMath.log(1 - cprobs[completeIndex])); if (debugOn) System.out.println("Only advancing incomplete node"); } else { //both complete and incomplete advance if (debugOn) System.out.println("Advancing both complete and incomplete nodes"); setComplete(newNode); newParse1.addProb(StrictMath.log(cprobs[completeIndex])); Parse newParse2 = (Parse) p.clone(); Parse newNode2 = new Parse(p.getText(),advanceNode.getSpan(),tag,bprob,advanceNode.getHead()); newParse2.insert(newNode2); newParse2.addProb(StrictMath.log(bprob)); newParsesList.add(newParse2); newParse2.addProb(StrictMath.log(1 - cprobs[completeIndex])); setIncomplete(newNode2); //set incomplete for non-clone } } else { if (debugOn) System.out.println("building " + tag + " " + bprob); } } } } //advance attaches if (doneProb > q) { Parse newParse1 = (Parse) p.clone(); //clone parse //mark nodes as built if (checkComplete) { if (isComplete(advanceNode)) { //replace constituent being labeled to create new derivation newParse1.setChild(originalAdvanceIndex,Parser.BUILT + "." + Parser.COMPLETE); } else { //replace constituent being labeled to create new derivation newParse1.setChild(originalAdvanceIndex,Parser.BUILT + "." + Parser.INCOMPLETE); } } else { //replace constituent being labeled to create new derivation newParse1.setChild(originalAdvanceIndex,Parser.BUILT); } newParse1.addProb(StrictMath.log(doneProb)); if (advanceNodeIndex == 0) { //no attach if first node. newParsesList.add(newParse1); } else { List rf = getRightFrontier(p,punctSet); for (int fi = 0,fs = rf.size(); fi < fs; fi++) { Parse fn = rf.get(fi); attachModel.eval(attachContextGenerator.getContext(children, advanceNodeIndex, rf, fi), aprobs); if (debugOn) { // List cs = java.util.Arrays.asList(attachContextGenerator.getContext(children, // advanceNodeIndex,rf,fi,punctSet)); System.out.println("Frontier node(" + fi + "): " + fn.getType() + "." + fn.getLabel() + " " + fn + " <- " + advanceNode.getType() + " " + advanceNode + " d=" + aprobs[daughterAttachIndex] + " s=" + aprobs[sisterAttachIndex] + " "); } for (int attachment : attachments) { double prob = aprobs[attachment]; //should we try an attach if p > threshold and // if !checkComplete then prevent daughter attaching to chunk // if checkComplete then prevent daughter attacing to complete node or // sister attaching to an incomplete node if (prob > q && ( (!checkComplete && (attachment != daughterAttachIndex || !isComplete(fn))) || (checkComplete && ((attachment == daughterAttachIndex && !isComplete(fn)) || (attachment == sisterAttachIndex && isComplete(fn)))))) { Parse newParse2 = newParse1.cloneRoot(fn, originalZeroIndex); Parse[] newKids = Parser.collapsePunctuation(newParse2.getChildren(), punctSet); //remove node from top level since were going to attach it (including punct) for (int ri = originalZeroIndex + 1; ri <= originalAdvanceIndex; ri++) { //System.out.println(at"-removing "+(originalZeroIndex+1)+" " // +newParse2.getChildren()[originalZeroIndex+1]); newParse2.remove(originalZeroIndex + 1); } List crf = getRightFrontier(newParse2, punctSet); Parse updatedNode; if (attachment == daughterAttachIndex) { //attach daughter updatedNode = crf.get(fi); updatedNode.add(advanceNode, headRules); } else { //attach sister Parse psite; if (fi + 1 < crf.size()) { psite = crf.get(fi + 1); updatedNode = psite.adjoin(advanceNode, headRules); } else { psite = newParse2; updatedNode = psite.adjoinRoot(advanceNode, headRules, originalZeroIndex); newKids[0] = updatedNode; } } //update spans affected by attachment for (int ni = fi + 1; ni < crf.size(); ni++) { Parse node = crf.get(ni); node.updateSpan(); } //if (debugOn) {System.out.print(ai+"-result: ");newParse2.show();System.out.println();} newParse2.addProb(StrictMath.log(prob)); newParsesList.add(newParse2); if (checkComplete) { cprobs = checkModel.eval( checkContextGenerator.getContext(updatedNode, newKids, advanceNodeIndex, true)); if (cprobs[completeIndex] > probMass) { setComplete(updatedNode); newParse2.addProb(StrictMath.log(cprobs[completeIndex])); if (debugOn) System.out.println("Only advancing complete node"); } else if (1 - cprobs[completeIndex] > probMass) { setIncomplete(updatedNode); newParse2.addProb(StrictMath.log(1 - cprobs[completeIndex])); if (debugOn) System.out.println("Only advancing incomplete node"); } else { setComplete(updatedNode); Parse newParse3 = newParse2.cloneRoot(updatedNode, originalZeroIndex); newParse3.addProb(StrictMath.log(cprobs[completeIndex])); newParsesList.add(newParse3); setIncomplete(updatedNode); newParse2.addProb(StrictMath.log(1 - cprobs[completeIndex])); if (debugOn) System.out.println("Advancing both complete and incomplete nodes; c=" + cprobs[completeIndex]); } } } else { if (debugOn) System.out.println("Skipping " + fn.getType() + "." + fn.getLabel() + " " + fn + " daughter=" + (attachment == daughterAttachIndex) + " complete=" + isComplete(fn) + " prob=" + prob); } } if (checkComplete && !isComplete(fn)) { if (debugOn) System.out.println("Stopping at incomplete node(" + fi + "): " + fn.getType() + "." + fn.getLabel() + " " + fn); break; } } } } Parse[] newParses = new Parse[newParsesList.size()]; newParsesList.toArray(newParses); return newParses; } @Override protected void advanceTop(Parse p) { p.setType(TOP_NODE); } public static ParserModel train(String languageCode, ObjectStream parseSamples, HeadRules rules, TrainingParameters mlParams) throws IOException { Map manifestInfoEntries = new HashMap<>(); System.err.println("Building dictionary"); Dictionary mdict = buildDictionary(parseSamples, rules, mlParams); parseSamples.reset(); // tag POSModel posModel = POSTaggerME.train(languageCode, new PosSampleStream( parseSamples), mlParams.getParameters("tagger"), new POSTaggerFactory()); parseSamples.reset(); // chunk ChunkerModel chunkModel = ChunkerME.train(languageCode, new ChunkSampleStream( parseSamples), mlParams.getParameters("chunker"), new ParserChunkerFactory()); parseSamples.reset(); // build System.err.println("Training builder"); ObjectStream bes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.BUILD, mdict); Map buildReportMap = new HashMap<>(); EventTrainer buildTrainer = TrainerFactory.getEventTrainer( mlParams.getParameters("build"), buildReportMap); MaxentModel buildModel = buildTrainer.train(bes); opennlp.tools.parser.chunking.Parser.mergeReportIntoManifest( manifestInfoEntries, buildReportMap, "build"); parseSamples.reset(); // check System.err.println("Training checker"); ObjectStream kes = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.CHECK); Map checkReportMap = new HashMap<>(); EventTrainer checkTrainer = TrainerFactory.getEventTrainer( mlParams.getParameters("check"), checkReportMap); MaxentModel checkModel = checkTrainer.train(kes); opennlp.tools.parser.chunking.Parser.mergeReportIntoManifest( manifestInfoEntries, checkReportMap, "check"); parseSamples.reset(); // attach System.err.println("Training attacher"); ObjectStream attachEvents = new ParserEventStream(parseSamples, rules, ParserEventTypeEnum.ATTACH); Map attachReportMap = new HashMap<>(); EventTrainer attachTrainer = TrainerFactory.getEventTrainer( mlParams.getParameters("attach"), attachReportMap); MaxentModel attachModel = attachTrainer.train(attachEvents); opennlp.tools.parser.chunking.Parser.mergeReportIntoManifest( manifestInfoEntries, attachReportMap, "attach"); // TODO: Remove cast for HeadRules return new ParserModel(languageCode, buildModel, checkModel, attachModel, posModel, chunkModel, rules, ParserType.TREEINSERT, manifestInfoEntries); } public static ParserModel train(String languageCode, ObjectStream parseSamples, HeadRules rules, int iterations, int cut) throws IOException { TrainingParameters params = new TrainingParameters(); params.put("dict", TrainingParameters.CUTOFF_PARAM, cut); params.put("tagger", TrainingParameters.CUTOFF_PARAM, cut); params.put("tagger", TrainingParameters.ITERATIONS_PARAM, iterations); params.put("chunker", TrainingParameters.CUTOFF_PARAM, cut); params.put("chunker", TrainingParameters.ITERATIONS_PARAM, iterations); params.put("check", TrainingParameters.CUTOFF_PARAM, cut); params.put("check", TrainingParameters.ITERATIONS_PARAM, iterations); params.put("build", TrainingParameters.CUTOFF_PARAM, cut); params.put("build", TrainingParameters.ITERATIONS_PARAM, iterations); return train(languageCode, parseSamples, rules, params); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_treeinsert0100644 0000000 0000000 00000000165 14135770370 032726 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/ParserEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/ParserEventStre0100664 0001750 0001750 00000035206 14135770370 034251 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.treeinsert; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.Event; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.AbstractParserEventStream; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class ParserEventStream extends AbstractParserEventStream { protected AttachContextGenerator attachContextGenerator; protected BuildContextGenerator buildContextGenerator; protected CheckContextGenerator checkContextGenerator; private static final boolean debug = false; public ParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype, Dictionary dict) { super(d, rules, etype, dict); } @Override public void init() { buildContextGenerator = new BuildContextGenerator(); attachContextGenerator = new AttachContextGenerator(punctSet); checkContextGenerator = new CheckContextGenerator(punctSet); } public ParserEventStream(ObjectStream d, HeadRules rules, ParserEventTypeEnum etype) { super(d, rules, etype); } /** * Returns a set of parent nodes which consist of the immediate * parent of the specified node and any of its parent which * share the same syntactic type. * @param node The node whose parents are to be returned. * @return a set of parent nodes. */ private Map getNonAdjoinedParent(Parse node) { Map parents = new HashMap<>(); Parse parent = node.getParent(); int index = indexOf(node,parent); parents.put(parent, index); while (parent.getType().equals(node.getType())) { node = parent; parent = parent.getParent(); index = indexOf(node,parent); parents.put(parent, index); } return parents; } private int indexOf(Parse child, Parse parent) { Parse[] kids = Parser.collapsePunctuation(parent.getChildren(),punctSet); for (int ki = 0; ki < kids.length; ki++) { if (child == kids[ki]) { return ki; } } return -1; } private int nonPunctChildCount(Parse node) { return Parser.collapsePunctuation(node.getChildren(),punctSet).length; } /* private Set getNonAdjoinedParent(Parse node) { Set parents = new HashSet(); Parse parent = node.getParent(); do { parents.add(parent); parent = parent.getParent(); } while(parent.getType().equals(node.getType())); return parents; } */ @Override protected boolean lastChild(Parse child, Parse parent) { boolean lc = super.lastChild(child, parent); while (!lc) { Parse cp = child.getParent(); if (cp != parent && cp.getType().equals(child.getType())) { lc = super.lastChild(cp,parent); child = cp; } else { break; } } return lc; } @Override protected void addParseEvents(List parseEvents, Parse[] chunks) { /* Frontier nodes built from node in a completed parse. Specifically, * they have all their children regardless of the stage of parsing.*/ List rightFrontier = new ArrayList<>(); List builtNodes = new ArrayList<>(); /* Nodes which characterize what the parse looks like to the parser as its being built. * Specifically, these nodes don't have all their children attached like the parents of * the chunk nodes do.*/ Parse[] currentChunks = new Parse[chunks.length]; for (int ci = 0; ci < chunks.length; ci++) { currentChunks[ci] = (Parse) chunks[ci].clone(); currentChunks[ci].setPrevPunctuation(chunks[ci].getPreviousPunctuationSet()); currentChunks[ci].setNextPunctuation(chunks[ci].getNextPunctuationSet()); currentChunks[ci].setLabel(Parser.COMPLETE); chunks[ci].setLabel(Parser.COMPLETE); } for (int ci = 0; ci < chunks.length; ci++) { //System.err.println("parserEventStream.addParseEvents: chunks="+Arrays.asList(chunks)); Parse parent = chunks[ci].getParent(); Parse prevParent = chunks[ci]; int off = 0; //build un-built parents if (!chunks[ci].isPosTag()) { builtNodes.add(off++,chunks[ci]); } //perform build stages while (!parent.getType().equals(AbstractBottomUpParser.TOP_NODE) && parent.getLabel() == null) { if (!prevParent.getType().equals(parent.getType())) { //build level if (debug) System.err.println("Build: " + parent.getType() + " for: " + currentChunks[ci]); if (etype == ParserEventTypeEnum.BUILD) { parseEvents.add(new Event(parent.getType(), buildContextGenerator.getContext(currentChunks, ci))); } builtNodes.add(off++,parent); Parse newParent = new Parse(currentChunks[ci].getText(), currentChunks[ci].getSpan(),parent.getType(),1,0); newParent.add(currentChunks[ci],rules); newParent.setPrevPunctuation(currentChunks[ci].getPreviousPunctuationSet()); newParent.setNextPunctuation(currentChunks[ci].getNextPunctuationSet()); currentChunks[ci].setParent(newParent); currentChunks[ci] = newParent; newParent.setLabel(Parser.BUILT); //see if chunk is complete if (lastChild(chunks[ci], parent)) { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.COMPLETE, checkContextGenerator.getContext(currentChunks[ci],currentChunks, ci,false))); } currentChunks[ci].setLabel(Parser.COMPLETE); parent.setLabel(Parser.COMPLETE); } else { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.INCOMPLETE, checkContextGenerator.getContext(currentChunks[ci],currentChunks,ci,false))); } currentChunks[ci].setLabel(Parser.INCOMPLETE); parent.setLabel(Parser.COMPLETE); } chunks[ci] = parent; //System.err.println("build: "+newParent+" for "+parent); } //TODO: Consider whether we need to set this label or train parses at all. parent.setLabel(Parser.BUILT); prevParent = parent; parent = parent.getParent(); } //decide to attach if (etype == ParserEventTypeEnum.BUILD) { parseEvents.add(new Event(Parser.DONE, buildContextGenerator.getContext(currentChunks, ci))); } //attach node String attachType = null; /* Node selected for attachment. */ Parse attachNode = null; int attachNodeIndex = -1; if (ci == 0) { Parse top = new Parse(currentChunks[ci].getText(), new Span(0,currentChunks[ci].getText().length()),AbstractBottomUpParser.TOP_NODE,1,0); top.insert(currentChunks[ci]); } else { /* Right frontier consisting of partially-built nodes based on current state of the parse.*/ List currentRightFrontier = Parser.getRightFrontier(currentChunks[0],punctSet); if (currentRightFrontier.size() != rightFrontier.size()) { System.err.println("fontiers mis-aligned: " + currentRightFrontier.size() + " != " + rightFrontier.size() + " " + currentRightFrontier + " " + rightFrontier); System.exit(1); } Map parents = getNonAdjoinedParent(chunks[ci]); //try daughters first. for (int cfi = 0; cfi < currentRightFrontier.size(); cfi++) { Parse frontierNode = rightFrontier.get(cfi); Parse cfn = currentRightFrontier.get(cfi); if (!Parser.checkComplete || !Parser.COMPLETE.equals(cfn.getLabel())) { Integer i = parents.get(frontierNode); if (debug) System.err.println("Looking at attachment site (" + cfi + "): " + cfn.getType() + " ci=" + i + " cs=" + nonPunctChildCount(cfn) + ", " + cfn + " :for " + currentChunks[ci].getType() + " " + currentChunks[ci] + " -> " + parents); if (attachNode == null && i != null && i == nonPunctChildCount(cfn)) { attachType = Parser.ATTACH_DAUGHTER; attachNodeIndex = cfi; attachNode = cfn; if (etype == ParserEventTypeEnum.ATTACH) { parseEvents.add(new Event(attachType, attachContextGenerator.getContext(currentChunks, ci, currentRightFrontier, attachNodeIndex))); } //System.err.println("daughter attach "+attachNode+" at "+fi); } } else { if (debug) System.err.println("Skipping (" + cfi + "): " + cfn.getType() + "," + cfn.getPreviousPunctuationSet() + " " + cfn + " :for " + currentChunks[ci].getType() + " " + currentChunks[ci] + " -> " + parents); } // Can't attach past first incomplete node. if (Parser.checkComplete && cfn.getLabel().equals(Parser.INCOMPLETE)) { if (debug) System.err.println("breaking on incomplete:" + cfn.getType() + " " + cfn); break; } } //try sisters, and generate non-attach events. for (int cfi = 0; cfi < currentRightFrontier.size(); cfi++) { Parse frontierNode = rightFrontier.get(cfi); Parse cfn = currentRightFrontier.get(cfi); if (attachNode == null && parents.containsKey(frontierNode.getParent()) && frontierNode.getType().equals(frontierNode.getParent().getType()) ) { //&& frontierNode.getParent().getLabel() == null) { attachType = Parser.ATTACH_SISTER; attachNode = cfn; attachNodeIndex = cfi; if (etype == ParserEventTypeEnum.ATTACH) { parseEvents.add(new Event(Parser.ATTACH_SISTER, attachContextGenerator.getContext(currentChunks, ci, currentRightFrontier, cfi))); } chunks[ci].getParent().setLabel(Parser.BUILT); //System.err.println("in search sister attach "+attachNode+" at "+cfi); } else if (cfi == attachNodeIndex) { //skip over previously attached daughter. } else { if (etype == ParserEventTypeEnum.ATTACH) { parseEvents.add(new Event(Parser.NON_ATTACH, attachContextGenerator.getContext(currentChunks, ci, currentRightFrontier, cfi))); } } //Can't attach past first incomplete node. if (Parser.checkComplete && cfn.getLabel().equals(Parser.INCOMPLETE)) { if (debug) System.err.println("breaking on incomplete:" + cfn.getType() + " " + cfn); break; } } //attach Node if (attachNode != null) { if (Parser.ATTACH_DAUGHTER.equals(attachType)) { Parse daughter = currentChunks[ci]; if (debug) System.err.println("daughter attach a=" + attachNode.getType() + ":" + attachNode + " d=" + daughter + " com=" + lastChild(chunks[ci], rightFrontier.get(attachNodeIndex))); attachNode.add(daughter,rules); daughter.setParent(attachNode); if (lastChild(chunks[ci], rightFrontier.get(attachNodeIndex))) { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.COMPLETE, checkContextGenerator.getContext(attachNode,currentChunks,ci,true))); } attachNode.setLabel(Parser.COMPLETE); } else { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.INCOMPLETE, checkContextGenerator.getContext(attachNode,currentChunks,ci,true))); } } } else if (Parser.ATTACH_SISTER.equals(attachType)) { Parse frontierNode = rightFrontier.get(attachNodeIndex); rightFrontier.set(attachNodeIndex,frontierNode.getParent()); Parse sister = currentChunks[ci]; if (debug) System.err.println("sister attach a=" + attachNode.getType() + ":" + attachNode + " s=" + sister + " ap=" + attachNode.getParent() + " com=" + lastChild(chunks[ci], rightFrontier.get(attachNodeIndex))); Parse newParent = attachNode.getParent().adjoin(sister,rules); newParent.setParent(attachNode.getParent()); attachNode.setParent(newParent); sister.setParent(newParent); if (attachNode == currentChunks[0]) { currentChunks[0] = newParent; } if (lastChild(chunks[ci], rightFrontier.get(attachNodeIndex))) { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.COMPLETE, checkContextGenerator.getContext(newParent,currentChunks,ci,true))); } newParent.setLabel(Parser.COMPLETE); } else { if (etype == ParserEventTypeEnum.CHECK) { parseEvents.add(new Event(Parser.INCOMPLETE, checkContextGenerator.getContext(newParent,currentChunks,ci,true))); } newParent.setLabel(Parser.INCOMPLETE); } } //update right frontier for (int ni = 0; ni < attachNodeIndex; ni++) { //System.err.println("removing: "+rightFrontier.get(0)); rightFrontier.remove(0); } } else { //System.err.println("No attachment!"); throw new RuntimeException("No Attachment: " + chunks[ci]); } } rightFrontier.addAll(0,builtNodes); builtNodes.clear(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_ChunkConte0100644 0000000 0000000 00000000156 14135770370 032603 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ChunkContextGenerator.java0100664 0001750 0001750 00000012471 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.ArrayList; import java.util.List; import opennlp.tools.chunker.ChunkerContextGenerator; import opennlp.tools.util.Cache; import opennlp.tools.util.TokenTag; /** * Creates predivtive context for the pre-chunking phases of parsing. */ public class ChunkContextGenerator implements ChunkerContextGenerator { private static final String EOS = "eos"; private Cache contextsCache; private Object wordsKey; public ChunkContextGenerator() { this(0); } public ChunkContextGenerator(int cacheSize) { super(); if (cacheSize > 0) { contextsCache = new Cache<>(cacheSize); } } @Deprecated public String[] getContext(Object o) { Object[] data = (Object[]) o; return getContext((Integer) data[0], (String[]) data[1], (String[]) data[2], (String[]) data[3]); } @Deprecated public String[] getContext(int i, String[] words, String[] prevDecisions, Object[] ac) { return getContext(i,words,(String[]) ac[0],prevDecisions); } public String[] getContext(int i, String[] words, String[] tags, String[] preds) { List features = new ArrayList<>(19); int x_2 = i - 2; int x_1 = i - 1; int x2 = i + 2; int x1 = i + 1; String w_2,w_1,w0,w1,w2; String t_2,t_1,t0,t1,t2; String p_2,p_1; // chunkandpostag(-2) if (x_2 >= 0) { t_2 = tags[x_2]; p_2 = preds[x_2]; w_2 = words[x_2]; } else { t_2 = EOS; p_2 = EOS; w_2 = EOS; } // chunkandpostag(-1) if (x_1 >= 0) { t_1 = tags[x_1]; p_1 = preds[x_1]; w_1 = words[x_1]; } else { t_1 = EOS; p_1 = EOS; w_1 = EOS; } // chunkandpostag(0) t0 = tags[i]; w0 = words[i]; // chunkandpostag(1) if (x1 < tags.length) { t1 = tags[x1]; w1 = words[x1]; } else { t1 = EOS; w1 = EOS; } // chunkandpostag(2) if (x2 < tags.length) { t2 = tags[x2]; w2 = words[x2]; } else { t2 = EOS; w2 = EOS; } String cacheKey = i + t_2 + t1 + t0 + t1 + t2 + p_2 + p_1; if (contextsCache != null) { if (wordsKey == words) { String[] contexts = contextsCache.get(cacheKey); if (contexts != null) { return contexts; } } else { contextsCache.clear(); wordsKey = words; } } String ct_2 = chunkandpostag(-2, w_2, t_2, p_2); String ctbo_2 = chunkandpostagbo(-2, t_2, p_2); String ct_1 = chunkandpostag(-1, w_1, t_1, p_1); String ctbo_1 = chunkandpostagbo(-1, t_1, p_1); String ct0 = chunkandpostag(0, w0, t0, null); String ctbo0 = chunkandpostagbo(0, t0, null); String ct1 = chunkandpostag(1, w1, t1, null); String ctbo1 = chunkandpostagbo(1, t1, null); String ct2 = chunkandpostag(2, w2, t2, null); String ctbo2 = chunkandpostagbo(2, t2, null); features.add("default"); features.add(ct_2); features.add(ctbo_2); features.add(ct_1); features.add(ctbo_1); features.add(ct0); features.add(ctbo0); features.add(ct1); features.add(ctbo1); features.add(ct2); features.add(ctbo2); //chunkandpostag(-1,0) features.add(ct_1 + "," + ct0); features.add(ctbo_1 + "," + ct0); features.add(ct_1 + "," + ctbo0); features.add(ctbo_1 + "," + ctbo0); //chunkandpostag(0,1) features.add(ct0 + "," + ct1); features.add(ctbo0 + "," + ct1); features.add(ct0 + "," + ctbo1); features.add(ctbo0 + "," + ctbo1); String[] contexts = features.toArray(new String[features.size()]); if (contextsCache != null) { contextsCache.put(cacheKey,contexts); } return contexts; } private String chunkandpostag(int i, String tok, String tag, String chunk) { StringBuilder feat = new StringBuilder(20); feat.append(i).append("=").append(tok).append("|").append(tag); if (i < 0) { feat.append("|").append(chunk); } return feat.toString(); } private String chunkandpostagbo(int i, String tag, String chunk) { StringBuilder feat = new StringBuilder(20); feat.append(i).append("*=").append(tag); if (i < 0) { feat.append("|").append(chunk); } return feat.toString(); } @Override public String[] getContext(int index, TokenTag[] sequence, String[] priorDecisions, Object[] additionalContext) { String[] token = TokenTag.extractTokens(sequence); String[] tags = TokenTag.extractTags(sequence); return getContext(index, token, tags, priorDecisions); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_ParserEval0100644 0000000 0000000 00000000160 14135770370 032601 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluationMonitor.ja0100664 0001750 0001750 00000001702 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import opennlp.tools.util.eval.EvaluationMonitor; public interface ParserEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_AbstractBo0100644 0000000 0000000 00000000157 14135770370 032567 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.jav0100664 0001750 0001750 00000051406 14135770370 034162 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import opennlp.tools.chunker.Chunker; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ngram.NGramModel; import opennlp.tools.parser.chunking.ParserEventStream; import opennlp.tools.postag.POSTagger; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.Span; import opennlp.tools.util.StringList; import opennlp.tools.util.TrainingParameters; /** * Abstract class which contains code to tag and chunk parses for bottom up parsing and * leaves implementation of advancing parses and completing parses to extend class. *

* Note:
The nodes within the returned parses are shared with other parses * and therefore their parent node references will not be consistent with their child * node reference. {@link #setParents setParents} can be used to make the parents consistent * with a particular parse, but subsequent calls to setParents can invalidate * the results of earlier calls.
*/ public abstract class AbstractBottomUpParser implements Parser { /** * The maximum number of parses advanced from all preceding * parses at each derivation step. */ protected int M; /** * The maximum number of parses to advance from a single preceding parse. */ protected int K; /** * The minimum total probability mass of advanced outcomes. */ protected double Q; /** * The default beam size used if no beam size is given. */ public static final int defaultBeamSize = 20; /** * The default amount of probability mass required of advanced outcomes. */ public static final double defaultAdvancePercentage = 0.95; /** * Completed parses. */ private SortedSet completeParses; /** * Incomplete parses which will be advanced. */ private SortedSet odh; /** * Incomplete parses which have been advanced. */ private SortedSet ndh; /** * The head rules for the parser. */ protected HeadRules headRules; /** * The set strings which are considered punctuation for the parser. * Punctuation is not attached, but floats to the top of the parse as attachment * decisions are made about its non-punctuation sister nodes. */ protected Set punctSet; /** * The label for the top node. */ public static final String TOP_NODE = "TOP"; /** * The label for the top if an incomplete node. */ public static final String INC_NODE = "INC"; /** * The label for a token node. */ public static final String TOK_NODE = "TK"; /** * The integer 0. */ public static final Integer ZERO = 0; /** * Prefix for outcomes starting a constituent. */ public static final String START = "S-"; /** * Prefix for outcomes continuing a constituent. */ public static final String CONT = "C-"; /** * Outcome for token which is not contained in a basal constituent. */ public static final String OTHER = "O"; /** * Outcome used when a constituent is complete. */ public static final String COMPLETE = "c"; /** * Outcome used when a constituent is incomplete. */ public static final String INCOMPLETE = "i"; /** * The pos-tagger that the parser uses. */ protected POSTagger tagger; /** * The chunker that the parser uses to chunk non-recursive structures. */ protected Chunker chunker; /** * Specifies whether failed parses should be reported to standard error. */ protected boolean reportFailedParse; /** * Specifies whether a derivation string should be created during parsing. * This is useful for debugging. */ protected boolean createDerivationString = false; /** * Turns debug print on or off. */ protected boolean debugOn = false; public AbstractBottomUpParser(POSTagger tagger, Chunker chunker, HeadRules headRules, int beamSize, double advancePercentage) { this.tagger = tagger; this.chunker = chunker; this.M = beamSize; this.K = beamSize; this.Q = advancePercentage; reportFailedParse = true; this.headRules = headRules; this.punctSet = headRules.getPunctuationTags(); odh = new TreeSet<>(); ndh = new TreeSet<>(); completeParses = new TreeSet<>(); } /** * Specifies whether the parser should report when it was unable to find a parse for * a particular sentence. * @param errorReporting If true then un-parsed sentences are reported, false otherwise. */ public void setErrorReporting(boolean errorReporting) { this.reportFailedParse = errorReporting; } /** * Assigns parent references for the specified parse so that they * are consistent with the children references. * @param p The parse whose parent references need to be assigned. */ public static void setParents(Parse p) { Parse[] children = p.getChildren(); for (Parse child : children) { child.setParent(p); setParents(child); } } /** * Removes the punctuation from the specified set of chunks, adds it to the parses * adjacent to the punctuation is specified, and returns a new array of parses with * the punctuation removed. * * @param chunks A set of parses. * @param punctSet The set of punctuation which is to be removed. * @return An array of parses which is a subset of chunks with punctuation removed. */ public static Parse[] collapsePunctuation(Parse[] chunks, Set punctSet) { List collapsedParses = new ArrayList<>(chunks.length); int lastNonPunct = -1; int nextNonPunct; for (int ci = 0, cn = chunks.length; ci < cn; ci++) { if (punctSet.contains(chunks[ci].getType())) { if (lastNonPunct >= 0) { chunks[lastNonPunct].addNextPunctuation(chunks[ci]); } for (nextNonPunct = ci + 1; nextNonPunct < cn; nextNonPunct++) { if (!punctSet.contains(chunks[nextNonPunct].getType())) { break; } } if (nextNonPunct < cn) { chunks[nextNonPunct].addPreviousPunctuation(chunks[ci]); } } else { collapsedParses.add(chunks[ci]); lastNonPunct = ci; } } if (collapsedParses.size() == chunks.length) { return chunks; } //System.err.println("collapsedPunctuation: collapsedParses"+collapsedParses); return collapsedParses.toArray(new Parse[collapsedParses.size()]); } /** * Advances the specified parse and returns the an array advanced parses whose * probability accounts for more than the specified amount of probability mass. * * @param p The parse to advance. * @param probMass The amount of probability mass that should be accounted for * by the advanced parses. */ protected abstract Parse[] advanceParses(final Parse p, double probMass); /** * Adds the "TOP" node to the specified parse. * @param p The complete parse. */ protected abstract void advanceTop(Parse p); public Parse[] parse(Parse tokens, int numParses) { if (createDerivationString) tokens.setDerivation(new StringBuffer(100)); odh.clear(); ndh.clear(); completeParses.clear(); int derivationStage = 0; //derivation length int maxDerivationLength = 2 * tokens.getChildCount() + 3; odh.add(tokens); Parse guess = null; double minComplete = 2; double bestComplete = -100000; //approximating -infinity/0 in ln domain while (odh.size() > 0 && (completeParses.size() < M || (odh.first()).getProb() < minComplete) && derivationStage < maxDerivationLength) { ndh = new TreeSet<>(); int derivationRank = 0; for (Iterator pi = odh.iterator(); pi.hasNext() && derivationRank < K; derivationRank++) { // foreach derivation Parse tp = pi.next(); //TODO: Need to look at this for K-best parsing cases /* //this parse and the ones which follow will never win, stop advancing. if (tp.getProb() < bestComplete) { break; } */ if (guess == null && derivationStage == 2) { guess = tp; } if (debugOn) { System.out.print(derivationStage + " " + derivationRank + " " + tp.getProb()); tp.show(); System.out.println(); } Parse[] nd; if (0 == derivationStage) { nd = advanceTags(tp); } else if (1 == derivationStage) { if (ndh.size() < K) { //System.err.println("advancing ts "+j+" "+ndh.size()+" < "+K); nd = advanceChunks(tp,bestComplete); } else { //System.err.println("advancing ts "+j+" prob="+((Parse) ndh.last()).getProb()); nd = advanceChunks(tp,(ndh.last()).getProb()); } } else { // i > 1 nd = advanceParses(tp, Q); } if (nd != null) { for (Parse parse : nd) { if (parse.complete()) { advanceTop(parse); if (parse.getProb() > bestComplete) { bestComplete = parse.getProb(); } if (parse.getProb() < minComplete) { minComplete = parse.getProb(); } completeParses.add(parse); } else { ndh.add(parse); } } } else { //if (reportFailedParse) { // System.err.println("Couldn't advance parse " + derivationStage // + " stage " + derivationRank + "!\n"); //} advanceTop(tp); completeParses.add(tp); } } derivationStage++; odh = ndh; } if (completeParses.size() == 0) { // if (reportFailedParse) System.err.println("Couldn't find parse for: " + tokens); //Parse r = (Parse) odh.first(); //r.show(); //System.out.println(); return new Parse[] {guess}; } else if (numParses == 1) { return new Parse[] {completeParses.first()}; } else { List topParses = new ArrayList<>(numParses); while (!completeParses.isEmpty() && topParses.size() < numParses) { Parse tp = completeParses.first(); completeParses.remove(tp); topParses.add(tp); //parses.remove(tp); } return topParses.toArray(new Parse[topParses.size()]); } } public Parse parse(Parse tokens) { if (tokens.getChildCount() > 0) { Parse p = parse(tokens,1)[0]; setParents(p); return p; } else { return tokens; } } /** * Returns the top chunk sequences for the specified parse. * @param p A pos-tag assigned parse. * @param minChunkScore A minimum score below which chunks should not be advanced. * @return The top chunk assignments to the specified parse. */ protected Parse[] advanceChunks(final Parse p, double minChunkScore) { // chunk Parse[] children = p.getChildren(); String[] words = new String[children.length]; String[] ptags = new String[words.length]; double[] probs = new double[words.length]; for (int i = 0, il = children.length; i < il; i++) { Parse sp = children[i]; words[i] = sp.getHead().getCoveredText(); ptags[i] = sp.getType(); } //System.err.println("adjusted mcs = "+(minChunkScore-p.getProb())); Sequence[] cs = chunker.topKSequences(words, ptags,minChunkScore - p.getProb()); Parse[] newParses = new Parse[cs.length]; for (int si = 0, sl = cs.length; si < sl; si++) { newParses[si] = (Parse) p.clone(); //copies top level if (createDerivationString) newParses[si].getDerivation().append(si).append("."); String[] tags = cs[si].getOutcomes().toArray(new String[words.length]); cs[si].getProbs(probs); int start = -1; int end = 0; String type = null; //System.err.print("sequence "+si+" "); for (int j = 0; j <= tags.length; j++) { // if (j != tags.length) {System.err.println(words[j]+" " // +ptags[j]+" "+tags[j]+" "+probs.get(j));} if (j != tags.length) { newParses[si].addProb(StrictMath.log(probs[j])); } // if continue just update end chunking tag don't use contTypeMap if (j != tags.length && tags[j].startsWith(CONT)) { end = j; } else { //make previous constituent if it exists if (type != null) { //System.err.println("inserting tag "+tags[j]); Parse p1 = p.getChildren()[start]; Parse p2 = p.getChildren()[end]; // System.err.println("Putting "+type+" at "+start+","+end+" for " // +j+" "+newParses[si].getProb()); Parse[] cons = new Parse[end - start + 1]; cons[0] = p1; //cons[0].label="Start-"+type; if (end - start != 0) { cons[end - start] = p2; //cons[end-start].label="Cont-"+type; for (int ci = 1; ci < end - start; ci++) { cons[ci] = p.getChildren()[ci + start]; //cons[ci].label="Cont-"+type; } } Parse chunk = new Parse(p1.getText(), new Span(p1.getSpan().getStart(), p2.getSpan().getEnd()), type, 1, headRules.getHead(cons, type)); chunk.isChunk(true); newParses[si].insert(chunk); } if (j != tags.length) { //update for new constituent if (tags[j].startsWith(START)) { // don't use startTypeMap these are chunk tags type = tags[j].substring(START.length()); start = j; end = j; } else { // other type = null; } } } } //newParses[si].show();System.out.println(); } return newParses; } /** * Advances the parse by assigning it POS tags and returns multiple tag sequences. * @param p The parse to be tagged. * @return Parses with different POS-tag sequence assignments. */ protected Parse[] advanceTags(final Parse p) { Parse[] children = p.getChildren(); String[] words = new String[children.length]; double[] probs = new double[words.length]; for (int i = 0,il = children.length; i < il; i++) { words[i] = children[i].getCoveredText(); } Sequence[] ts = tagger.topKSequences(words); Parse[] newParses = new Parse[ts.length]; for (int i = 0; i < ts.length; i++) { String[] tags = ts[i].getOutcomes().toArray(new String[words.length]); ts[i].getProbs(probs); newParses[i] = (Parse) p.clone(); //copies top level if (createDerivationString) newParses[i].getDerivation().append(i).append("."); for (int j = 0; j < words.length; j++) { Parse word = children[j]; //System.err.println("inserting tag "+tags[j]); double prob = probs[j]; newParses[i].insert(new Parse(word.getText(), word.getSpan(), tags[j], prob,j)); newParses[i].addProb(StrictMath.log(prob)); } } return newParses; } /** * Determines the mapping between the specified index into the specified parses without punctuation to * the corresponding index into the specified parses. * @param index An index into the parses without punctuation. * @param nonPunctParses The parses without punctuation. * @param parses The parses wit punctuation. * @return An index into the specified parses which corresponds to the same node the specified index * into the parses with punctuation. */ protected int mapParseIndex(int index, Parse[] nonPunctParses, Parse[] parses) { int parseIndex = index; while (parses[parseIndex] != nonPunctParses[index]) { parseIndex++; } return parseIndex; } private static boolean lastChild(Parse child, Parse parent, Set punctSet) { if (parent == null) { return false; } Parse[] kids = collapsePunctuation(parent.getChildren(), punctSet); return (kids[kids.length - 1] == child); } /** * Creates a n-gram dictionary from the specified data stream using the specified * head rule and specified cut-off. * * @param data The data stream of parses. * @param rules The head rules for the parses. * @param params can contain a cutoff, the minimum number of entries required for the * n-gram to be saved as part of the dictionary. * @return A dictionary object. */ public static Dictionary buildDictionary(ObjectStream data, HeadRules rules, TrainingParameters params) throws IOException { int cutoff = params.getIntParameter("dict", TrainingParameters.CUTOFF_PARAM, 5); NGramModel mdict = new NGramModel(); Parse p; while ((p = data.read()) != null) { p.updateHeads(rules); Parse[] pwords = p.getTagNodes(); String[] words = new String[pwords.length]; //add all uni-grams for (int wi = 0;wi < words.length; wi++) { words[wi] = pwords[wi].getCoveredText(); } mdict.add(new StringList(words), 1, 1); //add tri-grams and bi-grams for inital sequence Parse[] chunks = collapsePunctuation(ParserEventStream.getInitialChunks(p), rules.getPunctuationTags()); String[] cwords = new String[chunks.length]; for (int wi = 0; wi < cwords.length; wi++) { cwords[wi] = chunks[wi].getHead().getCoveredText(); } mdict.add(new StringList(cwords), 2, 3); //emulate reductions to produce additional n-grams int ci = 0; while (ci < chunks.length) { // System.err.println("chunks["+ci+"]="+chunks[ci].getHead().getCoveredText() // +" chunks.length="+chunks.length + " " + chunks[ci].getParent()); if (chunks[ci].getParent() == null) { chunks[ci].show(); } if (lastChild(chunks[ci], chunks[ci].getParent(),rules.getPunctuationTags())) { //perform reduce int reduceStart = ci; while (reduceStart >= 0 && chunks[reduceStart].getParent() == chunks[ci].getParent()) { reduceStart--; } reduceStart++; chunks = ParserEventStream.reduceChunks(chunks,ci,chunks[ci].getParent()); ci = reduceStart; if (chunks.length != 0) { String[] window = new String[5]; int wi = 0; if (ci - 2 >= 0) window[wi++] = chunks[ci - 2].getHead().getCoveredText(); if (ci - 1 >= 0) window[wi++] = chunks[ci - 1].getHead().getCoveredText(); window[wi++] = chunks[ci].getHead().getCoveredText(); if (ci + 1 < chunks.length) window[wi++] = chunks[ci + 1].getHead().getCoveredText(); if (ci + 2 < chunks.length) window[wi++] = chunks[ci + 2].getHead().getCoveredText(); if (wi < 5) { String[] subWindow = new String[wi]; System.arraycopy(window, 0, subWindow, 0, wi); window = subWindow; } if (window.length >= 3) { mdict.add(new StringList(window), 2, 3); } else if (window.length == 2) { mdict.add(new StringList(window), 2, 2); } } ci = reduceStart - 1; //ci will be incremented at end of loop } ci++; } } //System.err.println("gas,and="+mdict.getCount((new TokenList(new String[] {"gas","and"})))); mdict.cutoff(cutoff, Integer.MAX_VALUE); return mdict.toDictionary(true); } /** * Creates a n-gram dictionary from the specified data stream using the specified * head rule and specified cut-off. * * @param data The data stream of parses. * @param rules The head rules for the parses. * @param cutoff The minimum number of entries required for the n-gram to be * saved as part of the dictionary. * @return A dictionary object. */ public static Dictionary buildDictionary(ObjectStream data, HeadRules rules, int cutoff) throws IOException { TrainingParameters params = new TrainingParameters(); params.put("dict", TrainingParameters.CUTOFF_PARAM, cutoff); return buildDictionary(data, rules, params); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserFactory.java0100664 0001750 0001750 00000003126 14135770370 032471 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; public class ParserFactory { private ParserFactory() { } public static Parser create(ParserModel model, int beamSize, double advancePercentage) { if (ParserType.CHUNKING.equals(model.getParserType())) { return new opennlp.tools.parser.chunking.Parser(model, beamSize, advancePercentage); } else if (ParserType.TREEINSERT.equals(model.getParserType())) { return new opennlp.tools.parser.treeinsert.Parser(model, beamSize, advancePercentage); } else { throw new IllegalStateException("Unexpected ParserType: " + model.getParserType().name()); } } public static Parser create(ParserModel model) { return create(model, AbstractBottomUpParser.defaultBeamSize, AbstractBottomUpParser.defaultAdvancePercentage); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_AbstractCo0100644 0000000 0000000 00000000161 14135770370 032563 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractContextGenerator.j0100664 0001750 0001750 00000041734 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.Collection; import java.util.List; import java.util.Set; /** * Abstract class containing many of the methods used to generate contexts for parsing. */ public abstract class AbstractContextGenerator { protected static final String EOS = "eos"; protected boolean zeroBackOff; /** Set of punctuation to be used in generating features. */ protected Set punctSet; protected boolean useLabel; /** * Creates punctuation feature for the specified punctuation at the specified index * based on the punctuation mark. * @param punct The punctuation which is in context. * @param i The index of the punctuation with relative to the parse. * @return Punctuation feature for the specified parse and the specified punctuation at the specfied index. */ protected String punct(Parse punct, int i) { return String.valueOf(i) + "=" + punct.getCoveredText(); } /** * Creates punctuation feature for the specified punctuation at the specfied index * based on the punctuation's tag. * @param punct The punctuation which is in context. * @param i The index of the punctuation relative to the parse. * @return Punctuation feature for the specified parse and the specified punctuation at the specfied index. */ protected String punctbo(Parse punct, int i) { return String.valueOf(i) + "=" + punct.getType(); } protected String cons(Parse p, int i) { StringBuilder feat = new StringBuilder(20); feat.append(i).append("="); if (p != null) { if (useLabel && i < 0) { feat.append(p.getLabel()).append("|"); } feat.append(p.getType()).append("|").append(p.getHead().getCoveredText()); } else { feat.append(EOS); } return feat.toString(); } protected String consbo(Parse p, int i) { //cons back-off StringBuilder feat = new StringBuilder(20); feat.append(i).append("*="); if (p != null) { if (useLabel && i < 0) { feat.append(p.getLabel()).append("|"); } feat.append(p.getType()); } else { feat.append(EOS); } return feat.toString(); } /** * Generates a string representing the grammar rule production that the specified parse * is starting. The rule is of the form p.type -> c.children[0..n].type. * @param p The parse which stats teh production. * @param includePunctuation Whether punctuation should be included in the production. * @return a string representing the grammar rule production that the specified parse * is starting. */ protected String production(Parse p, boolean includePunctuation) { StringBuilder production = new StringBuilder(20); production.append(p.getType()).append("->"); Parse[] children = AbstractBottomUpParser.collapsePunctuation(p.getChildren(),punctSet); for (int ci = 0; ci < children.length; ci++) { production.append(children[ci].getType()); if (ci + 1 != children.length) { production.append(","); Collection nextPunct = children[ci].getNextPunctuationSet(); if (includePunctuation && nextPunct != null) { //TODO: make sure multiple punctuation comes out the same for (Parse punct : nextPunct) { production.append(punct.getType()).append(","); } } } } return production.toString(); } protected void cons2(List features, Cons c0, Cons c1, Collection punct1s, boolean bigram) { if (punct1s != null) { for (Parse p : punct1s) { String punctbo = punctbo(p, c1.index <= 0 ? c1.index - 1 : c1.index); //punctbo(1); features.add(punctbo); if (c0.index == 0) { //TODO look at removing case //cons(0)punctbo(1) if (c0.unigram) features.add(c0.cons + "," + punctbo); features.add(c0.consbo + "," + punctbo); } if (c1.index == 0) { //TODO look at removing case //punctbo(1)cons(1) if (c1.unigram) features.add(punctbo + "," + c1.cons); features.add(punctbo + "," + c1.consbo); } //cons(0)punctbo(1)cons(1) if (bigram) features.add(c0.cons + "," + punctbo + "," + c1.cons); if (c1.unigram) features.add(c0.consbo + "," + punctbo + "," + c1.cons); if (c0.unigram) features.add(c0.cons + "," + punctbo + "," + c1.consbo); features.add(c0.consbo + "," + punctbo + "," + c1.consbo); } } else { //cons(0),cons(1) if (bigram) features.add(c0.cons + "," + c1.cons); if (c1.unigram) features.add(c0.consbo + "," + c1.cons); if (c0.unigram) features.add(c0.cons + "," + c1.consbo); features.add(c0.consbo + "," + c1.consbo); } } /** * Creates cons features involving the 3 specified nodes and adds them to the specified feature list. * @param features The list of features. * @param c0 The first node. * @param c1 The second node. * @param c2 The third node. * @param punct1s The punctuation between the first and second node. * @param punct2s The punctuation between the second and third node. * @param trigram Specifies whether lexical tri-gram features between these nodes should be generated. * @param bigram1 Specifies whether lexical bi-gram features between the first and second * node should be generated. * @param bigram2 Specifies whether lexical bi-gram features between the second and third * node should be generated. */ protected void cons3(List features, Cons c0, Cons c1, Cons c2, Collection punct1s, Collection punct2s, boolean trigram, boolean bigram1, boolean bigram2) { // features.add("stage=cons(0),cons(1),cons(2)"); if (punct1s != null) { if (c0.index == -2) { for (Parse p : punct1s) { // String punct = punct(p,c1.index); String punctbo = punctbo(p, c1.index <= 0 ? c1.index - 1 : c1.index); //punct(-2) //TODO consider changing //features.add(punct); //punctbo(-2) features.add(punctbo); } } } if (punct2s != null) { if (c2.index == 2) { for (Parse p : punct2s) { // String punct = punct(p,c2.index); String punctbo = punctbo(p, c2.index); //punct(2) //TODO consider changing //features.add(punct); //punctbo(2) features.add(punctbo); } } if (punct1s != null) { //cons(0),punctbo(1),cons(1),punctbo(2),cons(2) for (Parse punct2 : punct2s) { String punctbo2 = punctbo(punct2, c2.index <= 0 ? c2.index - 1 : c2.index); for (Parse punct1 : punct1s) { String punctbo1 = punctbo(punct1, c1.index <= 0 ? c1.index - 1 : c1.index); if (trigram) features.add(c0.cons + "," + punctbo1 + "," + c1.cons + "," + punctbo2 + "," + c2.cons); if (bigram2) features.add(c0.consbo + "," + punctbo1 + "," + c1.cons + "," + punctbo2 + "," + c2.cons); if (c0.unigram && c2.unigram) features.add(c0.cons + "," + punctbo1 + "," + c1.consbo + "," + punctbo2 + "," + c2.cons); if (bigram1) features.add(c0.cons + "," + punctbo1 + "," + c1.cons + "," + punctbo2 + "," + c2.consbo); if (c2.unigram) features.add(c0.consbo + "," + punctbo1 + "," + c1.consbo + "," + punctbo2 + "," + c2.cons); if (c1.unigram) features.add(c0.consbo + "," + punctbo1 + "," + c1.cons + "," + punctbo2 + "," + c2.consbo); if (c0.unigram) features.add(c0.cons + "," + punctbo1 + "," + c1.consbo + "," + punctbo2 + "," + c2.consbo); features.add(c0.consbo + "," + punctbo1 + "," + c1.consbo + "," + punctbo2 + "," + c2.consbo); if (zeroBackOff) { if (bigram1) features.add(c0.cons + "," + punctbo1 + "," + c1.cons + "," + punctbo2); if (c1.unigram) features.add(c0.consbo + "," + punctbo1 + "," + c1.cons + "," + punctbo2); if (c0.unigram) features.add(c0.cons + "," + punctbo1 + "," + c1.consbo + "," + punctbo2); features.add(c0.consbo + "," + punctbo1 + "," + c1.consbo + "," + punctbo2); } } } } else { //punct1s == null //cons(0),cons(1),punctbo(2),cons(2) for (Parse punct2 : punct2s) { String punctbo2 = punctbo(punct2, c2.index <= 0 ? c2.index - 1 : c2.index); if (trigram) features.add(c0.cons + "," + c1.cons + "," + punctbo2 + "," + c2.cons); if (bigram2) features.add(c0.consbo + "," + c1.cons + "," + punctbo2 + "," + c2.cons); if (c0.unigram && c2.unigram) features.add(c0.cons + "," + c1.consbo + "," + punctbo2 + "," + c2.cons); if (bigram1) features.add(c0.cons + "," + c1.cons + "," + punctbo2 + "," + c2.consbo); if (c2.unigram) features.add(c0.consbo + "," + c1.consbo + "," + punctbo2 + "," + c2.cons); if (c1.unigram) features.add(c0.consbo + "," + c1.cons + "," + punctbo2 + "," + c2.consbo); if (c0.unigram) features.add(c0.cons + "," + c1.consbo + "," + punctbo2 + "," + c2.consbo); features.add(c0.consbo + "," + c1.consbo + "," + punctbo2 + "," + c2.consbo); if (zeroBackOff) { if (bigram1) features.add(c0.cons + "," + c1.cons + "," + punctbo2); if (c1.unigram) features.add(c0.consbo + "," + c1.cons + "," + punctbo2); if (c0.unigram) features.add(c0.cons + "," + c1.consbo + "," + punctbo2); features.add(c0.consbo + "," + c1.consbo + "," + punctbo2); } } } } else { if (punct1s != null) { //cons(0),punctbo(1),cons(1),cons(2) for (Parse punct1 : punct1s) { String punctbo1 = punctbo(punct1, c1.index <= 0 ? c1.index - 1 : c1.index); if (trigram) features.add(c0.cons + "," + punctbo1 + "," + c1.cons + "," + c2.cons); if (bigram2) features.add(c0.consbo + "," + punctbo1 + "," + c1.cons + "," + c2.cons); if (c0.unigram && c2.unigram) features.add(c0.cons + "," + punctbo1 + "," + c1.consbo + "," + c2.cons); if (bigram1) features.add(c0.cons + "," + punctbo1 + "," + c1.cons + "," + c2.consbo); if (c2.unigram) features.add(c0.consbo + "," + punctbo1 + "," + c1.consbo + "," + c2.cons); if (c1.unigram) features.add(c0.consbo + "," + punctbo1 + "," + c1.cons + "," + c2.consbo); if (c0.unigram) features.add(c0.cons + "," + punctbo1 + "," + c1.consbo + "," + c2.consbo); features.add(c0.consbo + "," + punctbo1 + "," + c1.consbo + "," + c2.consbo); //zero backoff case covered by cons(0)cons(1) } } else { //cons(0),cons(1),cons(2) if (trigram) features.add(c0.cons + "," + c1.cons + "," + c2.cons); if (bigram2) features.add(c0.consbo + "," + c1.cons + "," + c2.cons); if (c0.unigram && c2.unigram) features.add(c0.cons + "," + c1.consbo + "," + c2.cons); if (bigram1) features.add(c0.cons + "," + c1.cons + "," + c2.consbo); if (c2.unigram) features.add(c0.consbo + "," + c1.consbo + "," + c2.cons); if (c1.unigram) features.add(c0.consbo + "," + c1.cons + "," + c2.consbo); if (c0.unigram) features.add(c0.cons + "," + c1.consbo + "," + c2.consbo); features.add(c0.consbo + "," + c1.consbo + "," + c2.consbo); } } } /** * Generates features for nodes surrounding a completed node of the specified type. * @param node A surrounding node. * @param i The index of the surrounding node with respect to the completed node. * @param type The type of the completed node. * @param punctuation The punctuation adjacent and between the specified surrounding node. * @param features A list to which features are added. */ protected void surround(Parse node, int i, String type, Collection punctuation, List features) { StringBuilder feat = new StringBuilder(20); feat.append("s").append(i).append("="); if (punctuation != null) { for (Parse punct : punctuation) { if (node != null) { feat.append(node.getHead().getCoveredText()).append("|").append(type) .append("|").append(node.getType()).append("|").append(punct.getType()); } else { feat.append(type).append("|").append(EOS).append("|").append(punct.getType()); } features.add(feat.toString()); feat.setLength(0); feat.append("s").append(i).append("*="); if (node != null) { feat.append(type).append("|").append(node.getType()).append("|").append(punct.getType()); } else { feat.append(type).append("|").append(EOS).append("|").append(punct.getType()); } features.add(feat.toString()); feat.setLength(0); feat.append("s").append(i).append("*="); feat.append(type).append("|").append(punct.getType()); features.add(feat.toString()); } } else { if (node != null) { feat.append(node.getHead().getCoveredText()).append("|").append(type) .append("|").append(node.getType()); } else { feat.append(type).append("|").append(EOS); } features.add(feat.toString()); feat.setLength(0); feat.append("s").append(i).append("*="); if (node != null) { feat.append(type).append("|").append(node.getType()); } else { feat.append(type).append("|").append(EOS); } features.add(feat.toString()); } } /** * Produces features to determine whether the specified child node is part of * a complete constituent of the specified type and adds those features to the * specfied list. * @param child The parse node to consider. * @param i A string indicating the position of the child node. * @param type The type of constituent being built. * @param features List to add features to. */ protected void checkcons(Parse child, String i, String type, List features) { StringBuilder feat = new StringBuilder(20); feat.append("c").append(i).append("=").append(child.getType()).append("|") .append(child.getHead().getCoveredText()).append("|").append(type); features.add(feat.toString()); feat.setLength(0); feat.append("c").append(i).append("*=").append(child.getType()).append("|").append(type); features.add(feat.toString()); } protected void checkcons(Parse p1, Parse p2, String type, List features) { StringBuilder feat = new StringBuilder(20); feat.append("cil=").append(type).append(",").append(p1.getType()).append("|") .append(p1.getHead().getCoveredText()).append(",").append(p2.getType()) .append("|").append(p2.getHead().getCoveredText()); features.add(feat.toString()); feat.setLength(0); feat.append("ci*l=").append(type).append(",").append(p1.getType()).append(",") .append(p2.getType()).append("|").append(p2.getHead().getCoveredText()); features.add(feat.toString()); feat.setLength(0); feat.append("cil*=").append(type).append(",").append(p1.getType()).append("|") .append(p1.getHead().getCoveredText()).append(",").append(p2.getType()); features.add(feat.toString()); feat.setLength(0); feat.append("ci*l*=").append(type).append(",").append(p1.getType()) .append(",").append(p2.getType()); features.add(feat.toString()); } /** * Populates specified nodes array with left-most right frontier * node with a unique head. If the right frontier doesn't contain * enough nodes, then nulls are placed in the array elements. * @param rf The current right frontier. * @param nodes The array to be populated. */ protected void getFrontierNodes(List rf, Parse[] nodes) { int leftIndex = 0; int prevHeadIndex = -1; for (Parse fn : rf) { int headIndex = fn.getHeadIndex(); if (headIndex != prevHeadIndex) { nodes[leftIndex] = fn; leftIndex++; prevHeadIndex = headIndex; if (leftIndex == nodes.length) { break; } } } for (int ni = leftIndex; ni < nodes.length; ni++) { nodes[ni] = null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserChunkerFactory.java0100664 0001750 0001750 00000003201 14135770370 034003 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import opennlp.tools.chunker.ChunkerContextGenerator; import opennlp.tools.chunker.ChunkerFactory; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.TokenTag; public class ParserChunkerFactory extends ChunkerFactory { @Override public ChunkerContextGenerator getContextGenerator() { return new ChunkContextGenerator(ChunkerME.DEFAULT_BEAM_SIZE); } @Override public SequenceValidator getSequenceValidator() { MaxentModel model = artifactProvider.getArtifact("chunker.model"); String[] outcomes = new String[model.getNumOutcomes()]; for (int i = 0; i < outcomes.length; i++) { outcomes[i] = model.getOutcome(i); } return new ParserChunkerSequenceValidator(outcomes); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java0100664 0001750 0001750 00000022710 14135770370 032122 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.Map; import java.util.Objects; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.postag.POSModel; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.BaseModel; import opennlp.tools.util.model.ChunkerModelSerializer; import opennlp.tools.util.model.POSModelSerializer; /** * This is an abstract base class for {@link ParserModel} implementations. */ // TODO: Model should validate the artifact map public class ParserModel extends BaseModel { private static class HeadRulesSerializer implements ArtifactSerializer { public opennlp.tools.parser.lang.en.HeadRules create(InputStream in) throws IOException, InvalidFormatException { return new opennlp.tools.parser.lang.en.HeadRules(new BufferedReader( new InputStreamReader(in, StandardCharsets.UTF_8))); } public void serialize(opennlp.tools.parser.lang.en.HeadRules artifact, OutputStream out) throws IOException { artifact.serialize(new OutputStreamWriter(out, StandardCharsets.UTF_8)); } } private static final String COMPONENT_NAME = "Parser"; private static final String BUILD_MODEL_ENTRY_NAME = "build.model"; private static final String CHECK_MODEL_ENTRY_NAME = "check.model"; private static final String ATTACH_MODEL_ENTRY_NAME = "attach.model"; private static final String PARSER_TAGGER_MODEL_ENTRY_NAME = "parsertager.postagger"; private static final String CHUNKER_TAGGER_MODEL_ENTRY_NAME = "parserchunker.chunker"; private static final String HEAD_RULES_MODEL_ENTRY_NAME = "head-rules.headrules"; private static final String PARSER_TYPE = "parser-type"; public ParserModel(String languageCode, MaxentModel buildModel, MaxentModel checkModel, MaxentModel attachModel, POSModel parserTagger, ChunkerModel chunkerTagger, opennlp.tools.parser.HeadRules headRules, ParserType modelType, Map manifestInfoEntries) { super(COMPONENT_NAME, languageCode, manifestInfoEntries); setManifestProperty(PARSER_TYPE, modelType.name()); artifactMap.put(BUILD_MODEL_ENTRY_NAME, buildModel); artifactMap.put(CHECK_MODEL_ENTRY_NAME, checkModel); if (ParserType.CHUNKING.equals(modelType)) { if (attachModel != null) throw new IllegalArgumentException("attachModel must be null for chunking parser!"); } else if (ParserType.TREEINSERT.equals(modelType)) { Objects.requireNonNull(attachModel, "attachModel must not be null"); artifactMap.put(ATTACH_MODEL_ENTRY_NAME, attachModel); } else { throw new IllegalStateException("Unknown ParserType '" + modelType + "'!"); } artifactMap.put(PARSER_TAGGER_MODEL_ENTRY_NAME, parserTagger); artifactMap.put(CHUNKER_TAGGER_MODEL_ENTRY_NAME, chunkerTagger); artifactMap.put(HEAD_RULES_MODEL_ENTRY_NAME, headRules); checkArtifactMap(); } public ParserModel(String languageCode, MaxentModel buildModel, MaxentModel checkModel, MaxentModel attachModel, POSModel parserTagger, ChunkerModel chunkerTagger, opennlp.tools.parser.HeadRules headRules, ParserType modelType) { this (languageCode, buildModel, checkModel, attachModel, parserTagger, chunkerTagger, headRules, modelType, null); } public ParserModel(String languageCode, MaxentModel buildModel, MaxentModel checkModel, POSModel parserTagger, ChunkerModel chunkerTagger, opennlp.tools.parser.HeadRules headRules, ParserType type, Map manifestInfoEntries) { this (languageCode, buildModel, checkModel, null, parserTagger, chunkerTagger, headRules, type, manifestInfoEntries); } public ParserModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public ParserModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public ParserModel(Path modelPath) throws IOException { this(modelPath.toFile()); } public ParserModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } @Override protected void createArtifactSerializers( Map serializers) { super.createArtifactSerializers(serializers); // In 1.6.x the headrules artifact is serialized with the new API // which uses the Serializeable interface // This change is not backward compatible with the 1.5.x models. // In order to laod 1.5.x model the English headrules serializer must be // put on the serializer map. if (getVersion().getMajor() == 1 && getVersion().getMinor() == 5) { serializers.put("headrules", new HeadRulesSerializer()); } serializers.put("postagger", new POSModelSerializer()); serializers.put("chunker", new ChunkerModelSerializer()); } public ParserType getParserType() { return ParserType.parse(getManifestProperty(PARSER_TYPE)); } public MaxentModel getBuildModel() { return (MaxentModel) artifactMap.get(BUILD_MODEL_ENTRY_NAME); } public MaxentModel getCheckModel() { return (MaxentModel) artifactMap.get(CHECK_MODEL_ENTRY_NAME); } public MaxentModel getAttachModel() { return (MaxentModel) artifactMap.get(ATTACH_MODEL_ENTRY_NAME); } public POSModel getParserTaggerModel() { return (POSModel) artifactMap.get(PARSER_TAGGER_MODEL_ENTRY_NAME); } public ChunkerModel getParserChunkerModel() { return (ChunkerModel) artifactMap.get(CHUNKER_TAGGER_MODEL_ENTRY_NAME); } public opennlp.tools.parser.HeadRules getHeadRules() { return (opennlp.tools.parser.HeadRules) artifactMap.get(HEAD_RULES_MODEL_ENTRY_NAME); } // TODO: Update model methods should make sure properties are copied correctly ... public ParserModel updateBuildModel(MaxentModel buildModel) { return new ParserModel(getLanguage(), buildModel, getCheckModel(), getAttachModel(), getParserTaggerModel(), getParserChunkerModel(), getHeadRules(), getParserType()); } public ParserModel updateCheckModel(MaxentModel checkModel) { return new ParserModel(getLanguage(), getBuildModel(), checkModel, getAttachModel(), getParserTaggerModel(), getParserChunkerModel(), getHeadRules(), getParserType()); } public ParserModel updateTaggerModel(POSModel taggerModel) { return new ParserModel(getLanguage(), getBuildModel(), getCheckModel(), getAttachModel(), taggerModel, getParserChunkerModel(), getHeadRules(), getParserType()); } public ParserModel updateChunkerModel(ChunkerModel chunkModel) { return new ParserModel(getLanguage(), getBuildModel(), getCheckModel(), getAttachModel(), getParserTaggerModel(), chunkModel, getHeadRules(), getParserType()); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(BUILD_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Missing the build model!"); } ParserType modelType = getParserType(); if (modelType != null) { if (ParserType.CHUNKING.equals(modelType)) { if (artifactMap.get(ATTACH_MODEL_ENTRY_NAME) != null) throw new InvalidFormatException("attachModel must be null for chunking parser!"); } else if (ParserType.TREEINSERT.equals(modelType)) { if (!(artifactMap.get(ATTACH_MODEL_ENTRY_NAME) instanceof AbstractModel)) throw new InvalidFormatException("attachModel must not be null!"); } else { throw new InvalidFormatException("Unknown ParserType '" + modelType + "'!"); } } else { throw new InvalidFormatException("Missing the parser type property!"); } if (!(artifactMap.get(CHECK_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Missing the check model!"); } if (!(artifactMap.get(PARSER_TAGGER_MODEL_ENTRY_NAME) instanceof POSModel)) { throw new InvalidFormatException("Missing the tagger model!"); } if (!(artifactMap.get(CHUNKER_TAGGER_MODEL_ENTRY_NAME) instanceof ChunkerModel)) { throw new InvalidFormatException("Missing the chunker model!"); } if (!(artifactMap.get(HEAD_RULES_MODEL_ENTRY_NAME) instanceof HeadRules)) { throw new InvalidFormatException("Missing the head rules!"); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/PosSampleStream.java0100664 0001750 0001750 00000003152 14135770370 032763 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import opennlp.tools.postag.POSSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class PosSampleStream extends FilterObjectStream { public PosSampleStream(ObjectStream in) { super(in); } public POSSample read() throws IOException { Parse parse = samples.read(); if (parse != null) { Parse[] nodes = parse.getTagNodes(); String[] toks = new String[nodes.length]; String[] preds = new String[nodes.length]; for (int ti = 0; ti < nodes.length; ti++) { Parse tok = nodes[ti]; toks[ti] = tok.getCoveredText(); preds[ti] = tok.getType(); } return new POSSample(toks, preds); } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/en/HeadRules.java0100664 0001750 0001750 00000022566 14135770370 033115 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.lang.en; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.Stack; import java.util.StringTokenizer; import opennlp.tools.parser.Constituent; import opennlp.tools.parser.GapLabeler; import opennlp.tools.parser.Parse; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.SerializableArtifact; /** * Class for storing the English head rules associated with parsing. */ public class HeadRules implements opennlp.tools.parser.HeadRules, GapLabeler, SerializableArtifact { public static class HeadRulesSerializer implements ArtifactSerializer { public HeadRules create(InputStream in) throws IOException { return new HeadRules(new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))); } public void serialize(opennlp.tools.parser.lang.en.HeadRules artifact, OutputStream out) throws IOException { artifact.serialize(new OutputStreamWriter(out, StandardCharsets.UTF_8)); } } private static class HeadRule { public boolean leftToRight; public String[] tags; public HeadRule(boolean l2r, String[] tags) { leftToRight = l2r; for (String tag : tags) { Objects.requireNonNull(tag, "tags must not contain null values"); } this.tags = tags; } @Override public int hashCode() { return Objects.hash(leftToRight, Arrays.hashCode(tags)); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof HeadRule) { HeadRule rule = (HeadRule) obj; return rule.leftToRight == leftToRight && Arrays.equals(rule.tags, tags); } return false; } } private Map headRules; private Set punctSet; /** * Creates a new set of head rules based on the specified head rules file. * * @param ruleFile the head rules file. * * @throws IOException if the head rules file can not be read. */ @Deprecated public HeadRules(String ruleFile) throws IOException { this(new BufferedReader(new FileReader(ruleFile))); } /** * Creates a new set of head rules based on the specified reader. * * @param rulesReader the head rules reader. * * @throws IOException if the head rules reader can not be read. */ public HeadRules(Reader rulesReader) throws IOException { BufferedReader in = new BufferedReader(rulesReader); readHeadRules(in); punctSet = new HashSet<>(); punctSet.add("."); punctSet.add(","); punctSet.add("``"); punctSet.add("''"); //punctSet.add(":"); } public Set getPunctuationTags() { return punctSet; } public Parse getHead(Parse[] constituents, String type) { if (Parser.TOK_NODE.equals(constituents[0].getType())) { return null; } HeadRule hr; if (type.equals("NP") || type.equals("NX")) { String[] tags1 = { "NN", "NNP", "NNPS", "NNS", "NX", "JJR", "POS" }; for (int ci = constituents.length - 1; ci >= 0; ci--) { for (int ti = tags1.length - 1; ti >= 0; ti--) { if (constituents[ci].getType().equals(tags1[ti])) { return constituents[ci].getHead(); } } } for (Parse constituent : constituents) { if (constituent.getType().equals("NP")) { return constituent.getHead(); } } String[] tags2 = { "$", "ADJP", "PRN" }; for (int ci = constituents.length - 1; ci >= 0; ci--) { for (int ti = tags2.length - 1; ti >= 0; ti--) { if (constituents[ci].getType().equals(tags2[ti])) { return constituents[ci].getHead(); } } } String[] tags3 = { "JJ", "JJS", "RB", "QP" }; for (int ci = constituents.length - 1; ci >= 0; ci--) { for (int ti = tags3.length - 1; ti >= 0; ti--) { if (constituents[ci].getType().equals(tags3[ti])) { return constituents[ci].getHead(); } } } return constituents[constituents.length - 1].getHead(); } else if ((hr = headRules.get(type)) != null) { String[] tags = hr.tags; int cl = constituents.length; int tl = tags.length; if (hr.leftToRight) { for (int ti = 0; ti < tl; ti++) { for (int ci = 0; ci < cl; ci++) { if (constituents[ci].getType().equals(tags[ti])) { return constituents[ci].getHead(); } } } return constituents[0].getHead(); } else { for (int ti = 0; ti < tl; ti++) { for (int ci = cl - 1; ci >= 0; ci--) { if (constituents[ci].getType().equals(tags[ti])) { return constituents[ci].getHead(); } } } return constituents[cl - 1].getHead(); } } return constituents[constituents.length - 1].getHead(); } private void readHeadRules(BufferedReader str) throws IOException { String line; headRules = new HashMap<>(30); while ((line = str.readLine()) != null) { StringTokenizer st = new StringTokenizer(line); String num = st.nextToken(); String type = st.nextToken(); String dir = st.nextToken(); String[] tags = new String[Integer.parseInt(num) - 2]; int ti = 0; while (st.hasMoreTokens()) { tags[ti] = st.nextToken(); ti++; } headRules.put(type, new HeadRule(dir.equals("1"), tags)); } } public void labelGaps(Stack stack) { if (stack.size() > 4) { //Constituent con0 = (Constituent) stack.get(stack.size()-1); Constituent con1 = stack.get(stack.size() - 2); Constituent con2 = stack.get(stack.size() - 3); Constituent con3 = stack.get(stack.size() - 4); Constituent con4 = stack.get(stack.size() - 5); // System.err.println("con0="+con0.label+" con1="+con1.label+" con2=" // +con2.label+" con3="+con3.label+" con4="+con4.label); //subject extraction if (con1.getLabel().equals("NP") && con2.getLabel().equals("S") && con3.getLabel().equals("SBAR")) { con1.setLabel(con1.getLabel() + "-G"); con2.setLabel(con2.getLabel() + "-G"); con3.setLabel(con3.getLabel() + "-G"); } //object extraction else if (con1.getLabel().equals("NP") && con2.getLabel().equals("VP") && con3.getLabel().equals("S") && con4.getLabel().equals("SBAR")) { con1.setLabel(con1.getLabel() + "-G"); con2.setLabel(con2.getLabel() + "-G"); con3.setLabel(con3.getLabel() + "-G"); con4.setLabel(con4.getLabel() + "-G"); } } } /** * Writes the head rules to the writer in a format suitable for loading * the head rules again with the constructor. The encoding must be * taken into account while working with the writer and reader. *

* After the entries have been written, the writer is flushed. * The writer remains open after this method returns. * * @param writer * @throws IOException */ public void serialize(Writer writer) throws IOException { for (Entry entry : headRules.entrySet()) { String type = entry.getKey(); HeadRule headRule = entry.getValue(); // write num of tags writer.write(Integer.toString(headRule.tags.length + 2)); writer.write(' '); // write type writer.write(type); writer.write(' '); // write l2r true == 1 if (headRule.leftToRight) writer.write("1"); else writer.write("0"); // write tags for (String tag : headRule.tags) { writer.write(' '); writer.write(tag); } writer.write('\n'); } writer.flush(); } @Override public int hashCode() { return Objects.hash(headRules, punctSet); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof HeadRules) { HeadRules rules = (HeadRules) obj; return rules.headRules.equals(headRules) && rules.punctSet.equals(punctSet); } return false; } @Override public Class getArtifactSerializerClass() { return HeadRulesSerializer.class; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_lang_es_An0100644 0000000 0000000 00000000167 14135770370 032572 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/es/AncoraSpanishHeadRules.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/lang/es/AncoraSpanishHeadR0100664 0001750 0001750 00000023211 14135770370 033747 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser.lang.es; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.Stack; import java.util.StringTokenizer; import opennlp.tools.parser.Constituent; import opennlp.tools.parser.GapLabeler; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.SerializableArtifact; /** * Class for storing the Ancora Spanish head rules associated with parsing. In this class * headrules for noun phrases are specified. The rest of the rules are * in opennlp-tools/lang/es/parser/es-head-rules * * NOTE: This class has been adapted from opennlp.tools.parser.lang.en.HeadRules * * The main change is the constituents search direction in the first for loop. * * Note also the change in the return of the getHead() method: * In the lang.en.HeadRules class: return constituents[ci].getHead(); * Now: return constituents[ci]; * * Other changes include removal of deprecated methods. * */ public class AncoraSpanishHeadRules implements HeadRules, GapLabeler, SerializableArtifact { public static class HeadRulesSerializer implements ArtifactSerializer { public AncoraSpanishHeadRules create(InputStream in) throws IOException { return new AncoraSpanishHeadRules(new BufferedReader( new InputStreamReader(in, StandardCharsets.UTF_8))); } public void serialize(opennlp.tools.parser.lang.es.AncoraSpanishHeadRules artifact, OutputStream out) throws IOException { artifact.serialize(new OutputStreamWriter(out, StandardCharsets.UTF_8)); } } private static class HeadRule { public boolean leftToRight; public String[] tags; public HeadRule(boolean l2r, String[] tags) { leftToRight = l2r; for (String tag : tags) { Objects.requireNonNull(tag, "tags must not contain null values!"); } this.tags = tags; } @Override public int hashCode() { return Objects.hash(leftToRight, Arrays.hashCode(tags)); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof HeadRule) { HeadRule rule = (HeadRule) obj; return (rule.leftToRight == leftToRight) && Arrays.equals(rule.tags, tags); } return false; } } private Map headRules; private Set punctSet; /** * Creates a new set of head rules based on the specified reader. * * @param rulesReader the head rules reader. * * @throws IOException if the head rules reader can not be read. */ public AncoraSpanishHeadRules(Reader rulesReader) throws IOException { BufferedReader in = new BufferedReader(rulesReader); readHeadRules(in); punctSet = new HashSet<>(); punctSet.add("."); punctSet.add(","); punctSet.add("``"); punctSet.add("''"); //punctSet.add(":"); } public Set getPunctuationTags() { return punctSet; } public Parse getHead(Parse[] constituents, String type) { if (Parser.TOK_NODE.equals(constituents[0].getType())) { return null; } HeadRule hr; if (type.equals("SN") || type.equals("GRUP.NOM")) { String[] tags1 = {"AQA.*","AQC.*","GRUP\\.A","S\\.A","NC.*S.*", "NP.*","NC.*P.*", "GRUP\\.NOM"}; for (Parse constituent : constituents) { for (int t = tags1.length - 1; t >= 0; t--) { if (constituent.getType().matches(tags1[t])) { return constituent; } } } for (int ci = 0; ci < constituents.length; ci++) { if (constituents[ci].getType().equals("SN") || constituents[ci].getType().equals("GRUP.NOM")) { return constituents[ci]; } } String[] tags2 = {"\\$","GRUP\\.A","SA"}; for (int ci = constituents.length - 1; ci >= 0; ci--) { for (int ti = tags2.length - 1; ti >= 0; ti--) { if (constituents[ci].getType().matches(tags2[ti])) { return constituents[ci]; } } } String[] tags3 = {"AQ0.*", "AQ[AC].*","AO.*","GRUP\\.A","S\\.A","RG","RN","GRUP\\.NOM"}; for (int ci = constituents.length - 1; ci >= 0; ci--) { for (int ti = tags3.length - 1; ti >= 0; ti--) { if (constituents[ci].getType().matches(tags3[ti])) { return constituents[ci]; } } } return constituents[constituents.length - 1].getHead(); } else if ((hr = headRules.get(type)) != null) { String[] tags = hr.tags; int cl = constituents.length; int tl = tags.length; if (hr.leftToRight) { for (int ti = 0; ti < tl; ti++) { for (int ci = 0; ci < cl; ci++) { if (constituents[ci].getType().matches(tags[ti])) { return constituents[ci]; } } } return constituents[0].getHead(); } else { for (int ti = 0; ti < tl; ti++) { for (int ci = cl - 1; ci >= 0; ci--) { if (constituents[ci].getType().matches(tags[ti])) { return constituents[ci]; } } } return constituents[cl - 1].getHead(); } } return constituents[constituents.length - 1].getHead(); } private void readHeadRules(BufferedReader str) throws IOException { String line; headRules = new HashMap<>(60); while ((line = str.readLine()) != null) { StringTokenizer st = new StringTokenizer(line); String num = st.nextToken(); String type = st.nextToken(); String dir = st.nextToken(); String[] tags = new String[Integer.parseInt(num) - 2]; int ti = 0; while (st.hasMoreTokens()) { tags[ti] = st.nextToken(); ti++; } headRules.put(type, new HeadRule(dir.equals("1"), tags)); } } public void labelGaps(Stack stack) { if (stack.size() > 4) { //Constituent con0 = (Constituent) stack.get(stack.size()-1); Constituent con1 = stack.get(stack.size() - 2); Constituent con2 = stack.get(stack.size() - 3); Constituent con3 = stack.get(stack.size() - 4); Constituent con4 = stack.get(stack.size() - 5); //subject extraction if (con1.getLabel().equals("SN") && con2.getLabel().equals("S") && con3.getLabel().equals("GRUP.NOM")) { con1.setLabel(con1.getLabel() + "-G"); con2.setLabel(con2.getLabel() + "-G"); con3.setLabel(con3.getLabel() + "-G"); } //object extraction else if (con1.getLabel().equals("SN") && con2.getLabel().equals("GRUP.VERB") && con3.getLabel().equals("S") && con4.getLabel().equals("GRUP.NOM")) { con1.setLabel(con1.getLabel() + "-G"); con2.setLabel(con2.getLabel() + "-G"); con3.setLabel(con3.getLabel() + "-G"); con4.setLabel(con4.getLabel() + "-G"); } } } /** * Writes the head rules to the writer in a format suitable for loading * the head rules again with the constructor. The encoding must be * taken into account while working with the writer and reader. *

* After the entries have been written, the writer is flushed. * The writer remains open after this method returns. * * @param writer * @throws IOException */ public void serialize(Writer writer) throws IOException { for (Entry entry : headRules.entrySet()) { String type = entry.getKey(); HeadRule headRule = entry.getValue(); // write num of tags writer.write(Integer.toString(headRule.tags.length + 2)); writer.write(' '); // write type writer.write(type); writer.write(' '); // write l2r true == 1 if (headRule.leftToRight) writer.write("1"); else writer.write("0"); // write tags for (String tag : headRule.tags) { writer.write(' '); writer.write(tag); } writer.write('\n'); } writer.flush(); } @Override public int hashCode() { return Objects.hash(headRules, punctSet); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof AncoraSpanishHeadRules) { AncoraSpanishHeadRules rules = (AncoraSpanishHeadRules) obj; return rules.headRules.equals(headRules) && rules.punctSet.equals(punctSet); } return false; } @Override public Class getArtifactSerializerClass() { return HeadRulesSerializer.class; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParseSampleStream.java0100664 0001750 0001750 00000002545 14135770370 033301 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.io.IOException; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; public class ParseSampleStream extends FilterObjectStream { public ParseSampleStream(ObjectStream in) { super(in); } public Parse read() throws IOException { String parse = samples.read(); if (parse != null) { if (!parse.trim().isEmpty()) { return Parse.parseParse(parse); } else { return read(); } } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/Parse.java0100664 0001750 0001750 00000100415 14135770370 030756 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.Stack; import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.util.Span; /** * Data structure for holding parse constituents. */ public class Parse implements Cloneable, Comparable { public static final String BRACKET_LRB = "("; public static final String BRACKET_RRB = ")"; public static final String BRACKET_LCB = "{"; public static final String BRACKET_RCB = "}"; public static final String BRACKET_LSB = "["; public static final String BRACKET_RSB = "]"; /** * The text string on which this parse is based. * This object is shared among all parses for the same sentence. */ private String text; /** * The character offsets into the text for this constituent. */ private Span span; /** * The syntactic type of this parse. */ private String type; /** * The sub-constituents of this parse. */ private List parts; /** * The head parse of this parse. A parse can be its own head. */ private Parse head; /** * A string used during parse construction to specify which * stage of parsing has been performed on this node. */ private String label; /** * Index in the sentence of the head of this constituent. */ private int headIndex; /** * The parent parse of this parse. */ private Parse parent; /** * The probability associated with the syntactic type * assigned to this parse. */ private double prob; /** * The string buffer used to track the derivation of this parse. */ private StringBuffer derivation; /** * Specifies whether this constituent was built during the chunking phase. */ private boolean isChunk; /** * The pattern used to find the base constituent label of a * Penn Treebank labeled constituent. */ private static Pattern typePattern = Pattern.compile("^([^ =-]+)"); /** * The pattern used to find the function tags. */ private static Pattern funTypePattern = Pattern.compile("^[^ =-]+-([^ =-]+)"); /** * The patter used to identify tokens in Penn Treebank labeled constituents. */ private static Pattern tokenPattern = Pattern.compile("^[^ ()]+ ([^ ()]+)\\s*\\)"); /** * The set of punctuation parses which are between this parse and the previous parse. */ private Collection prevPunctSet; /** * The set of punctuation parses which are between this parse and * the subsequent parse. */ private Collection nextPunctSet; /** * Specifies whether constituent labels should include parts specified * after minus character. */ private static boolean useFunctionTags; /** * Creates a new parse node for this specified text and span of the specified type * with the specified probability and the specified head index. * * @param text The text of the sentence for which this node is a part of. * @param span The character offsets for this node within the specified text. * @param type The constituent label of this node. * @param p The probability of this parse. * @param index The token index of the head of this parse. */ public Parse(String text, Span span, String type, double p, int index) { this.text = text; this.span = span; this.type = type; this.prob = p; this.head = this; this.headIndex = index; this.parts = new LinkedList<>(); this.label = null; this.parent = null; } /** * Creates a new parse node for this specified text and span of the specified type with * the specified probability and the specified head and head index. * * @param text The text of the sentence for which this node is a part of. * @param span The character offsets for this node within the specified text. * @param type The constituent label of this node. * @param p The probability of this parse. * @param h The head token of this parse. */ public Parse(String text, Span span, String type, double p, Parse h) { this(text, span, type, p, 0); if (h != null) { this.head = h; this.headIndex = h.headIndex; } } @Override public Object clone() { Parse p = new Parse(this.text, this.span, this.type, this.prob, this.head); p.parts = new LinkedList<>(); p.parts.addAll(this.parts); if (derivation != null) { p.derivation = new StringBuffer(100); p.derivation.append(this.derivation); } p.label = this.label; return (p); } /** * Clones the right frontier of parse up to the specified node. * * @param node The last node in the right frontier of the parse tree which should be cloned. * @return A clone of this parse and its right frontier up to and including the specified node. */ public Parse clone(Parse node) { if (this == node) { return (Parse) this.clone(); } else { Parse c = (Parse) this.clone(); Parse lc = c.parts.get(parts.size() - 1); c.parts.set(parts.size() - 1,lc.clone(node)); return c; } } /** * Clones the right frontier of this root parse up to and including the specified node. * * @param node The last node in the right frontier of the parse tree which should be cloned. * @param parseIndex The child index of the parse for this root node. * @return A clone of this root parse and its right frontier up to and including the specified node. */ public Parse cloneRoot(Parse node, int parseIndex) { Parse c = (Parse) this.clone(); Parse fc = c.parts.get(parseIndex); c.parts.set(parseIndex,fc.clone(node)); return c; } /** * Specifies whether function tags should be included as part of the constituent type. * * @param uft true is they should be included; false otherwise. */ public static void useFunctionTags(boolean uft) { useFunctionTags = uft; } /** * Set the type of this constituent to the specified type. * * @param type The type of this constituent. */ public void setType(String type) { this.type = type; } /** * Returns the constituent label for this node of the parse. * * @return The constituent label for this node of the parse. */ public String getType() { return type; } /** * Returns the set of punctuation parses that occur immediately before this parse. * * @return the set of punctuation parses that occur immediately before this parse. */ public Collection getPreviousPunctuationSet() { return prevPunctSet; } /** * Designates that the specified punctuation should is prior to this parse. * * @param punct The punctuation. */ public void addPreviousPunctuation(Parse punct) { if (this.prevPunctSet == null) { this.prevPunctSet = new TreeSet<>(); } prevPunctSet.add(punct); } /** * Returns the set of punctuation parses that occur immediately after this parse. * * @return the set of punctuation parses that occur immediately after this parse. */ public Collection getNextPunctuationSet() { return nextPunctSet; } /** * Designates that the specified punctuation follows this parse. * * @param punct The punctuation set. */ public void addNextPunctuation(Parse punct) { if (this.nextPunctSet == null) { this.nextPunctSet = new TreeSet<>(); } nextPunctSet.add(punct); } /** * Sets the set of punctuation tags which follow this parse. * * @param punctSet The set of punctuation tags which follow this parse. */ public void setNextPunctuation(Collection punctSet) { this.nextPunctSet = punctSet; } /** * Sets the set of punctuation tags which preceed this parse. * * @param punctSet The set of punctuation tags which preceed this parse. */ public void setPrevPunctuation(Collection punctSet) { this.prevPunctSet = punctSet; } /** * Inserts the specified constituent into this parse based on its text span.This * method assumes that the specified constituent can be inserted into this parse. * * @param constituent The constituent to be inserted. */ public void insert(final Parse constituent) { Span ic = constituent.span; if (span.contains(ic)) { //double oprob=c.prob; int pi = 0; int pn = parts.size(); for (; pi < pn; pi++) { Parse subPart = parts.get(pi); //System.err.println("Parse.insert:con="+constituent+" sp["+pi+"] "+subPart+" "+subPart.getType()); Span sp = subPart.span; if (sp.getStart() >= ic.getEnd()) { break; } // constituent contains subPart else if (ic.contains(sp)) { //System.err.println("Parse.insert:con contains subPart"); parts.remove(pi); pi--; constituent.parts.add(subPart); subPart.setParent(constituent); //System.err.println("Parse.insert: "+subPart.hashCode()+" -> "+subPart.getParent().hashCode()); pn = parts.size(); } else if (sp.contains(ic)) { //System.err.println("Parse.insert:subPart contains con"); subPart.insert(constituent); return; } } //System.err.println("Parse.insert:adding con="+constituent+" to "+this); parts.add(pi, constituent); constituent.setParent(this); // System.err.println("Parse.insert: "+constituent.hashCode()+" -> " // +constituent.getParent().hashCode()); } else { throw new IllegalArgumentException("Inserting constituent not contained in the sentence!"); } } /** * Appends the specified string buffer with a string representation of this parse. * * @param sb A string buffer into which the parse string can be appended. */ public void show(StringBuffer sb) { int start; start = span.getStart(); if (!type.equals(AbstractBottomUpParser.TOK_NODE)) { sb.append("("); sb.append(type).append(" "); //System.out.print(label+" "); //System.out.print(head+" "); //System.out.print(df.format(prob)+" "); } for (Parse c : parts) { Span s = c.span; if (start < s.getStart()) { //System.out.println("pre "+start+" "+s.getStart()); sb.append(encodeToken(text.substring(start, s.getStart()))); } c.show(sb); start = s.getEnd(); } if (start < span.getEnd()) { sb.append(encodeToken(text.substring(start, span.getEnd()))); } if (!type.equals(AbstractBottomUpParser.TOK_NODE)) { sb.append(")"); } } /** * Displays this parse using Penn Treebank-style formatting. */ public void show() { StringBuffer sb = new StringBuffer(text.length() * 4); show(sb); System.out.println(sb); } /** * Returns the probability associated with the pos-tag sequence assigned to this parse. * * @return The probability associated with the pos-tag sequence assigned to this parse. */ public double getTagSequenceProb() { //System.err.println("Parse.getTagSequenceProb: "+type+" "+this); if (parts.size() == 1 && (parts.get(0)).type.equals(AbstractBottomUpParser.TOK_NODE)) { //System.err.println(this+" "+prob); return (StrictMath.log(prob)); } else if (parts.size() == 0) { System.err.println("Parse.getTagSequenceProb: Wrong base case!"); return (0.0); } else { double sum = 0.0; for (Parse part : parts) { sum += part.getTagSequenceProb(); } return sum; } } /** * Returns whether this parse is complete. * * @return Returns true if the parse contains a single top-most node. */ public boolean complete() { return (parts.size() == 1); } public String getCoveredText() { return text.substring(span.getStart(), span.getEnd()); } /** * Represents this parse in a human readable way. */ @Override public String toString() { // TODO: Use the commented code in next bigger release, // change probably breaks backward compatibility in some // applications //StringBuffer buffer = new StringBuffer(); //show(buffer); //return buffer.toString(); return getCoveredText(); } /** * Returns the text of the sentence over which this parse was formed. * * @return The text of the sentence over which this parse was formed. */ public String getText() { return text; } /** * Returns the character offsets for this constituent. * * @return The character offsets for this constituent. */ public Span getSpan() { return span; } /** * Returns the log of the product of the probability associated with all the * decisions which formed this constituent. * * @return The log of the product of the probability associated with all the * decisions which formed this constituent. */ public double getProb() { return prob; } /** * Adds the specified probability log to this current log for this parse. * * @param logProb The probability of an action performed on this parse. */ public void addProb(double logProb) { this.prob += logProb; } /** * Returns the child constituents of this constituent * . * @return The child constituents of this constituent. */ public Parse[] getChildren() { return parts.toArray(new Parse[parts.size()]); } /** * Replaces the child at the specified index with a new child with the specified label. * * @param index The index of the child to be replaced. * @param label The label to be assigned to the new child. */ public void setChild(int index, String label) { Parse newChild = (Parse) (parts.get(index)).clone(); newChild.setLabel(label); parts.set(index,newChild); } public void add(Parse daughter, HeadRules rules) { if (daughter.prevPunctSet != null) { parts.addAll(daughter.prevPunctSet); } parts.add(daughter); this.span = new Span(span.getStart(),daughter.getSpan().getEnd()); this.head = rules.getHead(getChildren(),type); this.headIndex = head.headIndex; } public void remove(int index) { parts.remove(index); if (! parts.isEmpty()) { if (index == 0 || index == parts.size()) { //size is orig last element span = new Span((parts.get(0)).span.getStart(),(parts.get(parts.size() - 1)).span.getEnd()); } } } public Parse adjoinRoot(Parse node, HeadRules rules, int parseIndex) { Parse lastChild = parts.get(parseIndex); Parse adjNode = new Parse(this.text,new Span(lastChild.getSpan().getStart(), node.getSpan().getEnd()),lastChild.getType(),1, rules.getHead(new Parse[]{lastChild,node},lastChild.getType())); adjNode.parts.add(lastChild); if (node.prevPunctSet != null) { adjNode.parts.addAll(node.prevPunctSet); } adjNode.parts.add(node); parts.set(parseIndex,adjNode); return adjNode; } /** * Sister adjoins this node's last child and the specified sister node and returns their * new parent node. The new parent node replace this nodes last child. * * @param sister The node to be adjoined. * @param rules The head rules for the parser. * @return The new parent node of this node and the specified sister node. */ public Parse adjoin(Parse sister, HeadRules rules) { Parse lastChild = parts.get(parts.size() - 1); Parse adjNode = new Parse(this.text,new Span(lastChild.getSpan().getStart(),sister.getSpan().getEnd()), lastChild.getType(),1,rules.getHead(new Parse[]{lastChild,sister},lastChild.getType())); adjNode.parts.add(lastChild); if (sister.prevPunctSet != null) { adjNode.parts.addAll(sister.prevPunctSet); } adjNode.parts.add(sister); parts.set(parts.size() - 1, adjNode); this.span = new Span(span.getStart(),sister.getSpan().getEnd()); this.head = rules.getHead(getChildren(),type); this.headIndex = head.headIndex; return adjNode; } public void expandTopNode(Parse root) { boolean beforeRoot = true; //System.err.println("expandTopNode: parts="+parts); for (int pi = 0, ai = 0; pi < parts.size(); pi++,ai++) { Parse node = parts.get(pi); if (node == root) { beforeRoot = false; } else if (beforeRoot) { root.parts.add(ai,node); parts.remove(pi); pi--; } else { root.parts.add(node); parts.remove(pi); pi--; } } root.updateSpan(); } /** * Returns the number of children for this parse node. * * @return the number of children for this parse node. */ public int getChildCount() { return parts.size(); } /** * Returns the index of this specified child. * * @param child A child of this parse. * * @return the index of this specified child or -1 if the specified child is not a child of this parse. */ public int indexOf(Parse child) { return parts.indexOf(child); } /** * Returns the head constituent associated with this constituent. * * @return The head constituent associated with this constituent. */ public Parse getHead() { return head; } /** * Returns the index within a sentence of the head token for this parse. * * @return The index within a sentence of the head token for this parse. */ public int getHeadIndex() { return headIndex; } /** * Returns the label assigned to this parse node during parsing * which specifies how this node will be formed into a constituent. * * @return The outcome label assigned to this node during parsing. */ public String getLabel() { return label; } /** * Assigns this parse the specified label. This is used by parsing schemes to * tag parsing nodes while building. * * @param label A label indicating something about the stage of building for this parse node. */ public void setLabel(String label) { this.label = label; } private static String getType(String rest) { if (rest.startsWith("-LCB-")) { return "-LCB-"; } else if (rest.startsWith("-RCB-")) { return "-RCB-"; } else if (rest.startsWith("-LRB-")) { return "-LRB-"; } else if (rest.startsWith("-RRB-")) { return "-RRB-"; } else if (rest.startsWith("-RSB-")) { return "-RSB-"; } else if (rest.startsWith("-LSB-")) { return "-LSB-"; } else if (rest.startsWith("-NONE-")) { return "-NONE-"; } else { Matcher typeMatcher = typePattern.matcher(rest); if (typeMatcher.find()) { String type = typeMatcher.group(1); if (useFunctionTags) { Matcher funMatcher = funTypePattern.matcher(rest); if (funMatcher.find()) { String ftag = funMatcher.group(1); type = type + "-" + ftag; } } return type; } } return null; } private static String encodeToken(String token) { if (BRACKET_LRB.equals(token)) { return "-LRB-"; } else if (BRACKET_RRB.equals(token)) { return "-RRB-"; } else if (BRACKET_LCB.equals(token)) { return "-LCB-"; } else if (BRACKET_RCB.equals(token)) { return "-RCB-"; } else if (BRACKET_LSB.equals(token)) { return "-LSB-"; } else if (BRACKET_RSB.equals(token)) { return "-RSB-"; } return token; } private static String decodeToken(String token) { if ("-LRB-".equals(token)) { return BRACKET_LRB; } else if ("-RRB-".equals(token)) { return BRACKET_RRB; } else if ("-LCB-".equals(token)) { return BRACKET_LCB; } else if ("-RCB-".equals(token)) { return BRACKET_RCB; } else if ("-LSB-".equals(token)) { return BRACKET_LSB; } else if ("-RSB-".equals(token)) { return BRACKET_RSB; } return token; } /** * Returns the string containing the token for the specified portion of the parse string or * null if the portion of the parse string does not represent a token. * * @param rest The portion of the parse string remaining to be processed. * * @return The string containing the token for the specified portion of the parse string or * null if the portion of the parse string does not represent a token. */ private static String getToken(String rest) { Matcher tokenMatcher = tokenPattern.matcher(rest); if (tokenMatcher.find()) { return decodeToken(tokenMatcher.group(1)); } return null; } /** * Computes the head parses for this parse and its sub-parses and stores this information * in the parse data structure. * * @param rules The head rules which determine how the head of the parse is computed. */ public void updateHeads(HeadRules rules) { if (parts != null && parts.size() != 0) { for (Parse c : parts) { c.updateHeads(rules); } this.head = rules.getHead(parts.toArray(new Parse[parts.size()]), type); if (head == null) { head = this; } else { this.headIndex = head.headIndex; } } else { this.head = this; } } public void updateSpan() { span = new Span((parts.get(0)).span.getStart(),(parts.get(parts.size() - 1)).span.getEnd()); } /** * Prune the specified sentence parse of vacuous productions. * * @param parse */ public static void pruneParse(Parse parse) { List nodes = new LinkedList<>(); nodes.add(parse); while (nodes.size() != 0) { Parse node = nodes.remove(0); Parse[] children = node.getChildren(); if (children.length == 1 && node.getType().equals(children[0].getType())) { int index = node.getParent().parts.indexOf(node); children[0].setParent(node.getParent()); node.getParent().parts.set(index,children[0]); node.parent = null; node.parts = null; } nodes.addAll(Arrays.asList(children)); } } public static void fixPossesives(Parse parse) { Parse[] tags = parse.getTagNodes(); for (int ti = 0; ti < tags.length; ti++) { if (tags[ti].getType().equals("POS")) { if (ti + 1 < tags.length && tags[ti + 1].getParent() == tags[ti].getParent().getParent()) { int start = tags[ti + 1].getSpan().getStart(); int end = tags[ti + 1].getSpan().getEnd(); for (int npi = ti + 2; npi < tags.length; npi++) { if (tags[npi].getParent() == tags[npi - 1].getParent()) { end = tags[npi].getSpan().getEnd(); } else { break; } } Parse npPos = new Parse(parse.getText(), new Span(start,end), "NP", 1 , tags[ti + 1]); parse.insert(npPos); } } } } /** * Parses the specified tree-bank style parse string and return a Parse structure for that string. * * @param parse A tree-bank style parse string. * * @return a Parse structure for the specified tree-bank style parse string. */ public static Parse parseParse(String parse) { return parseParse(parse,null); } /** * Parses the specified tree-bank style parse string and return a Parse structure * for that string. * * @param parse A tree-bank style parse string. * @param gl The gap labeler. * * @return a Parse structure for the specified tree-bank style parse string. */ public static Parse parseParse(String parse, GapLabeler gl) { StringBuilder text = new StringBuilder(); int offset = 0; Stack stack = new Stack<>(); List cons = new LinkedList<>(); for (int ci = 0, cl = parse.length(); ci < cl; ci++) { char c = parse.charAt(ci); if (c == '(') { String rest = parse.substring(ci + 1); String type = getType(rest); if (type == null) { System.err.println("null type for: " + rest); } String token = getToken(rest); stack.push(new Constituent(type, new Span(offset,offset))); if (token != null) { if (Objects.equals(type, "-NONE-") && gl != null) { //System.err.println("stack.size="+stack.size()); gl.labelGaps(stack); } else { cons.add(new Constituent(AbstractBottomUpParser.TOK_NODE, new Span(offset, offset + token.length()))); text.append(token).append(" "); offset += token.length() + 1; } } } else if (c == ')') { Constituent con = stack.pop(); int start = con.getSpan().getStart(); if (start < offset) { cons.add(new Constituent(con.getLabel(), new Span(start, offset - 1))); } } } String txt = text.toString(); int tokenIndex = -1; Parse p = new Parse(txt, new Span(0, txt.length()), AbstractBottomUpParser.TOP_NODE, 1,0); for (Constituent con : cons) { String type = con.getLabel(); if (!type.equals(AbstractBottomUpParser.TOP_NODE)) { if (AbstractBottomUpParser.TOK_NODE.equals(type)) { tokenIndex++; } Parse c = new Parse(txt, con.getSpan(), type, 1, tokenIndex); //System.err.println("insert["+ci+"] "+type+" "+c.toString()+" "+c.hashCode()); p.insert(c); //codeTree(p); } } return p; } /** * Returns the parent parse node of this constituent. * * @return The parent parse node of this constituent. */ public Parse getParent() { return parent; } /** * Specifies the parent parse node for this constituent. * * @param parent The parent parse node for this constituent. */ public void setParent(Parse parent) { this.parent = parent; } /** * Indicates whether this parse node is a pos-tag. * * @return true if this node is a pos-tag, false otherwise. */ public boolean isPosTag() { return (parts.size() == 1 && (parts.get(0)).getType().equals(AbstractBottomUpParser.TOK_NODE)); } /** * Returns true if this constituent contains no sub-constituents. * * @return true if this constituent contains no sub-constituents; false otherwise. */ public boolean isFlat() { boolean flat = true; for (Parse part : parts) { flat &= part.isPosTag(); } return flat; } public void isChunk(boolean ic) { this.isChunk = ic; } public boolean isChunk() { return isChunk; } /** * Returns the parse nodes which are children of this node and which are pos tags. * * @return the parse nodes which are children of this node and which are pos tags. */ public Parse[] getTagNodes() { List tags = new LinkedList<>(); List nodes = new LinkedList<>(this.parts); while (nodes.size() != 0) { Parse p = nodes.remove(0); if (p.isPosTag()) { tags.add(p); } else { nodes.addAll(0,p.parts); } } return tags.toArray(new Parse[tags.size()]); } public Parse[] getTokenNodes() { List tokens = new LinkedList<>(); List nodes = new LinkedList<>(this.parts); while (nodes.size() != 0) { Parse p = nodes.remove(0); if (p.getType().equals(AbstractBottomUpParser.TOK_NODE)) { tokens.add(p); } else { nodes.addAll(0, p.parts); } } return tokens.toArray(new Parse[tokens.size()]); } /** * Returns the deepest shared parent of this node and the specified node. * If the nodes are identical then their parent is returned. * If one node is the parent of the other then the parent node is returned. * * @param node The node from which parents are compared to this node's parents. * * @return the deepest shared parent of this node and the specified node. */ public Parse getCommonParent(Parse node) { if (this == node) { return parent; } Set parents = new HashSet<>(); Parse cparent = this; while (cparent != null) { parents.add(cparent); cparent = cparent.getParent(); } while (node != null) { if (parents.contains(node)) { return node; } node = node.getParent(); } return null; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof Parse) { Parse p = (Parse) obj; return Objects.equals(label, p.label) && span.equals(p.span) && text.equals(p.text) && parts.equals(p.parts); } return false; } @Override public int hashCode() { // Note: label is missing here! return Objects.hash(span, text); } public int compareTo(Parse p) { return Double.compare(p.getProb(), this.getProb()); } /** * Returns the derivation string for this parse if one has been created. * * @return the derivation string for this parse or null if no derivation string has been created. */ public StringBuffer getDerivation() { return derivation; } /** * Specifies the derivation string to be associated with this parse. * * @param derivation The derivation string to be associated with this parse. */ public void setDerivation(StringBuffer derivation) { this.derivation = derivation; } private void codeTree(Parse p,int[] levels) { Parse[] kids = p.getChildren(); StringBuilder levelsBuff = new StringBuilder(); levelsBuff.append("["); int[] nlevels = new int[levels.length + 1]; for (int li = 0; li < levels.length; li++) { nlevels[li] = levels[li]; levelsBuff.append(levels[li]).append("."); } for (int ki = 0; ki < kids.length; ki++) { nlevels[levels.length] = ki; System.out.println(levelsBuff.toString() + ki + "] " + kids[ki].getType() + " " + kids[ki].hashCode() + " -> " + kids[ki].getParent().hashCode() + " " + kids[ki].getParent().getType() + " " + kids[ki].getCoveredText()); codeTree(kids[ki],nlevels); } } /** * Prints to standard out a representation of the specified parse which * contains hash codes so that parent/child relationships can be explicitly seen. */ public void showCodeTree() { codeTree(this,new int[0]); } /** * Utility method to inserts named entities. * * @param tag * @param names * @param tokens */ public static void addNames(String tag, Span[] names, Parse[] tokens) { for (Span nameTokenSpan : names) { Parse startToken = tokens[nameTokenSpan.getStart()]; Parse endToken = tokens[nameTokenSpan.getEnd() - 1]; Parse commonParent = startToken.getCommonParent(endToken); //System.err.println("addNames: "+startToken+" .. "+endToken+" commonParent = "+commonParent); if (commonParent != null) { Span nameSpan = new Span(startToken.getSpan().getStart(), endToken.getSpan().getEnd()); if (nameSpan.equals(commonParent.getSpan())) { commonParent.insert(new Parse(commonParent.getText(), nameSpan, tag, 1.0, endToken.getHeadIndex())); } else { Parse[] kids = commonParent.getChildren(); boolean crossingKids = false; for (Parse kid : kids) { if (nameSpan.crosses(kid.getSpan())) { crossingKids = true; } } if (!crossingKids) { commonParent.insert(new Parse(commonParent.getText(), nameSpan, tag, 1.0, endToken.getHeadIndex())); } else { if (commonParent.getType().equals("NP")) { Parse[] grandKids = kids[0].getChildren(); if (grandKids.length > 1 && nameSpan.contains(grandKids[grandKids.length - 1].getSpan())) { commonParent.insert(new Parse(commonParent.getText(), commonParent.getSpan(), tag, 1.0, commonParent.getHeadIndex())); } } } } } } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/Constituent.java0100664 0001750 0001750 00000003031 14135770370 032217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import opennlp.tools.util.Span; /** * Class used to hold constituents when reading parses. */ public class Constituent { private String label; private Span span; public Constituent(String label, Span span) { this.label = label; this.span = span; } /** * Returns the label of the constituent. * @return the label of the constituent. */ public String getLabel() { return label; } /** * Assigns the label to the constituent. * @param label The label to set. */ public void setLabel(String label) { this.label = label; } /** * Returns the span of the constituent. * @return the span of the constituent. */ public Span getSpan() { return span; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEvaluator.java0100664 0001750 0001750 00000006656 14135770370 033037 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.ArrayList; import java.util.List; import java.util.Stack; import opennlp.tools.cmdline.parser.ParserTool; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * Class for ParserEvaluator. * This ParserEvaluator behaves like EVALB with no exceptions, e.g, * without removing punctuation tags, or equality between ADVP and PRT * (as in COLLINS convention). To follow parsing evaluation conventions * (Bikel, Collins, Charniak, etc.) as in EVALB, options are to be added * to the {@code ParserEvaluatorTool}. * */ public class ParserEvaluator extends Evaluator { /** * fmeasure. */ private FMeasure fmeasure = new FMeasure(); /** * The parser to evaluate. */ private final Parser parser; /** * Construct a parser with some evaluation monitors. * @param aParser * @param monitors the evaluation monitors */ public ParserEvaluator(final Parser aParser, final ParserEvaluationMonitor... monitors) { super(monitors); this.parser = aParser; } /** * Obtain {@code Span}s for every parse in the sentence. * @param parse the parse from which to obtain the spans * @return an array containing every span for the parse */ private static Span[] getConstituencySpans(final Parse parse) { Stack stack = new Stack<>(); if (parse.getChildCount() > 0) { for (Parse child : parse.getChildren()) { stack.push(child); } } List consts = new ArrayList<>(); while (!stack.isEmpty()) { Parse constSpan = stack.pop(); if (!constSpan.isPosTag()) { Span span = constSpan.getSpan(); consts.add(new Span(span.getStart(), span.getEnd(), constSpan.getType())); for (Parse child : constSpan.getChildren()) { stack.push(child); } } } return consts.toArray(new Span[consts.size()]); } @Override protected final Parse processSample(final Parse reference) { List tokens = new ArrayList<>(); for (Parse token : reference.getTokenNodes()) { tokens.add(token.getSpan().getCoveredText(reference.getText()).toString()); } Parse[] predictions = ParserTool.parseLine(String.join(" ", tokens), parser, 1); Parse prediction = null; if (predictions.length > 0) { prediction = predictions[0]; fmeasure.updateScores(getConstituencySpans(reference), getConstituencySpans(prediction)); } return prediction; } /** * It returns the fmeasure result. * @return the fmeasure value */ public final FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserEventTypeEnum.java0100664 0001750 0001750 00000001752 14135770370 033635 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; /** * Enumerated type of event types for the parser. */ public enum ParserEventTypeEnum { BUILD, CHECK, @Deprecated CHUNK, @Deprecated TAG, ATTACH } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_parser_ParserChun0100644 0000000 0000000 00000000167 14135770370 032616 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserChunkerSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/parser/ParserChunkerSequenceValid0100664 0001750 0001750 00000004441 14135770370 034213 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.parser; import java.util.HashMap; import java.util.Map; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.TokenTag; public class ParserChunkerSequenceValidator implements SequenceValidator { private Map continueStartMap; public ParserChunkerSequenceValidator(String[] outcomes) { continueStartMap = new HashMap<>(outcomes.length); for (String outcome : outcomes) { if (outcome.startsWith(Parser.CONT)) { continueStartMap.put(outcome, Parser.START + outcome.substring( Parser.CONT.length())); } } } public boolean validSequence(int i, String[] inputSequence, String[] tagList, String outcome) { if (continueStartMap.containsKey(outcome)) { int lti = tagList.length - 1; if (lti == -1) { return false; } else { String lastTag = tagList[lti]; if (lastTag.equals(outcome)) { return true; } if (lastTag.equals(continueStartMap.get(outcome))) { return true; } if (lastTag.equals(Parser.OTHER)) { return false; } return false; } } return true; } @Override public boolean validSequence(int i, TokenTag[] inputTuples, String[] outcomesSequence, String outcome) { String[] inputSequence = TokenTag.extractTokens(inputTuples); return validSequence(i, inputSequence, outcomesSequence, outcome); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/EntityLinker.java0100664 0001750 0001750 00000011106 14135770370 033550 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.entitylinker; import java.io.IOException; import java.util.List; import opennlp.tools.util.Span; /** * EntityLinkers establish connections to external data to enrich extracted * entities. For instance, for Location entities a linker can be developed to * lookup each found location in a geonames gazateer. Another example may be to * find peoples' names and look them up in a database or active directory. * Intended to return n best matches for any give search, but can also be * implemented as deterministic * * @param A type that extends Span. LinkedSpan and BaseLink are provided to * provide this signature: EntityLinker<LinkedSpan<BaseLink>> as a * default */ public interface EntityLinker { /** * allows for passing properties through the EntityLinkerFactory into all * impls dynamically. EntityLinker impls should initialize reusable objects * used by the impl in this method. If this is done, any errors will be * captured and thrown by the EntityLinkerFactory. * * @param initializationData the EntityLinkerProperties object that contains * properties needed by the impl, as well as any * other objects required for the impl * @throws java.io.IOException */ void init(EntityLinkerProperties initializationData) throws IOException; /** * Links an entire document of named entities to an external source * * @param doctext the full text of the document * @param tokensBySentence a list of tokens spans that correspond to each sentence. * The outer array refers to the sentence, the inner * array is the tokens for the outer sentence. Similar * in nature to Map of SentenceIndex keys to Listof * tokens as values * @param namesBySentence a list of name spans that correspond to each * sentence. The outer array refers to the sentence, * the inner array refers to the tokens that for the * same sentence.Similar in nature to * Map<SentenceIndex,List<Name Spans For This * Sentence's Tokens>> @ return * @return */ List find(String doctext, Span[] sentences, Span[][] tokensBySentence, Span[][] namesBySentence); /** * Links the names that correspond to the tokens[] spans. The sentenceindex * can be used to get the sentence text and tokens from the text based on the * sentence and token spans. The text is available for additional context. * * @param doctext the full text of the document * @param tokensBySentence a list of tokens spans that correspond to each sentence. * The outer array refers to the sentence, the inner * array is the tokens for the outer sentence. Similar * in nature to Map of SentenceIndex keys to Listof * tokens as values * @param namesBySentence a list of name spans that correspond to each * sentence. The outer array refers to the sentence, * the inner array refers to the tokens that for the * same sentence.Similar in nature to * Map<SentenceIndex,List<Name Spans For This * Sentence's Tokens>> @ return * @param sentenceIndex the index to the sentence span that the tokens[] * Span[] corresponds to * @return */ List find(String doctext, Span[] sentences, Span[][] tokensBySentence, Span[][] namesBySentence, int sentenceIndex); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/BaseLink.java0100664 0001750 0001750 00000007276 14135770370 032634 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.entitylinker; import java.util.HashMap; import java.util.Objects; /** * Stores a minimal tuple of information. Intended to be used with LinkedSpan * * */ public abstract class BaseLink { private String itemParentID; private String itemID; private String itemName; private String itemType; private HashMap scoreMap = new HashMap<>(); public BaseLink() { } public BaseLink(String itemParentID, String itemID, String itemName, String itemType) { this.itemParentID = itemParentID; this.itemID = itemID; this.itemName = itemName; this.itemType = itemType; } /** * Any parent ID for the linked item * @return */ public String getItemParentID() { return itemParentID; } /** * returns the parent ID of the linked item * @param itemParentID */ public void setItemParentID(String itemParentID) { this.itemParentID = itemParentID; } /** * returns the itemid * * @return */ public String getItemID() { return itemID; } /** * sets the item id. This field can store, for example, the primary key of a * row in an external/linked database * * @param itemID */ public void setItemID(String itemID) { this.itemID = itemID; } /** * returns the name * * @return */ public String getItemName() { return itemName; } /** * Sets the item name. An item name can be the native name (often a normalized * version of something) from an external linked database * * @param itemName */ public void setItemName(String itemName) { this.itemName = itemName; } /** * returns the type * * @return */ public String getItemType() { return itemType; } /** * sets the item type. An item type can be the native type from an external * linked database. For instance, a product type or code * * @param itemType */ public void setItemType(String itemType) { this.itemType = itemType; } public HashMap getScoreMap() { return scoreMap; } public void setScoreMap(HashMap scoreMap) { this.scoreMap = scoreMap; } @Override public String toString() { return "\tBaseLink" + "\n\titemParentID=" + itemParentID + ", \n\titemID=" + itemID + ", \n\titemName=" + itemName + ", \n\titemType=" + itemType + ", \n\tscoreMap=" + scoreMap + "\n"; } @Override public int hashCode() { return Objects.hash(itemParentID, itemID, itemName, itemType); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof BaseLink) { BaseLink other = (BaseLink) obj; return Objects.equals(itemParentID, other.itemParentID) && Objects.equals(itemID, other.itemID) && Objects.equals(itemName, other.itemName) && Objects.equals(itemType, other.itemType); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_entitylinker_Enti0100644 0000000 0000000 00000000165 14135770370 032666 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/EntityLinkerProperties.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/EntityLinkerProperti0100664 0001750 0001750 00000004735 14135770370 034367 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.entitylinker; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Properties wrapper for the EntityLinker framework * */ public class EntityLinkerProperties { private Properties props; /** * Constructor takes location of properties file as arg * * @param propertiesfile the properties file * @throws IOException */ public EntityLinkerProperties(File propertiesfile) throws IOException { try (InputStream stream = new FileInputStream(propertiesfile)) { init(stream); } } /** * * @param propertiesIn inputstream of properties file. Stream will not be * closed * @throws IOException * */ public EntityLinkerProperties(InputStream propertiesIn) throws IOException { init(propertiesIn); } private void init(InputStream propertiesIn) throws IOException { props = new Properties(); props.load(propertiesIn); } /** * Gets a property from the props file. * * @param key the key to the desired item in the properties file * (key=value) * @param defaultValue a default value in case the key, or the value are * missing * @return a property value in the form of a string * @throws IOException when the properties object was somehow not initialized properly */ public String getProperty(String key, String defaultValue) throws IOException { if (props != null) { return props.getProperty(key, defaultValue); } else { throw new IOException("EntityLinkerProperties was not successfully initialized"); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_entitylinker_Enti0100644 0000000 0000000 00000000162 14135770370 032663 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/EntityLinkerFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/EntityLinkerFactory.0100664 0001750 0001750 00000006622 14135770370 034245 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.entitylinker; import java.io.IOException; import java.util.Objects; import opennlp.tools.util.ext.ExtensionLoader; /** * Generates an EntityLinker implementation via properties file configuration * */ public class EntityLinkerFactory { /** * * * @param entityType The type of entity being linked to. This value is used to * retrieve the implementation of the entitylinker from the * entitylinker properties file. * @param properties An object that extends EntityLinkerProperties. This * object will be passed into the implemented EntityLinker * init(..) method, so it is an appropriate place to put * additional resources. * @return an EntityLinker impl * @throws java.io.IOException */ public static synchronized EntityLinker getLinker(String entityType, EntityLinkerProperties properties) throws IOException { if (entityType == null || properties == null) { throw new IllegalArgumentException("Null argument in entityLinkerFactory"); } String linkerImplFullName = properties.getProperty("linker." + entityType, ""); if (linkerImplFullName == null || linkerImplFullName.equals("")) { throw new IllegalArgumentException("linker." + entityType + " property must be set!"); } EntityLinker linker = ExtensionLoader.instantiateExtension(EntityLinker.class, linkerImplFullName); linker.init(properties); return linker; } /** * * * * @param properties An object that extends EntityLinkerProperties. This * object will be passed into the implemented EntityLinker * init(..) method, so it is an appropriate place to put * additional resources. In the properties file, the linker implementation must be * provided using "linker" as the properties key, and the * full class name as value * @return an EntityLinker impl * @throws java.io.IOException */ public static synchronized EntityLinker getLinker(EntityLinkerProperties properties) throws IOException { Objects.requireNonNull(properties, "properties argument must not be null"); String linkerImplFullName = properties.getProperty("linker", ""); if (linkerImplFullName == null || linkerImplFullName.equals("")) { throw new IllegalArgumentException("\"linker\" property must be set!"); } EntityLinker linker = ExtensionLoader.instantiateExtension(EntityLinker.class, linkerImplFullName); linker.init(properties); return linker; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java0100664 0001750 0001750 00000007320 14135770370 033162 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.entitylinker; import java.util.ArrayList; import java.util.Objects; import opennlp.tools.util.Span; /** * An "default" extended span that holds additional information about the Span * * * @param */ public class LinkedSpan extends Span { private ArrayList linkedEntries; private int sentenceid = 0; private String searchTerm; public LinkedSpan(ArrayList linkedEntries, int s, int e, String type) { super(s, e, type); this.linkedEntries = linkedEntries; } public LinkedSpan(ArrayList linkedEntries, int s, int e, String type, double prob) { super(s, e, type, prob); this.linkedEntries = linkedEntries; } public LinkedSpan(ArrayList linkedEntries, int s, int e) { super(s, e); this.linkedEntries = linkedEntries; } public LinkedSpan(ArrayList linkedEntries, Span span, int offset) { super(span, offset); this.linkedEntries = linkedEntries; } /** * Returns the n best linked entries from an external data source. For * instance, this will hold gazateer entries for a search into a geonames * gazateer * * @return */ public ArrayList getLinkedEntries() { return linkedEntries; } /** * Sets the n best linked entries from an external data source. For instance, * this will hold gazateer entries for a search into a geonames gazateer * */ public void setLinkedEntries(ArrayList linkedEntries) { this.linkedEntries = linkedEntries; } /** * Returns the id or index of the sentence from which this span was extracted * * @return */ public int getSentenceid() { return sentenceid; } /** * sets the id or index of the sentence from which this span was extracted * * @param sentenceid */ public void setSentenceid(int sentenceid) { this.sentenceid = sentenceid; } /** * Returns the search term that was used to link this span to an external data * source * * @return searchTerm */ public String getSearchTerm() { return searchTerm; } /** * sets the search term that is used to link this span to an external data * source * * @param searchTerm */ public void setSearchTerm(String searchTerm) { this.searchTerm = searchTerm; } @Override public String toString() { return "LinkedSpan\nsentenceid=" + sentenceid + "\nsearchTerm=" + searchTerm + "\nlinkedEntries=\n" + linkedEntries + "\n"; } @Override public int hashCode() { return Objects.hash(linkedEntries, sentenceid, searchTerm); } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj instanceof LinkedSpan) { final LinkedSpan other = (LinkedSpan) obj; return Objects.equals(this.linkedEntries, other.linkedEntries) && this.sentenceid == other.sentenceid && Objects.equals(this.searchTerm, other.searchTerm); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/package-info.java0100664 0001750 0001750 00000001564 14135770370 030741 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Contains packages which solve common NLP tasks. */ package opennlp.tools; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_AbstractE0100644 0000000 0000000 00000000157 14135770370 032532 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractEvaluatorTool.jav0100664 0001750 0001750 00000003404 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import opennlp.tools.util.ObjectStream; /** * Base class for evaluator tools. */ public class AbstractEvaluatorTool extends AbstractTypedParamTool { protected P params; protected ObjectStreamFactory factory; protected ObjectStream sampleStream; /** * Constructor with type parameters. * * @param sampleType class of the template parameter * @param params interface with parameters */ protected AbstractEvaluatorTool(Class sampleType, Class

params) { super(sampleType, params); } public void run(String format, String[] args) { validateAllArgs(args, this.paramsClass, format); params = ArgumentParser.parse( ArgumentParser.filter(args, this.paramsClass), this.paramsClass); factory = getStreamFactory(format); String[] fargs = ArgumentParser.filter(args, factory.getParameters()); validateFactoryArgs(factory, fargs); sampleStream = factory.create(fargs); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_Evaluatio0100644 0000000 0000000 00000000160 14135770370 032605 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/EvaluationErrorPrinter.ja0100664 0001750 0001750 00000016331 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.OutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import opennlp.tools.util.Span; import opennlp.tools.util.eval.EvaluationMonitor; /** * Note: Do not use this class, internal use only! */ public abstract class EvaluationErrorPrinter implements EvaluationMonitor { protected PrintStream printStream; protected EvaluationErrorPrinter(OutputStream outputStream) { this.printStream = new PrintStream(outputStream); } // for the sentence detector protected void printError(Span[] references, Span[] predictions, T referenceSample, T predictedSample, String sentence) { List falseNegatives = new ArrayList<>(); List falsePositives = new ArrayList<>(); findErrors(references, predictions, falseNegatives, falsePositives); if (falsePositives.size() + falseNegatives.size() > 0) { printSamples(referenceSample, predictedSample); printErrors(falsePositives, falseNegatives, sentence); } } // for namefinder, chunker... protected void printError(String id, Span[] references, Span[] predictions, T referenceSample, T predictedSample, String[] sentenceTokens) { List falseNegatives = new ArrayList<>(); List falsePositives = new ArrayList<>(); findErrors(references, predictions, falseNegatives, falsePositives); if (falsePositives.size() + falseNegatives.size() > 0) { if (id != null) { printStream.println("Id: {" + id + "}"); } printSamples(referenceSample, predictedSample); printErrors(falsePositives, falseNegatives, sentenceTokens); } } protected void printError(Span[] references, Span[] predictions, T referenceSample, T predictedSample, String[] sentenceTokens) { printError(null, references, predictions, referenceSample, predictedSample, sentenceTokens); } // for pos tagger protected void printError(String[] references, String[] predictions, T referenceSample, T predictedSample, String[] sentenceTokens) { List filteredDoc = new ArrayList<>(); List filteredRefs = new ArrayList<>(); List filteredPreds = new ArrayList<>(); for (int i = 0; i < references.length; i++) { if (!references[i].equals(predictions[i])) { filteredDoc.add(sentenceTokens[i]); filteredRefs.add(references[i]); filteredPreds.add(predictions[i]); } } if (filteredDoc.size() > 0) { printSamples(referenceSample, predictedSample); printErrors(filteredDoc, filteredRefs, filteredPreds); } } // for others protected void printError(T referenceSample, T predictedSample) { printSamples(referenceSample, predictedSample); printStream.println(); } /** * Auxiliary method to print tag errors * * @param filteredDoc * the document tokens which were tagged wrong * @param filteredRefs * the reference tags * @param filteredPreds * the predicted tags */ private void printErrors(List filteredDoc, List filteredRefs, List filteredPreds) { printStream.println("Errors: {"); printStream.println("Tok: Ref | Pred"); printStream.println("---------------"); for (int i = 0; i < filteredDoc.size(); i++) { printStream.println(filteredDoc.get(i) + ": " + filteredRefs.get(i) + " | " + filteredPreds.get(i)); } printStream.println("}\n"); } /** * Auxiliary method to print span errors * * @param falsePositives * false positives span * @param falseNegatives * false negative span * @param doc * the document text */ private void printErrors(List falsePositives, List falseNegatives, String doc) { printStream.println("False positives: {"); for (Span span : falsePositives) { printStream.println(span.getCoveredText(doc)); } printStream.println("} False negatives: {"); for (Span span : falseNegatives) { printStream.println(span.getCoveredText(doc)); } printStream.println("}\n"); } /** * Auxiliary method to print span errors * * @param falsePositives * false positives span * @param falseNegatives * false negative span * @param toks * the document tokens */ private void printErrors(List falsePositives, List falseNegatives, String[] toks) { printStream.println("False positives: {"); printStream.println(print(falsePositives, toks)); printStream.println("} False negatives: {"); printStream.println(print(falseNegatives, toks)); printStream.println("}\n"); } /** * Auxiliary method to print spans * * @param spans * the span list * @param toks * the tokens array * @return the spans as string */ private String print(List spans, String[] toks) { return Arrays.toString(Span.spansToStrings( spans.toArray(new Span[spans.size()]), toks)); } /** * Auxiliary method to print expected and predicted samples. * * @param referenceSample * the reference sample * @param predictedSample * the predicted sample */ private void printSamples(S referenceSample, S predictedSample) { String details = "Expected: {\n" + referenceSample + "}\nPredicted: {\n" + predictedSample + "}"; printStream.println(details); } /** * Outputs falseNegatives and falsePositives spans from the references and * predictions list. * * @param references * @param predictions * @param falseNegatives * [out] the false negatives list * @param falsePositives * [out] the false positives list */ private void findErrors(Span[] references, Span[] predictions, List falseNegatives, List falsePositives) { falseNegatives.addAll(Arrays.asList(references)); falsePositives.addAll(Arrays.asList(predictions)); for (Span referenceName : references) { for (Span prediction : predictions) { if (referenceName.equals(prediction)) { // got it, remove from fn and fp falseNegatives.remove(referenceName); falsePositives.remove(prediction); } } } } public void correctlyClassified(T reference, T prediction) { // do nothing } public abstract void missclassified(T reference, T prediction) ; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Ta0100644 0000000 0000000 00000000170 14135770370 032575 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplacerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TaggerModelReplace0100664 0001750 0001750 00000003711 14135770370 034066 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.File; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.postag.POSModelLoader; import opennlp.tools.parser.ParserModel; import opennlp.tools.postag.POSModel; // user should train with the POS tool public final class TaggerModelReplacerTool extends BasicCmdLineTool { public String getShortDescription() { return "replaces the tagger model in a parser model"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " parser.model tagger.model"; } public void run(String[] args) { if (args.length != 2) { System.out.println(getHelp()); } else { File parserModelInFile = new File(args[0]); ParserModel parserModel = new ParserModelLoader().load(parserModelInFile); File taggerModelInFile = new File(args[1]); POSModel taggerModel = new POSModelLoader().load(taggerModelInFile); ParserModel updatedParserModel = parserModel.updateTaggerModel(taggerModel); CmdLineUtil.writeModel("parser", parserModelInFile, updatedParserModel); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Pa0100644 0000000 0000000 00000000164 14135770370 032574 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserConverterToo0100664 0001750 0001750 00000002051 14135770370 034202 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.parser.Parse; public class ParserConverterTool extends AbstractConverterTool { public ParserConverterTool() { super(Parse.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Tr0100644 0000000 0000000 00000000157 14135770370 032623 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/TrainingParams.jav0100664 0001750 0001750 00000003500 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParams for Parser. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "CHUNKING|TREEINSERT", description = "one of CHUNKING or TREEINSERT, default is CHUNKING.") @OptionalParameter(defaultValue = "CHUNKING") String getParserType(); @ParameterDescription(valueName = "className", description = "head rules artifact serializer class name") @OptionalParameter String getHeadRulesSerializerImpl(); @ParameterDescription(valueName = "headRulesFile", description = "head rules file.") File getHeadRules(); @ParameterDescription(valueName = "true|false", description = "Learn to generate function tags.") @OptionalParameter(defaultValue = "false") Boolean getFun(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Mo0100644 0000000 0000000 00000000161 14135770370 032604 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ModelUpdaterTool.j0100664 0001750 0001750 00000005573 14135770370 034063 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.AbstractTypedParamTool; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.ObjectStreamFactory; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserModel; import opennlp.tools.util.ObjectStream; /** * Abstract base class for tools which update the parser model. */ abstract class ModelUpdaterTool extends AbstractTypedParamTool { interface ModelUpdaterParams extends TrainingToolParams { } protected ModelUpdaterTool() { super(Parse.class, ModelUpdaterParams.class); } protected abstract ParserModel trainAndUpdate(ParserModel originalModel, ObjectStream parseSamples, ModelUpdaterParams parameters) throws IOException; public final void run(String format, String[] args) { ModelUpdaterParams params = validateAndParseParams( ArgumentParser.filter(args, ModelUpdaterParams.class), ModelUpdaterParams.class); // Load model to be updated File modelFile = params.getModel(); ParserModel originalParserModel = new ParserModelLoader().load(modelFile); ObjectStreamFactory factory = getStreamFactory(format); String[] fargs = ArgumentParser.filter(args, factory.getParameters()); validateFactoryArgs(factory, fargs); ObjectStream sampleStream = factory.create(fargs); ParserModel updatedParserModel; try { updatedParserModel = trainAndUpdate(originalParserModel, sampleStream, params); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("parser", modelFile, updatedParserModel); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTool.java0100664 0001750 0001750 00000013526 14135770370 033417 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.regex.Pattern; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.cmdline.tokenizer.TokenizerModelLoader; import opennlp.tools.parser.AbstractBottomUpParser; import opennlp.tools.parser.Parse; import opennlp.tools.parser.Parser; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public final class ParserTool extends BasicCmdLineTool { public String getShortDescription() { return "performs full syntactic parsing"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " [-bs n -ap n -k n -tk tok_model] model < sentences \n" + "-bs n: Use a beam size of n.\n" + "-ap f: Advance outcomes in with at least f% of the probability mass.\n" + "-k n: Show the top n parses. This will also display their log-probablities.\n" + "-tk tok_model: Use the specified tokenizer model to tokenize the sentences. " + "Defaults to a WhitespaceTokenizer."; } private static Pattern untokenizedParenPattern1 = Pattern.compile("([^ ])([({)}])"); private static Pattern untokenizedParenPattern2 = Pattern.compile("([({)}])([^ ])"); public static Parse[] parseLine(String line, Parser parser, int numParses) { return parseLine( line, parser, WhitespaceTokenizer.INSTANCE, numParses ); } public static Parse[] parseLine(String line, Parser parser, Tokenizer tokenizer, int numParses) { // fix some parens patterns line = untokenizedParenPattern1.matcher(line).replaceAll("$1 $2"); line = untokenizedParenPattern2.matcher(line).replaceAll("$1 $2"); // tokenize List tokens = Arrays.asList( tokenizer.tokenize(line)); String text = String.join(" ", tokens); Parse p = new Parse(text, new Span(0, text.length()), AbstractBottomUpParser.INC_NODE, 0, 0); int start = 0; int i = 0; for (Iterator ti = tokens.iterator(); ti.hasNext(); i++) { String tok = ti.next(); p.insert(new Parse(text, new Span(start, start + tok.length()), AbstractBottomUpParser.TOK_NODE, 0, i)); start += tok.length() + 1; } Parse[] parses; if (numParses == 1) { parses = new Parse[]{parser.parse(p)}; } else { parses = parser.parse(p, numParses); } return parses; } public void run(String[] args) { if (args.length < 1) { System.out.println(getHelp()); } else { ParserModel model = new ParserModelLoader().load(new File(args[args.length - 1])); Integer beamSize = CmdLineUtil.getIntParameter("-bs", args); if (beamSize == null) { beamSize = AbstractBottomUpParser.defaultBeamSize; } Integer numParses = CmdLineUtil.getIntParameter("-k", args); boolean showTopK; if (numParses == null) { numParses = 1; showTopK = false; } else { showTopK = true; } Double advancePercentage = CmdLineUtil.getDoubleParameter("-ap", args); if (advancePercentage == null) { advancePercentage = AbstractBottomUpParser.defaultAdvancePercentage; } Tokenizer tokenizer = WhitespaceTokenizer.INSTANCE; String tokenizerModelName = CmdLineUtil.getParameter( "-tk", args ); if (tokenizerModelName != null ) { TokenizerModel tokenizerModel = new TokenizerModelLoader().load(new File(tokenizerModelName)); tokenizer = new TokenizerME( tokenizerModel ); } Parser parser = ParserFactory.create(model, beamSize, advancePercentage); ObjectStream lineStream = null; PerformanceMonitor perfMon = null; try { lineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String line; while ((line = lineStream.read()) != null) { if (line.trim().length() == 0) { System.out.println(); } else { Parse[] parses = parseLine(line, parser, tokenizer, numParses); for (int pi = 0, pn = parses.length; pi < pn; pi++) { if (showTopK) { System.out.print(pi + " " + parses[pi].getProb() + " "); } parses[pi].show(); perfMon.incrementCounter(); } } } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Ch0100644 0000000 0000000 00000000166 14135770370 032570 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/CheckModelUpdaterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/CheckModelUpdaterT0100664 0001750 0001750 00000004530 14135770370 034047 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.IOException; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.chunking.ParserEventStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.model.ModelUtil; // trains a new check model ... public final class CheckModelUpdaterTool extends ModelUpdaterTool { public String getShortDescription() { return "trains and updates the check model in a parser model"; } @Override protected ParserModel trainAndUpdate(ParserModel originalModel, ObjectStream parseSamples, ModelUpdaterParams parameters) throws IOException { Dictionary mdict = ParserTrainerTool.buildDictionary(parseSamples, originalModel.getHeadRules(), 5); parseSamples.reset(); // TODO: Maybe that should be part of the ChunkingParser ... // Training build System.out.println("Training check model"); ObjectStream bes = new ParserEventStream(parseSamples, originalModel.getHeadRules(), ParserEventTypeEnum.CHECK, mdict); EventTrainer trainer = TrainerFactory.getEventTrainer( ModelUtil.createDefaultTrainingParameters(), null); MaxentModel checkModel = trainer.train(bes); parseSamples.close(); return originalModel.updateCheckModel(checkModel); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Pa0100644 0000000 0000000 00000000164 14135770370 032574 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserEvaluatorToo0100664 0001750 0001750 00000004431 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.IOException; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.parser.Parse; import opennlp.tools.parser.Parser; import opennlp.tools.parser.ParserEvaluator; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; public class ParserEvaluatorTool extends AbstractEvaluatorTool { public ParserEvaluatorTool() { super(Parse.class, EvaluatorParams.class); } public String getShortDescription() { return "Measures the performance of the Parser model with the reference data"; } @Override public void run(String format, String[] args) { super.run(format, args); ParserModel model = new ParserModelLoader().load(params.getModel()); Parser parser = ParserFactory.create(model); ParserEvaluator evaluator = new ParserEvaluator(parser); System.out.print("Evaluating ... "); try { evaluator.evaluate(sampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); System.out.println(); System.out.println(evaluator.getFMeasure()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Pa0100644 0000000 0000000 00000000162 14135770370 032572 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserTrainerTool.0100664 0001750 0001750 00000014427 14135770370 034103 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EncodingParameter; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.cmdline.parser.ParserTrainerTool.TrainerToolParams; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.parser.HeadRules; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.ParserType; import opennlp.tools.parser.chunking.Parser; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.ModelUtil; public final class ParserTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams, EncodingParameter { } public ParserTrainerTool() { super(Parse.class, TrainerToolParams.class); } public String getShortDescription() { return "trains the learnable parser"; } static Dictionary buildDictionary(ObjectStream parseSamples, HeadRules headRules, int cutoff) { System.err.print("Building dictionary ..."); Dictionary mdict; try { mdict = Parser. buildDictionary(parseSamples, headRules, cutoff); } catch (IOException e) { System.err.println("Error while building dictionary: " + e.getMessage()); mdict = null; } System.err.println("done"); return mdict; } static ParserType parseParserType(String typeAsString) { ParserType type = null; if (typeAsString != null && typeAsString.length() > 0) { type = ParserType.parse(typeAsString); if (type == null) { throw new TerminateToolException(1, "ParserType training parameter '" + typeAsString + "' is invalid!"); } } return type; } static HeadRules creaeHeadRules(TrainerToolParams params) throws IOException { ArtifactSerializer headRulesSerializer; if (params.getHeadRulesSerializerImpl() != null) { headRulesSerializer = ExtensionLoader.instantiateExtension(ArtifactSerializer.class, params.getHeadRulesSerializerImpl()); } else { if ("en".equals(params.getLang()) || "eng".equals(params.getLang())) { headRulesSerializer = new opennlp.tools.parser.lang.en.HeadRules.HeadRulesSerializer(); } else if ("es".equals(params.getLang()) || "spa".equals(params.getLang())) { headRulesSerializer = new opennlp.tools.parser.lang.es.AncoraSpanishHeadRules.HeadRulesSerializer(); } else { // default for now, this case should probably cause an error ... headRulesSerializer = new opennlp.tools.parser.lang.en.HeadRules.HeadRulesSerializer(); } } Object headRulesObject = headRulesSerializer.create(new FileInputStream(params.getHeadRules())); if (headRulesObject instanceof HeadRules) { return (HeadRules) headRulesObject; } else { throw new TerminateToolException(-1, "HeadRules Artifact Serializer must create an object of type HeadRules!"); } } // TODO: Add param to train tree insert parser public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), true); if (mlParams != null) { if (!TrainerFactory.isValid(mlParams.getParameters("build"))) { throw new TerminateToolException(1, "Build training parameters are invalid!"); } if (!TrainerFactory.isValid(mlParams.getParameters("check"))) { throw new TerminateToolException(1, "Check training parameters are invalid!"); } if (!TrainerFactory.isValid(mlParams.getParameters("attach"))) { throw new TerminateToolException(1, "Attach training parameters are invalid!"); } if (!TrainerFactory.isValid(mlParams.getParameters("tagger"))) { throw new TerminateToolException(1, "Tagger training parameters are invalid!"); } if (!TrainerFactory.isValid(mlParams.getParameters("chunker"))) { throw new TerminateToolException(1, "Chunker training parameters are invalid!"); } } if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("parser model", modelOutFile); ParserModel model; try { HeadRules rules = creaeHeadRules(params); ParserType type = parseParserType(params.getParserType()); if (params.getFun()) { Parse.useFunctionTags(true); } if (ParserType.CHUNKING.equals(type)) { model = opennlp.tools.parser.chunking.Parser.train( params.getLang(), sampleStream, rules, mlParams); } else if (ParserType.TREEINSERT.equals(type)) { model = opennlp.tools.parser.treeinsert.Parser.train(params.getLang(), sampleStream, rules, mlParams); } else { throw new IllegalStateException(); } } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("parser", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Pa0100644 0000000 0000000 00000000162 14135770370 032572 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/ParserModelLoader.0100664 0001750 0001750 00000002651 14135770370 034024 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.parser.ParserModel; import opennlp.tools.util.InvalidFormatException; /** * Loads a Parser Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public final class ParserModelLoader extends ModelLoader { public ParserModelLoader() { super("Parser"); } @Override protected ParserModel loadModel(InputStream modelIn) throws IOException, InvalidFormatException { return new ParserModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_parser_Bu0100644 0000000 0000000 00000000166 14135770370 032604 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/BuildModelUpdaterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/parser/BuildModelUpdaterT0100664 0001750 0001750 00000004506 14135770370 034074 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.parser; import java.io.IOException; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserEventTypeEnum; import opennlp.tools.parser.ParserModel; import opennlp.tools.parser.chunking.ParserEventStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.model.ModelUtil; public final class BuildModelUpdaterTool extends ModelUpdaterTool { public String getShortDescription() { return "trains and updates the build model in a parser model"; } @Override protected ParserModel trainAndUpdate(ParserModel originalModel, ObjectStream parseSamples, ModelUpdaterParams parameters) throws IOException { Dictionary mdict = ParserTrainerTool.buildDictionary(parseSamples, originalModel.getHeadRules(), 5); parseSamples.reset(); // TODO: training individual models should be in the chunking parser, not here // Training build System.out.println("Training builder"); ObjectStream bes = new ParserEventStream(parseSamples, originalModel.getHeadRules(), ParserEventTypeEnum.BUILD, mdict); EventTrainer trainer = TrainerFactory.getEventTrainer( ModelUtil.createDefaultTrainingParameters(), null); MaxentModel buildModel = trainer.train(bes); parseSamples.close(); return originalModel.updateBuildModel(buildModel); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_AbstractT0100644 0000000 0000000 00000000160 14135770370 032543 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTypedParamTool.ja0100664 0001750 0001750 00000004042 14135770370 034063 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; /** * Base class for tools which take additional parameters. For example, trainers or evaluators. */ public abstract class AbstractTypedParamTool extends TypedCmdLineTool { /** * variable to access the parameters */ protected final Class

paramsClass; /** * Constructor with type parameters. * * @param sampleType class of the template parameter * @param paramsClass interface with parameters */ protected AbstractTypedParamTool(Class sampleType, Class

paramsClass) { super(sampleType); this.paramsClass = paramsClass; } public String getHelp(String format) { if ("".equals(format) || StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) { return getBasicHelp(paramsClass, StreamFactoryRegistry.getFactory(type, StreamFactoryRegistry.DEFAULT_FORMAT).getParameters()); } else { ObjectStreamFactory factory = StreamFactoryRegistry.getFactory(type, format); if (null == factory) { throw new TerminateToolException(1, "Format " + format + " is not found.\n" + getHelp()); } return "Usage: " + CLI.CMD + " " + getName() + "." + format + " " + ArgumentParser.createUsage(paramsClass, factory.getParameters()); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/BasicCmdLineTool.java0100664 0001750 0001750 00000002222 14135770370 033133 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; /** * A simple tool which can be executed from the command line. *

* Note: Do not use this class, internal use only! */ public abstract class BasicCmdLineTool extends CmdLineTool { /** * Executes the tool with the given parameters. * * @param args arguments */ public abstract void run(String[] args); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/ModelLoader.java0100664 0001750 0001750 00000004537 14135770370 032222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.BufferedInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Objects; import opennlp.tools.util.InvalidFormatException; /** * Loads a model and does all the error handling for the command line tools. *

* Note: Do not use this class, internal use only! * * @param */ public abstract class ModelLoader { private final String modelName; protected ModelLoader(String modelName) { this.modelName = Objects.requireNonNull(modelName, "modelName must not be null!"); } protected abstract T loadModel(InputStream modelIn) throws IOException; public T load(File modelFile) { long beginModelLoadingTime = System.currentTimeMillis(); CmdLineUtil.checkInputFile(modelName + " model", modelFile); System.err.print("Loading " + modelName + " model ... "); T model; try (InputStream modelIn = new BufferedInputStream( CmdLineUtil.openInFile(modelFile), CmdLineUtil.IO_BUFFER_SIZE)) { model = loadModel(modelIn); } catch (InvalidFormatException e) { System.err.println("failed"); throw new TerminateToolException(-1, "Model has invalid format", e); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while loading model file '" + modelFile + "'", e); } long modelLoadingDuration = System.currentTimeMillis() - beginModelLoadingTime; System.err.printf("done (%.3fs)\n", modelLoadingDuration / 1000d); return model; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_entitylin0100644 0000000 0000000 00000000167 14135770370 032702 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/entitylinker/EntityLinkerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/entitylinker/EntityLinker0100664 0001750 0001750 00000011657 14135770370 034256 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.entitylinker; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.entitylinker.EntityLinker; import opennlp.tools.entitylinker.EntityLinkerFactory; import opennlp.tools.entitylinker.EntityLinkerProperties; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public class EntityLinkerTool extends BasicCmdLineTool { @Override public String getShortDescription() { return "links an entity to an external data set"; } @Override public void run(String[] args) { if (0 == args.length) { System.out.println(getHelp()); } else { // TODO: Ask Mark if we can remove the type, the user knows upfront if he tries // to link place names or company mentions ... String entityType = "location"; // Load the properties, they should contain everything that is necessary to instantiate // the component // TODO: Entity Linker Properties constructor should not duplicate code EntityLinkerProperties properties; try { properties = new EntityLinkerProperties(new File(args[0])); } catch (IOException e) { throw new TerminateToolException(-1, "Failed to load the properties file!"); } // TODO: It should not just throw Exception. EntityLinker entityLinker; try { entityLinker = EntityLinkerFactory.getLinker(entityType, properties); } catch (Exception e) { throw new TerminateToolException(-1, "Failed to instantiate the Entity Linker: " + e.getMessage()); } PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); try (ObjectStream untokenizedLineStream = new PlainTextByLineStream( new SystemInputStreamFactory(), SystemInputStreamFactory.encoding())) { List document = new ArrayList<>(); String line; while ((line = untokenizedLineStream.read()) != null) { if (line.trim().isEmpty()) { // Run entity linker ... and output result ... StringBuilder text = new StringBuilder(); Span[] sentences = new Span[document.size()]; Span[][] tokensBySentence = new Span[document.size()][]; Span[][] namesBySentence = new Span[document.size()][]; for (int i = 0; i < document.size(); i++) { NameSample sample = document.get(i); namesBySentence[i] = sample.getNames(); int sentenceBegin = text.length(); Span[] tokens = new Span[sample.getSentence().length]; // for all tokens for (int ti = 0; ti < sample.getSentence().length; ti++) { int tokenBegin = text.length(); text.append(sample.getSentence()[ti]); text.append(" "); tokens[ti] = new Span(tokenBegin, text.length()); } tokensBySentence[i] = tokens; sentences[i] = new Span(sentenceBegin, text.length()); text.append("\n"); } List linkedSpans = entityLinker.find(text.toString(), sentences, tokensBySentence, namesBySentence); for (Span linkedSpan : linkedSpans) { System.out.println(linkedSpan); } perfMon.incrementCounter(document.size()); document.clear(); } else { document.add(NameSample.parse(line, false)); } } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } @Override public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_AbstractC0100644 0000000 0000000 00000000157 14135770370 032530 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractConverterTool.jav0100664 0001750 0001750 00000010212 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.IOException; import java.util.Map; import opennlp.tools.util.ObjectStream; /** * Base class for format conversion tools. * * @param class of data sample the tool converts, for example {@link opennlp.tools.postag * .POSSample} */ public abstract class AbstractConverterTool extends TypedCmdLineTool { /** * Constructor with type parameter. * * @param sampleType class of the template parameter */ protected AbstractConverterTool(Class sampleType) { super(sampleType); } public String getShortDescription() { Map> factories = StreamFactoryRegistry.getFactories(type); StringBuilder help = new StringBuilder(); if (2 == factories.keySet().size()) { //opennlp + foreign for (String format : factories.keySet()) { if (!StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) { help.append(format); } } return "converts " + help + " data format to native OpenNLP format"; } else if (2 < factories.keySet().size()) { for (String format : factories.keySet()) { if (!StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) { help.append(format).append(","); } } return "converts foreign data formats (" + help.substring(0, help.length() - 1 ) + ") to native OpenNLP format"; } else { throw new AssertionError("There should be more than 1 factory registered for converter " + "tool"); } } private String createHelpString(String format, String usage) { return "Usage: " + CLI.CMD + " " + getName() + " " + format + " " + usage; } public String getHelp() { Map> factories = StreamFactoryRegistry.getFactories(type); StringBuilder help = new StringBuilder("help|"); for (String formatName : factories.keySet()) { if (!StreamFactoryRegistry.DEFAULT_FORMAT.equals(formatName)) { help.append(formatName).append("|"); } } return createHelpString(help.substring(0, help.length() - 1), "[help|options...]"); } public String getHelp(String format) { return getHelp(); } public void run(String format, String[] args) { if (0 == args.length) { System.out.println(getHelp()); } else { format = args[0]; ObjectStreamFactory streamFactory = getStreamFactory(format); String[] formatArgs = new String[args.length - 1]; System.arraycopy(args, 1, formatArgs, 0, formatArgs.length); String helpString = createHelpString(format, ArgumentParser.createUsage(streamFactory.getParameters())); if (0 == formatArgs.length || (1 == formatArgs.length && "help".equals(formatArgs[0]))) { System.out.println(helpString); System.exit(0); } String errorMessage = ArgumentParser.validateArgumentsLoudly(formatArgs, streamFactory.getParameters()); if (null != errorMessage) { throw new TerminateToolException(1, errorMessage + "\n" + helpString); } try (ObjectStream sampleStream = streamFactory.create(formatArgs)) { Object sample; while ((sample = sampleStream.read()) != null) { System.out.println(sample); } } catch (IOException e) { throw new TerminateToolException(-1, "IO error while converting data : " + e.getMessage(), e); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000177 14135770370 032604 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderE0100664 0001750 0001750 00000012443 14135770370 034005 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderEvaluatorTool.EvalToolParams; import opennlp.tools.cmdline.params.DetailedFMeasureEvaluatorParams; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleTypeFilter; import opennlp.tools.namefind.TokenNameFinderEvaluationMonitor; import opennlp.tools.namefind.TokenNameFinderEvaluator; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.eval.EvaluationMonitor; public final class TokenNameFinderEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams, DetailedFMeasureEvaluatorParams, FineGrainedEvaluatorParams { @OptionalParameter @ParameterDescription(valueName = "types", description = "name types to use for evaluation") String getNameTypes(); } public TokenNameFinderEvaluatorTool() { super(NameSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the NameFinder model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); TokenNameFinderModel model = new TokenNameFinderModelLoader().load(params.getModel()); List> listeners = new LinkedList>(); if (params.getMisclassified()) { listeners.add(new NameEvaluationErrorListener()); } TokenNameFinderDetailedFMeasureListener detailedFListener = null; if (params.getDetailedF()) { detailedFListener = new TokenNameFinderDetailedFMeasureListener(); listeners.add(detailedFListener); } TokenNameFinderFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new TokenNameFinderFineGrainedReportListener(model.getSequenceCodec(), reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating Name Finder fine-grained report file: " + e.getMessage()); } } if (params.getNameTypes() != null) { String[] nameTypes = params.getNameTypes().split(","); sampleStream = new NameSampleTypeFilter(nameTypes, sampleStream); } TokenNameFinderEvaluator evaluator = new TokenNameFinderEvaluator( new NameFinderME(model), listeners.toArray(new TokenNameFinderEvaluationMonitor[listeners.size()])); final PerformanceMonitor monitor = new PerformanceMonitor("sent"); try (ObjectStream measuredSampleStream = new ObjectStream() { public NameSample read() throws IOException { monitor.incrementCounter(); return sampleStream.read(); } public void reset() throws IOException { sampleStream.reset(); } public void close() throws IOException { sampleStream.close(); } }) { monitor.startAndPrintThroughput(); evaluator.evaluate(measuredSampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } // sorry that this can fail monitor.stopAndPrintFinalResult(); System.out.println(); if (reportFile != null) { reportListener.writeReport(); } if (detailedFListener == null) { System.out.println(evaluator.getFMeasure()); } else { System.out.println(detailedFListener); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000161 14135770370 032575 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TrainingParams.j0100664 0001750 0001750 00000004140 14135770370 034031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParameters for Name Finder. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "modelType", description = "The type of the token name finder model") @OptionalParameter String getType(); @ParameterDescription(valueName = "resourcesDir", description = "The resources directory") @OptionalParameter File getResources(); @ParameterDescription(valueName = "featuregenFile", description = "The feature generator descriptor file") @OptionalParameter File getFeaturegen(); @OptionalParameter @ParameterDescription(valueName = "types", description = "name types to use for training") String getNameTypes(); @OptionalParameter(defaultValue = "opennlp.tools.namefind.BioCodec") @ParameterDescription(valueName = "codec", description = "sequence codec used to code name spans") String getSequenceCodec(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of TokenNameFinderFactory") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000173 14135770370 032600 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/NameSampleCountersStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/NameSampleCounte0100664 0001750 0001750 00000005422 14135770370 034066 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.Map; import opennlp.tools.namefind.NameSample; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * Counts tokens, sentences and names by type */ public class NameSampleCountersStream extends FilterObjectStream { private int sentenceCount; private int tokenCount; private Map nameCounters = new HashMap<>(); protected NameSampleCountersStream(ObjectStream samples) { super(samples); } @Override public NameSample read() throws IOException { NameSample sample = samples.read(); if (sample != null) { sentenceCount++; tokenCount += sample.getSentence().length; for (Span nameSpan : sample.getNames()) { Integer nameCounter = nameCounters.get(nameSpan.getType()); if (nameCounter == null) { nameCounter = 0; } nameCounters.put(nameSpan.getType(), nameCounter + 1); } } return sample; } @Override public void reset() throws IOException, UnsupportedOperationException { super.reset(); sentenceCount = 0; tokenCount = 0; nameCounters = new HashMap<>(); } public int getSentenceCount() { return sentenceCount; } public int getTokenCount() { return tokenCount; } public Map getNameCounters() { return Collections.unmodifiableMap(nameCounters); } public void printSummary() { System.out.println("Training data summary:"); System.out.println("#Sentences: " + getSentenceCount()); System.out.println("#Tokens: " + getTokenCount()); int totalNames = 0; for (Map.Entry counter : getNameCounters().entrySet()) { System.out.println("#" + counter.getKey() + " entities: " + counter.getValue()); totalNames += counter.getValue(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000166 14135770370 032602 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderT0100664 0001750 0001750 00000007504 14135770370 034026 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.Span; public final class TokenNameFinderTool extends BasicCmdLineTool { public String getShortDescription() { return "learnable name finder"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model1 model2 ... modelN < sentences"; } @Override public void run(String[] args) { if (args.length == 0) { System.out.println(getHelp()); } else { NameFinderME[] nameFinders = new NameFinderME[args.length]; for (int i = 0; i < nameFinders.length; i++) { TokenNameFinderModel model = new TokenNameFinderModelLoader().load(new File(args[i])); nameFinders[i] = new NameFinderME(model); } // ObjectStream untokenizedLineStream = // new PlainTextByLineStream(new InputStreamReader(System.in)); ObjectStream untokenizedLineStream; PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); try { untokenizedLineStream = new PlainTextByLineStream( new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); String line; while ((line = untokenizedLineStream.read()) != null) { String[] whitespaceTokenizerLine = WhitespaceTokenizer.INSTANCE.tokenize(line); // A new line indicates a new document, // adaptive data must be cleared for a new document if (whitespaceTokenizerLine.length == 0) { for (NameFinderME nameFinder : nameFinders) { nameFinder.clearAdaptiveData(); } } List names = new ArrayList<>(); for (TokenNameFinder nameFinder : nameFinders) { Collections.addAll(names, nameFinder.find(whitespaceTokenizerLine)); } // Simple way to drop intersecting spans, otherwise the // NameSample is invalid Span[] reducedNames = NameFinderME.dropOverlappingSpans( names.toArray(new Span[names.size()])); NameSample nameSample = new NameSample(whitespaceTokenizerLine, reducedNames, false); System.out.println(nameSample); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000177 14135770370 032604 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderC0100664 0001750 0001750 00000002263 14135770370 034002 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.namefind.NameSample; /** * Tool to convert multiple data formats into native OpenNLP name finder training * format. */ public class TokenNameFinderConverterTool extends AbstractConverterTool { public TokenNameFinderConverterTool() { super(NameSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000176 14135770370 032603 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/NameEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/NameEvaluationEr0100664 0001750 0001750 00000003514 14135770370 034065 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.TokenNameFinderEvaluationMonitor; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. * */ public class NameEvaluationErrorListener extends EvaluationErrorPrinter implements TokenNameFinderEvaluationMonitor { /** * Creates a listener that will print to System.err */ public NameEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public NameEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(NameSample reference, NameSample prediction) { printError(reference.getId(), reference.getNames(), prediction.getNames(), reference, prediction, reference.getSentence()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000175 14135770370 032602 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderT0100664 0001750 0001750 00000015214 14135770370 034023 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool.TrainerToolParams; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.namefind.BilouCodec; import opennlp.tools.namefind.BioCodec; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleTypeFilter; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.featuregen.GeneratorFactory; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.ModelUtil; public final class TokenNameFinderTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public TokenNameFinderTrainerTool() { super(NameSample.class, TrainerToolParams.class); } public String getShortDescription() { return "trainer for the learnable name finder"; } static byte[] openFeatureGeneratorBytes(String featureGenDescriptorFile) { if (featureGenDescriptorFile != null) { return openFeatureGeneratorBytes(new File(featureGenDescriptorFile)); } return null; } public static byte[] openFeatureGeneratorBytes(File featureGenDescriptorFile) { byte[] featureGeneratorBytes = null; // load descriptor file into memory if (featureGenDescriptorFile != null) { try (InputStream bytesIn = CmdLineUtil.openInFile(featureGenDescriptorFile)) { featureGeneratorBytes = ModelUtil.read(bytesIn); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } } return featureGeneratorBytes; } /** * Load the resources, such as dictionaries, by reading the feature xml descriptor * and looking into the directory passed as argument. * @param resourcePath the directory in which the resources are to be found * @param featureGenDescriptor the feature xml descriptor * @return a map consisting of the file name of the resource and its corresponding Object */ public static Map loadResources(File resourcePath, File featureGenDescriptor) throws IOException { Map resources = new HashMap<>(); if (resourcePath != null) { Map artifactSerializers = new HashMap<>(); if (featureGenDescriptor != null) { try (InputStream xmlDescriptorIn = CmdLineUtil.openInFile(featureGenDescriptor)) { artifactSerializers.putAll( GeneratorFactory.extractArtifactSerializerMappings(xmlDescriptorIn)); } } for (Map.Entry serializerMapping : artifactSerializers.entrySet()) { String resourceName = serializerMapping.getKey(); try (InputStream resourceIn = CmdLineUtil.openInFile(new File(resourcePath, resourceName))) { resources.put(resourceName, serializerMapping.getValue().create(resourceIn)); } } } return resources; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), true); if (mlParams == null) { mlParams = new TrainingParameters(); } File modelOutFile = params.getModel(); byte[] featureGeneratorBytes = openFeatureGeneratorBytes(params.getFeaturegen()); // TODO: Support Custom resources: // Must be loaded into memory, or written to tmp file until descriptor // is loaded which defines parses when model is loaded Map resources; try { resources = loadResources(params.getResources(), params.getFeaturegen()); } catch (IOException e) { throw new TerminateToolException(-1, e.getMessage(), e); } CmdLineUtil.checkOutputFile("name finder model", modelOutFile); if (params.getNameTypes() != null) { String[] nameTypes = params.getNameTypes().split(","); sampleStream = new NameSampleTypeFilter(nameTypes, sampleStream); } String sequenceCodecImplName = params.getSequenceCodec(); if ("BIO".equals(sequenceCodecImplName)) { sequenceCodecImplName = BioCodec.class.getName(); } else if ("BILOU".equals(sequenceCodecImplName)) { sequenceCodecImplName = BilouCodec.class.getName(); } SequenceCodec sequenceCodec = TokenNameFinderFactory.instantiateSequenceCodec(sequenceCodecImplName); TokenNameFinderFactory nameFinderFactory; try { nameFinderFactory = TokenNameFinderFactory.create(params.getFactory(), featureGeneratorBytes, resources, sequenceCodec); } catch (InvalidFormatException e) { throw new TerminateToolException(-1, e.getMessage(), e); } NameSampleCountersStream counters = new NameSampleCountersStream(sampleStream); sampleStream = counters; TokenNameFinderModel model; try { model = opennlp.tools.namefind.NameFinderME.train( params.getLang(), params.getType(), sampleStream, mlParams, nameFinderFactory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println(); counters.printSummary(); System.out.println(); CmdLineUtil.writeModel("name finder", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000175 14135770370 032602 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderM0100664 0001750 0001750 00000002651 14135770370 034015 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.namefind.TokenNameFinderModel; /** * Loads a Token Name Finder Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public final class TokenNameFinderModelLoader extends ModelLoader { public TokenNameFinderModelLoader() { super("Token Name Finder"); } @Override protected TokenNameFinderModel loadModel(InputStream modelIn) throws IOException { return new TokenNameFinderModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000213 14135770370 032573 xustar000000000 0000000 139 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderFineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderF0100664 0001750 0001750 00000006142 14135770370 034005 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.OutputStream; import java.util.Comparator; import java.util.Map; import opennlp.tools.cmdline.FineGrainedReportListener; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.TokenNameFinderEvaluationMonitor; import opennlp.tools.util.SequenceCodec; /** * Generates a detailed report for the NameFinder. *

* It is possible to use it from an API and access the statistics using the * provided getters */ public class TokenNameFinderFineGrainedReportListener extends FineGrainedReportListener implements TokenNameFinderEvaluationMonitor { private SequenceCodec sequenceCodec; /** * Creates a listener that will print to {@link System#err} */ public TokenNameFinderFineGrainedReportListener(SequenceCodec seqCodec) { this(seqCodec, System.err); } /** * Creates a listener that prints to a given {@link OutputStream} */ public TokenNameFinderFineGrainedReportListener(SequenceCodec seqCodec, OutputStream outputStream) { super(outputStream); this.sequenceCodec = seqCodec; } // methods inherited from EvaluationMonitor public void missclassified(NameSample reference, NameSample prediction) { statsAdd(reference, prediction); } public void correctlyClassified(NameSample reference, NameSample prediction) { statsAdd(reference, prediction); } private void statsAdd(NameSample reference, NameSample prediction) { String[] refTags = sequenceCodec.encode(reference.getNames(), reference.getSentence().length); String[] predTags = sequenceCodec.encode(prediction.getNames(), prediction.getSentence().length); // we don' want it to compute token frequency, so we pass an array of empty strings instead // of tokens getStats().add(new String[reference.getSentence().length], refTags, predTags); } @Override public Comparator getMatrixLabelComparator(Map confusionMatrix) { return new GroupedMatrixLabelComparator(confusionMatrix); } @Override public Comparator getLabelComparator(Map map) { return new GroupedLabelComparator(map); } public void writeReport() { printGeneralStatistics(); printTagsErrorRank(); printGeneralConfusionTable(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000212 14135770370 032572 xustar000000000 0000000 138 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderDetailedFMeasureListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderD0100664 0001750 0001750 00000002413 14135770370 034000 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import opennlp.tools.cmdline.DetailedFMeasureListener; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.TokenNameFinderEvaluationMonitor; import opennlp.tools.util.Span; public class TokenNameFinderDetailedFMeasureListener extends DetailedFMeasureListener implements TokenNameFinderEvaluationMonitor { @Override protected Span[] asSpanArray(NameSample sample) { return sample.getNames(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000176 14135770370 032603 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionaryCreatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/CensusDictionary0100664 0001750 0001750 00000010402 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.formats.NameFinderCensus90NameStream; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.StringList; /** * This tool helps create a loadable dictionary for the {@code NameFinder}, * from data collected from US Census data. *

* Data for the US Census and names can be found here for the 1990 Census: *
* www.census.gov */ public class CensusDictionaryCreatorTool extends BasicCmdLineTool { /** * Create a list of expected parameters. */ interface Parameters { @ParameterDescription(valueName = "code") @OptionalParameter(defaultValue = "eng") String getLang(); @ParameterDescription(valueName = "charsetName") @OptionalParameter(defaultValue = "UTF-8") String getEncoding(); @ParameterDescription(valueName = "censusDict") String getCensusData(); @ParameterDescription(valueName = "dict") String getDict(); } public String getShortDescription() { return "Converts 1990 US Census names into a dictionary"; } public String getHelp() { return getBasicHelp(Parameters.class); } /** * Creates a dictionary. * * @param sampleStream stream of samples. * @return a {@code Dictionary} class containing the name dictionary * built from the input file. * @throws IOException IOException */ public static Dictionary createDictionary(ObjectStream sampleStream) throws IOException { Dictionary mNameDictionary = new Dictionary(true); StringList entry; entry = sampleStream.read(); while (entry != null) { if (!mNameDictionary.contains(entry)) { mNameDictionary.put(entry); } entry = sampleStream.read(); } return mNameDictionary; } public void run(String[] args) { Parameters params = validateAndParseParams(args, Parameters.class); File testData = new File(params.getCensusData()); File dictOutFile = new File(params.getDict()); CmdLineUtil.checkInputFile("Name data", testData); CmdLineUtil.checkOutputFile("Dictionary file", dictOutFile); InputStreamFactory sampleDataIn = CmdLineUtil.createInputStreamFactory(testData); Dictionary mDictionary; try ( ObjectStream sampleStream = new NameFinderCensus90NameStream( sampleDataIn, Charset.forName(params.getEncoding()))) { System.out.println("Creating Dictionary..."); mDictionary = createDictionary(sampleStream); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } System.out.println("Saving Dictionary..."); try (OutputStream out = new FileOutputStream(dictOutFile)) { mDictionary.serialize(out); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while writing dictionary file: " + e.getMessage(), e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_namefind_0100644 0000000 0000000 00000000204 14135770370 032573 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/namefind/TokenNameFinderC0100664 0001750 0001750 00000013514 14135770370 034003 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.namefind; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import java.util.Map; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderCrossValidatorTool.CVToolParams; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.params.DetailedFMeasureEvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.namefind.BilouCodec; import opennlp.tools.namefind.BioCodec; import opennlp.tools.namefind.NameSample; import opennlp.tools.namefind.NameSampleTypeFilter; import opennlp.tools.namefind.TokenNameFinderCrossValidator; import opennlp.tools.namefind.TokenNameFinderEvaluationMonitor; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.EvaluationMonitor; public final class TokenNameFinderCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends TrainingParams, CVParams, DetailedFMeasureEvaluatorParams, FineGrainedEvaluatorParams { } public TokenNameFinderCrossValidatorTool() { super(NameSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable Name Finder"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), true); if (mlParams == null) { mlParams = new TrainingParameters(); } byte[] featureGeneratorBytes = TokenNameFinderTrainerTool.openFeatureGeneratorBytes(params.getFeaturegen()); Map resources; try { resources = TokenNameFinderTrainerTool.loadResources(params.getResources(), params.getFeaturegen()); } catch (IOException e) { throw new TerminateToolException(-1,"IO error while loading resources", e); } if (params.getNameTypes() != null) { String[] nameTypes = params.getNameTypes().split(","); sampleStream = new NameSampleTypeFilter(nameTypes, sampleStream); } List> listeners = new LinkedList<>(); if (params.getMisclassified()) { listeners.add(new NameEvaluationErrorListener()); } TokenNameFinderDetailedFMeasureListener detailedFListener = null; if (params.getDetailedF()) { detailedFListener = new TokenNameFinderDetailedFMeasureListener(); listeners.add(detailedFListener); } String sequenceCodecImplName = params.getSequenceCodec(); if ("BIO".equals(sequenceCodecImplName)) { sequenceCodecImplName = BioCodec.class.getName(); } else if ("BILOU".equals(sequenceCodecImplName)) { sequenceCodecImplName = BilouCodec.class.getName(); } SequenceCodec sequenceCodec = TokenNameFinderFactory.instantiateSequenceCodec(sequenceCodecImplName); TokenNameFinderFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new TokenNameFinderFineGrainedReportListener(sequenceCodec, reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating Name Finder fine-grained report file: " + e.getMessage()); } } TokenNameFinderFactory nameFinderFactory; try { nameFinderFactory = TokenNameFinderFactory.create(params.getFactory(), featureGeneratorBytes, resources, sequenceCodec); } catch (InvalidFormatException e) { throw new TerminateToolException(-1, e.getMessage(), e); } TokenNameFinderCrossValidator validator; try { validator = new TokenNameFinderCrossValidator(params.getLang(), params.getType(), mlParams, nameFinderFactory, listeners.toArray(new TokenNameFinderEvaluationMonitor[listeners.size()])); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); System.out.println(); if (reportFile != null) { reportListener.writeReport(); } if (detailedFListener == null) { System.out.println(validator.getFMeasure()); } else { System.out.println(detailedFListener); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000202 14135770370 032663 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DetokenEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DetokenEvaluati0100664 0001750 0001750 00000003352 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerEvaluationMonitor; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. */ public class DetokenEvaluationErrorListener extends EvaluationErrorPrinter implements TokenizerEvaluationMonitor { /** * Creates a listener that will print to System.err */ public DetokenEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public DetokenEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(TokenSample reference, TokenSample prediction) { printError(reference, prediction); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000174 14135770370 032673 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMEEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMEEval0100664 0001750 0001750 00000005137 14135770370 034126 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.IOException; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.tokenizer.TokenizerMEEvaluatorTool.EvalToolParams; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerEvaluationMonitor; import opennlp.tools.tokenize.TokenizerEvaluator; import opennlp.tools.tokenize.TokenizerModel; public final class TokenizerMEEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams { } public TokenizerMEEvaluatorTool() { super(TokenSample.class, EvalToolParams.class); } public String getShortDescription() { return "evaluator for the learnable tokenizer"; } public void run(String format, String[] args) { super.run(format, args); TokenizerModel model = new TokenizerModelLoader().load(params.getModel()); TokenizerEvaluationMonitor misclassifiedListener = null; if (params.getMisclassified()) { misclassifiedListener = new TokenEvaluationErrorListener(); } TokenizerEvaluator evaluator = new TokenizerEvaluator( new opennlp.tools.tokenize.TokenizerME(model), misclassifiedListener); System.out.print("Evaluating ... "); try { evaluator.evaluate(sampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); System.out.println(); System.out.println(evaluator.getFMeasure()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000162 14135770370 032670 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TrainingParams.0100664 0001750 0001750 00000003347 14135770370 034120 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParameters for Tokenizer. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "isAlphaNumOpt", description = "Optimization flag to skip alpha numeric tokens for further tokenization") @OptionalParameter(defaultValue = "false") Boolean getAlphaNumOpt(); @ParameterDescription(valueName = "path", description = "abbreviation dictionary in XML format.") @OptionalParameter File getAbbDict(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of TokenizerFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000202 14135770370 032663 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DetokenizationDictionaryLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DetokenizationD0100664 0001750 0001750 00000002461 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.tokenize.DetokenizationDictionary; final class DetokenizationDictionaryLoader extends ModelLoader { DetokenizationDictionaryLoader() { super("detokenizer dictionary"); } @Override protected DetokenizationDictionary loadModel(InputStream modelIn) throws IOException { return new DetokenizationDictionary(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000175 14135770370 032674 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetokenizerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/DictionaryDetok0100664 0001750 0001750 00000005040 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.tokenize.DictionaryDetokenizer; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public final class DictionaryDetokenizerTool extends BasicCmdLineTool { public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " detokenizerDictionary"; } public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { try { Detokenizer detokenizer = new DictionaryDetokenizer( new DetokenizationDictionaryLoader().load(new File(args[0]))); try (ObjectStream tokenizedLineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding())) { PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String tokenizedLine; while ((tokenizedLine = tokenizedLineStream.read()) != null) { // white space tokenize line String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(tokenizedLine); System.out.println(detokenizer.detokenize(tokens, null)); perfMon.incrementCounter(); } perfMon.stopAndPrintFinalResult(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000167 14135770370 032675 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/SimpleTokenizer0100664 0001750 0001750 00000002762 14135770370 034247 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; public final class SimpleTokenizerTool extends BasicCmdLineTool { public String getShortDescription() { return "character class tokenizer"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " < sentences"; } @Override public boolean hasParams() { return false; } public void run(String[] args) { if (args.length != 0) { System.out.println(getHelp()); } else { CommandLineTokenizer tokenizer = new CommandLineTokenizer(opennlp.tools.tokenize.SimpleTokenizer.INSTANCE); tokenizer.process(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000200 14135770370 032661 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenEvaluation0100664 0001750 0001750 00000003473 14135770370 034233 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerEvaluationMonitor; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. * */ public class TokenEvaluationErrorListener extends EvaluationErrorPrinter implements TokenizerEvaluationMonitor { /** * Creates a listener that will print to System.err */ public TokenEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public TokenEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(TokenSample reference, TokenSample prediction) { printError(reference.getTokenSpans(), prediction.getTokenSpans(), reference, prediction, reference.getText()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000170 14135770370 032667 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerTraine0100664 0001750 0001750 00000006732 14135770370 034241 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.cmdline.tokenizer.TokenizerTrainerTool.TrainerToolParams; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerFactory; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.util.model.ModelUtil; public final class TokenizerTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public TokenizerTrainerTool() { super(TokenSample.class, TrainerToolParams.class); } public String getShortDescription() { return "trainer for the learnable tokenizer"; } static Dictionary loadDict(File f) throws IOException { Dictionary dict = null; if (f != null) { CmdLineUtil.checkInputFile("abb dict", f); dict = new Dictionary(new FileInputStream(f)); } return dict; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams != null) { if (!TrainerFactory.isValid(mlParams)) { throw new TerminateToolException(1, "Training parameters file '" + params.getParams() + "' is invalid!"); } if (!TrainerType.EVENT_MODEL_TRAINER.equals(TrainerFactory.getTrainerType(mlParams))) { throw new TerminateToolException(1, "Sequence training is not supported!"); } } if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("tokenizer model", modelOutFile); TokenizerModel model; try { Dictionary dict = loadDict(params.getAbbDict()); TokenizerFactory tokFactory = TokenizerFactory.create( params.getFactory(), params.getLang(), dict, params.getAlphaNumOpt(), null); model = opennlp.tools.tokenize.TokenizerME.train(sampleStream, tokFactory, mlParams); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("tokenizer", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000170 14135770370 032667 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerModelL0100664 0001750 0001750 00000002565 14135770370 034173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.tokenize.TokenizerModel; /** * Loads a Tokenizer Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public final class TokenizerModelLoader extends ModelLoader { public TokenizerModelLoader() { super("Tokenizer"); } @Override protected TokenizerModel loadModel(InputStream modelIn) throws IOException { return new TokenizerModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000172 14135770370 032671 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerConver0100664 0001750 0001750 00000002106 14135770370 034242 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.tokenize.TokenSample; public class TokenizerConverterTool extends AbstractConverterTool { public TokenizerConverterTool() { super(TokenSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000163 14135770370 032671 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerMETool0100664 0001750 0001750 00000003100 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.File; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.tokenize.TokenizerModel; public final class TokenizerMETool extends BasicCmdLineTool { public String getShortDescription() { return "learnable tokenizer"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { TokenizerModel model = new TokenizerModelLoader().load(new File(args[0])); CommandLineTokenizer tokenizer = new CommandLineTokenizer(new opennlp.tools.tokenize.TokenizerME(model)); tokenizer.process(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000177 14135770370 032676 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/TokenizerCrossV0100664 0001750 0001750 00000005652 14135770370 034236 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.IOException; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.tokenizer.TokenizerCrossValidatorTool.CVToolParams; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.tokenize.TokenizerCrossValidator; import opennlp.tools.tokenize.TokenizerEvaluationMonitor; import opennlp.tools.tokenize.TokenizerFactory; import opennlp.tools.util.eval.FMeasure; import opennlp.tools.util.model.ModelUtil; public final class TokenizerCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends CVParams, TrainingParams { } public TokenizerCrossValidatorTool() { super(TokenSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable tokenizer"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } TokenizerCrossValidator validator; TokenizerEvaluationMonitor listener = null; if (params.getMisclassified()) { listener = new TokenEvaluationErrorListener(); } try { Dictionary dict = TokenizerTrainerTool.loadDict(params.getAbbDict()); TokenizerFactory tokFactory = TokenizerFactory.create( params.getFactory(), params.getLang(), dict, params.getAlphaNumOpt(), null); validator = new opennlp.tools.tokenize.TokenizerCrossValidator(mlParams, tokFactory, listener); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } FMeasure result = validator.getFMeasure(); System.out.println(result); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_tokenizer0100644 0000000 0000000 00000000170 14135770370 032667 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/CommandLineTokenizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/tokenizer/CommandLineToke0100664 0001750 0001750 00000004265 14135770370 034134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.tokenizer; import java.io.IOException; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.tokenize.TokenizerStream; import opennlp.tools.tokenize.WhitespaceTokenStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; final class CommandLineTokenizer { private final Tokenizer tokenizer; CommandLineTokenizer(Tokenizer tokenizer) { this.tokenizer = tokenizer; } void process() { ObjectStream untokenizedLineStream; ObjectStream tokenizedLineStream; PerformanceMonitor perfMon = null; try { untokenizedLineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); tokenizedLineStream = new WhitespaceTokenStream( new TokenizerStream(tokenizer, untokenizedLineStream)); perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String tokenizedLine; while ((tokenizedLine = tokenizedLineStream.read()) != null) { System.out.println(tokenizedLine); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractTrainerTool.java0100664 0001750 0001750 00000003770 14135770370 033757 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.IOException; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.TrainingParameters; /** * Base class for trainer tools. */ public class AbstractTrainerTool extends AbstractEvaluatorTool { protected TrainingParameters mlParams; /** * Constructor with type parameters. * * @param sampleType class of the template parameter * @param params interface with parameters */ protected AbstractTrainerTool(Class sampleType, Class

params) { super(sampleType, params); } protected TerminateToolException createTerminationIOException(IOException e) { if (e instanceof InsufficientTrainingDataException) { return new TerminateToolException(-1, "\n\nERROR: Not enough training data\n" + "The provided training data is not sufficient to create enough events to train a model.\n" + "To resolve this error use more training data, if this doesn't help there might\n" + "be some fundamental problem with the training data itself."); } return new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/ObjectStreamFactory.java0100664 0001750 0001750 00000002425 14135770370 033737 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import opennlp.tools.util.ObjectStream; public interface ObjectStreamFactory { /** * Returns interface with parameters description. * * @param

interfaces which describes the parameters. * * @return interface with parameters description */

Class

getParameters(); /** * Creates the ObjectStream. * * @param args arguments * @return ObjectStream instance */ ObjectStream create(String[] args); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_En0100644 0000000 0000000 00000000162 14135770370 032563 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/EncodingParameter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/EncodingParameter.0100664 0001750 0001750 00000002634 14135770370 034037 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import java.nio.charset.Charset; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Encoding parameter. The DEFAULT_CHARSET is handled by ArgumentParser.Parse(). * * Note: Do not use this class, internal use only! */ public interface EncodingParameter { @ParameterDescription(valueName = "charsetName", description = "encoding for reading and writing text, if absent the system default is used.") @OptionalParameter(defaultValue = OptionalParameter.DEFAULT_CHARSET) Charset getEncoding(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_Ev0100644 0000000 0000000 00000000160 14135770370 032571 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/EvaluatorParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/EvaluatorParams.ja0100664 0001750 0001750 00000002645 14135770370 034073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Common evaluation parameters. * * Note: Do not use this class, internal use only! */ public interface EvaluatorParams { @ParameterDescription(valueName = "model", description = "the model file to be evaluated.") File getModel(); @ParameterDescription(valueName = "true|false", description = "if true will print false negatives and false positives.") @OptionalParameter(defaultValue = "false") Boolean getMisclassified(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_Ba0100644 0000000 0000000 00000000162 14135770370 032543 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/BasicFormatParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/BasicFormatParams.0100664 0001750 0001750 00000002204 14135770370 033777 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Common format parameters. */ public interface BasicFormatParams extends EncodingParameter { @ParameterDescription(valueName = "sampleData", description = "data to be used, usually a file name.") File getData(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/CVParams.java0100664 0001750 0001750 00000002670 14135770370 032766 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Common cross validator parameters. * * Note: Do not use this class, internal use only! */ public interface CVParams { @ParameterDescription(valueName = "true|false", description = "if true will print false negatives and false positives.") @OptionalParameter(defaultValue = "false") Boolean getMisclassified(); @ParameterDescription(valueName = "num", description = "number of folds, default is 10.") @OptionalParameter(defaultValue = "10") Integer getFolds(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_De0100644 0000000 0000000 00000000200 14135770370 032542 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/DetailedFMeasureEvaluatorParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/DetailedFMeasureEv0100664 0001750 0001750 00000002527 14135770370 034031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * EvaluatorParams for Chunker. * * Note: Do not use this class, internal use only! */ public interface DetailedFMeasureEvaluatorParams { @ParameterDescription(valueName = "true|false", description = "if true (default) will print detailed FMeasure results.") @OptionalParameter(defaultValue = "true") @Deprecated // this will be removed in 1.8.0 Boolean getDetailedF(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_Fi0100644 0000000 0000000 00000000173 14135770370 032561 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/FineGrainedEvaluatorParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/FineGrainedEvaluat0100664 0001750 0001750 00000002342 14135770370 034063 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import java.io.File; import opennlp.tools.cmdline.ArgumentParser; /** * Common evaluation parameters. * * Note: Do not use this class, internal use only! */ public interface FineGrainedEvaluatorParams { @ArgumentParser.ParameterDescription(valueName = "outputFile", description = "the path of the fine-grained report file.") @ArgumentParser.OptionalParameter File getReportOutputFile(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_De0100644 0000000 0000000 00000000165 14135770370 032554 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/DetokenizerParameter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/DetokenizerParamet0100664 0001750 0001750 00000002112 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; public interface DetokenizerParameter { @ParameterDescription(valueName = "dictionary", description = "specifies the file with detokenizer dictionary.") String getDetokenizer(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_La0100644 0000000 0000000 00000000157 14135770370 032561 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/LanguageParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/LanguageParams.jav0100664 0001750 0001750 00000002052 14135770370 034032 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; public interface LanguageParams { @ParameterDescription(valueName = "language", description = "language which is being processed.") String getLang(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_Tr0100644 0000000 0000000 00000000163 14135770370 032607 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/TrainingToolParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/TrainingToolParams0100664 0001750 0001750 00000002254 14135770370 034145 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Common training parameters. * * Note: Do not use this class, internal use only! */ public interface TrainingToolParams extends BasicTrainingParams { @ParameterDescription(valueName = "modelFile", description = "output model file.") File getModel(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_params_Ba0100644 0000000 0000000 00000000164 14135770370 032545 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/BasicTrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/params/BasicTrainingParam0100664 0001750 0001750 00000002363 14135770370 034067 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.params; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * Common training parameters. * * Note: Do not use this class, internal use only! */ public interface BasicTrainingParams extends LanguageParams { @ParameterDescription(valueName = "paramsFile", description = "training parameters file.") @OptionalParameter() String getParams(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_SystemInp0100644 0000000 0000000 00000000162 14135770370 032611 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/SystemInputStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/SystemInputStreamFactory.0100664 0001750 0001750 00000002667 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import opennlp.tools.util.InputStreamFactory; public class SystemInputStreamFactory implements InputStreamFactory { private boolean isTainted = false; public static Charset encoding() { return Charset.defaultCharset(); } @Override public InputStream createInputStream() throws IOException { if (!isTainted) { isTainted = true; return System.in; } else { throw new UnsupportedOperationException( "The System.in stream can't be re-created to read from the beginning!"); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000170 14135770370 032633 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceModelL0100664 0001750 0001750 00000002704 14135770370 034110 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.util.InvalidFormatException; /** * Loads a Tokenizer Model for the command line tools. *

* Note: Do not use this class, internal use only! */ final class SentenceModelLoader extends ModelLoader { public SentenceModelLoader() { super("Sentence Detector"); } @Override protected SentenceModel loadModel(InputStream modelIn) throws IOException, InvalidFormatException { return new SentenceModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000202 14135770370 032627 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetect0100664 0001750 0001750 00000002140 14135770370 034136 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.sentdetect.SentenceSample; public class SentenceDetectorConverterTool extends AbstractConverterTool { public SentenceDetectorConverterTool() { super(SentenceSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000202 14135770370 032627 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetect0100664 0001750 0001750 00000005272 14135770370 034147 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.IOException; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.sentdetect.SentenceDetectorEvaluatorTool.EvalToolParams; import opennlp.tools.sentdetect.SentenceDetectorEvaluationMonitor; import opennlp.tools.sentdetect.SentenceDetectorEvaluator; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.sentdetect.SentenceSample; public final class SentenceDetectorEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams { } public SentenceDetectorEvaluatorTool() { super(SentenceSample.class, EvalToolParams.class); } public String getShortDescription() { return "evaluator for the learnable sentence detector"; } public void run(String format, String[] args) { super.run(format, args); SentenceModel model = new SentenceModelLoader().load(params.getModel()); SentenceDetectorEvaluationMonitor errorListener = null; if (params.getMisclassified()) { errorListener = new SentenceEvaluationErrorListener(); } SentenceDetectorEvaluator evaluator = new SentenceDetectorEvaluator( new SentenceDetectorME(model), errorListener); System.out.print("Evaluating ... "); try { evaluator.evaluate(sampleStream); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.err.println("done"); System.out.println(); System.out.println(evaluator.getFMeasure()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000163 14135770370 032635 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/TrainingParams0100664 0001750 0001750 00000003223 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParams for Sentence Detector. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "path", description = "abbreviation dictionary in XML format.") @OptionalParameter File getAbbDict(); @ParameterDescription(valueName = "string", description = "EOS characters.") @OptionalParameter String getEosChars(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of SentenceDetectorFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000171 14135770370 032634 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetect0100664 0001750 0001750 00000005415 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ParagraphStream; import opennlp.tools.util.PlainTextByLineStream; /** * A sentence detector which uses a maxent model to predict the sentences. */ public final class SentenceDetectorTool extends BasicCmdLineTool { public String getShortDescription() { return "learnable sentence detector"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } /** * Perform sentence detection the input stream. * * A newline will be treated as a paragraph boundary. */ public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { SentenceModel model = new SentenceModelLoader().load(new File(args[0])); SentenceDetectorME sdetector = new SentenceDetectorME(model); PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); try (ObjectStream paraStream = new ParagraphStream(new PlainTextByLineStream( new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()))) { String para; while ((para = paraStream.read()) != null) { String[] sents = sdetector.sentDetect(para); for (String sentence : sents) { System.out.println(sentence); } perfMon.incrementCounter(sents.length); System.out.println(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000207 14135770370 032634 xustar000000000 0000000 135 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetect0100664 0001750 0001750 00000006354 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.IOException; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.sentdetect.SentenceDetectorCrossValidatorTool.CVToolParams; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.sentdetect.SDCrossValidator; import opennlp.tools.sentdetect.SentenceDetectorEvaluationMonitor; import opennlp.tools.sentdetect.SentenceDetectorFactory; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.sentdetect.SentenceSampleStream; import opennlp.tools.util.eval.FMeasure; import opennlp.tools.util.model.ModelUtil; public final class SentenceDetectorCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends TrainingParams, CVParams { } public SentenceDetectorCrossValidatorTool() { super(SentenceSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable sentence detector"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } SDCrossValidator validator; SentenceDetectorEvaluationMonitor errorListener = null; if (params.getMisclassified()) { errorListener = new SentenceEvaluationErrorListener(); } char[] eos = null; if (params.getEosChars() != null) { String eosString = SentenceSampleStream.replaceNewLineEscapeTags(params.getEosChars()); eos = eosString.toCharArray(); } try { Dictionary abbreviations = SentenceDetectorTrainerTool.loadDict(params.getAbbDict()); SentenceDetectorFactory sdFactory = SentenceDetectorFactory.create( params.getFactory(), params.getLang(), true, abbreviations, eos); validator = new SDCrossValidator(params.getLang(), mlParams, sdFactory, errorListener); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } FMeasure result = validator.getFMeasure(); System.out.println(result); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000200 14135770370 032625 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetect0100664 0001750 0001750 00000007224 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.cmdline.sentdetect.SentenceDetectorTrainerTool.TrainerToolParams; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.sentdetect.SentenceDetectorFactory; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.sentdetect.SentenceSampleStream; import opennlp.tools.util.model.ModelUtil; public final class SentenceDetectorTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public SentenceDetectorTrainerTool() { super(SentenceSample.class, TrainerToolParams.class); } public String getShortDescription() { return "trainer for the learnable sentence detector"; } static Dictionary loadDict(File f) throws IOException { Dictionary dict = null; if (f != null) { CmdLineUtil.checkInputFile("abb dict", f); dict = new Dictionary(new FileInputStream(f)); } return dict; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams != null) { if (!TrainerType.EVENT_MODEL_TRAINER.equals(TrainerFactory.getTrainerType(mlParams))) { throw new TerminateToolException(1, "Sequence training is not supported!"); } } if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("sentence detector model", modelOutFile); char[] eos = null; if (params.getEosChars() != null) { String eosString = SentenceSampleStream.replaceNewLineEscapeTags( params.getEosChars()); eos = eosString.toCharArray(); } SentenceModel model; try { Dictionary dict = loadDict(params.getAbbDict()); SentenceDetectorFactory sdFactory = SentenceDetectorFactory.create( params.getFactory(), params.getLang(), true, dict, eos); model = SentenceDetectorME.train(params.getLang(), sampleStream, sdFactory, mlParams); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("sentence detector", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_sentdetec0100644 0000000 0000000 00000000204 14135770370 032631 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceEvalua0100664 0001750 0001750 00000003551 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.sentdetect; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.sentdetect.SentenceDetectorEvaluationMonitor; import opennlp.tools.sentdetect.SentenceSample; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. * */ public class SentenceEvaluationErrorListener extends EvaluationErrorPrinter implements SentenceDetectorEvaluationMonitor { /** * Creates a listener that will print to System.err */ public SentenceEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public SentenceEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(SentenceSample reference, SentenceSample prediction) { printError(reference.getSentences(), prediction.getSentences(), reference, prediction, reference.getDocument()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/TypedCmdLineTool.java0100664 0001750 0001750 00000010342 14135770370 033201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.util.Map; /** * Base class for tools which support processing of samples of some type T * coming from a stream of a certain format. */ public abstract class TypedCmdLineTool extends CmdLineTool { /** * variable to access the type of the generic parameter. */ protected final Class type; /** * Constructor with type parameters. * * @param sampleType class of the template parameter */ protected TypedCmdLineTool(Class sampleType) { this.type = sampleType; } /** * Returns stream factory for the type of this tool for the format. * * @param format data format name * @return stream factory for the type of this tool for the format */ protected ObjectStreamFactory getStreamFactory(String format) { ObjectStreamFactory factory = StreamFactoryRegistry.getFactory(type, format); if (null != factory) { return factory; } else { throw new TerminateToolException(1, "Format " + format + " is not found.\n" + getHelp()); } } /** * Validates arguments using parameters from argProxyInterface and the parameters of the * format. * * @param args arguments * @param argProxyInterface interface with parameter descriptions * @param format data format name * @param A */ @SuppressWarnings({"unchecked"}) protected void validateAllArgs(String[] args, Class argProxyInterface, String format) { ObjectStreamFactory factory = getStreamFactory(format); String errMessage = ArgumentParser.validateArgumentsLoudly(args, argProxyInterface, factory.getParameters()); if (null != errMessage) { throw new TerminateToolException(1, errMessage + "\n" + getHelp(format)); } } /** * Validates arguments for a format processed by the factory. * @param factory a stream factory * @param args arguments */ protected void validateFactoryArgs(ObjectStreamFactory factory, String[] args) { String errMessage = ArgumentParser.validateArgumentsLoudly(args, factory.getParameters()); if (null != errMessage) { throw new TerminateToolException(1, "Format parameters are invalid: " + errMessage + "\n" + "Usage: " + ArgumentParser.createUsage(factory.getParameters())); } } @Override protected String getBasicHelp(Class... argProxyInterfaces) { Map> factories = StreamFactoryRegistry.getFactories(type); String formatsHelp = " "; if (1 < factories.size()) { StringBuilder formats = new StringBuilder(); for (String format : factories.keySet()) { if (!StreamFactoryRegistry.DEFAULT_FORMAT.equals(format)) { formats.append(".").append(format).append("|"); } } formatsHelp = "[" + formats.substring(0, formats.length() - 1) + "] "; } return "Usage: " + CLI.CMD + " " + getName() + formatsHelp + ArgumentParser.createUsage(argProxyInterfaces); } public String getHelp() { return getHelp(""); } /** * Executes the tool with the given parameters. * * @param format format to work with * @param args command line arguments */ public abstract void run(String format, String[] args); /** * Retrieves a description on how to use the tool. * * @param format data format * @return a description on how to use the tool */ public abstract String getHelp(String format); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_DetailedF0100644 0000000 0000000 00000000162 14135770370 032477 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/DetailedFMeasureListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/DetailedFMeasureListener.0100664 0001750 0001750 00000017056 14135770370 034042 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import opennlp.tools.util.Span; import opennlp.tools.util.eval.EvaluationMonitor; /** * This listener will gather detailed information about the sample under evaluation and will * allow detailed FMeasure for each outcome. *

* Note: Do not use this class, internal use only! */ public abstract class DetailedFMeasureListener implements EvaluationMonitor { private int samples = 0; private Stats generalStats = new Stats(); private Map statsForOutcome = new HashMap<>(); protected abstract Span[] asSpanArray(T sample); public void correctlyClassified(T reference, T prediction) { samples++; // add all true positives! Span[] spans = asSpanArray(reference); for (Span span : spans) { addTruePositive(span.getType()); } } public void missclassified(T reference, T prediction) { samples++; Span[] references = asSpanArray(reference); Span[] predictions = asSpanArray(prediction); Set refSet = new HashSet<>(Arrays.asList(references)); Set predSet = new HashSet<>(Arrays.asList(predictions)); for (Span ref : refSet) { if (predSet.contains(ref)) { addTruePositive(ref.getType()); } else { addFalseNegative(ref.getType()); } } for (Span pred : predSet) { if (!refSet.contains(pred)) { addFalsePositive(pred.getType()); } } } private void addTruePositive(String type) { Stats s = initStatsForOutcomeAndGet(type); s.incrementTruePositive(); s.incrementTarget(); generalStats.incrementTruePositive(); generalStats.incrementTarget(); } private void addFalsePositive(String type) { Stats s = initStatsForOutcomeAndGet(type); s.incrementFalsePositive(); generalStats.incrementFalsePositive(); } private void addFalseNegative(String type) { Stats s = initStatsForOutcomeAndGet(type); s.incrementTarget(); generalStats.incrementTarget(); } private Stats initStatsForOutcomeAndGet(String type) { if (!statsForOutcome.containsKey(type)) { statsForOutcome.put(type, new Stats()); } return statsForOutcome.get(type); } private static final String PERCENT = "%\u00207.2f%%"; private static final String FORMAT = "%12s: precision: " + PERCENT + "; recall: " + PERCENT + "; F1: " + PERCENT + "."; private static final String FORMAT_EXTRA = FORMAT + " [target: %3d; tp: %3d; fp: %3d]"; public String createReport() { return createReport(Locale.getDefault()); } public String createReport(Locale locale) { StringBuilder ret = new StringBuilder(); int tp = generalStats.getTruePositives(); int found = generalStats.getFalsePositives() + tp; ret.append("Evaluated ").append(samples).append(" samples with ") .append(generalStats.getTarget()).append(" entities; found: ") .append(found).append(" entities; correct: ").append(tp).append(".\n"); ret.append(String.format(locale, FORMAT, "TOTAL", zeroOrPositive(generalStats.getPrecisionScore() * 100), zeroOrPositive(generalStats.getRecallScore() * 100), zeroOrPositive(generalStats.getFMeasure() * 100))); ret.append("\n"); SortedSet set = new TreeSet<>(new F1Comparator()); set.addAll(statsForOutcome.keySet()); for (String type : set) { ret.append(String.format(locale, FORMAT_EXTRA, type, zeroOrPositive(statsForOutcome.get(type).getPrecisionScore() * 100), zeroOrPositive(statsForOutcome.get(type).getRecallScore() * 100), zeroOrPositive(statsForOutcome.get(type).getFMeasure() * 100), statsForOutcome.get(type).getTarget(), statsForOutcome.get(type) .getTruePositives(), statsForOutcome.get(type) .getFalsePositives())); ret.append("\n"); } return ret.toString(); } @Override public String toString() { return createReport(); } private double zeroOrPositive(double v) { if (v < 0) { return 0; } return v; } private class F1Comparator implements Comparator { public int compare(String o1, String o2) { if (o1.equals(o2)) return 0; double t1 = 0; double t2 = 0; if (statsForOutcome.containsKey(o1)) t1 += statsForOutcome.get(o1).getFMeasure(); if (statsForOutcome.containsKey(o2)) t2 += statsForOutcome.get(o2).getFMeasure(); t1 = zeroOrPositive(t1); t2 = zeroOrPositive(t2); if (t1 + t2 > 0d) { if (t1 > t2) return -1; return 1; } return o1.compareTo(o2); } } /** * Store the statistics. */ private class Stats { // maybe we could use FMeasure class, but it wouldn't allow us to get // details like total number of false positives and true positives. private int falsePositiveCounter = 0; private int truePositiveCounter = 0; private int targetCounter = 0; public void incrementFalsePositive() { falsePositiveCounter++; } public void incrementTruePositive() { truePositiveCounter++; } public void incrementTarget() { targetCounter++; } public int getFalsePositives() { return falsePositiveCounter; } public int getTruePositives() { return truePositiveCounter; } public int getTarget() { return targetCounter; } /** * Retrieves the arithmetic mean of the precision scores calculated for each * evaluated sample. * * @return the arithmetic mean of all precision scores */ public double getPrecisionScore() { int tp = getTruePositives(); int selected = tp + getFalsePositives(); return selected > 0 ? (double) tp / (double) selected : 0; } /** * Retrieves the arithmetic mean of the recall score calculated for each * evaluated sample. * * @return the arithmetic mean of all recall scores */ public double getRecallScore() { int target = getTarget(); int tp = getTruePositives(); return target > 0 ? (double) tp / (double) target : 0; } /** * Retrieves the f-measure score. * * f-measure = 2 * precision * recall / (precision + recall) * * @return the f-measure or -1 if precision + recall <= 0 */ public double getFMeasure() { if (getPrecisionScore() + getRecallScore() > 0) { return 2 * (getPrecisionScore() * getRecallScore()) / (getPrecisionScore() + getRecallScore()); } else { // cannot divide by zero, return error code return -1; } } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java0100664 0001750 0001750 00000043665 14135770370 032777 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; /** * Parser for command line arguments. The parser creates a dynamic proxy which * can be access via a command line argument interface. * *

* * The command line argument proxy interface must follow these conventions:
* - Methods do not define arguments
* - Method names must start with get
* - Allowed return types are Integer, Boolean, String, File and Charset.
*

* Note: Do not use this class, internal use only! */ public class ArgumentParser { public @Retention(RetentionPolicy.RUNTIME) @interface OptionalParameter { // CHECKSTYLE:OFF String DEFAULT_CHARSET = "DEFAULT_CHARSET"; // CHECKSTYLE:ON String defaultValue() default ""; } public @Retention(RetentionPolicy.RUNTIME) @interface ParameterDescription { String valueName(); String description() default ""; } private interface ArgumentFactory { String INVALID_ARG = "Invalid argument: %s %s \n"; Object parseArgument(Method method, String argName, String argValue); } private static class IntegerArgumentFactory implements ArgumentFactory { public Object parseArgument(Method method, String argName, String argValue) { Object value; try { value = Integer.parseInt(argValue); } catch (NumberFormatException e) { throw new TerminateToolException(1, String.format(INVALID_ARG, argName, argValue) + "Value must be an integer!", e); } return value; } } private static class BooleanArgumentFactory implements ArgumentFactory { public Object parseArgument(Method method, String argName, String argValue) { return Boolean.parseBoolean(argValue); } } private static class StringArgumentFactory implements ArgumentFactory { public Object parseArgument(Method method, String argName, String argValue) { return argValue; } } private static class FileArgumentFactory implements ArgumentFactory { public Object parseArgument(Method method, String argName, String argValue) { return new File(argValue); } } private static class CharsetArgumentFactory implements ArgumentFactory { public Object parseArgument(Method method, String argName, String charsetName) { try { if (OptionalParameter.DEFAULT_CHARSET.equals(charsetName)) { return Charset.defaultCharset(); } else if (Charset.isSupported(charsetName)) { return Charset.forName(charsetName); } else { throw new TerminateToolException(1, String.format(INVALID_ARG, argName, charsetName) + "Encoding not supported on this platform."); } } catch (IllegalCharsetNameException e) { throw new TerminateToolException(1, String.format(INVALID_ARG, argName, charsetName) + "Illegal encoding name."); } } } private static class ArgumentProxy implements InvocationHandler { private final Map arguments; ArgumentProxy(Map arguments) { this.arguments = arguments; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (args != null) throw new IllegalStateException(); return arguments.get(method.getName()); } } private static final Map, ArgumentFactory> argumentFactories; static { Map, ArgumentFactory> factories = new HashMap<>(); factories.put(Integer.class, new IntegerArgumentFactory()); factories.put(Boolean.class, new BooleanArgumentFactory()); factories.put(String.class, new StringArgumentFactory()); factories.put(File.class, new FileArgumentFactory()); factories.put(Charset.class, new CharsetArgumentFactory()); argumentFactories = Collections.unmodifiableMap(factories); } private ArgumentParser() { } private static void checkProxyInterfaces(Class... proxyInterfaces) { for (Class proxyInterface : proxyInterfaces) { if (null != proxyInterface) { if (!proxyInterface.isInterface()) throw new IllegalArgumentException("proxy interface is not an interface!"); // all checks should also be performed for super interfaces Method[] methods = proxyInterface.getMethods(); if (methods.length == 0) throw new IllegalArgumentException("proxy interface must at least declare one method!"); for (Method method : methods) { // check that method names start with get if (!method.getName().startsWith("get") && method.getName().length() > 3) throw new IllegalArgumentException(method.getName() + " method name does not start with 'get'!"); // check that method has zero arguments if (method.getParameterTypes().length != 0) { throw new IllegalArgumentException(method.getName() + " method must have zero parameters but has " + method.getParameterTypes().length + "!"); } // check return types of interface Class returnType = method.getReturnType(); Set> compatibleReturnTypes = argumentFactories.keySet(); if (!compatibleReturnTypes.contains(returnType)) { throw new IllegalArgumentException(method.getName() + " method must have compatible return type! Got " + returnType + ", expected one of " + compatibleReturnTypes); } } } } } private static String methodNameToParameter(String methodName) { // remove get from method name char[] parameterNameChars = methodName.toCharArray(); // name length is checked to be at least 4 prior parameterNameChars[3] = Character.toLowerCase(parameterNameChars[3]); return "-" + new String(parameterNameChars).substring(3); } /** * Creates a usage string which can be printed in case the user did specify the arguments * incorrectly. Incorrectly is defined as {@link ArgumentParser#validateArguments(String[], Class)} * returns false. * * @param argProxyInterface interface with parameter descriptions * @return the help message usage string */ @SuppressWarnings({"unchecked"}) public static String createUsage(Class argProxyInterface) { return createUsage(new Class[]{argProxyInterface}); } /** * Auxiliary class that holds information about an argument. This is used by the * GenerateManualTool, which creates a Docbook for the CLI automatically. */ static class Argument { private final String argument; private final String value; private final String description; private final boolean optional; public Argument(String argument, String value, String description, boolean optional) { super(); this.argument = argument; this.value = value; this.description = description; this.optional = optional; } public String getArgument() { return argument; } public String getValue() { return value; } public String getDescription() { return description; } public boolean getOptional() { return optional; } } /** * Outputs the arguments as a data structure so it can be used to create documentation. * * @param argProxyInterfaces interfaces with parameter descriptions * @return the help message usage string */ public static List createArguments(Class... argProxyInterfaces) { checkProxyInterfaces(argProxyInterfaces); Set duplicateFilter = new HashSet<>(); List arguments = new LinkedList<>(); for (Class argProxyInterface : argProxyInterfaces) { if (null != argProxyInterface) { for (Method method : argProxyInterface.getMethods()) { ParameterDescription desc = method.getAnnotation(ParameterDescription.class); OptionalParameter optional = method.getAnnotation(OptionalParameter.class); if (desc != null) { String paramName = methodNameToParameter(method.getName()); if (duplicateFilter.contains(paramName)) { continue; } else { duplicateFilter.add(paramName); } boolean isOptional = false; if (optional != null) isOptional = true; Argument arg = new Argument(paramName.substring(1), desc.valueName(), desc.description(), isOptional); arguments.add(arg); } } } } return arguments; } /** * Creates a usage string which can be printed in case the user did specify the arguments * incorrectly. Incorrectly is defined as {@link ArgumentParser#validateArguments(String[], * Class[])} * returns false. * * @param argProxyInterfaces interfaces with parameter descriptions * @return the help message usage string */ public static String createUsage(Class... argProxyInterfaces) { checkProxyInterfaces(argProxyInterfaces); Set duplicateFilter = new HashSet<>(); StringBuilder usage = new StringBuilder(); StringBuilder details = new StringBuilder(); for (Class argProxyInterface : argProxyInterfaces) { if (null != argProxyInterface) { for (Method method : argProxyInterface.getMethods()) { ParameterDescription desc = method.getAnnotation(ParameterDescription.class); OptionalParameter optional = method.getAnnotation(OptionalParameter.class); if (desc != null) { String paramName = methodNameToParameter(method.getName()); if (duplicateFilter.contains(paramName)) { continue; } else { duplicateFilter.add(paramName); } if (optional != null) usage.append('['); usage.append(paramName).append(' ').append(desc.valueName()); details.append('\t').append(paramName).append(' ').append(desc.valueName()).append('\n'); if (desc.description().length() > 0) { details.append("\t\t").append(desc.description()).append('\n'); } if (optional != null) usage.append(']'); usage.append(' '); } } } } if (usage.length() > 0) usage.setLength(usage.length() - 1); if (details.length() > 0) { details.setLength(details.length() - 1); usage.append("\n\nArguments description:\n").append(details); } return usage.toString(); } /** * Tests if the argument are correct or incorrect. Incorrect means, that mandatory arguments are missing or * there are unknown arguments. The argument value itself can also be incorrect, but this * is checked by the {@link ArgumentParser#parse(String[], Class)} method and reported accordingly. * * @param args command line arguments * @param argProxyInterface interface with parameters description * @return true, if arguments are valid */ @SuppressWarnings({"unchecked"}) public static boolean validateArguments(String[] args, Class argProxyInterface) { return validateArguments(args, new Class[]{argProxyInterface}); } /** * Tests if the argument are correct or incorrect. Incorrect means, that mandatory arguments are missing or * there are unknown arguments. The argument value itself can also be incorrect, but this * is checked by the {@link ArgumentParser#parse(String[], Class)} method and reported accordingly. * * @param args command line arguments * @param argProxyInterfaces interfaces with parameters description * @return true, if arguments are valid */ public static boolean validateArguments(String[] args, Class... argProxyInterfaces) { return null == validateArgumentsLoudly(args, argProxyInterfaces); } /** * Tests if the arguments are correct or incorrect. * * @param args command line arguments * @param argProxyInterface interface with parameters description * @return null, if arguments are valid or error message otherwise */ public static String validateArgumentsLoudly(String[] args, Class argProxyInterface) { return validateArgumentsLoudly(args, new Class[]{argProxyInterface}); } /** * Tests if the arguments are correct or incorrect. * * @param args command line arguments * @param argProxyInterfaces interfaces with parameters description * @return null, if arguments are valid or error message otherwise */ public static String validateArgumentsLoudly(String[] args, Class... argProxyInterfaces) { // number of parameters must be always be even if (args.length % 2 != 0) { return "Number of parameters must be always be even"; } int argumentCount = 0; List parameters = new ArrayList<>(Arrays.asList(args)); for (Class argProxyInterface : argProxyInterfaces) { for (Method method : argProxyInterface.getMethods()) { String paramName = methodNameToParameter(method.getName()); int paramIndex = CmdLineUtil.getParameterIndex(paramName, args); String valueString = CmdLineUtil.getParameter(paramName, args); if (valueString == null) { OptionalParameter optionalParam = method.getAnnotation(OptionalParameter.class); if (optionalParam == null) { if (-1 < paramIndex) { return "Missing mandatory parameter value: " + paramName; } else { return "Missing mandatory parameter: " + paramName; } } else { parameters.remove("-" + paramName); } } else { parameters.remove(paramName); parameters.remove(valueString); argumentCount++; } } } if (args.length / 2 > argumentCount) { return "Unrecognized parameters encountered: " + parameters; } return null; } /** * Parses the passed arguments and creates an instance of the proxy interface. *

* In case an argument value cannot be parsed a {@link TerminateToolException} is * thrown which contains an error message which explains the problems. * * @param args arguments * @param argProxyInterface interface with parameters description * * @return parsed parameters * * @throws TerminateToolException if an argument value cannot be parsed. * @throws IllegalArgumentException if validateArguments returns false, * if the proxy interface is not compatible. */ @SuppressWarnings("unchecked") public static T parse(String[] args, Class argProxyInterface) { checkProxyInterfaces(argProxyInterface); if (!validateArguments(args, argProxyInterface)) throw new IllegalArgumentException("Passed args must be valid!"); Map arguments = new HashMap<>(); for (Method method : argProxyInterface.getMethods()) { String parameterName = methodNameToParameter(method.getName()); String valueString = CmdLineUtil.getParameter(parameterName, args); if (valueString == null) { OptionalParameter optionalParam = method.getAnnotation(OptionalParameter.class); if (optionalParam.defaultValue().length() > 0) valueString = optionalParam.defaultValue(); else valueString = null; } Class returnType = method.getReturnType(); Object value; if (valueString != null) { ArgumentFactory factory = argumentFactories.get(returnType); if (factory == null) throw new IllegalStateException("factory for '" + returnType + "' must not be null"); value = factory.parseArgument(method, parameterName, valueString); } else value = null; arguments.put(method.getName(), value); } return (T) java.lang.reflect.Proxy.newProxyInstance( argProxyInterface.getClassLoader(), new Class[]{argProxyInterface}, new ArgumentProxy(arguments)); } /** * Filters arguments leaving only those pertaining to argProxyInterface. * * @param args arguments * @param argProxyInterface interface with parameters description * @param T * @return arguments pertaining to argProxyInterface */ public static String[] filter(String[] args, Class argProxyInterface) { ArrayList parameters = new ArrayList<>(args.length); for (Method method : argProxyInterface.getMethods()) { String parameterName = methodNameToParameter(method.getName()); int idx = CmdLineUtil.getParameterIndex(parameterName, args); if (-1 < idx) { parameters.add(parameterName); String valueString = CmdLineUtil.getParameter(parameterName, args); if (null != valueString) { parameters.add(valueString); } } } return parameters.toArray(new String[parameters.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java0100664 0001750 0001750 00000005001 14135770370 032167 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; /** * Base class for all command line tools. */ public abstract class CmdLineTool { protected CmdLineTool() { } /** * Retrieves the name of the training data tool. The name (used as command) * must not contain white spaces. * * @return the name of the command line tool */ public String getName() { if (getClass().getName().endsWith("Tool")) { return getClass().getSimpleName().substring(0, getClass().getSimpleName().length() - 4); } else { return getClass().getSimpleName(); } } /** * Returns whether the tool has any command line params. * @return whether the tool has any command line params */ public boolean hasParams() { return true; } protected String getBasicHelp(Class argProxyInterface) { return getBasicHelp(new Class[]{argProxyInterface}); } protected String getBasicHelp(Class... argProxyInterfaces) { return "Usage: " + CLI.CMD + " " + getName() + " " + ArgumentParser.createUsage(argProxyInterfaces); } /** * Retrieves a description on how to use the tool. * * @return a description on how to use the tool */ public abstract String getHelp(); protected T validateAndParseParams(String[] args, Class argProxyInterface) { String errorMessage = ArgumentParser.validateArgumentsLoudly(args, argProxyInterface); if (null != errorMessage) { throw new TerminateToolException(1, errorMessage + "\n" + getHelp()); } return ArgumentParser.parse(args, argProxyInterface); } /** * Retrieves a short description of what the tool does. * * @return a short description of what the tool does */ public String getShortDescription() { return ""; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_StreamFac0100644 0000000 0000000 00000000157 14135770370 032527 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/StreamFactoryRegistry.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/StreamFactoryRegistry.jav0100664 0001750 0001750 00000023410 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.util.HashMap; import java.util.Map; import opennlp.tools.formats.BioNLP2004NameSampleStreamFactory; import opennlp.tools.formats.ChunkerSampleStreamFactory; import opennlp.tools.formats.Conll02NameSampleStreamFactory; import opennlp.tools.formats.Conll03NameSampleStreamFactory; import opennlp.tools.formats.ConllXPOSSampleStreamFactory; import opennlp.tools.formats.ConllXSentenceSampleStreamFactory; import opennlp.tools.formats.ConllXTokenSampleStreamFactory; import opennlp.tools.formats.DocumentSampleStreamFactory; import opennlp.tools.formats.EvalitaNameSampleStreamFactory; import opennlp.tools.formats.LanguageDetectorSampleStreamFactory; import opennlp.tools.formats.LemmatizerSampleStreamFactory; import opennlp.tools.formats.NameSampleDataStreamFactory; import opennlp.tools.formats.ParseSampleStreamFactory; import opennlp.tools.formats.SentenceSampleStreamFactory; import opennlp.tools.formats.TokenSampleStreamFactory; import opennlp.tools.formats.TwentyNewsgroupSampleStreamFactory; import opennlp.tools.formats.WordTagSampleStreamFactory; import opennlp.tools.formats.ad.ADChunkSampleStreamFactory; import opennlp.tools.formats.ad.ADNameSampleStreamFactory; import opennlp.tools.formats.ad.ADPOSSampleStreamFactory; import opennlp.tools.formats.ad.ADSentenceSampleStreamFactory; import opennlp.tools.formats.ad.ADTokenSampleStreamFactory; import opennlp.tools.formats.brat.BratNameSampleStreamFactory; import opennlp.tools.formats.conllu.ConlluLemmaSampleStreamFactory; import opennlp.tools.formats.conllu.ConlluPOSSampleStreamFactory; import opennlp.tools.formats.conllu.ConlluSentenceSampleStreamFactory; import opennlp.tools.formats.conllu.ConlluTokenSampleStreamFactory; import opennlp.tools.formats.convert.NameToSentenceSampleStreamFactory; import opennlp.tools.formats.convert.NameToTokenSampleStreamFactory; import opennlp.tools.formats.convert.POSToSentenceSampleStreamFactory; import opennlp.tools.formats.convert.POSToTokenSampleStreamFactory; import opennlp.tools.formats.convert.ParseToPOSSampleStreamFactory; import opennlp.tools.formats.convert.ParseToSentenceSampleStreamFactory; import opennlp.tools.formats.convert.ParseToTokenSampleStreamFactory; import opennlp.tools.formats.frenchtreebank.ConstitParseSampleStreamFactory; import opennlp.tools.formats.irishsentencebank.IrishSentenceBankSentenceStreamFactory; import opennlp.tools.formats.irishsentencebank.IrishSentenceBankTokenSampleStreamFactory; import opennlp.tools.formats.leipzig.LeipzigLanguageSampleStreamFactory; import opennlp.tools.formats.letsmt.LetsmtSentenceStreamFactory; import opennlp.tools.formats.moses.MosesSentenceSampleStreamFactory; import opennlp.tools.formats.muc.Muc6NameSampleStreamFactory; import opennlp.tools.formats.nkjp.NKJPSentenceSampleStreamFactory; import opennlp.tools.formats.ontonotes.OntoNotesNameSampleStreamFactory; import opennlp.tools.formats.ontonotes.OntoNotesPOSSampleStreamFactory; import opennlp.tools.formats.ontonotes.OntoNotesParseSampleStreamFactory; /** * Registry for object stream factories. */ public final class StreamFactoryRegistry { private static final Map> registry = new HashMap<>(); static { ChunkerSampleStreamFactory.registerFactory(); DocumentSampleStreamFactory.registerFactory(); NameSampleDataStreamFactory.registerFactory(); ParseSampleStreamFactory.registerFactory(); SentenceSampleStreamFactory.registerFactory(); TokenSampleStreamFactory.registerFactory(); WordTagSampleStreamFactory.registerFactory(); LemmatizerSampleStreamFactory.registerFactory(); LanguageDetectorSampleStreamFactory.registerFactory(); NameToSentenceSampleStreamFactory.registerFactory(); NameToTokenSampleStreamFactory.registerFactory(); POSToSentenceSampleStreamFactory.registerFactory(); POSToTokenSampleStreamFactory.registerFactory(); ParseToPOSSampleStreamFactory.registerFactory(); ParseToSentenceSampleStreamFactory.registerFactory(); ParseToTokenSampleStreamFactory.registerFactory(); OntoNotesNameSampleStreamFactory.registerFactory(); OntoNotesParseSampleStreamFactory.registerFactory(); OntoNotesPOSSampleStreamFactory.registerFactory(); BioNLP2004NameSampleStreamFactory.registerFactory(); Conll02NameSampleStreamFactory.registerFactory(); Conll03NameSampleStreamFactory.registerFactory(); EvalitaNameSampleStreamFactory.registerFactory(); ConllXPOSSampleStreamFactory.registerFactory(); ConllXSentenceSampleStreamFactory.registerFactory(); ConllXTokenSampleStreamFactory.registerFactory(); ADChunkSampleStreamFactory.registerFactory(); ADNameSampleStreamFactory.registerFactory(); ADSentenceSampleStreamFactory.registerFactory(); ADPOSSampleStreamFactory.registerFactory(); ADTokenSampleStreamFactory.registerFactory(); TwentyNewsgroupSampleStreamFactory.registerFactory(); Muc6NameSampleStreamFactory.registerFactory(); ConstitParseSampleStreamFactory.registerFactory(); BratNameSampleStreamFactory.registerFactory(); LetsmtSentenceStreamFactory.registerFactory(); MosesSentenceSampleStreamFactory.registerFactory(); ConlluTokenSampleStreamFactory.registerFactory(); ConlluSentenceSampleStreamFactory.registerFactory(); ConlluPOSSampleStreamFactory.registerFactory(); ConlluLemmaSampleStreamFactory.registerFactory(); IrishSentenceBankSentenceStreamFactory.registerFactory(); IrishSentenceBankTokenSampleStreamFactory.registerFactory(); LeipzigLanguageSampleStreamFactory.registerFactory(); NKJPSentenceSampleStreamFactory.registerFactory(); } public static final String DEFAULT_FORMAT = "opennlp"; private StreamFactoryRegistry() { // not intended to be instantiated } /** * Registers factory which reads format named formatName and * instantiates streams producing objects of sampleClass class. * * @param sampleClass class of the objects, produced by the streams instantiated by the factory * @param formatName name of the format * @param factory instance of the factory * @return true if the factory was successfully registered */ public static boolean registerFactory(Class sampleClass, String formatName, ObjectStreamFactory factory) { boolean result; Map formats = registry.get(sampleClass); if (null == formats) { formats = new HashMap<>(); } if (!formats.containsKey(formatName)) { formats.put(formatName, factory); registry.put(sampleClass, formats); result = true; } else { result = false; } return result; } /** * Unregisters a factory which reads format named formatName and * instantiates streams producing objects of sampleClass class. * * @param sampleClass class of the objects, produced by the streams instantiated by the factory * @param formatName name of the format */ public static void unregisterFactory(Class sampleClass, String formatName) { Map formats = registry.get(sampleClass); if (null != formats) { if (formats.containsKey(formatName)) { formats.remove(formatName); } } } /** * Returns all factories which produce objects of sampleClass class. * * @param sampleClass class of the objects, produced by the streams instantiated by the factory * @return formats mapped to factories */ @SuppressWarnings("unchecked") public static Map> getFactories(Class sampleClass) { return (Map>) (Object) registry.get(sampleClass); } /** * Returns a factory which reads format named formatName and * instantiates streams producing objects of sampleClass class. * * @param sampleClass class of the objects, produced by the streams instantiated by the factory * @param formatName name of the format, if null, assumes OpenNLP format * @return factory instance */ @SuppressWarnings("unchecked") public static ObjectStreamFactory getFactory(Class sampleClass, String formatName) { if (null == formatName) { formatName = DEFAULT_FORMAT; } ObjectStreamFactory factory = registry.containsKey(sampleClass) ? registry.get(sampleClass).get(formatName) : null; if (factory != null) { return factory; } else { try { Class factoryClazz = Class.forName(formatName); // TODO: Need to check if it can produce the desired output // Otherwise there will be class cast exceptions later in the flow try { return (ObjectStreamFactory) factoryClazz.newInstance(); } catch (InstantiationException | IllegalAccessException e) { return null; } } catch (ClassNotFoundException e) { return null; } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000165 14135770370 032554 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTrainerTo0100664 0001750 0001750 00000011416 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.File; import java.io.IOException; import java.util.Map; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.cmdline.postag.POSTaggerTrainerTool.TrainerToolParams; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.postag.MutableTagDictionary; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.postag.TagDictionary; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ModelUtil; public final class POSTaggerTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public POSTaggerTrainerTool() { super(POSSample.class, TrainerToolParams.class); } public String getShortDescription() { return "trains a model for the part-of-speech tagger"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), true); if (mlParams != null && !TrainerFactory.isValid(mlParams)) { throw new TerminateToolException(1, "Training parameters file '" + params.getParams() + "' is invalid!"); } if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("pos tagger model", modelOutFile); Map resources; try { resources = TokenNameFinderTrainerTool.loadResources( params.getResources(), params.getFeaturegen()); } catch (IOException e) { throw new TerminateToolException(-1,"IO error while loading resources", e); } byte[] featureGeneratorBytes = TokenNameFinderTrainerTool.openFeatureGeneratorBytes(params.getFeaturegen()); POSTaggerFactory postaggerFactory; try { postaggerFactory = POSTaggerFactory.create(params.getFactory(), featureGeneratorBytes, resources, null); } catch (InvalidFormatException e) { throw new TerminateToolException(-1, e.getMessage(), e); } if (params.getDict() != null) { try { postaggerFactory.setTagDictionary(postaggerFactory .createTagDictionary(params.getDict())); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while loading POS Dictionary", e); } } if (params.getTagDictCutoff() != null) { try { TagDictionary dict = postaggerFactory.getTagDictionary(); if (dict == null) { dict = postaggerFactory.createEmptyTagDictionary(); postaggerFactory.setTagDictionary(dict); } if (dict instanceof MutableTagDictionary) { POSTaggerME.populatePOSDictionary(sampleStream, (MutableTagDictionary)dict, params.getTagDictCutoff()); } else { throw new IllegalArgumentException( "Can't extend a POSDictionary that does not implement MutableTagDictionary."); } sampleStream.reset(); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while creating/extending POS Dictionary: " + e.getMessage(), e); } } POSModel model; try { model = opennlp.tools.postag.POSTaggerME.train(params.getLang(), sampleStream, mlParams, postaggerFactory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("pos tagger", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_Tr0100644 0000000 0000000 00000000157 14135770370 032624 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/TrainingParams.jav0100664 0001750 0001750 00000003767 14135770370 034112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParameters for Name Finder. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "featuregenFile", description = "The feature generator descriptor file") @OptionalParameter File getFeaturegen(); @ParameterDescription(valueName = "resourcesDir", description = "The resources directory") @OptionalParameter File getResources(); @ParameterDescription(valueName = "dictionaryPath", description = "The XML tag dictionary file") @OptionalParameter File getDict(); @ParameterDescription(valueName = "tagDictCutoff", description = "TagDictionary cutoff. If specified will create/expand a mutable TagDictionary") @OptionalParameter Integer getTagDictCutoff(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of POSTaggerFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000167 14135770370 032556 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluator0100664 0001750 0001750 00000007544 14135770370 034067 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.cmdline.postag.POSTaggerEvaluatorTool.EvalToolParams; import opennlp.tools.postag.POSEvaluator; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerEvaluationMonitor; public final class POSTaggerEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams, FineGrainedEvaluatorParams { } public POSTaggerEvaluatorTool() { super(POSSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the POS tagger model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); POSModel model = new POSModelLoader().load(params.getModel()); POSTaggerEvaluationMonitor missclassifiedListener = null; if (params.getMisclassified()) { missclassifiedListener = new POSEvaluationErrorListener(); } POSTaggerFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new POSTaggerFineGrainedReportListener( reportOutputStream); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating POS Tagger fine-grained report file: " + e.getMessage()); } } POSEvaluator evaluator = new POSEvaluator( new opennlp.tools.postag.POSTaggerME(model), missclassifiedListener, reportListener); System.out.print("Evaluating ... "); try { evaluator.evaluate(sampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } System.out.println(); System.out.println("Accuracy: " + evaluator.getWordAccuracy()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000156 14135770370 032554 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerTool.java0100664 0001750 0001750 00000005225 14135770370 033754 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public final class POSTaggerTool extends BasicCmdLineTool { public String getShortDescription() { return "learnable part of speech tagger"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { POSModel model = new POSModelLoader().load(new File(args[0])); POSTaggerME tagger = new POSTaggerME(model); ObjectStream lineStream; PerformanceMonitor perfMon = null; try { lineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String line; while ((line = lineStream.read()) != null) { String[] whitespaceTokenizerLine = WhitespaceTokenizer.INSTANCE.tokenize(line); String[] tags = tagger.tag(whitespaceTokenizerLine); POSSample sample = new POSSample(whitespaceTokenizerLine, tags); System.out.println(sample); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000173 14135770370 032553 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSEvaluationError0100664 0001750 0001750 00000003436 14135770370 034110 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerEvaluationMonitor; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. * */ public class POSEvaluationErrorListener extends EvaluationErrorPrinter implements POSTaggerEvaluationMonitor { /** * Creates a listener that will print to System.err */ public POSEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public POSEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(POSSample reference, POSSample prediction) { printError(reference.getTags(), prediction.getTags(), reference, prediction, reference.getSentence()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000203 14135770370 032545 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerFineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerFineGrain0100664 0001750 0001750 00000004511 14135770370 033756 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.OutputStream; import opennlp.tools.cmdline.FineGrainedReportListener; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerEvaluationMonitor; /** * Generates a detailed report for the POS Tagger. *

* It is possible to use it from an API and access the statistics using the * provided getters * */ public class POSTaggerFineGrainedReportListener extends FineGrainedReportListener implements POSTaggerEvaluationMonitor { /** * Creates a listener that will print to {@link System#err} */ public POSTaggerFineGrainedReportListener() { this(System.err); } /** * Creates a listener that prints to a given {@link OutputStream} */ public POSTaggerFineGrainedReportListener(OutputStream outputStream) { super(outputStream); } // methods inherited from EvaluationMonitor public void missclassified(POSSample reference, POSSample prediction) { statsAdd(reference, prediction); } public void correctlyClassified(POSSample reference, POSSample prediction) { statsAdd(reference, prediction); } private void statsAdd(POSSample reference, POSSample prediction) { getStats().add(reference.getSentence(), reference.getTags(), prediction.getTags()); } public void writeReport() { printGeneralStatistics(); // token stats printTokenErrorRank(); printTokenOcurrenciesRank(); // tag stats printTagsErrorRank(); // confusion tables printGeneralConfusionTable(); printDetailedConfusionMatrix(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000167 14135770370 032556 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerConverter0100664 0001750 0001750 00000002073 14135770370 034064 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.postag.POSSample; public class POSTaggerConverterTool extends AbstractConverterTool { public POSTaggerConverterTool() { super(POSSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000174 14135770370 032554 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossVali0100664 0001750 0001750 00000010663 14135770370 034026 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Map; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.cmdline.postag.POSTaggerCrossValidatorTool.CVToolParams; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerCrossValidator; import opennlp.tools.postag.POSTaggerEvaluationMonitor; import opennlp.tools.util.model.ModelUtil; public final class POSTaggerCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends CVParams, TrainingParams, FineGrainedEvaluatorParams { } public POSTaggerCrossValidatorTool() { super(POSSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable POS tagger"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } POSTaggerEvaluationMonitor missclassifiedListener = null; if (params.getMisclassified()) { missclassifiedListener = new POSEvaluationErrorListener(); } POSTaggerFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new POSTaggerFineGrainedReportListener( reportOutputStream); } catch (FileNotFoundException e) { throw createTerminationIOException(e); } } Map resources; try { resources = TokenNameFinderTrainerTool.loadResources(params.getResources(), params.getFeaturegen()); } catch (IOException e) { throw new TerminateToolException(-1,"IO error while loading resources", e); } byte[] featureGeneratorBytes = TokenNameFinderTrainerTool.openFeatureGeneratorBytes(params.getFeaturegen()); POSTaggerCrossValidator validator; try { validator = new POSTaggerCrossValidator(params.getLang(), mlParams, params.getDict(), featureGeneratorBytes, resources, params.getTagDictCutoff(), params.getFactory(), missclassifiedListener, reportListener); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } System.out.println(); System.out.println("Accuracy: " + validator.getWordAccuracy()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_postag_PO0100644 0000000 0000000 00000000157 14135770370 032555 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSModelLoader.jav0100664 0001750 0001750 00000002516 14135770370 033733 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.postag; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.postag.POSModel; /** * Loads a POS Tagger Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public final class POSModelLoader extends ModelLoader { public POSModelLoader() { super("POS Tagger"); } @Override protected POSModel loadModel(InputStream modelIn) throws IOException { return new POSModel(modelIn); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/CLI.java0100664 0001750 0001750 00000024531 14135770370 030436 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import opennlp.tools.cmdline.chunker.ChunkerConverterTool; import opennlp.tools.cmdline.chunker.ChunkerCrossValidatorTool; import opennlp.tools.cmdline.chunker.ChunkerEvaluatorTool; import opennlp.tools.cmdline.chunker.ChunkerMETool; import opennlp.tools.cmdline.chunker.ChunkerTrainerTool; import opennlp.tools.cmdline.dictionary.DictionaryBuilderTool; import opennlp.tools.cmdline.doccat.DoccatConverterTool; import opennlp.tools.cmdline.doccat.DoccatCrossValidatorTool; import opennlp.tools.cmdline.doccat.DoccatEvaluatorTool; import opennlp.tools.cmdline.doccat.DoccatTool; import opennlp.tools.cmdline.doccat.DoccatTrainerTool; import opennlp.tools.cmdline.entitylinker.EntityLinkerTool; import opennlp.tools.cmdline.langdetect.LanguageDetectorConverterTool; import opennlp.tools.cmdline.langdetect.LanguageDetectorCrossValidatorTool; import opennlp.tools.cmdline.langdetect.LanguageDetectorEvaluatorTool; import opennlp.tools.cmdline.langdetect.LanguageDetectorTool; import opennlp.tools.cmdline.langdetect.LanguageDetectorTrainerTool; import opennlp.tools.cmdline.languagemodel.NGramLanguageModelTool; import opennlp.tools.cmdline.lemmatizer.LemmatizerEvaluatorTool; import opennlp.tools.cmdline.lemmatizer.LemmatizerMETool; import opennlp.tools.cmdline.lemmatizer.LemmatizerTrainerTool; import opennlp.tools.cmdline.namefind.CensusDictionaryCreatorTool; import opennlp.tools.cmdline.namefind.TokenNameFinderConverterTool; import opennlp.tools.cmdline.namefind.TokenNameFinderCrossValidatorTool; import opennlp.tools.cmdline.namefind.TokenNameFinderEvaluatorTool; import opennlp.tools.cmdline.namefind.TokenNameFinderTool; import opennlp.tools.cmdline.namefind.TokenNameFinderTrainerTool; import opennlp.tools.cmdline.parser.BuildModelUpdaterTool; import opennlp.tools.cmdline.parser.CheckModelUpdaterTool; import opennlp.tools.cmdline.parser.ParserConverterTool; import opennlp.tools.cmdline.parser.ParserEvaluatorTool; import opennlp.tools.cmdline.parser.ParserTool; import opennlp.tools.cmdline.parser.ParserTrainerTool; import opennlp.tools.cmdline.parser.TaggerModelReplacerTool; import opennlp.tools.cmdline.postag.POSTaggerConverterTool; import opennlp.tools.cmdline.postag.POSTaggerCrossValidatorTool; import opennlp.tools.cmdline.postag.POSTaggerEvaluatorTool; import opennlp.tools.cmdline.postag.POSTaggerTrainerTool; import opennlp.tools.cmdline.sentdetect.SentenceDetectorConverterTool; import opennlp.tools.cmdline.sentdetect.SentenceDetectorCrossValidatorTool; import opennlp.tools.cmdline.sentdetect.SentenceDetectorEvaluatorTool; import opennlp.tools.cmdline.sentdetect.SentenceDetectorTool; import opennlp.tools.cmdline.sentdetect.SentenceDetectorTrainerTool; import opennlp.tools.cmdline.tokenizer.DictionaryDetokenizerTool; import opennlp.tools.cmdline.tokenizer.SimpleTokenizerTool; import opennlp.tools.cmdline.tokenizer.TokenizerConverterTool; import opennlp.tools.cmdline.tokenizer.TokenizerCrossValidatorTool; import opennlp.tools.cmdline.tokenizer.TokenizerMEEvaluatorTool; import opennlp.tools.cmdline.tokenizer.TokenizerMETool; import opennlp.tools.cmdline.tokenizer.TokenizerTrainerTool; import opennlp.tools.util.Version; public final class CLI { public static final String CMD = "opennlp"; private static Map toolLookupMap; static { toolLookupMap = new LinkedHashMap<>(); List tools = new LinkedList<>(); // Document Categorizer tools.add(new DoccatTool()); tools.add(new DoccatTrainerTool()); tools.add(new DoccatEvaluatorTool()); tools.add(new DoccatCrossValidatorTool()); tools.add(new DoccatConverterTool()); // Language Detector tools.add(new LanguageDetectorTool()); tools.add(new LanguageDetectorTrainerTool()); tools.add(new LanguageDetectorConverterTool()); tools.add(new LanguageDetectorCrossValidatorTool()); tools.add(new LanguageDetectorEvaluatorTool()); // Dictionary Builder tools.add(new DictionaryBuilderTool()); // Tokenizer tools.add(new SimpleTokenizerTool()); tools.add(new TokenizerMETool()); tools.add(new TokenizerTrainerTool()); tools.add(new TokenizerMEEvaluatorTool()); tools.add(new TokenizerCrossValidatorTool()); tools.add(new TokenizerConverterTool()); tools.add(new DictionaryDetokenizerTool()); // Sentence detector tools.add(new SentenceDetectorTool()); tools.add(new SentenceDetectorTrainerTool()); tools.add(new SentenceDetectorEvaluatorTool()); tools.add(new SentenceDetectorCrossValidatorTool()); tools.add(new SentenceDetectorConverterTool()); // Name Finder tools.add(new TokenNameFinderTool()); tools.add(new TokenNameFinderTrainerTool()); tools.add(new TokenNameFinderEvaluatorTool()); tools.add(new TokenNameFinderCrossValidatorTool()); tools.add(new TokenNameFinderConverterTool()); tools.add(new CensusDictionaryCreatorTool()); // POS Tagger tools.add(new opennlp.tools.cmdline.postag.POSTaggerTool()); tools.add(new POSTaggerTrainerTool()); tools.add(new POSTaggerEvaluatorTool()); tools.add(new POSTaggerCrossValidatorTool()); tools.add(new POSTaggerConverterTool()); //Lemmatizer tools.add(new LemmatizerMETool()); tools.add(new LemmatizerTrainerTool()); tools.add(new LemmatizerEvaluatorTool()); // Chunker tools.add(new ChunkerMETool()); tools.add(new ChunkerTrainerTool()); tools.add(new ChunkerEvaluatorTool()); tools.add(new ChunkerCrossValidatorTool()); tools.add(new ChunkerConverterTool()); // Parser tools.add(new ParserTool()); tools.add(new ParserTrainerTool()); // trains everything tools.add(new ParserEvaluatorTool()); tools.add(new ParserConverterTool()); // trains everything tools.add(new BuildModelUpdaterTool()); // re-trains build model tools.add(new CheckModelUpdaterTool()); // re-trains build model tools.add(new TaggerModelReplacerTool()); // Entity Linker tools.add(new EntityLinkerTool()); // Language Model tools.add(new NGramLanguageModelTool()); for (CmdLineTool tool : tools) { toolLookupMap.put(tool.getName(), tool); } toolLookupMap = Collections.unmodifiableMap(toolLookupMap); } /** * @return a set which contains all tool names */ public static Set getToolNames() { return toolLookupMap.keySet(); } /** * @return a read only map with tool names and instances */ public static Map getToolLookupMap() { return toolLookupMap; } private static void usage() { System.out.print("OpenNLP " + Version.currentVersion() + ". "); System.out.println("Usage: " + CMD + " TOOL"); System.out.println("where TOOL is one of:"); // distance of tool name from line start int numberOfSpaces = -1; for (String toolName : toolLookupMap.keySet()) { if (toolName.length() > numberOfSpaces) { numberOfSpaces = toolName.length(); } } numberOfSpaces = numberOfSpaces + 4; for (CmdLineTool tool : toolLookupMap.values()) { System.out.print(" " + tool.getName()); for (int i = 0; i < StrictMath.abs(tool.getName().length() - numberOfSpaces); i++) { System.out.print(" "); } System.out.println(tool.getShortDescription()); } System.out.println("All tools print help when invoked with help parameter"); System.out.println("Example: opennlp SimpleTokenizer help"); } public static void main(String[] args) { if (args.length == 0) { usage(); System.exit(0); } final long startTime = System.currentTimeMillis(); String[] toolArguments = new String[args.length - 1]; System.arraycopy(args, 1, toolArguments, 0, toolArguments.length); String toolName = args[0]; //check for format String formatName = StreamFactoryRegistry.DEFAULT_FORMAT; int idx = toolName.indexOf("."); if (-1 < idx) { formatName = toolName.substring(idx + 1); toolName = toolName.substring(0, idx); } CmdLineTool tool = toolLookupMap.get(toolName); try { if (null == tool) { throw new TerminateToolException(1, "Tool " + toolName + " is not found."); } if ((0 == toolArguments.length && tool.hasParams()) || 0 < toolArguments.length && "help".equals(toolArguments[0])) { if (tool instanceof TypedCmdLineTool) { System.out.println(((TypedCmdLineTool) tool).getHelp(formatName)); } else if (tool instanceof BasicCmdLineTool) { System.out.println(tool.getHelp()); } System.exit(0); } if (tool instanceof TypedCmdLineTool) { ((TypedCmdLineTool) tool).run(formatName, toolArguments); } else if (tool instanceof BasicCmdLineTool) { if (-1 == idx) { ((BasicCmdLineTool) tool).run(toolArguments); } else { throw new TerminateToolException(1, "Tool " + toolName + " does not support formats."); } } else { throw new TerminateToolException(1, "Tool " + toolName + " is not supported."); } } catch (TerminateToolException e) { if (e.getMessage() != null) { System.err.println(e.getMessage()); } if (e.getCause() != null) { System.err.println(e.getCause().getMessage()); e.getCause().printStackTrace(System.err); } System.exit(e.getCode()); } final long endTime = System.currentTimeMillis(); System.err.format("Execution time: %.3f seconds\n", (endTime - startTime) / 1000.0); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000171 14135770370 032604 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000005554 14135770370 034101 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.langdetect.Language; import opennlp.tools.langdetect.LanguageDetector; import opennlp.tools.langdetect.LanguageDetectorME; import opennlp.tools.langdetect.LanguageDetectorModel; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ParagraphStream; import opennlp.tools.util.PlainTextByLineStream; public class LanguageDetectorTool extends BasicCmdLineTool { @Override public String getShortDescription() { return "learned language detector"; } @Override public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < documents"; } @Override public void run(String[] args) { if (0 == args.length) { System.out.println(getHelp()); } else { LanguageDetectorModel model = new LanguageDetectorModelLoader().load(new File(args[0])); LanguageDetector langDetectME = new LanguageDetectorME(model); /* * moved initialization to the try block to catch new IOException */ ObjectStream documentStream; PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "doc"); perfMon.start(); try { documentStream = new ParagraphStream(new PlainTextByLineStream( new SystemInputStreamFactory(), SystemInputStreamFactory.encoding())); String document; while ((document = documentStream.read()) != null) { Language lang = langDetectME.predictLanguage(document); LanguageSample sample = new LanguageSample(lang, document); System.out.println(sample); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000163 14135770370 032605 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/TrainingParams0100664 0001750 0001750 00000002667 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; /** * TrainingParams for Language Detector. * * Note: Do not use this class, internal use only! */ interface TrainingParams { @ParameterDescription(valueName = "paramsFile", description = "training parameters file.") @OptionalParameter() String getParams(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of LanguageDetectorFactory" + " where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000202 14135770370 032577 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000002140 14135770370 034065 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.langdetect.LanguageSample; public class LanguageDetectorConverterTool extends AbstractConverterTool { public LanguageDetectorConverterTool() { super(LanguageSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000214 14135770370 032602 xustar000000000 0000000 140 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000004172 14135770370 034074 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.langdetect.LanguageDetectorEvaluationMonitor; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints to an * output stream. * */ public class LanguageDetectorEvaluationErrorListener extends EvaluationErrorPrinter implements LanguageDetectorEvaluationMonitor { /** * Creates a listener that will print to System.err */ public LanguageDetectorEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public LanguageDetectorEvaluationErrorListener(OutputStream outputStream) { super(outputStream); printStream.println("Expected\tPredicted\tContext"); } @Override public void missclassified(LanguageSample reference, LanguageSample prediction) { printError(reference, prediction); } @Override protected void printError(LanguageSample referenceSample, LanguageSample predictedSample) { printStream.println(String.join("\t", referenceSample.getLanguage().getLang(), predictedSample.getLanguage().getLang(), referenceSample.getContext())); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000200 14135770370 032575 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000002655 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.langdetect.LanguageDetectorModel; /** * Loads a Language Detector Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public class LanguageDetectorModelLoader extends ModelLoader { public LanguageDetectorModelLoader() { super("Language Detector"); } @Override protected LanguageDetectorModel loadModel(InputStream modelIn) throws IOException { return new LanguageDetectorModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000202 14135770370 032577 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000011173 14135770370 034073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.langdetect.LanguageDetectorEvaluationMonitor; import opennlp.tools.langdetect.LanguageDetectorEvaluator; import opennlp.tools.langdetect.LanguageDetectorME; import opennlp.tools.langdetect.LanguageDetectorModel; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.eval.EvaluationMonitor; public final class LanguageDetectorEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams, FineGrainedEvaluatorParams { } public LanguageDetectorEvaluatorTool() { super(LanguageSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the Language Detector model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); LanguageDetectorModel model = new LanguageDetectorModelLoader().load(params.getModel()); List> listeners = new LinkedList<>(); if (params.getMisclassified()) { listeners.add(new LanguageDetectorEvaluationErrorListener()); } LanguageDetectorFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new LanguageDetectorFineGrainedReportListener(reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating LanguageDetector fine-grained report file: " + e.getMessage()); } } LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator( new LanguageDetectorME(model), listeners.toArray(new LanguageDetectorEvaluationMonitor[listeners.size()])); final PerformanceMonitor monitor = new PerformanceMonitor("doc"); try (ObjectStream measuredSampleStream = new ObjectStream() { public LanguageSample read() throws IOException { monitor.incrementCounter(); return sampleStream.read(); } public void reset() throws IOException { sampleStream.reset(); } public void close() throws IOException { sampleStream.close(); } }) { monitor.startAndPrintThroughput(); evaluator.evaluate(measuredSampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } // sorry that this can fail monitor.stopAndPrintFinalResult(); System.out.println(); System.out.println(evaluator); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000216 14135770370 032604 xustar000000000 0000000 142 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorFineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000004436 14135770370 034077 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.OutputStream; import opennlp.tools.cmdline.FineGrainedReportListener; import opennlp.tools.langdetect.LanguageDetectorEvaluationMonitor; import opennlp.tools.langdetect.LanguageSample; /** * Generates a detailed report for the POS Tagger. *

* It is possible to use it from an API and access the statistics using the * provided getters */ public class LanguageDetectorFineGrainedReportListener extends FineGrainedReportListener implements LanguageDetectorEvaluationMonitor { /** * Creates a listener that will print to {@link System#err} */ public LanguageDetectorFineGrainedReportListener() { this(System.err); } /** * Creates a listener that prints to a given {@link OutputStream} */ public LanguageDetectorFineGrainedReportListener(OutputStream outputStream) { super(outputStream); } // methods inherited from EvaluationMonitor public void missclassified(LanguageSample reference, LanguageSample prediction) { statsAdd(reference, prediction); } public void correctlyClassified(LanguageSample reference, LanguageSample prediction) { statsAdd(reference, prediction); } private void statsAdd(LanguageSample reference, LanguageSample prediction) { getStats().add(reference.getContext(), reference.getLanguage().getLang(), prediction.getLanguage().getLang()); } public void writeReport() { printGeneralStatistics(); printTagsErrorRank(); printGeneralConfusionTable(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000207 14135770370 032604 xustar000000000 0000000 135 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000010570 14135770370 034073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.langdetect.LanguageDetectorCrossValidator; import opennlp.tools.langdetect.LanguageDetectorEvaluationMonitor; import opennlp.tools.langdetect.LanguageDetectorFactory; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.eval.EvaluationMonitor; import opennlp.tools.util.model.ModelUtil; public final class LanguageDetectorCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends CVParams, TrainingParams, FineGrainedEvaluatorParams { } public LanguageDetectorCrossValidatorTool() { super(LanguageSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable Language Detector"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } List> listeners = new LinkedList<>(); if (params.getMisclassified()) { listeners.add(new LanguageDetectorEvaluationErrorListener()); } LanguageDetectorFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new LanguageDetectorFineGrainedReportListener(reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw createTerminationIOException(e); } } LanguageDetectorEvaluationMonitor[] listenersArr = listeners .toArray(new LanguageDetectorEvaluationMonitor[listeners.size()]); LanguageDetectorCrossValidator validator; try { LanguageDetectorFactory factory = LanguageDetectorFactory.create(params.getFactory()); validator = new LanguageDetectorCrossValidator(mlParams, factory, listenersArr); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } System.out.println(); System.out.println("Accuracy: " + validator.getDocumentAccuracy() + "\n" + "Number of documents: " + validator.getDocumentCount()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_langdetec0100644 0000000 0000000 00000000200 14135770370 032575 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetect0100664 0001750 0001750 00000005517 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.langdetect; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.ArgumentParser; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.langdetect.LanguageDetectorFactory; import opennlp.tools.langdetect.LanguageDetectorME; import opennlp.tools.langdetect.LanguageDetectorModel; import opennlp.tools.langdetect.LanguageSample; import opennlp.tools.util.model.ModelUtil; public class LanguageDetectorTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams { @ArgumentParser.ParameterDescription(valueName = "modelFile", description = "output model file.") File getModel(); @ArgumentParser.ParameterDescription(valueName = "paramsFile", description = "training parameters file.") @ArgumentParser.OptionalParameter() String getParams(); } public LanguageDetectorTrainerTool() { super(LanguageSample.class, TrainerToolParams.class); } @Override public String getShortDescription() { return "trainer for the learnable language detector"; } @Override public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("language detector model", modelOutFile); LanguageDetectorModel model; try { LanguageDetectorFactory factory = LanguageDetectorFactory.create(params.getFactory()); model = LanguageDetectorME.train(sampleStream, mlParams, factory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("language detector", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_FineGrain0100644 0000000 0000000 00000000163 14135770370 032521 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/FineGrainedReportListener0100664 0001750 0001750 00000073367 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.OutputStream; import java.io.PrintStream; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import opennlp.tools.util.Span; import opennlp.tools.util.eval.FMeasure; import opennlp.tools.util.eval.Mean; public abstract class FineGrainedReportListener { private static final char[] alpha = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; private final PrintStream printStream; private final Stats stats = new Stats(); public FineGrainedReportListener(PrintStream printStream) { this.printStream = printStream; } /** * Writes the report to the {@link OutputStream}. Should be called only after * the evaluation process */ public FineGrainedReportListener(OutputStream outputStream) { this.printStream = new PrintStream(outputStream); } private static String generateAlphaLabel(int index) { char[] labelChars = new char[3]; int i; for (i = 2; i >= 0; i--) { if (index >= 0) { labelChars[i] = alpha[index % alpha.length]; index = index / alpha.length - 1; } else { labelChars[i] = ' '; } } return new String(labelChars); } public abstract void writeReport(); // api methods // general stats protected Stats getStats() { return this.stats; } private long getNumberOfSentences() { return stats.getNumberOfSentences(); } private double getAverageSentenceSize() { return stats.getAverageSentenceSize(); } private int getMinSentenceSize() { return stats.getMinSentenceSize(); } private int getMaxSentenceSize() { return stats.getMaxSentenceSize(); } private int getNumberOfTags() { return stats.getNumberOfTags(); } // token stats private double getAccuracy() { return stats.getAccuracy(); } private double getTokenAccuracy(String token) { return stats.getTokenAccuracy(token); } private SortedSet getTokensOrderedByFrequency() { return stats.getTokensOrderedByFrequency(); } private int getTokenFrequency(String token) { return stats.getTokenFrequency(token); } private int getTokenErrors(String token) { return stats.getTokenErrors(token); } private SortedSet getTokensOrderedByNumberOfErrors() { return stats.getTokensOrderedByNumberOfErrors(); } private SortedSet getTagsOrderedByErrors() { return stats.getTagsOrderedByErrors(); } private int getTagFrequency(String tag) { return stats.getTagFrequency(tag); } private int getTagErrors(String tag) { return stats.getTagErrors(tag); } private double getTagPrecision(String tag) { return stats.getTagPrecision(tag); } private double getTagRecall(String tag) { return stats.getTagRecall(tag); } private double getTagFMeasure(String tag) { return stats.getTagFMeasure(tag); } private SortedSet getConfusionMatrixTagset() { return stats.getConfusionMatrixTagset(); } private SortedSet getConfusionMatrixTagset(String token) { return stats.getConfusionMatrixTagset(token); } private double[][] getConfusionMatrix() { return stats.getConfusionMatrix(); } private double[][] getConfusionMatrix(String token) { return stats.getConfusionMatrix(token); } private String matrixToString(SortedSet tagset, double[][] data, boolean filter) { // we dont want to print trivial cases (acc=1) int initialIndex = 0; String[] tags = tagset.toArray(new String[tagset.size()]); StringBuilder sb = new StringBuilder(); int minColumnSize = Integer.MIN_VALUE; String[][] matrix = new String[data.length][data[0].length]; for (int i = 0; i < data.length; i++) { int j = 0; for (; j < data[i].length - 1; j++) { matrix[i][j] = data[i][j] > 0 ? Integer.toString((int) data[i][j]) : "."; if (minColumnSize < matrix[i][j].length()) { minColumnSize = matrix[i][j].length(); } } matrix[i][j] = MessageFormat.format("{0,number,#.##%}", data[i][j]); if (data[i][j] == 1 && filter) { initialIndex = i + 1; } } final String headerFormat = "%" + (minColumnSize + 2) + "s "; // | 1234567 | final String cellFormat = "%" + (minColumnSize + 2) + "s "; // | 12345 | final String diagFormat = " %" + (minColumnSize + 2) + "s"; for (int i = initialIndex; i < tagset.size(); i++) { sb.append(String.format(headerFormat, generateAlphaLabel(i - initialIndex).trim())); } sb.append("| Accuracy | <-- classified as\n"); for (int i = initialIndex; i < data.length; i++) { int j = initialIndex; for (; j < data[i].length - 1; j++) { if (i == j) { String val = "<" + matrix[i][j] + ">"; sb.append(String.format(diagFormat, val)); } else { sb.append(String.format(cellFormat, matrix[i][j])); } } sb.append( String.format("| %-6s | %3s = ", matrix[i][j], generateAlphaLabel(i - initialIndex))).append(tags[i]); sb.append("\n"); } return sb.toString(); } protected void printGeneralStatistics() { printHeader("Evaluation summary"); printStream.append( String.format("%21s: %6s", "Number of sentences", Long.toString(getNumberOfSentences()))).append("\n"); printStream.append( String.format("%21s: %6s", "Min sentence size", getMinSentenceSize())) .append("\n"); printStream.append( String.format("%21s: %6s", "Max sentence size", getMaxSentenceSize())) .append("\n"); printStream.append( String.format("%21s: %6s", "Average sentence size", MessageFormat.format("{0,number,#.##}", getAverageSentenceSize()))) .append("\n"); printStream.append( String.format("%21s: %6s", "Tags count", getNumberOfTags())).append( "\n"); printStream.append( String.format("%21s: %6s", "Accuracy", MessageFormat.format("{0,number,#.##%}", getAccuracy()))).append( "\n"); printFooter("Evaluation Corpus Statistics"); } protected void printTokenOcurrenciesRank() { printHeader("Most frequent tokens"); SortedSet toks = getTokensOrderedByFrequency(); final int maxLines = 20; int maxTokSize = 5; int count = 0; Iterator tokIterator = toks.iterator(); while (tokIterator.hasNext() && count++ < maxLines) { String tok = tokIterator.next(); if (tok.length() > maxTokSize) { maxTokSize = tok.length(); } } int tableSize = maxTokSize + 19; String format = "| %3s | %6s | %" + maxTokSize + "s |"; printLine(tableSize); printStream.append(String.format(format, "Pos", "Count", "Token")).append( "\n"); printLine(tableSize); // get the first 20 errors count = 0; tokIterator = toks.iterator(); while (tokIterator.hasNext() && count++ < maxLines) { String tok = tokIterator.next(); int ocurrencies = getTokenFrequency(tok); printStream.append(String.format(format, count, ocurrencies, tok) ).append("\n"); } printLine(tableSize); printFooter("Most frequent tokens"); } protected void printTokenErrorRank() { printHeader("Tokens with the highest number of errors"); printStream.append("\n"); SortedSet toks = getTokensOrderedByNumberOfErrors(); int maxTokenSize = 5; int count = 0; Iterator tokIterator = toks.iterator(); while (tokIterator.hasNext() && count++ < 20) { String tok = tokIterator.next(); if (tok.length() > maxTokenSize) { maxTokenSize = tok.length(); } } int tableSize = 31 + maxTokenSize; String format = "| %" + maxTokenSize + "s | %6s | %5s | %7s |\n"; printLine(tableSize); printStream.append(String.format(format, "Token", "Errors", "Count", "% Err")); printLine(tableSize); // get the first 20 errors count = 0; tokIterator = toks.iterator(); while (tokIterator.hasNext() && count++ < 20) { String tok = tokIterator.next(); int ocurrencies = getTokenFrequency(tok); int errors = getTokenErrors(tok); String rate = MessageFormat.format("{0,number,#.##%}", (double) errors / ocurrencies); printStream.append(String.format(format, tok, errors, ocurrencies, rate) ); } printLine(tableSize); printFooter("Tokens with the highest number of errors"); } protected void printTagsErrorRank() { printHeader("Detailed Accuracy By Tag"); SortedSet tags = getTagsOrderedByErrors(); printStream.append("\n"); int maxTagSize = 3; for (String t : tags) { if (t.length() > maxTagSize) { maxTagSize = t.length(); } } int tableSize = 65 + maxTagSize; String headerFormat = "| %" + maxTagSize + "s | %6s | %6s | %7s | %9s | %6s | %9s |\n"; String format = "| %" + maxTagSize + "s | %6s | %6s | %-7s | %-9s | %-6s | %-9s |\n"; printLine(tableSize); printStream.append(String.format(headerFormat, "Tag", "Errors", "Count", "% Err", "Precision", "Recall", "F-Measure")); printLine(tableSize); for (String tag : tags) { int ocurrencies = getTagFrequency(tag); int errors = getTagErrors(tag); String rate = MessageFormat.format("{0,number,#.###}", (double) errors / ocurrencies); double p = getTagPrecision(tag); double r = getTagRecall(tag); double f = getTagFMeasure(tag); printStream.append(String.format(format, tag, errors, ocurrencies, rate, MessageFormat.format("{0,number,#.###}", p > 0 ? p : 0), MessageFormat.format("{0,number,#.###}", r > 0 ? r : 0), MessageFormat.format("{0,number,#.###}", f > 0 ? f : 0)) ); } printLine(tableSize); printFooter("Tags with the highest number of errors"); } protected void printGeneralConfusionTable() { printHeader("Confusion matrix"); SortedSet labels = getConfusionMatrixTagset(); double[][] confusionMatrix = getConfusionMatrix(); printStream.append("\nTags with 100% accuracy: "); int line = 0; for (String label : labels) { if (confusionMatrix[line][confusionMatrix[0].length - 1] == 1) { printStream.append(label).append(" (") .append(Integer.toString((int) confusionMatrix[line][line])) .append(") "); } line++; } printStream.append("\n\n"); printStream.append(matrixToString(labels, confusionMatrix, true)); printFooter("Confusion matrix"); } protected void printDetailedConfusionMatrix() { printHeader("Confusion matrix for tokens"); printStream.append(" sorted by number of errors\n"); SortedSet toks = getTokensOrderedByNumberOfErrors(); for (String t : toks) { double acc = getTokenAccuracy(t); if (acc < 1) { printStream .append("\n[") .append(t) .append("]\n") .append( String.format("%12s: %-8s", "Accuracy", MessageFormat.format("{0,number,#.##%}", acc))) .append("\n"); printStream.append( String.format("%12s: %-8s", "Ocurrencies", Integer.toString(getTokenFrequency(t)))).append("\n"); printStream.append( String.format("%12s: %-8s", "Errors", Integer.toString(getTokenErrors(t)))).append("\n"); SortedSet labels = getConfusionMatrixTagset(t); double[][] confusionMatrix = getConfusionMatrix(t); printStream.append(matrixToString(labels, confusionMatrix, false)); } } printFooter("Confusion matrix for tokens"); } /** Auxiliary method that prints a emphasised report header */ private void printHeader(String text) { printStream.append("=== ").append(text).append(" ===\n"); } /** Auxiliary method that prints a marker to the end of a report */ private void printFooter(String text) { printStream.append("\n<-end> ").append(text).append("\n\n"); } /** Auxiliary method that prints a horizontal line of a given size */ private void printLine(int size) { for (int i = 0; i < size; i++) { printStream.append("-"); } printStream.append("\n"); } /** * A comparator that sorts the confusion matrix labels according to the * accuracy of each line */ public static class MatrixLabelComparator implements Comparator { private Map confusionMatrix; public MatrixLabelComparator(Map confusionMatrix) { this.confusionMatrix = confusionMatrix; } public int compare(String o1, String o2) { if (o1.equals(o2)) { return 0; } ConfusionMatrixLine t1 = confusionMatrix.get(o1); ConfusionMatrixLine t2 = confusionMatrix.get(o2); if (t1 == null || t2 == null) { if (t1 == null) { return 1; } else { return -1; } } double r1 = t1.getAccuracy(); double r2 = t2.getAccuracy(); if (r1 == r2) { return o1.compareTo(o2); } if (r2 > r1) { return 1; } return -1; } } public static class GroupedMatrixLabelComparator implements Comparator { private final HashMap categoryAccuracy; private Map confusionMatrix; public GroupedMatrixLabelComparator(Map confusionMatrix) { this.confusionMatrix = confusionMatrix; this.categoryAccuracy = new HashMap<>(); // compute grouped categories for (Entry entry : confusionMatrix.entrySet()) { final String key = entry.getKey(); final ConfusionMatrixLine confusionMatrixLine = entry.getValue(); final String category; if (key.contains("-")) { category = key.split("-")[0]; } else { category = key; } double currentAccuracy = categoryAccuracy.getOrDefault(category, 0.0d); categoryAccuracy.put(category, currentAccuracy + confusionMatrixLine.getAccuracy()); } } public int compare(String o1, String o2) { if (o1.equals(o2)) { return 0; } String c1 = o1; String c2 = o2; if (o1.contains("-")) { c1 = o1.split("-")[0]; } if (o2.contains("-")) { c2 = o2.split("-")[0]; } if (c1.equals(c2)) { // same category - sort by confusion matrix ConfusionMatrixLine t1 = confusionMatrix.get(o1); ConfusionMatrixLine t2 = confusionMatrix.get(o2); if (t1 == null || t2 == null) { if (t1 == null) { return 1; } else { return -1; } } double r1 = t1.getAccuracy(); double r2 = t2.getAccuracy(); if (r1 == r2) { return o1.compareTo(o2); } if (r2 > r1) { return 1; } return -1; } else { // different category - sort by category Double t1 = categoryAccuracy.get(c1); Double t2 = categoryAccuracy.get(c2); if (t1 == null || t2 == null) { if (t1 == null) { return 1; } else { return -1; } } if (t1.equals(t2)) { return o1.compareTo(o2); } if (t2 > t1) { return 1; } return -1; } } } public Comparator getMatrixLabelComparator(Map confusionMatrix) { return new MatrixLabelComparator(confusionMatrix); } public static class SimpleLabelComparator implements Comparator { private Map map; public SimpleLabelComparator(Map map) { this.map = map; } @Override public int compare(String o1, String o2) { if (o1.equals(o2)) { return 0; } int e1 = 0, e2 = 0; if (map.containsKey(o1)) e1 = map.get(o1).value(); if (map.containsKey(o2)) e2 = map.get(o2).value(); if (e1 == e2) { return o1.compareTo(o2); } return e2 - e1; } } public Comparator getLabelComparator(Map map) { return new SimpleLabelComparator(map); } public static class GroupedLabelComparator implements Comparator { private final HashMap categoryCounter; private Map labelCounter; public GroupedLabelComparator(Map map) { this.labelCounter = map; this.categoryCounter = new HashMap<>(); // compute grouped categories for (Entry entry : labelCounter.entrySet()) { final String key = entry.getKey(); final Counter value = entry.getValue(); final String category; if (key.contains("-")) { category = key.split("-")[0]; } else { category = key; } int currentCount = categoryCounter.getOrDefault(category, 0); categoryCounter.put(category, currentCount + value.value()); } } public int compare(String o1, String o2) { if (o1.equals(o2)) { return 0; } String c1 = o1; String c2 = o2; if (o1.contains("-")) { c1 = o1.split("-")[0]; } if (o2.contains("-")) { c2 = o2.split("-")[0]; } if (c1.equals(c2)) { // same category - sort by confusion matrix Counter t1 = labelCounter.get(o1); Counter t2 = labelCounter.get(o2); if (t1 == null || t2 == null) { if (t1 == null) { return 1; } else { return -1; } } int r1 = t1.value(); int r2 = t2.value(); if (r1 == r2) { return o1.compareTo(o2); } if (r2 > r1) { return 1; } return -1; } else { // different category - sort by category Integer t1 = categoryCounter.get(c1); Integer t2 = categoryCounter.get(c2); if (t1 == null || t2 == null) { if (t1 == null) { return 1; } else { return -1; } } if (t1.equals(t2)) { return o1.compareTo(o2); } if (t2 > t1) { return 1; } return -1; } } } /** * Represents a line in the confusion table. */ public static class ConfusionMatrixLine { private Map line = new HashMap<>(); private String ref; private int total = 0; private int correct = 0; private double acc = -1; /** * Creates a new {@link ConfusionMatrixLine} * * @param ref * the reference column */ private ConfusionMatrixLine(String ref) { this.ref = ref; } /** * Increments the counter for the given column and updates the statistics. * * @param column * the column to be incremented */ private void increment(String column) { total++; if (column.equals(ref)) correct++; if (!line.containsKey(column)) { line.put(column, new Counter()); } line.get(column).increment(); } /** * Gets the calculated accuracy of this element * * @return the accuracy */ public double getAccuracy() { // we save the accuracy because it is frequently used by the comparator if (StrictMath.abs(acc - 1.0d) < 0.0000000001) { if (total == 0) acc = 0.0d; acc = (double) correct / (double) total; } return acc; } /** * Gets the value given a column * * @param column * the column * @return the counter value */ public int getValue(String column) { Counter c = line.get(column); if (c == null) return 0; return c.value(); } } /** * Implements a simple counter */ public static class Counter { private int c = 0; private void increment() { c++; } public int value() { return c; } } public class Stats { // general statistics private final Mean accuracy = new Mean(); private final Mean averageSentenceLength = new Mean(); // token statistics private final Map tokAccuracies = new HashMap<>(); private final Map tokOcurrencies = new HashMap<>(); private final Map tokErrors = new HashMap<>(); // tag statistics private final Map tagOcurrencies = new HashMap<>(); private final Map tagErrors = new HashMap<>(); private final Map tagFMeasure = new HashMap<>(); // represents a Confusion Matrix that aggregates all tokens private final Map generalConfusionMatrix = new HashMap<>(); // represents a set of Confusion Matrix for each token private final Map> tokenConfusionMatrix = new HashMap<>(); private int minimalSentenceLength = Integer.MAX_VALUE; private int maximumSentenceLength = Integer.MIN_VALUE; public void add(String[] toks, String[] refs, String[] preds) { int length = toks.length; averageSentenceLength.add(length); if (minimalSentenceLength > length) { minimalSentenceLength = length; } if (maximumSentenceLength < length) { maximumSentenceLength = length; } updateTagFMeasure(refs, preds); for (int i = 0; i < toks.length; i++) { commit(toks[i], refs[i], preds[i]); } } public void add(int length, String ref, String pred) { averageSentenceLength.add(length); if (minimalSentenceLength > length) { minimalSentenceLength = length; } if (maximumSentenceLength < length) { maximumSentenceLength = length; } // String[] toks = reference.getSentence(); String[] refs = { ref }; String[] preds = { pred }; updateTagFMeasure(refs, preds); commit("", ref, pred); } public void add(String[] text, String ref, String pred) { int length = text.length; this.add(length, ref, pred); } public void add(CharSequence text, String ref, String pred) { int length = text.length(); this.add(length, ref, pred); } /** * Includes a new evaluation data * * @param tok * the evaluated token * @param ref * the reference pos tag * @param pred * the predicted pos tag */ private void commit(String tok, String ref, String pred) { // token stats if (!tokAccuracies.containsKey(tok)) { tokAccuracies.put(tok, new Mean()); tokOcurrencies.put(tok, new Counter()); tokErrors.put(tok, new Counter()); } tokOcurrencies.get(tok).increment(); // tag stats if (!tagOcurrencies.containsKey(ref)) { tagOcurrencies.put(ref, new Counter()); tagErrors.put(ref, new Counter()); } tagOcurrencies.get(ref).increment(); // updates general, token and tag error stats if (ref.equals(pred)) { tokAccuracies.get(tok).add(1); accuracy.add(1); } else { tokAccuracies.get(tok).add(0); tokErrors.get(tok).increment(); tagErrors.get(ref).increment(); accuracy.add(0); } // populate confusion matrixes if (!generalConfusionMatrix.containsKey(ref)) { generalConfusionMatrix.put(ref, new ConfusionMatrixLine(ref)); } generalConfusionMatrix.get(ref).increment(pred); if (!tokenConfusionMatrix.containsKey(tok)) { tokenConfusionMatrix.put(tok, new HashMap<>()); } if (!tokenConfusionMatrix.get(tok).containsKey(ref)) { tokenConfusionMatrix.get(tok).put(ref, new ConfusionMatrixLine(ref)); } tokenConfusionMatrix.get(tok).get(ref).increment(pred); } private void updateTagFMeasure(String[] refs, String[] preds) { // create a set with all tags Set tags = new HashSet<>(Arrays.asList(refs)); tags.addAll(Arrays.asList(preds)); // create samples for each tag for (String tag : tags) { List reference = new ArrayList<>(); List prediction = new ArrayList<>(); for (int i = 0; i < refs.length; i++) { if (refs[i].equals(tag)) { reference.add(new Span(i, i + 1)); } if (preds[i].equals(tag)) { prediction.add(new Span(i, i + 1)); } } if (!this.tagFMeasure.containsKey(tag)) { this.tagFMeasure.put(tag, new FMeasure()); } // populate the fmeasure this.tagFMeasure.get(tag).updateScores( reference.toArray(new Span[reference.size()]), prediction.toArray(new Span[prediction.size()])); } } private double getAccuracy() { return accuracy.mean(); } private int getNumberOfTags() { return this.tagOcurrencies.keySet().size(); } private long getNumberOfSentences() { return this.averageSentenceLength.count(); } private double getAverageSentenceSize() { return this.averageSentenceLength.mean(); } private int getMinSentenceSize() { return this.minimalSentenceLength; } private int getMaxSentenceSize() { return this.maximumSentenceLength; } private double getTokenAccuracy(String token) { return tokAccuracies.get(token).mean(); } private int getTokenErrors(String token) { return tokErrors.get(token).value(); } private int getTokenFrequency(String token) { return tokOcurrencies.get(token).value(); } private SortedSet getTokensOrderedByFrequency() { SortedSet toks = new TreeSet<>(new SimpleLabelComparator(tokOcurrencies)); toks.addAll(tokOcurrencies.keySet()); return Collections.unmodifiableSortedSet(toks); } private SortedSet getTokensOrderedByNumberOfErrors() { SortedSet toks = new TreeSet<>(new SimpleLabelComparator(tokErrors)); toks.addAll(tokErrors.keySet()); return toks; } private int getTagFrequency(String tag) { return tagOcurrencies.get(tag).value(); } private int getTagErrors(String tag) { return tagErrors.get(tag).value(); } private double getTagFMeasure(String tag) { return tagFMeasure.get(tag).getFMeasure(); } private double getTagRecall(String tag) { return tagFMeasure.get(tag).getRecallScore(); } private double getTagPrecision(String tag) { return tagFMeasure.get(tag).getPrecisionScore(); } private SortedSet getTagsOrderedByErrors() { SortedSet tags = new TreeSet<>(getLabelComparator(tagErrors)); tags.addAll(tagErrors.keySet()); return Collections.unmodifiableSortedSet(tags); } private SortedSet getConfusionMatrixTagset() { return getConfusionMatrixTagset(generalConfusionMatrix); } private double[][] getConfusionMatrix() { return createConfusionMatrix(getConfusionMatrixTagset(), generalConfusionMatrix); } private SortedSet getConfusionMatrixTagset(String token) { return getConfusionMatrixTagset(tokenConfusionMatrix.get(token)); } private double[][] getConfusionMatrix(String token) { return createConfusionMatrix(getConfusionMatrixTagset(token), tokenConfusionMatrix.get(token)); } /** * Creates a matrix with N lines and N + 1 columns with the data from * confusion matrix. The last column is the accuracy. */ private double[][] createConfusionMatrix(SortedSet tagset, Map data) { int size = tagset.size(); double[][] matrix = new double[size][size + 1]; int line = 0; for (String ref : tagset) { int column = 0; for (String pred : tagset) { matrix[line][column] = data.get(ref) != null ? data .get(ref).getValue(pred) : 0; column++; } // set accuracy matrix[line][column] = data.get(ref) != null ? data.get(ref).getAccuracy() : 0; line++; } return matrix; } private SortedSet getConfusionMatrixTagset( Map data) { SortedSet tags = new TreeSet<>(getMatrixLabelComparator(data)); tags.addAll(data.keySet()); List col = new LinkedList<>(); for (String t : tags) { col.addAll(data.get(t).line.keySet()); } tags.addAll(col); return Collections.unmodifiableSortedSet(tags); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000161 14135770370 032644 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/package-info.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/package-info.j0100664 0001750 0001750 00000001636 14135770370 034035 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Classes giving access to the opennlp.tools.lemmatizer functionalities. */ package opennlp.tools.cmdline.lemmatizer; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000163 14135770370 032646 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/TrainingParams0100664 0001750 0001750 00000002550 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParams for the Lemmatizer. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "factoryName", description = "A sub-class of LemmatizerFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000165 14135770370 032650 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerMETool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerMETo0100664 0001750 0001750 00000005704 14135770370 034117 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerME; import opennlp.tools.lemmatizer.LemmatizerModel; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class LemmatizerMETool extends BasicCmdLineTool { public String getShortDescription() { return "learnable lemmatizer"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { LemmatizerModel model = new LemmatizerModelLoader() .load(new File(args[0])); LemmatizerME lemmatizer = new LemmatizerME(model); ObjectStream lineStream; PerformanceMonitor perfMon = null; try { lineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String line; while ((line = lineStream.read()) != null) { POSSample posSample; try { posSample = POSSample.parse(line); } catch (InvalidFormatException e) { System.err.println("Invalid format:"); System.err.println(line); continue; } String[] lemmas = lemmatizer.lemmatize(posSample.getSentence(), posSample.getTags()); System.out.println(new LemmaSample(posSample.getSentence(), posSample.getTags(), lemmas)); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000172 14135770370 032646 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerTrai0100664 0001750 0001750 00000005205 14135770370 034206 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.lemmatizer.LemmatizerTrainerTool.TrainerToolParams; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerFactory; import opennlp.tools.lemmatizer.LemmatizerME; import opennlp.tools.lemmatizer.LemmatizerModel; import opennlp.tools.util.model.ModelUtil; public class LemmatizerTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public LemmatizerTrainerTool() { super(LemmaSample.class, TrainerToolParams.class); } public String getName() { return "LemmatizerTrainerME"; } public String getShortDescription() { return "trainer for the learnable lemmatizer"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("lemmatizer model", modelOutFile); LemmatizerModel model; try { LemmatizerFactory lemmatizerFactory = LemmatizerFactory .create(params.getFactory()); model = LemmatizerME.train(params.getLang(), sampleStream, mlParams, lemmatizerFactory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("lemmatizer", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000174 14135770370 032650 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerEval0100664 0001750 0001750 00000007610 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerEvaluationMonitor; import opennlp.tools.lemmatizer.LemmatizerEvaluator; import opennlp.tools.lemmatizer.LemmatizerModel; public final class LemmatizerEvaluatorTool extends AbstractEvaluatorTool { public LemmatizerEvaluatorTool() { super(LemmaSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the Lemmatizer model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); LemmatizerModel model = new LemmatizerModelLoader().load(params.getModel()); LemmatizerEvaluationMonitor missclassifiedListener = null; if (params.getMisclassified()) { missclassifiedListener = new LemmaEvaluationErrorListener(); } LemmatizerFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new LemmatizerFineGrainedReportListener( reportOutputStream); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating Lemmatizer fine-grained report file: " + e.getMessage()); } } LemmatizerEvaluator evaluator = new LemmatizerEvaluator( new opennlp.tools.lemmatizer.LemmatizerME(model), missclassifiedListener, reportListener); System.out.print("Evaluating ... "); try { evaluator.evaluate(sampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } System.out.println(); System.out.println("Accuracy: " + evaluator.getWordAccuracy()); } interface EvalToolParams extends EvaluatorParams, FineGrainedEvaluatorParams { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000210 14135770370 032637 xustar000000000 0000000 136 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerFineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerFine0100664 0001750 0001750 00000004547 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.OutputStream; import opennlp.tools.cmdline.FineGrainedReportListener; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerEvaluationMonitor; /** * Generates a detailed report for the Lemmatizer. *

* It is possible to use it from an API and access the statistics using the * provided getters. * */ public class LemmatizerFineGrainedReportListener extends FineGrainedReportListener implements LemmatizerEvaluationMonitor { /** * Creates a listener that will print to {@link System#err} */ public LemmatizerFineGrainedReportListener() { super(System.err); } /** * Creates a listener that prints to a given {@link OutputStream} */ public LemmatizerFineGrainedReportListener(OutputStream outputStream) { super(outputStream); } // methods inherited from EvaluationMonitor public void missclassified(LemmaSample reference, LemmaSample prediction) { statsAdd(reference, prediction); } public void correctlyClassified(LemmaSample reference, LemmaSample prediction) { statsAdd(reference, prediction); } private void statsAdd(LemmaSample reference, LemmaSample prediction) { getStats().add(reference.getTokens(), reference.getTags(), prediction.getTags()); } public void writeReport() { printGeneralStatistics(); // token stats printTokenErrorRank(); printTokenOcurrenciesRank(); // tag stats printTagsErrorRank(); // confusion tables printGeneralConfusionTable(); printDetailedConfusionMatrix(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000172 14135770370 032646 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmatizerMode0100664 0001750 0001750 00000002574 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.lemmatizer.LemmatizerModel; /** * Loads a Lemmatizer Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public class LemmatizerModelLoader extends ModelLoader { public LemmatizerModelLoader() { super("Lemmatizer"); } @Override protected LemmatizerModel loadModel(InputStream modelIn) throws IOException { return new LemmatizerModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_lemmatize0100644 0000000 0000000 00000000201 14135770370 032637 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmaEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/lemmatizer/LemmaEvaluatio0100664 0001750 0001750 00000003474 14135770370 034170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.lemmatizer; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.lemmatizer.LemmaSample; import opennlp.tools.lemmatizer.LemmatizerEvaluationMonitor; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints to an * output stream. * */ public class LemmaEvaluationErrorListener extends EvaluationErrorPrinter implements LemmatizerEvaluationMonitor { /** * Creates a listener that will print to System.err */ public LemmaEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public LemmaEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(LemmaSample reference, LemmaSample prediction) { printError(reference.getLemmas(), prediction.getLemmas(), reference, prediction, reference.getTokens()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_Terminate0100644 0000000 0000000 00000000160 14135770370 032604 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/TerminateToolException.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/TerminateToolException.ja0100664 0001750 0001750 00000003605 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; /** * Exception to terminate the execution of a command line tool. *

* The exception should be thrown to indicate that the VM should be terminated with * the specified error code, instead of just calling {@link System#exit(int)}. *

* The return code convention is to return:
* 0 in case of graceful termination
* -1 in case of runtime errors, such as IOException
* 1 in case of invalid parameters. *

* Note: Do not use this class, internal use only! */ @SuppressWarnings("serial") public class TerminateToolException extends RuntimeException { private final int code; private final String message; public TerminateToolException(int code, String message, Throwable t) { super(t); this.code = code; this.message = message; } public TerminateToolException(int code, String message) { this.code = code; this.message = message; } public TerminateToolException(int code) { this(code, null); } public int getCode() { return code; } @Override public String getMessage() { return message; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/GenerateManualTool.java0100664 0001750 0001750 00000023123 14135770370 033551 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.StringReader; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.StringTokenizer; import opennlp.tools.cmdline.ArgumentParser.Argument; public class GenerateManualTool { private static final int MAX_LINE_LENGTH = 110; // optimized for printing public static void main(String[] args) throws FileNotFoundException { if (args.length != 1) { System.out.print(getUsage()); System.exit(0); } StringBuilder sb = new StringBuilder(); appendHeader(sb); // organize by package name LinkedHashMap> packageNameToolMap = new LinkedHashMap<>(); for (Entry entry : CLI.getToolLookupMap().entrySet()) { final String toolName = entry.getKey(); final CmdLineTool tool = entry.getValue(); String packageName = tool.getClass().getPackage().getName(); packageName = packageName.substring(packageName.lastIndexOf(".") + 1); if (!packageNameToolMap.containsKey(packageName)) { packageNameToolMap.put(packageName, new LinkedHashMap()); } packageNameToolMap.get(packageName).put(toolName, tool); } // add tools grouped by package for (Entry> entry : packageNameToolMap.entrySet()) { appendToolGroup(entry.getKey(), entry.getValue(), sb); } // footer appendFooter(sb); // output to file try (PrintWriter out = new PrintWriter(args[0])) { out.println(sb); } } /** * @return this tool usage */ private static String getUsage() { return "Requires one argument: \n" + " Path to the output XML file \n"; } /** * Appends a group of tools, based on the tool package name * * @param groupName * @param toolsMap * @param sb */ private static void appendToolGroup(String groupName, Map toolsMap, StringBuilder sb) { sb.append("

\n\n"); sb.append("").append(firstCaps(groupName)).append("\n\n"); for (Entry entry : toolsMap.entrySet()) { appendTool(groupName, entry.getKey(), entry.getValue(), sb); } sb.append("
\n\n"); } /** * Appends a tool * * @param groupName * @param toolName * @param tool * @param sb */ private static void appendTool(String groupName, String toolName, CmdLineTool tool, StringBuilder sb) { sb.append("
\n\n"); sb.append("").append(toolName).append("\n\n"); sb.append("").append(firstCaps(tool.getShortDescription())) .append("\n\n"); appendCode(tool.getHelp(), sb); if (TypedCmdLineTool.class.isAssignableFrom(tool.getClass())) { appendHelpForTool((TypedCmdLineTool) tool, sb); } sb.append("
\n\n"); } private static void appendHelpForTool(TypedCmdLineTool tool, StringBuilder sb) { Class type = tool.type; Set formats = StreamFactoryRegistry.getFactories(type).keySet(); sb.append("The supported formats and arguments are:\n\n"); Map> formatArguments = new LinkedHashMap<>(); for (String formatName : formats) { if (!StreamFactoryRegistry.DEFAULT_FORMAT.equals(formatName)) { ObjectStreamFactory format = tool.getStreamFactory(formatName); formatArguments.put(formatName, ArgumentParser.createArguments(format.getParameters())); } } appendArgumentTable(formatArguments, sb); } private static void appendArgumentTable( Map> formatArguments, StringBuilder sb) { sb.append( "\n"); sb.append( "FormatArgumentValue" + "OptionalDescription\n"); sb.append("\n"); for (Entry> entry : formatArguments.entrySet()) { final String format = entry.getKey(); final List arguments = entry.getValue(); int i = 0; for (Argument argument : arguments) { sb.append("\n"); if (i == 0) { sb.append("").append(format).append("\n"); } sb.append("").append(argument.getArgument()) .append("\n"); sb.append("").append(argument.getValue()).append("\n"); sb.append("").append(yes(argument.getOptional())) .append("\n"); sb.append("").append(firstCaps(argument.getDescription())) .append("\n"); sb.append("\n"); i++; } } sb.append("\n"); sb.append("\n\n"); } private static void appendHeader(StringBuilder sb) { sb.append("\n" + "\n" + "\n" + "\n\n" + "\n\n" + "\n\n" + "The Command Line Interface\n\n" + "" + "This section details the available tools and parameters of the Command Line Interface. " + "For a introduction in its usage please refer to . " + "\n\n"); } private static void appendFooter(StringBuilder sb) { sb.append("\n\n"); } private static String firstCaps(String str) { if (str.length() > 1) { return str.substring(0, 1).toUpperCase() + str.substring(1); } else { return str; } } private static String yes(boolean optional) { if (optional) { return "Yes"; } return "No"; } private static void appendCode(String help, StringBuilder sb) { sb.append("\n" + "\n").append(" \n"); } /** * Prevents long lines. Lines are optimized for printing. * * @param stringBlock * @return */ private static String splitLongLines(String stringBlock) { StringBuilder sb = new StringBuilder(); String line; try { BufferedReader reader = new BufferedReader(new StringReader(stringBlock)); while ((line = reader.readLine()) != null) { if (line.length() <= MAX_LINE_LENGTH) { sb.append(line).append("\n"); } else { StringTokenizer tok = new StringTokenizer(line, " "); int lineLen = 0; while (tok.hasMoreTokens()) { String word = tok.nextToken() + " "; if (lineLen + word.length() > MAX_LINE_LENGTH) { sb.append("\n "); lineLen = 8; } sb.append(word); lineLen += word.length(); } } } } catch (Exception e) { // nothing to do } return sb.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/PerformanceMonitor.java0100664 0001750 0001750 00000010724 14135770370 033637 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.PrintStream; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; /** * The {@link PerformanceMonitor} measures increments to a counter. * During the computation it prints out current and average throughput * per second. After the computation is done it prints a final performance * report. *

* Note: * This class is not thread safe.
* Do not use this class, internal use only! */ public class PerformanceMonitor { private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, runnable -> { Thread thread = new Thread(runnable); thread.setName("opennlp.tools.cmdline.PerformanceMonitor"); thread.setDaemon(true); return thread; }); private final String unit; private ScheduledFuture beeperHandle; private volatile long startTime = -1; private volatile int counter; private final PrintStream out; public PerformanceMonitor(PrintStream out, String unit) { this.out = out; this.unit = unit; } public PerformanceMonitor(String unit) { this(System.out, unit); } public boolean isStarted() { return startTime != -1; } public void incrementCounter(int increment) { if (!isStarted()) throw new IllegalStateException("Must be started first!"); if (increment < 0) throw new IllegalArgumentException("increment must be zero or positive but was " + increment + "!"); counter += increment; } public void incrementCounter() { incrementCounter(1); } public void start() { if (isStarted()) throw new IllegalStateException("Already started!"); startTime = System.currentTimeMillis(); } public void startAndPrintThroughput() { start(); final Runnable beeper = new Runnable() { private long lastTimeStamp = startTime; private int lastCount = counter; public void run() { int deltaCount = counter - lastCount; long timePassedSinceLastCount = System.currentTimeMillis() - lastTimeStamp; double currentThroughput; if (timePassedSinceLastCount > 0) { currentThroughput = deltaCount / ((double) timePassedSinceLastCount / 1000); } else { currentThroughput = 0; } long totalTimePassed = System.currentTimeMillis() - startTime; double averageThroughput; if (totalTimePassed > 0) { averageThroughput = counter / (((double) totalTimePassed) / 1000); } else { averageThroughput = 0; } out.printf("current: %.1f " + unit + "/s avg: %.1f " + unit + "/s total: %d " + unit + "%n", currentThroughput, averageThroughput, counter); lastTimeStamp = System.currentTimeMillis(); lastCount = counter; } }; beeperHandle = scheduler.scheduleAtFixedRate(beeper, 1, 1, TimeUnit.SECONDS); } public void stopAndPrintFinalResult() { if (!isStarted()) throw new IllegalStateException("Must be started first!"); if (beeperHandle != null) { // yeah we have time to finish current // printing if there is one beeperHandle.cancel(false); } scheduler.shutdown(); long timePassed = System.currentTimeMillis() - startTime; double average; if (timePassed > 0) { average = counter / (timePassed / 1000d); } else { average = 0; } out.println(); out.println(); out.printf("Average: %.1f " + unit + "/s %n", average); out.println("Total: " + counter + " " + unit); out.println("Runtime: " + timePassed / 1000d + "s"); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineUtil.java0100664 0001750 0001750 00000024346 14135770370 032204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.util.InputStreamFactory; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.BaseModel; /** * Util class for the command line interface. *

* Note: Do not use this class, internal use only! */ public final class CmdLineUtil { static final int IO_BUFFER_SIZE = 1024 * 1024; private CmdLineUtil() { // not intended to be instantiated } /** * Check that the given input file is valid. *

* To pass the test it must:
* - exist
* - not be a directory
* - accessibly
* * @param name the name which is used to refer to the file in an error message, it * should start with a capital letter. * * @param inFile the particular file to check to qualify an input file * * @throws TerminateToolException if test does not pass this exception is * thrown and an error message is printed to the console. */ public static void checkInputFile(String name, File inFile) { String isFailure = null; if (inFile.isDirectory()) { isFailure = "The " + name + " file is a directory!"; } else if (!inFile.exists()) { isFailure = "The " + name + " file does not exist!"; } else if (!inFile.canRead()) { isFailure = "No permissions to read the " + name + " file!"; } if (null != isFailure) { throw new TerminateToolException(-1, isFailure + " Path: " + inFile.getAbsolutePath()); } } /** * Tries to ensure that it is possible to write to an output file. *

* The method does nothing if it is possible to write otherwise * it prints an appropriate error message and a {@link TerminateToolException} is thrown. *

* Computing the contents of an output file (e.g. ME model) can be very time consuming. * Prior to this computation it should be checked once that writing this output file is * possible to be able to fail fast if not. If this validation is only done after a time * consuming computation it could frustrate the user. * * @param name human-friendly file name. for example perceptron model * @param outFile file */ public static void checkOutputFile(String name, File outFile) { String isFailure = null; if (outFile.exists()) { // The file already exists, ensure that it is a normal file and that it is // possible to write into it if (outFile.isDirectory()) { isFailure = "The " + name + " file is a directory!"; } else if (outFile.isFile()) { if (!outFile.canWrite()) { isFailure = "No permissions to write the " + name + " file!"; } } else { isFailure = "The " + name + " file is not a normal file!"; } } else { // The file does not exist ensure its parent // directory exists and has write permissions to create // a new file in it File parentDir = outFile.getAbsoluteFile().getParentFile(); if (parentDir != null && parentDir.exists()) { if (!parentDir.canWrite()) { isFailure = "No permissions to create the " + name + " file!"; } } else { isFailure = "The parent directory of the " + name + " file does not exist, " + "please create it first!"; } } if (null != isFailure) { throw new TerminateToolException(-1, isFailure + " Path: " + outFile.getAbsolutePath()); } } public static FileInputStream openInFile(File file) { try { return new FileInputStream(file); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "File '" + file + "' cannot be found", e); } } public static InputStreamFactory createInputStreamFactory(File file) { try { return new MarkableFileInputStreamFactory(file); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "File '" + file + "' cannot be found", e); } } /** * Writes a {@link BaseModel} to disk. Occurring errors are printed to the console * to inform the user. * * @param modelName type of the model, name is used in error messages. * @param modelFile output file of the model * @param model the model itself which should be written to disk */ public static void writeModel(String modelName, File modelFile, BaseModel model) { CmdLineUtil.checkOutputFile(modelName + " model", modelFile); System.err.print("Writing " + modelName + " model ... "); long beginModelWritingTime = System.currentTimeMillis(); try (OutputStream modelOut = new BufferedOutputStream( new FileOutputStream(modelFile), IO_BUFFER_SIZE)) { model.serialize(modelOut); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "Error during writing model file '" + modelFile + "'", e); } long modelWritingDuration = System.currentTimeMillis() - beginModelWritingTime; System.err.printf("done (%.3fs)\n", modelWritingDuration / 1000d); System.err.println(); System.err.println("Wrote " + modelName + " model to"); System.err.println("path: " + modelFile.getAbsolutePath()); System.err.println(); } /** * Returns the index of the parameter in the arguments, or -1 if the parameter is not found. * * @param param parameter name * @param args arguments * @return the index of the parameter in the arguments, or -1 if the parameter is not found */ public static int getParameterIndex(String param, String[] args) { for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-") && args[i].equals(param)) { return i; } } return -1; } /** * Retrieves the specified parameter from the given arguments. * * @param param parameter name * @param args arguments * @return parameter value */ public static String getParameter(String param, String[] args) { int i = getParameterIndex(param, args); if (-1 < i) { i++; if (i < args.length) { return args[i]; } } return null; } /** * Retrieves the specified parameter from the specified arguments. * * @param param parameter name * @param args arguments * @return parameter value */ public static Integer getIntParameter(String param, String[] args) { String value = getParameter(param, args); try { if (value != null) return Integer.parseInt(value); } catch (NumberFormatException ignored) { // in this case return null } return null; } /** * Retrieves the specified parameter from the specified arguments. * * @param param parameter name * @param args arguments * @return parameter value */ public static Double getDoubleParameter(String param, String[] args) { String value = getParameter(param, args); try { if (value != null) return Double.parseDouble(value); } catch (NumberFormatException ignored) { // in this case return null } return null; } public static void checkLanguageCode(String code) { List languageCodes = new ArrayList<>(Arrays.asList(Locale.getISOLanguages())); languageCodes.add("x-unspecified"); if (!languageCodes.contains(code)) { throw new TerminateToolException(1, "Unknown language code " + code + ", " + "must be an ISO 639 code!"); } } public static boolean containsParam(String param, String[] args) { for (String arg : args) { if (arg.equals(param)) { return true; } } return false; } public static void handleStdinIoError(IOException e) { throw new TerminateToolException(-1, "IO Error while reading from stdin: " + e.getMessage(), e); } public static TerminateToolException createObjectStreamError(IOException e) { return new TerminateToolException(-1, "IO Error while creating an Input Stream: " + e.getMessage(), e); } public static void handleCreateObjectStreamError(IOException e) { throw createObjectStreamError(e); } // its optional, passing null is allowed public static TrainingParameters loadTrainingParameters(String paramFile, boolean supportSequenceTraining) { TrainingParameters params = null; if (paramFile != null) { checkInputFile("Training Parameter", new File(paramFile)); try (InputStream paramsIn = new FileInputStream(new File(paramFile))) { params = new opennlp.tools.util.TrainingParameters(paramsIn); } catch (IOException e) { throw new TerminateToolException(-1, "Error during parameters loading: " + e.getMessage(), e); } if (!TrainerFactory.isValid(params)) { throw new TerminateToolException(1, "Training parameters file '" + paramFile + "' is invalid!"); } TrainerFactory.TrainerType trainerType = TrainerFactory.getTrainerType(params); if (!supportSequenceTraining && trainerType.equals(TrainerFactory.TrainerType.EVENT_MODEL_SEQUENCE_TRAINER)) { throw new TerminateToolException(1, "Sequence training is not supported!"); } } return params; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_dictionar0100644 0000000 0000000 00000000174 14135770370 032635 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuil0100664 0001750 0001750 00000002534 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.dictionary; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.EncodingParameter; /** * Params for Dictionary tools. * * Note: Do not use this class, internal use only! */ interface DictionaryBuilderParams extends EncodingParameter { @ParameterDescription(valueName = "in", description = "Plain file with one entry per line") File getInputFile(); @ParameterDescription(valueName = "out", description = "The dictionary file.") File getOutputFile(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_dictionar0100644 0000000 0000000 00000000172 14135770370 032633 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuilderTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/dictionary/DictionaryBuil0100664 0001750 0001750 00000004426 14135770370 034176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.dictionary; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.nio.charset.Charset; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.dictionary.Dictionary; public class DictionaryBuilderTool extends BasicCmdLineTool { interface Params extends DictionaryBuilderParams { } public String getShortDescription() { return "builds a new dictionary"; } public String getHelp() { return getBasicHelp(Params.class); } public void run(String[] args) { Params params = validateAndParseParams(args, Params.class); File dictInFile = params.getInputFile(); File dictOutFile = params.getOutputFile(); Charset encoding = params.getEncoding(); CmdLineUtil.checkInputFile("dictionary input file", dictInFile); CmdLineUtil.checkOutputFile("dictionary output file", dictOutFile); try (InputStreamReader in = new InputStreamReader(new FileInputStream(dictInFile), encoding); OutputStream out = new FileOutputStream(dictOutFile)) { Dictionary dict = Dictionary.parseOneEntryPerLine(in); dict.serialize(out); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Tr0100644 0000000 0000000 00000000157 14135770370 032564 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/TrainingParams.jav0100664 0001750 0001750 00000003042 14135770370 034034 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParams for DocCat. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "fg", description = "Comma separated feature generator classes. Bag of words is used if not specified.") @OptionalParameter String getFeatureGenerators(); @ParameterDescription(valueName = "factoryName", description = "A sub-class of DoccatFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000164 14135770370 032537 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluatorToo0100664 0001750 0001750 00000011043 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.doccat.DoccatEvaluatorTool.EvalToolParams; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.doccat.DoccatEvaluationMonitor; import opennlp.tools.doccat.DoccatModel; import opennlp.tools.doccat.DocumentCategorizerEvaluator; import opennlp.tools.doccat.DocumentCategorizerME; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.eval.EvaluationMonitor; public final class DoccatEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams, FineGrainedEvaluatorParams { } public DoccatEvaluatorTool() { super(DocumentSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the Doccat model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); DoccatModel model = new DoccatModelLoader().load(params.getModel()); List> listeners = new LinkedList<>(); if (params.getMisclassified()) { listeners.add(new DoccatEvaluationErrorListener()); } DoccatFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new DoccatFineGrainedReportListener(reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw new TerminateToolException(-1, "IO error while creating Doccat fine-grained report file: " + e.getMessage()); } } DocumentCategorizerEvaluator evaluator = new DocumentCategorizerEvaluator( new DocumentCategorizerME(model), listeners.toArray(new DoccatEvaluationMonitor[listeners.size()])); final PerformanceMonitor monitor = new PerformanceMonitor("doc"); try (ObjectStream measuredSampleStream = new ObjectStream() { public DocumentSample read() throws IOException { monitor.incrementCounter(); return sampleStream.read(); } public void reset() throws IOException { sampleStream.reset(); } public void close() throws IOException { sampleStream.close(); } }) { monitor.startAndPrintThroughput(); evaluator.evaluate(measuredSampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } // sorry that this can fail monitor.stopAndPrintFinalResult(); System.out.println(); System.out.println(evaluator); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000171 14135770370 032535 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatCrossValidat0100664 0001750 0001750 00000010715 14135770370 034057 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.LinkedList; import java.util.List; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.doccat.DoccatCrossValidatorTool.CVToolParams; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.params.FineGrainedEvaluatorParams; import opennlp.tools.doccat.DoccatCrossValidator; import opennlp.tools.doccat.DoccatEvaluationMonitor; import opennlp.tools.doccat.DoccatFactory; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.doccat.FeatureGenerator; import opennlp.tools.util.eval.EvaluationMonitor; import opennlp.tools.util.model.ModelUtil; public final class DoccatCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends CVParams, TrainingParams, FineGrainedEvaluatorParams { } public DoccatCrossValidatorTool() { super(DocumentSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the learnable Document Categorizer"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } List> listeners = new LinkedList<>(); if (params.getMisclassified()) { listeners.add(new DoccatEvaluationErrorListener()); } DoccatFineGrainedReportListener reportListener = null; File reportFile = params.getReportOutputFile(); OutputStream reportOutputStream = null; if (reportFile != null) { CmdLineUtil.checkOutputFile("Report Output File", reportFile); try { reportOutputStream = new FileOutputStream(reportFile); reportListener = new DoccatFineGrainedReportListener(reportOutputStream); listeners.add(reportListener); } catch (FileNotFoundException e) { throw createTerminationIOException(e); } } FeatureGenerator[] featureGenerators = DoccatTrainerTool .createFeatureGenerators(params.getFeatureGenerators()); DoccatEvaluationMonitor[] listenersArr = listeners .toArray(new DoccatEvaluationMonitor[listeners.size()]); DoccatCrossValidator validator; try { DoccatFactory factory = DoccatFactory.create(params.getFactory(), featureGenerators); validator = new DoccatCrossValidator(params.getLang(), mlParams, factory, listenersArr); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } System.out.println("done"); if (reportListener != null) { System.out.println("Writing fine-grained report to " + params.getReportOutputFile().getAbsolutePath()); reportListener.writeReport(); try { // TODO: is it a problem to close the stream now? reportOutputStream.close(); } catch (IOException e) { // nothing to do } } System.out.println(); System.out.println("Accuracy: " + validator.getDocumentAccuracy() + "\n" + "Number of documents: " + validator.getDocumentCount()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000176 14135770370 032542 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatEvaluationEr0100664 0001750 0001750 00000003351 14135770370 034055 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.OutputStream; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.doccat.DoccatEvaluationMonitor; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints to an * output stream. * */ public class DoccatEvaluationErrorListener extends EvaluationErrorPrinter implements DoccatEvaluationMonitor { /** * Creates a listener that will print to System.err */ public DoccatEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public DoccatEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(DocumentSample reference, DocumentSample prediction) { printError(reference, prediction); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000164 14135770370 032537 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatConverterToo0100664 0001750 0001750 00000002104 14135770370 034103 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import opennlp.tools.cmdline.AbstractConverterTool; import opennlp.tools.doccat.DocumentSample; public class DoccatConverterTool extends AbstractConverterTool { public DoccatConverterTool() { super(DocumentSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000200 14135770370 032526 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatFineGrainedReportListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatFineGrainedR0100664 0001750 0001750 00000004301 14135770370 033750 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.OutputStream; import opennlp.tools.cmdline.FineGrainedReportListener; import opennlp.tools.doccat.DoccatEvaluationMonitor; import opennlp.tools.doccat.DocumentSample; /** * Generates a detailed report for the POS Tagger. *

* It is possible to use it from an API and access the statistics using the * provided getters */ public class DoccatFineGrainedReportListener extends FineGrainedReportListener implements DoccatEvaluationMonitor { /** * Creates a listener that will print to {@link System#err} */ public DoccatFineGrainedReportListener() { this(System.err); } /** * Creates a listener that prints to a given {@link OutputStream} */ public DoccatFineGrainedReportListener(OutputStream outputStream) { super(outputStream); } // methods inherited from EvaluationMonitor public void missclassified(DocumentSample reference, DocumentSample prediction) { statsAdd(reference, prediction); } public void correctlyClassified(DocumentSample reference, DocumentSample prediction) { statsAdd(reference, prediction); } private void statsAdd(DocumentSample reference, DocumentSample prediction) { getStats().add(reference.getText(), reference.getCategory(), prediction.getCategory()); } public void writeReport() { printGeneralStatistics(); printTagsErrorRank(); printGeneralConfusionTable(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000162 14135770370 032535 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatModelLoader.0100664 0001750 0001750 00000002557 14135770370 033733 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.IOException; import java.io.InputStream; import opennlp.tools.cmdline.ModelLoader; import opennlp.tools.doccat.DoccatModel; /** * Loads a Document Categorizer Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public class DoccatModelLoader extends ModelLoader { public DoccatModelLoader() { super("Document Categorizer"); } @Override protected DoccatModel loadModel(InputStream modelIn) throws IOException { return new DoccatModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_doccat_Do0100644 0000000 0000000 00000000162 14135770370 032535 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTrainerTool.0100664 0001750 0001750 00000006602 14135770370 034001 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.doccat.DoccatTrainerTool.TrainerToolParams; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.doccat.BagOfWordsFeatureGenerator; import opennlp.tools.doccat.DoccatFactory; import opennlp.tools.doccat.DoccatModel; import opennlp.tools.doccat.DocumentCategorizerME; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.doccat.FeatureGenerator; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.model.ModelUtil; public class DoccatTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public DoccatTrainerTool() { super(DocumentSample.class, TrainerToolParams.class); } @Override public String getShortDescription() { return "trainer for the learnable document categorizer"; } @Override public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("document categorizer model", modelOutFile); FeatureGenerator[] featureGenerators = createFeatureGenerators(params .getFeatureGenerators()); DoccatModel model; try { DoccatFactory factory = DoccatFactory.create(params.getFactory(), featureGenerators); model = DocumentCategorizerME.train(params.getLang(), sampleStream, mlParams, factory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("document categorizer", modelOutFile, model); } static FeatureGenerator[] createFeatureGenerators(String featureGeneratorsNames) { if (featureGeneratorsNames == null) { return new FeatureGenerator[]{new BagOfWordsFeatureGenerator()}; } String[] classes = featureGeneratorsNames.split(","); FeatureGenerator[] featureGenerators = new FeatureGenerator[classes.length]; for (int i = 0; i < featureGenerators.length; i++) { featureGenerators[i] = ExtensionLoader.instantiateExtension( FeatureGenerator.class, classes[i]); } return featureGenerators; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/doccat/DoccatTool.java0100664 0001750 0001750 00000005674 14135770370 033326 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.doccat; import java.io.File; import java.io.IOException; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.doccat.DoccatModel; import opennlp.tools.doccat.DocumentCategorizerME; import opennlp.tools.doccat.DocumentSample; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ParagraphStream; import opennlp.tools.util.PlainTextByLineStream; public class DoccatTool extends BasicCmdLineTool { @Override public String getShortDescription() { return "learned document categorizer"; } @Override public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < documents"; } @Override public void run(String[] args) { if (0 == args.length) { System.out.println(getHelp()); } else { DoccatModel model = new DoccatModelLoader().load(new File(args[0])); DocumentCategorizerME documentCategorizerME = new DocumentCategorizerME(model); /* * moved initialization to the try block to catch new IOException */ ObjectStream documentStream; PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "doc"); perfMon.start(); try { documentStream = new ParagraphStream(new PlainTextByLineStream( new SystemInputStreamFactory(), SystemInputStreamFactory.encoding())); String document; while ((document = documentStream.read()) != null) { String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(document); double[] prob = documentCategorizerME.categorize(tokens); String category = documentCategorizerME.getBestCategory(prob); DocumentSample sample = new DocumentSample(category, tokens); System.out.println(sample); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_T0100644 0000000 0000000 00000000160 14135770370 032576 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/TrainingParams.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/TrainingParams.ja0100664 0001750 0001750 00000002534 14135770370 034055 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.BasicTrainingParams; /** * TrainingParams for Chunker. * * Note: Do not use this class, internal use only! */ interface TrainingParams extends BasicTrainingParams { @ParameterDescription(valueName = "factoryName", description = "A sub-class of ChunkerFactory where to get implementation and resources.") @OptionalParameter String getFactory(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000164 14135770370 032561 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerModelLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerModelLoade0100664 0001750 0001750 00000002535 14135770370 034073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.IOException; import java.io.InputStream; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.cmdline.ModelLoader; /** * Loads a Chunker Model for the command line tools. *

* Note: Do not use this class, internal use only! */ public class ChunkerModelLoader extends ModelLoader { public ChunkerModelLoader() { super("Chunker"); } @Override protected ChunkerModel loadModel(InputStream modelIn) throws IOException { return new ChunkerModel(modelIn); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000176 14135770370 032564 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkEvaluationErrorListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkEvaluationEr0100664 0001750 0001750 00000003515 14135770370 034134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.OutputStream; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerEvaluationMonitor; import opennlp.tools.cmdline.EvaluationErrorPrinter; import opennlp.tools.util.eval.EvaluationMonitor; /** * A default implementation of {@link EvaluationMonitor} that prints * to an output stream. * */ public class ChunkEvaluationErrorListener extends EvaluationErrorPrinter implements ChunkerEvaluationMonitor { /** * Creates a listener that will print to System.err */ public ChunkEvaluationErrorListener() { super(System.err); } /** * Creates a listener that will print to a given {@link OutputStream} */ public ChunkEvaluationErrorListener(OutputStream outputStream) { super(outputStream); } @Override public void missclassified(ChunkSample reference, ChunkSample prediction) { printError(reference.getPhrasesAsSpanList(), prediction.getPhrasesAsSpanList(), reference, prediction, reference.getSentence()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000166 14135770370 032563 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerConverterTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerConverterT0100664 0001750 0001750 00000002240 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.cmdline.AbstractConverterTool; /** * Tool to convert multiple data formats into native OpenNLP chunker training * format. */ public class ChunkerConverterTool extends AbstractConverterTool { public ChunkerConverterTool() { super(ChunkSample.class); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000173 14135770370 032561 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerCrossValid0100664 0001750 0001750 00000006520 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.IOException; import java.util.LinkedList; import java.util.List; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerCrossValidator; import opennlp.tools.chunker.ChunkerEvaluationMonitor; import opennlp.tools.chunker.ChunkerFactory; import opennlp.tools.cmdline.AbstractCrossValidatorTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.chunker.ChunkerCrossValidatorTool.CVToolParams; import opennlp.tools.cmdline.params.CVParams; import opennlp.tools.cmdline.params.DetailedFMeasureEvaluatorParams; import opennlp.tools.util.eval.EvaluationMonitor; import opennlp.tools.util.eval.FMeasure; import opennlp.tools.util.model.ModelUtil; public final class ChunkerCrossValidatorTool extends AbstractCrossValidatorTool { interface CVToolParams extends TrainingParams, CVParams, DetailedFMeasureEvaluatorParams { } public ChunkerCrossValidatorTool() { super(ChunkSample.class, CVToolParams.class); } public String getShortDescription() { return "K-fold cross validator for the chunker"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } List> listeners = new LinkedList<>(); ChunkerDetailedFMeasureListener detailedFMeasureListener = null; if (params.getMisclassified()) { listeners.add(new ChunkEvaluationErrorListener()); } if (params.getDetailedF()) { detailedFMeasureListener = new ChunkerDetailedFMeasureListener(); listeners.add(detailedFMeasureListener); } ChunkerCrossValidator validator; try { ChunkerFactory chunkerFactory = ChunkerFactory .create(params.getFactory()); validator = new ChunkerCrossValidator(params.getLang(), mlParams, chunkerFactory, listeners.toArray(new ChunkerEvaluationMonitor[listeners.size()])); validator.evaluate(sampleStream, params.getFolds()); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } if (detailedFMeasureListener == null) { FMeasure result = validator.getFMeasure(); System.out.println(result); } else { System.out.println(detailedFMeasureListener); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000157 14135770370 032563 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerMETool.jav0100664 0001750 0001750 00000005611 14135770370 034002 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.File; import java.io.IOException; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.postag.POSSample; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; public class ChunkerMETool extends BasicCmdLineTool { public String getShortDescription() { return "learnable chunker"; } public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model < sentences"; } public void run(String[] args) { if (args.length != 1) { System.out.println(getHelp()); } else { ChunkerModel model = new ChunkerModelLoader().load(new File(args[0])); ChunkerME chunker = new ChunkerME(model); ObjectStream lineStream; PerformanceMonitor perfMon = null; try { lineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); perfMon = new PerformanceMonitor(System.err, "sent"); perfMon.start(); String line; while ((line = lineStream.read()) != null) { POSSample posSample; try { posSample = POSSample.parse(line); } catch (InvalidFormatException e) { System.err.println("Invalid format:"); System.err.println(line); continue; } String[] chunks = chunker.chunk(posSample.getSentence(), posSample.getTags()); System.out.println(new ChunkSample(posSample.getSentence(), posSample.getTags(), chunks).nicePrint()); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000166 14135770370 032563 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerEvaluatorT0100664 0001750 0001750 00000007224 14135770370 034154 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.IOException; import java.util.LinkedList; import java.util.List; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerEvaluationMonitor; import opennlp.tools.chunker.ChunkerEvaluator; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.cmdline.AbstractEvaluatorTool; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.chunker.ChunkerEvaluatorTool.EvalToolParams; import opennlp.tools.cmdline.params.DetailedFMeasureEvaluatorParams; import opennlp.tools.cmdline.params.EvaluatorParams; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.eval.EvaluationMonitor; public final class ChunkerEvaluatorTool extends AbstractEvaluatorTool { interface EvalToolParams extends EvaluatorParams, DetailedFMeasureEvaluatorParams { } public ChunkerEvaluatorTool() { super(ChunkSample.class, EvalToolParams.class); } public String getShortDescription() { return "Measures the performance of the Chunker model with the reference data"; } public void run(String format, String[] args) { super.run(format, args); ChunkerModel model = new ChunkerModelLoader().load(params.getModel()); List> listeners = new LinkedList<>(); ChunkerDetailedFMeasureListener detailedFMeasureListener = null; if (params.getMisclassified()) { listeners.add(new ChunkEvaluationErrorListener()); } if (params.getDetailedF()) { detailedFMeasureListener = new ChunkerDetailedFMeasureListener(); listeners.add(detailedFMeasureListener); } ChunkerEvaluator evaluator = new ChunkerEvaluator(new ChunkerME(model), listeners.toArray(new ChunkerEvaluationMonitor[listeners.size()])); final PerformanceMonitor monitor = new PerformanceMonitor("sent"); try (ObjectStream measuredSampleStream = new ObjectStream() { public ChunkSample read() throws IOException { monitor.incrementCounter(); return sampleStream.read(); } public void reset() throws IOException { sampleStream.reset(); } public void close() throws IOException { sampleStream.close(); } }) { monitor.startAndPrintThroughput(); evaluator.evaluate(measuredSampleStream); } catch (IOException e) { System.err.println("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.getMessage(), e); } // sorry that this can fail monitor.stopAndPrintFinalResult(); System.out.println(); if (detailedFMeasureListener == null) { System.out.println(evaluator.getFMeasure()); } else { System.out.println(detailedFMeasureListener); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000201 14135770370 032551 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerDetailedFMeasureListener.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerDetailedFM0100664 0001750 0001750 00000002374 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerEvaluationMonitor; import opennlp.tools.cmdline.DetailedFMeasureListener; import opennlp.tools.util.Span; public class ChunkerDetailedFMeasureListener extends DetailedFMeasureListener implements ChunkerEvaluationMonitor { @Override protected Span[] asSpanArray(ChunkSample sample) { return sample.getPhrasesAsSpanList(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_chunker_C0100644 0000000 0000000 00000000164 14135770370 032561 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerTrainerTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/chunker/ChunkerTrainerToo0100664 0001750 0001750 00000005122 14135770370 034147 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.chunker; import java.io.File; import java.io.IOException; import opennlp.tools.chunker.ChunkSample; import opennlp.tools.chunker.ChunkerFactory; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.cmdline.AbstractTrainerTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.chunker.ChunkerTrainerTool.TrainerToolParams; import opennlp.tools.cmdline.params.TrainingToolParams; import opennlp.tools.util.model.ModelUtil; public class ChunkerTrainerTool extends AbstractTrainerTool { interface TrainerToolParams extends TrainingParams, TrainingToolParams { } public ChunkerTrainerTool() { super(ChunkSample.class, TrainerToolParams.class); } public String getName() { return "ChunkerTrainerME"; } public String getShortDescription() { return "trainer for the learnable chunker"; } public void run(String format, String[] args) { super.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(params.getParams(), false); if (mlParams == null) { mlParams = ModelUtil.createDefaultTrainingParameters(); } File modelOutFile = params.getModel(); CmdLineUtil.checkOutputFile("sentence detector model", modelOutFile); ChunkerModel model; try { ChunkerFactory chunkerFactory = ChunkerFactory .create(params.getFactory()); model = ChunkerME.train(params.getLang(), sampleStream, mlParams, chunkerFactory); } catch (IOException e) { throw createTerminationIOException(e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("chunker", modelOutFile, model); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_AbstractC0100644 0000000 0000000 00000000164 14135770370 032526 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCrossValidatorTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/AbstractCrossValidatorToo0100664 0001750 0001750 00000002343 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline; /** * Base class for cross validator tools. */ public abstract class AbstractCrossValidatorTool extends AbstractTrainerTool { /** * Constructor with type parameters. * * @param sampleType class of the template parameter * @param params interface with parameters */ protected AbstractCrossValidatorTool(Class sampleType, Class

params) { super(sampleType, params); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_cmdline_languagem0100644 0000000 0000000 00000000176 14135770370 032623 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/languagemodel/NGramLanguageModelTool.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/cmdline/languagemodel/NGramLangua0100664 0001750 0001750 00000006341 14135770370 034046 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.cmdline.languagemodel; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CLI; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.PerformanceMonitor; import opennlp.tools.cmdline.SystemInputStreamFactory; import opennlp.tools.languagemodel.NGramLanguageModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; /** * Command line tool for {@link opennlp.tools.languagemodel.NGramLanguageModel}. */ public class NGramLanguageModelTool extends BasicCmdLineTool { @Override public String getShortDescription() { return "gives the probability and most probable next token(s) of a sequence of tokens in a " + "language model"; } @Override public void run(String[] args) { File lmFile = new File(args[0]); try (FileInputStream stream = new FileInputStream(lmFile)) { NGramLanguageModel nGramLanguageModel = new NGramLanguageModel(stream); ObjectStream lineStream; PerformanceMonitor perfMon = null; try { lineStream = new PlainTextByLineStream(new SystemInputStreamFactory(), SystemInputStreamFactory.encoding()); perfMon = new PerformanceMonitor(System.err, "nglm"); perfMon.start(); String line; while ((line = lineStream.read()) != null) { double probability; String[] predicted; // TODO : use a Tokenizer here String[] tokens = line.split(" "); try { probability = nGramLanguageModel.calculateProbability(tokens); predicted = nGramLanguageModel.predictNextTokens(tokens); } catch (Exception e) { System.err.println("Error:" + e.getLocalizedMessage()); System.err.println(line); continue; } System.out.println(Arrays.toString(tokens) + " -> prob:" + probability + ", " + "next:" + Arrays.toString(predicted)); perfMon.incrementCounter(); } } catch (IOException e) { CmdLineUtil.handleStdinIoError(e); } perfMon.stopAndPrintFinalResult(); } catch (IOException e) { System.err.println(e.getLocalizedMessage()); } // do nothing } @Override public String getHelp() { return "Usage: " + CLI.CMD + " " + getName() + " model"; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000164 14135770370 032701 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/indonesianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/indonesianStemme0100664 0001750 0001750 00000031367 14135770370 034300 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2010, Israel Olalla Copyright (c) 2010, ISOCO All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class implements the stemming algorithm defined by a snowball script. */ public class indonesianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private static final long serialVersionUID = 1L; public final static indonesianStemmer methodObject = new indonesianStemmer(); private final static Among a_0[] = { new Among("kah", -1, 1, "", methodObject), new Among("lah", -1, 1, "", methodObject), new Among("pun", -1, 1, "", methodObject) }; private final static Among a_1[] = { new Among("nya", -1, 1, "", methodObject), new Among("ku", -1, 1, "", methodObject), new Among("mu", -1, 1, "", methodObject) }; private final static Among a_2[] = { new Among("i", -1, 1, "r_SUFFIX_I_OK", methodObject), new Among("an", -1, 1, "r_SUFFIX_AN_OK", methodObject), new Among("kan", 1, 1, "r_SUFFIX_KAN_OK", methodObject) }; private final static Among a_3[] = { new Among("di", -1, 1, "", methodObject), new Among("ke", -1, 2, "", methodObject), new Among("me", -1, 1, "", methodObject), new Among("mem", 2, 5, "", methodObject), new Among("men", 2, 1, "", methodObject), new Among("meng", 4, 1, "", methodObject), new Among("meny", 4, 3, "r_VOWEL", methodObject), new Among("pem", -1, 6, "", methodObject), new Among("pen", -1, 2, "", methodObject), new Among("peng", 8, 2, "", methodObject), new Among("peny", 8, 4, "r_VOWEL", methodObject), new Among("ter", -1, 1, "", methodObject) }; private final static Among a_4[] = { new Among("be", -1, 3, "r_KER", methodObject), new Among("belajar", 0, 4, "", methodObject), new Among("ber", 0, 3, "", methodObject), new Among("pe", -1, 1, "", methodObject), new Among("pelajar", 3, 2, "", methodObject), new Among("per", 3, 1, "", methodObject) }; private static final char g_vowel[] = {17, 65, 16}; private int I_measure = 0; private int I_prefix = 0; private void copy_from(indonesianStemmer other) { I_measure = other.I_measure; I_prefix = other.I_prefix; super.copy_from(other); } private boolean r_remove_particle() { int among_var; // (, line 50 // [, line 51 ket = cursor; // substring, line 51 among_var = find_among_b(a_0); if (among_var == 0) { return false; } // ], line 51 bra = cursor; // (, line 52 // delete, line 52 slice_del(); I_measure--; return true; } private boolean r_remove_possessive_pronoun() { int among_var; // (, line 56 // [, line 57 ket = cursor; // substring, line 57 among_var = find_among_b(a_1); if (among_var == 0) { return false; } // ], line 57 bra = cursor; // ], line 58 // delete, line 58 slice_del(); I_measure--; return true; } protected boolean r_SUFFIX_KAN_OK() { // (, line 63 // and, line 85 if (I_prefix == 3 || I_prefix == 2) { return false; } return true; } protected boolean r_SUFFIX_AN_OK() { // (, line 89 if (I_prefix == 1) { return false; } return true; } protected boolean r_SUFFIX_I_OK() { int v_1; // line (, 91 if (!(I_prefix <= 2)) { return false; } // not, line 128 v_1 = limit - cursor; lab0: do { // literal, line 128 if (!eq_s_b("s")) { break lab0; } return false; } while (false); cursor = limit - v_1; return true; } private boolean r_remove_suffix() { int among_var; // (, line 131 // [, line 132 ket = cursor; // substring, line 132 among_var = find_among_b(a_2); if (among_var == 0) { return false; } // ], line 132 bra = cursor; // (, line 134 // delete, line 134 slice_del(); I_measure--; return true; } private boolean r_VOWEL() { // (, line 141 if (!in_grouping(g_vowel, 97, 117)) { return false; } return true; } private boolean r_KER() { // (, line 143 if (!out_grouping(g_vowel, 97, 117)) { return false; } // literal, line 143 if (!eq_s("er".length(), "er")) { return false; } return true; } private boolean r_remove_first_order_prefix() { int among_var; // (, line 145 // [, line 146 bra = cursor; // substring, line 146 among_var = find_among(a_3); if (among_var == 0) { return false; } // ], line 146 ket = cursor; switch (among_var) { case 1: // (, line 147 // delete, line 147 slice_del(); I_prefix = 1; I_measure--; break; case 2: // (, line 148 // delete, line 148 slice_del(); I_prefix = 3; I_measure--; break; case 3: // (, line 149 I_prefix = 1; // <-, line 149 slice_from("s"); I_measure--; break; case 4: // (, line 150 I_prefix = 3; // <-, line 150 slice_from("s"); I_measure--; break; case 5: int v_1; int v_2; // (, line 151 I_prefix = 1; I_measure--; // or, line 151 lab0: do { v_1 = cursor; lab1: do { v_2 = cursor; if (!in_grouping(g_vowel, 97, 117)) { break lab1; } cursor = v_2; // <-, line 151 slice_from("p"); break lab0; } while (false); cursor = v_1; // delete, line 151 slice_del(); } while (false); break; case 6: int v_3; int v_4; // (, line 152 I_prefix = 3; I_measure--; // or, line 152 lab2: do { v_3 = cursor; lab3: do { // and, line 152 v_4 = cursor; if (!in_grouping(g_vowel, 97, 117)) { break lab3; } cursor = v_4; // <-, line 152 slice_from("p"); break lab2; } while (false); cursor = v_3; // delete, line 152 slice_del(); } while (false); break; } return true; } private boolean r_remove_second_order_prefix() { int among_var; // (, line 156 // [, line 162 bra = cursor; // substring, line 162 among_var = find_among(a_4); if (among_var == 0) { return false; } // ], line 162 ket = cursor; switch (among_var) { case 1: // (, delete 163 // delete, line 163 slice_del(); I_prefix = 2; I_measure--; break; case 2: // (, line 164 // <-, line 164 slice_from("ajar"); I_measure--; break; case 3: // (, line 165 // delete, line 165 slice_del(); I_prefix = 4; I_measure--; break; case 4: // (, line 166 // <-, line 166 slice_from("ajar"); I_prefix = 4; I_measure--; break; } return true; } @Override public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 171 I_measure = 0; // do, line 173 v_1 = cursor; lab0: do { // (, line 173 // repeat, line 173 lab1: do { while (true) { lab2: do { v_2 = cursor; lab3: do { // (, line 173 // gopast, line 173 lab4: do { while (true) { lab5: do { if (!in_grouping(g_vowel, 97, 117)) { break lab5; } break lab4; } while (false); if (cursor >= limit) { break lab3; } cursor++; } } while (false); I_measure++; break lab2; } while (false); cursor = v_2; break lab1; } while (false); } } while (false); } while (false); cursor = v_1; if (!(I_measure > 2)) { return false; } I_prefix = 0; // backwards, line 176 limit_backward = cursor; cursor = limit; // (, line 176 // do, line 177 v_3 = limit - cursor; lab6: do { // call remove particle, line 177 if (r_remove_particle()) { break lab6; } } while (false); cursor = limit - v_3; if (!(I_measure > 2)) { return false; } // do, line 179 v_4 = limit - cursor; lab7: do { // call remove_possessive_pronoun, line 179 if (r_remove_possessive_pronoun()) { break lab7; } } while (false); cursor = limit - v_4; cursor = limit_backward; if (!(I_measure > 2)) { return false; } // or, line 188 lab8: do { v_5 = cursor; lab9: do { // test, line 182 v_6 = cursor; // (, line 182 // call remove_first_order_prefix, line 183 if (!r_remove_first_order_prefix()) { break lab9; } // do, line 184 v_7 = cursor; lab10: do { // (, line 184 // test, line 185 v_8 = cursor; // (, line 185 if (!(I_measure > 2)) { break lab10; } // backwards, line 185 limit_backward = cursor; cursor = limit; // call remove_suffix, line 185 if (!r_remove_suffix()) { break lab10; } cursor = limit_backward; cursor = v_8; if (!(I_measure > 2)) { break lab10; } // call remove_second_order_prefix, line 186 if (!r_remove_second_order_prefix()) { break lab10; } } while (false); cursor = v_7; cursor = v_6; break lab8; } while (false); cursor = v_5; // (, line 188 // do, line 189 v_9 = cursor; lab11: do { // call remove_second_order_prefix, line 189 if (!r_remove_second_order_prefix()) { break lab11; } } while (false); cursor = v_9; // do, line 190 v_10 = cursor; lab12: do { // (, line 190 if (!(I_measure > 2)) { break lab12; } // backwards, line 190 limit_backward = cursor; cursor = limit; // call remove_suffix, line 190 if (!r_remove_suffix()) { break lab12; } cursor = limit_backward; } while (false); cursor = v_10; } while (false); return true; } public boolean equals(Object o) { return o instanceof indonesianStemmer; } public int hashCode() { return indonesianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000157 14135770370 032703 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/irishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/irishStemmer.jav0100664 0001750 0001750 00000061012 14135770370 034216 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ public class irishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static irishStemmer methodObject = new irishStemmer (); private final static Among a_0[] = { new Among ( "b'", -1, 4, "", methodObject ), new Among ( "bh", -1, 14, "", methodObject ), new Among ( "bhf", 1, 9, "", methodObject ), new Among ( "bp", -1, 11, "", methodObject ), new Among ( "ch", -1, 15, "", methodObject ), new Among ( "d'", -1, 2, "", methodObject ), new Among ( "d'fh", 5, 3, "", methodObject ), new Among ( "dh", -1, 16, "", methodObject ), new Among ( "dt", -1, 13, "", methodObject ), new Among ( "fh", -1, 17, "", methodObject ), new Among ( "gc", -1, 7, "", methodObject ), new Among ( "gh", -1, 18, "", methodObject ), new Among ( "h-", -1, 1, "", methodObject ), new Among ( "m'", -1, 4, "", methodObject ), new Among ( "mb", -1, 6, "", methodObject ), new Among ( "mh", -1, 19, "", methodObject ), new Among ( "n-", -1, 1, "", methodObject ), new Among ( "nd", -1, 8, "", methodObject ), new Among ( "ng", -1, 10, "", methodObject ), new Among ( "ph", -1, 20, "", methodObject ), new Among ( "sh", -1, 5, "", methodObject ), new Among ( "t-", -1, 1, "", methodObject ), new Among ( "th", -1, 21, "", methodObject ), new Among ( "ts", -1, 12, "", methodObject ) }; private final static Among a_1[] = { new Among ( "\u00EDochta", -1, 1, "", methodObject ), new Among ( "a\u00EDochta", 0, 1, "", methodObject ), new Among ( "ire", -1, 2, "", methodObject ), new Among ( "aire", 2, 2, "", methodObject ), new Among ( "abh", -1, 1, "", methodObject ), new Among ( "eabh", 4, 1, "", methodObject ), new Among ( "ibh", -1, 1, "", methodObject ), new Among ( "aibh", 6, 1, "", methodObject ), new Among ( "amh", -1, 1, "", methodObject ), new Among ( "eamh", 8, 1, "", methodObject ), new Among ( "imh", -1, 1, "", methodObject ), new Among ( "aimh", 10, 1, "", methodObject ), new Among ( "\u00EDocht", -1, 1, "", methodObject ), new Among ( "a\u00EDocht", 12, 1, "", methodObject ), new Among ( "ir\u00ED", -1, 2, "", methodObject ), new Among ( "air\u00ED", 14, 2, "", methodObject ) }; private final static Among a_2[] = { new Among ( "\u00F3ideacha", -1, 6, "", methodObject ), new Among ( "patacha", -1, 5, "", methodObject ), new Among ( "achta", -1, 1, "", methodObject ), new Among ( "arcachta", 2, 2, "", methodObject ), new Among ( "eachta", 2, 1, "", methodObject ), new Among ( "grafa\u00EDochta", -1, 4, "", methodObject ), new Among ( "paite", -1, 5, "", methodObject ), new Among ( "ach", -1, 1, "", methodObject ), new Among ( "each", 7, 1, "", methodObject ), new Among ( "\u00F3ideach", 8, 6, "", methodObject ), new Among ( "gineach", 8, 3, "", methodObject ), new Among ( "patach", 7, 5, "", methodObject ), new Among ( "grafa\u00EDoch", -1, 4, "", methodObject ), new Among ( "pataigh", -1, 5, "", methodObject ), new Among ( "\u00F3idigh", -1, 6, "", methodObject ), new Among ( "acht\u00FAil", -1, 1, "", methodObject ), new Among ( "eacht\u00FAil", 15, 1, "", methodObject ), new Among ( "gineas", -1, 3, "", methodObject ), new Among ( "ginis", -1, 3, "", methodObject ), new Among ( "acht", -1, 1, "", methodObject ), new Among ( "arcacht", 19, 2, "", methodObject ), new Among ( "eacht", 19, 1, "", methodObject ), new Among ( "grafa\u00EDocht", -1, 4, "", methodObject ), new Among ( "arcachta\u00ED", -1, 2, "", methodObject ), new Among ( "grafa\u00EDochta\u00ED", -1, 4, "", methodObject ) }; private final static Among a_3[] = { new Among ( "imid", -1, 1, "", methodObject ), new Among ( "aimid", 0, 1, "", methodObject ), new Among ( "\u00EDmid", -1, 1, "", methodObject ), new Among ( "a\u00EDmid", 2, 1, "", methodObject ), new Among ( "adh", -1, 2, "", methodObject ), new Among ( "eadh", 4, 2, "", methodObject ), new Among ( "faidh", -1, 1, "", methodObject ), new Among ( "fidh", -1, 1, "", methodObject ), new Among ( "\u00E1il", -1, 2, "", methodObject ), new Among ( "ain", -1, 2, "", methodObject ), new Among ( "tear", -1, 2, "", methodObject ), new Among ( "tar", -1, 2, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2 }; private int I_p2; private int I_p1; private int I_pV; private void copy_from(irishStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_3; // (, line 28 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 34 v_1 = cursor; lab0: do { // (, line 34 // gopast, line 35 golab1: while(true) { lab2: do { if (!(in_grouping(g_v, 97, 250))) { break lab2; } break golab1; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark pV, line 35 I_pV = cursor; } while (false); cursor = v_1; // do, line 37 v_3 = cursor; lab3: do { // (, line 37 // gopast, line 38 golab4: while(true) { lab5: do { if (!(in_grouping(g_v, 97, 250))) { break lab5; } break golab4; } while (false); if (cursor >= limit) { break lab3; } cursor++; } // gopast, line 38 golab6: while(true) { lab7: do { if (!(out_grouping(g_v, 97, 250))) { break lab7; } break golab6; } while (false); if (cursor >= limit) { break lab3; } cursor++; } // setmark p1, line 38 I_p1 = cursor; // gopast, line 39 golab8: while(true) { lab9: do { if (!(in_grouping(g_v, 97, 250))) { break lab9; } break golab8; } while (false); if (cursor >= limit) { break lab3; } cursor++; } // gopast, line 39 golab10: while(true) { lab11: do { if (!(out_grouping(g_v, 97, 250))) { break lab11; } break golab10; } while (false); if (cursor >= limit) { break lab3; } cursor++; } // setmark p2, line 39 I_p2 = cursor; } while (false); cursor = v_3; return true; } private boolean r_initial_morph() { int among_var; // (, line 43 // [, line 44 bra = cursor; // substring, line 44 among_var = find_among(a_0, 24); if (among_var == 0) { return false; } // ], line 44 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 46 // delete, line 46 slice_del(); break; case 2: // (, line 50 // delete, line 50 slice_del(); break; case 3: // (, line 52 // <-, line 52 slice_from("f"); break; case 4: // (, line 55 // delete, line 55 slice_del(); break; case 5: // (, line 58 // <-, line 58 slice_from("s"); break; case 6: // (, line 61 // <-, line 61 slice_from("b"); break; case 7: // (, line 63 // <-, line 63 slice_from("c"); break; case 8: // (, line 65 // <-, line 65 slice_from("d"); break; case 9: // (, line 67 // <-, line 67 slice_from("f"); break; case 10: // (, line 69 // <-, line 69 slice_from("g"); break; case 11: // (, line 71 // <-, line 71 slice_from("p"); break; case 12: // (, line 73 // <-, line 73 slice_from("s"); break; case 13: // (, line 75 // <-, line 75 slice_from("t"); break; case 14: // (, line 79 // <-, line 79 slice_from("b"); break; case 15: // (, line 81 // <-, line 81 slice_from("c"); break; case 16: // (, line 83 // <-, line 83 slice_from("d"); break; case 17: // (, line 85 // <-, line 85 slice_from("f"); break; case 18: // (, line 87 // <-, line 87 slice_from("g"); break; case 19: // (, line 89 // <-, line 89 slice_from("m"); break; case 20: // (, line 91 // <-, line 91 slice_from("p"); break; case 21: // (, line 93 // <-, line 93 slice_from("t"); break; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_noun_sfx() { int among_var; // (, line 103 // [, line 104 ket = cursor; // substring, line 104 among_var = find_among_b(a_1, 16); if (among_var == 0) { return false; } // ], line 104 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 108 // call R1, line 108 if (!r_R1()) { return false; } // delete, line 108 slice_del(); break; case 2: // (, line 110 // call R2, line 110 if (!r_R2()) { return false; } // delete, line 110 slice_del(); break; } return true; } private boolean r_deriv() { int among_var; // (, line 113 // [, line 114 ket = cursor; // substring, line 114 among_var = find_among_b(a_2, 25); if (among_var == 0) { return false; } // ], line 114 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 116 // call R2, line 116 if (!r_R2()) { return false; } // delete, line 116 slice_del(); break; case 2: // (, line 118 // <-, line 118 slice_from("arc"); break; case 3: // (, line 120 // <-, line 120 slice_from("gin"); break; case 4: // (, line 122 // <-, line 122 slice_from("graf"); break; case 5: // (, line 124 // <-, line 124 slice_from("paite"); break; case 6: // (, line 126 // <-, line 126 slice_from("\u00F3id"); break; } return true; } private boolean r_verb_sfx() { int among_var; // (, line 129 // [, line 130 ket = cursor; // substring, line 130 among_var = find_among_b(a_3, 12); if (among_var == 0) { return false; } // ], line 130 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 133 // call RV, line 133 if (!r_RV()) { return false; } // delete, line 133 slice_del(); break; case 2: // (, line 138 // call R1, line 138 if (!r_R1()) { return false; } // delete, line 138 slice_del(); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 143 // do, line 144 v_1 = cursor; lab0: do { // call initial_morph, line 144 if (!r_initial_morph()) { break lab0; } } while (false); cursor = v_1; // do, line 145 v_2 = cursor; lab1: do { // call mark_regions, line 145 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 146 limit_backward = cursor; cursor = limit; // (, line 146 // do, line 147 v_3 = limit - cursor; lab2: do { // call noun_sfx, line 147 if (!r_noun_sfx()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 148 v_4 = limit - cursor; lab3: do { // call deriv, line 148 if (!r_deriv()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 149 v_5 = limit - cursor; lab4: do { // call verb_sfx, line 149 if (!r_verb_sfx()) { break lab4; } } while (false); cursor = limit - v_5; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof irishStemmer; } public int hashCode() { return irishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/spanishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/spanishStemmer.j0100664 0001750 0001750 00000154172 14135770370 034230 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class spanishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static spanishStemmer methodObject = new spanishStemmer (); private final static Among a_0[] = { new Among ( "", -1, 6, "", methodObject ), new Among ( "\u00E1", 0, 1, "", methodObject ), new Among ( "\u00E9", 0, 2, "", methodObject ), new Among ( "\u00ED", 0, 3, "", methodObject ), new Among ( "\u00F3", 0, 4, "", methodObject ), new Among ( "\u00FA", 0, 5, "", methodObject ) }; private final static Among a_1[] = { new Among ( "la", -1, -1, "", methodObject ), new Among ( "sela", 0, -1, "", methodObject ), new Among ( "le", -1, -1, "", methodObject ), new Among ( "me", -1, -1, "", methodObject ), new Among ( "se", -1, -1, "", methodObject ), new Among ( "lo", -1, -1, "", methodObject ), new Among ( "selo", 5, -1, "", methodObject ), new Among ( "las", -1, -1, "", methodObject ), new Among ( "selas", 7, -1, "", methodObject ), new Among ( "les", -1, -1, "", methodObject ), new Among ( "los", -1, -1, "", methodObject ), new Among ( "selos", 10, -1, "", methodObject ), new Among ( "nos", -1, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ando", -1, 6, "", methodObject ), new Among ( "iendo", -1, 6, "", methodObject ), new Among ( "yendo", -1, 7, "", methodObject ), new Among ( "\u00E1ndo", -1, 2, "", methodObject ), new Among ( "i\u00E9ndo", -1, 1, "", methodObject ), new Among ( "ar", -1, 6, "", methodObject ), new Among ( "er", -1, 6, "", methodObject ), new Among ( "ir", -1, 6, "", methodObject ), new Among ( "\u00E1r", -1, 3, "", methodObject ), new Among ( "\u00E9r", -1, 4, "", methodObject ), new Among ( "\u00EDr", -1, 5, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ic", -1, -1, "", methodObject ), new Among ( "ad", -1, -1, "", methodObject ), new Among ( "os", -1, -1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "able", -1, 1, "", methodObject ), new Among ( "ible", -1, 1, "", methodObject ), new Among ( "ante", -1, 1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "ic", -1, 1, "", methodObject ), new Among ( "abil", -1, 1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "ica", -1, 1, "", methodObject ), new Among ( "ancia", -1, 2, "", methodObject ), new Among ( "encia", -1, 5, "", methodObject ), new Among ( "adora", -1, 2, "", methodObject ), new Among ( "osa", -1, 1, "", methodObject ), new Among ( "ista", -1, 1, "", methodObject ), new Among ( "iva", -1, 9, "", methodObject ), new Among ( "anza", -1, 1, "", methodObject ), new Among ( "log\u00EDa", -1, 3, "", methodObject ), new Among ( "idad", -1, 8, "", methodObject ), new Among ( "able", -1, 1, "", methodObject ), new Among ( "ible", -1, 1, "", methodObject ), new Among ( "ante", -1, 2, "", methodObject ), new Among ( "mente", -1, 7, "", methodObject ), new Among ( "amente", 13, 6, "", methodObject ), new Among ( "aci\u00F3n", -1, 2, "", methodObject ), new Among ( "uci\u00F3n", -1, 4, "", methodObject ), new Among ( "ico", -1, 1, "", methodObject ), new Among ( "ismo", -1, 1, "", methodObject ), new Among ( "oso", -1, 1, "", methodObject ), new Among ( "amiento", -1, 1, "", methodObject ), new Among ( "imiento", -1, 1, "", methodObject ), new Among ( "ivo", -1, 9, "", methodObject ), new Among ( "ador", -1, 2, "", methodObject ), new Among ( "icas", -1, 1, "", methodObject ), new Among ( "ancias", -1, 2, "", methodObject ), new Among ( "encias", -1, 5, "", methodObject ), new Among ( "adoras", -1, 2, "", methodObject ), new Among ( "osas", -1, 1, "", methodObject ), new Among ( "istas", -1, 1, "", methodObject ), new Among ( "ivas", -1, 9, "", methodObject ), new Among ( "anzas", -1, 1, "", methodObject ), new Among ( "log\u00EDas", -1, 3, "", methodObject ), new Among ( "idades", -1, 8, "", methodObject ), new Among ( "ables", -1, 1, "", methodObject ), new Among ( "ibles", -1, 1, "", methodObject ), new Among ( "aciones", -1, 2, "", methodObject ), new Among ( "uciones", -1, 4, "", methodObject ), new Among ( "adores", -1, 2, "", methodObject ), new Among ( "antes", -1, 2, "", methodObject ), new Among ( "icos", -1, 1, "", methodObject ), new Among ( "ismos", -1, 1, "", methodObject ), new Among ( "osos", -1, 1, "", methodObject ), new Among ( "amientos", -1, 1, "", methodObject ), new Among ( "imientos", -1, 1, "", methodObject ), new Among ( "ivos", -1, 9, "", methodObject ) }; private final static Among a_7[] = { new Among ( "ya", -1, 1, "", methodObject ), new Among ( "ye", -1, 1, "", methodObject ), new Among ( "yan", -1, 1, "", methodObject ), new Among ( "yen", -1, 1, "", methodObject ), new Among ( "yeron", -1, 1, "", methodObject ), new Among ( "yendo", -1, 1, "", methodObject ), new Among ( "yo", -1, 1, "", methodObject ), new Among ( "yas", -1, 1, "", methodObject ), new Among ( "yes", -1, 1, "", methodObject ), new Among ( "yais", -1, 1, "", methodObject ), new Among ( "yamos", -1, 1, "", methodObject ), new Among ( "y\u00F3", -1, 1, "", methodObject ) }; private final static Among a_8[] = { new Among ( "aba", -1, 2, "", methodObject ), new Among ( "ada", -1, 2, "", methodObject ), new Among ( "ida", -1, 2, "", methodObject ), new Among ( "ara", -1, 2, "", methodObject ), new Among ( "iera", -1, 2, "", methodObject ), new Among ( "\u00EDa", -1, 2, "", methodObject ), new Among ( "ar\u00EDa", 5, 2, "", methodObject ), new Among ( "er\u00EDa", 5, 2, "", methodObject ), new Among ( "ir\u00EDa", 5, 2, "", methodObject ), new Among ( "ad", -1, 2, "", methodObject ), new Among ( "ed", -1, 2, "", methodObject ), new Among ( "id", -1, 2, "", methodObject ), new Among ( "ase", -1, 2, "", methodObject ), new Among ( "iese", -1, 2, "", methodObject ), new Among ( "aste", -1, 2, "", methodObject ), new Among ( "iste", -1, 2, "", methodObject ), new Among ( "an", -1, 2, "", methodObject ), new Among ( "aban", 16, 2, "", methodObject ), new Among ( "aran", 16, 2, "", methodObject ), new Among ( "ieran", 16, 2, "", methodObject ), new Among ( "\u00EDan", 16, 2, "", methodObject ), new Among ( "ar\u00EDan", 20, 2, "", methodObject ), new Among ( "er\u00EDan", 20, 2, "", methodObject ), new Among ( "ir\u00EDan", 20, 2, "", methodObject ), new Among ( "en", -1, 1, "", methodObject ), new Among ( "asen", 24, 2, "", methodObject ), new Among ( "iesen", 24, 2, "", methodObject ), new Among ( "aron", -1, 2, "", methodObject ), new Among ( "ieron", -1, 2, "", methodObject ), new Among ( "ar\u00E1n", -1, 2, "", methodObject ), new Among ( "er\u00E1n", -1, 2, "", methodObject ), new Among ( "ir\u00E1n", -1, 2, "", methodObject ), new Among ( "ado", -1, 2, "", methodObject ), new Among ( "ido", -1, 2, "", methodObject ), new Among ( "ando", -1, 2, "", methodObject ), new Among ( "iendo", -1, 2, "", methodObject ), new Among ( "ar", -1, 2, "", methodObject ), new Among ( "er", -1, 2, "", methodObject ), new Among ( "ir", -1, 2, "", methodObject ), new Among ( "as", -1, 2, "", methodObject ), new Among ( "abas", 39, 2, "", methodObject ), new Among ( "adas", 39, 2, "", methodObject ), new Among ( "idas", 39, 2, "", methodObject ), new Among ( "aras", 39, 2, "", methodObject ), new Among ( "ieras", 39, 2, "", methodObject ), new Among ( "\u00EDas", 39, 2, "", methodObject ), new Among ( "ar\u00EDas", 45, 2, "", methodObject ), new Among ( "er\u00EDas", 45, 2, "", methodObject ), new Among ( "ir\u00EDas", 45, 2, "", methodObject ), new Among ( "es", -1, 1, "", methodObject ), new Among ( "ases", 49, 2, "", methodObject ), new Among ( "ieses", 49, 2, "", methodObject ), new Among ( "abais", -1, 2, "", methodObject ), new Among ( "arais", -1, 2, "", methodObject ), new Among ( "ierais", -1, 2, "", methodObject ), new Among ( "\u00EDais", -1, 2, "", methodObject ), new Among ( "ar\u00EDais", 55, 2, "", methodObject ), new Among ( "er\u00EDais", 55, 2, "", methodObject ), new Among ( "ir\u00EDais", 55, 2, "", methodObject ), new Among ( "aseis", -1, 2, "", methodObject ), new Among ( "ieseis", -1, 2, "", methodObject ), new Among ( "asteis", -1, 2, "", methodObject ), new Among ( "isteis", -1, 2, "", methodObject ), new Among ( "\u00E1is", -1, 2, "", methodObject ), new Among ( "\u00E9is", -1, 1, "", methodObject ), new Among ( "ar\u00E9is", 64, 2, "", methodObject ), new Among ( "er\u00E9is", 64, 2, "", methodObject ), new Among ( "ir\u00E9is", 64, 2, "", methodObject ), new Among ( "ados", -1, 2, "", methodObject ), new Among ( "idos", -1, 2, "", methodObject ), new Among ( "amos", -1, 2, "", methodObject ), new Among ( "\u00E1bamos", 70, 2, "", methodObject ), new Among ( "\u00E1ramos", 70, 2, "", methodObject ), new Among ( "i\u00E9ramos", 70, 2, "", methodObject ), new Among ( "\u00EDamos", 70, 2, "", methodObject ), new Among ( "ar\u00EDamos", 74, 2, "", methodObject ), new Among ( "er\u00EDamos", 74, 2, "", methodObject ), new Among ( "ir\u00EDamos", 74, 2, "", methodObject ), new Among ( "emos", -1, 1, "", methodObject ), new Among ( "aremos", 78, 2, "", methodObject ), new Among ( "eremos", 78, 2, "", methodObject ), new Among ( "iremos", 78, 2, "", methodObject ), new Among ( "\u00E1semos", 78, 2, "", methodObject ), new Among ( "i\u00E9semos", 78, 2, "", methodObject ), new Among ( "imos", -1, 2, "", methodObject ), new Among ( "ar\u00E1s", -1, 2, "", methodObject ), new Among ( "er\u00E1s", -1, 2, "", methodObject ), new Among ( "ir\u00E1s", -1, 2, "", methodObject ), new Among ( "\u00EDs", -1, 2, "", methodObject ), new Among ( "ar\u00E1", -1, 2, "", methodObject ), new Among ( "er\u00E1", -1, 2, "", methodObject ), new Among ( "ir\u00E1", -1, 2, "", methodObject ), new Among ( "ar\u00E9", -1, 2, "", methodObject ), new Among ( "er\u00E9", -1, 2, "", methodObject ), new Among ( "ir\u00E9", -1, 2, "", methodObject ), new Among ( "i\u00F3", -1, 2, "", methodObject ) }; private final static Among a_9[] = { new Among ( "a", -1, 1, "", methodObject ), new Among ( "e", -1, 2, "", methodObject ), new Among ( "o", -1, 1, "", methodObject ), new Among ( "os", -1, 1, "", methodObject ), new Among ( "\u00E1", -1, 1, "", methodObject ), new Among ( "\u00E9", -1, 2, "", methodObject ), new Among ( "\u00ED", -1, 1, "", methodObject ), new Among ( "\u00F3", -1, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 }; private int I_p2; private int I_p1; private int I_pV; private void copy_from(spanishStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_2; int v_3; int v_6; int v_8; // (, line 31 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 37 v_1 = cursor; lab0: do { // (, line 37 // or, line 39 lab1: do { v_2 = cursor; lab2: do { // (, line 38 if (!(in_grouping(g_v, 97, 252))) { break lab2; } // or, line 38 lab3: do { v_3 = cursor; lab4: do { // (, line 38 if (!(out_grouping(g_v, 97, 252))) { break lab4; } // gopast, line 38 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 252))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab4; } cursor++; } break lab3; } while (false); cursor = v_3; // (, line 38 if (!(in_grouping(g_v, 97, 252))) { break lab2; } // gopast, line 38 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 252))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab2; } cursor++; } } while (false); break lab1; } while (false); cursor = v_2; // (, line 40 if (!(out_grouping(g_v, 97, 252))) { break lab0; } // or, line 40 lab9: do { v_6 = cursor; lab10: do { // (, line 40 if (!(out_grouping(g_v, 97, 252))) { break lab10; } // gopast, line 40 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 252))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab10; } cursor++; } break lab9; } while (false); cursor = v_6; // (, line 40 if (!(in_grouping(g_v, 97, 252))) { break lab0; } // next, line 40 if (cursor >= limit) { break lab0; } cursor++; } while (false); } while (false); // setmark pV, line 41 I_pV = cursor; } while (false); cursor = v_1; // do, line 43 v_8 = cursor; lab13: do { // (, line 43 // gopast, line 44 golab14: while(true) { lab15: do { if (!(in_grouping(g_v, 97, 252))) { break lab15; } break golab14; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 44 golab16: while(true) { lab17: do { if (!(out_grouping(g_v, 97, 252))) { break lab17; } break golab16; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p1, line 44 I_p1 = cursor; // gopast, line 45 golab18: while(true) { lab19: do { if (!(in_grouping(g_v, 97, 252))) { break lab19; } break golab18; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 45 golab20: while(true) { lab21: do { if (!(out_grouping(g_v, 97, 252))) { break lab21; } break golab20; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p2, line 45 I_p2 = cursor; } while (false); cursor = v_8; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 49 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 49 // [, line 50 bra = cursor; // substring, line 50 among_var = find_among(a_0, 6); if (among_var == 0) { break lab1; } // ], line 50 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 51 // <-, line 51 slice_from("a"); break; case 2: // (, line 52 // <-, line 52 slice_from("e"); break; case 3: // (, line 53 // <-, line 53 slice_from("i"); break; case 4: // (, line 54 // <-, line 54 slice_from("o"); break; case 5: // (, line 55 // <-, line 55 slice_from("u"); break; case 6: // (, line 57 // next, line 57 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_attached_pronoun() { int among_var; // (, line 67 // [, line 68 ket = cursor; // substring, line 68 if (find_among_b(a_1, 13) == 0) { return false; } // ], line 68 bra = cursor; // substring, line 72 among_var = find_among_b(a_2, 11); if (among_var == 0) { return false; } // call RV, line 72 if (!r_RV()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 73 // ], line 73 bra = cursor; // <-, line 73 slice_from("iendo"); break; case 2: // (, line 74 // ], line 74 bra = cursor; // <-, line 74 slice_from("ando"); break; case 3: // (, line 75 // ], line 75 bra = cursor; // <-, line 75 slice_from("ar"); break; case 4: // (, line 76 // ], line 76 bra = cursor; // <-, line 76 slice_from("er"); break; case 5: // (, line 77 // ], line 77 bra = cursor; // <-, line 77 slice_from("ir"); break; case 6: // (, line 81 // delete, line 81 slice_del(); break; case 7: // (, line 82 // literal, line 82 if (!(eq_s_b(1, "u"))) { return false; } // delete, line 82 slice_del(); break; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 86 // [, line 87 ket = cursor; // substring, line 87 among_var = find_among_b(a_6, 46); if (among_var == 0) { return false; } // ], line 87 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 98 // call R2, line 99 if (!r_R2()) { return false; } // delete, line 99 slice_del(); break; case 2: // (, line 104 // call R2, line 105 if (!r_R2()) { return false; } // delete, line 105 slice_del(); // try, line 106 v_1 = limit - cursor; lab0: do { // (, line 106 // [, line 106 ket = cursor; // literal, line 106 if (!(eq_s_b(2, "ic"))) { cursor = limit - v_1; break lab0; } // ], line 106 bra = cursor; // call R2, line 106 if (!r_R2()) { cursor = limit - v_1; break lab0; } // delete, line 106 slice_del(); } while (false); break; case 3: // (, line 110 // call R2, line 111 if (!r_R2()) { return false; } // <-, line 111 slice_from("log"); break; case 4: // (, line 114 // call R2, line 115 if (!r_R2()) { return false; } // <-, line 115 slice_from("u"); break; case 5: // (, line 118 // call R2, line 119 if (!r_R2()) { return false; } // <-, line 119 slice_from("ente"); break; case 6: // (, line 122 // call R1, line 123 if (!r_R1()) { return false; } // delete, line 123 slice_del(); // try, line 124 v_2 = limit - cursor; lab1: do { // (, line 124 // [, line 125 ket = cursor; // substring, line 125 among_var = find_among_b(a_3, 4); if (among_var == 0) { cursor = limit - v_2; break lab1; } // ], line 125 bra = cursor; // call R2, line 125 if (!r_R2()) { cursor = limit - v_2; break lab1; } // delete, line 125 slice_del(); switch(among_var) { case 0: cursor = limit - v_2; break lab1; case 1: // (, line 126 // [, line 126 ket = cursor; // literal, line 126 if (!(eq_s_b(2, "at"))) { cursor = limit - v_2; break lab1; } // ], line 126 bra = cursor; // call R2, line 126 if (!r_R2()) { cursor = limit - v_2; break lab1; } // delete, line 126 slice_del(); break; } } while (false); break; case 7: // (, line 134 // call R2, line 135 if (!r_R2()) { return false; } // delete, line 135 slice_del(); // try, line 136 v_3 = limit - cursor; lab2: do { // (, line 136 // [, line 137 ket = cursor; // substring, line 137 among_var = find_among_b(a_4, 3); if (among_var == 0) { cursor = limit - v_3; break lab2; } // ], line 137 bra = cursor; switch(among_var) { case 0: cursor = limit - v_3; break lab2; case 1: // (, line 140 // call R2, line 140 if (!r_R2()) { cursor = limit - v_3; break lab2; } // delete, line 140 slice_del(); break; } } while (false); break; case 8: // (, line 146 // call R2, line 147 if (!r_R2()) { return false; } // delete, line 147 slice_del(); // try, line 148 v_4 = limit - cursor; lab3: do { // (, line 148 // [, line 149 ket = cursor; // substring, line 149 among_var = find_among_b(a_5, 3); if (among_var == 0) { cursor = limit - v_4; break lab3; } // ], line 149 bra = cursor; switch(among_var) { case 0: cursor = limit - v_4; break lab3; case 1: // (, line 152 // call R2, line 152 if (!r_R2()) { cursor = limit - v_4; break lab3; } // delete, line 152 slice_del(); break; } } while (false); break; case 9: // (, line 158 // call R2, line 159 if (!r_R2()) { return false; } // delete, line 159 slice_del(); // try, line 160 v_5 = limit - cursor; lab4: do { // (, line 160 // [, line 161 ket = cursor; // literal, line 161 if (!(eq_s_b(2, "at"))) { cursor = limit - v_5; break lab4; } // ], line 161 bra = cursor; // call R2, line 161 if (!r_R2()) { cursor = limit - v_5; break lab4; } // delete, line 161 slice_del(); } while (false); break; } return true; } private boolean r_y_verb_suffix() { int among_var; int v_1; int v_2; // (, line 167 // setlimit, line 168 v_1 = limit - cursor; // tomark, line 168 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 168 // [, line 168 ket = cursor; // substring, line 168 among_var = find_among_b(a_7, 12); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 168 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 171 // literal, line 171 if (!(eq_s_b(1, "u"))) { return false; } // delete, line 171 slice_del(); break; } return true; } private boolean r_verb_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; // (, line 175 // setlimit, line 176 v_1 = limit - cursor; // tomark, line 176 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 176 // [, line 176 ket = cursor; // substring, line 176 among_var = find_among_b(a_8, 96); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 176 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 179 // try, line 179 v_3 = limit - cursor; lab0: do { // (, line 179 // literal, line 179 if (!(eq_s_b(1, "u"))) { cursor = limit - v_3; break lab0; } // test, line 179 v_4 = limit - cursor; // literal, line 179 if (!(eq_s_b(1, "g"))) { cursor = limit - v_3; break lab0; } cursor = limit - v_4; } while (false); // ], line 179 bra = cursor; // delete, line 179 slice_del(); break; case 2: // (, line 200 // delete, line 200 slice_del(); break; } return true; } private boolean r_residual_suffix() { int among_var; int v_1; int v_2; // (, line 204 // [, line 205 ket = cursor; // substring, line 205 among_var = find_among_b(a_9, 8); if (among_var == 0) { return false; } // ], line 205 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 208 // call RV, line 208 if (!r_RV()) { return false; } // delete, line 208 slice_del(); break; case 2: // (, line 210 // call RV, line 210 if (!r_RV()) { return false; } // delete, line 210 slice_del(); // try, line 210 v_1 = limit - cursor; lab0: do { // (, line 210 // [, line 210 ket = cursor; // literal, line 210 if (!(eq_s_b(1, "u"))) { cursor = limit - v_1; break lab0; } // ], line 210 bra = cursor; // test, line 210 v_2 = limit - cursor; // literal, line 210 if (!(eq_s_b(1, "g"))) { cursor = limit - v_1; break lab0; } cursor = limit - v_2; // call RV, line 210 if (!r_RV()) { cursor = limit - v_1; break lab0; } // delete, line 210 slice_del(); } while (false); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; // (, line 215 // do, line 216 v_1 = cursor; lab0: do { // call mark_regions, line 216 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 217 limit_backward = cursor; cursor = limit; // (, line 217 // do, line 218 v_2 = limit - cursor; lab1: do { // call attached_pronoun, line 218 if (!r_attached_pronoun()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 219 v_3 = limit - cursor; lab2: do { // (, line 219 // or, line 219 lab3: do { v_4 = limit - cursor; lab4: do { // call standard_suffix, line 219 if (!r_standard_suffix()) { break lab4; } break lab3; } while (false); cursor = limit - v_4; lab5: do { // call y_verb_suffix, line 220 if (!r_y_verb_suffix()) { break lab5; } break lab3; } while (false); cursor = limit - v_4; // call verb_suffix, line 221 if (!r_verb_suffix()) { break lab2; } } while (false); } while (false); cursor = limit - v_3; // do, line 223 v_5 = limit - cursor; lab6: do { // call residual_suffix, line 223 if (!r_residual_suffix()) { break lab6; } } while (false); cursor = limit - v_5; cursor = limit_backward; // do, line 225 v_6 = cursor; lab7: do { // call postlude, line 225 if (!r_postlude()) { break lab7; } } while (false); cursor = v_6; return true; } public boolean equals( Object o ) { return o instanceof spanishStemmer; } public int hashCode() { return spanishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/porterStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/porterStemmer.ja0100664 0001750 0001750 00000112356 14135770370 034235 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class porterStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static porterStemmer methodObject = new porterStemmer (); private final static Among a_0[] = { new Among ( "s", -1, 3, "", methodObject ), new Among ( "ies", 0, 2, "", methodObject ), new Among ( "sses", 0, 1, "", methodObject ), new Among ( "ss", 0, -1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "bb", 0, 2, "", methodObject ), new Among ( "dd", 0, 2, "", methodObject ), new Among ( "ff", 0, 2, "", methodObject ), new Among ( "gg", 0, 2, "", methodObject ), new Among ( "bl", 0, 1, "", methodObject ), new Among ( "mm", 0, 2, "", methodObject ), new Among ( "nn", 0, 2, "", methodObject ), new Among ( "pp", 0, 2, "", methodObject ), new Among ( "rr", 0, 2, "", methodObject ), new Among ( "at", 0, 1, "", methodObject ), new Among ( "tt", 0, 2, "", methodObject ), new Among ( "iz", 0, 1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ed", -1, 2, "", methodObject ), new Among ( "eed", 0, 1, "", methodObject ), new Among ( "ing", -1, 2, "", methodObject ) }; private final static Among a_3[] = { new Among ( "anci", -1, 3, "", methodObject ), new Among ( "enci", -1, 2, "", methodObject ), new Among ( "abli", -1, 4, "", methodObject ), new Among ( "eli", -1, 6, "", methodObject ), new Among ( "alli", -1, 9, "", methodObject ), new Among ( "ousli", -1, 12, "", methodObject ), new Among ( "entli", -1, 5, "", methodObject ), new Among ( "aliti", -1, 10, "", methodObject ), new Among ( "biliti", -1, 14, "", methodObject ), new Among ( "iviti", -1, 13, "", methodObject ), new Among ( "tional", -1, 1, "", methodObject ), new Among ( "ational", 10, 8, "", methodObject ), new Among ( "alism", -1, 10, "", methodObject ), new Among ( "ation", -1, 8, "", methodObject ), new Among ( "ization", 13, 7, "", methodObject ), new Among ( "izer", -1, 7, "", methodObject ), new Among ( "ator", -1, 8, "", methodObject ), new Among ( "iveness", -1, 13, "", methodObject ), new Among ( "fulness", -1, 11, "", methodObject ), new Among ( "ousness", -1, 12, "", methodObject ) }; private final static Among a_4[] = { new Among ( "icate", -1, 2, "", methodObject ), new Among ( "ative", -1, 3, "", methodObject ), new Among ( "alize", -1, 1, "", methodObject ), new Among ( "iciti", -1, 2, "", methodObject ), new Among ( "ical", -1, 2, "", methodObject ), new Among ( "ful", -1, 3, "", methodObject ), new Among ( "ness", -1, 3, "", methodObject ) }; private final static Among a_5[] = { new Among ( "ic", -1, 1, "", methodObject ), new Among ( "ance", -1, 1, "", methodObject ), new Among ( "ence", -1, 1, "", methodObject ), new Among ( "able", -1, 1, "", methodObject ), new Among ( "ible", -1, 1, "", methodObject ), new Among ( "ate", -1, 1, "", methodObject ), new Among ( "ive", -1, 1, "", methodObject ), new Among ( "ize", -1, 1, "", methodObject ), new Among ( "iti", -1, 1, "", methodObject ), new Among ( "al", -1, 1, "", methodObject ), new Among ( "ism", -1, 1, "", methodObject ), new Among ( "ion", -1, 2, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "ous", -1, 1, "", methodObject ), new Among ( "ant", -1, 1, "", methodObject ), new Among ( "ent", -1, 1, "", methodObject ), new Among ( "ment", 15, 1, "", methodObject ), new Among ( "ement", 16, 1, "", methodObject ), new Among ( "ou", -1, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1 }; private static final char g_v_WXY[] = {1, 17, 65, 208, 1 }; private boolean B_Y_found; private int I_p2; private int I_p1; private void copy_from(porterStemmer other) { B_Y_found = other.B_Y_found; I_p2 = other.I_p2; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_shortv() { // (, line 19 if (!(out_grouping_b(g_v_WXY, 89, 121))) { return false; } if (!(in_grouping_b(g_v, 97, 121))) { return false; } if (!(out_grouping_b(g_v, 97, 121))) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_Step_1a() { int among_var; // (, line 24 // [, line 25 ket = cursor; // substring, line 25 among_var = find_among_b(a_0, 4); if (among_var == 0) { return false; } // ], line 25 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 26 // <-, line 26 slice_from("ss"); break; case 2: // (, line 27 // <-, line 27 slice_from("i"); break; case 3: // (, line 29 // delete, line 29 slice_del(); break; } return true; } private boolean r_Step_1b() { int among_var; int v_1; int v_3; int v_4; // (, line 33 // [, line 34 ket = cursor; // substring, line 34 among_var = find_among_b(a_2, 3); if (among_var == 0) { return false; } // ], line 34 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 35 // call R1, line 35 if (!r_R1()) { return false; } // <-, line 35 slice_from("ee"); break; case 2: // (, line 37 // test, line 38 v_1 = limit - cursor; // gopast, line 38 golab0: while(true) { lab1: do { if (!(in_grouping_b(g_v, 97, 121))) { break lab1; } break golab0; } while (false); if (cursor <= limit_backward) { return false; } cursor--; } cursor = limit - v_1; // delete, line 38 slice_del(); // test, line 39 v_3 = limit - cursor; // substring, line 39 among_var = find_among_b(a_1, 13); if (among_var == 0) { return false; } cursor = limit - v_3; switch(among_var) { case 0: return false; case 1: // (, line 41 // <+, line 41 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; case 2: // (, line 44 // [, line 44 ket = cursor; // next, line 44 if (cursor <= limit_backward) { return false; } cursor--; // ], line 44 bra = cursor; // delete, line 44 slice_del(); break; case 3: // (, line 45 // atmark, line 45 if (cursor != I_p1) { return false; } // test, line 45 v_4 = limit - cursor; // call shortv, line 45 if (!r_shortv()) { return false; } cursor = limit - v_4; // <+, line 45 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; } break; } return true; } private boolean r_Step_1c() { int v_1; // (, line 51 // [, line 52 ket = cursor; // or, line 52 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 52 if (!(eq_s_b(1, "y"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 52 if (!(eq_s_b(1, "Y"))) { return false; } } while (false); // ], line 52 bra = cursor; // gopast, line 53 golab2: while(true) { lab3: do { if (!(in_grouping_b(g_v, 97, 121))) { break lab3; } break golab2; } while (false); if (cursor <= limit_backward) { return false; } cursor--; } // <-, line 54 slice_from("i"); return true; } private boolean r_Step_2() { int among_var; // (, line 57 // [, line 58 ket = cursor; // substring, line 58 among_var = find_among_b(a_3, 20); if (among_var == 0) { return false; } // ], line 58 bra = cursor; // call R1, line 58 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 59 // <-, line 59 slice_from("tion"); break; case 2: // (, line 60 // <-, line 60 slice_from("ence"); break; case 3: // (, line 61 // <-, line 61 slice_from("ance"); break; case 4: // (, line 62 // <-, line 62 slice_from("able"); break; case 5: // (, line 63 // <-, line 63 slice_from("ent"); break; case 6: // (, line 64 // <-, line 64 slice_from("e"); break; case 7: // (, line 66 // <-, line 66 slice_from("ize"); break; case 8: // (, line 68 // <-, line 68 slice_from("ate"); break; case 9: // (, line 69 // <-, line 69 slice_from("al"); break; case 10: // (, line 71 // <-, line 71 slice_from("al"); break; case 11: // (, line 72 // <-, line 72 slice_from("ful"); break; case 12: // (, line 74 // <-, line 74 slice_from("ous"); break; case 13: // (, line 76 // <-, line 76 slice_from("ive"); break; case 14: // (, line 77 // <-, line 77 slice_from("ble"); break; } return true; } private boolean r_Step_3() { int among_var; // (, line 81 // [, line 82 ket = cursor; // substring, line 82 among_var = find_among_b(a_4, 7); if (among_var == 0) { return false; } // ], line 82 bra = cursor; // call R1, line 82 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 83 // <-, line 83 slice_from("al"); break; case 2: // (, line 85 // <-, line 85 slice_from("ic"); break; case 3: // (, line 87 // delete, line 87 slice_del(); break; } return true; } private boolean r_Step_4() { int among_var; int v_1; // (, line 91 // [, line 92 ket = cursor; // substring, line 92 among_var = find_among_b(a_5, 19); if (among_var == 0) { return false; } // ], line 92 bra = cursor; // call R2, line 92 if (!r_R2()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 95 // delete, line 95 slice_del(); break; case 2: // (, line 96 // or, line 96 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 96 if (!(eq_s_b(1, "s"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 96 if (!(eq_s_b(1, "t"))) { return false; } } while (false); // delete, line 96 slice_del(); break; } return true; } private boolean r_Step_5a() { int v_1; int v_2; // (, line 100 // [, line 101 ket = cursor; // literal, line 101 if (!(eq_s_b(1, "e"))) { return false; } // ], line 101 bra = cursor; // or, line 102 lab0: do { v_1 = limit - cursor; lab1: do { // call R2, line 102 if (!r_R2()) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // (, line 102 // call R1, line 102 if (!r_R1()) { return false; } // not, line 102 { v_2 = limit - cursor; lab2: do { // call shortv, line 102 if (!r_shortv()) { break lab2; } return false; } while (false); cursor = limit - v_2; } } while (false); // delete, line 103 slice_del(); return true; } private boolean r_Step_5b() { // (, line 106 // [, line 107 ket = cursor; // literal, line 107 if (!(eq_s_b(1, "l"))) { return false; } // ], line 107 bra = cursor; // call R2, line 108 if (!r_R2()) { return false; } // literal, line 108 if (!(eq_s_b(1, "l"))) { return false; } // delete, line 109 slice_del(); return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_10; int v_11; int v_12; int v_13; int v_14; int v_15; int v_16; int v_17; int v_18; int v_19; int v_20; // (, line 113 // unset Y_found, line 115 B_Y_found = false; // do, line 116 v_1 = cursor; lab0: do { // (, line 116 // [, line 116 bra = cursor; // literal, line 116 if (!(eq_s(1, "y"))) { break lab0; } // ], line 116 ket = cursor; // <-, line 116 slice_from("Y"); // set Y_found, line 116 B_Y_found = true; } while (false); cursor = v_1; // do, line 117 v_2 = cursor; lab1: do { // repeat, line 117 replab2: while(true) { v_3 = cursor; lab3: do { // (, line 117 // goto, line 117 golab4: while(true) { v_4 = cursor; lab5: do { // (, line 117 if (!(in_grouping(g_v, 97, 121))) { break lab5; } // [, line 117 bra = cursor; // literal, line 117 if (!(eq_s(1, "y"))) { break lab5; } // ], line 117 ket = cursor; cursor = v_4; break golab4; } while (false); cursor = v_4; if (cursor >= limit) { break lab3; } cursor++; } // <-, line 117 slice_from("Y"); // set Y_found, line 117 B_Y_found = true; continue replab2; } while (false); cursor = v_3; break replab2; } } while (false); cursor = v_2; I_p1 = limit; I_p2 = limit; // do, line 121 v_5 = cursor; lab6: do { // (, line 121 // gopast, line 122 golab7: while(true) { lab8: do { if (!(in_grouping(g_v, 97, 121))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // gopast, line 122 golab9: while(true) { lab10: do { if (!(out_grouping(g_v, 97, 121))) { break lab10; } break golab9; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // setmark p1, line 122 I_p1 = cursor; // gopast, line 123 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 121))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // gopast, line 123 golab13: while(true) { lab14: do { if (!(out_grouping(g_v, 97, 121))) { break lab14; } break golab13; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // setmark p2, line 123 I_p2 = cursor; } while (false); cursor = v_5; // backwards, line 126 limit_backward = cursor; cursor = limit; // (, line 126 // do, line 127 v_10 = limit - cursor; lab15: do { // call Step_1a, line 127 if (!r_Step_1a()) { break lab15; } } while (false); cursor = limit - v_10; // do, line 128 v_11 = limit - cursor; lab16: do { // call Step_1b, line 128 if (!r_Step_1b()) { break lab16; } } while (false); cursor = limit - v_11; // do, line 129 v_12 = limit - cursor; lab17: do { // call Step_1c, line 129 if (!r_Step_1c()) { break lab17; } } while (false); cursor = limit - v_12; // do, line 130 v_13 = limit - cursor; lab18: do { // call Step_2, line 130 if (!r_Step_2()) { break lab18; } } while (false); cursor = limit - v_13; // do, line 131 v_14 = limit - cursor; lab19: do { // call Step_3, line 131 if (!r_Step_3()) { break lab19; } } while (false); cursor = limit - v_14; // do, line 132 v_15 = limit - cursor; lab20: do { // call Step_4, line 132 if (!r_Step_4()) { break lab20; } } while (false); cursor = limit - v_15; // do, line 133 v_16 = limit - cursor; lab21: do { // call Step_5a, line 133 if (!r_Step_5a()) { break lab21; } } while (false); cursor = limit - v_16; // do, line 134 v_17 = limit - cursor; lab22: do { // call Step_5b, line 134 if (!r_Step_5b()) { break lab22; } } while (false); cursor = limit - v_17; cursor = limit_backward; // do, line 137 v_18 = cursor; lab23: do { // (, line 137 // Boolean test Y_found, line 137 if (!(B_Y_found)) { break lab23; } // repeat, line 137 replab24: while(true) { v_19 = cursor; lab25: do { // (, line 137 // goto, line 137 golab26: while(true) { v_20 = cursor; lab27: do { // (, line 137 // [, line 137 bra = cursor; // literal, line 137 if (!(eq_s(1, "Y"))) { break lab27; } // ], line 137 ket = cursor; cursor = v_20; break golab26; } while (false); cursor = v_20; if (cursor >= limit) { break lab25; } cursor++; } // <-, line 137 slice_from("y"); continue replab24; } while (false); cursor = v_19; break replab24; } } while (false); cursor = v_18; return true; } public boolean equals( Object o ) { return o instanceof porterStemmer; } public int hashCode() { return porterStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/catalanStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/catalanStemmer.j0100664 0001750 0001750 00000117036 14135770370 034164 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2010, Israel Olalla Copyright (c) 2010, ISOCO All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ public class catalanStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private static final long serialVersionUID = 1L; private final static catalanStemmer methodObject = new catalanStemmer(); private final static Among a_0[] = { new Among("", -1, 13, "", methodObject), new Among("\u00B7", 0, 12, "", methodObject), new Among("\u00E0", 0, 2, "", methodObject), new Among("\u00E1", 0, 1, "", methodObject), new Among("\u00E8", 0, 4, "", methodObject), new Among("\u00E9", 0, 3, "", methodObject), new Among("\u00EC", 0, 6, "", methodObject), new Among("\u00ED", 0, 5, "", methodObject), new Among("\u00EF", 0, 11, "", methodObject), new Among("\u00F2", 0, 8, "", methodObject), new Among("\u00F3", 0, 7, "", methodObject), new Among("\u00FA", 0, 9, "", methodObject), new Among("\u00FC", 0, 10, "", methodObject) }; private final static Among a_1[] = { new Among("la", -1, 1, "", methodObject), new Among("-la", 0, 1, "", methodObject), new Among("sela", 0, 1, "", methodObject), new Among("le", -1, 1, "", methodObject), new Among("me", -1, 1, "", methodObject), new Among("-me", 4, 1, "", methodObject), new Among("se", -1, 1, "", methodObject), new Among("-te", -1, 1, "", methodObject), new Among("hi", -1, 1, "", methodObject), new Among("'hi", 8, 1, "", methodObject), new Among("li", -1, 1, "", methodObject), new Among("-li", 10, 1, "", methodObject), new Among("'l", -1, 1, "", methodObject), new Among("'m", -1, 1, "", methodObject), new Among("-m", -1, 1, "", methodObject), new Among("'n", -1, 1, "", methodObject), new Among("-n", -1, 1, "", methodObject), new Among("ho", -1, 1, "", methodObject), new Among("'ho", 17, 1, "", methodObject), new Among("lo", -1, 1, "", methodObject), new Among("selo", 19, 1, "", methodObject), new Among("'s", -1, 1, "", methodObject), new Among("las", -1, 1, "", methodObject), new Among("selas", 22, 1, "", methodObject), new Among("les", -1, 1, "", methodObject), new Among("-les", 24, 1, "", methodObject), new Among("'ls", -1, 1, "", methodObject), new Among("-ls", -1, 1, "", methodObject), new Among("'ns", -1, 1, "", methodObject), new Among("-ns", -1, 1, "", methodObject), new Among("ens", -1, 1, "", methodObject), new Among("los", -1, 1, "", methodObject), new Among("selos", 31, 1, "", methodObject), new Among("nos", -1, 1, "", methodObject), new Among("-nos", 33, 1, "", methodObject), new Among("vos", -1, 1, "", methodObject), new Among("us", -1, 1, "", methodObject), new Among("-us", 36, 1, "", methodObject), new Among("'t", -1, 1, "", methodObject) }; private final static Among a_2[] = { new Among("ica", -1, 4, "", methodObject), new Among("l\u00F3gica", 0, 3, "", methodObject), new Among("enca", -1, 1, "", methodObject), new Among("ada", -1, 2, "", methodObject), new Among("ancia", -1, 1, "", methodObject), new Among("encia", -1, 1, "", methodObject), new Among("\u00E8ncia", -1, 1, "", methodObject), new Among("\u00EDcia", -1, 1, "", methodObject), new Among("logia", -1, 3, "", methodObject), new Among("inia", -1, 1, "", methodObject), new Among("\u00EDinia", 9, 1, "", methodObject), new Among("eria", -1, 1, "", methodObject), new Among("\u00E0ria", -1, 1, "", methodObject), new Among("at\u00F2ria", -1, 1, "", methodObject), new Among("alla", -1, 1, "", methodObject), new Among("ella", -1, 1, "", methodObject), new Among("\u00EDvola", -1, 1, "", methodObject), new Among("ima", -1, 1, "", methodObject), new Among("\u00EDssima", 17, 1, "", methodObject), new Among("qu\u00EDssima", 18, 5, "", methodObject), new Among("ana", -1, 1, "", methodObject), new Among("ina", -1, 1, "", methodObject), new Among("era", -1, 1, "", methodObject), new Among("sfera", 22, 1, "", methodObject), new Among("ora", -1, 1, "", methodObject), new Among("dora", 24, 1, "", methodObject), new Among("adora", 25, 1, "", methodObject), new Among("adura", -1, 1, "", methodObject), new Among("esa", -1, 1, "", methodObject), new Among("osa", -1, 1, "", methodObject), new Among("assa", -1, 1, "", methodObject), new Among("essa", -1, 1, "", methodObject), new Among("issa", -1, 1, "", methodObject), new Among("eta", -1, 1, "", methodObject), new Among("ita", -1, 1, "", methodObject), new Among("ota", -1, 1, "", methodObject), new Among("ista", -1, 1, "", methodObject), new Among("ialista", 36, 1, "", methodObject), new Among("ionista", 36, 1, "", methodObject), new Among("iva", -1, 1, "", methodObject), new Among("ativa", 39, 1, "", methodObject), new Among("n\u00E7a", -1, 1, "", methodObject), new Among("log\u00EDa", -1, 3, "", methodObject), new Among("ic", -1, 4, "", methodObject), new Among("\u00EDstic", 43, 1, "", methodObject), new Among("enc", -1, 1, "", methodObject), new Among("esc", -1, 1, "", methodObject), new Among("ud", -1, 1, "", methodObject), new Among("atge", -1, 1, "", methodObject), new Among("ble", -1, 1, "", methodObject), new Among("able", 49, 1, "", methodObject), new Among("ible", 49, 1, "", methodObject), new Among("isme", -1, 1, "", methodObject), new Among("ialisme", 52, 1, "", methodObject), new Among("ionisme", 52, 1, "", methodObject), new Among("ivisme", 52, 1, "", methodObject), new Among("aire", -1, 1, "", methodObject), new Among("icte", -1, 1, "", methodObject), new Among("iste", -1, 1, "", methodObject), new Among("ici", -1, 1, "", methodObject), new Among("\u00EDci", -1, 1, "", methodObject), new Among("logi", -1, 3, "", methodObject), new Among("ari", -1, 1, "", methodObject), new Among("tori", -1, 1, "", methodObject), new Among("al", -1, 1, "", methodObject), new Among("il", -1, 1, "", methodObject), new Among("all", -1, 1, "", methodObject), new Among("ell", -1, 1, "", methodObject), new Among("\u00EDvol", -1, 1, "", methodObject), new Among("isam", -1, 1, "", methodObject), new Among("issem", -1, 1, "", methodObject), new Among("\u00ECssem", -1, 1, "", methodObject), new Among("\u00EDssem", -1, 1, "", methodObject), new Among("\u00EDssim", -1, 1, "", methodObject), new Among("qu\u00EDssim", 73, 5, "", methodObject), new Among("amen", -1, 1, "", methodObject), new Among("\u00ECssin", -1, 1, "", methodObject), new Among("ar", -1, 1, "", methodObject), new Among("ificar", 77, 1, "", methodObject), new Among("egar", 77, 1, "", methodObject), new Among("ejar", 77, 1, "", methodObject), new Among("itar", 77, 1, "", methodObject), new Among("itzar", 77, 1, "", methodObject), new Among("fer", -1, 1, "", methodObject), new Among("or", -1, 1, "", methodObject), new Among("dor", 84, 1, "", methodObject), new Among("dur", -1, 1, "", methodObject), new Among("doras", -1, 1, "", methodObject), new Among("ics", -1, 4, "", methodObject), new Among("l\u00F3gics", 88, 3, "", methodObject), new Among("uds", -1, 1, "", methodObject), new Among("nces", -1, 1, "", methodObject), new Among("ades", -1, 2, "", methodObject), new Among("ancies", -1, 1, "", methodObject), new Among("encies", -1, 1, "", methodObject), new Among("\u00E8ncies", -1, 1, "", methodObject), new Among("\u00EDcies", -1, 1, "", methodObject), new Among("logies", -1, 3, "", methodObject), new Among("inies", -1, 1, "", methodObject), new Among("\u00EDnies", -1, 1, "", methodObject), new Among("eries", -1, 1, "", methodObject), new Among("\u00E0ries", -1, 1, "", methodObject), new Among("at\u00F2ries", -1, 1, "", methodObject), new Among("bles", -1, 1, "", methodObject), new Among("ables", 103, 1, "", methodObject), new Among("ibles", 103, 1, "", methodObject), new Among("imes", -1, 1, "", methodObject), new Among("\u00EDssimes", 106, 1, "", methodObject), new Among("qu\u00EDssimes", 107, 5, "", methodObject), new Among("formes", -1, 1, "", methodObject), new Among("ismes", -1, 1, "", methodObject), new Among("ialismes", 110, 1, "", methodObject), new Among("ines", -1, 1, "", methodObject), new Among("eres", -1, 1, "", methodObject), new Among("ores", -1, 1, "", methodObject), new Among("dores", 114, 1, "", methodObject), new Among("idores", 115, 1, "", methodObject), new Among("dures", -1, 1, "", methodObject), new Among("eses", -1, 1, "", methodObject), new Among("oses", -1, 1, "", methodObject), new Among("asses", -1, 1, "", methodObject), new Among("ictes", -1, 1, "", methodObject), new Among("ites", -1, 1, "", methodObject), new Among("otes", -1, 1, "", methodObject), new Among("istes", -1, 1, "", methodObject), new Among("ialistes", 124, 1, "", methodObject), new Among("ionistes", 124, 1, "", methodObject), new Among("iques", -1, 4, "", methodObject), new Among("l\u00F3giques", 127, 3, "", methodObject), new Among("ives", -1, 1, "", methodObject), new Among("atives", 129, 1, "", methodObject), new Among("log\u00EDes", -1, 3, "", methodObject), new Among("alleng\u00FCes", -1, 1, "", methodObject), new Among("icis", -1, 1, "", methodObject), new Among("\u00EDcis", -1, 1, "", methodObject), new Among("logis", -1, 3, "", methodObject), new Among("aris", -1, 1, "", methodObject), new Among("toris", -1, 1, "", methodObject), new Among("ls", -1, 1, "", methodObject), new Among("als", 138, 1, "", methodObject), new Among("ells", 138, 1, "", methodObject), new Among("ims", -1, 1, "", methodObject), new Among("\u00EDssims", 141, 1, "", methodObject), new Among("qu\u00EDssims", 142, 5, "", methodObject), new Among("ions", -1, 1, "", methodObject), new Among("cions", 144, 1, "", methodObject), new Among("acions", 145, 2, "", methodObject), new Among("esos", -1, 1, "", methodObject), new Among("osos", -1, 1, "", methodObject), new Among("assos", -1, 1, "", methodObject), new Among("issos", -1, 1, "", methodObject), new Among("ers", -1, 1, "", methodObject), new Among("ors", -1, 1, "", methodObject), new Among("dors", 152, 1, "", methodObject), new Among("adors", 153, 1, "", methodObject), new Among("idors", 153, 1, "", methodObject), new Among("ats", -1, 1, "", methodObject), new Among("itats", 156, 1, "", methodObject), new Among("bilitats", 157, 1, "", methodObject), new Among("ivitats", 157, 1, "", methodObject), new Among("ativitats", 159, 1, "", methodObject), new Among("\u00EFtats", 156, 1, "", methodObject), new Among("ets", -1, 1, "", methodObject), new Among("ants", -1, 1, "", methodObject), new Among("ents", -1, 1, "", methodObject), new Among("ments", 164, 1, "", methodObject), new Among("aments", 165, 1, "", methodObject), new Among("ots", -1, 1, "", methodObject), new Among("uts", -1, 1, "", methodObject), new Among("ius", -1, 1, "", methodObject), new Among("trius", 169, 1, "", methodObject), new Among("atius", 169, 1, "", methodObject), new Among("\u00E8s", -1, 1, "", methodObject), new Among("\u00E9s", -1, 1, "", methodObject), new Among("\u00EDs", -1, 1, "", methodObject), new Among("d\u00EDs", 174, 1, "", methodObject), new Among("\u00F3s", -1, 1, "", methodObject), new Among("itat", -1, 1, "", methodObject), new Among("bilitat", 177, 1, "", methodObject), new Among("ivitat", 177, 1, "", methodObject), new Among("ativitat", 179, 1, "", methodObject), new Among("\u00EFtat", -1, 1, "", methodObject), new Among("et", -1, 1, "", methodObject), new Among("ant", -1, 1, "", methodObject), new Among("ent", -1, 1, "", methodObject), new Among("ient", 184, 1, "", methodObject), new Among("ment", 184, 1, "", methodObject), new Among("ament", 186, 1, "", methodObject), new Among("isament", 187, 1, "", methodObject), new Among("ot", -1, 1, "", methodObject), new Among("isseu", -1, 1, "", methodObject), new Among("\u00ECsseu", -1, 1, "", methodObject), new Among("\u00EDsseu", -1, 1, "", methodObject), new Among("triu", -1, 1, "", methodObject), new Among("\u00EDssiu", -1, 1, "", methodObject), new Among("atiu", -1, 1, "", methodObject), new Among("\u00F3", -1, 1, "", methodObject), new Among("i\u00F3", 196, 1, "", methodObject), new Among("ci\u00F3", 197, 1, "", methodObject), new Among("aci\u00F3", 198, 1, "", methodObject) }; private final static Among a_3[] = { new Among("aba", -1, 1, "", methodObject), new Among("esca", -1, 1, "", methodObject), new Among("isca", -1, 1, "", methodObject), new Among("\u00EFsca", -1, 1, "", methodObject), new Among("ada", -1, 1, "", methodObject), new Among("ida", -1, 1, "", methodObject), new Among("uda", -1, 1, "", methodObject), new Among("\u00EFda", -1, 1, "", methodObject), new Among("ia", -1, 1, "", methodObject), new Among("aria", 8, 1, "", methodObject), new Among("iria", 8, 1, "", methodObject), new Among("ara", -1, 1, "", methodObject), new Among("iera", -1, 1, "", methodObject), new Among("ira", -1, 1, "", methodObject), new Among("adora", -1, 1, "", methodObject), new Among("\u00EFra", -1, 1, "", methodObject), new Among("ava", -1, 1, "", methodObject), new Among("ixa", -1, 1, "", methodObject), new Among("itza", -1, 1, "", methodObject), new Among("\u00EDa", -1, 1, "", methodObject), new Among("ar\u00EDa", 19, 1, "", methodObject), new Among("er\u00EDa", 19, 1, "", methodObject), new Among("ir\u00EDa", 19, 1, "", methodObject), new Among("\u00EFa", -1, 1, "", methodObject), new Among("isc", -1, 1, "", methodObject), new Among("\u00EFsc", -1, 1, "", methodObject), new Among("ad", -1, 1, "", methodObject), new Among("ed", -1, 1, "", methodObject), new Among("id", -1, 1, "", methodObject), new Among("ie", -1, 1, "", methodObject), new Among("re", -1, 1, "", methodObject), new Among("dre", 30, 1, "", methodObject), new Among("ase", -1, 1, "", methodObject), new Among("iese", -1, 1, "", methodObject), new Among("aste", -1, 1, "", methodObject), new Among("iste", -1, 1, "", methodObject), new Among("ii", -1, 1, "", methodObject), new Among("ini", -1, 1, "", methodObject), new Among("esqui", -1, 1, "", methodObject), new Among("eixi", -1, 1, "", methodObject), new Among("itzi", -1, 1, "", methodObject), new Among("am", -1, 1, "", methodObject), new Among("em", -1, 1, "", methodObject), new Among("arem", 42, 1, "", methodObject), new Among("irem", 42, 1, "", methodObject), new Among("\u00E0rem", 42, 1, "", methodObject), new Among("\u00EDrem", 42, 1, "", methodObject), new Among("\u00E0ssem", 42, 1, "", methodObject), new Among("\u00E9ssem", 42, 1, "", methodObject), new Among("iguem", 42, 1, "", methodObject), new Among("\u00EFguem", 42, 1, "", methodObject), new Among("avem", 42, 1, "", methodObject), new Among("\u00E0vem", 42, 1, "", methodObject), new Among("\u00E1vem", 42, 1, "", methodObject), new Among("ir\u00ECem", 42, 1, "", methodObject), new Among("\u00EDem", 42, 1, "", methodObject), new Among("ar\u00EDem", 55, 1, "", methodObject), new Among("ir\u00EDem", 55, 1, "", methodObject), new Among("assim", -1, 1, "", methodObject), new Among("essim", -1, 1, "", methodObject), new Among("issim", -1, 1, "", methodObject), new Among("\u00E0ssim", -1, 1, "", methodObject), new Among("\u00E8ssim", -1, 1, "", methodObject), new Among("\u00E9ssim", -1, 1, "", methodObject), new Among("\u00EDssim", -1, 1, "", methodObject), new Among("\u00EFm", -1, 1, "", methodObject), new Among("an", -1, 1, "", methodObject), new Among("aban", 66, 1, "", methodObject), new Among("arian", 66, 1, "", methodObject), new Among("aran", 66, 1, "", methodObject), new Among("ieran", 66, 1, "", methodObject), new Among("iran", 66, 1, "", methodObject), new Among("\u00EDan", 66, 1, "", methodObject), new Among("ar\u00EDan", 72, 1, "", methodObject), new Among("er\u00EDan", 72, 1, "", methodObject), new Among("ir\u00EDan", 72, 1, "", methodObject), new Among("en", -1, 1, "", methodObject), new Among("ien", 76, 1, "", methodObject), new Among("arien", 77, 1, "", methodObject), new Among("irien", 77, 1, "", methodObject), new Among("aren", 76, 1, "", methodObject), new Among("eren", 76, 1, "", methodObject), new Among("iren", 76, 1, "", methodObject), new Among("\u00E0ren", 76, 1, "", methodObject), new Among("\u00EFren", 76, 1, "", methodObject), new Among("asen", 76, 1, "", methodObject), new Among("iesen", 76, 1, "", methodObject), new Among("assen", 76, 1, "", methodObject), new Among("essen", 76, 1, "", methodObject), new Among("issen", 76, 1, "", methodObject), new Among("\u00E9ssen", 76, 1, "", methodObject), new Among("\u00EFssen", 76, 1, "", methodObject), new Among("esquen", 76, 1, "", methodObject), new Among("isquen", 76, 1, "", methodObject), new Among("\u00EFsquen", 76, 1, "", methodObject), new Among("aven", 76, 1, "", methodObject), new Among("ixen", 76, 1, "", methodObject), new Among("eixen", 96, 1, "", methodObject), new Among("\u00EFxen", 76, 1, "", methodObject), new Among("\u00EFen", 76, 1, "", methodObject), new Among("in", -1, 1, "", methodObject), new Among("inin", 100, 1, "", methodObject), new Among("sin", 100, 1, "", methodObject), new Among("isin", 102, 1, "", methodObject), new Among("assin", 102, 1, "", methodObject), new Among("essin", 102, 1, "", methodObject), new Among("issin", 102, 1, "", methodObject), new Among("\u00EFssin", 102, 1, "", methodObject), new Among("esquin", 100, 1, "", methodObject), new Among("eixin", 100, 1, "", methodObject), new Among("aron", -1, 1, "", methodObject), new Among("ieron", -1, 1, "", methodObject), new Among("ar\u00E1n", -1, 1, "", methodObject), new Among("er\u00E1n", -1, 1, "", methodObject), new Among("ir\u00E1n", -1, 1, "", methodObject), new Among("i\u00EFn", -1, 1, "", methodObject), new Among("ado", -1, 1, "", methodObject), new Among("ido", -1, 1, "", methodObject), new Among("ando", -1, 2, "", methodObject), new Among("iendo", -1, 1, "", methodObject), new Among("io", -1, 1, "", methodObject), new Among("ixo", -1, 1, "", methodObject), new Among("eixo", 121, 1, "", methodObject), new Among("\u00EFxo", -1, 1, "", methodObject), new Among("itzo", -1, 1, "", methodObject), new Among("ar", -1, 1, "", methodObject), new Among("tzar", 125, 1, "", methodObject), new Among("er", -1, 1, "", methodObject), new Among("eixer", 127, 1, "", methodObject), new Among("ir", -1, 1, "", methodObject), new Among("ador", -1, 1, "", methodObject), new Among("as", -1, 1, "", methodObject), new Among("abas", 131, 1, "", methodObject), new Among("adas", 131, 1, "", methodObject), new Among("idas", 131, 1, "", methodObject), new Among("aras", 131, 1, "", methodObject), new Among("ieras", 131, 1, "", methodObject), new Among("\u00EDas", 131, 1, "", methodObject), new Among("ar\u00EDas", 137, 1, "", methodObject), new Among("er\u00EDas", 137, 1, "", methodObject), new Among("ir\u00EDas", 137, 1, "", methodObject), new Among("ids", -1, 1, "", methodObject), new Among("es", -1, 1, "", methodObject), new Among("ades", 142, 1, "", methodObject), new Among("ides", 142, 1, "", methodObject), new Among("udes", 142, 1, "", methodObject), new Among("\u00EFdes", 142, 1, "", methodObject), new Among("atges", 142, 1, "", methodObject), new Among("ies", 142, 1, "", methodObject), new Among("aries", 148, 1, "", methodObject), new Among("iries", 148, 1, "", methodObject), new Among("ares", 142, 1, "", methodObject), new Among("ires", 142, 1, "", methodObject), new Among("adores", 142, 1, "", methodObject), new Among("\u00EFres", 142, 1, "", methodObject), new Among("ases", 142, 1, "", methodObject), new Among("ieses", 142, 1, "", methodObject), new Among("asses", 142, 1, "", methodObject), new Among("esses", 142, 1, "", methodObject), new Among("isses", 142, 1, "", methodObject), new Among("\u00EFsses", 142, 1, "", methodObject), new Among("ques", 142, 1, "", methodObject), new Among("esques", 161, 1, "", methodObject), new Among("\u00EFsques", 161, 1, "", methodObject), new Among("aves", 142, 1, "", methodObject), new Among("ixes", 142, 1, "", methodObject), new Among("eixes", 165, 1, "", methodObject), new Among("\u00EFxes", 142, 1, "", methodObject), new Among("\u00EFes", 142, 1, "", methodObject), new Among("abais", -1, 1, "", methodObject), new Among("arais", -1, 1, "", methodObject), new Among("ierais", -1, 1, "", methodObject), new Among("\u00EDais", -1, 1, "", methodObject), new Among("ar\u00EDais", 172, 1, "", methodObject), new Among("er\u00EDais", 172, 1, "", methodObject), new Among("ir\u00EDais", 172, 1, "", methodObject), new Among("aseis", -1, 1, "", methodObject), new Among("ieseis", -1, 1, "", methodObject), new Among("asteis", -1, 1, "", methodObject), new Among("isteis", -1, 1, "", methodObject), new Among("inis", -1, 1, "", methodObject), new Among("sis", -1, 1, "", methodObject), new Among("isis", 181, 1, "", methodObject), new Among("assis", 181, 1, "", methodObject), new Among("essis", 181, 1, "", methodObject), new Among("issis", 181, 1, "", methodObject), new Among("\u00EFssis", 181, 1, "", methodObject), new Among("esquis", -1, 1, "", methodObject), new Among("eixis", -1, 1, "", methodObject), new Among("itzis", -1, 1, "", methodObject), new Among("\u00E1is", -1, 1, "", methodObject), new Among("ar\u00E9is", -1, 1, "", methodObject), new Among("er\u00E9is", -1, 1, "", methodObject), new Among("ir\u00E9is", -1, 1, "", methodObject), new Among("ams", -1, 1, "", methodObject), new Among("ados", -1, 1, "", methodObject), new Among("idos", -1, 1, "", methodObject), new Among("amos", -1, 1, "", methodObject), new Among("\u00E1bamos", 197, 1, "", methodObject), new Among("\u00E1ramos", 197, 1, "", methodObject), new Among("i\u00E9ramos", 197, 1, "", methodObject), new Among("\u00EDamos", 197, 1, "", methodObject), new Among("ar\u00EDamos", 201, 1, "", methodObject), new Among("er\u00EDamos", 201, 1, "", methodObject), new Among("ir\u00EDamos", 201, 1, "", methodObject), new Among("aremos", -1, 1, "", methodObject), new Among("eremos", -1, 1, "", methodObject), new Among("iremos", -1, 1, "", methodObject), new Among("\u00E1semos", -1, 1, "", methodObject), new Among("i\u00E9semos", -1, 1, "", methodObject), new Among("imos", -1, 1, "", methodObject), new Among("adors", -1, 1, "", methodObject), new Among("ass", -1, 1, "", methodObject), new Among("erass", 212, 1, "", methodObject), new Among("ess", -1, 1, "", methodObject), new Among("ats", -1, 1, "", methodObject), new Among("its", -1, 1, "", methodObject), new Among("ents", -1, 1, "", methodObject), new Among("\u00E0s", -1, 1, "", methodObject), new Among("ar\u00E0s", 218, 1, "", methodObject), new Among("ir\u00E0s", 218, 1, "", methodObject), new Among("ar\u00E1s", -1, 1, "", methodObject), new Among("er\u00E1s", -1, 1, "", methodObject), new Among("ir\u00E1s", -1, 1, "", methodObject), new Among("\u00E9s", -1, 1, "", methodObject), new Among("ar\u00E9s", 224, 1, "", methodObject), new Among("\u00EDs", -1, 1, "", methodObject), new Among("i\u00EFs", -1, 1, "", methodObject), new Among("at", -1, 1, "", methodObject), new Among("it", -1, 1, "", methodObject), new Among("ant", -1, 1, "", methodObject), new Among("ent", -1, 1, "", methodObject), new Among("int", -1, 1, "", methodObject), new Among("ut", -1, 1, "", methodObject), new Among("\u00EFt", -1, 1, "", methodObject), new Among("au", -1, 1, "", methodObject), new Among("erau", 235, 1, "", methodObject), new Among("ieu", -1, 1, "", methodObject), new Among("ineu", -1, 1, "", methodObject), new Among("areu", -1, 1, "", methodObject), new Among("ireu", -1, 1, "", methodObject), new Among("\u00E0reu", -1, 1, "", methodObject), new Among("\u00EDreu", -1, 1, "", methodObject), new Among("asseu", -1, 1, "", methodObject), new Among("esseu", -1, 1, "", methodObject), new Among("eresseu", 244, 1, "", methodObject), new Among("\u00E0sseu", -1, 1, "", methodObject), new Among("\u00E9sseu", -1, 1, "", methodObject), new Among("igueu", -1, 1, "", methodObject), new Among("\u00EFgueu", -1, 1, "", methodObject), new Among("\u00E0veu", -1, 1, "", methodObject), new Among("\u00E1veu", -1, 1, "", methodObject), new Among("itzeu", -1, 1, "", methodObject), new Among("\u00ECeu", -1, 1, "", methodObject), new Among("ir\u00ECeu", 253, 1, "", methodObject), new Among("\u00EDeu", -1, 1, "", methodObject), new Among("ar\u00EDeu", 255, 1, "", methodObject), new Among("ir\u00EDeu", 255, 1, "", methodObject), new Among("assiu", -1, 1, "", methodObject), new Among("issiu", -1, 1, "", methodObject), new Among("\u00E0ssiu", -1, 1, "", methodObject), new Among("\u00E8ssiu", -1, 1, "", methodObject), new Among("\u00E9ssiu", -1, 1, "", methodObject), new Among("\u00EDssiu", -1, 1, "", methodObject), new Among("\u00EFu", -1, 1, "", methodObject), new Among("ix", -1, 1, "", methodObject), new Among("eix", 265, 1, "", methodObject), new Among("\u00EFx", -1, 1, "", methodObject), new Among("itz", -1, 1, "", methodObject), new Among("i\u00E0", -1, 1, "", methodObject), new Among("ar\u00E0", -1, 1, "", methodObject), new Among("ir\u00E0", -1, 1, "", methodObject), new Among("itz\u00E0", -1, 1, "", methodObject), new Among("ar\u00E1", -1, 1, "", methodObject), new Among("er\u00E1", -1, 1, "", methodObject), new Among("ir\u00E1", -1, 1, "", methodObject), new Among("ir\u00E8", -1, 1, "", methodObject), new Among("ar\u00E9", -1, 1, "", methodObject), new Among("er\u00E9", -1, 1, "", methodObject), new Among("ir\u00E9", -1, 1, "", methodObject), new Among("\u00ED", -1, 1, "", methodObject), new Among("i\u00EF", -1, 1, "", methodObject), new Among("i\u00F3", -1, 1, "", methodObject) }; private final static Among a_4[] = { new Among("a", -1, 1, "", methodObject), new Among("e", -1, 1, "", methodObject), new Among("i", -1, 1, "", methodObject), new Among("\u00EFn", -1, 1, "", methodObject), new Among("o", -1, 1, "", methodObject), new Among("ir", -1, 1, "", methodObject), new Among("s", -1, 1, "", methodObject), new Among("is", 6, 1, "", methodObject), new Among("os", 6, 1, "", methodObject), new Among("\u00EFs", 6, 1, "", methodObject), new Among("it", -1, 1, "", methodObject), new Among("eu", -1, 1, "", methodObject), new Among("iu", -1, 1, "", methodObject), new Among("iqu", -1, 2, "", methodObject), new Among("itz", -1, 1, "", methodObject), new Among("\u00E0", -1, 1, "", methodObject), new Among("\u00E1", -1, 1, "", methodObject), new Among("\u00E9", -1, 1, "", methodObject), new Among("\u00EC", -1, 1, "", methodObject), new Among("\u00ED", -1, 1, "", methodObject), new Among("\u00EF", -1, 1, "", methodObject), new Among("\u00F3", -1, 1, "", methodObject) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10}; private int I_p2; private int I_p1; private void copy_from(catalanStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_mark_regions() { int v_1; // (, line 37 I_p1 = limit; I_p2 = limit; // do, line 42 v_1 = cursor; lab0: do { // (, line 42 // gopast, line 43 golab1: while (true) { lab2: do { if (!(in_grouping(g_v, 97, 252))) { break lab2; } break golab1; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 43 golab3: while (true) { lab4: do { if (!(out_grouping(g_v, 97, 252))) { break lab4; } break golab3; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark p1, line 43 I_p1 = cursor; // gopast, line 44 golab5: while (true) { lab6: do { if (!(in_grouping(g_v, 97, 252))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 44 golab7: while (true) { lab8: do { if (!(out_grouping(g_v, 97, 252))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark p2, line 44 I_p2 = cursor; } while (false); cursor = v_1; return true; } private boolean r_cleaning() { int among_var; int v_1; // repeat, line 48 replab0: while (true) { v_1 = cursor; lab1: do { // (, line 48 // [, line 49 bra = cursor; // substring, line 49 among_var = find_among(a_0, 13); if (among_var == 0) { break lab1; } // ], line 49 ket = cursor; switch (among_var) { case 0: break lab1; case 1: // (, line 50 // <-, line 50 slice_from("a"); break; case 2: // (, line 51 // <-, line 51 slice_from("a"); break; case 3: // (, line 52 // <-, line 52 slice_from("e"); break; case 4: // (, line 53 // <-, line 53 slice_from("e"); break; case 5: // (, line 54 // <-, line 54 slice_from("i"); break; case 6: // (, line 55 // <-, line 55 slice_from("i"); break; case 7: // (, line 56 // <-, line 56 slice_from("o"); break; case 8: // (, line 57 // <-, line 57 slice_from("o"); break; case 9: // (, line 58 // <-, line 58 slice_from("u"); break; case 10: // (, line 59 // <-, line 59 slice_from("u"); break; case 11: // (, line 60 // <-, line 60 slice_from("i"); break; case 12: // (, line 61 // <-, line 61 slice_from("."); break; case 13: // (, line 62 // next, line 62 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_attached_pronoun() { int among_var; // (, line 71 // [, line 72 ket = cursor; // substring, line 72 among_var = find_among_b(a_1, 39); if (among_var == 0) { return false; } // ], line 72 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 82 // call R1, line 82 if (!r_R1()) { return false; } // delete, line 82 slice_del(); break; } return true; } private boolean r_standard_suffix() { int among_var; // (, line 86 // [, line 87 ket = cursor; // substring, line 87 among_var = find_among_b(a_2, 200); if (among_var == 0) { return false; } // ], line 87 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 111 // call R1, line 111 if (!r_R1()) { return false; } // delete, line 111 slice_del(); break; case 2: // (, line 113 // call R2, line 113 if (!r_R2()) { return false; } // delete, line 113 slice_del(); break; case 3: // (, line 115 // call R2, line 115 if (!r_R2()) { return false; } // <-, line 115 slice_from("log"); break; case 4: // (, line 117 // call R2, line 117 if (!r_R2()) { return false; } // <-, line 117 slice_from("ic"); break; case 5: // (, line 119 // call R1, line 119 if (!r_R1()) { return false; } // <-, line 119 slice_from("c"); break; } return true; } private boolean r_verb_suffix() { int among_var; // (, line 123 // [, line 124 ket = cursor; // substring, line 124 among_var = find_among_b(a_3, 283); if (among_var == 0) { return false; } // ], line 124 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 169 // call R1, line 169 if (!r_R1()) { return false; } // delete, line 169 slice_del(); break; case 2: // (, line 171 // call R2, line 171 if (!r_R2()) { return false; } // delete, line 171 slice_del(); break; } return true; } private boolean r_residual_suffix() { int among_var; // (, line 175 // [, line 176 ket = cursor; // substring, line 176 among_var = find_among_b(a_4, 22); if (among_var == 0) { return false; } // ], line 176 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 179 // call R1, line 179 if (!r_R1()) { return false; } // delete, line 179 slice_del(); break; case 2: // (, line 181 // call R1, line 181 if (!r_R1()) { return false; } // <-, line 181 slice_from("ic"); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; // (, line 186 // do, line 187 v_1 = cursor; lab0: do { // call mark_regions, line 187 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 188 limit_backward = cursor; cursor = limit; // (, line 188 // do, line 189 v_2 = limit - cursor; lab1: do { // call attached_pronoun, line 189 if (!r_attached_pronoun()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 190 v_3 = limit - cursor; lab2: do { // (, line 190 // or, line 190 lab3: do { v_4 = limit - cursor; lab4: do { // call standard_suffix, line 190 if (!r_standard_suffix()) { break lab4; } break lab3; } while (false); cursor = limit - v_4; // call verb_suffix, line 191 if (!r_verb_suffix()) { break lab2; } } while (false); } while (false); cursor = limit - v_3; // do, line 193 v_5 = limit - cursor; lab5: do { // call residual_suffix, line 193 if (!r_residual_suffix()) { break lab5; } } while (false); cursor = limit - v_5; cursor = limit_backward; // do, line 195 v_6 = cursor; lab6: do { // call cleaning, line 195 if (!r_cleaning()) { break lab6; } } while (false); cursor = v_6; return true; } public boolean equals(Object o) { return o instanceof catalanStemmer; } public int hashCode() { return catalanStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/englishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/englishStemmer.j0100664 0001750 0001750 00000155640 14135770370 034215 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class englishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static englishStemmer methodObject = new englishStemmer (); private final static Among a_0[] = { new Among ( "arsen", -1, -1, "", methodObject ), new Among ( "commun", -1, -1, "", methodObject ), new Among ( "gener", -1, -1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "'", -1, 1, "", methodObject ), new Among ( "'s'", 0, 1, "", methodObject ), new Among ( "'s", -1, 1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ied", -1, 2, "", methodObject ), new Among ( "s", -1, 3, "", methodObject ), new Among ( "ies", 1, 2, "", methodObject ), new Among ( "sses", 1, 1, "", methodObject ), new Among ( "ss", 1, -1, "", methodObject ), new Among ( "us", 1, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "bb", 0, 2, "", methodObject ), new Among ( "dd", 0, 2, "", methodObject ), new Among ( "ff", 0, 2, "", methodObject ), new Among ( "gg", 0, 2, "", methodObject ), new Among ( "bl", 0, 1, "", methodObject ), new Among ( "mm", 0, 2, "", methodObject ), new Among ( "nn", 0, 2, "", methodObject ), new Among ( "pp", 0, 2, "", methodObject ), new Among ( "rr", 0, 2, "", methodObject ), new Among ( "at", 0, 1, "", methodObject ), new Among ( "tt", 0, 2, "", methodObject ), new Among ( "iz", 0, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "ed", -1, 2, "", methodObject ), new Among ( "eed", 0, 1, "", methodObject ), new Among ( "ing", -1, 2, "", methodObject ), new Among ( "edly", -1, 2, "", methodObject ), new Among ( "eedly", 3, 1, "", methodObject ), new Among ( "ingly", -1, 2, "", methodObject ) }; private final static Among a_5[] = { new Among ( "anci", -1, 3, "", methodObject ), new Among ( "enci", -1, 2, "", methodObject ), new Among ( "ogi", -1, 13, "", methodObject ), new Among ( "li", -1, 16, "", methodObject ), new Among ( "bli", 3, 12, "", methodObject ), new Among ( "abli", 4, 4, "", methodObject ), new Among ( "alli", 3, 8, "", methodObject ), new Among ( "fulli", 3, 14, "", methodObject ), new Among ( "lessli", 3, 15, "", methodObject ), new Among ( "ousli", 3, 10, "", methodObject ), new Among ( "entli", 3, 5, "", methodObject ), new Among ( "aliti", -1, 8, "", methodObject ), new Among ( "biliti", -1, 12, "", methodObject ), new Among ( "iviti", -1, 11, "", methodObject ), new Among ( "tional", -1, 1, "", methodObject ), new Among ( "ational", 14, 7, "", methodObject ), new Among ( "alism", -1, 8, "", methodObject ), new Among ( "ation", -1, 7, "", methodObject ), new Among ( "ization", 17, 6, "", methodObject ), new Among ( "izer", -1, 6, "", methodObject ), new Among ( "ator", -1, 7, "", methodObject ), new Among ( "iveness", -1, 11, "", methodObject ), new Among ( "fulness", -1, 9, "", methodObject ), new Among ( "ousness", -1, 10, "", methodObject ) }; private final static Among a_6[] = { new Among ( "icate", -1, 4, "", methodObject ), new Among ( "ative", -1, 6, "", methodObject ), new Among ( "alize", -1, 3, "", methodObject ), new Among ( "iciti", -1, 4, "", methodObject ), new Among ( "ical", -1, 4, "", methodObject ), new Among ( "tional", -1, 1, "", methodObject ), new Among ( "ational", 5, 2, "", methodObject ), new Among ( "ful", -1, 5, "", methodObject ), new Among ( "ness", -1, 5, "", methodObject ) }; private final static Among a_7[] = { new Among ( "ic", -1, 1, "", methodObject ), new Among ( "ance", -1, 1, "", methodObject ), new Among ( "ence", -1, 1, "", methodObject ), new Among ( "able", -1, 1, "", methodObject ), new Among ( "ible", -1, 1, "", methodObject ), new Among ( "ate", -1, 1, "", methodObject ), new Among ( "ive", -1, 1, "", methodObject ), new Among ( "ize", -1, 1, "", methodObject ), new Among ( "iti", -1, 1, "", methodObject ), new Among ( "al", -1, 1, "", methodObject ), new Among ( "ism", -1, 1, "", methodObject ), new Among ( "ion", -1, 2, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "ous", -1, 1, "", methodObject ), new Among ( "ant", -1, 1, "", methodObject ), new Among ( "ent", -1, 1, "", methodObject ), new Among ( "ment", 15, 1, "", methodObject ), new Among ( "ement", 16, 1, "", methodObject ) }; private final static Among a_8[] = { new Among ( "e", -1, 1, "", methodObject ), new Among ( "l", -1, 2, "", methodObject ) }; private final static Among a_9[] = { new Among ( "succeed", -1, -1, "", methodObject ), new Among ( "proceed", -1, -1, "", methodObject ), new Among ( "exceed", -1, -1, "", methodObject ), new Among ( "canning", -1, -1, "", methodObject ), new Among ( "inning", -1, -1, "", methodObject ), new Among ( "earring", -1, -1, "", methodObject ), new Among ( "herring", -1, -1, "", methodObject ), new Among ( "outing", -1, -1, "", methodObject ) }; private final static Among a_10[] = { new Among ( "andes", -1, -1, "", methodObject ), new Among ( "atlas", -1, -1, "", methodObject ), new Among ( "bias", -1, -1, "", methodObject ), new Among ( "cosmos", -1, -1, "", methodObject ), new Among ( "dying", -1, 3, "", methodObject ), new Among ( "early", -1, 9, "", methodObject ), new Among ( "gently", -1, 7, "", methodObject ), new Among ( "howe", -1, -1, "", methodObject ), new Among ( "idly", -1, 6, "", methodObject ), new Among ( "lying", -1, 4, "", methodObject ), new Among ( "news", -1, -1, "", methodObject ), new Among ( "only", -1, 10, "", methodObject ), new Among ( "singly", -1, 11, "", methodObject ), new Among ( "skies", -1, 2, "", methodObject ), new Among ( "skis", -1, 1, "", methodObject ), new Among ( "sky", -1, -1, "", methodObject ), new Among ( "tying", -1, 5, "", methodObject ), new Among ( "ugly", -1, 8, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1 }; private static final char g_v_WXY[] = {1, 17, 65, 208, 1 }; private static final char g_valid_LI[] = {55, 141, 2 }; private boolean B_Y_found; private int I_p2; private int I_p1; private void copy_from(englishStemmer other) { B_Y_found = other.B_Y_found; I_p2 = other.I_p2; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_prelude() { int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 25 // unset Y_found, line 26 B_Y_found = false; // do, line 27 v_1 = cursor; lab0: do { // (, line 27 // [, line 27 bra = cursor; // literal, line 27 if (!(eq_s(1, "'"))) { break lab0; } // ], line 27 ket = cursor; // delete, line 27 slice_del(); } while (false); cursor = v_1; // do, line 28 v_2 = cursor; lab1: do { // (, line 28 // [, line 28 bra = cursor; // literal, line 28 if (!(eq_s(1, "y"))) { break lab1; } // ], line 28 ket = cursor; // <-, line 28 slice_from("Y"); // set Y_found, line 28 B_Y_found = true; } while (false); cursor = v_2; // do, line 29 v_3 = cursor; lab2: do { // repeat, line 29 replab3: while(true) { v_4 = cursor; lab4: do { // (, line 29 // goto, line 29 golab5: while(true) { v_5 = cursor; lab6: do { // (, line 29 if (!(in_grouping(g_v, 97, 121))) { break lab6; } // [, line 29 bra = cursor; // literal, line 29 if (!(eq_s(1, "y"))) { break lab6; } // ], line 29 ket = cursor; cursor = v_5; break golab5; } while (false); cursor = v_5; if (cursor >= limit) { break lab4; } cursor++; } // <-, line 29 slice_from("Y"); // set Y_found, line 29 B_Y_found = true; continue replab3; } while (false); cursor = v_4; break replab3; } } while (false); cursor = v_3; return true; } private boolean r_mark_regions() { int v_1; int v_2; // (, line 32 I_p1 = limit; I_p2 = limit; // do, line 35 v_1 = cursor; lab0: do { // (, line 35 // or, line 41 lab1: do { v_2 = cursor; lab2: do { // among, line 36 if (find_among(a_0, 3) == 0) { break lab2; } break lab1; } while (false); cursor = v_2; // (, line 41 // gopast, line 41 golab3: while(true) { lab4: do { if (!(in_grouping(g_v, 97, 121))) { break lab4; } break golab3; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 41 golab5: while(true) { lab6: do { if (!(out_grouping(g_v, 97, 121))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab0; } cursor++; } } while (false); // setmark p1, line 42 I_p1 = cursor; // gopast, line 43 golab7: while(true) { lab8: do { if (!(in_grouping(g_v, 97, 121))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 43 golab9: while(true) { lab10: do { if (!(out_grouping(g_v, 97, 121))) { break lab10; } break golab9; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark p2, line 43 I_p2 = cursor; } while (false); cursor = v_1; return true; } private boolean r_shortv() { int v_1; // (, line 49 // or, line 51 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 50 if (!(out_grouping_b(g_v_WXY, 89, 121))) { break lab1; } if (!(in_grouping_b(g_v, 97, 121))) { break lab1; } if (!(out_grouping_b(g_v, 97, 121))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // (, line 52 if (!(out_grouping_b(g_v, 97, 121))) { return false; } if (!(in_grouping_b(g_v, 97, 121))) { return false; } // atlimit, line 52 if (cursor > limit_backward) { return false; } } while (false); return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_Step_1a() { int among_var; int v_1; int v_2; // (, line 58 // try, line 59 v_1 = limit - cursor; lab0: do { // (, line 59 // [, line 60 ket = cursor; // substring, line 60 among_var = find_among_b(a_1, 3); if (among_var == 0) { cursor = limit - v_1; break lab0; } // ], line 60 bra = cursor; switch(among_var) { case 0: cursor = limit - v_1; break lab0; case 1: // (, line 62 // delete, line 62 slice_del(); break; } } while (false); // [, line 65 ket = cursor; // substring, line 65 among_var = find_among_b(a_2, 6); if (among_var == 0) { return false; } // ], line 65 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 66 // <-, line 66 slice_from("ss"); break; case 2: // (, line 68 // or, line 68 lab1: do { v_2 = limit - cursor; lab2: do { // (, line 68 // hop, line 68 { int c = cursor - 2; if (limit_backward > c || c > limit) { break lab2; } cursor = c; } // <-, line 68 slice_from("i"); break lab1; } while (false); cursor = limit - v_2; // <-, line 68 slice_from("ie"); } while (false); break; case 3: // (, line 69 // next, line 69 if (cursor <= limit_backward) { return false; } cursor--; // gopast, line 69 golab3: while(true) { lab4: do { if (!(in_grouping_b(g_v, 97, 121))) { break lab4; } break golab3; } while (false); if (cursor <= limit_backward) { return false; } cursor--; } // delete, line 69 slice_del(); break; } return true; } private boolean r_Step_1b() { int among_var; int v_1; int v_3; int v_4; // (, line 74 // [, line 75 ket = cursor; // substring, line 75 among_var = find_among_b(a_4, 6); if (among_var == 0) { return false; } // ], line 75 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 77 // call R1, line 77 if (!r_R1()) { return false; } // <-, line 77 slice_from("ee"); break; case 2: // (, line 79 // test, line 80 v_1 = limit - cursor; // gopast, line 80 golab0: while(true) { lab1: do { if (!(in_grouping_b(g_v, 97, 121))) { break lab1; } break golab0; } while (false); if (cursor <= limit_backward) { return false; } cursor--; } cursor = limit - v_1; // delete, line 80 slice_del(); // test, line 81 v_3 = limit - cursor; // substring, line 81 among_var = find_among_b(a_3, 13); if (among_var == 0) { return false; } cursor = limit - v_3; switch(among_var) { case 0: return false; case 1: // (, line 83 // <+, line 83 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; case 2: // (, line 86 // [, line 86 ket = cursor; // next, line 86 if (cursor <= limit_backward) { return false; } cursor--; // ], line 86 bra = cursor; // delete, line 86 slice_del(); break; case 3: // (, line 87 // atmark, line 87 if (cursor != I_p1) { return false; } // test, line 87 v_4 = limit - cursor; // call shortv, line 87 if (!r_shortv()) { return false; } cursor = limit - v_4; // <+, line 87 { int c = cursor; insert(cursor, cursor, "e"); cursor = c; } break; } break; } return true; } private boolean r_Step_1c() { int v_1; int v_2; // (, line 93 // [, line 94 ket = cursor; // or, line 94 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 94 if (!(eq_s_b(1, "y"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 94 if (!(eq_s_b(1, "Y"))) { return false; } } while (false); // ], line 94 bra = cursor; if (!(out_grouping_b(g_v, 97, 121))) { return false; } // not, line 95 { v_2 = limit - cursor; lab2: do { // atlimit, line 95 if (cursor > limit_backward) { break lab2; } return false; } while (false); cursor = limit - v_2; } // <-, line 96 slice_from("i"); return true; } private boolean r_Step_2() { int among_var; // (, line 99 // [, line 100 ket = cursor; // substring, line 100 among_var = find_among_b(a_5, 24); if (among_var == 0) { return false; } // ], line 100 bra = cursor; // call R1, line 100 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 101 // <-, line 101 slice_from("tion"); break; case 2: // (, line 102 // <-, line 102 slice_from("ence"); break; case 3: // (, line 103 // <-, line 103 slice_from("ance"); break; case 4: // (, line 104 // <-, line 104 slice_from("able"); break; case 5: // (, line 105 // <-, line 105 slice_from("ent"); break; case 6: // (, line 107 // <-, line 107 slice_from("ize"); break; case 7: // (, line 109 // <-, line 109 slice_from("ate"); break; case 8: // (, line 111 // <-, line 111 slice_from("al"); break; case 9: // (, line 112 // <-, line 112 slice_from("ful"); break; case 10: // (, line 114 // <-, line 114 slice_from("ous"); break; case 11: // (, line 116 // <-, line 116 slice_from("ive"); break; case 12: // (, line 118 // <-, line 118 slice_from("ble"); break; case 13: // (, line 119 // literal, line 119 if (!(eq_s_b(1, "l"))) { return false; } // <-, line 119 slice_from("og"); break; case 14: // (, line 120 // <-, line 120 slice_from("ful"); break; case 15: // (, line 121 // <-, line 121 slice_from("less"); break; case 16: // (, line 122 if (!(in_grouping_b(g_valid_LI, 99, 116))) { return false; } // delete, line 122 slice_del(); break; } return true; } private boolean r_Step_3() { int among_var; // (, line 126 // [, line 127 ket = cursor; // substring, line 127 among_var = find_among_b(a_6, 9); if (among_var == 0) { return false; } // ], line 127 bra = cursor; // call R1, line 127 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 128 // <-, line 128 slice_from("tion"); break; case 2: // (, line 129 // <-, line 129 slice_from("ate"); break; case 3: // (, line 130 // <-, line 130 slice_from("al"); break; case 4: // (, line 132 // <-, line 132 slice_from("ic"); break; case 5: // (, line 134 // delete, line 134 slice_del(); break; case 6: // (, line 136 // call R2, line 136 if (!r_R2()) { return false; } // delete, line 136 slice_del(); break; } return true; } private boolean r_Step_4() { int among_var; int v_1; // (, line 140 // [, line 141 ket = cursor; // substring, line 141 among_var = find_among_b(a_7, 18); if (among_var == 0) { return false; } // ], line 141 bra = cursor; // call R2, line 141 if (!r_R2()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 144 // delete, line 144 slice_del(); break; case 2: // (, line 145 // or, line 145 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 145 if (!(eq_s_b(1, "s"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 145 if (!(eq_s_b(1, "t"))) { return false; } } while (false); // delete, line 145 slice_del(); break; } return true; } private boolean r_Step_5() { int among_var; int v_1; int v_2; // (, line 149 // [, line 150 ket = cursor; // substring, line 150 among_var = find_among_b(a_8, 2); if (among_var == 0) { return false; } // ], line 150 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 151 // or, line 151 lab0: do { v_1 = limit - cursor; lab1: do { // call R2, line 151 if (!r_R2()) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // (, line 151 // call R1, line 151 if (!r_R1()) { return false; } // not, line 151 { v_2 = limit - cursor; lab2: do { // call shortv, line 151 if (!r_shortv()) { break lab2; } return false; } while (false); cursor = limit - v_2; } } while (false); // delete, line 151 slice_del(); break; case 2: // (, line 152 // call R2, line 152 if (!r_R2()) { return false; } // literal, line 152 if (!(eq_s_b(1, "l"))) { return false; } // delete, line 152 slice_del(); break; } return true; } private boolean r_exception2() { // (, line 156 // [, line 158 ket = cursor; // substring, line 158 if (find_among_b(a_9, 8) == 0) { return false; } // ], line 158 bra = cursor; // atlimit, line 158 if (cursor > limit_backward) { return false; } return true; } private boolean r_exception1() { int among_var; // (, line 168 // [, line 170 bra = cursor; // substring, line 170 among_var = find_among(a_10, 18); if (among_var == 0) { return false; } // ], line 170 ket = cursor; // atlimit, line 170 if (cursor < limit) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 174 // <-, line 174 slice_from("ski"); break; case 2: // (, line 175 // <-, line 175 slice_from("sky"); break; case 3: // (, line 176 // <-, line 176 slice_from("die"); break; case 4: // (, line 177 // <-, line 177 slice_from("lie"); break; case 5: // (, line 178 // <-, line 178 slice_from("tie"); break; case 6: // (, line 182 // <-, line 182 slice_from("idl"); break; case 7: // (, line 183 // <-, line 183 slice_from("gentl"); break; case 8: // (, line 184 // <-, line 184 slice_from("ugli"); break; case 9: // (, line 185 // <-, line 185 slice_from("earli"); break; case 10: // (, line 186 // <-, line 186 slice_from("onli"); break; case 11: // (, line 187 // <-, line 187 slice_from("singl"); break; } return true; } private boolean r_postlude() { int v_1; int v_2; // (, line 203 // Boolean test Y_found, line 203 if (!(B_Y_found)) { return false; } // repeat, line 203 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 203 // goto, line 203 golab2: while(true) { v_2 = cursor; lab3: do { // (, line 203 // [, line 203 bra = cursor; // literal, line 203 if (!(eq_s(1, "Y"))) { break lab3; } // ], line 203 ket = cursor; cursor = v_2; break golab2; } while (false); cursor = v_2; if (cursor >= limit) { break lab1; } cursor++; } // <-, line 203 slice_from("y"); continue replab0; } while (false); cursor = v_1; break replab0; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; int v_12; int v_13; // (, line 205 // or, line 207 lab0: do { v_1 = cursor; lab1: do { // call exception1, line 207 if (!r_exception1()) { break lab1; } break lab0; } while (false); cursor = v_1; lab2: do { // not, line 208 { v_2 = cursor; lab3: do { // hop, line 208 { int c = cursor + 3; if (0 > c || c > limit) { break lab3; } cursor = c; } break lab2; } while (false); cursor = v_2; } break lab0; } while (false); cursor = v_1; // (, line 208 // do, line 209 v_3 = cursor; lab4: do { // call prelude, line 209 if (!r_prelude()) { break lab4; } } while (false); cursor = v_3; // do, line 210 v_4 = cursor; lab5: do { // call mark_regions, line 210 if (!r_mark_regions()) { break lab5; } } while (false); cursor = v_4; // backwards, line 211 limit_backward = cursor; cursor = limit; // (, line 211 // do, line 213 v_5 = limit - cursor; lab6: do { // call Step_1a, line 213 if (!r_Step_1a()) { break lab6; } } while (false); cursor = limit - v_5; // or, line 215 lab7: do { v_6 = limit - cursor; lab8: do { // call exception2, line 215 if (!r_exception2()) { break lab8; } break lab7; } while (false); cursor = limit - v_6; // (, line 215 // do, line 217 v_7 = limit - cursor; lab9: do { // call Step_1b, line 217 if (!r_Step_1b()) { break lab9; } } while (false); cursor = limit - v_7; // do, line 218 v_8 = limit - cursor; lab10: do { // call Step_1c, line 218 if (!r_Step_1c()) { break lab10; } } while (false); cursor = limit - v_8; // do, line 220 v_9 = limit - cursor; lab11: do { // call Step_2, line 220 if (!r_Step_2()) { break lab11; } } while (false); cursor = limit - v_9; // do, line 221 v_10 = limit - cursor; lab12: do { // call Step_3, line 221 if (!r_Step_3()) { break lab12; } } while (false); cursor = limit - v_10; // do, line 222 v_11 = limit - cursor; lab13: do { // call Step_4, line 222 if (!r_Step_4()) { break lab13; } } while (false); cursor = limit - v_11; // do, line 224 v_12 = limit - cursor; lab14: do { // call Step_5, line 224 if (!r_Step_5()) { break lab14; } } while (false); cursor = limit - v_12; } while (false); cursor = limit_backward; // do, line 227 v_13 = cursor; lab15: do { // call postlude, line 227 if (!r_postlude()) { break lab15; } } while (false); cursor = v_13; } while (false); return true; } public boolean equals( Object o ) { return o instanceof englishStemmer; } public int hashCode() { return englishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/finnishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/finnishStemmer.j0100664 0001750 0001750 00000123456 14135770370 034222 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class finnishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static finnishStemmer methodObject = new finnishStemmer (); private final static Among a_0[] = { new Among ( "pa", -1, 1, "", methodObject ), new Among ( "sti", -1, 2, "", methodObject ), new Among ( "kaan", -1, 1, "", methodObject ), new Among ( "han", -1, 1, "", methodObject ), new Among ( "kin", -1, 1, "", methodObject ), new Among ( "h\u00E4n", -1, 1, "", methodObject ), new Among ( "k\u00E4\u00E4n", -1, 1, "", methodObject ), new Among ( "ko", -1, 1, "", methodObject ), new Among ( "p\u00E4", -1, 1, "", methodObject ), new Among ( "k\u00F6", -1, 1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "lla", -1, -1, "", methodObject ), new Among ( "na", -1, -1, "", methodObject ), new Among ( "ssa", -1, -1, "", methodObject ), new Among ( "ta", -1, -1, "", methodObject ), new Among ( "lta", 3, -1, "", methodObject ), new Among ( "sta", 3, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ll\u00E4", -1, -1, "", methodObject ), new Among ( "n\u00E4", -1, -1, "", methodObject ), new Among ( "ss\u00E4", -1, -1, "", methodObject ), new Among ( "t\u00E4", -1, -1, "", methodObject ), new Among ( "lt\u00E4", 3, -1, "", methodObject ), new Among ( "st\u00E4", 3, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "lle", -1, -1, "", methodObject ), new Among ( "ine", -1, -1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "nsa", -1, 3, "", methodObject ), new Among ( "mme", -1, 3, "", methodObject ), new Among ( "nne", -1, 3, "", methodObject ), new Among ( "ni", -1, 2, "", methodObject ), new Among ( "si", -1, 1, "", methodObject ), new Among ( "an", -1, 4, "", methodObject ), new Among ( "en", -1, 6, "", methodObject ), new Among ( "\u00E4n", -1, 5, "", methodObject ), new Among ( "ns\u00E4", -1, 3, "", methodObject ) }; private final static Among a_5[] = { new Among ( "aa", -1, -1, "", methodObject ), new Among ( "ee", -1, -1, "", methodObject ), new Among ( "ii", -1, -1, "", methodObject ), new Among ( "oo", -1, -1, "", methodObject ), new Among ( "uu", -1, -1, "", methodObject ), new Among ( "\u00E4\u00E4", -1, -1, "", methodObject ), new Among ( "\u00F6\u00F6", -1, -1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "a", -1, 8, "", methodObject ), new Among ( "lla", 0, -1, "", methodObject ), new Among ( "na", 0, -1, "", methodObject ), new Among ( "ssa", 0, -1, "", methodObject ), new Among ( "ta", 0, -1, "", methodObject ), new Among ( "lta", 4, -1, "", methodObject ), new Among ( "sta", 4, -1, "", methodObject ), new Among ( "tta", 4, 9, "", methodObject ), new Among ( "lle", -1, -1, "", methodObject ), new Among ( "ine", -1, -1, "", methodObject ), new Among ( "ksi", -1, -1, "", methodObject ), new Among ( "n", -1, 7, "", methodObject ), new Among ( "han", 11, 1, "", methodObject ), new Among ( "den", 11, -1, "r_VI", methodObject ), new Among ( "seen", 11, -1, "r_LONG", methodObject ), new Among ( "hen", 11, 2, "", methodObject ), new Among ( "tten", 11, -1, "r_VI", methodObject ), new Among ( "hin", 11, 3, "", methodObject ), new Among ( "siin", 11, -1, "r_VI", methodObject ), new Among ( "hon", 11, 4, "", methodObject ), new Among ( "h\u00E4n", 11, 5, "", methodObject ), new Among ( "h\u00F6n", 11, 6, "", methodObject ), new Among ( "\u00E4", -1, 8, "", methodObject ), new Among ( "ll\u00E4", 22, -1, "", methodObject ), new Among ( "n\u00E4", 22, -1, "", methodObject ), new Among ( "ss\u00E4", 22, -1, "", methodObject ), new Among ( "t\u00E4", 22, -1, "", methodObject ), new Among ( "lt\u00E4", 26, -1, "", methodObject ), new Among ( "st\u00E4", 26, -1, "", methodObject ), new Among ( "tt\u00E4", 26, 9, "", methodObject ) }; private final static Among a_7[] = { new Among ( "eja", -1, -1, "", methodObject ), new Among ( "mma", -1, 1, "", methodObject ), new Among ( "imma", 1, -1, "", methodObject ), new Among ( "mpa", -1, 1, "", methodObject ), new Among ( "impa", 3, -1, "", methodObject ), new Among ( "mmi", -1, 1, "", methodObject ), new Among ( "immi", 5, -1, "", methodObject ), new Among ( "mpi", -1, 1, "", methodObject ), new Among ( "impi", 7, -1, "", methodObject ), new Among ( "ej\u00E4", -1, -1, "", methodObject ), new Among ( "mm\u00E4", -1, 1, "", methodObject ), new Among ( "imm\u00E4", 10, -1, "", methodObject ), new Among ( "mp\u00E4", -1, 1, "", methodObject ), new Among ( "imp\u00E4", 12, -1, "", methodObject ) }; private final static Among a_8[] = { new Among ( "i", -1, -1, "", methodObject ), new Among ( "j", -1, -1, "", methodObject ) }; private final static Among a_9[] = { new Among ( "mma", -1, 1, "", methodObject ), new Among ( "imma", 0, -1, "", methodObject ) }; private static final char g_AEI[] = {17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 }; private static final char g_V1[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; private static final char g_V2[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; private static final char g_particle_end[] = {17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; private boolean B_ending_removed; private java.lang.StringBuilder S_x = new java.lang.StringBuilder(); private int I_p2; private int I_p1; private void copy_from(finnishStemmer other) { B_ending_removed = other.B_ending_removed; S_x = other.S_x; I_p2 = other.I_p2; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_3; // (, line 41 I_p1 = limit; I_p2 = limit; // goto, line 46 golab0: while(true) { v_1 = cursor; lab1: do { if (!(in_grouping(g_V1, 97, 246))) { break lab1; } cursor = v_1; break golab0; } while (false); cursor = v_1; if (cursor >= limit) { return false; } cursor++; } // gopast, line 46 golab2: while(true) { lab3: do { if (!(out_grouping(g_V1, 97, 246))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 46 I_p1 = cursor; // goto, line 47 golab4: while(true) { v_3 = cursor; lab5: do { if (!(in_grouping(g_V1, 97, 246))) { break lab5; } cursor = v_3; break golab4; } while (false); cursor = v_3; if (cursor >= limit) { return false; } cursor++; } // gopast, line 47 golab6: while(true) { lab7: do { if (!(out_grouping(g_V1, 97, 246))) { break lab7; } break golab6; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p2, line 47 I_p2 = cursor; return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_particle_etc() { int among_var; int v_1; int v_2; // (, line 54 // setlimit, line 55 v_1 = limit - cursor; // tomark, line 55 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 55 // [, line 55 ket = cursor; // substring, line 55 among_var = find_among_b(a_0, 10); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 55 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 62 if (!(in_grouping_b(g_particle_end, 97, 246))) { return false; } break; case 2: // (, line 64 // call R2, line 64 if (!r_R2()) { return false; } break; } // delete, line 66 slice_del(); return true; } private boolean r_possessive() { int among_var; int v_1; int v_2; int v_3; // (, line 68 // setlimit, line 69 v_1 = limit - cursor; // tomark, line 69 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 69 // [, line 69 ket = cursor; // substring, line 69 among_var = find_among_b(a_4, 9); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 69 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 72 // not, line 72 { v_3 = limit - cursor; lab0: do { // literal, line 72 if (!(eq_s_b(1, "k"))) { break lab0; } return false; } while (false); cursor = limit - v_3; } // delete, line 72 slice_del(); break; case 2: // (, line 74 // delete, line 74 slice_del(); // [, line 74 ket = cursor; // literal, line 74 if (!(eq_s_b(3, "kse"))) { return false; } // ], line 74 bra = cursor; // <-, line 74 slice_from("ksi"); break; case 3: // (, line 78 // delete, line 78 slice_del(); break; case 4: // (, line 81 // among, line 81 if (find_among_b(a_1, 6) == 0) { return false; } // delete, line 81 slice_del(); break; case 5: // (, line 83 // among, line 83 if (find_among_b(a_2, 6) == 0) { return false; } // delete, line 84 slice_del(); break; case 6: // (, line 86 // among, line 86 if (find_among_b(a_3, 2) == 0) { return false; } // delete, line 86 slice_del(); break; } return true; } private boolean r_LONG() { // among, line 91 if (find_among_b(a_5, 7) == 0) { return false; } return true; } private boolean r_VI() { // (, line 93 // literal, line 93 if (!(eq_s_b(1, "i"))) { return false; } if (!(in_grouping_b(g_V2, 97, 246))) { return false; } return true; } private boolean r_case_ending() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 95 // setlimit, line 96 v_1 = limit - cursor; // tomark, line 96 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 96 // [, line 96 ket = cursor; // substring, line 96 among_var = find_among_b(a_6, 30); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 96 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 98 // literal, line 98 if (!(eq_s_b(1, "a"))) { return false; } break; case 2: // (, line 99 // literal, line 99 if (!(eq_s_b(1, "e"))) { return false; } break; case 3: // (, line 100 // literal, line 100 if (!(eq_s_b(1, "i"))) { return false; } break; case 4: // (, line 101 // literal, line 101 if (!(eq_s_b(1, "o"))) { return false; } break; case 5: // (, line 102 // literal, line 102 if (!(eq_s_b(1, "\u00E4"))) { return false; } break; case 6: // (, line 103 // literal, line 103 if (!(eq_s_b(1, "\u00F6"))) { return false; } break; case 7: // (, line 111 // try, line 111 v_3 = limit - cursor; lab0: do { // (, line 111 // and, line 113 v_4 = limit - cursor; // or, line 112 lab1: do { v_5 = limit - cursor; lab2: do { // call LONG, line 111 if (!r_LONG()) { break lab2; } break lab1; } while (false); cursor = limit - v_5; // literal, line 112 if (!(eq_s_b(2, "ie"))) { cursor = limit - v_3; break lab0; } } while (false); cursor = limit - v_4; // next, line 113 if (cursor <= limit_backward) { cursor = limit - v_3; break lab0; } cursor--; // ], line 113 bra = cursor; } while (false); break; case 8: // (, line 119 if (!(in_grouping_b(g_V1, 97, 246))) { return false; } if (!(out_grouping_b(g_V1, 97, 246))) { return false; } break; case 9: // (, line 121 // literal, line 121 if (!(eq_s_b(1, "e"))) { return false; } break; } // delete, line 138 slice_del(); // set ending_removed, line 139 B_ending_removed = true; return true; } private boolean r_other_endings() { int among_var; int v_1; int v_2; int v_3; // (, line 141 // setlimit, line 142 v_1 = limit - cursor; // tomark, line 142 if (cursor < I_p2) { return false; } cursor = I_p2; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 142 // [, line 142 ket = cursor; // substring, line 142 among_var = find_among_b(a_7, 14); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 142 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 146 // not, line 146 { v_3 = limit - cursor; lab0: do { // literal, line 146 if (!(eq_s_b(2, "po"))) { break lab0; } return false; } while (false); cursor = limit - v_3; } break; } // delete, line 151 slice_del(); return true; } private boolean r_i_plural() { int v_1; int v_2; // (, line 153 // setlimit, line 154 v_1 = limit - cursor; // tomark, line 154 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 154 // [, line 154 ket = cursor; // substring, line 154 if (find_among_b(a_8, 2) == 0) { limit_backward = v_2; return false; } // ], line 154 bra = cursor; limit_backward = v_2; // delete, line 158 slice_del(); return true; } private boolean r_t_plural() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; // (, line 160 // setlimit, line 161 v_1 = limit - cursor; // tomark, line 161 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 161 // [, line 162 ket = cursor; // literal, line 162 if (!(eq_s_b(1, "t"))) { limit_backward = v_2; return false; } // ], line 162 bra = cursor; // test, line 162 v_3 = limit - cursor; if (!(in_grouping_b(g_V1, 97, 246))) { limit_backward = v_2; return false; } cursor = limit - v_3; // delete, line 163 slice_del(); limit_backward = v_2; // setlimit, line 165 v_4 = limit - cursor; // tomark, line 165 if (cursor < I_p2) { return false; } cursor = I_p2; v_5 = limit_backward; limit_backward = cursor; cursor = limit - v_4; // (, line 165 // [, line 165 ket = cursor; // substring, line 165 among_var = find_among_b(a_9, 2); if (among_var == 0) { limit_backward = v_5; return false; } // ], line 165 bra = cursor; limit_backward = v_5; switch(among_var) { case 0: return false; case 1: // (, line 167 // not, line 167 { v_6 = limit - cursor; lab0: do { // literal, line 167 if (!(eq_s_b(2, "po"))) { break lab0; } return false; } while (false); cursor = limit - v_6; } break; } // delete, line 170 slice_del(); return true; } private boolean r_tidy() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; // (, line 172 // setlimit, line 173 v_1 = limit - cursor; // tomark, line 173 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 173 // do, line 174 v_3 = limit - cursor; lab0: do { // (, line 174 // and, line 174 v_4 = limit - cursor; // call LONG, line 174 if (!r_LONG()) { break lab0; } cursor = limit - v_4; // (, line 174 // [, line 174 ket = cursor; // next, line 174 if (cursor <= limit_backward) { break lab0; } cursor--; // ], line 174 bra = cursor; // delete, line 174 slice_del(); } while (false); cursor = limit - v_3; // do, line 175 v_5 = limit - cursor; lab1: do { // (, line 175 // [, line 175 ket = cursor; if (!(in_grouping_b(g_AEI, 97, 228))) { break lab1; } // ], line 175 bra = cursor; if (!(out_grouping_b(g_V1, 97, 246))) { break lab1; } // delete, line 175 slice_del(); } while (false); cursor = limit - v_5; // do, line 176 v_6 = limit - cursor; lab2: do { // (, line 176 // [, line 176 ket = cursor; // literal, line 176 if (!(eq_s_b(1, "j"))) { break lab2; } // ], line 176 bra = cursor; // or, line 176 lab3: do { v_7 = limit - cursor; lab4: do { // literal, line 176 if (!(eq_s_b(1, "o"))) { break lab4; } break lab3; } while (false); cursor = limit - v_7; // literal, line 176 if (!(eq_s_b(1, "u"))) { break lab2; } } while (false); // delete, line 176 slice_del(); } while (false); cursor = limit - v_6; // do, line 177 v_8 = limit - cursor; lab5: do { // (, line 177 // [, line 177 ket = cursor; // literal, line 177 if (!(eq_s_b(1, "o"))) { break lab5; } // ], line 177 bra = cursor; // literal, line 177 if (!(eq_s_b(1, "j"))) { break lab5; } // delete, line 177 slice_del(); } while (false); cursor = limit - v_8; limit_backward = v_2; // goto, line 179 golab6: while(true) { v_9 = limit - cursor; lab7: do { if (!(out_grouping_b(g_V1, 97, 246))) { break lab7; } cursor = limit - v_9; break golab6; } while (false); cursor = limit - v_9; if (cursor <= limit_backward) { return false; } cursor--; } // [, line 179 ket = cursor; // next, line 179 if (cursor <= limit_backward) { return false; } cursor--; // ], line 179 bra = cursor; // -> x, line 179 S_x = slice_to(S_x); // name x, line 179 if (!(eq_v_b(S_x))) { return false; } // delete, line 179 slice_del(); return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; // (, line 183 // do, line 185 v_1 = cursor; lab0: do { // call mark_regions, line 185 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // unset ending_removed, line 186 B_ending_removed = false; // backwards, line 187 limit_backward = cursor; cursor = limit; // (, line 187 // do, line 188 v_2 = limit - cursor; lab1: do { // call particle_etc, line 188 if (!r_particle_etc()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 189 v_3 = limit - cursor; lab2: do { // call possessive, line 189 if (!r_possessive()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 190 v_4 = limit - cursor; lab3: do { // call case_ending, line 190 if (!r_case_ending()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 191 v_5 = limit - cursor; lab4: do { // call other_endings, line 191 if (!r_other_endings()) { break lab4; } } while (false); cursor = limit - v_5; // or, line 192 lab5: do { v_6 = limit - cursor; lab6: do { // (, line 192 // Boolean test ending_removed, line 192 if (!(B_ending_removed)) { break lab6; } // do, line 192 v_7 = limit - cursor; lab7: do { // call i_plural, line 192 if (!r_i_plural()) { break lab7; } } while (false); cursor = limit - v_7; break lab5; } while (false); cursor = limit - v_6; // do, line 192 v_8 = limit - cursor; lab8: do { // call t_plural, line 192 if (!r_t_plural()) { break lab8; } } while (false); cursor = limit - v_8; } while (false); // do, line 193 v_9 = limit - cursor; lab9: do { // call tidy, line 193 if (!r_tidy()) { break lab9; } } while (false); cursor = limit - v_9; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof finnishStemmer; } public int hashCode() { return finnishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/germanStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/germanStemmer.ja0100664 0001750 0001750 00000076532 14135770370 034200 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class germanStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static germanStemmer methodObject = new germanStemmer (); private final static Among a_0[] = { new Among ( "", -1, 6, "", methodObject ), new Among ( "U", 0, 2, "", methodObject ), new Among ( "Y", 0, 1, "", methodObject ), new Among ( "\u00E4", 0, 3, "", methodObject ), new Among ( "\u00F6", 0, 4, "", methodObject ), new Among ( "\u00FC", 0, 5, "", methodObject ) }; private final static Among a_1[] = { new Among ( "e", -1, 2, "", methodObject ), new Among ( "em", -1, 1, "", methodObject ), new Among ( "en", -1, 2, "", methodObject ), new Among ( "ern", -1, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "s", -1, 3, "", methodObject ), new Among ( "es", 5, 2, "", methodObject ) }; private final static Among a_2[] = { new Among ( "en", -1, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "st", -1, 2, "", methodObject ), new Among ( "est", 2, 1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ig", -1, 1, "", methodObject ), new Among ( "lich", -1, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "end", -1, 1, "", methodObject ), new Among ( "ig", -1, 2, "", methodObject ), new Among ( "ung", -1, 1, "", methodObject ), new Among ( "lich", -1, 3, "", methodObject ), new Among ( "isch", -1, 2, "", methodObject ), new Among ( "ik", -1, 2, "", methodObject ), new Among ( "heit", -1, 3, "", methodObject ), new Among ( "keit", -1, 4, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 }; private static final char g_s_ending[] = {117, 30, 5 }; private static final char g_st_ending[] = {117, 30, 4 }; private int I_x; private int I_p2; private int I_p1; private void copy_from(germanStemmer other) { I_x = other.I_x; I_p2 = other.I_p2; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_prelude() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; // (, line 33 // test, line 35 v_1 = cursor; // repeat, line 35 replab0: while(true) { v_2 = cursor; lab1: do { // (, line 35 // or, line 38 lab2: do { v_3 = cursor; lab3: do { // (, line 36 // [, line 37 bra = cursor; // literal, line 37 if (!(eq_s(1, "\u00DF"))) { break lab3; } // ], line 37 ket = cursor; // <-, line 37 slice_from("ss"); break lab2; } while (false); cursor = v_3; // next, line 38 if (cursor >= limit) { break lab1; } cursor++; } while (false); continue replab0; } while (false); cursor = v_2; break replab0; } cursor = v_1; // repeat, line 41 replab4: while(true) { v_4 = cursor; lab5: do { // goto, line 41 golab6: while(true) { v_5 = cursor; lab7: do { // (, line 41 if (!(in_grouping(g_v, 97, 252))) { break lab7; } // [, line 42 bra = cursor; // or, line 42 lab8: do { v_6 = cursor; lab9: do { // (, line 42 // literal, line 42 if (!(eq_s(1, "u"))) { break lab9; } // ], line 42 ket = cursor; if (!(in_grouping(g_v, 97, 252))) { break lab9; } // <-, line 42 slice_from("U"); break lab8; } while (false); cursor = v_6; // (, line 43 // literal, line 43 if (!(eq_s(1, "y"))) { break lab7; } // ], line 43 ket = cursor; if (!(in_grouping(g_v, 97, 252))) { break lab7; } // <-, line 43 slice_from("Y"); } while (false); cursor = v_5; break golab6; } while (false); cursor = v_5; if (cursor >= limit) { break lab5; } cursor++; } continue replab4; } while (false); cursor = v_4; break replab4; } return true; } private boolean r_mark_regions() { int v_1; // (, line 47 I_p1 = limit; I_p2 = limit; // test, line 52 v_1 = cursor; // (, line 52 // hop, line 52 { int c = cursor + 3; if (0 > c || c > limit) { return false; } cursor = c; } // setmark x, line 52 I_x = cursor; cursor = v_1; // gopast, line 54 golab0: while(true) { lab1: do { if (!(in_grouping(g_v, 97, 252))) { break lab1; } break golab0; } while (false); if (cursor >= limit) { return false; } cursor++; } // gopast, line 54 golab2: while(true) { lab3: do { if (!(out_grouping(g_v, 97, 252))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 54 I_p1 = cursor; // try, line 55 lab4: do { // (, line 55 if (!(I_p1 < I_x)) { break lab4; } I_p1 = I_x; } while (false); // gopast, line 56 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 252))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { return false; } cursor++; } // gopast, line 56 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 252))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p2, line 56 I_p2 = cursor; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 60 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 60 // [, line 62 bra = cursor; // substring, line 62 among_var = find_among(a_0, 6); if (among_var == 0) { break lab1; } // ], line 62 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 63 // <-, line 63 slice_from("y"); break; case 2: // (, line 64 // <-, line 64 slice_from("u"); break; case 3: // (, line 65 // <-, line 65 slice_from("a"); break; case 4: // (, line 66 // <-, line 66 slice_from("o"); break; case 5: // (, line 67 // <-, line 67 slice_from("u"); break; case 6: // (, line 68 // next, line 68 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 78 // do, line 79 v_1 = limit - cursor; lab0: do { // (, line 79 // [, line 80 ket = cursor; // substring, line 80 among_var = find_among_b(a_1, 7); if (among_var == 0) { break lab0; } // ], line 80 bra = cursor; // call R1, line 80 if (!r_R1()) { break lab0; } switch(among_var) { case 0: break lab0; case 1: // (, line 82 // delete, line 82 slice_del(); break; case 2: // (, line 85 // delete, line 85 slice_del(); // try, line 86 v_2 = limit - cursor; lab1: do { // (, line 86 // [, line 86 ket = cursor; // literal, line 86 if (!(eq_s_b(1, "s"))) { cursor = limit - v_2; break lab1; } // ], line 86 bra = cursor; // literal, line 86 if (!(eq_s_b(3, "nis"))) { cursor = limit - v_2; break lab1; } // delete, line 86 slice_del(); } while (false); break; case 3: // (, line 89 if (!(in_grouping_b(g_s_ending, 98, 116))) { break lab0; } // delete, line 89 slice_del(); break; } } while (false); cursor = limit - v_1; // do, line 93 v_3 = limit - cursor; lab2: do { // (, line 93 // [, line 94 ket = cursor; // substring, line 94 among_var = find_among_b(a_2, 4); if (among_var == 0) { break lab2; } // ], line 94 bra = cursor; // call R1, line 94 if (!r_R1()) { break lab2; } switch(among_var) { case 0: break lab2; case 1: // (, line 96 // delete, line 96 slice_del(); break; case 2: // (, line 99 if (!(in_grouping_b(g_st_ending, 98, 116))) { break lab2; } // hop, line 99 { int c = cursor - 3; if (limit_backward > c || c > limit) { break lab2; } cursor = c; } // delete, line 99 slice_del(); break; } } while (false); cursor = limit - v_3; // do, line 103 v_4 = limit - cursor; lab3: do { // (, line 103 // [, line 104 ket = cursor; // substring, line 104 among_var = find_among_b(a_4, 8); if (among_var == 0) { break lab3; } // ], line 104 bra = cursor; // call R2, line 104 if (!r_R2()) { break lab3; } switch(among_var) { case 0: break lab3; case 1: // (, line 106 // delete, line 106 slice_del(); // try, line 107 v_5 = limit - cursor; lab4: do { // (, line 107 // [, line 107 ket = cursor; // literal, line 107 if (!(eq_s_b(2, "ig"))) { cursor = limit - v_5; break lab4; } // ], line 107 bra = cursor; // not, line 107 { v_6 = limit - cursor; lab5: do { // literal, line 107 if (!(eq_s_b(1, "e"))) { break lab5; } cursor = limit - v_5; break lab4; } while (false); cursor = limit - v_6; } // call R2, line 107 if (!r_R2()) { cursor = limit - v_5; break lab4; } // delete, line 107 slice_del(); } while (false); break; case 2: // (, line 110 // not, line 110 { v_7 = limit - cursor; lab6: do { // literal, line 110 if (!(eq_s_b(1, "e"))) { break lab6; } break lab3; } while (false); cursor = limit - v_7; } // delete, line 110 slice_del(); break; case 3: // (, line 113 // delete, line 113 slice_del(); // try, line 114 v_8 = limit - cursor; lab7: do { // (, line 114 // [, line 115 ket = cursor; // or, line 115 lab8: do { v_9 = limit - cursor; lab9: do { // literal, line 115 if (!(eq_s_b(2, "er"))) { break lab9; } break lab8; } while (false); cursor = limit - v_9; // literal, line 115 if (!(eq_s_b(2, "en"))) { cursor = limit - v_8; break lab7; } } while (false); // ], line 115 bra = cursor; // call R1, line 115 if (!r_R1()) { cursor = limit - v_8; break lab7; } // delete, line 115 slice_del(); } while (false); break; case 4: // (, line 119 // delete, line 119 slice_del(); // try, line 120 v_10 = limit - cursor; lab10: do { // (, line 120 // [, line 121 ket = cursor; // substring, line 121 among_var = find_among_b(a_3, 2); if (among_var == 0) { cursor = limit - v_10; break lab10; } // ], line 121 bra = cursor; // call R2, line 121 if (!r_R2()) { cursor = limit - v_10; break lab10; } switch(among_var) { case 0: cursor = limit - v_10; break lab10; case 1: // (, line 123 // delete, line 123 slice_del(); break; } } while (false); break; } } while (false); cursor = limit - v_4; return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; // (, line 133 // do, line 134 v_1 = cursor; lab0: do { // call prelude, line 134 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 135 v_2 = cursor; lab1: do { // call mark_regions, line 135 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 136 limit_backward = cursor; cursor = limit; // do, line 137 v_3 = limit - cursor; lab2: do { // call standard_suffix, line 137 if (!r_standard_suffix()) { break lab2; } } while (false); cursor = limit - v_3; cursor = limit_backward; // do, line 138 v_4 = cursor; lab3: do { // call postlude, line 138 if (!r_postlude()) { break lab3; } } while (false); cursor = v_4; return true; } public boolean equals( Object o ) { return o instanceof germanStemmer; } public int hashCode() { return germanStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/turkishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/turkishStemmer.j0100664 0001750 0001750 00000421402 14135770370 034245 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class turkishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static turkishStemmer methodObject = new turkishStemmer (); private final static Among a_0[] = { new Among ( "m", -1, -1, "", methodObject ), new Among ( "n", -1, -1, "", methodObject ), new Among ( "miz", -1, -1, "", methodObject ), new Among ( "niz", -1, -1, "", methodObject ), new Among ( "muz", -1, -1, "", methodObject ), new Among ( "nuz", -1, -1, "", methodObject ), new Among ( "m\u00FCz", -1, -1, "", methodObject ), new Among ( "n\u00FCz", -1, -1, "", methodObject ), new Among ( "m\u0131z", -1, -1, "", methodObject ), new Among ( "n\u0131z", -1, -1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "leri", -1, -1, "", methodObject ), new Among ( "lar\u0131", -1, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ni", -1, -1, "", methodObject ), new Among ( "nu", -1, -1, "", methodObject ), new Among ( "n\u00FC", -1, -1, "", methodObject ), new Among ( "n\u0131", -1, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "in", -1, -1, "", methodObject ), new Among ( "un", -1, -1, "", methodObject ), new Among ( "\u00FCn", -1, -1, "", methodObject ), new Among ( "\u0131n", -1, -1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "a", -1, -1, "", methodObject ), new Among ( "e", -1, -1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "na", -1, -1, "", methodObject ), new Among ( "ne", -1, -1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "da", -1, -1, "", methodObject ), new Among ( "ta", -1, -1, "", methodObject ), new Among ( "de", -1, -1, "", methodObject ), new Among ( "te", -1, -1, "", methodObject ) }; private final static Among a_7[] = { new Among ( "nda", -1, -1, "", methodObject ), new Among ( "nde", -1, -1, "", methodObject ) }; private final static Among a_8[] = { new Among ( "dan", -1, -1, "", methodObject ), new Among ( "tan", -1, -1, "", methodObject ), new Among ( "den", -1, -1, "", methodObject ), new Among ( "ten", -1, -1, "", methodObject ) }; private final static Among a_9[] = { new Among ( "ndan", -1, -1, "", methodObject ), new Among ( "nden", -1, -1, "", methodObject ) }; private final static Among a_10[] = { new Among ( "la", -1, -1, "", methodObject ), new Among ( "le", -1, -1, "", methodObject ) }; private final static Among a_11[] = { new Among ( "ca", -1, -1, "", methodObject ), new Among ( "ce", -1, -1, "", methodObject ) }; private final static Among a_12[] = { new Among ( "im", -1, -1, "", methodObject ), new Among ( "um", -1, -1, "", methodObject ), new Among ( "\u00FCm", -1, -1, "", methodObject ), new Among ( "\u0131m", -1, -1, "", methodObject ) }; private final static Among a_13[] = { new Among ( "sin", -1, -1, "", methodObject ), new Among ( "sun", -1, -1, "", methodObject ), new Among ( "s\u00FCn", -1, -1, "", methodObject ), new Among ( "s\u0131n", -1, -1, "", methodObject ) }; private final static Among a_14[] = { new Among ( "iz", -1, -1, "", methodObject ), new Among ( "uz", -1, -1, "", methodObject ), new Among ( "\u00FCz", -1, -1, "", methodObject ), new Among ( "\u0131z", -1, -1, "", methodObject ) }; private final static Among a_15[] = { new Among ( "siniz", -1, -1, "", methodObject ), new Among ( "sunuz", -1, -1, "", methodObject ), new Among ( "s\u00FCn\u00FCz", -1, -1, "", methodObject ), new Among ( "s\u0131n\u0131z", -1, -1, "", methodObject ) }; private final static Among a_16[] = { new Among ( "lar", -1, -1, "", methodObject ), new Among ( "ler", -1, -1, "", methodObject ) }; private final static Among a_17[] = { new Among ( "niz", -1, -1, "", methodObject ), new Among ( "nuz", -1, -1, "", methodObject ), new Among ( "n\u00FCz", -1, -1, "", methodObject ), new Among ( "n\u0131z", -1, -1, "", methodObject ) }; private final static Among a_18[] = { new Among ( "dir", -1, -1, "", methodObject ), new Among ( "tir", -1, -1, "", methodObject ), new Among ( "dur", -1, -1, "", methodObject ), new Among ( "tur", -1, -1, "", methodObject ), new Among ( "d\u00FCr", -1, -1, "", methodObject ), new Among ( "t\u00FCr", -1, -1, "", methodObject ), new Among ( "d\u0131r", -1, -1, "", methodObject ), new Among ( "t\u0131r", -1, -1, "", methodObject ) }; private final static Among a_19[] = { new Among ( "cas\u0131na", -1, -1, "", methodObject ), new Among ( "cesine", -1, -1, "", methodObject ) }; private final static Among a_20[] = { new Among ( "di", -1, -1, "", methodObject ), new Among ( "ti", -1, -1, "", methodObject ), new Among ( "dik", -1, -1, "", methodObject ), new Among ( "tik", -1, -1, "", methodObject ), new Among ( "duk", -1, -1, "", methodObject ), new Among ( "tuk", -1, -1, "", methodObject ), new Among ( "d\u00FCk", -1, -1, "", methodObject ), new Among ( "t\u00FCk", -1, -1, "", methodObject ), new Among ( "d\u0131k", -1, -1, "", methodObject ), new Among ( "t\u0131k", -1, -1, "", methodObject ), new Among ( "dim", -1, -1, "", methodObject ), new Among ( "tim", -1, -1, "", methodObject ), new Among ( "dum", -1, -1, "", methodObject ), new Among ( "tum", -1, -1, "", methodObject ), new Among ( "d\u00FCm", -1, -1, "", methodObject ), new Among ( "t\u00FCm", -1, -1, "", methodObject ), new Among ( "d\u0131m", -1, -1, "", methodObject ), new Among ( "t\u0131m", -1, -1, "", methodObject ), new Among ( "din", -1, -1, "", methodObject ), new Among ( "tin", -1, -1, "", methodObject ), new Among ( "dun", -1, -1, "", methodObject ), new Among ( "tun", -1, -1, "", methodObject ), new Among ( "d\u00FCn", -1, -1, "", methodObject ), new Among ( "t\u00FCn", -1, -1, "", methodObject ), new Among ( "d\u0131n", -1, -1, "", methodObject ), new Among ( "t\u0131n", -1, -1, "", methodObject ), new Among ( "du", -1, -1, "", methodObject ), new Among ( "tu", -1, -1, "", methodObject ), new Among ( "d\u00FC", -1, -1, "", methodObject ), new Among ( "t\u00FC", -1, -1, "", methodObject ), new Among ( "d\u0131", -1, -1, "", methodObject ), new Among ( "t\u0131", -1, -1, "", methodObject ) }; private final static Among a_21[] = { new Among ( "sa", -1, -1, "", methodObject ), new Among ( "se", -1, -1, "", methodObject ), new Among ( "sak", -1, -1, "", methodObject ), new Among ( "sek", -1, -1, "", methodObject ), new Among ( "sam", -1, -1, "", methodObject ), new Among ( "sem", -1, -1, "", methodObject ), new Among ( "san", -1, -1, "", methodObject ), new Among ( "sen", -1, -1, "", methodObject ) }; private final static Among a_22[] = { new Among ( "mi\u015F", -1, -1, "", methodObject ), new Among ( "mu\u015F", -1, -1, "", methodObject ), new Among ( "m\u00FC\u015F", -1, -1, "", methodObject ), new Among ( "m\u0131\u015F", -1, -1, "", methodObject ) }; private final static Among a_23[] = { new Among ( "b", -1, 1, "", methodObject ), new Among ( "c", -1, 2, "", methodObject ), new Among ( "d", -1, 3, "", methodObject ), new Among ( "\u011F", -1, 4, "", methodObject ) }; private static final char g_vowel[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 }; private static final char g_U[] = {1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 }; private static final char g_vowel1[] = {1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; private static final char g_vowel2[] = {17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 }; private static final char g_vowel3[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; private static final char g_vowel4[] = {17 }; private static final char g_vowel5[] = {65 }; private static final char g_vowel6[] = {65 }; private boolean B_continue_stemming_noun_suffixes; private int I_strlen; private void copy_from(turkishStemmer other) { B_continue_stemming_noun_suffixes = other.B_continue_stemming_noun_suffixes; I_strlen = other.I_strlen; super.copy_from(other); } private boolean r_check_vowel_harmony() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; // (, line 111 // test, line 112 v_1 = limit - cursor; // (, line 113 // (, line 114 // goto, line 114 golab0: while(true) { v_2 = limit - cursor; lab1: do { if (!(in_grouping_b(g_vowel, 97, 305))) { break lab1; } cursor = limit - v_2; break golab0; } while (false); cursor = limit - v_2; if (cursor <= limit_backward) { return false; } cursor--; } // (, line 115 // or, line 116 lab2: do { v_3 = limit - cursor; lab3: do { // (, line 116 // literal, line 116 if (!(eq_s_b(1, "a"))) { break lab3; } // goto, line 116 golab4: while(true) { v_4 = limit - cursor; lab5: do { if (!(in_grouping_b(g_vowel1, 97, 305))) { break lab5; } cursor = limit - v_4; break golab4; } while (false); cursor = limit - v_4; if (cursor <= limit_backward) { break lab3; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab6: do { // (, line 117 // literal, line 117 if (!(eq_s_b(1, "e"))) { break lab6; } // goto, line 117 golab7: while(true) { v_5 = limit - cursor; lab8: do { if (!(in_grouping_b(g_vowel2, 101, 252))) { break lab8; } cursor = limit - v_5; break golab7; } while (false); cursor = limit - v_5; if (cursor <= limit_backward) { break lab6; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab9: do { // (, line 118 // literal, line 118 if (!(eq_s_b(1, "\u0131"))) { break lab9; } // goto, line 118 golab10: while(true) { v_6 = limit - cursor; lab11: do { if (!(in_grouping_b(g_vowel3, 97, 305))) { break lab11; } cursor = limit - v_6; break golab10; } while (false); cursor = limit - v_6; if (cursor <= limit_backward) { break lab9; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab12: do { // (, line 119 // literal, line 119 if (!(eq_s_b(1, "i"))) { break lab12; } // goto, line 119 golab13: while(true) { v_7 = limit - cursor; lab14: do { if (!(in_grouping_b(g_vowel4, 101, 105))) { break lab14; } cursor = limit - v_7; break golab13; } while (false); cursor = limit - v_7; if (cursor <= limit_backward) { break lab12; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab15: do { // (, line 120 // literal, line 120 if (!(eq_s_b(1, "o"))) { break lab15; } // goto, line 120 golab16: while(true) { v_8 = limit - cursor; lab17: do { if (!(in_grouping_b(g_vowel5, 111, 117))) { break lab17; } cursor = limit - v_8; break golab16; } while (false); cursor = limit - v_8; if (cursor <= limit_backward) { break lab15; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab18: do { // (, line 121 // literal, line 121 if (!(eq_s_b(1, "\u00F6"))) { break lab18; } // goto, line 121 golab19: while(true) { v_9 = limit - cursor; lab20: do { if (!(in_grouping_b(g_vowel6, 246, 252))) { break lab20; } cursor = limit - v_9; break golab19; } while (false); cursor = limit - v_9; if (cursor <= limit_backward) { break lab18; } cursor--; } break lab2; } while (false); cursor = limit - v_3; lab21: do { // (, line 122 // literal, line 122 if (!(eq_s_b(1, "u"))) { break lab21; } // goto, line 122 golab22: while(true) { v_10 = limit - cursor; lab23: do { if (!(in_grouping_b(g_vowel5, 111, 117))) { break lab23; } cursor = limit - v_10; break golab22; } while (false); cursor = limit - v_10; if (cursor <= limit_backward) { break lab21; } cursor--; } break lab2; } while (false); cursor = limit - v_3; // (, line 123 // literal, line 123 if (!(eq_s_b(1, "\u00FC"))) { return false; } // goto, line 123 golab24: while(true) { v_11 = limit - cursor; lab25: do { if (!(in_grouping_b(g_vowel6, 246, 252))) { break lab25; } cursor = limit - v_11; break golab24; } while (false); cursor = limit - v_11; if (cursor <= limit_backward) { return false; } cursor--; } } while (false); cursor = limit - v_1; return true; } private boolean r_mark_suffix_with_optional_n_consonant() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; // (, line 132 // or, line 134 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 133 // (, line 133 // test, line 133 v_2 = limit - cursor; // literal, line 133 if (!(eq_s_b(1, "n"))) { break lab1; } cursor = limit - v_2; // next, line 133 if (cursor <= limit_backward) { break lab1; } cursor--; // (, line 133 // test, line 133 v_3 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { break lab1; } cursor = limit - v_3; break lab0; } while (false); cursor = limit - v_1; // (, line 135 // (, line 135 // not, line 135 { v_4 = limit - cursor; lab2: do { // (, line 135 // test, line 135 v_5 = limit - cursor; // literal, line 135 if (!(eq_s_b(1, "n"))) { break lab2; } cursor = limit - v_5; return false; } while (false); cursor = limit - v_4; } // test, line 135 v_6 = limit - cursor; // (, line 135 // next, line 135 if (cursor <= limit_backward) { return false; } cursor--; // (, line 135 // test, line 135 v_7 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { return false; } cursor = limit - v_7; cursor = limit - v_6; } while (false); return true; } private boolean r_mark_suffix_with_optional_s_consonant() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; // (, line 143 // or, line 145 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 144 // (, line 144 // test, line 144 v_2 = limit - cursor; // literal, line 144 if (!(eq_s_b(1, "s"))) { break lab1; } cursor = limit - v_2; // next, line 144 if (cursor <= limit_backward) { break lab1; } cursor--; // (, line 144 // test, line 144 v_3 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { break lab1; } cursor = limit - v_3; break lab0; } while (false); cursor = limit - v_1; // (, line 146 // (, line 146 // not, line 146 { v_4 = limit - cursor; lab2: do { // (, line 146 // test, line 146 v_5 = limit - cursor; // literal, line 146 if (!(eq_s_b(1, "s"))) { break lab2; } cursor = limit - v_5; return false; } while (false); cursor = limit - v_4; } // test, line 146 v_6 = limit - cursor; // (, line 146 // next, line 146 if (cursor <= limit_backward) { return false; } cursor--; // (, line 146 // test, line 146 v_7 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { return false; } cursor = limit - v_7; cursor = limit - v_6; } while (false); return true; } private boolean r_mark_suffix_with_optional_y_consonant() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; // (, line 153 // or, line 155 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 154 // (, line 154 // test, line 154 v_2 = limit - cursor; // literal, line 154 if (!(eq_s_b(1, "y"))) { break lab1; } cursor = limit - v_2; // next, line 154 if (cursor <= limit_backward) { break lab1; } cursor--; // (, line 154 // test, line 154 v_3 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { break lab1; } cursor = limit - v_3; break lab0; } while (false); cursor = limit - v_1; // (, line 156 // (, line 156 // not, line 156 { v_4 = limit - cursor; lab2: do { // (, line 156 // test, line 156 v_5 = limit - cursor; // literal, line 156 if (!(eq_s_b(1, "y"))) { break lab2; } cursor = limit - v_5; return false; } while (false); cursor = limit - v_4; } // test, line 156 v_6 = limit - cursor; // (, line 156 // next, line 156 if (cursor <= limit_backward) { return false; } cursor--; // (, line 156 // test, line 156 v_7 = limit - cursor; if (!(in_grouping_b(g_vowel, 97, 305))) { return false; } cursor = limit - v_7; cursor = limit - v_6; } while (false); return true; } private boolean r_mark_suffix_with_optional_U_vowel() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; // (, line 159 // or, line 161 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 160 // (, line 160 // test, line 160 v_2 = limit - cursor; if (!(in_grouping_b(g_U, 105, 305))) { break lab1; } cursor = limit - v_2; // next, line 160 if (cursor <= limit_backward) { break lab1; } cursor--; // (, line 160 // test, line 160 v_3 = limit - cursor; if (!(out_grouping_b(g_vowel, 97, 305))) { break lab1; } cursor = limit - v_3; break lab0; } while (false); cursor = limit - v_1; // (, line 162 // (, line 162 // not, line 162 { v_4 = limit - cursor; lab2: do { // (, line 162 // test, line 162 v_5 = limit - cursor; if (!(in_grouping_b(g_U, 105, 305))) { break lab2; } cursor = limit - v_5; return false; } while (false); cursor = limit - v_4; } // test, line 162 v_6 = limit - cursor; // (, line 162 // next, line 162 if (cursor <= limit_backward) { return false; } cursor--; // (, line 162 // test, line 162 v_7 = limit - cursor; if (!(out_grouping_b(g_vowel, 97, 305))) { return false; } cursor = limit - v_7; cursor = limit - v_6; } while (false); return true; } private boolean r_mark_possessives() { // (, line 166 // among, line 167 if (find_among_b(a_0, 10) == 0) { return false; } // (, line 169 // call mark_suffix_with_optional_U_vowel, line 169 if (!r_mark_suffix_with_optional_U_vowel()) { return false; } return true; } private boolean r_mark_sU() { // (, line 172 // call check_vowel_harmony, line 173 if (!r_check_vowel_harmony()) { return false; } if (!(in_grouping_b(g_U, 105, 305))) { return false; } // (, line 175 // call mark_suffix_with_optional_s_consonant, line 175 if (!r_mark_suffix_with_optional_s_consonant()) { return false; } return true; } private boolean r_mark_lArI() { // (, line 178 // among, line 179 if (find_among_b(a_1, 2) == 0) { return false; } return true; } private boolean r_mark_yU() { // (, line 182 // call check_vowel_harmony, line 183 if (!r_check_vowel_harmony()) { return false; } if (!(in_grouping_b(g_U, 105, 305))) { return false; } // (, line 185 // call mark_suffix_with_optional_y_consonant, line 185 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_nU() { // (, line 188 // call check_vowel_harmony, line 189 if (!r_check_vowel_harmony()) { return false; } // among, line 190 if (find_among_b(a_2, 4) == 0) { return false; } return true; } private boolean r_mark_nUn() { // (, line 193 // call check_vowel_harmony, line 194 if (!r_check_vowel_harmony()) { return false; } // among, line 195 if (find_among_b(a_3, 4) == 0) { return false; } // (, line 196 // call mark_suffix_with_optional_n_consonant, line 196 if (!r_mark_suffix_with_optional_n_consonant()) { return false; } return true; } private boolean r_mark_yA() { // (, line 199 // call check_vowel_harmony, line 200 if (!r_check_vowel_harmony()) { return false; } // among, line 201 if (find_among_b(a_4, 2) == 0) { return false; } // (, line 202 // call mark_suffix_with_optional_y_consonant, line 202 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_nA() { // (, line 205 // call check_vowel_harmony, line 206 if (!r_check_vowel_harmony()) { return false; } // among, line 207 if (find_among_b(a_5, 2) == 0) { return false; } return true; } private boolean r_mark_DA() { // (, line 210 // call check_vowel_harmony, line 211 if (!r_check_vowel_harmony()) { return false; } // among, line 212 if (find_among_b(a_6, 4) == 0) { return false; } return true; } private boolean r_mark_ndA() { // (, line 215 // call check_vowel_harmony, line 216 if (!r_check_vowel_harmony()) { return false; } // among, line 217 if (find_among_b(a_7, 2) == 0) { return false; } return true; } private boolean r_mark_DAn() { // (, line 220 // call check_vowel_harmony, line 221 if (!r_check_vowel_harmony()) { return false; } // among, line 222 if (find_among_b(a_8, 4) == 0) { return false; } return true; } private boolean r_mark_ndAn() { // (, line 225 // call check_vowel_harmony, line 226 if (!r_check_vowel_harmony()) { return false; } // among, line 227 if (find_among_b(a_9, 2) == 0) { return false; } return true; } private boolean r_mark_ylA() { // (, line 230 // call check_vowel_harmony, line 231 if (!r_check_vowel_harmony()) { return false; } // among, line 232 if (find_among_b(a_10, 2) == 0) { return false; } // (, line 233 // call mark_suffix_with_optional_y_consonant, line 233 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_ki() { // (, line 236 // literal, line 237 if (!(eq_s_b(2, "ki"))) { return false; } return true; } private boolean r_mark_ncA() { // (, line 240 // call check_vowel_harmony, line 241 if (!r_check_vowel_harmony()) { return false; } // among, line 242 if (find_among_b(a_11, 2) == 0) { return false; } // (, line 243 // call mark_suffix_with_optional_n_consonant, line 243 if (!r_mark_suffix_with_optional_n_consonant()) { return false; } return true; } private boolean r_mark_yUm() { // (, line 246 // call check_vowel_harmony, line 247 if (!r_check_vowel_harmony()) { return false; } // among, line 248 if (find_among_b(a_12, 4) == 0) { return false; } // (, line 249 // call mark_suffix_with_optional_y_consonant, line 249 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_sUn() { // (, line 252 // call check_vowel_harmony, line 253 if (!r_check_vowel_harmony()) { return false; } // among, line 254 if (find_among_b(a_13, 4) == 0) { return false; } return true; } private boolean r_mark_yUz() { // (, line 257 // call check_vowel_harmony, line 258 if (!r_check_vowel_harmony()) { return false; } // among, line 259 if (find_among_b(a_14, 4) == 0) { return false; } // (, line 260 // call mark_suffix_with_optional_y_consonant, line 260 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_sUnUz() { // (, line 263 // among, line 264 if (find_among_b(a_15, 4) == 0) { return false; } return true; } private boolean r_mark_lAr() { // (, line 267 // call check_vowel_harmony, line 268 if (!r_check_vowel_harmony()) { return false; } // among, line 269 if (find_among_b(a_16, 2) == 0) { return false; } return true; } private boolean r_mark_nUz() { // (, line 272 // call check_vowel_harmony, line 273 if (!r_check_vowel_harmony()) { return false; } // among, line 274 if (find_among_b(a_17, 4) == 0) { return false; } return true; } private boolean r_mark_DUr() { // (, line 277 // call check_vowel_harmony, line 278 if (!r_check_vowel_harmony()) { return false; } // among, line 279 if (find_among_b(a_18, 8) == 0) { return false; } return true; } private boolean r_mark_cAsInA() { // (, line 282 // among, line 283 if (find_among_b(a_19, 2) == 0) { return false; } return true; } private boolean r_mark_yDU() { // (, line 286 // call check_vowel_harmony, line 287 if (!r_check_vowel_harmony()) { return false; } // among, line 288 if (find_among_b(a_20, 32) == 0) { return false; } // (, line 292 // call mark_suffix_with_optional_y_consonant, line 292 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_ysA() { // (, line 296 // among, line 297 if (find_among_b(a_21, 8) == 0) { return false; } // (, line 298 // call mark_suffix_with_optional_y_consonant, line 298 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_ymUs_() { // (, line 301 // call check_vowel_harmony, line 302 if (!r_check_vowel_harmony()) { return false; } // among, line 303 if (find_among_b(a_22, 4) == 0) { return false; } // (, line 304 // call mark_suffix_with_optional_y_consonant, line 304 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_mark_yken() { // (, line 307 // literal, line 308 if (!(eq_s_b(3, "ken"))) { return false; } // (, line 308 // call mark_suffix_with_optional_y_consonant, line 308 if (!r_mark_suffix_with_optional_y_consonant()) { return false; } return true; } private boolean r_stem_nominal_verb_suffixes() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 311 // [, line 312 ket = cursor; // set continue_stemming_noun_suffixes, line 313 B_continue_stemming_noun_suffixes = true; // or, line 315 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 314 // or, line 314 lab2: do { v_2 = limit - cursor; lab3: do { // call mark_ymUs_, line 314 if (!r_mark_ymUs_()) { break lab3; } break lab2; } while (false); cursor = limit - v_2; lab4: do { // call mark_yDU, line 314 if (!r_mark_yDU()) { break lab4; } break lab2; } while (false); cursor = limit - v_2; lab5: do { // call mark_ysA, line 314 if (!r_mark_ysA()) { break lab5; } break lab2; } while (false); cursor = limit - v_2; // call mark_yken, line 314 if (!r_mark_yken()) { break lab1; } } while (false); break lab0; } while (false); cursor = limit - v_1; lab6: do { // (, line 316 // call mark_cAsInA, line 316 if (!r_mark_cAsInA()) { break lab6; } // (, line 316 // or, line 316 lab7: do { v_3 = limit - cursor; lab8: do { // call mark_sUnUz, line 316 if (!r_mark_sUnUz()) { break lab8; } break lab7; } while (false); cursor = limit - v_3; lab9: do { // call mark_lAr, line 316 if (!r_mark_lAr()) { break lab9; } break lab7; } while (false); cursor = limit - v_3; lab10: do { // call mark_yUm, line 316 if (!r_mark_yUm()) { break lab10; } break lab7; } while (false); cursor = limit - v_3; lab11: do { // call mark_sUn, line 316 if (!r_mark_sUn()) { break lab11; } break lab7; } while (false); cursor = limit - v_3; lab12: do { // call mark_yUz, line 316 if (!r_mark_yUz()) { break lab12; } break lab7; } while (false); cursor = limit - v_3; } while (false); // call mark_ymUs_, line 316 if (!r_mark_ymUs_()) { break lab6; } break lab0; } while (false); cursor = limit - v_1; lab13: do { // (, line 318 // call mark_lAr, line 319 if (!r_mark_lAr()) { break lab13; } // ], line 319 bra = cursor; // delete, line 319 slice_del(); // try, line 319 v_4 = limit - cursor; lab14: do { // (, line 319 // [, line 319 ket = cursor; // (, line 319 // or, line 319 lab15: do { v_5 = limit - cursor; lab16: do { // call mark_DUr, line 319 if (!r_mark_DUr()) { break lab16; } break lab15; } while (false); cursor = limit - v_5; lab17: do { // call mark_yDU, line 319 if (!r_mark_yDU()) { break lab17; } break lab15; } while (false); cursor = limit - v_5; lab18: do { // call mark_ysA, line 319 if (!r_mark_ysA()) { break lab18; } break lab15; } while (false); cursor = limit - v_5; // call mark_ymUs_, line 319 if (!r_mark_ymUs_()) { cursor = limit - v_4; break lab14; } } while (false); } while (false); // unset continue_stemming_noun_suffixes, line 320 B_continue_stemming_noun_suffixes = false; break lab0; } while (false); cursor = limit - v_1; lab19: do { // (, line 323 // call mark_nUz, line 323 if (!r_mark_nUz()) { break lab19; } // (, line 323 // or, line 323 lab20: do { v_6 = limit - cursor; lab21: do { // call mark_yDU, line 323 if (!r_mark_yDU()) { break lab21; } break lab20; } while (false); cursor = limit - v_6; // call mark_ysA, line 323 if (!r_mark_ysA()) { break lab19; } } while (false); break lab0; } while (false); cursor = limit - v_1; lab22: do { // (, line 325 // (, line 325 // or, line 325 lab23: do { v_7 = limit - cursor; lab24: do { // call mark_sUnUz, line 325 if (!r_mark_sUnUz()) { break lab24; } break lab23; } while (false); cursor = limit - v_7; lab25: do { // call mark_yUz, line 325 if (!r_mark_yUz()) { break lab25; } break lab23; } while (false); cursor = limit - v_7; lab26: do { // call mark_sUn, line 325 if (!r_mark_sUn()) { break lab26; } break lab23; } while (false); cursor = limit - v_7; // call mark_yUm, line 325 if (!r_mark_yUm()) { break lab22; } } while (false); // ], line 325 bra = cursor; // delete, line 325 slice_del(); // try, line 325 v_8 = limit - cursor; lab27: do { // (, line 325 // [, line 325 ket = cursor; // call mark_ymUs_, line 325 if (!r_mark_ymUs_()) { cursor = limit - v_8; break lab27; } } while (false); break lab0; } while (false); cursor = limit - v_1; // (, line 327 // call mark_DUr, line 327 if (!r_mark_DUr()) { return false; } // ], line 327 bra = cursor; // delete, line 327 slice_del(); // try, line 327 v_9 = limit - cursor; lab28: do { // (, line 327 // [, line 327 ket = cursor; // (, line 327 // or, line 327 lab29: do { v_10 = limit - cursor; lab30: do { // call mark_sUnUz, line 327 if (!r_mark_sUnUz()) { break lab30; } break lab29; } while (false); cursor = limit - v_10; lab31: do { // call mark_lAr, line 327 if (!r_mark_lAr()) { break lab31; } break lab29; } while (false); cursor = limit - v_10; lab32: do { // call mark_yUm, line 327 if (!r_mark_yUm()) { break lab32; } break lab29; } while (false); cursor = limit - v_10; lab33: do { // call mark_sUn, line 327 if (!r_mark_sUn()) { break lab33; } break lab29; } while (false); cursor = limit - v_10; lab34: do { // call mark_yUz, line 327 if (!r_mark_yUz()) { break lab34; } break lab29; } while (false); cursor = limit - v_10; } while (false); // call mark_ymUs_, line 327 if (!r_mark_ymUs_()) { cursor = limit - v_9; break lab28; } } while (false); } while (false); // ], line 328 bra = cursor; // delete, line 328 slice_del(); return true; } private boolean r_stem_suffix_chain_before_ki() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; // (, line 332 // [, line 333 ket = cursor; // call mark_ki, line 334 if (!r_mark_ki()) { return false; } // (, line 335 // or, line 342 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 336 // call mark_DA, line 336 if (!r_mark_DA()) { break lab1; } // ], line 336 bra = cursor; // delete, line 336 slice_del(); // try, line 336 v_2 = limit - cursor; lab2: do { // (, line 336 // [, line 336 ket = cursor; // or, line 338 lab3: do { v_3 = limit - cursor; lab4: do { // (, line 337 // call mark_lAr, line 337 if (!r_mark_lAr()) { break lab4; } // ], line 337 bra = cursor; // delete, line 337 slice_del(); // try, line 337 v_4 = limit - cursor; lab5: do { // (, line 337 // call stem_suffix_chain_before_ki, line 337 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_4; break lab5; } } while (false); break lab3; } while (false); cursor = limit - v_3; // (, line 339 // call mark_possessives, line 339 if (!r_mark_possessives()) { cursor = limit - v_2; break lab2; } // ], line 339 bra = cursor; // delete, line 339 slice_del(); // try, line 339 v_5 = limit - cursor; lab6: do { // (, line 339 // [, line 339 ket = cursor; // call mark_lAr, line 339 if (!r_mark_lAr()) { cursor = limit - v_5; break lab6; } // ], line 339 bra = cursor; // delete, line 339 slice_del(); // call stem_suffix_chain_before_ki, line 339 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_5; break lab6; } } while (false); } while (false); } while (false); break lab0; } while (false); cursor = limit - v_1; lab7: do { // (, line 343 // call mark_nUn, line 343 if (!r_mark_nUn()) { break lab7; } // ], line 343 bra = cursor; // delete, line 343 slice_del(); // try, line 343 v_6 = limit - cursor; lab8: do { // (, line 343 // [, line 343 ket = cursor; // or, line 345 lab9: do { v_7 = limit - cursor; lab10: do { // (, line 344 // call mark_lArI, line 344 if (!r_mark_lArI()) { break lab10; } // ], line 344 bra = cursor; // delete, line 344 slice_del(); break lab9; } while (false); cursor = limit - v_7; lab11: do { // (, line 346 // [, line 346 ket = cursor; // or, line 346 lab12: do { v_8 = limit - cursor; lab13: do { // call mark_possessives, line 346 if (!r_mark_possessives()) { break lab13; } break lab12; } while (false); cursor = limit - v_8; // call mark_sU, line 346 if (!r_mark_sU()) { break lab11; } } while (false); // ], line 346 bra = cursor; // delete, line 346 slice_del(); // try, line 346 v_9 = limit - cursor; lab14: do { // (, line 346 // [, line 346 ket = cursor; // call mark_lAr, line 346 if (!r_mark_lAr()) { cursor = limit - v_9; break lab14; } // ], line 346 bra = cursor; // delete, line 346 slice_del(); // call stem_suffix_chain_before_ki, line 346 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_9; break lab14; } } while (false); break lab9; } while (false); cursor = limit - v_7; // (, line 348 // call stem_suffix_chain_before_ki, line 348 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_6; break lab8; } } while (false); } while (false); break lab0; } while (false); cursor = limit - v_1; // (, line 351 // call mark_ndA, line 351 if (!r_mark_ndA()) { return false; } // (, line 351 // or, line 353 lab15: do { v_10 = limit - cursor; lab16: do { // (, line 352 // call mark_lArI, line 352 if (!r_mark_lArI()) { break lab16; } // ], line 352 bra = cursor; // delete, line 352 slice_del(); break lab15; } while (false); cursor = limit - v_10; lab17: do { // (, line 354 // (, line 354 // call mark_sU, line 354 if (!r_mark_sU()) { break lab17; } // ], line 354 bra = cursor; // delete, line 354 slice_del(); // try, line 354 v_11 = limit - cursor; lab18: do { // (, line 354 // [, line 354 ket = cursor; // call mark_lAr, line 354 if (!r_mark_lAr()) { cursor = limit - v_11; break lab18; } // ], line 354 bra = cursor; // delete, line 354 slice_del(); // call stem_suffix_chain_before_ki, line 354 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_11; break lab18; } } while (false); break lab15; } while (false); cursor = limit - v_10; // (, line 356 // call stem_suffix_chain_before_ki, line 356 if (!r_stem_suffix_chain_before_ki()) { return false; } } while (false); } while (false); return true; } private boolean r_stem_noun_suffixes() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; int v_12; int v_13; int v_14; int v_15; int v_16; int v_17; int v_18; int v_19; int v_20; int v_21; int v_22; int v_23; int v_24; int v_25; int v_26; int v_27; // (, line 361 // or, line 363 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 362 // [, line 362 ket = cursor; // call mark_lAr, line 362 if (!r_mark_lAr()) { break lab1; } // ], line 362 bra = cursor; // delete, line 362 slice_del(); // try, line 362 v_2 = limit - cursor; lab2: do { // (, line 362 // call stem_suffix_chain_before_ki, line 362 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_2; break lab2; } } while (false); break lab0; } while (false); cursor = limit - v_1; lab3: do { // (, line 364 // [, line 364 ket = cursor; // call mark_ncA, line 364 if (!r_mark_ncA()) { break lab3; } // ], line 364 bra = cursor; // delete, line 364 slice_del(); // try, line 365 v_3 = limit - cursor; lab4: do { // (, line 365 // or, line 367 lab5: do { v_4 = limit - cursor; lab6: do { // (, line 366 // [, line 366 ket = cursor; // call mark_lArI, line 366 if (!r_mark_lArI()) { break lab6; } // ], line 366 bra = cursor; // delete, line 366 slice_del(); break lab5; } while (false); cursor = limit - v_4; lab7: do { // (, line 368 // [, line 368 ket = cursor; // or, line 368 lab8: do { v_5 = limit - cursor; lab9: do { // call mark_possessives, line 368 if (!r_mark_possessives()) { break lab9; } break lab8; } while (false); cursor = limit - v_5; // call mark_sU, line 368 if (!r_mark_sU()) { break lab7; } } while (false); // ], line 368 bra = cursor; // delete, line 368 slice_del(); // try, line 368 v_6 = limit - cursor; lab10: do { // (, line 368 // [, line 368 ket = cursor; // call mark_lAr, line 368 if (!r_mark_lAr()) { cursor = limit - v_6; break lab10; } // ], line 368 bra = cursor; // delete, line 368 slice_del(); // call stem_suffix_chain_before_ki, line 368 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_6; break lab10; } } while (false); break lab5; } while (false); cursor = limit - v_4; // (, line 370 // [, line 370 ket = cursor; // call mark_lAr, line 370 if (!r_mark_lAr()) { cursor = limit - v_3; break lab4; } // ], line 370 bra = cursor; // delete, line 370 slice_del(); // call stem_suffix_chain_before_ki, line 370 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_3; break lab4; } } while (false); } while (false); break lab0; } while (false); cursor = limit - v_1; lab11: do { // (, line 374 // [, line 374 ket = cursor; // (, line 374 // or, line 374 lab12: do { v_7 = limit - cursor; lab13: do { // call mark_ndA, line 374 if (!r_mark_ndA()) { break lab13; } break lab12; } while (false); cursor = limit - v_7; // call mark_nA, line 374 if (!r_mark_nA()) { break lab11; } } while (false); // (, line 375 // or, line 377 lab14: do { v_8 = limit - cursor; lab15: do { // (, line 376 // call mark_lArI, line 376 if (!r_mark_lArI()) { break lab15; } // ], line 376 bra = cursor; // delete, line 376 slice_del(); break lab14; } while (false); cursor = limit - v_8; lab16: do { // (, line 378 // call mark_sU, line 378 if (!r_mark_sU()) { break lab16; } // ], line 378 bra = cursor; // delete, line 378 slice_del(); // try, line 378 v_9 = limit - cursor; lab17: do { // (, line 378 // [, line 378 ket = cursor; // call mark_lAr, line 378 if (!r_mark_lAr()) { cursor = limit - v_9; break lab17; } // ], line 378 bra = cursor; // delete, line 378 slice_del(); // call stem_suffix_chain_before_ki, line 378 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_9; break lab17; } } while (false); break lab14; } while (false); cursor = limit - v_8; // (, line 380 // call stem_suffix_chain_before_ki, line 380 if (!r_stem_suffix_chain_before_ki()) { break lab11; } } while (false); break lab0; } while (false); cursor = limit - v_1; lab18: do { // (, line 384 // [, line 384 ket = cursor; // (, line 384 // or, line 384 lab19: do { v_10 = limit - cursor; lab20: do { // call mark_ndAn, line 384 if (!r_mark_ndAn()) { break lab20; } break lab19; } while (false); cursor = limit - v_10; // call mark_nU, line 384 if (!r_mark_nU()) { break lab18; } } while (false); // (, line 384 // or, line 384 lab21: do { v_11 = limit - cursor; lab22: do { // (, line 384 // call mark_sU, line 384 if (!r_mark_sU()) { break lab22; } // ], line 384 bra = cursor; // delete, line 384 slice_del(); // try, line 384 v_12 = limit - cursor; lab23: do { // (, line 384 // [, line 384 ket = cursor; // call mark_lAr, line 384 if (!r_mark_lAr()) { cursor = limit - v_12; break lab23; } // ], line 384 bra = cursor; // delete, line 384 slice_del(); // call stem_suffix_chain_before_ki, line 384 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_12; break lab23; } } while (false); break lab21; } while (false); cursor = limit - v_11; // (, line 384 // call mark_lArI, line 384 if (!r_mark_lArI()) { break lab18; } } while (false); break lab0; } while (false); cursor = limit - v_1; lab24: do { // (, line 386 // [, line 386 ket = cursor; // call mark_DAn, line 386 if (!r_mark_DAn()) { break lab24; } // ], line 386 bra = cursor; // delete, line 386 slice_del(); // try, line 386 v_13 = limit - cursor; lab25: do { // (, line 386 // [, line 386 ket = cursor; // (, line 387 // or, line 389 lab26: do { v_14 = limit - cursor; lab27: do { // (, line 388 // call mark_possessives, line 388 if (!r_mark_possessives()) { break lab27; } // ], line 388 bra = cursor; // delete, line 388 slice_del(); // try, line 388 v_15 = limit - cursor; lab28: do { // (, line 388 // [, line 388 ket = cursor; // call mark_lAr, line 388 if (!r_mark_lAr()) { cursor = limit - v_15; break lab28; } // ], line 388 bra = cursor; // delete, line 388 slice_del(); // call stem_suffix_chain_before_ki, line 388 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_15; break lab28; } } while (false); break lab26; } while (false); cursor = limit - v_14; lab29: do { // (, line 390 // call mark_lAr, line 390 if (!r_mark_lAr()) { break lab29; } // ], line 390 bra = cursor; // delete, line 390 slice_del(); // try, line 390 v_16 = limit - cursor; lab30: do { // (, line 390 // call stem_suffix_chain_before_ki, line 390 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_16; break lab30; } } while (false); break lab26; } while (false); cursor = limit - v_14; // (, line 392 // call stem_suffix_chain_before_ki, line 392 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_13; break lab25; } } while (false); } while (false); break lab0; } while (false); cursor = limit - v_1; lab31: do { // (, line 396 // [, line 396 ket = cursor; // or, line 396 lab32: do { v_17 = limit - cursor; lab33: do { // call mark_nUn, line 396 if (!r_mark_nUn()) { break lab33; } break lab32; } while (false); cursor = limit - v_17; // call mark_ylA, line 396 if (!r_mark_ylA()) { break lab31; } } while (false); // ], line 396 bra = cursor; // delete, line 396 slice_del(); // try, line 397 v_18 = limit - cursor; lab34: do { // (, line 397 // or, line 399 lab35: do { v_19 = limit - cursor; lab36: do { // (, line 398 // [, line 398 ket = cursor; // call mark_lAr, line 398 if (!r_mark_lAr()) { break lab36; } // ], line 398 bra = cursor; // delete, line 398 slice_del(); // call stem_suffix_chain_before_ki, line 398 if (!r_stem_suffix_chain_before_ki()) { break lab36; } break lab35; } while (false); cursor = limit - v_19; lab37: do { // (, line 400 // [, line 400 ket = cursor; // or, line 400 lab38: do { v_20 = limit - cursor; lab39: do { // call mark_possessives, line 400 if (!r_mark_possessives()) { break lab39; } break lab38; } while (false); cursor = limit - v_20; // call mark_sU, line 400 if (!r_mark_sU()) { break lab37; } } while (false); // ], line 400 bra = cursor; // delete, line 400 slice_del(); // try, line 400 v_21 = limit - cursor; lab40: do { // (, line 400 // [, line 400 ket = cursor; // call mark_lAr, line 400 if (!r_mark_lAr()) { cursor = limit - v_21; break lab40; } // ], line 400 bra = cursor; // delete, line 400 slice_del(); // call stem_suffix_chain_before_ki, line 400 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_21; break lab40; } } while (false); break lab35; } while (false); cursor = limit - v_19; // call stem_suffix_chain_before_ki, line 402 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_18; break lab34; } } while (false); } while (false); break lab0; } while (false); cursor = limit - v_1; lab41: do { // (, line 406 // [, line 406 ket = cursor; // call mark_lArI, line 406 if (!r_mark_lArI()) { break lab41; } // ], line 406 bra = cursor; // delete, line 406 slice_del(); break lab0; } while (false); cursor = limit - v_1; lab42: do { // (, line 408 // call stem_suffix_chain_before_ki, line 408 if (!r_stem_suffix_chain_before_ki()) { break lab42; } break lab0; } while (false); cursor = limit - v_1; lab43: do { // (, line 410 // [, line 410 ket = cursor; // or, line 410 lab44: do { v_22 = limit - cursor; lab45: do { // call mark_DA, line 410 if (!r_mark_DA()) { break lab45; } break lab44; } while (false); cursor = limit - v_22; lab46: do { // call mark_yU, line 410 if (!r_mark_yU()) { break lab46; } break lab44; } while (false); cursor = limit - v_22; // call mark_yA, line 410 if (!r_mark_yA()) { break lab43; } } while (false); // ], line 410 bra = cursor; // delete, line 410 slice_del(); // try, line 410 v_23 = limit - cursor; lab47: do { // (, line 410 // [, line 410 ket = cursor; // (, line 410 // or, line 410 lab48: do { v_24 = limit - cursor; lab49: do { // (, line 410 // call mark_possessives, line 410 if (!r_mark_possessives()) { break lab49; } // ], line 410 bra = cursor; // delete, line 410 slice_del(); // try, line 410 v_25 = limit - cursor; lab50: do { // (, line 410 // [, line 410 ket = cursor; // call mark_lAr, line 410 if (!r_mark_lAr()) { cursor = limit - v_25; break lab50; } } while (false); break lab48; } while (false); cursor = limit - v_24; // call mark_lAr, line 410 if (!r_mark_lAr()) { cursor = limit - v_23; break lab47; } } while (false); // ], line 410 bra = cursor; // delete, line 410 slice_del(); // [, line 410 ket = cursor; // call stem_suffix_chain_before_ki, line 410 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_23; break lab47; } } while (false); break lab0; } while (false); cursor = limit - v_1; // (, line 412 // [, line 412 ket = cursor; // or, line 412 lab51: do { v_26 = limit - cursor; lab52: do { // call mark_possessives, line 412 if (!r_mark_possessives()) { break lab52; } break lab51; } while (false); cursor = limit - v_26; // call mark_sU, line 412 if (!r_mark_sU()) { return false; } } while (false); // ], line 412 bra = cursor; // delete, line 412 slice_del(); // try, line 412 v_27 = limit - cursor; lab53: do { // (, line 412 // [, line 412 ket = cursor; // call mark_lAr, line 412 if (!r_mark_lAr()) { cursor = limit - v_27; break lab53; } // ], line 412 bra = cursor; // delete, line 412 slice_del(); // call stem_suffix_chain_before_ki, line 412 if (!r_stem_suffix_chain_before_ki()) { cursor = limit - v_27; break lab53; } } while (false); } while (false); return true; } private boolean r_post_process_last_consonants() { int among_var; // (, line 415 // [, line 416 ket = cursor; // substring, line 416 among_var = find_among_b(a_23, 4); if (among_var == 0) { return false; } // ], line 416 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 417 // <-, line 417 slice_from("p"); break; case 2: // (, line 418 // <-, line 418 slice_from("\u00E7"); break; case 3: // (, line 419 // <-, line 419 slice_from("t"); break; case 4: // (, line 420 // <-, line 420 slice_from("k"); break; } return true; } private boolean r_append_U_to_stems_ending_with_d_or_g() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; int v_12; int v_13; int v_14; int v_15; // (, line 430 // test, line 431 v_1 = limit - cursor; // (, line 431 // or, line 431 lab0: do { v_2 = limit - cursor; lab1: do { // literal, line 431 if (!(eq_s_b(1, "d"))) { break lab1; } break lab0; } while (false); cursor = limit - v_2; // literal, line 431 if (!(eq_s_b(1, "g"))) { return false; } } while (false); cursor = limit - v_1; // or, line 433 lab2: do { v_3 = limit - cursor; lab3: do { // (, line 432 // test, line 432 v_4 = limit - cursor; // (, line 432 // (, line 432 // goto, line 432 golab4: while(true) { v_5 = limit - cursor; lab5: do { if (!(in_grouping_b(g_vowel, 97, 305))) { break lab5; } cursor = limit - v_5; break golab4; } while (false); cursor = limit - v_5; if (cursor <= limit_backward) { break lab3; } cursor--; } // or, line 432 lab6: do { v_6 = limit - cursor; lab7: do { // literal, line 432 if (!(eq_s_b(1, "a"))) { break lab7; } break lab6; } while (false); cursor = limit - v_6; // literal, line 432 if (!(eq_s_b(1, "\u0131"))) { break lab3; } } while (false); cursor = limit - v_4; // <+, line 432 { int c = cursor; insert(cursor, cursor, "\u0131"); cursor = c; } break lab2; } while (false); cursor = limit - v_3; lab8: do { // (, line 434 // test, line 434 v_7 = limit - cursor; // (, line 434 // (, line 434 // goto, line 434 golab9: while(true) { v_8 = limit - cursor; lab10: do { if (!(in_grouping_b(g_vowel, 97, 305))) { break lab10; } cursor = limit - v_8; break golab9; } while (false); cursor = limit - v_8; if (cursor <= limit_backward) { break lab8; } cursor--; } // or, line 434 lab11: do { v_9 = limit - cursor; lab12: do { // literal, line 434 if (!(eq_s_b(1, "e"))) { break lab12; } break lab11; } while (false); cursor = limit - v_9; // literal, line 434 if (!(eq_s_b(1, "i"))) { break lab8; } } while (false); cursor = limit - v_7; // <+, line 434 { int c = cursor; insert(cursor, cursor, "i"); cursor = c; } break lab2; } while (false); cursor = limit - v_3; lab13: do { // (, line 436 // test, line 436 v_10 = limit - cursor; // (, line 436 // (, line 436 // goto, line 436 golab14: while(true) { v_11 = limit - cursor; lab15: do { if (!(in_grouping_b(g_vowel, 97, 305))) { break lab15; } cursor = limit - v_11; break golab14; } while (false); cursor = limit - v_11; if (cursor <= limit_backward) { break lab13; } cursor--; } // or, line 436 lab16: do { v_12 = limit - cursor; lab17: do { // literal, line 436 if (!(eq_s_b(1, "o"))) { break lab17; } break lab16; } while (false); cursor = limit - v_12; // literal, line 436 if (!(eq_s_b(1, "u"))) { break lab13; } } while (false); cursor = limit - v_10; // <+, line 436 { int c = cursor; insert(cursor, cursor, "u"); cursor = c; } break lab2; } while (false); cursor = limit - v_3; // (, line 438 // test, line 438 v_13 = limit - cursor; // (, line 438 // (, line 438 // goto, line 438 golab18: while(true) { v_14 = limit - cursor; lab19: do { if (!(in_grouping_b(g_vowel, 97, 305))) { break lab19; } cursor = limit - v_14; break golab18; } while (false); cursor = limit - v_14; if (cursor <= limit_backward) { return false; } cursor--; } // or, line 438 lab20: do { v_15 = limit - cursor; lab21: do { // literal, line 438 if (!(eq_s_b(1, "\u00F6"))) { break lab21; } break lab20; } while (false); cursor = limit - v_15; // literal, line 438 if (!(eq_s_b(1, "\u00FC"))) { return false; } } while (false); cursor = limit - v_13; // <+, line 438 { int c = cursor; insert(cursor, cursor, "\u00FC"); cursor = c; } } while (false); return true; } private boolean r_more_than_one_syllable_word() { int v_1; int v_3; // (, line 445 // test, line 446 v_1 = cursor; // (, line 446 // atleast, line 446 { int v_2 = 2; // atleast, line 446 replab0: while(true) { v_3 = cursor; lab1: do { // (, line 446 // gopast, line 446 golab2: while(true) { lab3: do { if (!(in_grouping(g_vowel, 97, 305))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { break lab1; } cursor++; } v_2--; continue replab0; } while (false); cursor = v_3; break replab0; } if (v_2 > 0) { return false; } } cursor = v_1; return true; } private boolean r_is_reserved_word() { int v_1; int v_2; int v_4; // (, line 449 // or, line 451 lab0: do { v_1 = cursor; lab1: do { // test, line 450 v_2 = cursor; // (, line 450 // gopast, line 450 golab2: while(true) { lab3: do { // literal, line 450 if (!(eq_s(2, "ad"))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { break lab1; } cursor++; } // (, line 450 I_strlen = 2; // (, line 450 if (!(I_strlen == limit)) { break lab1; } cursor = v_2; break lab0; } while (false); cursor = v_1; // test, line 452 v_4 = cursor; // (, line 452 // gopast, line 452 golab4: while(true) { lab5: do { // literal, line 452 if (!(eq_s(5, "soyad"))) { break lab5; } break golab4; } while (false); if (cursor >= limit) { return false; } cursor++; } // (, line 452 I_strlen = 5; // (, line 452 if (!(I_strlen == limit)) { return false; } cursor = v_4; } while (false); return true; } private boolean r_postlude() { int v_1; int v_2; int v_3; // (, line 455 // not, line 456 { v_1 = cursor; lab0: do { // (, line 456 // call is_reserved_word, line 456 if (!r_is_reserved_word()) { break lab0; } return false; } while (false); cursor = v_1; } // backwards, line 457 limit_backward = cursor; cursor = limit; // (, line 457 // do, line 458 v_2 = limit - cursor; lab1: do { // call append_U_to_stems_ending_with_d_or_g, line 458 if (!r_append_U_to_stems_ending_with_d_or_g()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 459 v_3 = limit - cursor; lab2: do { // call post_process_last_consonants, line 459 if (!r_post_process_last_consonants()) { break lab2; } } while (false); cursor = limit - v_3; cursor = limit_backward; return true; } public boolean stem() { int v_1; int v_2; // (, line 464 // (, line 465 // call more_than_one_syllable_word, line 465 if (!r_more_than_one_syllable_word()) { return false; } // (, line 466 // backwards, line 467 limit_backward = cursor; cursor = limit; // (, line 467 // do, line 468 v_1 = limit - cursor; lab0: do { // call stem_nominal_verb_suffixes, line 468 if (!r_stem_nominal_verb_suffixes()) { break lab0; } } while (false); cursor = limit - v_1; // Boolean test continue_stemming_noun_suffixes, line 469 if (!(B_continue_stemming_noun_suffixes)) { return false; } // do, line 470 v_2 = limit - cursor; lab1: do { // call stem_noun_suffixes, line 470 if (!r_stem_noun_suffixes()) { break lab1; } } while (false); cursor = limit - v_2; cursor = limit_backward; // call postlude, line 473 if (!r_postlude()) { return false; } return true; } public boolean equals( Object o ) { return o instanceof turkishStemmer; } public int hashCode() { return turkishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000163 14135770370 032700 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/norwegianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/norwegianStemmer0100664 0001750 0001750 00000036722 14135770370 034324 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class norwegianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static norwegianStemmer methodObject = new norwegianStemmer (); private final static Among a_0[] = { new Among ( "a", -1, 1, "", methodObject ), new Among ( "e", -1, 1, "", methodObject ), new Among ( "ede", 1, 1, "", methodObject ), new Among ( "ande", 1, 1, "", methodObject ), new Among ( "ende", 1, 1, "", methodObject ), new Among ( "ane", 1, 1, "", methodObject ), new Among ( "ene", 1, 1, "", methodObject ), new Among ( "hetene", 6, 1, "", methodObject ), new Among ( "erte", 1, 3, "", methodObject ), new Among ( "en", -1, 1, "", methodObject ), new Among ( "heten", 9, 1, "", methodObject ), new Among ( "ar", -1, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "heter", 12, 1, "", methodObject ), new Among ( "s", -1, 2, "", methodObject ), new Among ( "as", 14, 1, "", methodObject ), new Among ( "es", 14, 1, "", methodObject ), new Among ( "edes", 16, 1, "", methodObject ), new Among ( "endes", 16, 1, "", methodObject ), new Among ( "enes", 16, 1, "", methodObject ), new Among ( "hetenes", 19, 1, "", methodObject ), new Among ( "ens", 14, 1, "", methodObject ), new Among ( "hetens", 21, 1, "", methodObject ), new Among ( "ers", 14, 1, "", methodObject ), new Among ( "ets", 14, 1, "", methodObject ), new Among ( "et", -1, 1, "", methodObject ), new Among ( "het", 25, 1, "", methodObject ), new Among ( "ert", -1, 3, "", methodObject ), new Among ( "ast", -1, 1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "dt", -1, -1, "", methodObject ), new Among ( "vt", -1, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "leg", -1, 1, "", methodObject ), new Among ( "eleg", 0, 1, "", methodObject ), new Among ( "ig", -1, 1, "", methodObject ), new Among ( "eig", 2, 1, "", methodObject ), new Among ( "lig", 2, 1, "", methodObject ), new Among ( "elig", 4, 1, "", methodObject ), new Among ( "els", -1, 1, "", methodObject ), new Among ( "lov", -1, 1, "", methodObject ), new Among ( "elov", 7, 1, "", methodObject ), new Among ( "slov", 7, 1, "", methodObject ), new Among ( "hetslov", 9, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 }; private static final char g_s_ending[] = {119, 125, 149, 1 }; private int I_x; private int I_p1; private void copy_from(norwegianStemmer other) { I_x = other.I_x; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_2; // (, line 26 I_p1 = limit; // test, line 30 v_1 = cursor; // (, line 30 // hop, line 30 { int c = cursor + 3; if (0 > c || c > limit) { return false; } cursor = c; } // setmark x, line 30 I_x = cursor; cursor = v_1; // goto, line 31 golab0: while(true) { v_2 = cursor; lab1: do { if (!(in_grouping(g_v, 97, 248))) { break lab1; } cursor = v_2; break golab0; } while (false); cursor = v_2; if (cursor >= limit) { return false; } cursor++; } // gopast, line 31 golab2: while(true) { lab3: do { if (!(out_grouping(g_v, 97, 248))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 31 I_p1 = cursor; // try, line 32 lab4: do { // (, line 32 if (!(I_p1 < I_x)) { break lab4; } I_p1 = I_x; } while (false); return true; } private boolean r_main_suffix() { int among_var; int v_1; int v_2; int v_3; // (, line 37 // setlimit, line 38 v_1 = limit - cursor; // tomark, line 38 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 38 // [, line 38 ket = cursor; // substring, line 38 among_var = find_among_b(a_0, 29); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 38 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 44 // delete, line 44 slice_del(); break; case 2: // (, line 46 // or, line 46 lab0: do { v_3 = limit - cursor; lab1: do { if (!(in_grouping_b(g_s_ending, 98, 122))) { break lab1; } break lab0; } while (false); cursor = limit - v_3; // (, line 46 // literal, line 46 if (!(eq_s_b(1, "k"))) { return false; } if (!(out_grouping_b(g_v, 97, 248))) { return false; } } while (false); // delete, line 46 slice_del(); break; case 3: // (, line 48 // <-, line 48 slice_from("er"); break; } return true; } private boolean r_consonant_pair() { int v_1; int v_2; int v_3; // (, line 52 // test, line 53 v_1 = limit - cursor; // (, line 53 // setlimit, line 54 v_2 = limit - cursor; // tomark, line 54 if (cursor < I_p1) { return false; } cursor = I_p1; v_3 = limit_backward; limit_backward = cursor; cursor = limit - v_2; // (, line 54 // [, line 54 ket = cursor; // substring, line 54 if (find_among_b(a_1, 2) == 0) { limit_backward = v_3; return false; } // ], line 54 bra = cursor; limit_backward = v_3; cursor = limit - v_1; // next, line 59 if (cursor <= limit_backward) { return false; } cursor--; // ], line 59 bra = cursor; // delete, line 59 slice_del(); return true; } private boolean r_other_suffix() { int among_var; int v_1; int v_2; // (, line 62 // setlimit, line 63 v_1 = limit - cursor; // tomark, line 63 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 63 // [, line 63 ket = cursor; // substring, line 63 among_var = find_among_b(a_2, 11); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 63 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 67 // delete, line 67 slice_del(); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; // (, line 72 // do, line 74 v_1 = cursor; lab0: do { // call mark_regions, line 74 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 75 limit_backward = cursor; cursor = limit; // (, line 75 // do, line 76 v_2 = limit - cursor; lab1: do { // call main_suffix, line 76 if (!r_main_suffix()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 77 v_3 = limit - cursor; lab2: do { // call consonant_pair, line 77 if (!r_consonant_pair()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 78 v_4 = limit - cursor; lab3: do { // call other_suffix, line 78 if (!r_other_suffix()) { break lab3; } } while (false); cursor = limit - v_4; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof norwegianStemmer; } public int hashCode() { return norwegianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000164 14135770370 032701 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/portugueseStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/portugueseStemme0100664 0001750 0001750 00000147350 14135770370 034353 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class portugueseStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static portugueseStemmer methodObject = new portugueseStemmer (); private final static Among a_0[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "\u00E3", 0, 1, "", methodObject ), new Among ( "\u00F5", 0, 2, "", methodObject ) }; private final static Among a_1[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "a~", 0, 1, "", methodObject ), new Among ( "o~", 0, 2, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ic", -1, -1, "", methodObject ), new Among ( "ad", -1, -1, "", methodObject ), new Among ( "os", -1, -1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ante", -1, 1, "", methodObject ), new Among ( "avel", -1, 1, "", methodObject ), new Among ( "\u00EDvel", -1, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "ic", -1, 1, "", methodObject ), new Among ( "abil", -1, 1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "ica", -1, 1, "", methodObject ), new Among ( "\u00E2ncia", -1, 1, "", methodObject ), new Among ( "\u00EAncia", -1, 4, "", methodObject ), new Among ( "ira", -1, 9, "", methodObject ), new Among ( "adora", -1, 1, "", methodObject ), new Among ( "osa", -1, 1, "", methodObject ), new Among ( "ista", -1, 1, "", methodObject ), new Among ( "iva", -1, 8, "", methodObject ), new Among ( "eza", -1, 1, "", methodObject ), new Among ( "log\u00EDa", -1, 2, "", methodObject ), new Among ( "idade", -1, 7, "", methodObject ), new Among ( "ante", -1, 1, "", methodObject ), new Among ( "mente", -1, 6, "", methodObject ), new Among ( "amente", 12, 5, "", methodObject ), new Among ( "\u00E1vel", -1, 1, "", methodObject ), new Among ( "\u00EDvel", -1, 1, "", methodObject ), new Among ( "uci\u00F3n", -1, 3, "", methodObject ), new Among ( "ico", -1, 1, "", methodObject ), new Among ( "ismo", -1, 1, "", methodObject ), new Among ( "oso", -1, 1, "", methodObject ), new Among ( "amento", -1, 1, "", methodObject ), new Among ( "imento", -1, 1, "", methodObject ), new Among ( "ivo", -1, 8, "", methodObject ), new Among ( "a\u00E7a~o", -1, 1, "", methodObject ), new Among ( "ador", -1, 1, "", methodObject ), new Among ( "icas", -1, 1, "", methodObject ), new Among ( "\u00EAncias", -1, 4, "", methodObject ), new Among ( "iras", -1, 9, "", methodObject ), new Among ( "adoras", -1, 1, "", methodObject ), new Among ( "osas", -1, 1, "", methodObject ), new Among ( "istas", -1, 1, "", methodObject ), new Among ( "ivas", -1, 8, "", methodObject ), new Among ( "ezas", -1, 1, "", methodObject ), new Among ( "log\u00EDas", -1, 2, "", methodObject ), new Among ( "idades", -1, 7, "", methodObject ), new Among ( "uciones", -1, 3, "", methodObject ), new Among ( "adores", -1, 1, "", methodObject ), new Among ( "antes", -1, 1, "", methodObject ), new Among ( "a\u00E7o~es", -1, 1, "", methodObject ), new Among ( "icos", -1, 1, "", methodObject ), new Among ( "ismos", -1, 1, "", methodObject ), new Among ( "osos", -1, 1, "", methodObject ), new Among ( "amentos", -1, 1, "", methodObject ), new Among ( "imentos", -1, 1, "", methodObject ), new Among ( "ivos", -1, 8, "", methodObject ) }; private final static Among a_6[] = { new Among ( "ada", -1, 1, "", methodObject ), new Among ( "ida", -1, 1, "", methodObject ), new Among ( "ia", -1, 1, "", methodObject ), new Among ( "aria", 2, 1, "", methodObject ), new Among ( "eria", 2, 1, "", methodObject ), new Among ( "iria", 2, 1, "", methodObject ), new Among ( "ara", -1, 1, "", methodObject ), new Among ( "era", -1, 1, "", methodObject ), new Among ( "ira", -1, 1, "", methodObject ), new Among ( "ava", -1, 1, "", methodObject ), new Among ( "asse", -1, 1, "", methodObject ), new Among ( "esse", -1, 1, "", methodObject ), new Among ( "isse", -1, 1, "", methodObject ), new Among ( "aste", -1, 1, "", methodObject ), new Among ( "este", -1, 1, "", methodObject ), new Among ( "iste", -1, 1, "", methodObject ), new Among ( "ei", -1, 1, "", methodObject ), new Among ( "arei", 16, 1, "", methodObject ), new Among ( "erei", 16, 1, "", methodObject ), new Among ( "irei", 16, 1, "", methodObject ), new Among ( "am", -1, 1, "", methodObject ), new Among ( "iam", 20, 1, "", methodObject ), new Among ( "ariam", 21, 1, "", methodObject ), new Among ( "eriam", 21, 1, "", methodObject ), new Among ( "iriam", 21, 1, "", methodObject ), new Among ( "aram", 20, 1, "", methodObject ), new Among ( "eram", 20, 1, "", methodObject ), new Among ( "iram", 20, 1, "", methodObject ), new Among ( "avam", 20, 1, "", methodObject ), new Among ( "em", -1, 1, "", methodObject ), new Among ( "arem", 29, 1, "", methodObject ), new Among ( "erem", 29, 1, "", methodObject ), new Among ( "irem", 29, 1, "", methodObject ), new Among ( "assem", 29, 1, "", methodObject ), new Among ( "essem", 29, 1, "", methodObject ), new Among ( "issem", 29, 1, "", methodObject ), new Among ( "ado", -1, 1, "", methodObject ), new Among ( "ido", -1, 1, "", methodObject ), new Among ( "ando", -1, 1, "", methodObject ), new Among ( "endo", -1, 1, "", methodObject ), new Among ( "indo", -1, 1, "", methodObject ), new Among ( "ara~o", -1, 1, "", methodObject ), new Among ( "era~o", -1, 1, "", methodObject ), new Among ( "ira~o", -1, 1, "", methodObject ), new Among ( "ar", -1, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "ir", -1, 1, "", methodObject ), new Among ( "as", -1, 1, "", methodObject ), new Among ( "adas", 47, 1, "", methodObject ), new Among ( "idas", 47, 1, "", methodObject ), new Among ( "ias", 47, 1, "", methodObject ), new Among ( "arias", 50, 1, "", methodObject ), new Among ( "erias", 50, 1, "", methodObject ), new Among ( "irias", 50, 1, "", methodObject ), new Among ( "aras", 47, 1, "", methodObject ), new Among ( "eras", 47, 1, "", methodObject ), new Among ( "iras", 47, 1, "", methodObject ), new Among ( "avas", 47, 1, "", methodObject ), new Among ( "es", -1, 1, "", methodObject ), new Among ( "ardes", 58, 1, "", methodObject ), new Among ( "erdes", 58, 1, "", methodObject ), new Among ( "irdes", 58, 1, "", methodObject ), new Among ( "ares", 58, 1, "", methodObject ), new Among ( "eres", 58, 1, "", methodObject ), new Among ( "ires", 58, 1, "", methodObject ), new Among ( "asses", 58, 1, "", methodObject ), new Among ( "esses", 58, 1, "", methodObject ), new Among ( "isses", 58, 1, "", methodObject ), new Among ( "astes", 58, 1, "", methodObject ), new Among ( "estes", 58, 1, "", methodObject ), new Among ( "istes", 58, 1, "", methodObject ), new Among ( "is", -1, 1, "", methodObject ), new Among ( "ais", 71, 1, "", methodObject ), new Among ( "eis", 71, 1, "", methodObject ), new Among ( "areis", 73, 1, "", methodObject ), new Among ( "ereis", 73, 1, "", methodObject ), new Among ( "ireis", 73, 1, "", methodObject ), new Among ( "\u00E1reis", 73, 1, "", methodObject ), new Among ( "\u00E9reis", 73, 1, "", methodObject ), new Among ( "\u00EDreis", 73, 1, "", methodObject ), new Among ( "\u00E1sseis", 73, 1, "", methodObject ), new Among ( "\u00E9sseis", 73, 1, "", methodObject ), new Among ( "\u00EDsseis", 73, 1, "", methodObject ), new Among ( "\u00E1veis", 73, 1, "", methodObject ), new Among ( "\u00EDeis", 73, 1, "", methodObject ), new Among ( "ar\u00EDeis", 84, 1, "", methodObject ), new Among ( "er\u00EDeis", 84, 1, "", methodObject ), new Among ( "ir\u00EDeis", 84, 1, "", methodObject ), new Among ( "ados", -1, 1, "", methodObject ), new Among ( "idos", -1, 1, "", methodObject ), new Among ( "amos", -1, 1, "", methodObject ), new Among ( "\u00E1ramos", 90, 1, "", methodObject ), new Among ( "\u00E9ramos", 90, 1, "", methodObject ), new Among ( "\u00EDramos", 90, 1, "", methodObject ), new Among ( "\u00E1vamos", 90, 1, "", methodObject ), new Among ( "\u00EDamos", 90, 1, "", methodObject ), new Among ( "ar\u00EDamos", 95, 1, "", methodObject ), new Among ( "er\u00EDamos", 95, 1, "", methodObject ), new Among ( "ir\u00EDamos", 95, 1, "", methodObject ), new Among ( "emos", -1, 1, "", methodObject ), new Among ( "aremos", 99, 1, "", methodObject ), new Among ( "eremos", 99, 1, "", methodObject ), new Among ( "iremos", 99, 1, "", methodObject ), new Among ( "\u00E1ssemos", 99, 1, "", methodObject ), new Among ( "\u00EAssemos", 99, 1, "", methodObject ), new Among ( "\u00EDssemos", 99, 1, "", methodObject ), new Among ( "imos", -1, 1, "", methodObject ), new Among ( "armos", -1, 1, "", methodObject ), new Among ( "ermos", -1, 1, "", methodObject ), new Among ( "irmos", -1, 1, "", methodObject ), new Among ( "\u00E1mos", -1, 1, "", methodObject ), new Among ( "ar\u00E1s", -1, 1, "", methodObject ), new Among ( "er\u00E1s", -1, 1, "", methodObject ), new Among ( "ir\u00E1s", -1, 1, "", methodObject ), new Among ( "eu", -1, 1, "", methodObject ), new Among ( "iu", -1, 1, "", methodObject ), new Among ( "ou", -1, 1, "", methodObject ), new Among ( "ar\u00E1", -1, 1, "", methodObject ), new Among ( "er\u00E1", -1, 1, "", methodObject ), new Among ( "ir\u00E1", -1, 1, "", methodObject ) }; private final static Among a_7[] = { new Among ( "a", -1, 1, "", methodObject ), new Among ( "i", -1, 1, "", methodObject ), new Among ( "o", -1, 1, "", methodObject ), new Among ( "os", -1, 1, "", methodObject ), new Among ( "\u00E1", -1, 1, "", methodObject ), new Among ( "\u00ED", -1, 1, "", methodObject ), new Among ( "\u00F3", -1, 1, "", methodObject ) }; private final static Among a_8[] = { new Among ( "e", -1, 1, "", methodObject ), new Among ( "\u00E7", -1, 2, "", methodObject ), new Among ( "\u00E9", -1, 1, "", methodObject ), new Among ( "\u00EA", -1, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 }; private int I_p2; private int I_p1; private int I_pV; private void copy_from(portugueseStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_prelude() { int among_var; int v_1; // repeat, line 36 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 36 // [, line 37 bra = cursor; // substring, line 37 among_var = find_among(a_0, 3); if (among_var == 0) { break lab1; } // ], line 37 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 38 // <-, line 38 slice_from("a~"); break; case 2: // (, line 39 // <-, line 39 slice_from("o~"); break; case 3: // (, line 40 // next, line 40 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_mark_regions() { int v_1; int v_2; int v_3; int v_6; int v_8; // (, line 44 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 50 v_1 = cursor; lab0: do { // (, line 50 // or, line 52 lab1: do { v_2 = cursor; lab2: do { // (, line 51 if (!(in_grouping(g_v, 97, 250))) { break lab2; } // or, line 51 lab3: do { v_3 = cursor; lab4: do { // (, line 51 if (!(out_grouping(g_v, 97, 250))) { break lab4; } // gopast, line 51 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 250))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab4; } cursor++; } break lab3; } while (false); cursor = v_3; // (, line 51 if (!(in_grouping(g_v, 97, 250))) { break lab2; } // gopast, line 51 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 250))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab2; } cursor++; } } while (false); break lab1; } while (false); cursor = v_2; // (, line 53 if (!(out_grouping(g_v, 97, 250))) { break lab0; } // or, line 53 lab9: do { v_6 = cursor; lab10: do { // (, line 53 if (!(out_grouping(g_v, 97, 250))) { break lab10; } // gopast, line 53 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 250))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab10; } cursor++; } break lab9; } while (false); cursor = v_6; // (, line 53 if (!(in_grouping(g_v, 97, 250))) { break lab0; } // next, line 53 if (cursor >= limit) { break lab0; } cursor++; } while (false); } while (false); // setmark pV, line 54 I_pV = cursor; } while (false); cursor = v_1; // do, line 56 v_8 = cursor; lab13: do { // (, line 56 // gopast, line 57 golab14: while(true) { lab15: do { if (!(in_grouping(g_v, 97, 250))) { break lab15; } break golab14; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 57 golab16: while(true) { lab17: do { if (!(out_grouping(g_v, 97, 250))) { break lab17; } break golab16; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p1, line 57 I_p1 = cursor; // gopast, line 58 golab18: while(true) { lab19: do { if (!(in_grouping(g_v, 97, 250))) { break lab19; } break golab18; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 58 golab20: while(true) { lab21: do { if (!(out_grouping(g_v, 97, 250))) { break lab21; } break golab20; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p2, line 58 I_p2 = cursor; } while (false); cursor = v_8; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 62 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 62 // [, line 63 bra = cursor; // substring, line 63 among_var = find_among(a_1, 3); if (among_var == 0) { break lab1; } // ], line 63 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 64 // <-, line 64 slice_from("\u00E3"); break; case 2: // (, line 65 // <-, line 65 slice_from("\u00F5"); break; case 3: // (, line 66 // next, line 66 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; // (, line 76 // [, line 77 ket = cursor; // substring, line 77 among_var = find_among_b(a_5, 45); if (among_var == 0) { return false; } // ], line 77 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 92 // call R2, line 93 if (!r_R2()) { return false; } // delete, line 93 slice_del(); break; case 2: // (, line 97 // call R2, line 98 if (!r_R2()) { return false; } // <-, line 98 slice_from("log"); break; case 3: // (, line 101 // call R2, line 102 if (!r_R2()) { return false; } // <-, line 102 slice_from("u"); break; case 4: // (, line 105 // call R2, line 106 if (!r_R2()) { return false; } // <-, line 106 slice_from("ente"); break; case 5: // (, line 109 // call R1, line 110 if (!r_R1()) { return false; } // delete, line 110 slice_del(); // try, line 111 v_1 = limit - cursor; lab0: do { // (, line 111 // [, line 112 ket = cursor; // substring, line 112 among_var = find_among_b(a_2, 4); if (among_var == 0) { cursor = limit - v_1; break lab0; } // ], line 112 bra = cursor; // call R2, line 112 if (!r_R2()) { cursor = limit - v_1; break lab0; } // delete, line 112 slice_del(); switch(among_var) { case 0: cursor = limit - v_1; break lab0; case 1: // (, line 113 // [, line 113 ket = cursor; // literal, line 113 if (!(eq_s_b(2, "at"))) { cursor = limit - v_1; break lab0; } // ], line 113 bra = cursor; // call R2, line 113 if (!r_R2()) { cursor = limit - v_1; break lab0; } // delete, line 113 slice_del(); break; } } while (false); break; case 6: // (, line 121 // call R2, line 122 if (!r_R2()) { return false; } // delete, line 122 slice_del(); // try, line 123 v_2 = limit - cursor; lab1: do { // (, line 123 // [, line 124 ket = cursor; // substring, line 124 among_var = find_among_b(a_3, 3); if (among_var == 0) { cursor = limit - v_2; break lab1; } // ], line 124 bra = cursor; switch(among_var) { case 0: cursor = limit - v_2; break lab1; case 1: // (, line 127 // call R2, line 127 if (!r_R2()) { cursor = limit - v_2; break lab1; } // delete, line 127 slice_del(); break; } } while (false); break; case 7: // (, line 133 // call R2, line 134 if (!r_R2()) { return false; } // delete, line 134 slice_del(); // try, line 135 v_3 = limit - cursor; lab2: do { // (, line 135 // [, line 136 ket = cursor; // substring, line 136 among_var = find_among_b(a_4, 3); if (among_var == 0) { cursor = limit - v_3; break lab2; } // ], line 136 bra = cursor; switch(among_var) { case 0: cursor = limit - v_3; break lab2; case 1: // (, line 139 // call R2, line 139 if (!r_R2()) { cursor = limit - v_3; break lab2; } // delete, line 139 slice_del(); break; } } while (false); break; case 8: // (, line 145 // call R2, line 146 if (!r_R2()) { return false; } // delete, line 146 slice_del(); // try, line 147 v_4 = limit - cursor; lab3: do { // (, line 147 // [, line 148 ket = cursor; // literal, line 148 if (!(eq_s_b(2, "at"))) { cursor = limit - v_4; break lab3; } // ], line 148 bra = cursor; // call R2, line 148 if (!r_R2()) { cursor = limit - v_4; break lab3; } // delete, line 148 slice_del(); } while (false); break; case 9: // (, line 152 // call RV, line 153 if (!r_RV()) { return false; } // literal, line 153 if (!(eq_s_b(1, "e"))) { return false; } // <-, line 154 slice_from("ir"); break; } return true; } private boolean r_verb_suffix() { int among_var; int v_1; int v_2; // setlimit, line 159 v_1 = limit - cursor; // tomark, line 159 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 159 // [, line 160 ket = cursor; // substring, line 160 among_var = find_among_b(a_6, 120); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 160 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 179 // delete, line 179 slice_del(); break; } limit_backward = v_2; return true; } private boolean r_residual_suffix() { int among_var; // (, line 183 // [, line 184 ket = cursor; // substring, line 184 among_var = find_among_b(a_7, 7); if (among_var == 0) { return false; } // ], line 184 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 187 // call RV, line 187 if (!r_RV()) { return false; } // delete, line 187 slice_del(); break; } return true; } private boolean r_residual_form() { int among_var; int v_1; int v_2; int v_3; // (, line 191 // [, line 192 ket = cursor; // substring, line 192 among_var = find_among_b(a_8, 4); if (among_var == 0) { return false; } // ], line 192 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 194 // call RV, line 194 if (!r_RV()) { return false; } // delete, line 194 slice_del(); // [, line 194 ket = cursor; // or, line 194 lab0: do { v_1 = limit - cursor; lab1: do { // (, line 194 // literal, line 194 if (!(eq_s_b(1, "u"))) { break lab1; } // ], line 194 bra = cursor; // test, line 194 v_2 = limit - cursor; // literal, line 194 if (!(eq_s_b(1, "g"))) { break lab1; } cursor = limit - v_2; break lab0; } while (false); cursor = limit - v_1; // (, line 195 // literal, line 195 if (!(eq_s_b(1, "i"))) { return false; } // ], line 195 bra = cursor; // test, line 195 v_3 = limit - cursor; // literal, line 195 if (!(eq_s_b(1, "c"))) { return false; } cursor = limit - v_3; } while (false); // call RV, line 195 if (!r_RV()) { return false; } // delete, line 195 slice_del(); break; case 2: // (, line 196 // <-, line 196 slice_from("c"); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 201 // do, line 202 v_1 = cursor; lab0: do { // call prelude, line 202 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 203 v_2 = cursor; lab1: do { // call mark_regions, line 203 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 204 limit_backward = cursor; cursor = limit; // (, line 204 // do, line 205 v_3 = limit - cursor; lab2: do { // (, line 205 // or, line 209 lab3: do { v_4 = limit - cursor; lab4: do { // (, line 206 // and, line 207 v_5 = limit - cursor; // (, line 206 // or, line 206 lab5: do { v_6 = limit - cursor; lab6: do { // call standard_suffix, line 206 if (!r_standard_suffix()) { break lab6; } break lab5; } while (false); cursor = limit - v_6; // call verb_suffix, line 206 if (!r_verb_suffix()) { break lab4; } } while (false); cursor = limit - v_5; // do, line 207 v_7 = limit - cursor; lab7: do { // (, line 207 // [, line 207 ket = cursor; // literal, line 207 if (!(eq_s_b(1, "i"))) { break lab7; } // ], line 207 bra = cursor; // test, line 207 v_8 = limit - cursor; // literal, line 207 if (!(eq_s_b(1, "c"))) { break lab7; } cursor = limit - v_8; // call RV, line 207 if (!r_RV()) { break lab7; } // delete, line 207 slice_del(); } while (false); cursor = limit - v_7; break lab3; } while (false); cursor = limit - v_4; // call residual_suffix, line 209 if (!r_residual_suffix()) { break lab2; } } while (false); } while (false); cursor = limit - v_3; // do, line 211 v_9 = limit - cursor; lab8: do { // call residual_form, line 211 if (!r_residual_form()) { break lab8; } } while (false); cursor = limit - v_9; cursor = limit_backward; // do, line 213 v_10 = cursor; lab9: do { // call postlude, line 213 if (!r_postlude()) { break lab9; } } while (false); cursor = v_10; return true; } public boolean equals( Object o ) { return o instanceof portugueseStemmer; } public int hashCode() { return portugueseStemmer.class.getName().hashCode(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/Among.java0100664 0001750 0001750 00000005044 14135770370 032750 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package opennlp.tools.stemmer.snowball; import java.lang.reflect.Method; class Among { public Among (String s, int substring_i, int result, String methodname, SnowballProgram methodobject) { this.s_size = s.length(); this.s = s.toCharArray(); this.substring_i = substring_i; this.result = result; this.methodobject = methodobject; if (methodname.length() == 0) { this.method = null; } else { try { this.method = methodobject.getClass(). getDeclaredMethod(methodname, new Class[0]); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } } public final int s_size; /* search string */ public final char[] s; /* search string */ public final int substring_i; /* index to longest matching substring */ public final int result; /* result of the lookup */ public final Method method; /* method to use if substring matches */ public final SnowballProgram methodobject; /* object to invoke method on */ } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/russianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/russianStemmer.j0100664 0001750 0001750 00000103023 14135770370 034234 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class russianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static russianStemmer methodObject = new russianStemmer (); private final static Among a_0[] = { new Among ( "\u0432", -1, 1, "", methodObject ), new Among ( "\u0438\u0432", 0, 2, "", methodObject ), new Among ( "\u044B\u0432", 0, 2, "", methodObject ), new Among ( "\u0432\u0448\u0438", -1, 1, "", methodObject ), new Among ( "\u0438\u0432\u0448\u0438", 3, 2, "", methodObject ), new Among ( "\u044B\u0432\u0448\u0438", 3, 2, "", methodObject ), new Among ( "\u0432\u0448\u0438\u0441\u044C", -1, 1, "", methodObject ), new Among ( "\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2, "", methodObject ), new Among ( "\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2, "", methodObject ) }; private final static Among a_1[] = { new Among ( "\u0435\u0435", -1, 1, "", methodObject ), new Among ( "\u0438\u0435", -1, 1, "", methodObject ), new Among ( "\u043E\u0435", -1, 1, "", methodObject ), new Among ( "\u044B\u0435", -1, 1, "", methodObject ), new Among ( "\u0438\u043C\u0438", -1, 1, "", methodObject ), new Among ( "\u044B\u043C\u0438", -1, 1, "", methodObject ), new Among ( "\u0435\u0439", -1, 1, "", methodObject ), new Among ( "\u0438\u0439", -1, 1, "", methodObject ), new Among ( "\u043E\u0439", -1, 1, "", methodObject ), new Among ( "\u044B\u0439", -1, 1, "", methodObject ), new Among ( "\u0435\u043C", -1, 1, "", methodObject ), new Among ( "\u0438\u043C", -1, 1, "", methodObject ), new Among ( "\u043E\u043C", -1, 1, "", methodObject ), new Among ( "\u044B\u043C", -1, 1, "", methodObject ), new Among ( "\u0435\u0433\u043E", -1, 1, "", methodObject ), new Among ( "\u043E\u0433\u043E", -1, 1, "", methodObject ), new Among ( "\u0435\u043C\u0443", -1, 1, "", methodObject ), new Among ( "\u043E\u043C\u0443", -1, 1, "", methodObject ), new Among ( "\u0438\u0445", -1, 1, "", methodObject ), new Among ( "\u044B\u0445", -1, 1, "", methodObject ), new Among ( "\u0435\u044E", -1, 1, "", methodObject ), new Among ( "\u043E\u044E", -1, 1, "", methodObject ), new Among ( "\u0443\u044E", -1, 1, "", methodObject ), new Among ( "\u044E\u044E", -1, 1, "", methodObject ), new Among ( "\u0430\u044F", -1, 1, "", methodObject ), new Among ( "\u044F\u044F", -1, 1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "\u0435\u043C", -1, 1, "", methodObject ), new Among ( "\u043D\u043D", -1, 1, "", methodObject ), new Among ( "\u0432\u0448", -1, 1, "", methodObject ), new Among ( "\u0438\u0432\u0448", 2, 2, "", methodObject ), new Among ( "\u044B\u0432\u0448", 2, 2, "", methodObject ), new Among ( "\u0449", -1, 1, "", methodObject ), new Among ( "\u044E\u0449", 5, 1, "", methodObject ), new Among ( "\u0443\u044E\u0449", 6, 2, "", methodObject ) }; private final static Among a_3[] = { new Among ( "\u0441\u044C", -1, 1, "", methodObject ), new Among ( "\u0441\u044F", -1, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "\u043B\u0430", -1, 1, "", methodObject ), new Among ( "\u0438\u043B\u0430", 0, 2, "", methodObject ), new Among ( "\u044B\u043B\u0430", 0, 2, "", methodObject ), new Among ( "\u043D\u0430", -1, 1, "", methodObject ), new Among ( "\u0435\u043D\u0430", 3, 2, "", methodObject ), new Among ( "\u0435\u0442\u0435", -1, 1, "", methodObject ), new Among ( "\u0438\u0442\u0435", -1, 2, "", methodObject ), new Among ( "\u0439\u0442\u0435", -1, 1, "", methodObject ), new Among ( "\u0435\u0439\u0442\u0435", 7, 2, "", methodObject ), new Among ( "\u0443\u0439\u0442\u0435", 7, 2, "", methodObject ), new Among ( "\u043B\u0438", -1, 1, "", methodObject ), new Among ( "\u0438\u043B\u0438", 10, 2, "", methodObject ), new Among ( "\u044B\u043B\u0438", 10, 2, "", methodObject ), new Among ( "\u0439", -1, 1, "", methodObject ), new Among ( "\u0435\u0439", 13, 2, "", methodObject ), new Among ( "\u0443\u0439", 13, 2, "", methodObject ), new Among ( "\u043B", -1, 1, "", methodObject ), new Among ( "\u0438\u043B", 16, 2, "", methodObject ), new Among ( "\u044B\u043B", 16, 2, "", methodObject ), new Among ( "\u0435\u043C", -1, 1, "", methodObject ), new Among ( "\u0438\u043C", -1, 2, "", methodObject ), new Among ( "\u044B\u043C", -1, 2, "", methodObject ), new Among ( "\u043D", -1, 1, "", methodObject ), new Among ( "\u0435\u043D", 22, 2, "", methodObject ), new Among ( "\u043B\u043E", -1, 1, "", methodObject ), new Among ( "\u0438\u043B\u043E", 24, 2, "", methodObject ), new Among ( "\u044B\u043B\u043E", 24, 2, "", methodObject ), new Among ( "\u043D\u043E", -1, 1, "", methodObject ), new Among ( "\u0435\u043D\u043E", 27, 2, "", methodObject ), new Among ( "\u043D\u043D\u043E", 27, 1, "", methodObject ), new Among ( "\u0435\u0442", -1, 1, "", methodObject ), new Among ( "\u0443\u0435\u0442", 30, 2, "", methodObject ), new Among ( "\u0438\u0442", -1, 2, "", methodObject ), new Among ( "\u044B\u0442", -1, 2, "", methodObject ), new Among ( "\u044E\u0442", -1, 1, "", methodObject ), new Among ( "\u0443\u044E\u0442", 34, 2, "", methodObject ), new Among ( "\u044F\u0442", -1, 2, "", methodObject ), new Among ( "\u043D\u044B", -1, 1, "", methodObject ), new Among ( "\u0435\u043D\u044B", 37, 2, "", methodObject ), new Among ( "\u0442\u044C", -1, 1, "", methodObject ), new Among ( "\u0438\u0442\u044C", 39, 2, "", methodObject ), new Among ( "\u044B\u0442\u044C", 39, 2, "", methodObject ), new Among ( "\u0435\u0448\u044C", -1, 1, "", methodObject ), new Among ( "\u0438\u0448\u044C", -1, 2, "", methodObject ), new Among ( "\u044E", -1, 2, "", methodObject ), new Among ( "\u0443\u044E", 44, 2, "", methodObject ) }; private final static Among a_5[] = { new Among ( "\u0430", -1, 1, "", methodObject ), new Among ( "\u0435\u0432", -1, 1, "", methodObject ), new Among ( "\u043E\u0432", -1, 1, "", methodObject ), new Among ( "\u0435", -1, 1, "", methodObject ), new Among ( "\u0438\u0435", 3, 1, "", methodObject ), new Among ( "\u044C\u0435", 3, 1, "", methodObject ), new Among ( "\u0438", -1, 1, "", methodObject ), new Among ( "\u0435\u0438", 6, 1, "", methodObject ), new Among ( "\u0438\u0438", 6, 1, "", methodObject ), new Among ( "\u0430\u043C\u0438", 6, 1, "", methodObject ), new Among ( "\u044F\u043C\u0438", 6, 1, "", methodObject ), new Among ( "\u0438\u044F\u043C\u0438", 10, 1, "", methodObject ), new Among ( "\u0439", -1, 1, "", methodObject ), new Among ( "\u0435\u0439", 12, 1, "", methodObject ), new Among ( "\u0438\u0435\u0439", 13, 1, "", methodObject ), new Among ( "\u0438\u0439", 12, 1, "", methodObject ), new Among ( "\u043E\u0439", 12, 1, "", methodObject ), new Among ( "\u0430\u043C", -1, 1, "", methodObject ), new Among ( "\u0435\u043C", -1, 1, "", methodObject ), new Among ( "\u0438\u0435\u043C", 18, 1, "", methodObject ), new Among ( "\u043E\u043C", -1, 1, "", methodObject ), new Among ( "\u044F\u043C", -1, 1, "", methodObject ), new Among ( "\u0438\u044F\u043C", 21, 1, "", methodObject ), new Among ( "\u043E", -1, 1, "", methodObject ), new Among ( "\u0443", -1, 1, "", methodObject ), new Among ( "\u0430\u0445", -1, 1, "", methodObject ), new Among ( "\u044F\u0445", -1, 1, "", methodObject ), new Among ( "\u0438\u044F\u0445", 26, 1, "", methodObject ), new Among ( "\u044B", -1, 1, "", methodObject ), new Among ( "\u044C", -1, 1, "", methodObject ), new Among ( "\u044E", -1, 1, "", methodObject ), new Among ( "\u0438\u044E", 30, 1, "", methodObject ), new Among ( "\u044C\u044E", 30, 1, "", methodObject ), new Among ( "\u044F", -1, 1, "", methodObject ), new Among ( "\u0438\u044F", 33, 1, "", methodObject ), new Among ( "\u044C\u044F", 33, 1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "\u043E\u0441\u0442", -1, 1, "", methodObject ), new Among ( "\u043E\u0441\u0442\u044C", -1, 1, "", methodObject ) }; private final static Among a_7[] = { new Among ( "\u0435\u0439\u0448\u0435", -1, 1, "", methodObject ), new Among ( "\u043D", -1, 2, "", methodObject ), new Among ( "\u0435\u0439\u0448", -1, 1, "", methodObject ), new Among ( "\u044C", -1, 3, "", methodObject ) }; private static final char g_v[] = {33, 65, 8, 232 }; private int I_p2; private int I_pV; private void copy_from(russianStemmer other) { I_p2 = other.I_p2; I_pV = other.I_pV; super.copy_from(other); } private boolean r_mark_regions() { int v_1; // (, line 57 I_pV = limit; I_p2 = limit; // do, line 61 v_1 = cursor; lab0: do { // (, line 61 // gopast, line 62 golab1: while(true) { lab2: do { if (!(in_grouping(g_v, 1072, 1103))) { break lab2; } break golab1; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark pV, line 62 I_pV = cursor; // gopast, line 62 golab3: while(true) { lab4: do { if (!(out_grouping(g_v, 1072, 1103))) { break lab4; } break golab3; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 63 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 1072, 1103))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // gopast, line 63 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 1072, 1103))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab0; } cursor++; } // setmark p2, line 63 I_p2 = cursor; } while (false); cursor = v_1; return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_perfective_gerund() { int among_var; int v_1; // (, line 71 // [, line 72 ket = cursor; // substring, line 72 among_var = find_among_b(a_0, 9); if (among_var == 0) { return false; } // ], line 72 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 76 // or, line 76 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 76 if (!(eq_s_b(1, "\u0430"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 76 if (!(eq_s_b(1, "\u044F"))) { return false; } } while (false); // delete, line 76 slice_del(); break; case 2: // (, line 83 // delete, line 83 slice_del(); break; } return true; } private boolean r_adjective() { int among_var; // (, line 87 // [, line 88 ket = cursor; // substring, line 88 among_var = find_among_b(a_1, 26); if (among_var == 0) { return false; } // ], line 88 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 97 // delete, line 97 slice_del(); break; } return true; } private boolean r_adjectival() { int among_var; int v_1; int v_2; // (, line 101 // call adjective, line 102 if (!r_adjective()) { return false; } // try, line 109 v_1 = limit - cursor; lab0: do { // (, line 109 // [, line 110 ket = cursor; // substring, line 110 among_var = find_among_b(a_2, 8); if (among_var == 0) { cursor = limit - v_1; break lab0; } // ], line 110 bra = cursor; switch(among_var) { case 0: cursor = limit - v_1; break lab0; case 1: // (, line 115 // or, line 115 lab1: do { v_2 = limit - cursor; lab2: do { // literal, line 115 if (!(eq_s_b(1, "\u0430"))) { break lab2; } break lab1; } while (false); cursor = limit - v_2; // literal, line 115 if (!(eq_s_b(1, "\u044F"))) { cursor = limit - v_1; break lab0; } } while (false); // delete, line 115 slice_del(); break; case 2: // (, line 122 // delete, line 122 slice_del(); break; } } while (false); return true; } private boolean r_reflexive() { int among_var; // (, line 128 // [, line 129 ket = cursor; // substring, line 129 among_var = find_among_b(a_3, 2); if (among_var == 0) { return false; } // ], line 129 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 132 // delete, line 132 slice_del(); break; } return true; } private boolean r_verb() { int among_var; int v_1; // (, line 136 // [, line 137 ket = cursor; // substring, line 137 among_var = find_among_b(a_4, 46); if (among_var == 0) { return false; } // ], line 137 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 143 // or, line 143 lab0: do { v_1 = limit - cursor; lab1: do { // literal, line 143 if (!(eq_s_b(1, "\u0430"))) { break lab1; } break lab0; } while (false); cursor = limit - v_1; // literal, line 143 if (!(eq_s_b(1, "\u044F"))) { return false; } } while (false); // delete, line 143 slice_del(); break; case 2: // (, line 151 // delete, line 151 slice_del(); break; } return true; } private boolean r_noun() { int among_var; // (, line 159 // [, line 160 ket = cursor; // substring, line 160 among_var = find_among_b(a_5, 36); if (among_var == 0) { return false; } // ], line 160 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 167 // delete, line 167 slice_del(); break; } return true; } private boolean r_derivational() { int among_var; // (, line 175 // [, line 176 ket = cursor; // substring, line 176 among_var = find_among_b(a_6, 2); if (among_var == 0) { return false; } // ], line 176 bra = cursor; // call R2, line 176 if (!r_R2()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 179 // delete, line 179 slice_del(); break; } return true; } private boolean r_tidy_up() { int among_var; // (, line 183 // [, line 184 ket = cursor; // substring, line 184 among_var = find_among_b(a_7, 4); if (among_var == 0) { return false; } // ], line 184 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 188 // delete, line 188 slice_del(); // [, line 189 ket = cursor; // literal, line 189 if (!(eq_s_b(1, "\u043D"))) { return false; } // ], line 189 bra = cursor; // literal, line 189 if (!(eq_s_b(1, "\u043D"))) { return false; } // delete, line 189 slice_del(); break; case 2: // (, line 192 // literal, line 192 if (!(eq_s_b(1, "\u043D"))) { return false; } // delete, line 192 slice_del(); break; case 3: // (, line 194 // delete, line 194 slice_del(); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 199 // do, line 201 v_1 = cursor; lab0: do { // call mark_regions, line 201 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 202 limit_backward = cursor; cursor = limit; // setlimit, line 202 v_2 = limit - cursor; // tomark, line 202 if (cursor < I_pV) { return false; } cursor = I_pV; v_3 = limit_backward; limit_backward = cursor; cursor = limit - v_2; // (, line 202 // do, line 203 v_4 = limit - cursor; lab1: do { // (, line 203 // or, line 204 lab2: do { v_5 = limit - cursor; lab3: do { // call perfective_gerund, line 204 if (!r_perfective_gerund()) { break lab3; } break lab2; } while (false); cursor = limit - v_5; // (, line 205 // try, line 205 v_6 = limit - cursor; lab4: do { // call reflexive, line 205 if (!r_reflexive()) { cursor = limit - v_6; break lab4; } } while (false); // or, line 206 lab5: do { v_7 = limit - cursor; lab6: do { // call adjectival, line 206 if (!r_adjectival()) { break lab6; } break lab5; } while (false); cursor = limit - v_7; lab7: do { // call verb, line 206 if (!r_verb()) { break lab7; } break lab5; } while (false); cursor = limit - v_7; // call noun, line 206 if (!r_noun()) { break lab1; } } while (false); } while (false); } while (false); cursor = limit - v_4; // try, line 209 v_8 = limit - cursor; lab8: do { // (, line 209 // [, line 209 ket = cursor; // literal, line 209 if (!(eq_s_b(1, "\u0438"))) { cursor = limit - v_8; break lab8; } // ], line 209 bra = cursor; // delete, line 209 slice_del(); } while (false); // do, line 212 v_9 = limit - cursor; lab9: do { // call derivational, line 212 if (!r_derivational()) { break lab9; } } while (false); cursor = limit - v_9; // do, line 213 v_10 = limit - cursor; lab10: do { // call tidy_up, line 213 if (!r_tidy_up()) { break lab10; } } while (false); cursor = limit - v_10; limit_backward = v_3; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof russianStemmer; } public int hashCode() { return russianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/italianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/italianStemmer.j0100664 0001750 0001750 00000153750 14135770370 034205 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class italianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static italianStemmer methodObject = new italianStemmer (); private final static Among a_0[] = { new Among ( "", -1, 7, "", methodObject ), new Among ( "qu", 0, 6, "", methodObject ), new Among ( "\u00E1", 0, 1, "", methodObject ), new Among ( "\u00E9", 0, 2, "", methodObject ), new Among ( "\u00ED", 0, 3, "", methodObject ), new Among ( "\u00F3", 0, 4, "", methodObject ), new Among ( "\u00FA", 0, 5, "", methodObject ) }; private final static Among a_1[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "I", 0, 1, "", methodObject ), new Among ( "U", 0, 2, "", methodObject ) }; private final static Among a_2[] = { new Among ( "la", -1, -1, "", methodObject ), new Among ( "cela", 0, -1, "", methodObject ), new Among ( "gliela", 0, -1, "", methodObject ), new Among ( "mela", 0, -1, "", methodObject ), new Among ( "tela", 0, -1, "", methodObject ), new Among ( "vela", 0, -1, "", methodObject ), new Among ( "le", -1, -1, "", methodObject ), new Among ( "cele", 6, -1, "", methodObject ), new Among ( "gliele", 6, -1, "", methodObject ), new Among ( "mele", 6, -1, "", methodObject ), new Among ( "tele", 6, -1, "", methodObject ), new Among ( "vele", 6, -1, "", methodObject ), new Among ( "ne", -1, -1, "", methodObject ), new Among ( "cene", 12, -1, "", methodObject ), new Among ( "gliene", 12, -1, "", methodObject ), new Among ( "mene", 12, -1, "", methodObject ), new Among ( "sene", 12, -1, "", methodObject ), new Among ( "tene", 12, -1, "", methodObject ), new Among ( "vene", 12, -1, "", methodObject ), new Among ( "ci", -1, -1, "", methodObject ), new Among ( "li", -1, -1, "", methodObject ), new Among ( "celi", 20, -1, "", methodObject ), new Among ( "glieli", 20, -1, "", methodObject ), new Among ( "meli", 20, -1, "", methodObject ), new Among ( "teli", 20, -1, "", methodObject ), new Among ( "veli", 20, -1, "", methodObject ), new Among ( "gli", 20, -1, "", methodObject ), new Among ( "mi", -1, -1, "", methodObject ), new Among ( "si", -1, -1, "", methodObject ), new Among ( "ti", -1, -1, "", methodObject ), new Among ( "vi", -1, -1, "", methodObject ), new Among ( "lo", -1, -1, "", methodObject ), new Among ( "celo", 31, -1, "", methodObject ), new Among ( "glielo", 31, -1, "", methodObject ), new Among ( "melo", 31, -1, "", methodObject ), new Among ( "telo", 31, -1, "", methodObject ), new Among ( "velo", 31, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ando", -1, 1, "", methodObject ), new Among ( "endo", -1, 1, "", methodObject ), new Among ( "ar", -1, 2, "", methodObject ), new Among ( "er", -1, 2, "", methodObject ), new Among ( "ir", -1, 2, "", methodObject ) }; private final static Among a_4[] = { new Among ( "ic", -1, -1, "", methodObject ), new Among ( "abil", -1, -1, "", methodObject ), new Among ( "os", -1, -1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "ic", -1, 1, "", methodObject ), new Among ( "abil", -1, 1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "ica", -1, 1, "", methodObject ), new Among ( "logia", -1, 3, "", methodObject ), new Among ( "osa", -1, 1, "", methodObject ), new Among ( "ista", -1, 1, "", methodObject ), new Among ( "iva", -1, 9, "", methodObject ), new Among ( "anza", -1, 1, "", methodObject ), new Among ( "enza", -1, 5, "", methodObject ), new Among ( "ice", -1, 1, "", methodObject ), new Among ( "atrice", 7, 1, "", methodObject ), new Among ( "iche", -1, 1, "", methodObject ), new Among ( "logie", -1, 3, "", methodObject ), new Among ( "abile", -1, 1, "", methodObject ), new Among ( "ibile", -1, 1, "", methodObject ), new Among ( "usione", -1, 4, "", methodObject ), new Among ( "azione", -1, 2, "", methodObject ), new Among ( "uzione", -1, 4, "", methodObject ), new Among ( "atore", -1, 2, "", methodObject ), new Among ( "ose", -1, 1, "", methodObject ), new Among ( "ante", -1, 1, "", methodObject ), new Among ( "mente", -1, 1, "", methodObject ), new Among ( "amente", 19, 7, "", methodObject ), new Among ( "iste", -1, 1, "", methodObject ), new Among ( "ive", -1, 9, "", methodObject ), new Among ( "anze", -1, 1, "", methodObject ), new Among ( "enze", -1, 5, "", methodObject ), new Among ( "ici", -1, 1, "", methodObject ), new Among ( "atrici", 25, 1, "", methodObject ), new Among ( "ichi", -1, 1, "", methodObject ), new Among ( "abili", -1, 1, "", methodObject ), new Among ( "ibili", -1, 1, "", methodObject ), new Among ( "ismi", -1, 1, "", methodObject ), new Among ( "usioni", -1, 4, "", methodObject ), new Among ( "azioni", -1, 2, "", methodObject ), new Among ( "uzioni", -1, 4, "", methodObject ), new Among ( "atori", -1, 2, "", methodObject ), new Among ( "osi", -1, 1, "", methodObject ), new Among ( "anti", -1, 1, "", methodObject ), new Among ( "amenti", -1, 6, "", methodObject ), new Among ( "imenti", -1, 6, "", methodObject ), new Among ( "isti", -1, 1, "", methodObject ), new Among ( "ivi", -1, 9, "", methodObject ), new Among ( "ico", -1, 1, "", methodObject ), new Among ( "ismo", -1, 1, "", methodObject ), new Among ( "oso", -1, 1, "", methodObject ), new Among ( "amento", -1, 6, "", methodObject ), new Among ( "imento", -1, 6, "", methodObject ), new Among ( "ivo", -1, 9, "", methodObject ), new Among ( "it\u00E0", -1, 8, "", methodObject ), new Among ( "ist\u00E0", -1, 1, "", methodObject ), new Among ( "ist\u00E8", -1, 1, "", methodObject ), new Among ( "ist\u00EC", -1, 1, "", methodObject ) }; private final static Among a_7[] = { new Among ( "isca", -1, 1, "", methodObject ), new Among ( "enda", -1, 1, "", methodObject ), new Among ( "ata", -1, 1, "", methodObject ), new Among ( "ita", -1, 1, "", methodObject ), new Among ( "uta", -1, 1, "", methodObject ), new Among ( "ava", -1, 1, "", methodObject ), new Among ( "eva", -1, 1, "", methodObject ), new Among ( "iva", -1, 1, "", methodObject ), new Among ( "erebbe", -1, 1, "", methodObject ), new Among ( "irebbe", -1, 1, "", methodObject ), new Among ( "isce", -1, 1, "", methodObject ), new Among ( "ende", -1, 1, "", methodObject ), new Among ( "are", -1, 1, "", methodObject ), new Among ( "ere", -1, 1, "", methodObject ), new Among ( "ire", -1, 1, "", methodObject ), new Among ( "asse", -1, 1, "", methodObject ), new Among ( "ate", -1, 1, "", methodObject ), new Among ( "avate", 16, 1, "", methodObject ), new Among ( "evate", 16, 1, "", methodObject ), new Among ( "ivate", 16, 1, "", methodObject ), new Among ( "ete", -1, 1, "", methodObject ), new Among ( "erete", 20, 1, "", methodObject ), new Among ( "irete", 20, 1, "", methodObject ), new Among ( "ite", -1, 1, "", methodObject ), new Among ( "ereste", -1, 1, "", methodObject ), new Among ( "ireste", -1, 1, "", methodObject ), new Among ( "ute", -1, 1, "", methodObject ), new Among ( "erai", -1, 1, "", methodObject ), new Among ( "irai", -1, 1, "", methodObject ), new Among ( "isci", -1, 1, "", methodObject ), new Among ( "endi", -1, 1, "", methodObject ), new Among ( "erei", -1, 1, "", methodObject ), new Among ( "irei", -1, 1, "", methodObject ), new Among ( "assi", -1, 1, "", methodObject ), new Among ( "ati", -1, 1, "", methodObject ), new Among ( "iti", -1, 1, "", methodObject ), new Among ( "eresti", -1, 1, "", methodObject ), new Among ( "iresti", -1, 1, "", methodObject ), new Among ( "uti", -1, 1, "", methodObject ), new Among ( "avi", -1, 1, "", methodObject ), new Among ( "evi", -1, 1, "", methodObject ), new Among ( "ivi", -1, 1, "", methodObject ), new Among ( "isco", -1, 1, "", methodObject ), new Among ( "ando", -1, 1, "", methodObject ), new Among ( "endo", -1, 1, "", methodObject ), new Among ( "Yamo", -1, 1, "", methodObject ), new Among ( "iamo", -1, 1, "", methodObject ), new Among ( "avamo", -1, 1, "", methodObject ), new Among ( "evamo", -1, 1, "", methodObject ), new Among ( "ivamo", -1, 1, "", methodObject ), new Among ( "eremo", -1, 1, "", methodObject ), new Among ( "iremo", -1, 1, "", methodObject ), new Among ( "assimo", -1, 1, "", methodObject ), new Among ( "ammo", -1, 1, "", methodObject ), new Among ( "emmo", -1, 1, "", methodObject ), new Among ( "eremmo", 54, 1, "", methodObject ), new Among ( "iremmo", 54, 1, "", methodObject ), new Among ( "immo", -1, 1, "", methodObject ), new Among ( "ano", -1, 1, "", methodObject ), new Among ( "iscano", 58, 1, "", methodObject ), new Among ( "avano", 58, 1, "", methodObject ), new Among ( "evano", 58, 1, "", methodObject ), new Among ( "ivano", 58, 1, "", methodObject ), new Among ( "eranno", -1, 1, "", methodObject ), new Among ( "iranno", -1, 1, "", methodObject ), new Among ( "ono", -1, 1, "", methodObject ), new Among ( "iscono", 65, 1, "", methodObject ), new Among ( "arono", 65, 1, "", methodObject ), new Among ( "erono", 65, 1, "", methodObject ), new Among ( "irono", 65, 1, "", methodObject ), new Among ( "erebbero", -1, 1, "", methodObject ), new Among ( "irebbero", -1, 1, "", methodObject ), new Among ( "assero", -1, 1, "", methodObject ), new Among ( "essero", -1, 1, "", methodObject ), new Among ( "issero", -1, 1, "", methodObject ), new Among ( "ato", -1, 1, "", methodObject ), new Among ( "ito", -1, 1, "", methodObject ), new Among ( "uto", -1, 1, "", methodObject ), new Among ( "avo", -1, 1, "", methodObject ), new Among ( "evo", -1, 1, "", methodObject ), new Among ( "ivo", -1, 1, "", methodObject ), new Among ( "ar", -1, 1, "", methodObject ), new Among ( "ir", -1, 1, "", methodObject ), new Among ( "er\u00E0", -1, 1, "", methodObject ), new Among ( "ir\u00E0", -1, 1, "", methodObject ), new Among ( "er\u00F2", -1, 1, "", methodObject ), new Among ( "ir\u00F2", -1, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 }; private static final char g_AEIO[] = {17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 }; private static final char g_CG[] = {17 }; private int I_p2; private int I_p1; private int I_pV; private void copy_from(italianStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_prelude() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 34 // test, line 35 v_1 = cursor; // repeat, line 35 replab0: while(true) { v_2 = cursor; lab1: do { // (, line 35 // [, line 36 bra = cursor; // substring, line 36 among_var = find_among(a_0, 7); if (among_var == 0) { break lab1; } // ], line 36 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 37 // <-, line 37 slice_from("\u00E0"); break; case 2: // (, line 38 // <-, line 38 slice_from("\u00E8"); break; case 3: // (, line 39 // <-, line 39 slice_from("\u00EC"); break; case 4: // (, line 40 // <-, line 40 slice_from("\u00F2"); break; case 5: // (, line 41 // <-, line 41 slice_from("\u00F9"); break; case 6: // (, line 42 // <-, line 42 slice_from("qU"); break; case 7: // (, line 43 // next, line 43 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_2; break replab0; } cursor = v_1; // repeat, line 46 replab2: while(true) { v_3 = cursor; lab3: do { // goto, line 46 golab4: while(true) { v_4 = cursor; lab5: do { // (, line 46 if (!(in_grouping(g_v, 97, 249))) { break lab5; } // [, line 47 bra = cursor; // or, line 47 lab6: do { v_5 = cursor; lab7: do { // (, line 47 // literal, line 47 if (!(eq_s(1, "u"))) { break lab7; } // ], line 47 ket = cursor; if (!(in_grouping(g_v, 97, 249))) { break lab7; } // <-, line 47 slice_from("U"); break lab6; } while (false); cursor = v_5; // (, line 48 // literal, line 48 if (!(eq_s(1, "i"))) { break lab5; } // ], line 48 ket = cursor; if (!(in_grouping(g_v, 97, 249))) { break lab5; } // <-, line 48 slice_from("I"); } while (false); cursor = v_4; break golab4; } while (false); cursor = v_4; if (cursor >= limit) { break lab3; } cursor++; } continue replab2; } while (false); cursor = v_3; break replab2; } return true; } private boolean r_mark_regions() { int v_1; int v_2; int v_3; int v_6; int v_8; // (, line 52 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 58 v_1 = cursor; lab0: do { // (, line 58 // or, line 60 lab1: do { v_2 = cursor; lab2: do { // (, line 59 if (!(in_grouping(g_v, 97, 249))) { break lab2; } // or, line 59 lab3: do { v_3 = cursor; lab4: do { // (, line 59 if (!(out_grouping(g_v, 97, 249))) { break lab4; } // gopast, line 59 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 249))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab4; } cursor++; } break lab3; } while (false); cursor = v_3; // (, line 59 if (!(in_grouping(g_v, 97, 249))) { break lab2; } // gopast, line 59 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 249))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab2; } cursor++; } } while (false); break lab1; } while (false); cursor = v_2; // (, line 61 if (!(out_grouping(g_v, 97, 249))) { break lab0; } // or, line 61 lab9: do { v_6 = cursor; lab10: do { // (, line 61 if (!(out_grouping(g_v, 97, 249))) { break lab10; } // gopast, line 61 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 249))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab10; } cursor++; } break lab9; } while (false); cursor = v_6; // (, line 61 if (!(in_grouping(g_v, 97, 249))) { break lab0; } // next, line 61 if (cursor >= limit) { break lab0; } cursor++; } while (false); } while (false); // setmark pV, line 62 I_pV = cursor; } while (false); cursor = v_1; // do, line 64 v_8 = cursor; lab13: do { // (, line 64 // gopast, line 65 golab14: while(true) { lab15: do { if (!(in_grouping(g_v, 97, 249))) { break lab15; } break golab14; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 65 golab16: while(true) { lab17: do { if (!(out_grouping(g_v, 97, 249))) { break lab17; } break golab16; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p1, line 65 I_p1 = cursor; // gopast, line 66 golab18: while(true) { lab19: do { if (!(in_grouping(g_v, 97, 249))) { break lab19; } break golab18; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 66 golab20: while(true) { lab21: do { if (!(out_grouping(g_v, 97, 249))) { break lab21; } break golab20; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p2, line 66 I_p2 = cursor; } while (false); cursor = v_8; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 70 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 70 // [, line 72 bra = cursor; // substring, line 72 among_var = find_among(a_1, 3); if (among_var == 0) { break lab1; } // ], line 72 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 73 // <-, line 73 slice_from("i"); break; case 2: // (, line 74 // <-, line 74 slice_from("u"); break; case 3: // (, line 75 // next, line 75 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_attached_pronoun() { int among_var; // (, line 86 // [, line 87 ket = cursor; // substring, line 87 if (find_among_b(a_2, 37) == 0) { return false; } // ], line 87 bra = cursor; // among, line 97 among_var = find_among_b(a_3, 5); if (among_var == 0) { return false; } // (, line 97 // call RV, line 97 if (!r_RV()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 98 // delete, line 98 slice_del(); break; case 2: // (, line 99 // <-, line 99 slice_from("e"); break; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; // (, line 103 // [, line 104 ket = cursor; // substring, line 104 among_var = find_among_b(a_6, 51); if (among_var == 0) { return false; } // ], line 104 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 111 // call R2, line 111 if (!r_R2()) { return false; } // delete, line 111 slice_del(); break; case 2: // (, line 113 // call R2, line 113 if (!r_R2()) { return false; } // delete, line 113 slice_del(); // try, line 114 v_1 = limit - cursor; lab0: do { // (, line 114 // [, line 114 ket = cursor; // literal, line 114 if (!(eq_s_b(2, "ic"))) { cursor = limit - v_1; break lab0; } // ], line 114 bra = cursor; // call R2, line 114 if (!r_R2()) { cursor = limit - v_1; break lab0; } // delete, line 114 slice_del(); } while (false); break; case 3: // (, line 117 // call R2, line 117 if (!r_R2()) { return false; } // <-, line 117 slice_from("log"); break; case 4: // (, line 119 // call R2, line 119 if (!r_R2()) { return false; } // <-, line 119 slice_from("u"); break; case 5: // (, line 121 // call R2, line 121 if (!r_R2()) { return false; } // <-, line 121 slice_from("ente"); break; case 6: // (, line 123 // call RV, line 123 if (!r_RV()) { return false; } // delete, line 123 slice_del(); break; case 7: // (, line 124 // call R1, line 125 if (!r_R1()) { return false; } // delete, line 125 slice_del(); // try, line 126 v_2 = limit - cursor; lab1: do { // (, line 126 // [, line 127 ket = cursor; // substring, line 127 among_var = find_among_b(a_4, 4); if (among_var == 0) { cursor = limit - v_2; break lab1; } // ], line 127 bra = cursor; // call R2, line 127 if (!r_R2()) { cursor = limit - v_2; break lab1; } // delete, line 127 slice_del(); switch(among_var) { case 0: cursor = limit - v_2; break lab1; case 1: // (, line 128 // [, line 128 ket = cursor; // literal, line 128 if (!(eq_s_b(2, "at"))) { cursor = limit - v_2; break lab1; } // ], line 128 bra = cursor; // call R2, line 128 if (!r_R2()) { cursor = limit - v_2; break lab1; } // delete, line 128 slice_del(); break; } } while (false); break; case 8: // (, line 133 // call R2, line 134 if (!r_R2()) { return false; } // delete, line 134 slice_del(); // try, line 135 v_3 = limit - cursor; lab2: do { // (, line 135 // [, line 136 ket = cursor; // substring, line 136 among_var = find_among_b(a_5, 3); if (among_var == 0) { cursor = limit - v_3; break lab2; } // ], line 136 bra = cursor; switch(among_var) { case 0: cursor = limit - v_3; break lab2; case 1: // (, line 137 // call R2, line 137 if (!r_R2()) { cursor = limit - v_3; break lab2; } // delete, line 137 slice_del(); break; } } while (false); break; case 9: // (, line 141 // call R2, line 142 if (!r_R2()) { return false; } // delete, line 142 slice_del(); // try, line 143 v_4 = limit - cursor; lab3: do { // (, line 143 // [, line 143 ket = cursor; // literal, line 143 if (!(eq_s_b(2, "at"))) { cursor = limit - v_4; break lab3; } // ], line 143 bra = cursor; // call R2, line 143 if (!r_R2()) { cursor = limit - v_4; break lab3; } // delete, line 143 slice_del(); // [, line 143 ket = cursor; // literal, line 143 if (!(eq_s_b(2, "ic"))) { cursor = limit - v_4; break lab3; } // ], line 143 bra = cursor; // call R2, line 143 if (!r_R2()) { cursor = limit - v_4; break lab3; } // delete, line 143 slice_del(); } while (false); break; } return true; } private boolean r_verb_suffix() { int among_var; int v_1; int v_2; // setlimit, line 148 v_1 = limit - cursor; // tomark, line 148 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 148 // [, line 149 ket = cursor; // substring, line 149 among_var = find_among_b(a_7, 87); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 149 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 163 // delete, line 163 slice_del(); break; } limit_backward = v_2; return true; } private boolean r_vowel_suffix() { int v_1; int v_2; // (, line 170 // try, line 171 v_1 = limit - cursor; lab0: do { // (, line 171 // [, line 172 ket = cursor; if (!(in_grouping_b(g_AEIO, 97, 242))) { cursor = limit - v_1; break lab0; } // ], line 172 bra = cursor; // call RV, line 172 if (!r_RV()) { cursor = limit - v_1; break lab0; } // delete, line 172 slice_del(); // [, line 173 ket = cursor; // literal, line 173 if (!(eq_s_b(1, "i"))) { cursor = limit - v_1; break lab0; } // ], line 173 bra = cursor; // call RV, line 173 if (!r_RV()) { cursor = limit - v_1; break lab0; } // delete, line 173 slice_del(); } while (false); // try, line 175 v_2 = limit - cursor; lab1: do { // (, line 175 // [, line 176 ket = cursor; // literal, line 176 if (!(eq_s_b(1, "h"))) { cursor = limit - v_2; break lab1; } // ], line 176 bra = cursor; if (!(in_grouping_b(g_CG, 99, 103))) { cursor = limit - v_2; break lab1; } // call RV, line 176 if (!r_RV()) { cursor = limit - v_2; break lab1; } // delete, line 176 slice_del(); } while (false); return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; // (, line 181 // do, line 182 v_1 = cursor; lab0: do { // call prelude, line 182 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 183 v_2 = cursor; lab1: do { // call mark_regions, line 183 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 184 limit_backward = cursor; cursor = limit; // (, line 184 // do, line 185 v_3 = limit - cursor; lab2: do { // call attached_pronoun, line 185 if (!r_attached_pronoun()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 186 v_4 = limit - cursor; lab3: do { // (, line 186 // or, line 186 lab4: do { v_5 = limit - cursor; lab5: do { // call standard_suffix, line 186 if (!r_standard_suffix()) { break lab5; } break lab4; } while (false); cursor = limit - v_5; // call verb_suffix, line 186 if (!r_verb_suffix()) { break lab3; } } while (false); } while (false); cursor = limit - v_4; // do, line 187 v_6 = limit - cursor; lab6: do { // call vowel_suffix, line 187 if (!r_vowel_suffix()) { break lab6; } } while (false); cursor = limit - v_6; cursor = limit_backward; // do, line 189 v_7 = cursor; lab7: do { // call postlude, line 189 if (!r_postlude()) { break lab7; } } while (false); cursor = v_7; return true; } public boolean equals( Object o ) { return o instanceof italianStemmer; } public int hashCode() { return italianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000162 14135770370 032677 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/SnowballProgram.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/SnowballProgram.0100664 0001750 0001750 00000027267 14135770370 034171 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package opennlp.tools.stemmer.snowball; import java.lang.reflect.InvocationTargetException; class SnowballProgram { protected SnowballProgram() { current = new StringBuffer(); setCurrent(""); } /** * Set the current string. */ public void setCurrent(String value) { current.replace(0, current.length(), value); cursor = 0; limit = current.length(); limit_backward = 0; bra = cursor; ket = limit; } /** * Get the current string. */ public String getCurrent() { String result = current.toString(); // Make a new StringBuffer. If we reuse the old one, and a user of // the library keeps a reference to the buffer returned (for example, // by converting it to a String in a way which doesn't force a copy), // the buffer size will not decrease, and we will risk wasting a large // amount of memory. // Thanks to Wolfram Esser for spotting this problem. current = new StringBuffer(); return result; } // current string protected StringBuffer current; protected int cursor; protected int limit; protected int limit_backward; protected int bra; protected int ket; protected void copy_from(SnowballProgram other) { current = other.current; cursor = other.cursor; limit = other.limit; limit_backward = other.limit_backward; bra = other.bra; ket = other.ket; } protected boolean in_grouping(char [] s, int min, int max) { if (cursor >= limit) return false; char ch = current.charAt(cursor); if (ch > max || ch < min) return false; ch -= min; if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return false; cursor++; return true; } protected boolean in_grouping_b(char [] s, int min, int max) { if (cursor <= limit_backward) return false; char ch = current.charAt(cursor - 1); if (ch > max || ch < min) return false; ch -= min; if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return false; cursor--; return true; } protected boolean out_grouping(char [] s, int min, int max) { if (cursor >= limit) return false; char ch = current.charAt(cursor); if (ch > max || ch < min) { cursor++; return true; } ch -= min; if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) { cursor ++; return true; } return false; } protected boolean out_grouping_b(char [] s, int min, int max) { if (cursor <= limit_backward) return false; char ch = current.charAt(cursor - 1); if (ch > max || ch < min) { cursor--; return true; } ch -= min; if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) { cursor--; return true; } return false; } protected boolean in_range(int min, int max) { if (cursor >= limit) return false; char ch = current.charAt(cursor); if (ch > max || ch < min) return false; cursor++; return true; } protected boolean in_range_b(int min, int max) { if (cursor <= limit_backward) return false; char ch = current.charAt(cursor - 1); if (ch > max || ch < min) return false; cursor--; return true; } protected boolean out_range(int min, int max) { if (cursor >= limit) return false; char ch = current.charAt(cursor); if (!(ch > max || ch < min)) return false; cursor++; return true; } protected boolean out_range_b(int min, int max) { if (cursor <= limit_backward) return false; char ch = current.charAt(cursor - 1); if(!(ch > max || ch < min)) return false; cursor--; return true; } protected boolean eq_s(int s_size, String s) { if (limit - cursor < s_size) return false; int i; for (i = 0; i != s_size; i++) { if (current.charAt(cursor + i) != s.charAt(i)) return false; } cursor += s_size; return true; } protected boolean eq_s(CharSequence s) { return eq_s(s.length(), s.toString()); } protected boolean eq_s_b(int s_size, String s) { if (cursor - limit_backward < s_size) return false; int i; for (i = 0; i != s_size; i++) { if (current.charAt(cursor - s_size + i) != s.charAt(i)) return false; } cursor -= s_size; return true; } protected boolean eq_s_b(CharSequence s) { return eq_s_b(s.length(), s.toString()); } protected boolean eq_v(CharSequence s) { return eq_s(s.length(), s.toString()); } protected boolean eq_v_b(CharSequence s) { return eq_s_b(s.length(), s.toString()); } protected int find_among(Among v[], int v_size) { int i = 0; int j = v_size; int c = cursor; int l = limit; int common_i = 0; int common_j = 0; boolean first_key_inspected = false; while(true) { int k = i + ((j - i) >> 1); int diff = 0; int common = common_i < common_j ? common_i : common_j; // smaller Among w = v[k]; int i2; for (i2 = common; i2 < w.s_size; i2++) { if (c + common == l) { diff = -1; break; } diff = current.charAt(c + common) - w.s[i2]; if (diff != 0) break; common++; } if (diff < 0) { j = k; common_j = common; } else { i = k; common_i = common; } if (j - i <= 1) { if (i > 0) break; // v->s has been inspected if (j == i) break; // only one item in v // - but now we need to go round once more to get // v->s inspected. This looks messy, but is actually // the optimal approach. if (first_key_inspected) break; first_key_inspected = true; } } while(true) { Among w = v[i]; if (common_i >= w.s_size) { cursor = c + w.s_size; if (w.method == null) return w.result; boolean res; try { Object resobj = w.method.invoke(w.methodobject, new Object[0]); res = resobj.toString().equals("true"); } catch (InvocationTargetException e) { res = false; // FIXME - debug message } catch (IllegalAccessException e) { res = false; // FIXME - debug message } cursor = c + w.s_size; if (res) return w.result; } i = w.substring_i; if (i < 0) return 0; } } protected int find_among(Among v[]){ return find_among(v, v.length); } // find_among_b is for backwards processing. Same comments apply protected int find_among_b(Among v[], int v_size) { int i = 0; int j = v_size; int c = cursor; int lb = limit_backward; int common_i = 0; int common_j = 0; boolean first_key_inspected = false; while(true) { int k = i + ((j - i) >> 1); int diff = 0; int common = common_i < common_j ? common_i : common_j; Among w = v[k]; int i2; for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { if (c - common == lb) { diff = -1; break; } diff = current.charAt(c - 1 - common) - w.s[i2]; if (diff != 0) break; common++; } if (diff < 0) { j = k; common_j = common; } else { i = k; common_i = common; } if (j - i <= 1) { if (i > 0) break; if (j == i) break; if (first_key_inspected) break; first_key_inspected = true; } } while(true) { Among w = v[i]; if (common_i >= w.s_size) { cursor = c - w.s_size; if (w.method == null) return w.result; boolean res; try { Object resobj = w.method.invoke(w.methodobject, new Object[0]); res = resobj.toString().equals("true"); } catch (InvocationTargetException e) { res = false; // FIXME - debug message } catch (IllegalAccessException e) { res = false; // FIXME - debug message } cursor = c - w.s_size; if (res) return w.result; } i = w.substring_i; if (i < 0) return 0; } } protected int find_among_b(Among v[]){ return find_among_b(v, v.length); } /* to replace chars between c_bra and c_ket in current by the * chars in s. */ protected int replace_s(int c_bra, int c_ket, String s) { int adjustment = s.length() - (c_ket - c_bra); current.replace(c_bra, c_ket, s); limit += adjustment; if (cursor >= c_ket) cursor += adjustment; else if (cursor > c_bra) cursor = c_bra; return adjustment; } protected void slice_check() { if (bra < 0 || bra > ket || ket > limit || limit > current.length()) // this line could be removed { System.err.println("faulty slice operation"); // FIXME: report error somehow. /* fprintf(stderr, "faulty slice operation:\n"); debug(z, -1, 0); exit(1); */ } } protected void slice_from(String s) { slice_check(); replace_s(bra, ket, s); } protected void slice_from(CharSequence s) { slice_from(s.toString()); } protected void slice_del() { slice_from(""); } protected void insert(int c_bra, int c_ket, String s) { int adjustment = replace_s(c_bra, c_ket, s); if (c_bra <= bra) bra += adjustment; if (c_bra <= ket) ket += adjustment; } protected void insert(int c_bra, int c_ket, CharSequence s) { insert(c_bra, c_ket, s.toString()); } /* Copy the slice into the supplied StringBuffer */ protected StringBuffer slice_to(StringBuffer s) { slice_check(); int len = ket - bra; s.replace(0, s.length(), current.substring(bra, ket)); return s; } /* Copy the slice into the supplied StringBuilder */ protected StringBuilder slice_to(StringBuilder s) { slice_check(); int len = ket - bra; s.replace(0, s.length(), current.substring(bra, ket)); return s; } protected StringBuffer assign_to(StringBuffer s) { s.replace(0, s.length(), current.substring(0, limit)); return s; } protected StringBuilder assign_to(StringBuilder s) { s.replace(0, s.length(), current.substring(0, limit)); return s; } /* extern void debug(struct SN_env * z, int number, int line_count) { int i; int limit = SIZE(z->p); //if (number >= 0) printf("%3d (line %4d): '", number, line_count); if (number >= 0) printf("%3d (line %4d): [%d]'", number, line_count,limit); for (i = 0; i <= limit; i++) { if (z->lb == i) printf("{"); if (z->bra == i) printf("["); if (z->c == i) printf("|"); if (z->ket == i) printf("]"); if (z->l == i) printf("}"); if (i < limit) { int ch = z->p[i]; if (ch == 0) ch = '#'; printf("%c", ch); } } printf("'\n"); } */ } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000162 14135770370 032677 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/SnowballStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/SnowballStemmer.0100664 0001750 0001750 00000007322 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.stemmer.snowball; import opennlp.tools.stemmer.Stemmer; public class SnowballStemmer implements Stemmer { public enum ALGORITHM { ARABIC, DANISH, DUTCH, CATALAN, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HUNGARIAN, INDONESIAN, IRISH, ITALIAN, NORWEGIAN, PORTER, PORTUGUESE, ROMANIAN, RUSSIAN, SPANISH, SWEDISH, TURKISH } private final AbstractSnowballStemmer stemmer; private final int repeat; public SnowballStemmer(ALGORITHM algorithm, int repeat) { this.repeat = repeat; if (ALGORITHM.ARABIC.equals(algorithm)) { stemmer = new arabicStemmer(); } else if (ALGORITHM.DANISH.equals(algorithm)) { stemmer = new danishStemmer(); } else if (ALGORITHM.DUTCH.equals(algorithm)) { stemmer = new dutchStemmer(); } else if (ALGORITHM.CATALAN.equals(algorithm)) { stemmer = new catalanStemmer(); } else if (ALGORITHM.ENGLISH.equals(algorithm)) { stemmer = new englishStemmer(); } else if (ALGORITHM.FINNISH.equals(algorithm)) { stemmer = new finnishStemmer(); } else if (ALGORITHM.FRENCH.equals(algorithm)) { stemmer = new frenchStemmer(); } else if (ALGORITHM.GERMAN.equals(algorithm)) { stemmer = new germanStemmer(); } else if (ALGORITHM.GREEK.equals(algorithm)) { stemmer = new greekStemmer(); } else if (ALGORITHM.HUNGARIAN.equals(algorithm)) { stemmer = new hungarianStemmer(); } else if (ALGORITHM.INDONESIAN.equals(algorithm)) { stemmer = new indonesianStemmer(); } else if (ALGORITHM.IRISH.equals(algorithm)) { stemmer = new irishStemmer(); } else if (ALGORITHM.ITALIAN.equals(algorithm)) { stemmer = new italianStemmer(); } else if (ALGORITHM.NORWEGIAN.equals(algorithm)) { stemmer = new norwegianStemmer(); } else if (ALGORITHM.PORTER.equals(algorithm)) { stemmer = new porterStemmer(); } else if (ALGORITHM.PORTUGUESE.equals(algorithm)) { stemmer = new portugueseStemmer(); } else if (ALGORITHM.ROMANIAN.equals(algorithm)) { stemmer = new romanianStemmer(); } else if (ALGORITHM.RUSSIAN.equals(algorithm)) { stemmer = new russianStemmer(); } else if (ALGORITHM.SPANISH.equals(algorithm)) { stemmer = new spanishStemmer(); } else if (ALGORITHM.SWEDISH.equals(algorithm)) { stemmer = new swedishStemmer(); } else if (ALGORITHM.TURKISH.equals(algorithm)) { stemmer = new turkishStemmer(); } else { throw new IllegalStateException("Unexpected stemmer algorithm: " + algorithm); } } public SnowballStemmer(ALGORITHM algorithm) { this(algorithm, 1); } public CharSequence stem(CharSequence word) { stemmer.setCurrent(word.toString()); for (int i = 0; i < repeat; i++) { stemmer.stem(); } return stemmer.getCurrent(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000157 14135770370 032703 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/greekStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/greekStemmer.jav0100664 0001750 0001750 00000426335 14135770370 034212 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ public class greekStemmer extends AbstractSnowballStemmer { private final static greekStemmer methodObject = new greekStemmer(); private final static Among a_0[] = { new Among("", -1, 25, "", methodObject), new Among("\u0386", 0, 1, "", methodObject), new Among("\u0388", 0, 5, "", methodObject), new Among("\u0389", 0, 7, "", methodObject), new Among("\u038A", 0, 9, "", methodObject), new Among("\u038C", 0, 15, "", methodObject), new Among("\u038E", 0, 20, "", methodObject), new Among("\u038F", 0, 24, "", methodObject), new Among("\u0390", 0, 7, "", methodObject), new Among("\u0391", 0, 1, "", methodObject), new Among("\u0392", 0, 2, "", methodObject), new Among("\u0393", 0, 3, "", methodObject), new Among("\u0394", 0, 4, "", methodObject), new Among("\u0395", 0, 5, "", methodObject), new Among("\u0396", 0, 6, "", methodObject), new Among("\u0397", 0, 7, "", methodObject), new Among("\u0398", 0, 8, "", methodObject), new Among("\u0399", 0, 9, "", methodObject), new Among("\u039A", 0, 10, "", methodObject), new Among("\u039B", 0, 11, "", methodObject), new Among("\u039C", 0, 12, "", methodObject), new Among("\u039D", 0, 13, "", methodObject), new Among("\u039E", 0, 14, "", methodObject), new Among("\u039F", 0, 15, "", methodObject), new Among("\u03A0", 0, 16, "", methodObject), new Among("\u03A1", 0, 17, "", methodObject), new Among("\u03A3", 0, 18, "", methodObject), new Among("\u03A4", 0, 19, "", methodObject), new Among("\u03A5", 0, 20, "", methodObject), new Among("\u03A6", 0, 21, "", methodObject), new Among("\u03A7", 0, 22, "", methodObject), new Among("\u03A8", 0, 23, "", methodObject), new Among("\u03A9", 0, 24, "", methodObject), new Among("\u03AA", 0, 9, "", methodObject), new Among("\u03AB", 0, 20, "", methodObject), new Among("\u03AC", 0, 1, "", methodObject), new Among("\u03AD", 0, 5, "", methodObject), new Among("\u03AE", 0, 7, "", methodObject), new Among("\u03AF", 0, 9, "", methodObject), new Among("\u03B0", 0, 20, "", methodObject), new Among("\u03C2", 0, 18, "", methodObject), new Among("\u03CA", 0, 7, "", methodObject), new Among("\u03CB", 0, 20, "", methodObject), new Among("\u03CC", 0, 15, "", methodObject), new Among("\u03CD", 0, 20, "", methodObject), new Among("\u03CE", 0, 24, "", methodObject) }; private final static Among a_1[] = { new Among("\u03C3\u03BA\u03B1\u03B3\u03B9\u03B1", -1, 2, "", methodObject), new Among("\u03C6\u03B1\u03B3\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF\u03B3\u03B9\u03B1", -1, 3, "", methodObject), new Among("\u03C3\u03BF\u03B3\u03B9\u03B1", -1, 4, "", methodObject), new Among("\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03B1", -1, 5, "", methodObject), new Among("\u03BA\u03C1\u03B5\u03B1\u03C4\u03B1", -1, 6, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B1\u03C4\u03B1", -1, 7, "", methodObject), new Among("\u03C4\u03B5\u03C1\u03B1\u03C4\u03B1", -1, 8, "", methodObject), new Among("\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03B1", -1, 11, "", methodObject), new Among("\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03B1", -1, 10, "", methodObject), new Among("\u03C6\u03C9\u03C4\u03B1", -1, 9, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B1\u03C4\u03B7", -1, 7, "", methodObject), new Among("\u03C3\u03BA\u03B1\u03B3\u03B9\u03C9\u03BD", -1, 2, "", methodObject), new Among("\u03C6\u03B1\u03B3\u03B9\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 3, "", methodObject), new Among("\u03C3\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 4, "", methodObject), new Among("\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 5, "", methodObject), new Among("\u03BA\u03C1\u03B5\u03B1\u03C4\u03C9\u03BD", -1, 6, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B1\u03C4\u03C9\u03BD", -1, 7, "", methodObject), new Among("\u03C4\u03B5\u03C1\u03B1\u03C4\u03C9\u03BD", -1, 8, "", methodObject), new Among("\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03C9\u03BD", -1, 11, "", methodObject), new Among("\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03C9\u03BD", -1, 10, "", methodObject), new Among("\u03C6\u03C9\u03C4\u03C9\u03BD", -1, 9, "", methodObject), new Among("\u03BA\u03C1\u03B5\u03B1\u03C3", -1, 6, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B1\u03C3", -1, 7, "", methodObject), new Among("\u03C4\u03B5\u03C1\u03B1\u03C3", -1, 8, "", methodObject), new Among("\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C3", -1, 11, "", methodObject), new Among("\u03BA\u03C1\u03B5\u03B1\u03C4\u03BF\u03C3", -1, 6, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B1\u03C4\u03BF\u03C3", -1, 7, "", methodObject), new Among("\u03C4\u03B5\u03C1\u03B1\u03C4\u03BF\u03C3", -1, 8, "", methodObject), new Among("\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03BF\u03C3", -1, 11, "", methodObject), new Among("\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03BF\u03C3", -1, 10, "", methodObject), new Among("\u03C6\u03C9\u03C4\u03BF\u03C3", -1, 9, "", methodObject), new Among("\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C3", -1, 10, "", methodObject), new Among("\u03C6\u03C9\u03C3", -1, 9, "", methodObject), new Among("\u03C3\u03BA\u03B1\u03B3\u03B9\u03BF\u03C5", -1, 2, "", methodObject), new Among("\u03C6\u03B1\u03B3\u03B9\u03BF\u03C5", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 3, "", methodObject), new Among("\u03C3\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 4, "", methodObject), new Among("\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 5, "", methodObject) }; private final static Among a_2[] = { new Among("\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", 0, 1, "", methodObject), new Among("\u03B5\u03C0\u03B1", 0, 1, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", 0, 1, "", methodObject), new Among("\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", 0, 1, "", methodObject), new Among("\u03B5\u03BC\u03C0\u03B1", 0, 1, "", methodObject), new Among("\u03B4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03B8\u03C1\u03BF", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 7, 1, "", methodObject) }; private final static Among a_3[] = { new Among("\u03B2", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03B8\u03C5\u03C1\u03B9", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03C1\u03BA", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03C1\u03BA", -1, 1, "", methodObject), new Among("\u03BB", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03BA\u03BF\u03C1\u03BD", -1, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03B9\u03BC\u03C0", 7, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03C1", 9, 1, "", methodObject), new Among("\u03B1\u03BC\u03C0\u03B1\u03C1", 9, 1, "", methodObject), new Among("\u03B3\u03BA\u03C1", 9, 1, "", methodObject), new Among("\u03B2\u03BF\u03BB\u03B2\u03BF\u03C1", 9, 1, "", methodObject), new Among("\u03B3\u03BB\u03C5\u03BA\u03BF\u03C1", 9, 1, "", methodObject), new Among("\u03C0\u03B9\u03C0\u03B5\u03C1\u03BF\u03C1", 9, 1, "", methodObject), new Among("\u03C0\u03C1", 9, 1, "", methodObject), new Among("\u03BC\u03C0\u03C1", 16, 1, "", methodObject), new Among("\u03B1\u03C1\u03C1", 9, 1, "", methodObject), new Among("\u03B3\u03BB\u03C5\u03BA\u03C5\u03C1", 9, 1, "", methodObject), new Among("\u03C0\u03BF\u03BB\u03C5\u03C1", 9, 1, "", methodObject), new Among("\u03BB\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_4[] = { new Among("\u03B9\u03B6\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03BF\u03C5\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03BF\u03C5\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B1\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B5\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B5\u03B9", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03BF\u03C5\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B5\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03B5\u03B9\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03B6\u03C9", -1, 1, "", methodObject) }; private final static Among a_5[] = { new Among("\u03B2\u03B9", -1, 1, "", methodObject), new Among("\u03BB\u03B9", -1, 1, "", methodObject), new Among("\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B5\u03BD", -1, 1, "", methodObject), new Among("\u03C3", -1, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject), new Among("\u03C5\u03C8", -1, 1, "", methodObject), new Among("\u03B6\u03C9", -1, 1, "", methodObject) }; private final static Among a_6[] = { new Among("\u03C9\u03B8\u03B7\u03BA\u03B1", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B5", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B1\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03C9\u03B8\u03B7\u03BA\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_7[] = { new Among("\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03BC\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03C7\u03B1\u03C1\u03C4\u03BF\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03BE\u03B1\u03C1\u03C7\u03B1", -1, 1, "", methodObject), new Among("\u03BA\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03B5\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B1\u03C0\u03B5\u03BA\u03BB\u03B5", 8, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03C0\u03B5", -1, 1, "", methodObject), new Among("\u03B5\u03C0\u03B5", 13, 1, "", methodObject), new Among("\u03BC\u03B5\u03C4\u03B5\u03C0\u03B5", 14, 1, "", methodObject), new Among("\u03B5\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03B8\u03C1\u03BF", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 17, 1, "", methodObject) }; private final static Among a_8[] = { new Among("\u03B3\u03B5", -1, 1, "", methodObject), new Among("\u03B3\u03BA\u03B5", -1, 1, "", methodObject), new Among("\u03B3\u03BA", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03C5\u03BA\u03B1\u03BC", 3, 1, "", methodObject), new Among("\u03BA\u03BF\u03BC", 3, 1, "", methodObject), new Among("\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF", -1, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03BB\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03B4\u03B7\u03BC\u03BF\u03BA\u03C1\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03B1\u03C6", -1, 1, "", methodObject), new Among("\u03B3\u03B9\u03B3\u03B1\u03BD\u03C4\u03BF\u03B1\u03C6", 11, 1, "", methodObject) }; private final static Among a_9[] = { new Among("\u03B9\u03C3\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B1\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_10[] = { new Among("\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03BC\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03C7\u03B1\u03C1\u03C4\u03BF\u03C0\u03B1", -1, 1, "", methodObject), new Among("\u03B5\u03BE\u03B1\u03C1\u03C7\u03B1", -1, 1, "", methodObject), new Among("\u03BA\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03B5\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B1\u03C0\u03B5\u03BA\u03BB\u03B5", 8, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 7, 1, "", methodObject), new Among("\u03B4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03C0\u03B5", -1, 1, "", methodObject), new Among("\u03B5\u03C0\u03B5", 13, 1, "", methodObject), new Among("\u03BC\u03B5\u03C4\u03B5\u03C0\u03B5", 14, 1, "", methodObject), new Among("\u03B5\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03B8\u03C1\u03BF", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 17, 1, "", methodObject) }; private final static Among a_11[] = { new Among("\u03B9\u03C3\u03BF\u03C5\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BF\u03C5\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B5\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B5\u03B9", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BF\u03C5\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03B5\u03B9\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C9", -1, 1, "", methodObject) }; private final static Among a_12[] = { new Among("\u03BA\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 0, 1, "", methodObject), new Among("\u03C0\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03B4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03C3\u03B5", 4, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", -1, 1, "", methodObject) }; private final static Among a_13[] = { new Among("\u03B1\u03C4\u03B1", -1, 1, "", methodObject), new Among("\u03C6\u03B1", -1, 1, "", methodObject), new Among("\u03B7\u03C6\u03B1", 1, 1, "", methodObject), new Among("\u03BC\u03B5\u03B3", -1, 1, "", methodObject), new Among("\u03BB\u03C5\u03B3", -1, 1, "", methodObject), new Among("\u03B7\u03B4", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03B8", -1, 1, "", methodObject), new Among("\u03B5\u03C7\u03B8", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03BA", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03BA", -1, 1, "", methodObject), new Among("\u03C3\u03BA", -1, 1, "", methodObject), new Among("\u03C6\u03B9\u03BB", -1, 1, "", methodObject), new Among("\u03BA\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03B3\u03B5\u03BC", 13, 1, "", methodObject), new Among("\u03B1\u03C7\u03BD", -1, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03B1\u03C0", 16, 1, "", methodObject), new Among("\u03B5\u03BC\u03C0", 16, 1, "", methodObject), new Among("\u03B5\u03C5\u03C0", 16, 1, "", methodObject), new Among("\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03B1\u03BF\u03C1", -1, 1, "", methodObject), new Among("\u03B3\u03C5\u03C1", -1, 1, "", methodObject), new Among("\u03C7\u03C1", -1, 1, "", methodObject), new Among("\u03C7\u03C9\u03C1", -1, 1, "", methodObject), new Among("\u03BA\u03C4", -1, 1, "", methodObject), new Among("\u03B1\u03BA\u03C4", 25, 1, "", methodObject), new Among("\u03C7\u03C4", -1, 1, "", methodObject), new Among("\u03B1\u03C7\u03C4", 27, 1, "", methodObject), new Among("\u03C4\u03B1\u03C7", -1, 1, "", methodObject), new Among("\u03C3\u03C7", -1, 1, "", methodObject), new Among("\u03B1\u03C3\u03C7", 30, 1, "", methodObject), new Among("\u03C5\u03C8", -1, 1, "", methodObject) }; private final static Among a_14[] = { new Among("\u03B9\u03C3\u03C4\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03B7", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03BF\u03B9", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03BF", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03B5\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03B7\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03BF\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03C4\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_15[] = { new Among("\u03B5\u03B3\u03BA\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03BC\u03B5\u03C4\u03B1\u03C3\u03B5", 2, 1, "", methodObject), new Among("\u03BC\u03B9\u03BA\u03C1\u03BF\u03C3\u03B5", 2, 1, "", methodObject) }; private final static Among a_16[] = { new Among("\u03B4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03C4\u03B9\u03B4\u03B1\u03BD\u03B5", 0, 1, "", methodObject) }; private final static Among a_17[] = { new Among("\u03B1\u03C4\u03BF\u03BC\u03B9\u03BA", -1, 2, "", methodObject), new Among("\u03B5\u03B8\u03BD\u03B9\u03BA", -1, 4, "", methodObject), new Among("\u03C4\u03BF\u03C0\u03B9\u03BA", -1, 7, "", methodObject), new Among("\u03B5\u03BA\u03BB\u03B5\u03BA\u03C4\u03B9\u03BA", -1, 5, "", methodObject), new Among("\u03C3\u03BA\u03B5\u03C0\u03C4\u03B9\u03BA", -1, 6, "", methodObject), new Among("\u03B3\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA", -1, 3, "", methodObject), new Among("\u03B1\u03B3\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA", 5, 1, "", methodObject), new Among("\u03B1\u03BB\u03B5\u03BE\u03B1\u03BD\u03B4\u03C1\u03B9\u03BD", -1, 8, "", methodObject), new Among("\u03B8\u03B5\u03B1\u03C4\u03C1\u03B9\u03BD", -1, 10, "", methodObject), new Among("\u03B2\u03C5\u03B6\u03B1\u03BD\u03C4\u03B9\u03BD", -1, 9, "", methodObject) }; private final static Among a_18[] = { new Among("\u03B9\u03C3\u03BC\u03BF\u03B9", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BC\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BC\u03BF", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BC\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BC\u03BF\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BC\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_19[] = { new Among("\u03C3", -1, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject) }; private final static Among a_20[] = { new Among("\u03BF\u03C5\u03B4\u03B1\u03BA\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03B1\u03BA\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03B4\u03B1\u03BA\u03B9", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03B1\u03BA\u03B9", -1, 1, "", methodObject) }; private final static Among a_21[] = { new Among("\u03B2\u03B1\u03BC\u03B2", -1, 1, "", methodObject), new Among("\u03C3\u03BB\u03BF\u03B2", -1, 1, "", methodObject), new Among("\u03C4\u03C3\u03B5\u03C7\u03BF\u03C3\u03BB\u03BF\u03B2", 1, 1, "", methodObject), new Among("\u03C4\u03B6", -1, 1, "", methodObject), new Among("\u03BA", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C0\u03B1\u03BA", 4, 1, "", methodObject), new Among("\u03C3\u03BF\u03BA", 4, 1, "", methodObject), new Among("\u03C3\u03BA", 4, 1, "", methodObject), new Among("\u03BC\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03C0\u03BB", -1, 1, "", methodObject), new Among("\u03BB\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03C6\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03B9\u03BC", -1, 1, "", methodObject), new Among("\u03BA\u03BB\u03B9\u03BC", -1, 1, "", methodObject), new Among("\u03C6\u03B1\u03C1\u03BC", -1, 1, "", methodObject), new Among("\u03C3\u03C0\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C4\u03C1\u03B1\u03C0", -1, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject), new Among("\u03B2\u03C1", 18, 1, "", methodObject), new Among("\u03BB\u03B1\u03B2\u03C1", 19, 1, "", methodObject), new Among("\u03B1\u03BC\u03B2\u03C1", 19, 1, "", methodObject), new Among("\u03BC\u03B5\u03C1", 18, 1, "", methodObject), new Among("\u03B1\u03BD\u03B8\u03C1", 18, 1, "", methodObject), new Among("\u03BA\u03BF\u03C1", 18, 1, "", methodObject), new Among("\u03C3", -1, 1, "", methodObject), new Among("\u03BD\u03B1\u03B3\u03BA\u03B1\u03C3", 25, 1, "", methodObject), new Among("\u03BC\u03BF\u03C5\u03C3\u03C4", -1, 1, "", methodObject), new Among("\u03C1\u03C5", -1, 1, "", methodObject), new Among("\u03C6", -1, 1, "", methodObject), new Among("\u03C3\u03C6", 29, 1, "", methodObject), new Among("\u03B1\u03BB\u03B9\u03C3\u03C6", 30, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject) }; private final static Among a_22[] = { new Among("\u03B2", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C1\u03B4", -1, 1, "", methodObject), new Among("\u03B6", -1, 1, "", methodObject), new Among("\u03C3\u03BA", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B3\u03BB", -1, 1, "", methodObject), new Among("\u03C4\u03C1\u03B9\u03C0\u03BF\u03BB", -1, 1, "", methodObject), new Among("\u03B3\u03B9\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03B7\u03B3\u03BF\u03C5\u03BC\u03B5\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03BA\u03C1\u03C5\u03BD", -1, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03C4\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03C4\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03BD\u03C5\u03C6", -1, 1, "", methodObject) }; private final static Among a_23[] = { new Among("\u03B1\u03BA\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03B1\u03BA\u03B9\u03B1", 0, 1, "", methodObject), new Among("\u03B9\u03C4\u03C3\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03BA\u03B9", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03B1\u03BA\u03B9", 3, 1, "", methodObject), new Among("\u03B9\u03C4\u03C3\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03C4\u03C3\u03B1\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C4\u03C3\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_24[] = { new Among("\u03C8\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03B9\u03C6\u03BD", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF", -1, 1, "", methodObject), new Among("\u03B9\u03C1", -1, 1, "", methodObject) }; private final static Among a_25[] = { new Among("\u03B5", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03B9\u03C7\u03BD", -1, 1, "", methodObject) }; private final static Among a_26[] = { new Among("\u03B9\u03B4\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03B4\u03B9\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03B4\u03B9\u03BF", -1, 1, "", methodObject) }; private final static Among a_27[] = { new Among("\u03B9\u03B2", -1, 1, "", methodObject), new Among("\u03B4", -1, 1, "", methodObject), new Among("\u03C6\u03C1\u03B1\u03B3\u03BA", -1, 1, "", methodObject), new Among("\u03BB\u03C5\u03BA", -1, 1, "", methodObject), new Among("\u03BF\u03B2\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BC\u03B7\u03BD", -1, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject) }; private final static Among a_28[] = { new Among("\u03B9\u03C3\u03BA\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BA\u03BF", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BA\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03B9\u03C3\u03BA\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_29[] = { new Among("\u03B1\u03B4\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B1\u03B4\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_30[] = { new Among("\u03B3\u03B9\u03B1\u03B3\u03B9", -1, -1, "", methodObject), new Among("\u03B8\u03B5\u03B9", -1, -1, "", methodObject), new Among("\u03BF\u03BA", -1, -1, "", methodObject), new Among("\u03BC\u03B1\u03BC", -1, -1, "", methodObject), new Among("\u03BC\u03B1\u03BD", -1, -1, "", methodObject), new Among("\u03BC\u03C0\u03B1\u03BC\u03C0", -1, -1, "", methodObject), new Among("\u03C0\u03B5\u03B8\u03B5\u03C1", -1, -1, "", methodObject), new Among("\u03C0\u03B1\u03C4\u03B5\u03C1", -1, -1, "", methodObject), new Among("\u03BA\u03C5\u03C1", -1, -1, "", methodObject), new Among("\u03BD\u03C4\u03B1\u03BD\u03C4", -1, -1, "", methodObject) }; private final static Among a_31[] = { new Among("\u03B5\u03B4\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B5\u03B4\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_32[] = { new Among("\u03BC\u03B9\u03BB", -1, 1, "", methodObject), new Among("\u03B4\u03B1\u03C0", -1, 1, "", methodObject), new Among("\u03B3\u03B7\u03C0", -1, 1, "", methodObject), new Among("\u03B9\u03C0", -1, 1, "", methodObject), new Among("\u03B5\u03BC\u03C0", -1, 1, "", methodObject), new Among("\u03BF\u03C0", -1, 1, "", methodObject), new Among("\u03BA\u03C1\u03B1\u03C3\u03C0", -1, 1, "", methodObject), new Among("\u03C5\u03C0", -1, 1, "", methodObject) }; private final static Among a_33[] = { new Among("\u03BF\u03C5\u03B4\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03B4\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_34[] = { new Among("\u03C4\u03C1\u03B1\u03B3", -1, 1, "", methodObject), new Among("\u03C6\u03B5", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03BB\u03B9\u03B1\u03BA", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03BA", -1, 1, "", methodObject), new Among("\u03C3\u03BA", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03C4\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B2\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BB\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03C6\u03BB", -1, 1, "", methodObject), new Among("\u03C7\u03BD", -1, 1, "", methodObject), new Among("\u03C0\u03BB\u03B5\u03BE", -1, 1, "", methodObject), new Among("\u03C3\u03C0", -1, 1, "", methodObject), new Among("\u03C6\u03C1", -1, 1, "", methodObject), new Among("\u03C3", -1, 1, "", methodObject), new Among("\u03BB\u03B9\u03C7", -1, 1, "", methodObject) }; private final static Among a_35[] = { new Among("\u03B5\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B5\u03C9\u03C3", -1, 1, "", methodObject) }; private final static Among a_36[] = { new Among("\u03B4", -1, 1, "", methodObject), new Among("\u03B9\u03B4", 0, 1, "", methodObject), new Among("\u03B8", -1, 1, "", methodObject), new Among("\u03B3\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BD", -1, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03C1", -1, 1, "", methodObject) }; private final static Among a_37[] = { new Among("\u03B9\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_38[] = { new Among("\u03B9\u03BA\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03BA\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B9\u03BA\u03BF", -1, 1, "", methodObject), new Among("\u03B9\u03BA\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_39[] = { new Among("\u03B1\u03B4", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B1\u03B4", 0, 1, "", methodObject), new Among("\u03BA\u03B1\u03C4\u03B1\u03B4", 0, 1, "", methodObject), new Among("\u03B1\u03BD\u03C4\u03B9\u03B4", -1, 1, "", methodObject), new Among("\u03B5\u03BD\u03B4", -1, 1, "", methodObject), new Among("\u03C6\u03C5\u03BB\u03BF\u03B4", -1, 1, "", methodObject), new Among("\u03C5\u03C0\u03BF\u03B4", -1, 1, "", methodObject), new Among("\u03C0\u03C1\u03C9\u03C4\u03BF\u03B4", -1, 1, "", methodObject), new Among("\u03B5\u03BE\u03C9\u03B4", -1, 1, "", methodObject), new Among("\u03B7\u03B8", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B7\u03B8", 9, 1, "", methodObject), new Among("\u03BE\u03B9\u03BA", -1, 1, "", methodObject), new Among("\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03BC\u03BF\u03C7\u03B1\u03BB", 12, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03BF\u03BC\u03B7\u03BB", -1, 1, "", methodObject), new Among("\u03BC\u03C0\u03BF\u03BB", -1, 1, "", methodObject), new Among("\u03BC\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03C4\u03C3\u03B1\u03BC", -1, 1, "", methodObject), new Among("\u03B2\u03C1\u03C9\u03BC", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03BC\u03C0\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03BB\u03BB\u03B9\u03BD", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03C3\u03C4\u03B5\u03BB\u03BD", -1, 1, "", methodObject), new Among("\u03C6\u03B9\u03BB\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03BB\u03C0", -1, 1, "", methodObject), new Among("\u03B3\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03C7\u03B1\u03C3", -1, 1, "", methodObject), new Among("\u03BC\u03C0\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03C0\u03BB\u03B9\u03B1\u03C4\u03C3", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03C4\u03C3", -1, 1, "", methodObject), new Among("\u03C0\u03B9\u03C4\u03C3", -1, 1, "", methodObject), new Among("\u03C6\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03BC\u03C0\u03B1\u03B3\u03B9\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03BD\u03B9\u03C4", -1, 1, "", methodObject), new Among("\u03C0\u03B9\u03BA\u03B1\u03BD\u03C4", -1, 1, "", methodObject), new Among("\u03C3\u03B5\u03C1\u03C4", -1, 1, "", methodObject) }; private final static Among a_40[] = { new Among("\u03B1\u03B3\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03BA\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B1\u03BC\u03B5", 1, 1, "", methodObject), new Among("\u03B7\u03C3\u03B1\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B1\u03BC\u03B5", -1, 1, "", methodObject) }; private final static Among a_41[] = { new Among("\u03B2\u03BF\u03C5\u03B2", -1, 1, "", methodObject), new Among("\u03BE\u03B5\u03B8", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03B8", -1, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03B8", -1, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03BA", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B1\u03C0", -1, 1, "", methodObject), new Among("\u03C0\u03B9\u03BA\u03C1", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03C4", -1, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03C3\u03C4", -1, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject), new Among("\u03C3\u03B9\u03C7", 10, 1, "", methodObject) }; private final static Among a_42[] = { new Among("\u03C4\u03C1", -1, 1, "", methodObject), new Among("\u03C4\u03C3", -1, 1, "", methodObject) }; private final static Among a_43[] = { new Among("\u03B1\u03B3\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03BA\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B1\u03BD\u03B5", 1, 1, "", methodObject), new Among("\u03B7\u03C3\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03BF\u03BD\u03C4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03BD\u03C4\u03B1\u03BD\u03B5", 5, 1, "", methodObject), new Among("\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD\u03B5", 7, 1, "", methodObject), new Among("\u03BF\u03C4\u03B1\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03C4\u03B1\u03BD\u03B5", 9, 1, "", methodObject) }; private final static Among a_44[] = { new Among("\u03C4\u03B1\u03B2", -1, 1, "", methodObject), new Among("\u03BD\u03C4\u03B1\u03B2", 0, 1, "", methodObject), new Among("\u03C8\u03B7\u03BB\u03BF\u03C4\u03B1\u03B2", 0, 1, "", methodObject), new Among("\u03BB\u03B9\u03B2", -1, 1, "", methodObject), new Among("\u03BA\u03BB\u03B9\u03B2", 3, 1, "", methodObject), new Among("\u03BE\u03B7\u03C1\u03BF\u03BA\u03BB\u03B9\u03B2", 4, 1, "", methodObject), new Among("\u03B3", -1, 1, "", methodObject), new Among("\u03B1\u03B3", 6, 1, "", methodObject), new Among("\u03C4\u03C1\u03B1\u03B3", 7, 1, "", methodObject), new Among("\u03C4\u03C3\u03B1\u03B3", 7, 1, "", methodObject), new Among("\u03B1\u03B8\u03B9\u03B3\u03B3", 6, 1, "", methodObject), new Among("\u03C4\u03C3\u03B9\u03B3\u03B3", 6, 1, "", methodObject), new Among("\u03B1\u03C4\u03C3\u03B9\u03B3\u03B3", 11, 1, "", methodObject), new Among("\u03C3\u03C4\u03B5\u03B3", 6, 1, "", methodObject), new Among("\u03B1\u03C0\u03B7\u03B3", 6, 1, "", methodObject), new Among("\u03C3\u03B9\u03B3", 6, 1, "", methodObject), new Among("\u03B1\u03BD\u03BF\u03C1\u03B3", 6, 1, "", methodObject), new Among("\u03B5\u03BD\u03BF\u03C1\u03B3", 6, 1, "", methodObject), new Among("\u03BA\u03B1\u03BB\u03C0\u03BF\u03C5\u03B6", -1, 1, "", methodObject), new Among("\u03B8", -1, 1, "", methodObject), new Among("\u03BC\u03C9\u03B1\u03BC\u03B5\u03B8", 19, 1, "", methodObject), new Among("\u03C0\u03B9\u03B8", 19, 1, "", methodObject), new Among("\u03B1\u03C0\u03B9\u03B8", 21, 1, "", methodObject), new Among("\u03B4\u03B5\u03BA", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03BB\u03B5\u03BA", -1, 1, "", methodObject), new Among("\u03B9\u03BA", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B9\u03BA", 25, 1, "", methodObject), new Among("\u03B2\u03BF\u03C5\u03BB\u03BA", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03C3\u03BA", -1, 1, "", methodObject), new Among("\u03B2\u03C1\u03B1\u03C7\u03C5\u03BA", -1, 1, "", methodObject), new Among("\u03B3\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C4\u03B1\u03B3\u03B1\u03BB", 30, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF\u03B3\u03B1\u03BB", 30, 1, "", methodObject), new Among("\u03B2\u03B1\u03B8\u03C5\u03B3\u03B1\u03BB", 30, 1, "", methodObject), new Among("\u03BC\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C3\u03C4\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03C1\u03C4\u03BF\u03BB", -1, 1, "", methodObject), new Among("\u03C0\u03BB", -1, 1, "", methodObject), new Among("\u03B4\u03B9\u03C0\u03BB", 37, 1, "", methodObject), new Among("\u03BB\u03B1\u03BF\u03C0\u03BB", 37, 1, "", methodObject), new Among("\u03C8\u03C5\u03C7\u03BF\u03C0\u03BB", 37, 1, "", methodObject), new Among("\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03BF\u03BB\u03B9\u03B3\u03BF\u03B4\u03B1\u03BC", 42, 1, "", methodObject), new Among("\u03BC\u03BF\u03C5\u03C3\u03BF\u03C5\u03BB\u03BC", 42, 1, "", methodObject), new Among("\u03B4\u03C1\u03B1\u03B4\u03BF\u03C5\u03BC", 42, 1, "", methodObject), new Among("\u03B2\u03C1\u03B1\u03C7\u03BC", 42, 1, "", methodObject), new Among("\u03BD", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03B5\u03C1\u03B9\u03BA\u03B1\u03BD", 47, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03B1\u03B4\u03B1\u03C0", 49, 1, "", methodObject), new Among("\u03C7\u03B1\u03BC\u03B7\u03BB\u03BF\u03B4\u03B1\u03C0", 49, 1, "", methodObject), new Among("\u03C0\u03BF\u03BB\u03C5\u03B4\u03B1\u03C0", 49, 1, "", methodObject), new Among("\u03BA\u03BF\u03C0", 49, 1, "", methodObject), new Among("\u03C5\u03C0\u03BF\u03BA\u03BF\u03C0", 53, 1, "", methodObject), new Among("\u03C4\u03C3\u03BF\u03C0", 49, 1, "", methodObject), new Among("\u03C3\u03C0", 49, 1, "", methodObject), new Among("\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03B3\u03B5\u03C1", 57, 1, "", methodObject), new Among("\u03B2\u03B5\u03C4\u03B5\u03C1", 57, 1, "", methodObject), new Among("\u03BB\u03BF\u03C5\u03B8\u03B7\u03C1", -1, 1, "", methodObject), new Among("\u03BA\u03BF\u03C1\u03BC\u03BF\u03C1", -1, 1, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B9\u03C4\u03C1", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C1", -1, 1, "", methodObject), new Among("\u03C3", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03C3", 64, 1, "", methodObject), new Among("\u03C0\u03BF\u03BB\u03B9\u03C3", 64, 1, "", methodObject), new Among("\u03C3\u03B1\u03C1\u03B1\u03BA\u03B1\u03C4\u03C3", 64, 1, "", methodObject), new Among("\u03B8\u03C5\u03C3", 64, 1, "", methodObject), new Among("\u03B4\u03B9\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C0\u03BB\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C4\u03C3\u03B1\u03C1\u03BB\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C4\u03B5\u03C4", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03C5\u03C1\u03B9\u03C4", -1, 1, "", methodObject), new Among("\u03C3\u03BF\u03C5\u03BB\u03C4", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03B9\u03BD\u03C4", -1, 1, "", methodObject), new Among("\u03B6\u03C9\u03BD\u03C4", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03C3\u03C4", -1, 1, "", methodObject), new Among("\u03C6", -1, 1, "", methodObject), new Among("\u03B4\u03B9\u03B1\u03C6", 78, 1, "", methodObject), new Among("\u03C3\u03C4\u03B5\u03C6", 78, 1, "", methodObject), new Among("\u03C6\u03C9\u03C4\u03BF\u03C3\u03C4\u03B5\u03C6", 80, 1, "", methodObject), new Among("\u03C0\u03B5\u03C1\u03B7\u03C6", 78, 1, "", methodObject), new Among("\u03C5\u03C0\u03B5\u03C1\u03B7\u03C6", 82, 1, "", methodObject), new Among("\u03BA\u03BF\u03B9\u03BB\u03B1\u03C1\u03C6", 78, 1, "", methodObject), new Among("\u03C0\u03B5\u03BD\u03C4\u03B1\u03C1\u03C6", 78, 1, "", methodObject), new Among("\u03BF\u03C1\u03C6", 78, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03B7\u03C7", 87, 1, "", methodObject), new Among("\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 87, 1, "", methodObject), new Among("\u03BC\u03B5\u03B3\u03BB\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1, "", methodObject), new Among("\u03BA\u03B1\u03C0\u03BD\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1, "", methodObject), new Among("\u03BC\u03B9\u03BA\u03C1\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1, "", methodObject), new Among("\u03C0\u03BF\u03BB\u03C5\u03BC\u03B7\u03C7", 87, 1, "", methodObject), new Among("\u03BB\u03B9\u03C7", 87, 1, "", methodObject) }; private final static Among a_45[] = { new Among("\u03B7\u03C3\u03B5\u03C4\u03B5", -1, 1, "", methodObject) }; private final static Among a_46[] = { new Among("\u03B5\u03BD\u03B4", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B4", -1, 1, "", methodObject), new Among("\u03BF\u03B4", -1, 1, "", methodObject), new Among("\u03B4\u03B9\u03B1\u03B8", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03B8", -1, 1, "", methodObject), new Among("\u03C1\u03B1\u03B8", -1, 1, "", methodObject), new Among("\u03C4\u03B1\u03B8", -1, 1, "", methodObject), new Among("\u03C4\u03B9\u03B8", -1, 1, "", methodObject), new Among("\u03B5\u03BA\u03B8", -1, 1, "", methodObject), new Among("\u03B5\u03BD\u03B8", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B8", -1, 1, "", methodObject), new Among("\u03C1\u03BF\u03B8", -1, 1, "", methodObject), new Among("\u03C5\u03C0\u03B5\u03C1\u03B8", -1, 1, "", methodObject), new Among("\u03C3\u03B8", -1, 1, "", methodObject), new Among("\u03B5\u03C5\u03B8", -1, 1, "", methodObject), new Among("\u03B1\u03C1\u03BA", -1, 1, "", methodObject), new Among("\u03C9\u03C6\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03B2\u03BF\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03B9\u03BD", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03C1\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03B2\u03C1", -1, 1, "", methodObject), new Among("\u03B1\u03B9\u03C1", -1, 1, "", methodObject), new Among("\u03C6\u03BF\u03C1", -1, 1, "", methodObject), new Among("\u03B5\u03C5\u03C1", -1, 1, "", methodObject), new Among("\u03C0\u03C5\u03C1", -1, 1, "", methodObject), new Among("\u03C7\u03C9\u03C1", -1, 1, "", methodObject), new Among("\u03BD\u03B5\u03C4", -1, 1, "", methodObject), new Among("\u03C3\u03C7", -1, 1, "", methodObject) }; private final static Among a_47[] = { new Among("\u03C0\u03B1\u03B3", -1, 1, "", methodObject), new Among("\u03B4", -1, 1, "", methodObject), new Among("\u03B1\u03B4", 1, 1, "", methodObject), new Among("\u03B8", -1, 1, "", methodObject), new Among("\u03B1\u03B8", 3, 1, "", methodObject), new Among("\u03C4\u03BF\u03BA", -1, 1, "", methodObject), new Among("\u03C3\u03BA", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03C3\u03BA\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03C0\u03BB", -1, 1, "", methodObject), new Among("\u03B5\u03BC", -1, 1, "", methodObject), new Among("\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03B2\u03B5\u03BD", -1, 1, "", methodObject), new Among("\u03B2\u03B1\u03C1\u03BF\u03BD", -1, 1, "", methodObject), new Among("\u03BA\u03BF\u03C0", -1, 1, "", methodObject), new Among("\u03C3\u03B5\u03C1\u03C0", -1, 1, "", methodObject), new Among("\u03B1\u03B2\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03B5\u03BD\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03B1\u03B2\u03C1", -1, 1, "", methodObject), new Among("\u03BC\u03C0\u03BF\u03C1", -1, 1, "", methodObject), new Among("\u03B8\u03B1\u03C1\u03C1", -1, 1, "", methodObject), new Among("\u03BD\u03C4\u03C1", -1, 1, "", methodObject), new Among("\u03C5", -1, 1, "", methodObject), new Among("\u03BD\u03B9\u03C6", -1, 1, "", methodObject), new Among("\u03C3\u03C5\u03C1\u03C6", -1, 1, "", methodObject) }; private final static Among a_48[] = { new Among("\u03BF\u03BD\u03C4\u03B1\u03C3", -1, 1, "", methodObject), new Among("\u03C9\u03BD\u03C4\u03B1\u03C3", -1, 1, "", methodObject) }; private final static Among a_49[] = { new Among("\u03BF\u03BC\u03B1\u03C3\u03C4\u03B5", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03BC\u03B1\u03C3\u03C4\u03B5", 0, 1, "", methodObject) }; private final static Among a_50[] = { new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03B1\u03C0", 0, 1, "", methodObject), new Among("\u03B1\u03BA\u03B1\u03C4\u03B1\u03C0", 1, 1, "", methodObject), new Among("\u03C3\u03C5\u03BC\u03C0", 0, 1, "", methodObject), new Among("\u03B1\u03C3\u03C5\u03BC\u03C0", 3, 1, "", methodObject), new Among("\u03B1\u03BC\u03B5\u03C4\u03B1\u03BC\u03C6", -1, 1, "", methodObject) }; private final static Among a_51[] = { new Among("\u03B6", -1, 1, "", methodObject), new Among("\u03B1\u03BB", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB", 1, 1, "", methodObject), new Among("\u03B5\u03BA\u03C4\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03BE", -1, 1, "", methodObject), new Among("\u03C0\u03C1\u03BF", -1, 1, "", methodObject), new Among("\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03BD\u03B9\u03C3", -1, 1, "", methodObject) }; private final static Among a_52[] = { new Among("\u03B7\u03B8\u03B7\u03BA\u03B1", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_53[] = { new Among("\u03C0\u03B9\u03B8", -1, 1, "", methodObject), new Among("\u03BF\u03B8", -1, 1, "", methodObject), new Among("\u03BD\u03B1\u03C1\u03B8", -1, 1, "", methodObject), new Among("\u03C3\u03BA\u03BF\u03C5\u03BB", -1, 1, "", methodObject), new Among("\u03C3\u03BA\u03C9\u03BB", -1, 1, "", methodObject), new Among("\u03C3\u03C6", -1, 1, "", methodObject) }; private final static Among a_54[] = { new Among("\u03B8", -1, 1, "", methodObject), new Among("\u03B4\u03B9\u03B1\u03B8", 0, 1, "", methodObject), new Among("\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03C4\u03B1\u03B8", 0, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03B8", 0, 1, "", methodObject), new Among("\u03C0\u03C1\u03BF\u03C3\u03B8", 0, 1, "", methodObject) }; private final static Among a_55[] = { new Among("\u03B7\u03BA\u03B1", -1, 1, "", methodObject), new Among("\u03B7\u03BA\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03BA\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_56[] = { new Among("\u03C6\u03B1\u03B3", -1, 1, "", methodObject), new Among("\u03BB\u03B7\u03B3", -1, 1, "", methodObject), new Among("\u03C6\u03C1\u03C5\u03B4", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03BD\u03C4\u03B9\u03BB", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03BB\u03BB", -1, 1, "", methodObject), new Among("\u03BF\u03BC", -1, 1, "", methodObject), new Among("\u03B2\u03BB\u03B5\u03C0", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03B4\u03B1\u03C1", -1, 1, "", methodObject), new Among("\u03BA\u03C5\u03BC\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C0\u03C1\u03C9\u03C4", -1, 1, "", methodObject), new Among("\u03BB\u03B1\u03C7", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03BD\u03C4\u03B1\u03C7", -1, 1, "", methodObject) }; private final static Among a_57[] = { new Among("\u03C4\u03C3\u03B1", -1, 1, "", methodObject), new Among("\u03C7\u03B1\u03B4", -1, 1, "", methodObject), new Among("\u03BC\u03B5\u03B4", -1, 1, "", methodObject), new Among("\u03BB\u03B1\u03BC\u03C0\u03B9\u03B4", -1, 1, "", methodObject), new Among("\u03B4\u03B5", -1, 1, "", methodObject), new Among("\u03C0\u03BB\u03B5", -1, 1, "", methodObject), new Among("\u03BC\u03B5\u03C3\u03B1\u03B6", -1, 1, "", methodObject), new Among("\u03B4\u03B5\u03C3\u03C0\u03BF\u03B6", -1, 1, "", methodObject), new Among("\u03B1\u03B9\u03B8", -1, 1, "", methodObject), new Among("\u03C6\u03B1\u03C1\u03BC\u03B1\u03BA", -1, 1, "", methodObject), new Among("\u03B1\u03B3\u03BA", -1, 1, "", methodObject), new Among("\u03B1\u03BD\u03B7\u03BA", -1, 1, "", methodObject), new Among("\u03BB", -1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03B1\u03BC", 13, 1, "", methodObject), new Among("\u03B2\u03C1\u03BF\u03BC", 13, 1, "", methodObject), new Among("\u03C5\u03C0\u03BF\u03C4\u03B5\u03B9\u03BD", -1, 1, "", methodObject), new Among("\u03B5\u03BA\u03BB\u03B9\u03C0", -1, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject), new Among("\u03B5\u03BD\u03B4\u03B9\u03B1\u03C6\u03B5\u03C1", 18, 1, "", methodObject), new Among("\u03B1\u03BD\u03B1\u03C1\u03C1", 18, 1, "", methodObject), new Among("\u03C0\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03B8\u03B1\u03C1\u03B5\u03C5", -1, 1, "", methodObject), new Among("\u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03B5\u03C5", -1, 1, "", methodObject), new Among("\u03BB\u03B5\u03C7", -1, 1, "", methodObject) }; private final static Among a_58[] = { new Among("\u03BF\u03C5\u03C3\u03B1", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_59[] = { new Among("\u03C8\u03BF\u03C6", -1, -1, "", methodObject), new Among("\u03BD\u03B1\u03C5\u03BB\u03BF\u03C7", -1, -1, "", methodObject) }; private final static Among a_60[] = { new Among("\u03C0\u03B5\u03BB", -1, 1, "", methodObject), new Among("\u03BB\u03BB", -1, 1, "", methodObject), new Among("\u03C3\u03BC\u03B7\u03BD", -1, 1, "", methodObject), new Among("\u03C1\u03C0", -1, 1, "", methodObject), new Among("\u03C0\u03C1", -1, 1, "", methodObject), new Among("\u03C6\u03C1", -1, 1, "", methodObject), new Among("\u03C7\u03BF\u03C1\u03C4", -1, 1, "", methodObject), new Among("\u03BF\u03C6", -1, 1, "", methodObject), new Among("\u03C3\u03C6", -1, 1, "", methodObject), new Among("\u03BB\u03BF\u03C7", -1, 1, "", methodObject) }; private final static Among a_61[] = { new Among("\u03B1\u03BC\u03B1\u03BB\u03BB\u03B9", -1, 1, "", methodObject), new Among("\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03B1\u03BB", 1, 1, "", methodObject), new Among("\u03BC", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03BB\u03B1\u03BC", 3, 1, "", methodObject), new Among("\u03B5\u03BD", -1, 1, "", methodObject), new Among("\u03B4\u03B5\u03C1\u03B2\u03B5\u03BD", 5, 1, "", methodObject), new Among("\u03C0", -1, 1, "", methodObject), new Among("\u03B1\u03B5\u03B9\u03C0", 7, 1, "", methodObject), new Among("\u03B1\u03C1\u03C4\u03B9\u03C0", 7, 1, "", methodObject), new Among("\u03C3\u03C5\u03BC\u03C0", 7, 1, "", methodObject), new Among("\u03BD\u03B5\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03BA\u03C1\u03BF\u03BA\u03B1\u03BB\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03BF\u03BB\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03C3\u03B9\u03B4\u03B7\u03C1\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03B4\u03C1\u03BF\u03C3\u03BF\u03C0", 7, 1, "", methodObject), new Among("\u03B1\u03C3\u03C0", 7, 1, "", methodObject), new Among("\u03B1\u03BD\u03C5\u03C0", 7, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject), new Among("\u03B1\u03C3\u03C0\u03B1\u03C1", 19, 1, "", methodObject), new Among("\u03C7\u03B1\u03C1", 19, 1, "", methodObject), new Among("\u03B1\u03C7\u03B1\u03C1", 21, 1, "", methodObject), new Among("\u03B1\u03C0\u03B5\u03C1", 19, 1, "", methodObject), new Among("\u03C4\u03C1", 19, 1, "", methodObject), new Among("\u03BF\u03C5\u03C1", 19, 1, "", methodObject), new Among("\u03C4", -1, 1, "", methodObject), new Among("\u03B4\u03B9\u03B1\u03C4", 26, 1, "", methodObject), new Among("\u03B5\u03C0\u03B9\u03C4", 26, 1, "", methodObject), new Among("\u03C3\u03C5\u03BD\u03C4", 26, 1, "", methodObject), new Among("\u03BF\u03BC\u03BF\u03C4", 26, 1, "", methodObject), new Among("\u03BD\u03BF\u03BC\u03BF\u03C4", 30, 1, "", methodObject), new Among("\u03B1\u03C0\u03BF\u03C4", 26, 1, "", methodObject), new Among("\u03C5\u03C0\u03BF\u03C4", 26, 1, "", methodObject), new Among("\u03B1\u03B2\u03B1\u03C3\u03C4", 26, 1, "", methodObject), new Among("\u03B1\u03B9\u03BC\u03BF\u03C3\u03C4", 26, 1, "", methodObject), new Among("\u03C0\u03C1\u03BF\u03C3\u03C4", 26, 1, "", methodObject), new Among("\u03B1\u03BD\u03C5\u03C3\u03C4", 26, 1, "", methodObject), new Among("\u03BD\u03B1\u03C5", -1, 1, "", methodObject), new Among("\u03B1\u03C6", -1, 1, "", methodObject), new Among("\u03BE\u03B5\u03C6", -1, 1, "", methodObject), new Among("\u03B1\u03B4\u03B7\u03C6", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03BC\u03C6", -1, 1, "", methodObject), new Among("\u03C0\u03BF\u03BB\u03C5\u03C6", -1, 1, "", methodObject) }; private final static Among a_62[] = { new Among("\u03B1\u03B3\u03B1", -1, 1, "", methodObject), new Among("\u03B1\u03B3\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03B3\u03B5\u03C3", -1, 1, "", methodObject) }; private final static Among a_63[] = { new Among("\u03B7\u03C3\u03B1", -1, 1, "", methodObject), new Among("\u03B7\u03C3\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03C3\u03BF\u03C5", -1, 1, "", methodObject) }; private final static Among a_64[] = { new Among("\u03BD", -1, 1, "", methodObject), new Among("\u03B4\u03C9\u03B4\u03B5\u03BA\u03B1\u03BD", 0, 1, "", methodObject), new Among("\u03B5\u03C0\u03C4\u03B1\u03BD", 0, 1, "", methodObject), new Among("\u03BC\u03B5\u03B3\u03B1\u03BB\u03BF\u03BD", 0, 1, "", methodObject), new Among("\u03B5\u03C1\u03B7\u03BC\u03BF\u03BD", 0, 1, "", methodObject), new Among("\u03C7\u03B5\u03C1\u03C3\u03BF\u03BD", 0, 1, "", methodObject) }; private final static Among a_65[] = { new Among("\u03B7\u03C3\u03C4\u03B5", -1, 1, "", methodObject) }; private final static Among a_66[] = { new Among("\u03C3\u03B2", -1, 1, "", methodObject), new Among("\u03B1\u03C3\u03B2", 0, 1, "", methodObject), new Among("\u03B1\u03C0\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03B5\u03B9\u03BC\u03BD", -1, 1, "", methodObject), new Among("\u03C7\u03C1", -1, 1, "", methodObject), new Among("\u03B1\u03C7\u03C1", 4, 1, "", methodObject), new Among("\u03BA\u03BF\u03B9\u03BD\u03BF\u03C7\u03C1", 4, 1, "", methodObject), new Among("\u03B4\u03C5\u03C3\u03C7\u03C1", 4, 1, "", methodObject), new Among("\u03B5\u03C5\u03C7\u03C1", 4, 1, "", methodObject), new Among("\u03C0\u03B1\u03BB\u03B9\u03BC\u03C8", -1, 1, "", methodObject) }; private final static Among a_67[] = { new Among("\u03BF\u03C5\u03BD\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03BF\u03C5\u03BD\u03B5", 0, 1, "", methodObject), new Among("\u03B7\u03C3\u03BF\u03C5\u03BD\u03B5", 0, 1, "", methodObject) }; private final static Among a_68[] = { new Among("\u03C3\u03C0\u03B9", -1, 1, "", methodObject), new Among("\u03BD", -1, 1, "", methodObject), new Among("\u03B5\u03BE\u03C9\u03BD", 1, 1, "", methodObject), new Among("\u03C1", -1, 1, "", methodObject), new Among("\u03C3\u03C4\u03C1\u03B1\u03B2\u03BF\u03BC\u03BF\u03C5\u03C4\u03C3", -1, 1, "", methodObject), new Among("\u03BA\u03B1\u03BA\u03BF\u03BC\u03BF\u03C5\u03C4\u03C3", -1, 1, "", methodObject) }; private final static Among a_69[] = { new Among("\u03BF\u03C5\u03BC\u03B5", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03BF\u03C5\u03BC\u03B5", 0, 1, "", methodObject), new Among("\u03B7\u03C3\u03BF\u03C5\u03BC\u03B5", 0, 1, "", methodObject) }; private final static Among a_70[] = { new Among("\u03B1\u03B6", -1, 1, "", methodObject), new Among("\u03C9\u03C1\u03B9\u03BF\u03C0\u03BB", -1, 1, "", methodObject), new Among("\u03B1\u03C3\u03BF\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03C0\u03B1\u03C1\u03B1\u03C3\u03BF\u03C5\u03C3", 2, 1, "", methodObject), new Among("\u03B1\u03BB\u03BB\u03BF\u03C3\u03BF\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03C6", -1, 1, "", methodObject), new Among("\u03C7", -1, 1, "", methodObject) }; private final static Among a_71[] = { new Among("\u03BC\u03B1\u03C4\u03B1", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03C4\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03BC\u03B1\u03C4\u03BF\u03C3", -1, 1, "", methodObject) }; private final static Among a_72[] = { new Among("\u03B1", -1, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5\u03BC\u03B1", 0, 1, "", methodObject), new Among("\u03BF\u03BC\u03BF\u03C5\u03BD\u03B1", 0, 1, "", methodObject), new Among("\u03B9\u03BF\u03BC\u03BF\u03C5\u03BD\u03B1", 2, 1, "", methodObject), new Among("\u03BF\u03C3\u03BF\u03C5\u03BD\u03B1", 0, 1, "", methodObject), new Among("\u03B9\u03BF\u03C3\u03BF\u03C5\u03BD\u03B1", 4, 1, "", methodObject), new Among("\u03B5", -1, 1, "", methodObject), new Among("\u03B1\u03B3\u03B1\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B7\u03BA\u03B1\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B1\u03C4\u03B5", 8, 1, "", methodObject), new Among("\u03B7\u03C3\u03B1\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B1\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B5\u03B9\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B7\u03B8\u03B5\u03B9\u03C4\u03B5", 12, 1, "", methodObject), new Among("\u03B9\u03B5\u03BC\u03B1\u03C3\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03BF\u03C5\u03BC\u03B1\u03C3\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5\u03BC\u03B1\u03C3\u03C4\u03B5", 15, 1, "", methodObject), new Among("\u03B9\u03B5\u03C3\u03B1\u03C3\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03BF\u03C3\u03B1\u03C3\u03C4\u03B5", 6, 1, "", methodObject), new Among("\u03B9\u03BF\u03C3\u03B1\u03C3\u03C4\u03B5", 18, 1, "", methodObject), new Among("\u03B7", -1, 1, "", methodObject), new Among("\u03B9", -1, 1, "", methodObject), new Among("\u03B1\u03BC\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B9\u03B5\u03BC\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03BF\u03BC\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03BF\u03C5\u03BC\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B1\u03C3\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B5\u03C3\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B9\u03B5\u03C3\u03B1\u03B9", 27, 1, "", methodObject), new Among("\u03B1\u03C4\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B5\u03C4\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B9\u03B5\u03C4\u03B1\u03B9", 30, 1, "", methodObject), new Among("\u03BF\u03BD\u03C4\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03BF\u03C5\u03BD\u03C4\u03B1\u03B9", 21, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03B9", 33, 1, "", methodObject), new Among("\u03B5\u03B9", 21, 1, "", methodObject), new Among("\u03B1\u03B5\u03B9", 35, 1, "", methodObject), new Among("\u03B7\u03B8\u03B5\u03B9", 35, 1, "", methodObject), new Among("\u03B7\u03C3\u03B5\u03B9", 35, 1, "", methodObject), new Among("\u03BF\u03B9", 21, 1, "", methodObject), new Among("\u03B1\u03BD", -1, 1, "", methodObject), new Among("\u03B1\u03B3\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B7\u03BA\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B7\u03B8\u03B7\u03BA\u03B1\u03BD", 42, 1, "", methodObject), new Among("\u03B7\u03C3\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03BF\u03BD\u03C4\u03BF\u03C5\u03C3\u03B1\u03BD", 45, 1, "", methodObject), new Among("\u03B9\u03BF\u03BD\u03C4\u03BF\u03C5\u03C3\u03B1\u03BD", 46, 1, "", methodObject), new Among("\u03BF\u03BD\u03C4\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B9\u03BF\u03BD\u03C4\u03B1\u03BD", 48, 1, "", methodObject), new Among("\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD", 50, 1, "", methodObject), new Among("\u03BF\u03C4\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B9\u03BF\u03C4\u03B1\u03BD", 52, 1, "", methodObject), new Among("\u03BF\u03BC\u03B1\u03C3\u03C4\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B9\u03BF\u03BC\u03B1\u03C3\u03C4\u03B1\u03BD", 54, 1, "", methodObject), new Among("\u03BF\u03C3\u03B1\u03C3\u03C4\u03B1\u03BD", 40, 1, "", methodObject), new Among("\u03B9\u03BF\u03C3\u03B1\u03C3\u03C4\u03B1\u03BD", 56, 1, "", methodObject), new Among("\u03BF\u03C5\u03BD", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03BF\u03C5\u03BD", 58, 1, "", methodObject), new Among("\u03BF\u03BC\u03BF\u03C5\u03BD", 58, 1, "", methodObject), new Among("\u03B9\u03BF\u03BC\u03BF\u03C5\u03BD", 60, 1, "", methodObject), new Among("\u03B7\u03C3\u03BF\u03C5\u03BD", 58, 1, "", methodObject), new Among("\u03BF\u03C3\u03BF\u03C5\u03BD", 58, 1, "", methodObject), new Among("\u03B9\u03BF\u03C3\u03BF\u03C5\u03BD", 63, 1, "", methodObject), new Among("\u03C9\u03BD", -1, 1, "", methodObject), new Among("\u03B7\u03B4\u03C9\u03BD", 65, 1, "", methodObject), new Among("\u03BF", -1, 1, "", methodObject), new Among("\u03B1\u03C3", -1, 1, "", methodObject), new Among("\u03B5\u03C3", -1, 1, "", methodObject), new Among("\u03B7\u03B4\u03B5\u03C3", 69, 1, "", methodObject), new Among("\u03B7\u03C3\u03B5\u03C3", 69, 1, "", methodObject), new Among("\u03B7\u03C3", -1, 1, "", methodObject), new Among("\u03B5\u03B9\u03C3", -1, 1, "", methodObject), new Among("\u03B7\u03B8\u03B5\u03B9\u03C3", 73, 1, "", methodObject), new Among("\u03BF\u03C3", -1, 1, "", methodObject), new Among("\u03C5\u03C3", -1, 1, "", methodObject), new Among("\u03BF\u03C5\u03C3", 76, 1, "", methodObject), new Among("\u03C5", -1, 1, "", methodObject), new Among("\u03BF\u03C5", 78, 1, "", methodObject), new Among("\u03C9", -1, 1, "", methodObject), new Among("\u03B1\u03C9", 80, 1, "", methodObject), new Among("\u03B7\u03B8\u03C9", 80, 1, "", methodObject), new Among("\u03B7\u03C3\u03C9", 80, 1, "", methodObject) }; private final static Among a_73[] = { new Among("\u03BF\u03C4\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03B5\u03C3\u03C4\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03C5\u03C4\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03C9\u03C4\u03B5\u03C1", -1, 1, "", methodObject), new Among("\u03BF\u03C4\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03B5\u03C3\u03C4\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C5\u03C4\u03B1\u03C4", -1, 1, "", methodObject), new Among("\u03C9\u03C4\u03B1\u03C4", -1, 1, "", methodObject) }; private static final char g_v[] = {81, 65, 16, 1 }; private static final char g_v2[] = {81, 65, 0, 1 }; private StringBuilder S_s = new StringBuilder(); private boolean B_test1; private boolean r_has_min_length() { // (, line 110 if (!(current.length() >= 3)) { return false; } return true; } private boolean r_tolower() { int among_var; // (, line 114 // repeat, line 115 replab0: while(true) { int v_1 = limit - cursor; lab1: do { // (, line 115 // [, line 116 ket = cursor; // substring, line 116 among_var = find_among_b(a_0); if (among_var == 0) { break lab1; } // ], line 116 bra = cursor; switch (among_var) { case 1: // (, line 117 // <-, line 117 slice_from("\u03B1"); break; case 2: // (, line 118 // <-, line 118 slice_from("\u03B2"); break; case 3: // (, line 119 // <-, line 119 slice_from("\u03B3"); break; case 4: // (, line 120 // <-, line 120 slice_from("\u03B4"); break; case 5: // (, line 121 // <-, line 121 slice_from("\u03B5"); break; case 6: // (, line 122 // <-, line 122 slice_from("\u03B6"); break; case 7: // (, line 123 // <-, line 123 slice_from("\u03B7"); break; case 8: // (, line 124 // <-, line 124 slice_from("\u03B8"); break; case 9: // (, line 125 // <-, line 125 slice_from("\u03B9"); break; case 10: // (, line 126 // <-, line 126 slice_from("\u03BA"); break; case 11: // (, line 127 // <-, line 127 slice_from("\u03BB"); break; case 12: // (, line 128 // <-, line 128 slice_from("\u03BC"); break; case 13: // (, line 129 // <-, line 129 slice_from("\u03BD"); break; case 14: // (, line 130 // <-, line 130 slice_from("\u03BE"); break; case 15: // (, line 131 // <-, line 131 slice_from("\u03BF"); break; case 16: // (, line 132 // <-, line 132 slice_from("\u03C0"); break; case 17: // (, line 133 // <-, line 133 slice_from("\u03C1"); break; case 18: // (, line 134 // <-, line 134 slice_from("\u03C3"); break; case 19: // (, line 135 // <-, line 135 slice_from("\u03C4"); break; case 20: // (, line 136 // <-, line 136 slice_from("\u03C5"); break; case 21: // (, line 137 // <-, line 137 slice_from("\u03C6"); break; case 22: // (, line 138 // <-, line 138 slice_from("\u03C7"); break; case 23: // (, line 139 // <-, line 139 slice_from("\u03C8"); break; case 24: // (, line 140 // <-, line 140 slice_from("\u03C9"); break; case 25: // (, line 162 // next, line 162 if (cursor <= limit_backward) { break lab1; } cursor--; break; } continue replab0; } while (false); cursor = limit - v_1; break replab0; } return true; } private boolean r_step1() { int among_var; // (, line 167 // [, line 168 ket = cursor; // substring, line 168 among_var = find_among_b(a_1); if (among_var == 0) { return false; } // ], line 168 bra = cursor; switch (among_var) { case 1: // (, line 169 // <-, line 169 slice_from("\u03C6\u03B1"); break; case 2: // (, line 170 // <-, line 170 slice_from("\u03C3\u03BA\u03B1"); break; case 3: // (, line 171 // <-, line 171 slice_from("\u03BF\u03BB\u03BF"); break; case 4: // (, line 172 // <-, line 172 slice_from("\u03C3\u03BF"); break; case 5: // (, line 173 // <-, line 173 slice_from("\u03C4\u03B1\u03C4\u03BF"); break; case 6: // (, line 174 // <-, line 174 slice_from("\u03BA\u03C1\u03B5"); break; case 7: // (, line 175 // <-, line 175 slice_from("\u03C0\u03B5\u03C1"); break; case 8: // (, line 176 // <-, line 176 slice_from("\u03C4\u03B5\u03C1"); break; case 9: // (, line 177 // <-, line 177 slice_from("\u03C6\u03C9"); break; case 10: // (, line 178 // <-, line 178 slice_from("\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4"); break; case 11: // (, line 179 // <-, line 179 slice_from("\u03B3\u03B5\u03B3\u03BF\u03BD"); break; } // unset test1, line 181 B_test1 = false; return true; } private boolean r_steps1() { // (, line 184 // [, line 185 ket = cursor; // substring, line 185 if (find_among_b(a_4) == 0) { return false; } // ], line 185 bra = cursor; // (, line 187 // delete, line 188 slice_del(); // unset test1, line 189 B_test1 = false; // or, line 193 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 190 // [, line 190 ket = cursor; // substring, line 190 if (find_among_b(a_2) == 0) { break lab1; } // ], line 190 bra = cursor; // atlimit, line 190 if (cursor > limit_backward) { break lab1; } // (, line 192 // -> s, line 192 slice_to(S_s); // <-, line 192 slice_from("\u03B9"); // <+ s, line 192 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 194 // [, line 194 ket = cursor; // substring, line 194 if (find_among_b(a_3) == 0) { return false; } // ], line 194 bra = cursor; // atlimit, line 194 if (cursor > limit_backward) { return false; } // (, line 198 // -> s, line 198 slice_to(S_s); // <-, line 198 slice_from("\u03B9\u03B6"); // <+ s, line 198 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_steps2() { // (, line 204 // [, line 205 ket = cursor; // substring, line 205 if (find_among_b(a_6) == 0) { return false; } // ], line 205 bra = cursor; // (, line 206 // delete, line 207 slice_del(); // unset test1, line 208 B_test1 = false; // [, line 209 ket = cursor; // substring, line 209 if (find_among_b(a_5) == 0) { return false; } // ], line 209 bra = cursor; // atlimit, line 209 if (cursor > limit_backward) { return false; } // (, line 210 // -> s, line 210 slice_to(S_s); // <-, line 210 slice_from("\u03C9\u03BD"); // <+ s, line 210 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_steps3() { // (, line 216 // [, line 217 ket = cursor; // substring, line 217 if (find_among_b(a_9) == 0) { return false; } // ], line 217 bra = cursor; // (, line 218 // delete, line 219 slice_del(); // unset test1, line 220 B_test1 = false; // or, line 221 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 221 // literal, line 221 if (!(eq_s_b("\u03B9\u03C3\u03B1"))) { break lab1; } // atlimit, line 221 if (cursor > limit_backward) { break lab1; } // <-, line 221 slice_from("\u03B9\u03C3"); break lab0; } while (false); cursor = limit - v_1; lab2: do { // (, line 222 // [, line 222 ket = cursor; // substring, line 222 if (find_among_b(a_7) == 0) { break lab2; } // ], line 222 bra = cursor; // atlimit, line 222 if (cursor > limit_backward) { break lab2; } // (, line 226 // -> s, line 226 slice_to(S_s); // <-, line 226 slice_from("\u03B9"); // <+ s, line 226 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 228 // [, line 228 ket = cursor; // substring, line 228 if (find_among_b(a_8) == 0) { return false; } // ], line 228 bra = cursor; // atlimit, line 228 if (cursor > limit_backward) { return false; } // (, line 231 // -> s, line 231 slice_to(S_s); // <-, line 231 slice_from("\u03B9\u03C3"); // <+ s, line 231 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_steps4() { // (, line 237 // [, line 238 ket = cursor; // substring, line 238 if (find_among_b(a_11) == 0) { return false; } // ], line 238 bra = cursor; // (, line 239 // delete, line 240 slice_del(); // unset test1, line 241 B_test1 = false; // [, line 242 ket = cursor; // substring, line 242 if (find_among_b(a_10) == 0) { return false; } // ], line 242 bra = cursor; // atlimit, line 242 if (cursor > limit_backward) { return false; } // (, line 246 // -> s, line 246 slice_to(S_s); // <-, line 246 slice_from("\u03B9"); // <+ s, line 246 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_steps5() { // (, line 252 // [, line 253 ket = cursor; // substring, line 253 if (find_among_b(a_14) == 0) { return false; } // ], line 253 bra = cursor; // (, line 255 // delete, line 256 slice_del(); // unset test1, line 257 B_test1 = false; // or, line 261 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 258 // [, line 258 ket = cursor; // substring, line 258 if (find_among_b(a_12) == 0) { break lab1; } // ], line 258 bra = cursor; // atlimit, line 258 if (cursor > limit_backward) { break lab1; } // (, line 260 // -> s, line 260 slice_to(S_s); // <-, line 260 slice_from("\u03B9"); // <+ s, line 260 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 262 // [, line 262 ket = cursor; // substring, line 262 if (find_among_b(a_13) == 0) { return false; } // ], line 262 bra = cursor; // atlimit, line 262 if (cursor > limit_backward) { return false; } // (, line 266 // -> s, line 266 slice_to(S_s); // <-, line 266 slice_from("\u03B9\u03C3\u03C4"); // <+ s, line 266 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_steps6() { int among_var; // (, line 272 // [, line 273 ket = cursor; // substring, line 273 if (find_among_b(a_18) == 0) { return false; } // ], line 273 bra = cursor; // (, line 274 // delete, line 275 slice_del(); // unset test1, line 276 B_test1 = false; // or, line 280 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 277 // [, line 277 ket = cursor; // substring, line 277 if (find_among_b(a_15) == 0) { break lab1; } // ], line 277 bra = cursor; // atlimit, line 277 if (cursor > limit_backward) { break lab1; } // (, line 279 // -> s, line 279 slice_to(S_s); // <-, line 279 slice_from("\u03B9\u03C3\u03BC"); // <+ s, line 279 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; lab2: do { // (, line 281 // [, line 281 ket = cursor; // substring, line 281 if (find_among_b(a_16) == 0) { break lab2; } // ], line 281 bra = cursor; // atlimit, line 281 if (cursor > limit_backward) { break lab2; } // (, line 283 // -> s, line 283 slice_to(S_s); // <-, line 283 slice_from("\u03B9"); // <+ s, line 283 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 285 // [, line 285 ket = cursor; // substring, line 285 among_var = find_among_b(a_17); if (among_var == 0) { return false; } // ], line 285 bra = cursor; switch (among_var) { case 1: // (, line 286 // <-, line 286 slice_from("\u03B1\u03B3\u03BD\u03C9\u03C3\u03C4"); break; case 2: // (, line 287 // <-, line 287 slice_from("\u03B1\u03C4\u03BF\u03BC"); break; case 3: // (, line 288 // <-, line 288 slice_from("\u03B3\u03BD\u03C9\u03C3\u03C4"); break; case 4: // (, line 289 // <-, line 289 slice_from("\u03B5\u03B8\u03BD"); break; case 5: // (, line 290 // <-, line 290 slice_from("\u03B5\u03BA\u03BB\u03B5\u03BA\u03C4"); break; case 6: // (, line 291 // <-, line 291 slice_from("\u03C3\u03BA\u03B5\u03C0\u03C4"); break; case 7: // (, line 292 // <-, line 292 slice_from("\u03C4\u03BF\u03C0"); break; case 8: // (, line 293 // <-, line 293 slice_from("\u03B1\u03BB\u03B5\u03BE\u03B1\u03BD\u03B4\u03C1"); break; case 9: // (, line 294 // <-, line 294 slice_from("\u03B2\u03C5\u03B6\u03B1\u03BD\u03C4"); break; case 10: // (, line 295 // <-, line 295 slice_from("\u03B8\u03B5\u03B1\u03C4\u03C1"); break; } } while (false); return true; } private boolean r_steps7() { // (, line 301 // [, line 302 ket = cursor; // substring, line 302 if (find_among_b(a_20) == 0) { return false; } // ], line 302 bra = cursor; // (, line 303 // delete, line 304 slice_del(); // unset test1, line 305 B_test1 = false; // [, line 306 ket = cursor; // substring, line 306 if (find_among_b(a_19) == 0) { return false; } // ], line 306 bra = cursor; // atlimit, line 306 if (cursor > limit_backward) { return false; } // (, line 308 // -> s, line 308 slice_to(S_s); // <-, line 308 slice_from("\u03B1\u03C1\u03B1\u03BA"); // <+ s, line 308 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_steps8() { // (, line 314 // [, line 315 ket = cursor; // substring, line 315 if (find_among_b(a_23) == 0) { return false; } // ], line 315 bra = cursor; // (, line 316 // delete, line 317 slice_del(); // unset test1, line 318 B_test1 = false; // or, line 325 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 319 // [, line 319 ket = cursor; // substring, line 319 if (find_among_b(a_21) == 0) { break lab1; } // ], line 319 bra = cursor; // atlimit, line 319 if (cursor > limit_backward) { break lab1; } // (, line 324 // -> s, line 324 slice_to(S_s); // <-, line 324 slice_from("\u03B1\u03BA"); // <+ s, line 324 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; lab2: do { // (, line 326 // [, line 326 ket = cursor; // substring, line 326 if (find_among_b(a_22) == 0) { break lab2; } // ], line 326 bra = cursor; // atlimit, line 326 if (cursor > limit_backward) { break lab2; } // (, line 329 // -> s, line 329 slice_to(S_s); // <-, line 329 slice_from("\u03B9\u03C4\u03C3"); // <+ s, line 329 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 331 // [, line 331 ket = cursor; // literal, line 331 if (!(eq_s_b("\u03BA\u03BF\u03C1"))) { return false; } // ], line 331 bra = cursor; // -> s, line 331 slice_to(S_s); // <-, line 331 slice_from("\u03B9\u03C4\u03C3"); // <+ s, line 331 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_steps9() { // (, line 336 // [, line 337 ket = cursor; // substring, line 337 if (find_among_b(a_26) == 0) { return false; } // ], line 337 bra = cursor; // (, line 338 // delete, line 339 slice_del(); // unset test1, line 340 B_test1 = false; // or, line 343 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 341 // [, line 341 ket = cursor; // substring, line 341 if (find_among_b(a_24) == 0) { break lab1; } // ], line 341 bra = cursor; // atlimit, line 341 if (cursor > limit_backward) { break lab1; } // (, line 342 // -> s, line 342 slice_to(S_s); // <-, line 342 slice_from("\u03B9\u03B4"); // <+ s, line 342 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 344 // [, line 344 ket = cursor; // substring, line 344 if (find_among_b(a_25) == 0) { return false; } // ], line 344 bra = cursor; // (, line 345 // -> s, line 345 slice_to(S_s); // <-, line 345 slice_from("\u03B9\u03B4"); // <+ s, line 345 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_steps10() { // (, line 351 // [, line 352 ket = cursor; // substring, line 352 if (find_among_b(a_28) == 0) { return false; } // ], line 352 bra = cursor; // (, line 353 // delete, line 354 slice_del(); // unset test1, line 355 B_test1 = false; // [, line 356 ket = cursor; // substring, line 356 if (find_among_b(a_27) == 0) { return false; } // ], line 356 bra = cursor; // atlimit, line 356 if (cursor > limit_backward) { return false; } // (, line 358 // -> s, line 358 slice_to(S_s); // <-, line 358 slice_from("\u03B9\u03C3\u03BA"); // <+ s, line 358 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step2a() { // (, line 364 // [, line 365 ket = cursor; // substring, line 365 if (find_among_b(a_29) == 0) { return false; } // ], line 365 bra = cursor; // (, line 366 // delete, line 366 slice_del(); // not, line 368 { int v_1 = limit - cursor; lab0: do { // (, line 368 // [, line 368 ket = cursor; // substring, line 368 if (find_among_b(a_30) == 0) { break lab0; } // ], line 368 bra = cursor; return false; } while (false); cursor = limit - v_1; } // <+, line 371 { int c = cursor; insert(cursor, cursor, "\u03B1\u03B4"); cursor = c; } return true; } private boolean r_step2b() { // (, line 374 // [, line 375 ket = cursor; // substring, line 375 if (find_among_b(a_31) == 0) { return false; } // ], line 375 bra = cursor; // (, line 376 // delete, line 376 slice_del(); // [, line 378 ket = cursor; // substring, line 378 if (find_among_b(a_32) == 0) { return false; } // ], line 378 bra = cursor; // (, line 379 // -> s, line 379 slice_to(S_s); // <-, line 379 slice_from("\u03B5\u03B4"); // <+ s, line 379 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step2c() { // (, line 383 // [, line 384 ket = cursor; // substring, line 384 if (find_among_b(a_33) == 0) { return false; } // ], line 384 bra = cursor; // (, line 385 // delete, line 385 slice_del(); // [, line 387 ket = cursor; // substring, line 387 if (find_among_b(a_34) == 0) { return false; } // ], line 387 bra = cursor; // (, line 389 // -> s, line 389 slice_to(S_s); // <-, line 389 slice_from("\u03BF\u03C5\u03B4"); // <+ s, line 389 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step2d() { // (, line 393 // [, line 394 ket = cursor; // substring, line 394 if (find_among_b(a_35) == 0) { return false; } // ], line 394 bra = cursor; // (, line 395 // delete, line 395 slice_del(); // unset test1, line 395 B_test1 = false; // [, line 397 ket = cursor; // substring, line 397 if (find_among_b(a_36) == 0) { return false; } // ], line 397 bra = cursor; // atlimit, line 397 if (cursor > limit_backward) { return false; } // (, line 398 // -> s, line 398 slice_to(S_s); // <-, line 398 slice_from("\u03B5"); // <+ s, line 398 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step3() { // (, line 402 // [, line 403 ket = cursor; // substring, line 403 if (find_among_b(a_37) == 0) { return false; } // ], line 403 bra = cursor; // (, line 404 // delete, line 404 slice_del(); // unset test1, line 404 B_test1 = false; // (, line 406 // [, line 406 ket = cursor; if (!(in_grouping_b(g_v, 945, 969))) { return false; } // ], line 406 bra = cursor; // -> s, line 406 slice_to(S_s); // <-, line 406 slice_from("\u03B9"); // <+ s, line 406 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step4() { // (, line 409 // [, line 410 ket = cursor; // substring, line 410 if (find_among_b(a_38) == 0) { return false; } // ], line 410 bra = cursor; // (, line 411 // delete, line 411 slice_del(); // unset test1, line 411 B_test1 = false; // or, line 413 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 413 // [, line 413 ket = cursor; if (!(in_grouping_b(g_v, 945, 969))) { break lab1; } // ], line 413 bra = cursor; // -> s, line 413 slice_to(S_s); // <-, line 413 slice_from("\u03B9\u03BA"); // <+ s, line 413 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // [, line 414 ket = cursor; } while (false); // substring, line 414 if (find_among_b(a_39) == 0) { return false; } // ], line 414 bra = cursor; // atlimit, line 414 if (cursor > limit_backward) { return false; } // (, line 419 // -> s, line 419 slice_to(S_s); // <-, line 419 slice_from("\u03B9\u03BA"); // <+ s, line 419 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5a() { // (, line 423 // do, line 424 int v_1 = limit - cursor; lab0: do { // (, line 424 // literal, line 424 if (!(eq_s_b("\u03B1\u03B3\u03B1\u03BC\u03B5"))) { break lab0; } // atlimit, line 424 if (cursor > limit_backward) { break lab0; } // <-, line 424 slice_from("\u03B1\u03B3\u03B1\u03BC"); } while (false); cursor = limit - v_1; // do, line 425 int v_2 = limit - cursor; lab1: do { // (, line 425 // [, line 426 ket = cursor; // substring, line 426 if (find_among_b(a_40) == 0) { break lab1; } // ], line 426 bra = cursor; // (, line 427 // delete, line 427 slice_del(); // unset test1, line 427 B_test1 = false; } while (false); cursor = limit - v_2; // [, line 430 ket = cursor; // literal, line 430 if (!(eq_s_b("\u03B1\u03BC\u03B5"))) { return false; } // ], line 430 bra = cursor; // delete, line 431 slice_del(); // unset test1, line 432 B_test1 = false; // [, line 433 ket = cursor; // substring, line 433 if (find_among_b(a_41) == 0) { return false; } // ], line 433 bra = cursor; // atlimit, line 433 if (cursor > limit_backward) { return false; } // (, line 435 // -> s, line 435 slice_to(S_s); // <-, line 435 slice_from("\u03B1\u03BC"); // <+ s, line 435 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5b() { // (, line 439 // do, line 440 int v_1 = limit - cursor; lab0: do { // (, line 440 // [, line 441 ket = cursor; // substring, line 441 if (find_among_b(a_43) == 0) { break lab0; } // ], line 441 bra = cursor; // (, line 443 // delete, line 444 slice_del(); // unset test1, line 445 B_test1 = false; // [, line 446 ket = cursor; // substring, line 446 if (find_among_b(a_42) == 0) { break lab0; } // ], line 446 bra = cursor; // atlimit, line 446 if (cursor > limit_backward) { break lab0; } // (, line 447 // -> s, line 447 slice_to(S_s); // <-, line 447 slice_from("\u03B1\u03B3\u03B1\u03BD"); // <+ s, line 447 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); cursor = limit - v_1; // [, line 452 ket = cursor; // literal, line 452 if (!(eq_s_b("\u03B1\u03BD\u03B5"))) { return false; } // ], line 452 bra = cursor; // delete, line 453 slice_del(); // unset test1, line 454 B_test1 = false; // or, line 455 lab1: do { int v_2 = limit - cursor; lab2: do { // (, line 455 // [, line 455 ket = cursor; if (!(in_grouping_b(g_v2, 945, 969))) { break lab2; } // ], line 455 bra = cursor; // -> s, line 455 slice_to(S_s); // <-, line 455 slice_from("\u03B1\u03BD"); // <+ s, line 455 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab1; } while (false); cursor = limit - v_2; // [, line 456 ket = cursor; } while (false); // substring, line 456 if (find_among_b(a_44) == 0) { return false; } // ], line 456 bra = cursor; // atlimit, line 456 if (cursor > limit_backward) { return false; } // (, line 473 // -> s, line 473 slice_to(S_s); // <-, line 473 slice_from("\u03B1\u03BD"); // <+ s, line 473 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5c() { // (, line 477 // do, line 478 int v_1 = limit - cursor; lab0: do { // (, line 478 // [, line 479 ket = cursor; // substring, line 479 if (find_among_b(a_45) == 0) { break lab0; } // ], line 479 bra = cursor; // (, line 480 // delete, line 480 slice_del(); // unset test1, line 480 B_test1 = false; } while (false); cursor = limit - v_1; // [, line 483 ket = cursor; // literal, line 483 if (!(eq_s_b("\u03B5\u03C4\u03B5"))) { return false; } // ], line 483 bra = cursor; // delete, line 484 slice_del(); // unset test1, line 485 B_test1 = false; // or, line 486 lab1: do { int v_2 = limit - cursor; lab2: do { // (, line 486 // [, line 486 ket = cursor; if (!(in_grouping_b(g_v2, 945, 969))) { break lab2; } // ], line 486 bra = cursor; // -> s, line 486 slice_to(S_s); // <-, line 486 slice_from("\u03B5\u03C4"); // <+ s, line 486 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab1; } while (false); cursor = limit - v_2; lab3: do { // (, line 487 // [, line 487 ket = cursor; // substring, line 487 if (find_among_b(a_46) == 0) { break lab3; } // ], line 487 bra = cursor; // (, line 491 // -> s, line 491 slice_to(S_s); // <-, line 491 slice_from("\u03B5\u03C4"); // <+ s, line 491 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab1; } while (false); cursor = limit - v_2; // [, line 493 ket = cursor; } while (false); // substring, line 493 if (find_among_b(a_47) == 0) { return false; } // ], line 493 bra = cursor; // atlimit, line 493 if (cursor > limit_backward) { return false; } // (, line 497 // -> s, line 497 slice_to(S_s); // <-, line 497 slice_from("\u03B5\u03C4"); // <+ s, line 497 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5d() { // (, line 501 // [, line 502 ket = cursor; // substring, line 502 if (find_among_b(a_48) == 0) { return false; } // ], line 502 bra = cursor; // (, line 503 // delete, line 504 slice_del(); // unset test1, line 505 B_test1 = false; // or, line 506 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 506 // [, line 506 ket = cursor; // literal, line 506 if (!(eq_s_b("\u03B1\u03C1\u03C7"))) { break lab1; } // ], line 506 bra = cursor; // atlimit, line 506 if (cursor > limit_backward) { break lab1; } // -> s, line 506 slice_to(S_s); // <-, line 506 slice_from("\u03BF\u03BD\u03C4"); // <+ s, line 506 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 507 // [, line 507 ket = cursor; // literal, line 507 if (!(eq_s_b("\u03BA\u03C1\u03B5"))) { return false; } // ], line 507 bra = cursor; // -> s, line 507 slice_to(S_s); // <-, line 507 slice_from("\u03C9\u03BD\u03C4"); // <+ s, line 507 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_step5e() { // (, line 512 // [, line 513 ket = cursor; // substring, line 513 if (find_among_b(a_49) == 0) { return false; } // ], line 513 bra = cursor; // (, line 514 // delete, line 515 slice_del(); // unset test1, line 516 B_test1 = false; // (, line 517 // [, line 517 ket = cursor; // literal, line 517 if (!(eq_s_b("\u03BF\u03BD"))) { return false; } // ], line 517 bra = cursor; // atlimit, line 517 if (cursor > limit_backward) { return false; } // -> s, line 517 slice_to(S_s); // <-, line 517 slice_from("\u03BF\u03BC\u03B1\u03C3\u03C4"); // <+ s, line 517 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5f() { // (, line 522 // do, line 523 int v_1 = limit - cursor; lab0: do { // (, line 523 // [, line 524 ket = cursor; // literal, line 524 if (!(eq_s_b("\u03B9\u03B5\u03C3\u03C4\u03B5"))) { break lab0; } // ], line 524 bra = cursor; // delete, line 525 slice_del(); // unset test1, line 526 B_test1 = false; // [, line 527 ket = cursor; // substring, line 527 if (find_among_b(a_50) == 0) { break lab0; } // ], line 527 bra = cursor; // atlimit, line 527 if (cursor > limit_backward) { break lab0; } // (, line 528 // -> s, line 528 slice_to(S_s); // <-, line 528 slice_from("\u03B9\u03B5\u03C3\u03C4"); // <+ s, line 528 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); cursor = limit - v_1; // [, line 531 ket = cursor; // literal, line 531 if (!(eq_s_b("\u03B5\u03C3\u03C4\u03B5"))) { return false; } // ], line 531 bra = cursor; // delete, line 532 slice_del(); // unset test1, line 533 B_test1 = false; // [, line 534 ket = cursor; // substring, line 534 if (find_among_b(a_51) == 0) { return false; } // ], line 534 bra = cursor; // atlimit, line 534 if (cursor > limit_backward) { return false; } // (, line 536 // -> s, line 536 slice_to(S_s); // <-, line 536 slice_from("\u03B9\u03B5\u03C3\u03C4"); // <+ s, line 536 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5g() { // (, line 540 // do, line 541 int v_1 = limit - cursor; lab0: do { // (, line 541 // [, line 542 ket = cursor; // substring, line 542 if (find_among_b(a_52) == 0) { break lab0; } // ], line 542 bra = cursor; // (, line 543 // delete, line 543 slice_del(); // unset test1, line 543 B_test1 = false; } while (false); cursor = limit - v_1; // [, line 546 ket = cursor; // substring, line 546 if (find_among_b(a_55) == 0) { return false; } // ], line 546 bra = cursor; // (, line 547 // delete, line 548 slice_del(); // unset test1, line 549 B_test1 = false; // or, line 552 lab1: do { int v_2 = limit - cursor; lab2: do { // (, line 550 // [, line 550 ket = cursor; // substring, line 550 if (find_among_b(a_53) == 0) { break lab2; } // ], line 550 bra = cursor; // (, line 551 // -> s, line 551 slice_to(S_s); // <-, line 551 slice_from("\u03B7\u03BA"); // <+ s, line 551 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab1; } while (false); cursor = limit - v_2; // (, line 553 // [, line 553 ket = cursor; // substring, line 553 if (find_among_b(a_54) == 0) { return false; } // ], line 553 bra = cursor; // atlimit, line 553 if (cursor > limit_backward) { return false; } // (, line 554 // -> s, line 554 slice_to(S_s); // <-, line 554 slice_from("\u03B7\u03BA"); // <+ s, line 554 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_step5h() { // (, line 560 // [, line 561 ket = cursor; // substring, line 561 if (find_among_b(a_58) == 0) { return false; } // ], line 561 bra = cursor; // (, line 562 // delete, line 563 slice_del(); // unset test1, line 564 B_test1 = false; // or, line 569 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 565 // [, line 565 ket = cursor; // substring, line 565 if (find_among_b(a_56) == 0) { break lab1; } // ], line 565 bra = cursor; // (, line 567 // -> s, line 567 slice_to(S_s); // <-, line 567 slice_from("\u03BF\u03C5\u03C3"); // <+ s, line 567 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 570 // [, line 570 ket = cursor; // substring, line 570 if (find_among_b(a_57) == 0) { return false; } // ], line 570 bra = cursor; // atlimit, line 570 if (cursor > limit_backward) { return false; } // (, line 574 // -> s, line 574 slice_to(S_s); // <-, line 574 slice_from("\u03BF\u03C5\u03C3"); // <+ s, line 574 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); return true; } private boolean r_step5i() { // (, line 580 // [, line 581 ket = cursor; // substring, line 581 if (find_among_b(a_62) == 0) { return false; } // ], line 581 bra = cursor; // (, line 582 // delete, line 583 slice_del(); // unset test1, line 584 B_test1 = false; // or, line 585 lab0: do { int v_1 = limit - cursor; lab1: do { // (, line 585 // [, line 585 ket = cursor; // literal, line 585 if (!(eq_s_b("\u03BA\u03BF\u03BB\u03BB"))) { break lab1; } // ], line 585 bra = cursor; // -> s, line 585 slice_to(S_s); // <-, line 585 slice_from("\u03B1\u03B3"); // <+ s, line 585 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab0; } while (false); cursor = limit - v_1; // (, line 585 // not, line 586 { int v_2 = limit - cursor; lab2: do { // (, line 586 // [, line 586 ket = cursor; // substring, line 586 if (find_among_b(a_59) == 0) { break lab2; } // ], line 586 bra = cursor; return false; } while (false); cursor = limit - v_2; } // or, line 590 lab3: do { int v_3 = limit - cursor; lab4: do { // (, line 587 // [, line 587 ket = cursor; // substring, line 587 if (find_among_b(a_60) == 0) { break lab4; } // ], line 587 bra = cursor; // (, line 589 // -> s, line 589 slice_to(S_s); // <-, line 589 slice_from("\u03B1\u03B3"); // <+ s, line 589 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } break lab3; } while (false); cursor = limit - v_3; // (, line 591 // [, line 591 ket = cursor; // substring, line 591 if (find_among_b(a_61) == 0) { return false; } // ], line 591 bra = cursor; // atlimit, line 591 if (cursor > limit_backward) { return false; } // (, line 597 // -> s, line 597 slice_to(S_s); // <-, line 597 slice_from("\u03B1\u03B3"); // <+ s, line 597 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } } while (false); } while (false); return true; } private boolean r_step5j() { // (, line 604 // [, line 605 ket = cursor; // substring, line 605 if (find_among_b(a_63) == 0) { return false; } // ], line 605 bra = cursor; // (, line 606 // delete, line 606 slice_del(); // unset test1, line 606 B_test1 = false; // [, line 608 ket = cursor; // substring, line 608 if (find_among_b(a_64) == 0) { return false; } // ], line 608 bra = cursor; // atlimit, line 608 if (cursor > limit_backward) { return false; } // (, line 609 // -> s, line 609 slice_to(S_s); // <-, line 609 slice_from("\u03B7\u03C3"); // <+ s, line 609 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5k() { // (, line 613 // [, line 614 ket = cursor; // substring, line 614 if (find_among_b(a_65) == 0) { return false; } // ], line 614 bra = cursor; // (, line 615 // delete, line 615 slice_del(); // unset test1, line 615 B_test1 = false; // [, line 617 ket = cursor; // substring, line 617 if (find_among_b(a_66) == 0) { return false; } // ], line 617 bra = cursor; // atlimit, line 617 if (cursor > limit_backward) { return false; } // (, line 619 // -> s, line 619 slice_to(S_s); // <-, line 619 slice_from("\u03B7\u03C3\u03C4"); // <+ s, line 619 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5l() { // (, line 623 // [, line 624 ket = cursor; // substring, line 624 if (find_among_b(a_67) == 0) { return false; } // ], line 624 bra = cursor; // (, line 625 // delete, line 625 slice_del(); // unset test1, line 625 B_test1 = false; // [, line 627 ket = cursor; // substring, line 627 if (find_among_b(a_68) == 0) { return false; } // ], line 627 bra = cursor; // atlimit, line 627 if (cursor > limit_backward) { return false; } // (, line 628 // -> s, line 628 slice_to(S_s); // <-, line 628 slice_from("\u03BF\u03C5\u03BD"); // <+ s, line 628 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step5m() { // (, line 632 // [, line 633 ket = cursor; // substring, line 633 if (find_among_b(a_69) == 0) { return false; } // ], line 633 bra = cursor; // (, line 634 // delete, line 634 slice_del(); // unset test1, line 634 B_test1 = false; // [, line 636 ket = cursor; // substring, line 636 if (find_among_b(a_70) == 0) { return false; } // ], line 636 bra = cursor; // atlimit, line 636 if (cursor > limit_backward) { return false; } // (, line 638 // -> s, line 638 slice_to(S_s); // <-, line 638 slice_from("\u03BF\u03C5\u03BC"); // <+ s, line 638 { int c = cursor; insert(cursor, cursor, S_s); cursor = c; } return true; } private boolean r_step6() { // (, line 642 // do, line 643 int v_1 = limit - cursor; lab0: do { // (, line 643 // [, line 644 ket = cursor; // substring, line 644 if (find_among_b(a_71) == 0) { break lab0; } // ], line 644 bra = cursor; // (, line 645 // <-, line 645 slice_from("\u03BC\u03B1"); } while (false); cursor = limit - v_1; // Boolean test test1, line 648 if (!(B_test1)) { return false; } // [, line 649 ket = cursor; // substring, line 649 if (find_among_b(a_72) == 0) { return false; } // ], line 649 bra = cursor; // (, line 659 // delete, line 659 slice_del(); return true; } private boolean r_step7() { // (, line 663 // [, line 664 ket = cursor; // substring, line 664 if (find_among_b(a_73) == 0) { return false; } // ], line 664 bra = cursor; // (, line 665 // delete, line 665 slice_del(); return true; } public boolean stem() { // (, line 670 // backwards, line 671 limit_backward = cursor; cursor = limit; // (, line 671 // do, line 672 int v_1 = limit - cursor; lab0: do { // call tolower, line 672 if (!r_tolower()) { break lab0; } } while (false); cursor = limit - v_1; // call has_min_length, line 673 if (!r_has_min_length()) { return false; } // set test1, line 674 B_test1 = true; // do, line 675 int v_2 = limit - cursor; lab1: do { // call step1, line 675 if (!r_step1()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 676 int v_3 = limit - cursor; lab2: do { // call steps1, line 676 if (!r_steps1()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 677 int v_4 = limit - cursor; lab3: do { // call steps2, line 677 if (!r_steps2()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 678 int v_5 = limit - cursor; lab4: do { // call steps3, line 678 if (!r_steps3()) { break lab4; } } while (false); cursor = limit - v_5; // do, line 679 int v_6 = limit - cursor; lab5: do { // call steps4, line 679 if (!r_steps4()) { break lab5; } } while (false); cursor = limit - v_6; // do, line 680 int v_7 = limit - cursor; lab6: do { // call steps5, line 680 if (!r_steps5()) { break lab6; } } while (false); cursor = limit - v_7; // do, line 681 int v_8 = limit - cursor; lab7: do { // call steps6, line 681 if (!r_steps6()) { break lab7; } } while (false); cursor = limit - v_8; // do, line 682 int v_9 = limit - cursor; lab8: do { // call steps7, line 682 if (!r_steps7()) { break lab8; } } while (false); cursor = limit - v_9; // do, line 683 int v_10 = limit - cursor; lab9: do { // call steps8, line 683 if (!r_steps8()) { break lab9; } } while (false); cursor = limit - v_10; // do, line 684 int v_11 = limit - cursor; lab10: do { // call steps9, line 684 if (!r_steps9()) { break lab10; } } while (false); cursor = limit - v_11; // do, line 685 int v_12 = limit - cursor; lab11: do { // call steps10, line 685 if (!r_steps10()) { break lab11; } } while (false); cursor = limit - v_12; // do, line 686 int v_13 = limit - cursor; lab12: do { // call step2a, line 686 if (!r_step2a()) { break lab12; } } while (false); cursor = limit - v_13; // do, line 687 int v_14 = limit - cursor; lab13: do { // call step2b, line 687 if (!r_step2b()) { break lab13; } } while (false); cursor = limit - v_14; // do, line 688 int v_15 = limit - cursor; lab14: do { // call step2c, line 688 if (!r_step2c()) { break lab14; } } while (false); cursor = limit - v_15; // do, line 689 int v_16 = limit - cursor; lab15: do { // call step2d, line 689 if (!r_step2d()) { break lab15; } } while (false); cursor = limit - v_16; // do, line 690 int v_17 = limit - cursor; lab16: do { // call step3, line 690 if (!r_step3()) { break lab16; } } while (false); cursor = limit - v_17; // do, line 691 int v_18 = limit - cursor; lab17: do { // call step4, line 691 if (!r_step4()) { break lab17; } } while (false); cursor = limit - v_18; // do, line 692 int v_19 = limit - cursor; lab18: do { // call step5a, line 692 if (!r_step5a()) { break lab18; } } while (false); cursor = limit - v_19; // do, line 693 int v_20 = limit - cursor; lab19: do { // call step5b, line 693 if (!r_step5b()) { break lab19; } } while (false); cursor = limit - v_20; // do, line 694 int v_21 = limit - cursor; lab20: do { // call step5c, line 694 if (!r_step5c()) { break lab20; } } while (false); cursor = limit - v_21; // do, line 695 int v_22 = limit - cursor; lab21: do { // call step5d, line 695 if (!r_step5d()) { break lab21; } } while (false); cursor = limit - v_22; // do, line 696 int v_23 = limit - cursor; lab22: do { // call step5e, line 696 if (!r_step5e()) { break lab22; } } while (false); cursor = limit - v_23; // do, line 697 int v_24 = limit - cursor; lab23: do { // call step5f, line 697 if (!r_step5f()) { break lab23; } } while (false); cursor = limit - v_24; // do, line 698 int v_25 = limit - cursor; lab24: do { // call step5g, line 698 if (!r_step5g()) { break lab24; } } while (false); cursor = limit - v_25; // do, line 699 int v_26 = limit - cursor; lab25: do { // call step5h, line 699 if (!r_step5h()) { break lab25; } } while (false); cursor = limit - v_26; // do, line 700 int v_27 = limit - cursor; lab26: do { // call step5j, line 700 if (!r_step5j()) { break lab26; } } while (false); cursor = limit - v_27; // do, line 701 int v_28 = limit - cursor; lab27: do { // call step5i, line 701 if (!r_step5i()) { break lab27; } } while (false); cursor = limit - v_28; // do, line 702 int v_29 = limit - cursor; lab28: do { // call step5k, line 702 if (!r_step5k()) { break lab28; } } while (false); cursor = limit - v_29; // do, line 703 int v_30 = limit - cursor; lab29: do { // call step5l, line 703 if (!r_step5l()) { break lab29; } } while (false); cursor = limit - v_30; // do, line 704 int v_31 = limit - cursor; lab30: do { // call step5m, line 704 if (!r_step5m()) { break lab30; } } while (false); cursor = limit - v_31; // do, line 705 int v_32 = limit - cursor; lab31: do { // call step6, line 705 if (!r_step6()) { break lab31; } } while (false); cursor = limit - v_32; // do, line 706 int v_33 = limit - cursor; lab32: do { // call step7, line 706 if (!r_step7()) { break lab32; } } while (false); cursor = limit - v_33; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof greekStemmer; } public int hashCode() { return greekStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000161 14135770370 032676 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/swedishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/swedishStemmer.j0100664 0001750 0001750 00000036314 14135770370 034226 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class swedishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static swedishStemmer methodObject = new swedishStemmer (); private final static Among a_0[] = { new Among ( "a", -1, 1, "", methodObject ), new Among ( "arna", 0, 1, "", methodObject ), new Among ( "erna", 0, 1, "", methodObject ), new Among ( "heterna", 2, 1, "", methodObject ), new Among ( "orna", 0, 1, "", methodObject ), new Among ( "ad", -1, 1, "", methodObject ), new Among ( "e", -1, 1, "", methodObject ), new Among ( "ade", 6, 1, "", methodObject ), new Among ( "ande", 6, 1, "", methodObject ), new Among ( "arne", 6, 1, "", methodObject ), new Among ( "are", 6, 1, "", methodObject ), new Among ( "aste", 6, 1, "", methodObject ), new Among ( "en", -1, 1, "", methodObject ), new Among ( "anden", 12, 1, "", methodObject ), new Among ( "aren", 12, 1, "", methodObject ), new Among ( "heten", 12, 1, "", methodObject ), new Among ( "ern", -1, 1, "", methodObject ), new Among ( "ar", -1, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "heter", 18, 1, "", methodObject ), new Among ( "or", -1, 1, "", methodObject ), new Among ( "s", -1, 2, "", methodObject ), new Among ( "as", 21, 1, "", methodObject ), new Among ( "arnas", 22, 1, "", methodObject ), new Among ( "ernas", 22, 1, "", methodObject ), new Among ( "ornas", 22, 1, "", methodObject ), new Among ( "es", 21, 1, "", methodObject ), new Among ( "ades", 26, 1, "", methodObject ), new Among ( "andes", 26, 1, "", methodObject ), new Among ( "ens", 21, 1, "", methodObject ), new Among ( "arens", 29, 1, "", methodObject ), new Among ( "hetens", 29, 1, "", methodObject ), new Among ( "erns", 21, 1, "", methodObject ), new Among ( "at", -1, 1, "", methodObject ), new Among ( "andet", -1, 1, "", methodObject ), new Among ( "het", -1, 1, "", methodObject ), new Among ( "ast", -1, 1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "dd", -1, -1, "", methodObject ), new Among ( "gd", -1, -1, "", methodObject ), new Among ( "nn", -1, -1, "", methodObject ), new Among ( "dt", -1, -1, "", methodObject ), new Among ( "gt", -1, -1, "", methodObject ), new Among ( "kt", -1, -1, "", methodObject ), new Among ( "tt", -1, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ig", -1, 1, "", methodObject ), new Among ( "lig", 0, 1, "", methodObject ), new Among ( "els", -1, 1, "", methodObject ), new Among ( "fullt", -1, 3, "", methodObject ), new Among ( "l\u00F6st", -1, 2, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 }; private static final char g_s_ending[] = {119, 127, 149 }; private int I_x; private int I_p1; private void copy_from(swedishStemmer other) { I_x = other.I_x; I_p1 = other.I_p1; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_2; // (, line 26 I_p1 = limit; // test, line 29 v_1 = cursor; // (, line 29 // hop, line 29 { int c = cursor + 3; if (0 > c || c > limit) { return false; } cursor = c; } // setmark x, line 29 I_x = cursor; cursor = v_1; // goto, line 30 golab0: while(true) { v_2 = cursor; lab1: do { if (!(in_grouping(g_v, 97, 246))) { break lab1; } cursor = v_2; break golab0; } while (false); cursor = v_2; if (cursor >= limit) { return false; } cursor++; } // gopast, line 30 golab2: while(true) { lab3: do { if (!(out_grouping(g_v, 97, 246))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 30 I_p1 = cursor; // try, line 31 lab4: do { // (, line 31 if (!(I_p1 < I_x)) { break lab4; } I_p1 = I_x; } while (false); return true; } private boolean r_main_suffix() { int among_var; int v_1; int v_2; // (, line 36 // setlimit, line 37 v_1 = limit - cursor; // tomark, line 37 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 37 // [, line 37 ket = cursor; // substring, line 37 among_var = find_among_b(a_0, 37); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 37 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 44 // delete, line 44 slice_del(); break; case 2: // (, line 46 if (!(in_grouping_b(g_s_ending, 98, 121))) { return false; } // delete, line 46 slice_del(); break; } return true; } private boolean r_consonant_pair() { int v_1; int v_2; int v_3; // setlimit, line 50 v_1 = limit - cursor; // tomark, line 50 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 50 // and, line 52 v_3 = limit - cursor; // among, line 51 if (find_among_b(a_1, 7) == 0) { limit_backward = v_2; return false; } cursor = limit - v_3; // (, line 52 // [, line 52 ket = cursor; // next, line 52 if (cursor <= limit_backward) { limit_backward = v_2; return false; } cursor--; // ], line 52 bra = cursor; // delete, line 52 slice_del(); limit_backward = v_2; return true; } private boolean r_other_suffix() { int among_var; int v_1; int v_2; // setlimit, line 55 v_1 = limit - cursor; // tomark, line 55 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 55 // [, line 56 ket = cursor; // substring, line 56 among_var = find_among_b(a_2, 5); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 56 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 57 // delete, line 57 slice_del(); break; case 2: // (, line 58 // <-, line 58 slice_from("l\u00F6s"); break; case 3: // (, line 59 // <-, line 59 slice_from("full"); break; } limit_backward = v_2; return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; // (, line 64 // do, line 66 v_1 = cursor; lab0: do { // call mark_regions, line 66 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 67 limit_backward = cursor; cursor = limit; // (, line 67 // do, line 68 v_2 = limit - cursor; lab1: do { // call main_suffix, line 68 if (!r_main_suffix()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 69 v_3 = limit - cursor; lab2: do { // call consonant_pair, line 69 if (!r_consonant_pair()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 70 v_4 = limit - cursor; lab3: do { // call other_suffix, line 70 if (!r_other_suffix()) { break lab3; } } while (false); cursor = limit - v_4; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof swedishStemmer; } public int hashCode() { return swedishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000162 14135770370 032677 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/romanianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/romanianStemmer.0100664 0001750 0001750 00000140011 14135770370 034200 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class romanianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static romanianStemmer methodObject = new romanianStemmer (); private final static Among a_0[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "I", 0, 1, "", methodObject ), new Among ( "U", 0, 2, "", methodObject ) }; private final static Among a_1[] = { new Among ( "ea", -1, 3, "", methodObject ), new Among ( "a\u0163ia", -1, 7, "", methodObject ), new Among ( "aua", -1, 2, "", methodObject ), new Among ( "iua", -1, 4, "", methodObject ), new Among ( "a\u0163ie", -1, 7, "", methodObject ), new Among ( "ele", -1, 3, "", methodObject ), new Among ( "ile", -1, 5, "", methodObject ), new Among ( "iile", 6, 4, "", methodObject ), new Among ( "iei", -1, 4, "", methodObject ), new Among ( "atei", -1, 6, "", methodObject ), new Among ( "ii", -1, 4, "", methodObject ), new Among ( "ului", -1, 1, "", methodObject ), new Among ( "ul", -1, 1, "", methodObject ), new Among ( "elor", -1, 3, "", methodObject ), new Among ( "ilor", -1, 4, "", methodObject ), new Among ( "iilor", 14, 4, "", methodObject ) }; private final static Among a_2[] = { new Among ( "icala", -1, 4, "", methodObject ), new Among ( "iciva", -1, 4, "", methodObject ), new Among ( "ativa", -1, 5, "", methodObject ), new Among ( "itiva", -1, 6, "", methodObject ), new Among ( "icale", -1, 4, "", methodObject ), new Among ( "a\u0163iune", -1, 5, "", methodObject ), new Among ( "i\u0163iune", -1, 6, "", methodObject ), new Among ( "atoare", -1, 5, "", methodObject ), new Among ( "itoare", -1, 6, "", methodObject ), new Among ( "\u0103toare", -1, 5, "", methodObject ), new Among ( "icitate", -1, 4, "", methodObject ), new Among ( "abilitate", -1, 1, "", methodObject ), new Among ( "ibilitate", -1, 2, "", methodObject ), new Among ( "ivitate", -1, 3, "", methodObject ), new Among ( "icive", -1, 4, "", methodObject ), new Among ( "ative", -1, 5, "", methodObject ), new Among ( "itive", -1, 6, "", methodObject ), new Among ( "icali", -1, 4, "", methodObject ), new Among ( "atori", -1, 5, "", methodObject ), new Among ( "icatori", 18, 4, "", methodObject ), new Among ( "itori", -1, 6, "", methodObject ), new Among ( "\u0103tori", -1, 5, "", methodObject ), new Among ( "icitati", -1, 4, "", methodObject ), new Among ( "abilitati", -1, 1, "", methodObject ), new Among ( "ivitati", -1, 3, "", methodObject ), new Among ( "icivi", -1, 4, "", methodObject ), new Among ( "ativi", -1, 5, "", methodObject ), new Among ( "itivi", -1, 6, "", methodObject ), new Among ( "icit\u0103i", -1, 4, "", methodObject ), new Among ( "abilit\u0103i", -1, 1, "", methodObject ), new Among ( "ivit\u0103i", -1, 3, "", methodObject ), new Among ( "icit\u0103\u0163i", -1, 4, "", methodObject ), new Among ( "abilit\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "ivit\u0103\u0163i", -1, 3, "", methodObject ), new Among ( "ical", -1, 4, "", methodObject ), new Among ( "ator", -1, 5, "", methodObject ), new Among ( "icator", 35, 4, "", methodObject ), new Among ( "itor", -1, 6, "", methodObject ), new Among ( "\u0103tor", -1, 5, "", methodObject ), new Among ( "iciv", -1, 4, "", methodObject ), new Among ( "ativ", -1, 5, "", methodObject ), new Among ( "itiv", -1, 6, "", methodObject ), new Among ( "ical\u0103", -1, 4, "", methodObject ), new Among ( "iciv\u0103", -1, 4, "", methodObject ), new Among ( "ativ\u0103", -1, 5, "", methodObject ), new Among ( "itiv\u0103", -1, 6, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ica", -1, 1, "", methodObject ), new Among ( "abila", -1, 1, "", methodObject ), new Among ( "ibila", -1, 1, "", methodObject ), new Among ( "oasa", -1, 1, "", methodObject ), new Among ( "ata", -1, 1, "", methodObject ), new Among ( "ita", -1, 1, "", methodObject ), new Among ( "anta", -1, 1, "", methodObject ), new Among ( "ista", -1, 3, "", methodObject ), new Among ( "uta", -1, 1, "", methodObject ), new Among ( "iva", -1, 1, "", methodObject ), new Among ( "ic", -1, 1, "", methodObject ), new Among ( "ice", -1, 1, "", methodObject ), new Among ( "abile", -1, 1, "", methodObject ), new Among ( "ibile", -1, 1, "", methodObject ), new Among ( "isme", -1, 3, "", methodObject ), new Among ( "iune", -1, 2, "", methodObject ), new Among ( "oase", -1, 1, "", methodObject ), new Among ( "ate", -1, 1, "", methodObject ), new Among ( "itate", 17, 1, "", methodObject ), new Among ( "ite", -1, 1, "", methodObject ), new Among ( "ante", -1, 1, "", methodObject ), new Among ( "iste", -1, 3, "", methodObject ), new Among ( "ute", -1, 1, "", methodObject ), new Among ( "ive", -1, 1, "", methodObject ), new Among ( "ici", -1, 1, "", methodObject ), new Among ( "abili", -1, 1, "", methodObject ), new Among ( "ibili", -1, 1, "", methodObject ), new Among ( "iuni", -1, 2, "", methodObject ), new Among ( "atori", -1, 1, "", methodObject ), new Among ( "osi", -1, 1, "", methodObject ), new Among ( "ati", -1, 1, "", methodObject ), new Among ( "itati", 30, 1, "", methodObject ), new Among ( "iti", -1, 1, "", methodObject ), new Among ( "anti", -1, 1, "", methodObject ), new Among ( "isti", -1, 3, "", methodObject ), new Among ( "uti", -1, 1, "", methodObject ), new Among ( "i\u015Fti", -1, 3, "", methodObject ), new Among ( "ivi", -1, 1, "", methodObject ), new Among ( "it\u0103i", -1, 1, "", methodObject ), new Among ( "o\u015Fi", -1, 1, "", methodObject ), new Among ( "it\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "abil", -1, 1, "", methodObject ), new Among ( "ibil", -1, 1, "", methodObject ), new Among ( "ism", -1, 3, "", methodObject ), new Among ( "ator", -1, 1, "", methodObject ), new Among ( "os", -1, 1, "", methodObject ), new Among ( "at", -1, 1, "", methodObject ), new Among ( "it", -1, 1, "", methodObject ), new Among ( "ant", -1, 1, "", methodObject ), new Among ( "ist", -1, 3, "", methodObject ), new Among ( "ut", -1, 1, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ), new Among ( "ic\u0103", -1, 1, "", methodObject ), new Among ( "abil\u0103", -1, 1, "", methodObject ), new Among ( "ibil\u0103", -1, 1, "", methodObject ), new Among ( "oas\u0103", -1, 1, "", methodObject ), new Among ( "at\u0103", -1, 1, "", methodObject ), new Among ( "it\u0103", -1, 1, "", methodObject ), new Among ( "ant\u0103", -1, 1, "", methodObject ), new Among ( "ist\u0103", -1, 3, "", methodObject ), new Among ( "ut\u0103", -1, 1, "", methodObject ), new Among ( "iv\u0103", -1, 1, "", methodObject ) }; private final static Among a_4[] = { new Among ( "ea", -1, 1, "", methodObject ), new Among ( "ia", -1, 1, "", methodObject ), new Among ( "esc", -1, 1, "", methodObject ), new Among ( "\u0103sc", -1, 1, "", methodObject ), new Among ( "ind", -1, 1, "", methodObject ), new Among ( "\u00E2nd", -1, 1, "", methodObject ), new Among ( "are", -1, 1, "", methodObject ), new Among ( "ere", -1, 1, "", methodObject ), new Among ( "ire", -1, 1, "", methodObject ), new Among ( "\u00E2re", -1, 1, "", methodObject ), new Among ( "se", -1, 2, "", methodObject ), new Among ( "ase", 10, 1, "", methodObject ), new Among ( "sese", 10, 2, "", methodObject ), new Among ( "ise", 10, 1, "", methodObject ), new Among ( "use", 10, 1, "", methodObject ), new Among ( "\u00E2se", 10, 1, "", methodObject ), new Among ( "e\u015Fte", -1, 1, "", methodObject ), new Among ( "\u0103\u015Fte", -1, 1, "", methodObject ), new Among ( "eze", -1, 1, "", methodObject ), new Among ( "ai", -1, 1, "", methodObject ), new Among ( "eai", 19, 1, "", methodObject ), new Among ( "iai", 19, 1, "", methodObject ), new Among ( "sei", -1, 2, "", methodObject ), new Among ( "e\u015Fti", -1, 1, "", methodObject ), new Among ( "\u0103\u015Fti", -1, 1, "", methodObject ), new Among ( "ui", -1, 1, "", methodObject ), new Among ( "ezi", -1, 1, "", methodObject ), new Among ( "\u00E2i", -1, 1, "", methodObject ), new Among ( "a\u015Fi", -1, 1, "", methodObject ), new Among ( "se\u015Fi", -1, 2, "", methodObject ), new Among ( "ase\u015Fi", 29, 1, "", methodObject ), new Among ( "sese\u015Fi", 29, 2, "", methodObject ), new Among ( "ise\u015Fi", 29, 1, "", methodObject ), new Among ( "use\u015Fi", 29, 1, "", methodObject ), new Among ( "\u00E2se\u015Fi", 29, 1, "", methodObject ), new Among ( "i\u015Fi", -1, 1, "", methodObject ), new Among ( "u\u015Fi", -1, 1, "", methodObject ), new Among ( "\u00E2\u015Fi", -1, 1, "", methodObject ), new Among ( "a\u0163i", -1, 2, "", methodObject ), new Among ( "ea\u0163i", 38, 1, "", methodObject ), new Among ( "ia\u0163i", 38, 1, "", methodObject ), new Among ( "e\u0163i", -1, 2, "", methodObject ), new Among ( "i\u0163i", -1, 2, "", methodObject ), new Among ( "\u00E2\u0163i", -1, 2, "", methodObject ), new Among ( "ar\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "ser\u0103\u0163i", -1, 2, "", methodObject ), new Among ( "aser\u0103\u0163i", 45, 1, "", methodObject ), new Among ( "seser\u0103\u0163i", 45, 2, "", methodObject ), new Among ( "iser\u0103\u0163i", 45, 1, "", methodObject ), new Among ( "user\u0103\u0163i", 45, 1, "", methodObject ), new Among ( "\u00E2ser\u0103\u0163i", 45, 1, "", methodObject ), new Among ( "ir\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "ur\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "\u00E2r\u0103\u0163i", -1, 1, "", methodObject ), new Among ( "am", -1, 1, "", methodObject ), new Among ( "eam", 54, 1, "", methodObject ), new Among ( "iam", 54, 1, "", methodObject ), new Among ( "em", -1, 2, "", methodObject ), new Among ( "asem", 57, 1, "", methodObject ), new Among ( "sesem", 57, 2, "", methodObject ), new Among ( "isem", 57, 1, "", methodObject ), new Among ( "usem", 57, 1, "", methodObject ), new Among ( "\u00E2sem", 57, 1, "", methodObject ), new Among ( "im", -1, 2, "", methodObject ), new Among ( "\u00E2m", -1, 2, "", methodObject ), new Among ( "\u0103m", -1, 2, "", methodObject ), new Among ( "ar\u0103m", 65, 1, "", methodObject ), new Among ( "ser\u0103m", 65, 2, "", methodObject ), new Among ( "aser\u0103m", 67, 1, "", methodObject ), new Among ( "seser\u0103m", 67, 2, "", methodObject ), new Among ( "iser\u0103m", 67, 1, "", methodObject ), new Among ( "user\u0103m", 67, 1, "", methodObject ), new Among ( "\u00E2ser\u0103m", 67, 1, "", methodObject ), new Among ( "ir\u0103m", 65, 1, "", methodObject ), new Among ( "ur\u0103m", 65, 1, "", methodObject ), new Among ( "\u00E2r\u0103m", 65, 1, "", methodObject ), new Among ( "au", -1, 1, "", methodObject ), new Among ( "eau", 76, 1, "", methodObject ), new Among ( "iau", 76, 1, "", methodObject ), new Among ( "indu", -1, 1, "", methodObject ), new Among ( "\u00E2ndu", -1, 1, "", methodObject ), new Among ( "ez", -1, 1, "", methodObject ), new Among ( "easc\u0103", -1, 1, "", methodObject ), new Among ( "ar\u0103", -1, 1, "", methodObject ), new Among ( "ser\u0103", -1, 2, "", methodObject ), new Among ( "aser\u0103", 84, 1, "", methodObject ), new Among ( "seser\u0103", 84, 2, "", methodObject ), new Among ( "iser\u0103", 84, 1, "", methodObject ), new Among ( "user\u0103", 84, 1, "", methodObject ), new Among ( "\u00E2ser\u0103", 84, 1, "", methodObject ), new Among ( "ir\u0103", -1, 1, "", methodObject ), new Among ( "ur\u0103", -1, 1, "", methodObject ), new Among ( "\u00E2r\u0103", -1, 1, "", methodObject ), new Among ( "eaz\u0103", -1, 1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "a", -1, 1, "", methodObject ), new Among ( "e", -1, 1, "", methodObject ), new Among ( "ie", 1, 1, "", methodObject ), new Among ( "i", -1, 1, "", methodObject ), new Among ( "\u0103", -1, 1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 }; private boolean B_standard_suffix_removed; private int I_p2; private int I_p1; private int I_pV; private void copy_from(romanianStemmer other) { B_standard_suffix_removed = other.B_standard_suffix_removed; I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_prelude() { int v_1; int v_2; int v_3; // (, line 31 // repeat, line 32 replab0: while(true) { v_1 = cursor; lab1: do { // goto, line 32 golab2: while(true) { v_2 = cursor; lab3: do { // (, line 32 if (!(in_grouping(g_v, 97, 259))) { break lab3; } // [, line 33 bra = cursor; // or, line 33 lab4: do { v_3 = cursor; lab5: do { // (, line 33 // literal, line 33 if (!(eq_s(1, "u"))) { break lab5; } // ], line 33 ket = cursor; if (!(in_grouping(g_v, 97, 259))) { break lab5; } // <-, line 33 slice_from("U"); break lab4; } while (false); cursor = v_3; // (, line 34 // literal, line 34 if (!(eq_s(1, "i"))) { break lab3; } // ], line 34 ket = cursor; if (!(in_grouping(g_v, 97, 259))) { break lab3; } // <-, line 34 slice_from("I"); } while (false); cursor = v_2; break golab2; } while (false); cursor = v_2; if (cursor >= limit) { break lab1; } cursor++; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_mark_regions() { int v_1; int v_2; int v_3; int v_6; int v_8; // (, line 38 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 44 v_1 = cursor; lab0: do { // (, line 44 // or, line 46 lab1: do { v_2 = cursor; lab2: do { // (, line 45 if (!(in_grouping(g_v, 97, 259))) { break lab2; } // or, line 45 lab3: do { v_3 = cursor; lab4: do { // (, line 45 if (!(out_grouping(g_v, 97, 259))) { break lab4; } // gopast, line 45 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 259))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { break lab4; } cursor++; } break lab3; } while (false); cursor = v_3; // (, line 45 if (!(in_grouping(g_v, 97, 259))) { break lab2; } // gopast, line 45 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 259))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab2; } cursor++; } } while (false); break lab1; } while (false); cursor = v_2; // (, line 47 if (!(out_grouping(g_v, 97, 259))) { break lab0; } // or, line 47 lab9: do { v_6 = cursor; lab10: do { // (, line 47 if (!(out_grouping(g_v, 97, 259))) { break lab10; } // gopast, line 47 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 259))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab10; } cursor++; } break lab9; } while (false); cursor = v_6; // (, line 47 if (!(in_grouping(g_v, 97, 259))) { break lab0; } // next, line 47 if (cursor >= limit) { break lab0; } cursor++; } while (false); } while (false); // setmark pV, line 48 I_pV = cursor; } while (false); cursor = v_1; // do, line 50 v_8 = cursor; lab13: do { // (, line 50 // gopast, line 51 golab14: while(true) { lab15: do { if (!(in_grouping(g_v, 97, 259))) { break lab15; } break golab14; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 51 golab16: while(true) { lab17: do { if (!(out_grouping(g_v, 97, 259))) { break lab17; } break golab16; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p1, line 51 I_p1 = cursor; // gopast, line 52 golab18: while(true) { lab19: do { if (!(in_grouping(g_v, 97, 259))) { break lab19; } break golab18; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // gopast, line 52 golab20: while(true) { lab21: do { if (!(out_grouping(g_v, 97, 259))) { break lab21; } break golab20; } while (false); if (cursor >= limit) { break lab13; } cursor++; } // setmark p2, line 52 I_p2 = cursor; } while (false); cursor = v_8; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 56 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 56 // [, line 58 bra = cursor; // substring, line 58 among_var = find_among(a_0, 3); if (among_var == 0) { break lab1; } // ], line 58 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 59 // <-, line 59 slice_from("i"); break; case 2: // (, line 60 // <-, line 60 slice_from("u"); break; case 3: // (, line 61 // next, line 61 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_step_0() { int among_var; int v_1; // (, line 72 // [, line 73 ket = cursor; // substring, line 73 among_var = find_among_b(a_1, 16); if (among_var == 0) { return false; } // ], line 73 bra = cursor; // call R1, line 73 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 75 // delete, line 75 slice_del(); break; case 2: // (, line 77 // <-, line 77 slice_from("a"); break; case 3: // (, line 79 // <-, line 79 slice_from("e"); break; case 4: // (, line 81 // <-, line 81 slice_from("i"); break; case 5: // (, line 83 // not, line 83 { v_1 = limit - cursor; lab0: do { // literal, line 83 if (!(eq_s_b(2, "ab"))) { break lab0; } return false; } while (false); cursor = limit - v_1; } // <-, line 83 slice_from("i"); break; case 6: // (, line 85 // <-, line 85 slice_from("at"); break; case 7: // (, line 87 // <-, line 87 slice_from("a\u0163i"); break; } return true; } private boolean r_combo_suffix() { int among_var; int v_1; // test, line 91 v_1 = limit - cursor; // (, line 91 // [, line 92 ket = cursor; // substring, line 92 among_var = find_among_b(a_2, 46); if (among_var == 0) { return false; } // ], line 92 bra = cursor; // call R1, line 92 if (!r_R1()) { return false; } // (, line 92 switch(among_var) { case 0: return false; case 1: // (, line 100 // <-, line 101 slice_from("abil"); break; case 2: // (, line 103 // <-, line 104 slice_from("ibil"); break; case 3: // (, line 106 // <-, line 107 slice_from("iv"); break; case 4: // (, line 112 // <-, line 113 slice_from("ic"); break; case 5: // (, line 117 // <-, line 118 slice_from("at"); break; case 6: // (, line 121 // <-, line 122 slice_from("it"); break; } // set standard_suffix_removed, line 125 B_standard_suffix_removed = true; cursor = limit - v_1; return true; } private boolean r_standard_suffix() { int among_var; int v_1; // (, line 129 // unset standard_suffix_removed, line 130 B_standard_suffix_removed = false; // repeat, line 131 replab0: while(true) { v_1 = limit - cursor; lab1: do { // call combo_suffix, line 131 if (!r_combo_suffix()) { break lab1; } continue replab0; } while (false); cursor = limit - v_1; break replab0; } // [, line 132 ket = cursor; // substring, line 132 among_var = find_among_b(a_3, 62); if (among_var == 0) { return false; } // ], line 132 bra = cursor; // call R2, line 132 if (!r_R2()) { return false; } // (, line 132 switch(among_var) { case 0: return false; case 1: // (, line 148 // delete, line 149 slice_del(); break; case 2: // (, line 151 // literal, line 152 if (!(eq_s_b(1, "\u0163"))) { return false; } // ], line 152 bra = cursor; // <-, line 152 slice_from("t"); break; case 3: // (, line 155 // <-, line 156 slice_from("ist"); break; } // set standard_suffix_removed, line 160 B_standard_suffix_removed = true; return true; } private boolean r_verb_suffix() { int among_var; int v_1; int v_2; int v_3; // setlimit, line 164 v_1 = limit - cursor; // tomark, line 164 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 164 // [, line 165 ket = cursor; // substring, line 165 among_var = find_among_b(a_4, 94); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 165 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 200 // or, line 200 lab0: do { v_3 = limit - cursor; lab1: do { if (!(out_grouping_b(g_v, 97, 259))) { break lab1; } break lab0; } while (false); cursor = limit - v_3; // literal, line 200 if (!(eq_s_b(1, "u"))) { limit_backward = v_2; return false; } } while (false); // delete, line 200 slice_del(); break; case 2: // (, line 214 // delete, line 214 slice_del(); break; } limit_backward = v_2; return true; } private boolean r_vowel_suffix() { int among_var; // (, line 218 // [, line 219 ket = cursor; // substring, line 219 among_var = find_among_b(a_5, 5); if (among_var == 0) { return false; } // ], line 219 bra = cursor; // call RV, line 219 if (!r_RV()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 220 // delete, line 220 slice_del(); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; // (, line 225 // do, line 226 v_1 = cursor; lab0: do { // call prelude, line 226 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 227 v_2 = cursor; lab1: do { // call mark_regions, line 227 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 228 limit_backward = cursor; cursor = limit; // (, line 228 // do, line 229 v_3 = limit - cursor; lab2: do { // call step_0, line 229 if (!r_step_0()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 230 v_4 = limit - cursor; lab3: do { // call standard_suffix, line 230 if (!r_standard_suffix()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 231 v_5 = limit - cursor; lab4: do { // (, line 231 // or, line 231 lab5: do { v_6 = limit - cursor; lab6: do { // Boolean test standard_suffix_removed, line 231 if (!(B_standard_suffix_removed)) { break lab6; } break lab5; } while (false); cursor = limit - v_6; // call verb_suffix, line 231 if (!r_verb_suffix()) { break lab4; } } while (false); } while (false); cursor = limit - v_5; // do, line 232 v_7 = limit - cursor; lab7: do { // call vowel_suffix, line 232 if (!r_vowel_suffix()) { break lab7; } } while (false); cursor = limit - v_7; cursor = limit_backward; // do, line 234 v_8 = cursor; lab8: do { // call postlude, line 234 if (!r_postlude()) { break lab8; } } while (false); cursor = v_8; return true; } public boolean equals( Object o ) { return o instanceof romanianStemmer; } public int hashCode() { return romanianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/danishStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/danishStemmer.ja0100664 0001750 0001750 00000043213 14135770370 034163 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class danishStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static danishStemmer methodObject = new danishStemmer (); private final static Among a_0[] = { new Among ( "hed", -1, 1, "", methodObject ), new Among ( "ethed", 0, 1, "", methodObject ), new Among ( "ered", -1, 1, "", methodObject ), new Among ( "e", -1, 1, "", methodObject ), new Among ( "erede", 3, 1, "", methodObject ), new Among ( "ende", 3, 1, "", methodObject ), new Among ( "erende", 5, 1, "", methodObject ), new Among ( "ene", 3, 1, "", methodObject ), new Among ( "erne", 3, 1, "", methodObject ), new Among ( "ere", 3, 1, "", methodObject ), new Among ( "en", -1, 1, "", methodObject ), new Among ( "heden", 10, 1, "", methodObject ), new Among ( "eren", 10, 1, "", methodObject ), new Among ( "er", -1, 1, "", methodObject ), new Among ( "heder", 13, 1, "", methodObject ), new Among ( "erer", 13, 1, "", methodObject ), new Among ( "s", -1, 2, "", methodObject ), new Among ( "heds", 16, 1, "", methodObject ), new Among ( "es", 16, 1, "", methodObject ), new Among ( "endes", 18, 1, "", methodObject ), new Among ( "erendes", 19, 1, "", methodObject ), new Among ( "enes", 18, 1, "", methodObject ), new Among ( "ernes", 18, 1, "", methodObject ), new Among ( "eres", 18, 1, "", methodObject ), new Among ( "ens", 16, 1, "", methodObject ), new Among ( "hedens", 24, 1, "", methodObject ), new Among ( "erens", 24, 1, "", methodObject ), new Among ( "ers", 16, 1, "", methodObject ), new Among ( "ets", 16, 1, "", methodObject ), new Among ( "erets", 28, 1, "", methodObject ), new Among ( "et", -1, 1, "", methodObject ), new Among ( "eret", 30, 1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "gd", -1, -1, "", methodObject ), new Among ( "dt", -1, -1, "", methodObject ), new Among ( "gt", -1, -1, "", methodObject ), new Among ( "kt", -1, -1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "ig", -1, 1, "", methodObject ), new Among ( "lig", 0, 1, "", methodObject ), new Among ( "elig", 1, 1, "", methodObject ), new Among ( "els", -1, 1, "", methodObject ), new Among ( "l\u00F8st", -1, 2, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 }; private static final char g_s_ending[] = {239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 }; private int I_x; private int I_p1; private java.lang.StringBuilder S_ch = new java.lang.StringBuilder(); private void copy_from(danishStemmer other) { I_x = other.I_x; I_p1 = other.I_p1; S_ch = other.S_ch; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_2; // (, line 29 I_p1 = limit; // test, line 33 v_1 = cursor; // (, line 33 // hop, line 33 { int c = cursor + 3; if (0 > c || c > limit) { return false; } cursor = c; } // setmark x, line 33 I_x = cursor; cursor = v_1; // goto, line 34 golab0: while(true) { v_2 = cursor; lab1: do { if (!(in_grouping(g_v, 97, 248))) { break lab1; } cursor = v_2; break golab0; } while (false); cursor = v_2; if (cursor >= limit) { return false; } cursor++; } // gopast, line 34 golab2: while(true) { lab3: do { if (!(out_grouping(g_v, 97, 248))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 34 I_p1 = cursor; // try, line 35 lab4: do { // (, line 35 if (!(I_p1 < I_x)) { break lab4; } I_p1 = I_x; } while (false); return true; } private boolean r_main_suffix() { int among_var; int v_1; int v_2; // (, line 40 // setlimit, line 41 v_1 = limit - cursor; // tomark, line 41 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 41 // [, line 41 ket = cursor; // substring, line 41 among_var = find_among_b(a_0, 32); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 41 bra = cursor; limit_backward = v_2; switch(among_var) { case 0: return false; case 1: // (, line 48 // delete, line 48 slice_del(); break; case 2: // (, line 50 if (!(in_grouping_b(g_s_ending, 97, 229))) { return false; } // delete, line 50 slice_del(); break; } return true; } private boolean r_consonant_pair() { int v_1; int v_2; int v_3; // (, line 54 // test, line 55 v_1 = limit - cursor; // (, line 55 // setlimit, line 56 v_2 = limit - cursor; // tomark, line 56 if (cursor < I_p1) { return false; } cursor = I_p1; v_3 = limit_backward; limit_backward = cursor; cursor = limit - v_2; // (, line 56 // [, line 56 ket = cursor; // substring, line 56 if (find_among_b(a_1, 4) == 0) { limit_backward = v_3; return false; } // ], line 56 bra = cursor; limit_backward = v_3; cursor = limit - v_1; // next, line 62 if (cursor <= limit_backward) { return false; } cursor--; // ], line 62 bra = cursor; // delete, line 62 slice_del(); return true; } private boolean r_other_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; // (, line 65 // do, line 66 v_1 = limit - cursor; lab0: do { // (, line 66 // [, line 66 ket = cursor; // literal, line 66 if (!(eq_s_b(2, "st"))) { break lab0; } // ], line 66 bra = cursor; // literal, line 66 if (!(eq_s_b(2, "ig"))) { break lab0; } // delete, line 66 slice_del(); } while (false); cursor = limit - v_1; // setlimit, line 67 v_2 = limit - cursor; // tomark, line 67 if (cursor < I_p1) { return false; } cursor = I_p1; v_3 = limit_backward; limit_backward = cursor; cursor = limit - v_2; // (, line 67 // [, line 67 ket = cursor; // substring, line 67 among_var = find_among_b(a_2, 5); if (among_var == 0) { limit_backward = v_3; return false; } // ], line 67 bra = cursor; limit_backward = v_3; switch(among_var) { case 0: return false; case 1: // (, line 70 // delete, line 70 slice_del(); // do, line 70 v_4 = limit - cursor; lab1: do { // call consonant_pair, line 70 if (!r_consonant_pair()) { break lab1; } } while (false); cursor = limit - v_4; break; case 2: // (, line 72 // <-, line 72 slice_from("l\u00F8s"); break; } return true; } private boolean r_undouble() { int v_1; int v_2; // (, line 75 // setlimit, line 76 v_1 = limit - cursor; // tomark, line 76 if (cursor < I_p1) { return false; } cursor = I_p1; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 76 // [, line 76 ket = cursor; if (!(out_grouping_b(g_v, 97, 248))) { limit_backward = v_2; return false; } // ], line 76 bra = cursor; // -> ch, line 76 S_ch = slice_to(S_ch); limit_backward = v_2; // name ch, line 77 if (!(eq_v_b(S_ch))) { return false; } // delete, line 78 slice_del(); return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 82 // do, line 84 v_1 = cursor; lab0: do { // call mark_regions, line 84 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 85 limit_backward = cursor; cursor = limit; // (, line 85 // do, line 86 v_2 = limit - cursor; lab1: do { // call main_suffix, line 86 if (!r_main_suffix()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 87 v_3 = limit - cursor; lab2: do { // call consonant_pair, line 87 if (!r_consonant_pair()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 88 v_4 = limit - cursor; lab3: do { // call other_suffix, line 88 if (!r_other_suffix()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 89 v_5 = limit - cursor; lab4: do { // call undouble, line 89 if (!r_undouble()) { break lab4; } } while (false); cursor = limit - v_5; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof danishStemmer; } public int hashCode() { return danishStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/frenchStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/frenchStemmer.ja0100664 0001750 0001750 00000210376 14135770370 034170 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class frenchStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static frenchStemmer methodObject = new frenchStemmer (); private final static Among a_0[] = { new Among ( "col", -1, -1, "", methodObject ), new Among ( "par", -1, -1, "", methodObject ), new Among ( "tap", -1, -1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "", -1, 4, "", methodObject ), new Among ( "I", 0, 1, "", methodObject ), new Among ( "U", 0, 2, "", methodObject ), new Among ( "Y", 0, 3, "", methodObject ) }; private final static Among a_2[] = { new Among ( "iqU", -1, 3, "", methodObject ), new Among ( "abl", -1, 3, "", methodObject ), new Among ( "I\u00E8r", -1, 4, "", methodObject ), new Among ( "i\u00E8r", -1, 4, "", methodObject ), new Among ( "eus", -1, 2, "", methodObject ), new Among ( "iv", -1, 1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ic", -1, 2, "", methodObject ), new Among ( "abil", -1, 1, "", methodObject ), new Among ( "iv", -1, 3, "", methodObject ) }; private final static Among a_4[] = { new Among ( "iqUe", -1, 1, "", methodObject ), new Among ( "atrice", -1, 2, "", methodObject ), new Among ( "ance", -1, 1, "", methodObject ), new Among ( "ence", -1, 5, "", methodObject ), new Among ( "logie", -1, 3, "", methodObject ), new Among ( "able", -1, 1, "", methodObject ), new Among ( "isme", -1, 1, "", methodObject ), new Among ( "euse", -1, 11, "", methodObject ), new Among ( "iste", -1, 1, "", methodObject ), new Among ( "ive", -1, 8, "", methodObject ), new Among ( "if", -1, 8, "", methodObject ), new Among ( "usion", -1, 4, "", methodObject ), new Among ( "ation", -1, 2, "", methodObject ), new Among ( "ution", -1, 4, "", methodObject ), new Among ( "ateur", -1, 2, "", methodObject ), new Among ( "iqUes", -1, 1, "", methodObject ), new Among ( "atrices", -1, 2, "", methodObject ), new Among ( "ances", -1, 1, "", methodObject ), new Among ( "ences", -1, 5, "", methodObject ), new Among ( "logies", -1, 3, "", methodObject ), new Among ( "ables", -1, 1, "", methodObject ), new Among ( "ismes", -1, 1, "", methodObject ), new Among ( "euses", -1, 11, "", methodObject ), new Among ( "istes", -1, 1, "", methodObject ), new Among ( "ives", -1, 8, "", methodObject ), new Among ( "ifs", -1, 8, "", methodObject ), new Among ( "usions", -1, 4, "", methodObject ), new Among ( "ations", -1, 2, "", methodObject ), new Among ( "utions", -1, 4, "", methodObject ), new Among ( "ateurs", -1, 2, "", methodObject ), new Among ( "ments", -1, 15, "", methodObject ), new Among ( "ements", 30, 6, "", methodObject ), new Among ( "issements", 31, 12, "", methodObject ), new Among ( "it\u00E9s", -1, 7, "", methodObject ), new Among ( "ment", -1, 15, "", methodObject ), new Among ( "ement", 34, 6, "", methodObject ), new Among ( "issement", 35, 12, "", methodObject ), new Among ( "amment", 34, 13, "", methodObject ), new Among ( "emment", 34, 14, "", methodObject ), new Among ( "aux", -1, 10, "", methodObject ), new Among ( "eaux", 39, 9, "", methodObject ), new Among ( "eux", -1, 1, "", methodObject ), new Among ( "it\u00E9", -1, 7, "", methodObject ) }; private final static Among a_5[] = { new Among ( "ira", -1, 1, "", methodObject ), new Among ( "ie", -1, 1, "", methodObject ), new Among ( "isse", -1, 1, "", methodObject ), new Among ( "issante", -1, 1, "", methodObject ), new Among ( "i", -1, 1, "", methodObject ), new Among ( "irai", 4, 1, "", methodObject ), new Among ( "ir", -1, 1, "", methodObject ), new Among ( "iras", -1, 1, "", methodObject ), new Among ( "ies", -1, 1, "", methodObject ), new Among ( "\u00EEmes", -1, 1, "", methodObject ), new Among ( "isses", -1, 1, "", methodObject ), new Among ( "issantes", -1, 1, "", methodObject ), new Among ( "\u00EEtes", -1, 1, "", methodObject ), new Among ( "is", -1, 1, "", methodObject ), new Among ( "irais", 13, 1, "", methodObject ), new Among ( "issais", 13, 1, "", methodObject ), new Among ( "irions", -1, 1, "", methodObject ), new Among ( "issions", -1, 1, "", methodObject ), new Among ( "irons", -1, 1, "", methodObject ), new Among ( "issons", -1, 1, "", methodObject ), new Among ( "issants", -1, 1, "", methodObject ), new Among ( "it", -1, 1, "", methodObject ), new Among ( "irait", 21, 1, "", methodObject ), new Among ( "issait", 21, 1, "", methodObject ), new Among ( "issant", -1, 1, "", methodObject ), new Among ( "iraIent", -1, 1, "", methodObject ), new Among ( "issaIent", -1, 1, "", methodObject ), new Among ( "irent", -1, 1, "", methodObject ), new Among ( "issent", -1, 1, "", methodObject ), new Among ( "iront", -1, 1, "", methodObject ), new Among ( "\u00EEt", -1, 1, "", methodObject ), new Among ( "iriez", -1, 1, "", methodObject ), new Among ( "issiez", -1, 1, "", methodObject ), new Among ( "irez", -1, 1, "", methodObject ), new Among ( "issez", -1, 1, "", methodObject ) }; private final static Among a_6[] = { new Among ( "a", -1, 3, "", methodObject ), new Among ( "era", 0, 2, "", methodObject ), new Among ( "asse", -1, 3, "", methodObject ), new Among ( "ante", -1, 3, "", methodObject ), new Among ( "\u00E9e", -1, 2, "", methodObject ), new Among ( "ai", -1, 3, "", methodObject ), new Among ( "erai", 5, 2, "", methodObject ), new Among ( "er", -1, 2, "", methodObject ), new Among ( "as", -1, 3, "", methodObject ), new Among ( "eras", 8, 2, "", methodObject ), new Among ( "\u00E2mes", -1, 3, "", methodObject ), new Among ( "asses", -1, 3, "", methodObject ), new Among ( "antes", -1, 3, "", methodObject ), new Among ( "\u00E2tes", -1, 3, "", methodObject ), new Among ( "\u00E9es", -1, 2, "", methodObject ), new Among ( "ais", -1, 3, "", methodObject ), new Among ( "erais", 15, 2, "", methodObject ), new Among ( "ions", -1, 1, "", methodObject ), new Among ( "erions", 17, 2, "", methodObject ), new Among ( "assions", 17, 3, "", methodObject ), new Among ( "erons", -1, 2, "", methodObject ), new Among ( "ants", -1, 3, "", methodObject ), new Among ( "\u00E9s", -1, 2, "", methodObject ), new Among ( "ait", -1, 3, "", methodObject ), new Among ( "erait", 23, 2, "", methodObject ), new Among ( "ant", -1, 3, "", methodObject ), new Among ( "aIent", -1, 3, "", methodObject ), new Among ( "eraIent", 26, 2, "", methodObject ), new Among ( "\u00E8rent", -1, 2, "", methodObject ), new Among ( "assent", -1, 3, "", methodObject ), new Among ( "eront", -1, 2, "", methodObject ), new Among ( "\u00E2t", -1, 3, "", methodObject ), new Among ( "ez", -1, 2, "", methodObject ), new Among ( "iez", 32, 2, "", methodObject ), new Among ( "eriez", 33, 2, "", methodObject ), new Among ( "assiez", 33, 3, "", methodObject ), new Among ( "erez", 32, 2, "", methodObject ), new Among ( "\u00E9", -1, 2, "", methodObject ) }; private final static Among a_7[] = { new Among ( "e", -1, 3, "", methodObject ), new Among ( "I\u00E8re", 0, 2, "", methodObject ), new Among ( "i\u00E8re", 0, 2, "", methodObject ), new Among ( "ion", -1, 1, "", methodObject ), new Among ( "Ier", -1, 2, "", methodObject ), new Among ( "ier", -1, 2, "", methodObject ), new Among ( "\u00EB", -1, 4, "", methodObject ) }; private final static Among a_8[] = { new Among ( "ell", -1, -1, "", methodObject ), new Among ( "eill", -1, -1, "", methodObject ), new Among ( "enn", -1, -1, "", methodObject ), new Among ( "onn", -1, -1, "", methodObject ), new Among ( "ett", -1, -1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 }; private static final char g_keep_with_s[] = {1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 }; private int I_p2; private int I_p1; private int I_pV; private void copy_from(frenchStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; I_pV = other.I_pV; super.copy_from(other); } private boolean r_prelude() { int v_1; int v_2; int v_3; int v_4; // repeat, line 38 replab0: while(true) { v_1 = cursor; lab1: do { // goto, line 38 golab2: while(true) { v_2 = cursor; lab3: do { // (, line 38 // or, line 44 lab4: do { v_3 = cursor; lab5: do { // (, line 40 if (!(in_grouping(g_v, 97, 251))) { break lab5; } // [, line 40 bra = cursor; // or, line 40 lab6: do { v_4 = cursor; lab7: do { // (, line 40 // literal, line 40 if (!(eq_s(1, "u"))) { break lab7; } // ], line 40 ket = cursor; if (!(in_grouping(g_v, 97, 251))) { break lab7; } // <-, line 40 slice_from("U"); break lab6; } while (false); cursor = v_4; lab8: do { // (, line 41 // literal, line 41 if (!(eq_s(1, "i"))) { break lab8; } // ], line 41 ket = cursor; if (!(in_grouping(g_v, 97, 251))) { break lab8; } // <-, line 41 slice_from("I"); break lab6; } while (false); cursor = v_4; // (, line 42 // literal, line 42 if (!(eq_s(1, "y"))) { break lab5; } // ], line 42 ket = cursor; // <-, line 42 slice_from("Y"); } while (false); break lab4; } while (false); cursor = v_3; lab9: do { // (, line 45 // [, line 45 bra = cursor; // literal, line 45 if (!(eq_s(1, "y"))) { break lab9; } // ], line 45 ket = cursor; if (!(in_grouping(g_v, 97, 251))) { break lab9; } // <-, line 45 slice_from("Y"); break lab4; } while (false); cursor = v_3; // (, line 47 // literal, line 47 if (!(eq_s(1, "q"))) { break lab3; } // [, line 47 bra = cursor; // literal, line 47 if (!(eq_s(1, "u"))) { break lab3; } // ], line 47 ket = cursor; // <-, line 47 slice_from("U"); } while (false); cursor = v_2; break golab2; } while (false); cursor = v_2; if (cursor >= limit) { break lab1; } cursor++; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_mark_regions() { int v_1; int v_2; int v_4; // (, line 50 I_pV = limit; I_p1 = limit; I_p2 = limit; // do, line 56 v_1 = cursor; lab0: do { // (, line 56 // or, line 58 lab1: do { v_2 = cursor; lab2: do { // (, line 57 if (!(in_grouping(g_v, 97, 251))) { break lab2; } if (!(in_grouping(g_v, 97, 251))) { break lab2; } // next, line 57 if (cursor >= limit) { break lab2; } cursor++; break lab1; } while (false); cursor = v_2; lab3: do { // among, line 59 if (find_among(a_0, 3) == 0) { break lab3; } break lab1; } while (false); cursor = v_2; // (, line 66 // next, line 66 if (cursor >= limit) { break lab0; } cursor++; // gopast, line 66 golab4: while(true) { lab5: do { if (!(in_grouping(g_v, 97, 251))) { break lab5; } break golab4; } while (false); if (cursor >= limit) { break lab0; } cursor++; } } while (false); // setmark pV, line 67 I_pV = cursor; } while (false); cursor = v_1; // do, line 69 v_4 = cursor; lab6: do { // (, line 69 // gopast, line 70 golab7: while(true) { lab8: do { if (!(in_grouping(g_v, 97, 251))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // gopast, line 70 golab9: while(true) { lab10: do { if (!(out_grouping(g_v, 97, 251))) { break lab10; } break golab9; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // setmark p1, line 70 I_p1 = cursor; // gopast, line 71 golab11: while(true) { lab12: do { if (!(in_grouping(g_v, 97, 251))) { break lab12; } break golab11; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // gopast, line 71 golab13: while(true) { lab14: do { if (!(out_grouping(g_v, 97, 251))) { break lab14; } break golab13; } while (false); if (cursor >= limit) { break lab6; } cursor++; } // setmark p2, line 71 I_p2 = cursor; } while (false); cursor = v_4; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 75 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 75 // [, line 77 bra = cursor; // substring, line 77 among_var = find_among(a_1, 4); if (among_var == 0) { break lab1; } // ], line 77 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 78 // <-, line 78 slice_from("i"); break; case 2: // (, line 79 // <-, line 79 slice_from("u"); break; case 3: // (, line 80 // <-, line 80 slice_from("y"); break; case 4: // (, line 81 // next, line 81 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_RV() { if (!(I_pV <= cursor)) { return false; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; // (, line 91 // [, line 92 ket = cursor; // substring, line 92 among_var = find_among_b(a_4, 43); if (among_var == 0) { return false; } // ], line 92 bra = cursor; switch(among_var) { case 0: return false; case 1: // (, line 96 // call R2, line 96 if (!r_R2()) { return false; } // delete, line 96 slice_del(); break; case 2: // (, line 99 // call R2, line 99 if (!r_R2()) { return false; } // delete, line 99 slice_del(); // try, line 100 v_1 = limit - cursor; lab0: do { // (, line 100 // [, line 100 ket = cursor; // literal, line 100 if (!(eq_s_b(2, "ic"))) { cursor = limit - v_1; break lab0; } // ], line 100 bra = cursor; // or, line 100 lab1: do { v_2 = limit - cursor; lab2: do { // (, line 100 // call R2, line 100 if (!r_R2()) { break lab2; } // delete, line 100 slice_del(); break lab1; } while (false); cursor = limit - v_2; // <-, line 100 slice_from("iqU"); } while (false); } while (false); break; case 3: // (, line 104 // call R2, line 104 if (!r_R2()) { return false; } // <-, line 104 slice_from("log"); break; case 4: // (, line 107 // call R2, line 107 if (!r_R2()) { return false; } // <-, line 107 slice_from("u"); break; case 5: // (, line 110 // call R2, line 110 if (!r_R2()) { return false; } // <-, line 110 slice_from("ent"); break; case 6: // (, line 113 // call RV, line 114 if (!r_RV()) { return false; } // delete, line 114 slice_del(); // try, line 115 v_3 = limit - cursor; lab3: do { // (, line 115 // [, line 116 ket = cursor; // substring, line 116 among_var = find_among_b(a_2, 6); if (among_var == 0) { cursor = limit - v_3; break lab3; } // ], line 116 bra = cursor; switch(among_var) { case 0: cursor = limit - v_3; break lab3; case 1: // (, line 117 // call R2, line 117 if (!r_R2()) { cursor = limit - v_3; break lab3; } // delete, line 117 slice_del(); // [, line 117 ket = cursor; // literal, line 117 if (!(eq_s_b(2, "at"))) { cursor = limit - v_3; break lab3; } // ], line 117 bra = cursor; // call R2, line 117 if (!r_R2()) { cursor = limit - v_3; break lab3; } // delete, line 117 slice_del(); break; case 2: // (, line 118 // or, line 118 lab4: do { v_4 = limit - cursor; lab5: do { // (, line 118 // call R2, line 118 if (!r_R2()) { break lab5; } // delete, line 118 slice_del(); break lab4; } while (false); cursor = limit - v_4; // (, line 118 // call R1, line 118 if (!r_R1()) { cursor = limit - v_3; break lab3; } // <-, line 118 slice_from("eux"); } while (false); break; case 3: // (, line 120 // call R2, line 120 if (!r_R2()) { cursor = limit - v_3; break lab3; } // delete, line 120 slice_del(); break; case 4: // (, line 122 // call RV, line 122 if (!r_RV()) { cursor = limit - v_3; break lab3; } // <-, line 122 slice_from("i"); break; } } while (false); break; case 7: // (, line 128 // call R2, line 129 if (!r_R2()) { return false; } // delete, line 129 slice_del(); // try, line 130 v_5 = limit - cursor; lab6: do { // (, line 130 // [, line 131 ket = cursor; // substring, line 131 among_var = find_among_b(a_3, 3); if (among_var == 0) { cursor = limit - v_5; break lab6; } // ], line 131 bra = cursor; switch(among_var) { case 0: cursor = limit - v_5; break lab6; case 1: // (, line 132 // or, line 132 lab7: do { v_6 = limit - cursor; lab8: do { // (, line 132 // call R2, line 132 if (!r_R2()) { break lab8; } // delete, line 132 slice_del(); break lab7; } while (false); cursor = limit - v_6; // <-, line 132 slice_from("abl"); } while (false); break; case 2: // (, line 133 // or, line 133 lab9: do { v_7 = limit - cursor; lab10: do { // (, line 133 // call R2, line 133 if (!r_R2()) { break lab10; } // delete, line 133 slice_del(); break lab9; } while (false); cursor = limit - v_7; // <-, line 133 slice_from("iqU"); } while (false); break; case 3: // (, line 134 // call R2, line 134 if (!r_R2()) { cursor = limit - v_5; break lab6; } // delete, line 134 slice_del(); break; } } while (false); break; case 8: // (, line 140 // call R2, line 141 if (!r_R2()) { return false; } // delete, line 141 slice_del(); // try, line 142 v_8 = limit - cursor; lab11: do { // (, line 142 // [, line 142 ket = cursor; // literal, line 142 if (!(eq_s_b(2, "at"))) { cursor = limit - v_8; break lab11; } // ], line 142 bra = cursor; // call R2, line 142 if (!r_R2()) { cursor = limit - v_8; break lab11; } // delete, line 142 slice_del(); // [, line 142 ket = cursor; // literal, line 142 if (!(eq_s_b(2, "ic"))) { cursor = limit - v_8; break lab11; } // ], line 142 bra = cursor; // or, line 142 lab12: do { v_9 = limit - cursor; lab13: do { // (, line 142 // call R2, line 142 if (!r_R2()) { break lab13; } // delete, line 142 slice_del(); break lab12; } while (false); cursor = limit - v_9; // <-, line 142 slice_from("iqU"); } while (false); } while (false); break; case 9: // (, line 144 // <-, line 144 slice_from("eau"); break; case 10: // (, line 145 // call R1, line 145 if (!r_R1()) { return false; } // <-, line 145 slice_from("al"); break; case 11: // (, line 147 // or, line 147 lab14: do { v_10 = limit - cursor; lab15: do { // (, line 147 // call R2, line 147 if (!r_R2()) { break lab15; } // delete, line 147 slice_del(); break lab14; } while (false); cursor = limit - v_10; // (, line 147 // call R1, line 147 if (!r_R1()) { return false; } // <-, line 147 slice_from("eux"); } while (false); break; case 12: // (, line 150 // call R1, line 150 if (!r_R1()) { return false; } if (!(out_grouping_b(g_v, 97, 251))) { return false; } // delete, line 150 slice_del(); break; case 13: // (, line 155 // call RV, line 155 if (!r_RV()) { return false; } // fail, line 155 // (, line 155 // <-, line 155 slice_from("ant"); return false; case 14: // (, line 156 // call RV, line 156 if (!r_RV()) { return false; } // fail, line 156 // (, line 156 // <-, line 156 slice_from("ent"); return false; case 15: // (, line 158 // test, line 158 v_11 = limit - cursor; // (, line 158 if (!(in_grouping_b(g_v, 97, 251))) { return false; } // call RV, line 158 if (!r_RV()) { return false; } cursor = limit - v_11; // fail, line 158 // (, line 158 // delete, line 158 slice_del(); return false; } return true; } private boolean r_i_verb_suffix() { int among_var; int v_1; int v_2; // setlimit, line 163 v_1 = limit - cursor; // tomark, line 163 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 163 // [, line 164 ket = cursor; // substring, line 164 among_var = find_among_b(a_5, 35); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 164 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 170 if (!(out_grouping_b(g_v, 97, 251))) { limit_backward = v_2; return false; } // delete, line 170 slice_del(); break; } limit_backward = v_2; return true; } private boolean r_verb_suffix() { int among_var; int v_1; int v_2; int v_3; // setlimit, line 174 v_1 = limit - cursor; // tomark, line 174 if (cursor < I_pV) { return false; } cursor = I_pV; v_2 = limit_backward; limit_backward = cursor; cursor = limit - v_1; // (, line 174 // [, line 175 ket = cursor; // substring, line 175 among_var = find_among_b(a_6, 38); if (among_var == 0) { limit_backward = v_2; return false; } // ], line 175 bra = cursor; switch(among_var) { case 0: limit_backward = v_2; return false; case 1: // (, line 177 // call R2, line 177 if (!r_R2()) { limit_backward = v_2; return false; } // delete, line 177 slice_del(); break; case 2: // (, line 185 // delete, line 185 slice_del(); break; case 3: // (, line 190 // delete, line 190 slice_del(); // try, line 191 v_3 = limit - cursor; lab0: do { // (, line 191 // [, line 191 ket = cursor; // literal, line 191 if (!(eq_s_b(1, "e"))) { cursor = limit - v_3; break lab0; } // ], line 191 bra = cursor; // delete, line 191 slice_del(); } while (false); break; } limit_backward = v_2; return true; } private boolean r_residual_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; // (, line 198 // try, line 199 v_1 = limit - cursor; lab0: do { // (, line 199 // [, line 199 ket = cursor; // literal, line 199 if (!(eq_s_b(1, "s"))) { cursor = limit - v_1; break lab0; } // ], line 199 bra = cursor; // test, line 199 v_2 = limit - cursor; if (!(out_grouping_b(g_keep_with_s, 97, 232))) { cursor = limit - v_1; break lab0; } cursor = limit - v_2; // delete, line 199 slice_del(); } while (false); // setlimit, line 200 v_3 = limit - cursor; // tomark, line 200 if (cursor < I_pV) { return false; } cursor = I_pV; v_4 = limit_backward; limit_backward = cursor; cursor = limit - v_3; // (, line 200 // [, line 201 ket = cursor; // substring, line 201 among_var = find_among_b(a_7, 7); if (among_var == 0) { limit_backward = v_4; return false; } // ], line 201 bra = cursor; switch(among_var) { case 0: limit_backward = v_4; return false; case 1: // (, line 202 // call R2, line 202 if (!r_R2()) { limit_backward = v_4; return false; } // or, line 202 lab1: do { v_5 = limit - cursor; lab2: do { // literal, line 202 if (!(eq_s_b(1, "s"))) { break lab2; } break lab1; } while (false); cursor = limit - v_5; // literal, line 202 if (!(eq_s_b(1, "t"))) { limit_backward = v_4; return false; } } while (false); // delete, line 202 slice_del(); break; case 2: // (, line 204 // <-, line 204 slice_from("i"); break; case 3: // (, line 205 // delete, line 205 slice_del(); break; case 4: // (, line 206 // literal, line 206 if (!(eq_s_b(2, "gu"))) { limit_backward = v_4; return false; } // delete, line 206 slice_del(); break; } limit_backward = v_4; return true; } private boolean r_un_double() { int v_1; // (, line 211 // test, line 212 v_1 = limit - cursor; // among, line 212 if (find_among_b(a_8, 5) == 0) { return false; } cursor = limit - v_1; // [, line 212 ket = cursor; // next, line 212 if (cursor <= limit_backward) { return false; } cursor--; // ], line 212 bra = cursor; // delete, line 212 slice_del(); return true; } private boolean r_un_accent() { int v_3; // (, line 215 // atleast, line 216 { int v_1 = 1; // atleast, line 216 replab0: while(true) { lab1: do { if (!(out_grouping_b(g_v, 97, 251))) { break lab1; } v_1--; continue replab0; } while (false); break replab0; } if (v_1 > 0) { return false; } } // [, line 217 ket = cursor; // or, line 217 lab2: do { v_3 = limit - cursor; lab3: do { // literal, line 217 if (!(eq_s_b(1, "\u00E9"))) { break lab3; } break lab2; } while (false); cursor = limit - v_3; // literal, line 217 if (!(eq_s_b(1, "\u00E8"))) { return false; } } while (false); // ], line 217 bra = cursor; // <-, line 217 slice_from("e"); return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; int v_11; // (, line 221 // do, line 223 v_1 = cursor; lab0: do { // call prelude, line 223 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 224 v_2 = cursor; lab1: do { // call mark_regions, line 224 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 225 limit_backward = cursor; cursor = limit; // (, line 225 // do, line 227 v_3 = limit - cursor; lab2: do { // (, line 227 // or, line 237 lab3: do { v_4 = limit - cursor; lab4: do { // (, line 228 // and, line 233 v_5 = limit - cursor; // (, line 229 // or, line 229 lab5: do { v_6 = limit - cursor; lab6: do { // call standard_suffix, line 229 if (!r_standard_suffix()) { break lab6; } break lab5; } while (false); cursor = limit - v_6; lab7: do { // call i_verb_suffix, line 230 if (!r_i_verb_suffix()) { break lab7; } break lab5; } while (false); cursor = limit - v_6; // call verb_suffix, line 231 if (!r_verb_suffix()) { break lab4; } } while (false); cursor = limit - v_5; // try, line 234 v_7 = limit - cursor; lab8: do { // (, line 234 // [, line 234 ket = cursor; // or, line 234 lab9: do { v_8 = limit - cursor; lab10: do { // (, line 234 // literal, line 234 if (!(eq_s_b(1, "Y"))) { break lab10; } // ], line 234 bra = cursor; // <-, line 234 slice_from("i"); break lab9; } while (false); cursor = limit - v_8; // (, line 235 // literal, line 235 if (!(eq_s_b(1, "\u00E7"))) { cursor = limit - v_7; break lab8; } // ], line 235 bra = cursor; // <-, line 235 slice_from("c"); } while (false); } while (false); break lab3; } while (false); cursor = limit - v_4; // call residual_suffix, line 238 if (!r_residual_suffix()) { break lab2; } } while (false); } while (false); cursor = limit - v_3; // do, line 243 v_9 = limit - cursor; lab11: do { // call un_double, line 243 if (!r_un_double()) { break lab11; } } while (false); cursor = limit - v_9; // do, line 244 v_10 = limit - cursor; lab12: do { // call un_accent, line 244 if (!r_un_accent()) { break lab12; } } while (false); cursor = limit - v_10; cursor = limit_backward; // do, line 246 v_11 = cursor; lab13: do { // call postlude, line 246 if (!r_postlude()) { break lab13; } } while (false); cursor = v_11; return true; } public boolean equals( Object o ) { return o instanceof frenchStemmer; } public int hashCode() { return frenchStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000172 14135770370 032700 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/AbstractSnowballStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/AbstractSnowball0100664 0001750 0001750 00000003304 14135770370 034231 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package opennlp.tools.stemmer.snowball; abstract class AbstractSnowballStemmer extends SnowballProgram { public abstract boolean stem(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000160 14135770370 032675 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/arabicStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/arabicStemmer.ja0100664 0001750 0001750 00000215626 14135770370 034147 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ public class arabicStemmer extends AbstractSnowballStemmer { private final static arabicStemmer methodObject = new arabicStemmer(); private final static Among a_0[] = { new Among("!", -1, 3, "", methodObject), new Among("\"", -1, 3, "", methodObject), new Among("%", -1, 3, "", methodObject), new Among("*", -1, 3, "", methodObject), new Among(",", -1, 3, "", methodObject), new Among(".", -1, 3, "", methodObject), new Among("/", -1, 3, "", methodObject), new Among(":", -1, 3, "", methodObject), new Among(";", -1, 3, "", methodObject), new Among("?", -1, 3, "", methodObject), new Among("\\", -1, 3, "", methodObject), new Among("\u060C", -1, 4, "", methodObject), new Among("\u061B", -1, 4, "", methodObject), new Among("\u061F", -1, 4, "", methodObject), new Among("\u0640", -1, 2, "", methodObject), new Among("\u064B", -1, 1, "", methodObject), new Among("\u064C", -1, 1, "", methodObject), new Among("\u064D", -1, 1, "", methodObject), new Among("\u064E", -1, 1, "", methodObject), new Among("\u064F", -1, 1, "", methodObject), new Among("\u0650", -1, 1, "", methodObject), new Among("\u0651", -1, 1, "", methodObject), new Among("\u0652", -1, 1, "", methodObject), new Among("\u0660", -1, 5, "", methodObject), new Among("\u0661", -1, 6, "", methodObject), new Among("\u0662", -1, 7, "", methodObject), new Among("\u0663", -1, 8, "", methodObject), new Among("\u0664", -1, 9, "", methodObject), new Among("\u0665", -1, 10, "", methodObject), new Among("\u0666", -1, 11, "", methodObject), new Among("\u0667", -1, 12, "", methodObject), new Among("\u0668", -1, 13, "", methodObject), new Among("\u0669", -1, 14, "", methodObject), new Among("\u066A", -1, 15, "", methodObject), new Among("\u066B", -1, 15, "", methodObject), new Among("\u066C", -1, 15, "", methodObject), new Among("\uFE80", -1, 16, "", methodObject), new Among("\uFE81", -1, 20, "", methodObject), new Among("\uFE82", -1, 20, "", methodObject), new Among("\uFE83", -1, 17, "", methodObject), new Among("\uFE84", -1, 17, "", methodObject), new Among("\uFE85", -1, 21, "", methodObject), new Among("\uFE86", -1, 21, "", methodObject), new Among("\uFE87", -1, 18, "", methodObject), new Among("\uFE88", -1, 18, "", methodObject), new Among("\uFE89", -1, 19, "", methodObject), new Among("\uFE8A", -1, 19, "", methodObject), new Among("\uFE8B", -1, 19, "", methodObject), new Among("\uFE8C", -1, 19, "", methodObject), new Among("\uFE8D", -1, 22, "", methodObject), new Among("\uFE8E", -1, 22, "", methodObject), new Among("\uFE8F", -1, 23, "", methodObject), new Among("\uFE90", -1, 23, "", methodObject), new Among("\uFE91", -1, 23, "", methodObject), new Among("\uFE92", -1, 23, "", methodObject), new Among("\uFE93", -1, 24, "", methodObject), new Among("\uFE94", -1, 24, "", methodObject), new Among("\uFE95", -1, 25, "", methodObject), new Among("\uFE96", -1, 25, "", methodObject), new Among("\uFE97", -1, 25, "", methodObject), new Among("\uFE98", -1, 25, "", methodObject), new Among("\uFE99", -1, 26, "", methodObject), new Among("\uFE9A", -1, 26, "", methodObject), new Among("\uFE9B", -1, 26, "", methodObject), new Among("\uFE9C", -1, 26, "", methodObject), new Among("\uFE9D", -1, 27, "", methodObject), new Among("\uFE9E", -1, 27, "", methodObject), new Among("\uFE9F", -1, 27, "", methodObject), new Among("\uFEA0", -1, 27, "", methodObject), new Among("\uFEA1", -1, 28, "", methodObject), new Among("\uFEA2", -1, 28, "", methodObject), new Among("\uFEA3", -1, 28, "", methodObject), new Among("\uFEA4", -1, 28, "", methodObject), new Among("\uFEA5", -1, 29, "", methodObject), new Among("\uFEA6", -1, 29, "", methodObject), new Among("\uFEA7", -1, 29, "", methodObject), new Among("\uFEA8", -1, 29, "", methodObject), new Among("\uFEA9", -1, 30, "", methodObject), new Among("\uFEAA", -1, 30, "", methodObject), new Among("\uFEAB", -1, 31, "", methodObject), new Among("\uFEAC", -1, 31, "", methodObject), new Among("\uFEAD", -1, 32, "", methodObject), new Among("\uFEAE", -1, 32, "", methodObject), new Among("\uFEAF", -1, 33, "", methodObject), new Among("\uFEB0", -1, 33, "", methodObject), new Among("\uFEB1", -1, 34, "", methodObject), new Among("\uFEB2", -1, 34, "", methodObject), new Among("\uFEB3", -1, 34, "", methodObject), new Among("\uFEB4", -1, 34, "", methodObject), new Among("\uFEB5", -1, 35, "", methodObject), new Among("\uFEB6", -1, 35, "", methodObject), new Among("\uFEB7", -1, 35, "", methodObject), new Among("\uFEB8", -1, 35, "", methodObject), new Among("\uFEB9", -1, 36, "", methodObject), new Among("\uFEBA", -1, 36, "", methodObject), new Among("\uFEBB", -1, 36, "", methodObject), new Among("\uFEBC", -1, 36, "", methodObject), new Among("\uFEBD", -1, 37, "", methodObject), new Among("\uFEBE", -1, 37, "", methodObject), new Among("\uFEBF", -1, 37, "", methodObject), new Among("\uFEC0", -1, 37, "", methodObject), new Among("\uFEC1", -1, 38, "", methodObject), new Among("\uFEC2", -1, 38, "", methodObject), new Among("\uFEC3", -1, 38, "", methodObject), new Among("\uFEC4", -1, 38, "", methodObject), new Among("\uFEC5", -1, 39, "", methodObject), new Among("\uFEC6", -1, 39, "", methodObject), new Among("\uFEC7", -1, 39, "", methodObject), new Among("\uFEC8", -1, 39, "", methodObject), new Among("\uFEC9", -1, 40, "", methodObject), new Among("\uFECA", -1, 40, "", methodObject), new Among("\uFECB", -1, 40, "", methodObject), new Among("\uFECC", -1, 40, "", methodObject), new Among("\uFECD", -1, 41, "", methodObject), new Among("\uFECE", -1, 41, "", methodObject), new Among("\uFECF", -1, 41, "", methodObject), new Among("\uFED0", -1, 41, "", methodObject), new Among("\uFED1", -1, 42, "", methodObject), new Among("\uFED2", -1, 42, "", methodObject), new Among("\uFED3", -1, 42, "", methodObject), new Among("\uFED4", -1, 42, "", methodObject), new Among("\uFED5", -1, 43, "", methodObject), new Among("\uFED6", -1, 43, "", methodObject), new Among("\uFED7", -1, 43, "", methodObject), new Among("\uFED8", -1, 43, "", methodObject), new Among("\uFED9", -1, 44, "", methodObject), new Among("\uFEDA", -1, 44, "", methodObject), new Among("\uFEDB", -1, 44, "", methodObject), new Among("\uFEDC", -1, 44, "", methodObject), new Among("\uFEDD", -1, 45, "", methodObject), new Among("\uFEDE", -1, 45, "", methodObject), new Among("\uFEDF", -1, 45, "", methodObject), new Among("\uFEE0", -1, 45, "", methodObject), new Among("\uFEE1", -1, 46, "", methodObject), new Among("\uFEE2", -1, 46, "", methodObject), new Among("\uFEE3", -1, 46, "", methodObject), new Among("\uFEE4", -1, 46, "", methodObject), new Among("\uFEE5", -1, 47, "", methodObject), new Among("\uFEE6", -1, 47, "", methodObject), new Among("\uFEE7", -1, 47, "", methodObject), new Among("\uFEE8", -1, 47, "", methodObject), new Among("\uFEE9", -1, 48, "", methodObject), new Among("\uFEEA", -1, 48, "", methodObject), new Among("\uFEEB", -1, 48, "", methodObject), new Among("\uFEEC", -1, 48, "", methodObject), new Among("\uFEED", -1, 49, "", methodObject), new Among("\uFEEE", -1, 49, "", methodObject), new Among("\uFEEF", -1, 50, "", methodObject), new Among("\uFEF0", -1, 50, "", methodObject), new Among("\uFEF1", -1, 51, "", methodObject), new Among("\uFEF2", -1, 51, "", methodObject), new Among("\uFEF3", -1, 51, "", methodObject), new Among("\uFEF4", -1, 51, "", methodObject), new Among("\uFEF5", -1, 55, "", methodObject), new Among("\uFEF6", -1, 55, "", methodObject), new Among("\uFEF7", -1, 53, "", methodObject), new Among("\uFEF8", -1, 53, "", methodObject), new Among("\uFEF9", -1, 54, "", methodObject), new Among("\uFEFA", -1, 54, "", methodObject), new Among("\uFEFB", -1, 52, "", methodObject), new Among("\uFEFC", -1, 52, "", methodObject) }; private final static Among a_1[] = { new Among("\u0622", -1, 1, "", methodObject), new Among("\u0623", -1, 1, "", methodObject), new Among("\u0624", -1, 2, "", methodObject), new Among("\u0625", -1, 1, "", methodObject), new Among("\u0626", -1, 3, "", methodObject) }; private final static Among a_2[] = { new Among("\u0622", -1, 1, "", methodObject), new Among("\u0623", -1, 1, "", methodObject), new Among("\u0624", -1, 2, "", methodObject), new Among("\u0625", -1, 1, "", methodObject), new Among("\u0626", -1, 3, "", methodObject) }; private final static Among a_3[] = { new Among("\u0627\u0644", -1, 2, "", methodObject), new Among("\u0628\u0627\u0644", -1, 1, "", methodObject), new Among("\u0643\u0627\u0644", -1, 1, "", methodObject), new Among("\u0644\u0644", -1, 2, "", methodObject) }; private final static Among a_4[] = { new Among("\u0629", -1, 1, "", methodObject) }; private final static Among a_5[] = { new Among("\u0623\u0622", -1, 2, "", methodObject), new Among("\u0623\u0623", -1, 1, "", methodObject), new Among("\u0623\u0624", -1, 3, "", methodObject), new Among("\u0623\u0625", -1, 5, "", methodObject), new Among("\u0623\u0627", -1, 4, "", methodObject) }; private final static Among a_6[] = { new Among("\u0641\u0627\u0644", -1, 1, "", methodObject), new Among("\u0648\u0627\u0644", -1, 2, "", methodObject) }; private final static Among a_7[] = { new Among("\u0641", -1, 1, "", methodObject), new Among("\u0648", -1, 2, "", methodObject) }; private final static Among a_8[] = { new Among("\u0627\u0644", -1, 2, "", methodObject), new Among("\u0628\u0627\u0644", -1, 1, "", methodObject), new Among("\u0643\u0627\u0644", -1, 1, "", methodObject), new Among("\u0644\u0644", -1, 2, "", methodObject) }; private final static Among a_9[] = { new Among("\u0628", -1, 1, "", methodObject), new Among("\u0628\u0628", 0, 4, "", methodObject), new Among("\u0643", -1, 2, "", methodObject), new Among("\u0643\u0643", 2, 5, "", methodObject), new Among("\u0644", -1, 3, "", methodObject) }; private final static Among a_10[] = { new Among("\u0633\u0623", -1, 4, "", methodObject), new Among("\u0633\u062A", -1, 2, "", methodObject), new Among("\u0633\u0646", -1, 3, "", methodObject), new Among("\u0633\u064A", -1, 1, "", methodObject) }; private final static Among a_11[] = { new Among("\u062A\u0633\u062A", -1, 1, "", methodObject), new Among("\u0646\u0633\u062A", -1, 1, "", methodObject), new Among("\u064A\u0633\u062A", -1, 1, "", methodObject) }; private final static Among a_12[] = { new Among("\u0643\u0645\u0627", -1, 3, "", methodObject), new Among("\u0647\u0645\u0627", -1, 3, "", methodObject), new Among("\u0646\u0627", -1, 2, "", methodObject), new Among("\u0647\u0627", -1, 2, "", methodObject), new Among("\u0643", -1, 1, "", methodObject), new Among("\u0643\u0645", -1, 2, "", methodObject), new Among("\u0647\u0645", -1, 2, "", methodObject), new Among("\u0647\u0646", -1, 2, "", methodObject), new Among("\u0647", -1, 1, "", methodObject), new Among("\u064A", -1, 1, "", methodObject) }; private final static Among a_13[] = { new Among("\u0646", -1, 1, "", methodObject) }; private final static Among a_14[] = { new Among("\u0627", -1, 1, "", methodObject), new Among("\u0648", -1, 1, "", methodObject), new Among("\u064A", -1, 1, "", methodObject) }; private final static Among a_15[] = { new Among("\u0627\u062A", -1, 1, "", methodObject) }; private final static Among a_16[] = { new Among("\u062A", -1, 1, "", methodObject) }; private final static Among a_17[] = { new Among("\u0629", -1, 1, "", methodObject) }; private final static Among a_18[] = { new Among("\u064A", -1, 1, "", methodObject) }; private final static Among a_19[] = { new Among("\u0643\u0645\u0627", -1, 3, "", methodObject), new Among("\u0647\u0645\u0627", -1, 3, "", methodObject), new Among("\u0646\u0627", -1, 2, "", methodObject), new Among("\u0647\u0627", -1, 2, "", methodObject), new Among("\u0643", -1, 1, "", methodObject), new Among("\u0643\u0645", -1, 2, "", methodObject), new Among("\u0647\u0645", -1, 2, "", methodObject), new Among("\u0643\u0646", -1, 2, "", methodObject), new Among("\u0647\u0646", -1, 2, "", methodObject), new Among("\u0647", -1, 1, "", methodObject), new Among("\u0643\u0645\u0648", -1, 3, "", methodObject), new Among("\u0646\u064A", -1, 2, "", methodObject) }; private final static Among a_20[] = { new Among("\u0627", -1, 2, "", methodObject), new Among("\u062A\u0627", 0, 3, "", methodObject), new Among("\u062A\u0645\u0627", 0, 5, "", methodObject), new Among("\u0646\u0627", 0, 3, "", methodObject), new Among("\u062A", -1, 1, "", methodObject), new Among("\u0646", -1, 2, "", methodObject), new Among("\u0627\u0646", 5, 4, "", methodObject), new Among("\u062A\u0646", 5, 3, "", methodObject), new Among("\u0648\u0646", 5, 4, "", methodObject), new Among("\u064A\u0646", 5, 4, "", methodObject), new Among("\u064A", -1, 2, "", methodObject) }; private final static Among a_21[] = { new Among("\u0648\u0627", -1, 1, "", methodObject), new Among("\u062A\u0645", -1, 1, "", methodObject) }; private final static Among a_22[] = { new Among("\u0648", -1, 1, "", methodObject), new Among("\u062A\u0645\u0648", 0, 2, "", methodObject) }; private final static Among a_23[] = { new Among("\u0649", -1, 1, "", methodObject) }; private boolean B_is_defined; private boolean B_is_verb; private boolean B_is_noun; private int I_word_len; private boolean r_Normalize_pre() { int among_var; int v_1; int v_2; // (, line 260 // loop, line 261 for (v_1 = (current.length()); v_1 > 0; v_1--) { // (, line 261 // or, line 330 lab0: do { v_2 = cursor; lab1: do { // (, line 262 // [, line 263 bra = cursor; // substring, line 263 among_var = find_among(a_0); if (among_var == 0) { break lab1; } // ], line 263 ket = cursor; switch (among_var) { case 0: break lab1; case 1: // (, line 264 // delete, line 264 slice_del(); break; case 2: // (, line 265 // delete, line 265 slice_del(); break; case 3: // (, line 268 // delete, line 268 slice_del(); break; case 4: // (, line 269 // delete, line 269 slice_del(); break; case 5: // (, line 272 // <-, line 272 slice_from("0"); break; case 6: // (, line 273 // <-, line 273 slice_from("1"); break; case 7: // (, line 274 // <-, line 274 slice_from("2"); break; case 8: // (, line 275 // <-, line 275 slice_from("3"); break; case 9: // (, line 276 // <-, line 276 slice_from("4"); break; case 10: // (, line 277 // <-, line 277 slice_from("5"); break; case 11: // (, line 278 // <-, line 278 slice_from("6"); break; case 12: // (, line 279 // <-, line 279 slice_from("7"); break; case 13: // (, line 280 // <-, line 280 slice_from("8"); break; case 14: // (, line 281 // <-, line 281 slice_from("9"); break; case 15: // (, line 282 // delete, line 282 slice_del(); break; case 16: // (, line 285 // <-, line 285 slice_from("\u0621"); break; case 17: // (, line 286 // <-, line 286 slice_from("\u0623"); break; case 18: // (, line 287 // <-, line 287 slice_from("\u0625"); break; case 19: // (, line 288 // <-, line 288 slice_from("\u0626"); break; case 20: // (, line 289 // <-, line 289 slice_from("\u0622"); break; case 21: // (, line 290 // <-, line 290 slice_from("\u0624"); break; case 22: // (, line 291 // <-, line 291 slice_from("\u0627"); break; case 23: // (, line 292 // <-, line 292 slice_from("\u0628"); break; case 24: // (, line 293 // <-, line 293 slice_from("\u0629"); break; case 25: // (, line 294 // <-, line 294 slice_from("\u062A"); break; case 26: // (, line 295 // <-, line 295 slice_from("\u062B"); break; case 27: // (, line 296 // <-, line 296 slice_from("\u062C"); break; case 28: // (, line 297 // <-, line 297 slice_from("\u062D"); break; case 29: // (, line 298 // <-, line 298 slice_from("\u062E"); break; case 30: // (, line 299 // <-, line 299 slice_from("\u062F"); break; case 31: // (, line 300 // <-, line 300 slice_from("\u0630"); break; case 32: // (, line 301 // <-, line 301 slice_from("\u0631"); break; case 33: // (, line 302 // <-, line 302 slice_from("\u0632"); break; case 34: // (, line 303 // <-, line 303 slice_from("\u0633"); break; case 35: // (, line 304 // <-, line 304 slice_from("\u0634"); break; case 36: // (, line 305 // <-, line 305 slice_from("\u0635"); break; case 37: // (, line 306 // <-, line 306 slice_from("\u0636"); break; case 38: // (, line 307 // <-, line 307 slice_from("\u0637"); break; case 39: // (, line 308 // <-, line 308 slice_from("\u0638"); break; case 40: // (, line 309 // <-, line 309 slice_from("\u0639"); break; case 41: // (, line 310 // <-, line 310 slice_from("\u063A"); break; case 42: // (, line 311 // <-, line 311 slice_from("\u0641"); break; case 43: // (, line 312 // <-, line 312 slice_from("\u0642"); break; case 44: // (, line 313 // <-, line 313 slice_from("\u0643"); break; case 45: // (, line 314 // <-, line 314 slice_from("\u0644"); break; case 46: // (, line 315 // <-, line 315 slice_from("\u0645"); break; case 47: // (, line 316 // <-, line 316 slice_from("\u0646"); break; case 48: // (, line 317 // <-, line 317 slice_from("\u0647"); break; case 49: // (, line 318 // <-, line 318 slice_from("\u0648"); break; case 50: // (, line 319 // <-, line 319 slice_from("\u0649"); break; case 51: // (, line 320 // <-, line 320 slice_from("\u064A"); break; case 52: // (, line 323 // <-, line 323 slice_from("\u0644\u0627"); break; case 53: // (, line 324 // <-, line 324 slice_from("\u0644\u0623"); break; case 54: // (, line 325 // <-, line 325 slice_from("\u0644\u0625"); break; case 55: // (, line 326 // <-, line 326 slice_from("\u0644\u0622"); break; } break lab0; } while (false); cursor = v_2; // next, line 331 if (cursor >= limit) { return false; } cursor++; } while (false); } return true; } private boolean r_Normalize_post() { int among_var; int v_1; int v_2; int v_3; int v_4; // (, line 335 // do, line 337 v_1 = cursor; lab0: do { // (, line 337 // backwards, line 339 limit_backward = cursor; cursor = limit; // (, line 339 // [, line 340 ket = cursor; // substring, line 340 among_var = find_among_b(a_1); if (among_var == 0) { break lab0; } // ], line 340 bra = cursor; switch (among_var) { case 0: break lab0; case 1: // (, line 341 // <-, line 341 slice_from("\u0621"); break; case 2: // (, line 342 // <-, line 342 slice_from("\u0621"); break; case 3: // (, line 343 // <-, line 343 slice_from("\u0621"); break; } cursor = limit_backward; } while (false); cursor = v_1; // do, line 348 v_2 = cursor; lab1: do { // loop, line 348 for (v_3 = I_word_len; v_3 > 0; v_3--) { // (, line 348 // or, line 357 lab2: do { v_4 = cursor; lab3: do { // (, line 349 // [, line 351 bra = cursor; // substring, line 351 among_var = find_among(a_2); if (among_var == 0) { break lab3; } // ], line 351 ket = cursor; switch (among_var) { case 0: break lab3; case 1: // (, line 352 // <-, line 352 slice_from("\u0627"); break; case 2: // (, line 353 // <-, line 353 slice_from("\u0648"); break; case 3: // (, line 354 // <-, line 354 slice_from("\u064A"); break; } break lab2; } while (false); cursor = v_4; // next, line 358 if (cursor >= limit) { break lab1; } cursor++; } while (false); } } while (false); cursor = v_2; return true; } private boolean r_Checks1() { int among_var; // (, line 363 I_word_len = (current.length()); // [, line 365 bra = cursor; // substring, line 365 among_var = find_among(a_3); if (among_var == 0) { return false; } // ], line 365 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 366 if (!(I_word_len > 4)) { return false; } // set is_noun, line 366 B_is_noun = true; // unset is_verb, line 366 B_is_verb = false; // set is_defined, line 366 B_is_defined = true; break; case 2: // (, line 367 if (!(I_word_len > 3)) { return false; } // set is_noun, line 367 B_is_noun = true; // unset is_verb, line 367 B_is_verb = false; // set is_defined, line 367 B_is_defined = true; break; } return true; } private boolean r_Checks2() { int among_var; // (, line 373 I_word_len = (current.length()); // [, line 375 ket = cursor; // substring, line 375 among_var = find_among_b(a_4); if (among_var == 0) { return false; } // ], line 375 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 376 if (!(I_word_len > 2)) { return false; } // set is_noun, line 376 B_is_noun = true; // unset is_verb, line 376 B_is_verb = false; break; } return true; } private boolean r_Prefix_Step1() { int among_var; // (, line 382 I_word_len = (current.length()); // [, line 384 bra = cursor; // substring, line 384 among_var = find_among(a_5); if (among_var == 0) { return false; } // ], line 384 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 385 if (!(I_word_len > 3)) { return false; } // <-, line 385 slice_from("\u0623"); break; case 2: // (, line 386 if (!(I_word_len > 3)) { return false; } // <-, line 386 slice_from("\u0622"); break; case 3: // (, line 387 if (!(I_word_len > 3)) { return false; } // <-, line 387 slice_from("\u0623"); break; case 4: // (, line 388 if (!(I_word_len > 3)) { return false; } // <-, line 388 slice_from("\u0627"); break; case 5: // (, line 389 if (!(I_word_len > 3)) { return false; } // <-, line 389 slice_from("\u0625"); break; } return true; } private boolean r_Prefix_Step2a() { int among_var; // (, line 394 I_word_len = (current.length()); // [, line 396 bra = cursor; // substring, line 396 among_var = find_among(a_6); if (among_var == 0) { return false; } // ], line 396 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 397 if (!(I_word_len > 5)) { return false; } // delete, line 397 slice_del(); break; case 2: // (, line 398 if (!(I_word_len > 5)) { return false; } // delete, line 398 slice_del(); break; } return true; } private boolean r_Prefix_Step2b() { int among_var; int v_1; int v_2; // (, line 402 I_word_len = (current.length()); // not, line 404 { v_1 = cursor; lab0: do { // literal, line 404 if (!(eq_s("\u0641\u0627"))) { break lab0; } return false; } while (false); cursor = v_1; } // not, line 405 { v_2 = cursor; lab1: do { // literal, line 405 if (!(eq_s("\u0648\u0627"))) { break lab1; } return false; } while (false); cursor = v_2; } // [, line 406 bra = cursor; // substring, line 406 among_var = find_among(a_7); if (among_var == 0) { return false; } // ], line 406 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 407 if (!(I_word_len > 3)) { return false; } // delete, line 407 slice_del(); break; case 2: // (, line 408 if (!(I_word_len > 3)) { return false; } // delete, line 408 slice_del(); break; } return true; } private boolean r_Prefix_Step3a_Noun() { int among_var; // (, line 412 I_word_len = (current.length()); // [, line 414 bra = cursor; // substring, line 414 among_var = find_among(a_8); if (among_var == 0) { return false; } // ], line 414 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 415 if (!(I_word_len > 5)) { return false; } // delete, line 415 slice_del(); break; case 2: // (, line 416 if (!(I_word_len > 4)) { return false; } // delete, line 416 slice_del(); break; } return true; } private boolean r_Prefix_Step3b_Noun() { int among_var; int v_1; // (, line 420 I_word_len = (current.length()); // not, line 422 { v_1 = cursor; lab0: do { // literal, line 422 if (!(eq_s("\u0628\u0627"))) { break lab0; } return false; } while (false); cursor = v_1; } // [, line 423 bra = cursor; // substring, line 423 among_var = find_among(a_9); if (among_var == 0) { return false; } // ], line 423 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 424 if (!(I_word_len > 3)) { return false; } // delete, line 424 slice_del(); break; case 2: // (, line 425 if (!(I_word_len > 4)) { return false; } // delete, line 425 slice_del(); break; case 3: // (, line 426 if (!(I_word_len > 4)) { return false; } // delete, line 426 slice_del(); break; case 4: // (, line 427 if (!(I_word_len > 3)) { return false; } // <-, line 427 slice_from("\u0628"); break; case 5: // (, line 428 if (!(I_word_len > 3)) { return false; } // <-, line 428 slice_from("\u0643"); break; } return true; } private boolean r_Prefix_Step3_Verb() { int among_var; // (, line 433 I_word_len = (current.length()); // [, line 435 bra = cursor; // substring, line 435 among_var = find_among(a_10); if (among_var == 0) { return false; } // ], line 435 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 437 if (!(I_word_len > 4)) { return false; } // <-, line 437 slice_from("\u064A"); break; case 2: // (, line 438 if (!(I_word_len > 4)) { return false; } // <-, line 438 slice_from("\u062A"); break; case 3: // (, line 439 if (!(I_word_len > 4)) { return false; } // <-, line 439 slice_from("\u0646"); break; case 4: // (, line 440 if (!(I_word_len > 4)) { return false; } // <-, line 440 slice_from("\u0623"); break; } return true; } private boolean r_Prefix_Step4_Verb() { int among_var; // (, line 444 I_word_len = (current.length()); // [, line 446 bra = cursor; // substring, line 446 among_var = find_among(a_11); if (among_var == 0) { return false; } // ], line 446 ket = cursor; switch (among_var) { case 0: return false; case 1: // (, line 447 if (!(I_word_len > 4)) { return false; } // set is_verb, line 447 B_is_verb = true; // unset is_noun, line 447 B_is_noun = false; // <-, line 447 slice_from("\u0627\u0633\u062A"); break; } return true; } private boolean r_Suffix_Noun_Step1a() { int among_var; // (, line 454 I_word_len = (current.length()); // [, line 456 ket = cursor; // substring, line 456 among_var = find_among_b(a_12); if (among_var == 0) { return false; } // ], line 456 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 457 if (!(I_word_len >= 4)) { return false; } // delete, line 457 slice_del(); break; case 2: // (, line 458 if (!(I_word_len >= 5)) { return false; } // delete, line 458 slice_del(); break; case 3: // (, line 459 if (!(I_word_len >= 6)) { return false; } // delete, line 459 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step1b() { int among_var; // (, line 462 I_word_len = (current.length()); // [, line 464 ket = cursor; // substring, line 464 among_var = find_among_b(a_13); if (among_var == 0) { return false; } // ], line 464 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 465 if (!(I_word_len > 5)) { return false; } // delete, line 465 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step2a() { int among_var; // (, line 469 I_word_len = (current.length()); // [, line 471 ket = cursor; // substring, line 471 among_var = find_among_b(a_14); if (among_var == 0) { return false; } // ], line 471 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 472 if (!(I_word_len > 4)) { return false; } // delete, line 472 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step2b() { int among_var; // (, line 476 I_word_len = (current.length()); // [, line 478 ket = cursor; // substring, line 478 among_var = find_among_b(a_15); if (among_var == 0) { return false; } // ], line 478 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 479 if (!(I_word_len >= 5)) { return false; } // delete, line 479 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step2c1() { int among_var; // (, line 483 I_word_len = (current.length()); // [, line 485 ket = cursor; // substring, line 485 among_var = find_among_b(a_16); if (among_var == 0) { return false; } // ], line 485 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 486 if (!(I_word_len >= 4)) { return false; } // delete, line 486 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step2c2() { int among_var; // (, line 489 I_word_len = (current.length()); // [, line 491 ket = cursor; // substring, line 491 among_var = find_among_b(a_17); if (among_var == 0) { return false; } // ], line 491 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 492 if (!(I_word_len >= 3)) { return false; } // delete, line 492 slice_del(); break; } return true; } private boolean r_Suffix_Noun_Step3() { int among_var; // (, line 495 I_word_len = (current.length()); // [, line 497 ket = cursor; // substring, line 497 among_var = find_among_b(a_18); if (among_var == 0) { return false; } // ], line 497 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 498 if (!(I_word_len >= 3)) { return false; } // delete, line 498 slice_del(); break; } return true; } private boolean r_Suffix_Verb_Step1() { int among_var; // (, line 502 I_word_len = (current.length()); // [, line 504 ket = cursor; // substring, line 504 among_var = find_among_b(a_19); if (among_var == 0) { return false; } // ], line 504 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 505 if (!(I_word_len >= 4)) { return false; } // delete, line 505 slice_del(); break; case 2: // (, line 506 if (!(I_word_len >= 5)) { return false; } // delete, line 506 slice_del(); break; case 3: // (, line 507 if (!(I_word_len >= 6)) { return false; } // delete, line 507 slice_del(); break; } return true; } private boolean r_Suffix_Verb_Step2a() { int among_var; // (, line 510 I_word_len = (current.length()); // [, line 512 ket = cursor; // substring, line 512 among_var = find_among_b(a_20); if (among_var == 0) { return false; } // ], line 512 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 513 if (!(I_word_len >= 4)) { return false; } // delete, line 513 slice_del(); break; case 2: // (, line 514 if (!(I_word_len >= 4)) { return false; } // delete, line 514 slice_del(); break; case 3: // (, line 515 if (!(I_word_len >= 5)) { return false; } // delete, line 515 slice_del(); break; case 4: // (, line 516 if (!(I_word_len > 5)) { return false; } // delete, line 516 slice_del(); break; case 5: // (, line 517 if (!(I_word_len >= 6)) { return false; } // delete, line 517 slice_del(); break; } return true; } private boolean r_Suffix_Verb_Step2b() { int among_var; // (, line 521 I_word_len = (current.length()); // [, line 523 ket = cursor; // substring, line 523 among_var = find_among_b(a_21); if (among_var == 0) { return false; } // ], line 523 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 524 if (!(I_word_len >= 5)) { return false; } // delete, line 524 slice_del(); break; } return true; } private boolean r_Suffix_Verb_Step2c() { int among_var; // (, line 529 I_word_len = (current.length()); // [, line 531 ket = cursor; // substring, line 531 among_var = find_among_b(a_22); if (among_var == 0) { return false; } // ], line 531 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 532 if (!(I_word_len >= 4)) { return false; } // delete, line 532 slice_del(); break; case 2: // (, line 533 if (!(I_word_len >= 6)) { return false; } // delete, line 533 slice_del(); break; } return true; } private boolean r_Suffix_All_alef_maqsura() { int among_var; // (, line 537 I_word_len = (current.length()); // [, line 539 ket = cursor; // substring, line 539 among_var = find_among_b(a_23); if (among_var == 0) { return false; } // ], line 539 bra = cursor; switch (among_var) { case 0: return false; case 1: // (, line 540 // <-, line 540 slice_from("\u064A"); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_8; int v_9; int v_10; int v_11; int v_13; int v_14; int v_16; int v_17; int v_18; int v_19; int v_20; int v_21; int v_22; // (, line 547 // set is_noun, line 549 B_is_noun = true; // set is_verb, line 550 B_is_verb = true; // unset is_defined, line 551 B_is_defined = false; // do, line 554 v_1 = cursor; lab0: do { // call Checks1, line 554 if (!r_Checks1()) { break lab0; } } while (false); cursor = v_1; // backwards, line 555 limit_backward = cursor; cursor = limit; // (, line 555 // do, line 555 v_2 = limit - cursor; lab1: do { // call Checks2, line 555 if (!r_Checks2()) { break lab1; } } while (false); cursor = limit - v_2; cursor = limit_backward; // do, line 558 v_3 = cursor; lab2: do { // call Normalize_pre, line 558 if (!r_Normalize_pre()) { break lab2; } } while (false); cursor = v_3; // backwards, line 561 limit_backward = cursor; cursor = limit; // (, line 561 // do, line 563 v_4 = limit - cursor; lab3: do { // (, line 563 // or, line 577 lab4: do { v_5 = limit - cursor; lab5: do { // (, line 565 // Boolean test is_verb, line 566 if (!(B_is_verb)) { break lab5; } // (, line 567 // or, line 572 lab6: do { v_6 = limit - cursor; lab7: do { // (, line 568 // (, line 569 // atleast, line 569 { int v_7 = 1; // atleast, line 569 replab8: while(true) { v_8 = limit - cursor; lab9: do { // call Suffix_Verb_Step1, line 569 if (!r_Suffix_Verb_Step1()) { break lab9; } v_7--; continue replab8; } while (false); cursor = limit - v_8; break replab8; } if (v_7 > 0) { break lab7; } } // (, line 570 // or, line 570 lab10: do { v_9 = limit - cursor; lab11: do { // call Suffix_Verb_Step2a, line 570 if (!r_Suffix_Verb_Step2a()) { break lab11; } break lab10; } while (false); cursor = limit - v_9; lab12: do { // call Suffix_Verb_Step2c, line 570 if (!r_Suffix_Verb_Step2c()) { break lab12; } break lab10; } while (false); cursor = limit - v_9; // next, line 570 if (cursor <= limit_backward) { break lab7; } cursor--; } while (false); break lab6; } while (false); cursor = limit - v_6; lab13: do { // call Suffix_Verb_Step2b, line 572 if (!r_Suffix_Verb_Step2b()) { break lab13; } break lab6; } while (false); cursor = limit - v_6; // call Suffix_Verb_Step2a, line 573 if (!r_Suffix_Verb_Step2a()) { break lab5; } } while (false); break lab4; } while (false); cursor = limit - v_5; lab14: do { // (, line 577 // Boolean test is_noun, line 578 if (!(B_is_noun)) { break lab14; } // (, line 579 // try, line 581 v_10 = limit - cursor; lab15: do { // (, line 581 // or, line 583 lab16: do { v_11 = limit - cursor; lab17: do { // call Suffix_Noun_Step2c2, line 582 if (!r_Suffix_Noun_Step2c2()) { break lab17; } break lab16; } while (false); cursor = limit - v_11; lab18: do { // (, line 583 // not, line 583 lab19: do { // Boolean test is_defined, line 583 if (!(B_is_defined)) { break lab19; } break lab18; } while (false); // call Suffix_Noun_Step1a, line 583 if (!r_Suffix_Noun_Step1a()) { break lab18; } // (, line 583 // or, line 585 lab20: do { v_13 = limit - cursor; lab21: do { // call Suffix_Noun_Step2a, line 584 if (!r_Suffix_Noun_Step2a()) { break lab21; } break lab20; } while (false); cursor = limit - v_13; lab22: do { // call Suffix_Noun_Step2b, line 585 if (!r_Suffix_Noun_Step2b()) { break lab22; } break lab20; } while (false); cursor = limit - v_13; lab23: do { // call Suffix_Noun_Step2c1, line 586 if (!r_Suffix_Noun_Step2c1()) { break lab23; } break lab20; } while (false); cursor = limit - v_13; // next, line 587 if (cursor <= limit_backward) { break lab18; } cursor--; } while (false); break lab16; } while (false); cursor = limit - v_11; lab24: do { // (, line 588 // call Suffix_Noun_Step1b, line 588 if (!r_Suffix_Noun_Step1b()) { break lab24; } // (, line 588 // or, line 590 lab25: do { v_14 = limit - cursor; lab26: do { // call Suffix_Noun_Step2a, line 589 if (!r_Suffix_Noun_Step2a()) { break lab26; } break lab25; } while (false); cursor = limit - v_14; lab27: do { // call Suffix_Noun_Step2b, line 590 if (!r_Suffix_Noun_Step2b()) { break lab27; } break lab25; } while (false); cursor = limit - v_14; // call Suffix_Noun_Step2c1, line 591 if (!r_Suffix_Noun_Step2c1()) { break lab24; } } while (false); break lab16; } while (false); cursor = limit - v_11; lab28: do { // (, line 592 // not, line 592 lab29: do { // Boolean test is_defined, line 592 if (!(B_is_defined)) { break lab29; } break lab28; } while (false); // call Suffix_Noun_Step2a, line 592 if (!r_Suffix_Noun_Step2a()) { break lab28; } break lab16; } while (false); cursor = limit - v_11; // (, line 593 // call Suffix_Noun_Step2b, line 593 if (!r_Suffix_Noun_Step2b()) { cursor = limit - v_10; break lab15; } } while (false); } while (false); // call Suffix_Noun_Step3, line 595 if (!r_Suffix_Noun_Step3()) { break lab14; } break lab4; } while (false); cursor = limit - v_5; // call Suffix_All_alef_maqsura, line 601 if (!r_Suffix_All_alef_maqsura()) { break lab3; } } while (false); } while (false); cursor = limit - v_4; cursor = limit_backward; // do, line 606 v_16 = cursor; lab30: do { // (, line 606 // try, line 607 v_17 = cursor; lab31: do { // call Prefix_Step1, line 607 if (!r_Prefix_Step1()) { cursor = v_17; break lab31; } } while (false); // try, line 608 v_18 = cursor; lab32: do { // (, line 608 // or, line 608 lab33: do { v_19 = cursor; lab34: do { // call Prefix_Step2a, line 608 if (!r_Prefix_Step2a()) { break lab34; } break lab33; } while (false); cursor = v_19; // call Prefix_Step2b, line 608 if (!r_Prefix_Step2b()) { cursor = v_18; break lab32; } } while (false); } while (false); // (, line 609 // or, line 610 lab35: do { v_20 = cursor; lab36: do { // call Prefix_Step3a_Noun, line 609 if (!r_Prefix_Step3a_Noun()) { break lab36; } break lab35; } while (false); cursor = v_20; lab37: do { // (, line 610 // Boolean test is_noun, line 610 if (!(B_is_noun)) { break lab37; } // call Prefix_Step3b_Noun, line 610 if (!r_Prefix_Step3b_Noun()) { break lab37; } break lab35; } while (false); cursor = v_20; // (, line 611 // Boolean test is_verb, line 611 if (!(B_is_verb)) { break lab30; } // try, line 611 v_21 = cursor; lab38: do { // call Prefix_Step3_Verb, line 611 if (!r_Prefix_Step3_Verb()) { cursor = v_21; break lab38; } } while (false); // call Prefix_Step4_Verb, line 611 if (!r_Prefix_Step4_Verb()) { break lab30; } } while (false); } while (false); cursor = v_16; // do, line 616 v_22 = cursor; lab39: do { // call Normalize_post, line 616 if (!r_Normalize_post()) { break lab39; } } while (false); cursor = v_22; return true; } public boolean equals( Object o ) { return o instanceof arabicStemmer; } public int hashCode() { return arabicStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000163 14135770370 032700 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/hungarianStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/hungarianStemmer0100664 0001750 0001750 00000141105 14135770370 034277 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class hungarianStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static hungarianStemmer methodObject = new hungarianStemmer (); private final static Among a_0[] = { new Among ( "cs", -1, -1, "", methodObject ), new Among ( "dzs", -1, -1, "", methodObject ), new Among ( "gy", -1, -1, "", methodObject ), new Among ( "ly", -1, -1, "", methodObject ), new Among ( "ny", -1, -1, "", methodObject ), new Among ( "sz", -1, -1, "", methodObject ), new Among ( "ty", -1, -1, "", methodObject ), new Among ( "zs", -1, -1, "", methodObject ) }; private final static Among a_1[] = { new Among ( "\u00E1", -1, 1, "", methodObject ), new Among ( "\u00E9", -1, 2, "", methodObject ) }; private final static Among a_2[] = { new Among ( "bb", -1, -1, "", methodObject ), new Among ( "cc", -1, -1, "", methodObject ), new Among ( "dd", -1, -1, "", methodObject ), new Among ( "ff", -1, -1, "", methodObject ), new Among ( "gg", -1, -1, "", methodObject ), new Among ( "jj", -1, -1, "", methodObject ), new Among ( "kk", -1, -1, "", methodObject ), new Among ( "ll", -1, -1, "", methodObject ), new Among ( "mm", -1, -1, "", methodObject ), new Among ( "nn", -1, -1, "", methodObject ), new Among ( "pp", -1, -1, "", methodObject ), new Among ( "rr", -1, -1, "", methodObject ), new Among ( "ccs", -1, -1, "", methodObject ), new Among ( "ss", -1, -1, "", methodObject ), new Among ( "zzs", -1, -1, "", methodObject ), new Among ( "tt", -1, -1, "", methodObject ), new Among ( "vv", -1, -1, "", methodObject ), new Among ( "ggy", -1, -1, "", methodObject ), new Among ( "lly", -1, -1, "", methodObject ), new Among ( "nny", -1, -1, "", methodObject ), new Among ( "tty", -1, -1, "", methodObject ), new Among ( "ssz", -1, -1, "", methodObject ), new Among ( "zz", -1, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "al", -1, 1, "", methodObject ), new Among ( "el", -1, 2, "", methodObject ) }; private final static Among a_4[] = { new Among ( "ba", -1, -1, "", methodObject ), new Among ( "ra", -1, -1, "", methodObject ), new Among ( "be", -1, -1, "", methodObject ), new Among ( "re", -1, -1, "", methodObject ), new Among ( "ig", -1, -1, "", methodObject ), new Among ( "nak", -1, -1, "", methodObject ), new Among ( "nek", -1, -1, "", methodObject ), new Among ( "val", -1, -1, "", methodObject ), new Among ( "vel", -1, -1, "", methodObject ), new Among ( "ul", -1, -1, "", methodObject ), new Among ( "n\u00E1l", -1, -1, "", methodObject ), new Among ( "n\u00E9l", -1, -1, "", methodObject ), new Among ( "b\u00F3l", -1, -1, "", methodObject ), new Among ( "r\u00F3l", -1, -1, "", methodObject ), new Among ( "t\u00F3l", -1, -1, "", methodObject ), new Among ( "b\u00F5l", -1, -1, "", methodObject ), new Among ( "r\u00F5l", -1, -1, "", methodObject ), new Among ( "t\u00F5l", -1, -1, "", methodObject ), new Among ( "\u00FCl", -1, -1, "", methodObject ), new Among ( "n", -1, -1, "", methodObject ), new Among ( "an", 19, -1, "", methodObject ), new Among ( "ban", 20, -1, "", methodObject ), new Among ( "en", 19, -1, "", methodObject ), new Among ( "ben", 22, -1, "", methodObject ), new Among ( "k\u00E9ppen", 22, -1, "", methodObject ), new Among ( "on", 19, -1, "", methodObject ), new Among ( "\u00F6n", 19, -1, "", methodObject ), new Among ( "k\u00E9pp", -1, -1, "", methodObject ), new Among ( "kor", -1, -1, "", methodObject ), new Among ( "t", -1, -1, "", methodObject ), new Among ( "at", 29, -1, "", methodObject ), new Among ( "et", 29, -1, "", methodObject ), new Among ( "k\u00E9nt", 29, -1, "", methodObject ), new Among ( "ank\u00E9nt", 32, -1, "", methodObject ), new Among ( "enk\u00E9nt", 32, -1, "", methodObject ), new Among ( "onk\u00E9nt", 32, -1, "", methodObject ), new Among ( "ot", 29, -1, "", methodObject ), new Among ( "\u00E9rt", 29, -1, "", methodObject ), new Among ( "\u00F6t", 29, -1, "", methodObject ), new Among ( "hez", -1, -1, "", methodObject ), new Among ( "hoz", -1, -1, "", methodObject ), new Among ( "h\u00F6z", -1, -1, "", methodObject ), new Among ( "v\u00E1", -1, -1, "", methodObject ), new Among ( "v\u00E9", -1, -1, "", methodObject ) }; private final static Among a_5[] = { new Among ( "\u00E1n", -1, 2, "", methodObject ), new Among ( "\u00E9n", -1, 1, "", methodObject ), new Among ( "\u00E1nk\u00E9nt", -1, 3, "", methodObject ) }; private final static Among a_6[] = { new Among ( "stul", -1, 2, "", methodObject ), new Among ( "astul", 0, 1, "", methodObject ), new Among ( "\u00E1stul", 0, 3, "", methodObject ), new Among ( "st\u00FCl", -1, 2, "", methodObject ), new Among ( "est\u00FCl", 3, 1, "", methodObject ), new Among ( "\u00E9st\u00FCl", 3, 4, "", methodObject ) }; private final static Among a_7[] = { new Among ( "\u00E1", -1, 1, "", methodObject ), new Among ( "\u00E9", -1, 2, "", methodObject ) }; private final static Among a_8[] = { new Among ( "k", -1, 7, "", methodObject ), new Among ( "ak", 0, 4, "", methodObject ), new Among ( "ek", 0, 6, "", methodObject ), new Among ( "ok", 0, 5, "", methodObject ), new Among ( "\u00E1k", 0, 1, "", methodObject ), new Among ( "\u00E9k", 0, 2, "", methodObject ), new Among ( "\u00F6k", 0, 3, "", methodObject ) }; private final static Among a_9[] = { new Among ( "\u00E9i", -1, 7, "", methodObject ), new Among ( "\u00E1\u00E9i", 0, 6, "", methodObject ), new Among ( "\u00E9\u00E9i", 0, 5, "", methodObject ), new Among ( "\u00E9", -1, 9, "", methodObject ), new Among ( "k\u00E9", 3, 4, "", methodObject ), new Among ( "ak\u00E9", 4, 1, "", methodObject ), new Among ( "ek\u00E9", 4, 1, "", methodObject ), new Among ( "ok\u00E9", 4, 1, "", methodObject ), new Among ( "\u00E1k\u00E9", 4, 3, "", methodObject ), new Among ( "\u00E9k\u00E9", 4, 2, "", methodObject ), new Among ( "\u00F6k\u00E9", 4, 1, "", methodObject ), new Among ( "\u00E9\u00E9", 3, 8, "", methodObject ) }; private final static Among a_10[] = { new Among ( "a", -1, 18, "", methodObject ), new Among ( "ja", 0, 17, "", methodObject ), new Among ( "d", -1, 16, "", methodObject ), new Among ( "ad", 2, 13, "", methodObject ), new Among ( "ed", 2, 13, "", methodObject ), new Among ( "od", 2, 13, "", methodObject ), new Among ( "\u00E1d", 2, 14, "", methodObject ), new Among ( "\u00E9d", 2, 15, "", methodObject ), new Among ( "\u00F6d", 2, 13, "", methodObject ), new Among ( "e", -1, 18, "", methodObject ), new Among ( "je", 9, 17, "", methodObject ), new Among ( "nk", -1, 4, "", methodObject ), new Among ( "unk", 11, 1, "", methodObject ), new Among ( "\u00E1nk", 11, 2, "", methodObject ), new Among ( "\u00E9nk", 11, 3, "", methodObject ), new Among ( "\u00FCnk", 11, 1, "", methodObject ), new Among ( "uk", -1, 8, "", methodObject ), new Among ( "juk", 16, 7, "", methodObject ), new Among ( "\u00E1juk", 17, 5, "", methodObject ), new Among ( "\u00FCk", -1, 8, "", methodObject ), new Among ( "j\u00FCk", 19, 7, "", methodObject ), new Among ( "\u00E9j\u00FCk", 20, 6, "", methodObject ), new Among ( "m", -1, 12, "", methodObject ), new Among ( "am", 22, 9, "", methodObject ), new Among ( "em", 22, 9, "", methodObject ), new Among ( "om", 22, 9, "", methodObject ), new Among ( "\u00E1m", 22, 10, "", methodObject ), new Among ( "\u00E9m", 22, 11, "", methodObject ), new Among ( "o", -1, 18, "", methodObject ), new Among ( "\u00E1", -1, 19, "", methodObject ), new Among ( "\u00E9", -1, 20, "", methodObject ) }; private final static Among a_11[] = { new Among ( "id", -1, 10, "", methodObject ), new Among ( "aid", 0, 9, "", methodObject ), new Among ( "jaid", 1, 6, "", methodObject ), new Among ( "eid", 0, 9, "", methodObject ), new Among ( "jeid", 3, 6, "", methodObject ), new Among ( "\u00E1id", 0, 7, "", methodObject ), new Among ( "\u00E9id", 0, 8, "", methodObject ), new Among ( "i", -1, 15, "", methodObject ), new Among ( "ai", 7, 14, "", methodObject ), new Among ( "jai", 8, 11, "", methodObject ), new Among ( "ei", 7, 14, "", methodObject ), new Among ( "jei", 10, 11, "", methodObject ), new Among ( "\u00E1i", 7, 12, "", methodObject ), new Among ( "\u00E9i", 7, 13, "", methodObject ), new Among ( "itek", -1, 24, "", methodObject ), new Among ( "eitek", 14, 21, "", methodObject ), new Among ( "jeitek", 15, 20, "", methodObject ), new Among ( "\u00E9itek", 14, 23, "", methodObject ), new Among ( "ik", -1, 29, "", methodObject ), new Among ( "aik", 18, 26, "", methodObject ), new Among ( "jaik", 19, 25, "", methodObject ), new Among ( "eik", 18, 26, "", methodObject ), new Among ( "jeik", 21, 25, "", methodObject ), new Among ( "\u00E1ik", 18, 27, "", methodObject ), new Among ( "\u00E9ik", 18, 28, "", methodObject ), new Among ( "ink", -1, 20, "", methodObject ), new Among ( "aink", 25, 17, "", methodObject ), new Among ( "jaink", 26, 16, "", methodObject ), new Among ( "eink", 25, 17, "", methodObject ), new Among ( "jeink", 28, 16, "", methodObject ), new Among ( "\u00E1ink", 25, 18, "", methodObject ), new Among ( "\u00E9ink", 25, 19, "", methodObject ), new Among ( "aitok", -1, 21, "", methodObject ), new Among ( "jaitok", 32, 20, "", methodObject ), new Among ( "\u00E1itok", -1, 22, "", methodObject ), new Among ( "im", -1, 5, "", methodObject ), new Among ( "aim", 35, 4, "", methodObject ), new Among ( "jaim", 36, 1, "", methodObject ), new Among ( "eim", 35, 4, "", methodObject ), new Among ( "jeim", 38, 1, "", methodObject ), new Among ( "\u00E1im", 35, 2, "", methodObject ), new Among ( "\u00E9im", 35, 3, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 }; private int I_p1; private void copy_from(hungarianStemmer other) { I_p1 = other.I_p1; super.copy_from(other); } private boolean r_mark_regions() { int v_1; int v_2; int v_3; // (, line 44 I_p1 = limit; // or, line 51 lab0: do { v_1 = cursor; lab1: do { // (, line 48 if (!(in_grouping(g_v, 97, 252))) { break lab1; } // goto, line 48 golab2: while(true) { v_2 = cursor; lab3: do { if (!(out_grouping(g_v, 97, 252))) { break lab3; } cursor = v_2; break golab2; } while (false); cursor = v_2; if (cursor >= limit) { break lab1; } cursor++; } // or, line 49 lab4: do { v_3 = cursor; lab5: do { // among, line 49 if (find_among(a_0, 8) == 0) { break lab5; } break lab4; } while (false); cursor = v_3; // next, line 49 if (cursor >= limit) { break lab1; } cursor++; } while (false); // setmark p1, line 50 I_p1 = cursor; break lab0; } while (false); cursor = v_1; // (, line 53 if (!(out_grouping(g_v, 97, 252))) { return false; } // gopast, line 53 golab6: while(true) { lab7: do { if (!(in_grouping(g_v, 97, 252))) { break lab7; } break golab6; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 53 I_p1 = cursor; } while (false); return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_v_ending() { int among_var; // (, line 60 // [, line 61 ket = cursor; // substring, line 61 among_var = find_among_b(a_1, 2); if (among_var == 0) { return false; } // ], line 61 bra = cursor; // call R1, line 61 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 62 // <-, line 62 slice_from("a"); break; case 2: // (, line 63 // <-, line 63 slice_from("e"); break; } return true; } private boolean r_double() { int v_1; // (, line 67 // test, line 68 v_1 = limit - cursor; // among, line 68 if (find_among_b(a_2, 23) == 0) { return false; } cursor = limit - v_1; return true; } private boolean r_undouble() { // (, line 72 // next, line 73 if (cursor <= limit_backward) { return false; } cursor--; // [, line 73 ket = cursor; // hop, line 73 { int c = cursor - 1; if (limit_backward > c || c > limit) { return false; } cursor = c; } // ], line 73 bra = cursor; // delete, line 73 slice_del(); return true; } private boolean r_instrum() { int among_var; // (, line 76 // [, line 77 ket = cursor; // substring, line 77 among_var = find_among_b(a_3, 2); if (among_var == 0) { return false; } // ], line 77 bra = cursor; // call R1, line 77 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 78 // call double, line 78 if (!r_double()) { return false; } break; case 2: // (, line 79 // call double, line 79 if (!r_double()) { return false; } break; } // delete, line 81 slice_del(); // call undouble, line 82 if (!r_undouble()) { return false; } return true; } private boolean r_case() { // (, line 86 // [, line 87 ket = cursor; // substring, line 87 if (find_among_b(a_4, 44) == 0) { return false; } // ], line 87 bra = cursor; // call R1, line 87 if (!r_R1()) { return false; } // delete, line 111 slice_del(); // call v_ending, line 112 if (!r_v_ending()) { return false; } return true; } private boolean r_case_special() { int among_var; // (, line 115 // [, line 116 ket = cursor; // substring, line 116 among_var = find_among_b(a_5, 3); if (among_var == 0) { return false; } // ], line 116 bra = cursor; // call R1, line 116 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 117 // <-, line 117 slice_from("e"); break; case 2: // (, line 118 // <-, line 118 slice_from("a"); break; case 3: // (, line 119 // <-, line 119 slice_from("a"); break; } return true; } private boolean r_case_other() { int among_var; // (, line 123 // [, line 124 ket = cursor; // substring, line 124 among_var = find_among_b(a_6, 6); if (among_var == 0) { return false; } // ], line 124 bra = cursor; // call R1, line 124 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 125 // delete, line 125 slice_del(); break; case 2: // (, line 126 // delete, line 126 slice_del(); break; case 3: // (, line 127 // <-, line 127 slice_from("a"); break; case 4: // (, line 128 // <-, line 128 slice_from("e"); break; } return true; } private boolean r_factive() { int among_var; // (, line 132 // [, line 133 ket = cursor; // substring, line 133 among_var = find_among_b(a_7, 2); if (among_var == 0) { return false; } // ], line 133 bra = cursor; // call R1, line 133 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 134 // call double, line 134 if (!r_double()) { return false; } break; case 2: // (, line 135 // call double, line 135 if (!r_double()) { return false; } break; } // delete, line 137 slice_del(); // call undouble, line 138 if (!r_undouble()) { return false; } return true; } private boolean r_plural() { int among_var; // (, line 141 // [, line 142 ket = cursor; // substring, line 142 among_var = find_among_b(a_8, 7); if (among_var == 0) { return false; } // ], line 142 bra = cursor; // call R1, line 142 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 143 // <-, line 143 slice_from("a"); break; case 2: // (, line 144 // <-, line 144 slice_from("e"); break; case 3: // (, line 145 // delete, line 145 slice_del(); break; case 4: // (, line 146 // delete, line 146 slice_del(); break; case 5: // (, line 147 // delete, line 147 slice_del(); break; case 6: // (, line 148 // delete, line 148 slice_del(); break; case 7: // (, line 149 // delete, line 149 slice_del(); break; } return true; } private boolean r_owned() { int among_var; // (, line 153 // [, line 154 ket = cursor; // substring, line 154 among_var = find_among_b(a_9, 12); if (among_var == 0) { return false; } // ], line 154 bra = cursor; // call R1, line 154 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 155 // delete, line 155 slice_del(); break; case 2: // (, line 156 // <-, line 156 slice_from("e"); break; case 3: // (, line 157 // <-, line 157 slice_from("a"); break; case 4: // (, line 158 // delete, line 158 slice_del(); break; case 5: // (, line 159 // <-, line 159 slice_from("e"); break; case 6: // (, line 160 // <-, line 160 slice_from("a"); break; case 7: // (, line 161 // delete, line 161 slice_del(); break; case 8: // (, line 162 // <-, line 162 slice_from("e"); break; case 9: // (, line 163 // delete, line 163 slice_del(); break; } return true; } private boolean r_sing_owner() { int among_var; // (, line 167 // [, line 168 ket = cursor; // substring, line 168 among_var = find_among_b(a_10, 31); if (among_var == 0) { return false; } // ], line 168 bra = cursor; // call R1, line 168 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 169 // delete, line 169 slice_del(); break; case 2: // (, line 170 // <-, line 170 slice_from("a"); break; case 3: // (, line 171 // <-, line 171 slice_from("e"); break; case 4: // (, line 172 // delete, line 172 slice_del(); break; case 5: // (, line 173 // <-, line 173 slice_from("a"); break; case 6: // (, line 174 // <-, line 174 slice_from("e"); break; case 7: // (, line 175 // delete, line 175 slice_del(); break; case 8: // (, line 176 // delete, line 176 slice_del(); break; case 9: // (, line 177 // delete, line 177 slice_del(); break; case 10: // (, line 178 // <-, line 178 slice_from("a"); break; case 11: // (, line 179 // <-, line 179 slice_from("e"); break; case 12: // (, line 180 // delete, line 180 slice_del(); break; case 13: // (, line 181 // delete, line 181 slice_del(); break; case 14: // (, line 182 // <-, line 182 slice_from("a"); break; case 15: // (, line 183 // <-, line 183 slice_from("e"); break; case 16: // (, line 184 // delete, line 184 slice_del(); break; case 17: // (, line 185 // delete, line 185 slice_del(); break; case 18: // (, line 186 // delete, line 186 slice_del(); break; case 19: // (, line 187 // <-, line 187 slice_from("a"); break; case 20: // (, line 188 // <-, line 188 slice_from("e"); break; } return true; } private boolean r_plur_owner() { int among_var; // (, line 192 // [, line 193 ket = cursor; // substring, line 193 among_var = find_among_b(a_11, 42); if (among_var == 0) { return false; } // ], line 193 bra = cursor; // call R1, line 193 if (!r_R1()) { return false; } switch(among_var) { case 0: return false; case 1: // (, line 194 // delete, line 194 slice_del(); break; case 2: // (, line 195 // <-, line 195 slice_from("a"); break; case 3: // (, line 196 // <-, line 196 slice_from("e"); break; case 4: // (, line 197 // delete, line 197 slice_del(); break; case 5: // (, line 198 // delete, line 198 slice_del(); break; case 6: // (, line 199 // delete, line 199 slice_del(); break; case 7: // (, line 200 // <-, line 200 slice_from("a"); break; case 8: // (, line 201 // <-, line 201 slice_from("e"); break; case 9: // (, line 202 // delete, line 202 slice_del(); break; case 10: // (, line 203 // delete, line 203 slice_del(); break; case 11: // (, line 204 // delete, line 204 slice_del(); break; case 12: // (, line 205 // <-, line 205 slice_from("a"); break; case 13: // (, line 206 // <-, line 206 slice_from("e"); break; case 14: // (, line 207 // delete, line 207 slice_del(); break; case 15: // (, line 208 // delete, line 208 slice_del(); break; case 16: // (, line 209 // delete, line 209 slice_del(); break; case 17: // (, line 210 // delete, line 210 slice_del(); break; case 18: // (, line 211 // <-, line 211 slice_from("a"); break; case 19: // (, line 212 // <-, line 212 slice_from("e"); break; case 20: // (, line 214 // delete, line 214 slice_del(); break; case 21: // (, line 215 // delete, line 215 slice_del(); break; case 22: // (, line 216 // <-, line 216 slice_from("a"); break; case 23: // (, line 217 // <-, line 217 slice_from("e"); break; case 24: // (, line 218 // delete, line 218 slice_del(); break; case 25: // (, line 219 // delete, line 219 slice_del(); break; case 26: // (, line 220 // delete, line 220 slice_del(); break; case 27: // (, line 221 // <-, line 221 slice_from("a"); break; case 28: // (, line 222 // <-, line 222 slice_from("e"); break; case 29: // (, line 223 // delete, line 223 slice_del(); break; } return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 228 // do, line 229 v_1 = cursor; lab0: do { // call mark_regions, line 229 if (!r_mark_regions()) { break lab0; } } while (false); cursor = v_1; // backwards, line 230 limit_backward = cursor; cursor = limit; // (, line 230 // do, line 231 v_2 = limit - cursor; lab1: do { // call instrum, line 231 if (!r_instrum()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 232 v_3 = limit - cursor; lab2: do { // call case, line 232 if (!r_case()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 233 v_4 = limit - cursor; lab3: do { // call case_special, line 233 if (!r_case_special()) { break lab3; } } while (false); cursor = limit - v_4; // do, line 234 v_5 = limit - cursor; lab4: do { // call case_other, line 234 if (!r_case_other()) { break lab4; } } while (false); cursor = limit - v_5; // do, line 235 v_6 = limit - cursor; lab5: do { // call factive, line 235 if (!r_factive()) { break lab5; } } while (false); cursor = limit - v_6; // do, line 236 v_7 = limit - cursor; lab6: do { // call owned, line 236 if (!r_owned()) { break lab6; } } while (false); cursor = limit - v_7; // do, line 237 v_8 = limit - cursor; lab7: do { // call sing_owner, line 237 if (!r_sing_owner()) { break lab7; } } while (false); cursor = limit - v_8; // do, line 238 v_9 = limit - cursor; lab8: do { // call plur_owner, line 238 if (!r_plur_owner()) { break lab8; } } while (false); cursor = limit - v_9; // do, line 239 v_10 = limit - cursor; lab9: do { // call plural, line 239 if (!r_plural()) { break lab9; } } while (false); cursor = limit - v_10; cursor = limit_backward; return true; } public boolean equals( Object o ) { return o instanceof hungarianStemmer; } public int hashCode() { return hungarianStemmer.class.getName().hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_stemmer_snowball_0100644 0000000 0000000 00000000157 14135770370 032703 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/dutchStemmer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball/dutchStemmer.jav0100664 0001750 0001750 00000105252 14135770370 034214 0ustar00jeffjeff0000000 0000000 // CHECKSTYLE:OFF /* Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file was generated automatically by the Snowball to Java compiler package opennlp.tools.stemmer.snowball; /** * This class was automatically generated by a Snowball to Java compiler * It implements the stemming algorithm defined by a snowball script. */ class dutchStemmer extends opennlp.tools.stemmer.snowball.AbstractSnowballStemmer { private final static dutchStemmer methodObject = new dutchStemmer (); private final static Among a_0[] = { new Among ( "", -1, 6, "", methodObject ), new Among ( "\u00E1", 0, 1, "", methodObject ), new Among ( "\u00E4", 0, 1, "", methodObject ), new Among ( "\u00E9", 0, 2, "", methodObject ), new Among ( "\u00EB", 0, 2, "", methodObject ), new Among ( "\u00ED", 0, 3, "", methodObject ), new Among ( "\u00EF", 0, 3, "", methodObject ), new Among ( "\u00F3", 0, 4, "", methodObject ), new Among ( "\u00F6", 0, 4, "", methodObject ), new Among ( "\u00FA", 0, 5, "", methodObject ), new Among ( "\u00FC", 0, 5, "", methodObject ) }; private final static Among a_1[] = { new Among ( "", -1, 3, "", methodObject ), new Among ( "I", 0, 2, "", methodObject ), new Among ( "Y", 0, 1, "", methodObject ) }; private final static Among a_2[] = { new Among ( "dd", -1, -1, "", methodObject ), new Among ( "kk", -1, -1, "", methodObject ), new Among ( "tt", -1, -1, "", methodObject ) }; private final static Among a_3[] = { new Among ( "ene", -1, 2, "", methodObject ), new Among ( "se", -1, 3, "", methodObject ), new Among ( "en", -1, 2, "", methodObject ), new Among ( "heden", 2, 1, "", methodObject ), new Among ( "s", -1, 3, "", methodObject ) }; private final static Among a_4[] = { new Among ( "end", -1, 1, "", methodObject ), new Among ( "ig", -1, 2, "", methodObject ), new Among ( "ing", -1, 1, "", methodObject ), new Among ( "lijk", -1, 3, "", methodObject ), new Among ( "baar", -1, 4, "", methodObject ), new Among ( "bar", -1, 5, "", methodObject ) }; private final static Among a_5[] = { new Among ( "aa", -1, -1, "", methodObject ), new Among ( "ee", -1, -1, "", methodObject ), new Among ( "oo", -1, -1, "", methodObject ), new Among ( "uu", -1, -1, "", methodObject ) }; private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 }; private static final char g_v_I[] = {1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 }; private static final char g_v_j[] = {17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 }; private int I_p2; private int I_p1; private boolean B_e_found; private void copy_from(dutchStemmer other) { I_p2 = other.I_p2; I_p1 = other.I_p1; B_e_found = other.B_e_found; super.copy_from(other); } private boolean r_prelude() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; // (, line 41 // test, line 42 v_1 = cursor; // repeat, line 42 replab0: while(true) { v_2 = cursor; lab1: do { // (, line 42 // [, line 43 bra = cursor; // substring, line 43 among_var = find_among(a_0, 11); if (among_var == 0) { break lab1; } // ], line 43 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 45 // <-, line 45 slice_from("a"); break; case 2: // (, line 47 // <-, line 47 slice_from("e"); break; case 3: // (, line 49 // <-, line 49 slice_from("i"); break; case 4: // (, line 51 // <-, line 51 slice_from("o"); break; case 5: // (, line 53 // <-, line 53 slice_from("u"); break; case 6: // (, line 54 // next, line 54 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_2; break replab0; } cursor = v_1; // try, line 57 v_3 = cursor; lab2: do { // (, line 57 // [, line 57 bra = cursor; // literal, line 57 if (!(eq_s(1, "y"))) { cursor = v_3; break lab2; } // ], line 57 ket = cursor; // <-, line 57 slice_from("Y"); } while (false); // repeat, line 58 replab3: while(true) { v_4 = cursor; lab4: do { // goto, line 58 golab5: while(true) { v_5 = cursor; lab6: do { // (, line 58 if (!(in_grouping(g_v, 97, 232))) { break lab6; } // [, line 59 bra = cursor; // or, line 59 lab7: do { v_6 = cursor; lab8: do { // (, line 59 // literal, line 59 if (!(eq_s(1, "i"))) { break lab8; } // ], line 59 ket = cursor; if (!(in_grouping(g_v, 97, 232))) { break lab8; } // <-, line 59 slice_from("I"); break lab7; } while (false); cursor = v_6; // (, line 60 // literal, line 60 if (!(eq_s(1, "y"))) { break lab6; } // ], line 60 ket = cursor; // <-, line 60 slice_from("Y"); } while (false); cursor = v_5; break golab5; } while (false); cursor = v_5; if (cursor >= limit) { break lab4; } cursor++; } continue replab3; } while (false); cursor = v_4; break replab3; } return true; } private boolean r_mark_regions() { // (, line 64 I_p1 = limit; I_p2 = limit; // gopast, line 69 golab0: while(true) { lab1: do { if (!(in_grouping(g_v, 97, 232))) { break lab1; } break golab0; } while (false); if (cursor >= limit) { return false; } cursor++; } // gopast, line 69 golab2: while(true) { lab3: do { if (!(out_grouping(g_v, 97, 232))) { break lab3; } break golab2; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p1, line 69 I_p1 = cursor; // try, line 70 lab4: do { // (, line 70 if (!(I_p1 < 3)) { break lab4; } I_p1 = 3; } while (false); // gopast, line 71 golab5: while(true) { lab6: do { if (!(in_grouping(g_v, 97, 232))) { break lab6; } break golab5; } while (false); if (cursor >= limit) { return false; } cursor++; } // gopast, line 71 golab7: while(true) { lab8: do { if (!(out_grouping(g_v, 97, 232))) { break lab8; } break golab7; } while (false); if (cursor >= limit) { return false; } cursor++; } // setmark p2, line 71 I_p2 = cursor; return true; } private boolean r_postlude() { int among_var; int v_1; // repeat, line 75 replab0: while(true) { v_1 = cursor; lab1: do { // (, line 75 // [, line 77 bra = cursor; // substring, line 77 among_var = find_among(a_1, 3); if (among_var == 0) { break lab1; } // ], line 77 ket = cursor; switch(among_var) { case 0: break lab1; case 1: // (, line 78 // <-, line 78 slice_from("y"); break; case 2: // (, line 79 // <-, line 79 slice_from("i"); break; case 3: // (, line 80 // next, line 80 if (cursor >= limit) { break lab1; } cursor++; break; } continue replab0; } while (false); cursor = v_1; break replab0; } return true; } private boolean r_R1() { if (!(I_p1 <= cursor)) { return false; } return true; } private boolean r_R2() { if (!(I_p2 <= cursor)) { return false; } return true; } private boolean r_undouble() { int v_1; // (, line 90 // test, line 91 v_1 = limit - cursor; // among, line 91 if (find_among_b(a_2, 3) == 0) { return false; } cursor = limit - v_1; // [, line 91 ket = cursor; // next, line 91 if (cursor <= limit_backward) { return false; } cursor--; // ], line 91 bra = cursor; // delete, line 91 slice_del(); return true; } private boolean r_e_ending() { int v_1; // (, line 94 // unset e_found, line 95 B_e_found = false; // [, line 96 ket = cursor; // literal, line 96 if (!(eq_s_b(1, "e"))) { return false; } // ], line 96 bra = cursor; // call R1, line 96 if (!r_R1()) { return false; } // test, line 96 v_1 = limit - cursor; if (!(out_grouping_b(g_v, 97, 232))) { return false; } cursor = limit - v_1; // delete, line 96 slice_del(); // set e_found, line 97 B_e_found = true; // call undouble, line 98 if (!r_undouble()) { return false; } return true; } private boolean r_en_ending() { int v_1; int v_2; // (, line 101 // call R1, line 102 if (!r_R1()) { return false; } // and, line 102 v_1 = limit - cursor; if (!(out_grouping_b(g_v, 97, 232))) { return false; } cursor = limit - v_1; // not, line 102 { v_2 = limit - cursor; lab0: do { // literal, line 102 if (!(eq_s_b(3, "gem"))) { break lab0; } return false; } while (false); cursor = limit - v_2; } // delete, line 102 slice_del(); // call undouble, line 103 if (!r_undouble()) { return false; } return true; } private boolean r_standard_suffix() { int among_var; int v_1; int v_2; int v_3; int v_4; int v_5; int v_6; int v_7; int v_8; int v_9; int v_10; // (, line 106 // do, line 107 v_1 = limit - cursor; lab0: do { // (, line 107 // [, line 108 ket = cursor; // substring, line 108 among_var = find_among_b(a_3, 5); if (among_var == 0) { break lab0; } // ], line 108 bra = cursor; switch(among_var) { case 0: break lab0; case 1: // (, line 110 // call R1, line 110 if (!r_R1()) { break lab0; } // <-, line 110 slice_from("heid"); break; case 2: // (, line 113 // call en_ending, line 113 if (!r_en_ending()) { break lab0; } break; case 3: // (, line 116 // call R1, line 116 if (!r_R1()) { break lab0; } if (!(out_grouping_b(g_v_j, 97, 232))) { break lab0; } // delete, line 116 slice_del(); break; } } while (false); cursor = limit - v_1; // do, line 120 v_2 = limit - cursor; lab1: do { // call e_ending, line 120 if (!r_e_ending()) { break lab1; } } while (false); cursor = limit - v_2; // do, line 122 v_3 = limit - cursor; lab2: do { // (, line 122 // [, line 122 ket = cursor; // literal, line 122 if (!(eq_s_b(4, "heid"))) { break lab2; } // ], line 122 bra = cursor; // call R2, line 122 if (!r_R2()) { break lab2; } // not, line 122 { v_4 = limit - cursor; lab3: do { // literal, line 122 if (!(eq_s_b(1, "c"))) { break lab3; } break lab2; } while (false); cursor = limit - v_4; } // delete, line 122 slice_del(); // [, line 123 ket = cursor; // literal, line 123 if (!(eq_s_b(2, "en"))) { break lab2; } // ], line 123 bra = cursor; // call en_ending, line 123 if (!r_en_ending()) { break lab2; } } while (false); cursor = limit - v_3; // do, line 126 v_5 = limit - cursor; lab4: do { // (, line 126 // [, line 127 ket = cursor; // substring, line 127 among_var = find_among_b(a_4, 6); if (among_var == 0) { break lab4; } // ], line 127 bra = cursor; switch(among_var) { case 0: break lab4; case 1: // (, line 129 // call R2, line 129 if (!r_R2()) { break lab4; } // delete, line 129 slice_del(); // or, line 130 lab5: do { v_6 = limit - cursor; lab6: do { // (, line 130 // [, line 130 ket = cursor; // literal, line 130 if (!(eq_s_b(2, "ig"))) { break lab6; } // ], line 130 bra = cursor; // call R2, line 130 if (!r_R2()) { break lab6; } // not, line 130 { v_7 = limit - cursor; lab7: do { // literal, line 130 if (!(eq_s_b(1, "e"))) { break lab7; } break lab6; } while (false); cursor = limit - v_7; } // delete, line 130 slice_del(); break lab5; } while (false); cursor = limit - v_6; // call undouble, line 130 if (!r_undouble()) { break lab4; } } while (false); break; case 2: // (, line 133 // call R2, line 133 if (!r_R2()) { break lab4; } // not, line 133 { v_8 = limit - cursor; lab8: do { // literal, line 133 if (!(eq_s_b(1, "e"))) { break lab8; } break lab4; } while (false); cursor = limit - v_8; } // delete, line 133 slice_del(); break; case 3: // (, line 136 // call R2, line 136 if (!r_R2()) { break lab4; } // delete, line 136 slice_del(); // call e_ending, line 136 if (!r_e_ending()) { break lab4; } break; case 4: // (, line 139 // call R2, line 139 if (!r_R2()) { break lab4; } // delete, line 139 slice_del(); break; case 5: // (, line 142 // call R2, line 142 if (!r_R2()) { break lab4; } // Boolean test e_found, line 142 if (!(B_e_found)) { break lab4; } // delete, line 142 slice_del(); break; } } while (false); cursor = limit - v_5; // do, line 146 v_9 = limit - cursor; lab9: do { // (, line 146 if (!(out_grouping_b(g_v_I, 73, 232))) { break lab9; } // test, line 148 v_10 = limit - cursor; // (, line 148 // among, line 149 if (find_among_b(a_5, 4) == 0) { break lab9; } if (!(out_grouping_b(g_v, 97, 232))) { break lab9; } cursor = limit - v_10; // [, line 152 ket = cursor; // next, line 152 if (cursor <= limit_backward) { break lab9; } cursor--; // ], line 152 bra = cursor; // delete, line 152 slice_del(); } while (false); cursor = limit - v_9; return true; } public boolean stem() { int v_1; int v_2; int v_3; int v_4; // (, line 157 // do, line 159 v_1 = cursor; lab0: do { // call prelude, line 159 if (!r_prelude()) { break lab0; } } while (false); cursor = v_1; // do, line 160 v_2 = cursor; lab1: do { // call mark_regions, line 160 if (!r_mark_regions()) { break lab1; } } while (false); cursor = v_2; // backwards, line 161 limit_backward = cursor; cursor = limit; // do, line 162 v_3 = limit - cursor; lab2: do { // call standard_suffix, line 162 if (!r_standard_suffix()) { break lab2; } } while (false); cursor = limit - v_3; cursor = limit_backward; // do, line 163 v_4 = cursor; lab3: do { // call postlude, line 163 if (!r_postlude()) { break lab3; } } while (false); cursor = v_4; return true; } public boolean equals( Object o ) { return o instanceof dutchStemmer; } public int hashCode() { return dutchStemmer.class.getName().hashCode(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/PorterStemmer.java0100664 0001750 0001750 00000031161 14135770370 032675 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* Porter stemmer in Java. The original paper is in Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, no. 3, pp 130-137, See also http://www.tartarus.org/~martin/PorterStemmer/index.html Bug 1 (reported by Gonzalo Parra 16/10/99) fixed as marked below. Tthe words 'aed', 'eed', 'oed' leave k at 'a' for step 3, and b[k-1] is then out outside the bounds of b. Similarly, Bug 2 (reported by Steve Dyrdahl 22/2/00) fixed as marked below. 'ion' by itself leaves j = -1 in the test for 'ion' in step 5, and b[j] is then outside the bounds of b. Release 3. [ This version is derived from Release 3, modified by Brian Goetz to optimize for fewer object creations. ] */ package opennlp.tools.stemmer; /** * * Stemmer, implementing the Porter Stemming Algorithm * * The Stemmer class transforms a word into its root form. The input * word can be provided a character at time (by calling add()), or at once * by calling one of the various stem(something) methods. */ // CHECKSTYLE:OFF public class PorterStemmer implements Stemmer { private char[] b; private int i, /* offset into b */ j, k, k0; private boolean dirty = false; private static final int INC = 50; public PorterStemmer() { b = new char[INC]; i = 0; } /** * reset() resets the stemmer so it can stem another word. If you invoke * the stemmer by calling add(char) and then stem(), you must call reset() * before starting another word. */ public void reset() { i = 0; dirty = false; } /** * Add a character to the word being stemmed. When you are finished * adding characters, you can call stem(void) to process the word. */ public void add(char ch) { if (b.length == i) { char[] new_b = new char[i+INC]; System.arraycopy(b, 0, new_b, 0, i); { b = new_b; } } b[i++] = ch; } /** * After a word has been stemmed, it can be retrieved by toString(), * or a reference to the internal buffer can be retrieved by getResultBuffer * and getResultLength (which is generally more efficient.) */ @Override public String toString() { return new String(b,0,i); } /** * Returns the length of the word resulting from the stemming process. */ public int getResultLength() { return i; } /** * Returns a reference to a character buffer containing the results of * the stemming process. You also need to consult getResultLength() * to determine the length of the result. */ public char[] getResultBuffer() { return b; } /* cons(i) is true <=> b[i] is a consonant. */ private boolean cons(int i) { switch (b[i]) { case 'a': case 'e': case 'i': case 'o': case 'u': return false; case 'y': return (i == k0) || !cons(i - 1); default: return true; } } /* m() measures the number of consonant sequences between k0 and j. if c is a consonant sequence and v a vowel sequence, and <..> indicates arbitrary presence, gives 0 vc gives 1 vcvc gives 2 vcvcvc gives 3 .... */ private int m() { int n = 0; int i = k0; while(true) { if (i > j) return n; if (! cons(i)) break; i++; } i++; while(true) { while(true) { if (i > j) return n; if (cons(i)) break; i++; } i++; n++; while(true) { if (i > j) return n; if (! cons(i)) break; i++; } i++; } } /* vowelinstem() is true <=> k0,...j contains a vowel */ private boolean vowelinstem() { int i; for (i = k0; i <= j; i++) if (! cons(i)) return true; return false; } /* doublec(j) is true <=> j,(j-1) contain a double consonant. */ private boolean doublec(int j) { return j >= k0 + 1 && b[j] == b[j - 1] && cons(j); } /* cvc(i) is true <=> i-2,i-1,i has the form consonant - vowel - consonant and also if the second c is not w,x or y. this is used when trying to restore an e at the end of a short word. e.g. cav(e), lov(e), hop(e), crim(e), but snow, box, tray. */ private boolean cvc(int i) { if (i < k0+2 || !cons(i) || cons(i-1) || !cons(i-2)) return false; else { int ch = b[i]; if (ch == 'w' || ch == 'x' || ch == 'y') return false; } return true; } private boolean ends(String s) { int l = s.length(); int o = k-l+1; if (o < k0) return false; for (int i = 0; i < l; i++) if (b[o+i] != s.charAt(i)) return false; j = k-l; return true; } /* setto(s) sets (j+1),...k to the characters in the string s, readjusting k. */ void setto(String s) { int l = s.length(); int o = j+1; for (int i = 0; i < l; i++) b[o+i] = s.charAt(i); k = j+l; dirty = true; } /* r(s) is used further down. */ void r(String s) { if (m() > 0) setto(s); } /* step1() gets rid of plurals and -ed or -ing. e.g. caresses -> caress ponies -> poni ties -> ti caress -> caress cats -> cat feed -> feed agreed -> agree disabled -> disable matting -> mat mating -> mate meeting -> meet milling -> mill messing -> mess meetings -> meet */ private void step1() { if (b[k] == 's') { if (ends("sses")) k -= 2; else if (ends("ies")) setto("i"); else if (b[k-1] != 's') k--; } if (ends("eed")) { if (m() > 0) k--; } else if ((ends("ed") || ends("ing")) && vowelinstem()) { k = j; if (ends("at")) setto("ate"); else if (ends("bl")) setto("ble"); else if (ends("iz")) setto("ize"); else if (doublec(k)) { int ch = b[k--]; if (ch == 'l' || ch == 's' || ch == 'z') k++; } else if (m() == 1 && cvc(k)) setto("e"); } } /* step2() turns terminal y to i when there is another vowel in the stem. */ private void step2() { if (ends("y") && vowelinstem()) { b[k] = 'i'; dirty = true; } } /* step3() maps double suffices to single ones. so -ization ( = -ize plus -ation) maps to -ize etc. note that the string before the suffix must give m() > 0. */ private void step3() { if (k == k0) return; /* For Bug 1 */ switch (b[k-1]) { case 'a': if (ends("ational")) { r("ate"); break; } if (ends("tional")) { r("tion"); break; } break; case 'c': if (ends("enci")) { r("ence"); break; } if (ends("anci")) { r("ance"); break; } break; case 'e': if (ends("izer")) { r("ize"); break; } break; case 'l': if (ends("bli")) { r("ble"); break; } if (ends("alli")) { r("al"); break; } if (ends("entli")) { r("ent"); break; } if (ends("eli")) { r("e"); break; } if (ends("ousli")) { r("ous"); break; } break; case 'o': if (ends("ization")) { r("ize"); break; } if (ends("ation")) { r("ate"); break; } if (ends("ator")) { r("ate"); break; } break; case 's': if (ends("alism")) { r("al"); break; } if (ends("iveness")) { r("ive"); break; } if (ends("fulness")) { r("ful"); break; } if (ends("ousness")) { r("ous"); break; } break; case 't': if (ends("aliti")) { r("al"); break; } if (ends("iviti")) { r("ive"); break; } if (ends("biliti")) { r("ble"); break; } break; case 'g': if (ends("logi")) { r("log"); break; } } } /* step4() deals with -ic-, -full, -ness etc. similar strategy to step3. */ private void step4() { switch (b[k]) { case 'e': if (ends("icate")) { r("ic"); break; } if (ends("ative")) { r(""); break; } if (ends("alize")) { r("al"); break; } break; case 'i': if (ends("iciti")) { r("ic"); break; } break; case 'l': if (ends("ical")) { r("ic"); break; } if (ends("ful")) { r(""); break; } break; case 's': if (ends("ness")) { r(""); break; } break; } } /* step5() takes off -ant, -ence etc., in context vcvc. */ private void step5() { if (k == k0) return; /* for Bug 1 */ switch (b[k-1]) { case 'a': if (ends("al")) break; return; case 'c': if (ends("ance")) break; if (ends("ence")) break; return; case 'e': if (ends("er")) break; return; case 'i': if (ends("ic")) break; return; case 'l': if (ends("able")) break; if (ends("ible")) break; return; case 'n': if (ends("ant")) break; if (ends("ement")) break; if (ends("ment")) break; /* element etc. not stripped before the m */ if (ends("ent")) break; return; case 'o': if (ends("ion") && j >= 0 && (b[j] == 's' || b[j] == 't')) break; /* j >= 0 fixes Bug 2 */ if (ends("ou")) break; return; /* takes care of -ous */ case 's': if (ends("ism")) break; return; case 't': if (ends("ate")) break; if (ends("iti")) break; return; case 'u': if (ends("ous")) break; return; case 'v': if (ends("ive")) break; return; case 'z': if (ends("ize")) break; return; default: return; } if (m() > 1) k = j; } /* step6() removes a final -e if m() > 1. */ private void step6() { j = k; if (b[k] == 'e') { int a = m(); if (a > 1 || a == 1 && !cvc(k-1)) k--; } if (b[k] == 'l' && doublec(k) && m() > 1) k--; } /** * Stem a word provided as a String. Returns the result as a String. */ public String stem(String s) { if (stem(s.toCharArray(), s.length())) return toString(); else return s; } /** * Stem a word provided as a CharSequence. * Returns the result as a CharSequence. */ public CharSequence stem(CharSequence word) { return stem(word.toString()); } /** Stem a word contained in a char[]. Returns true if the stemming process * resulted in a word different from the input. You can retrieve the * result with getResultLength()/getResultBuffer() or toString(). */ public boolean stem(char[] word) { return stem(word, word.length); } /** Stem a word contained in a portion of a char[] array. Returns * true if the stemming process resulted in a word different from * the input. You can retrieve the result with * getResultLength()/getResultBuffer() or toString(). */ public boolean stem(char[] wordBuffer, int offset, int wordLen) { reset(); if (b.length < wordLen) { b = new char[wordLen - offset]; } System.arraycopy(wordBuffer, offset, b, 0, wordLen); i = wordLen; return stem(0); } /** Stem a word contained in a leading portion of a char[] array. * Returns true if the stemming process resulted in a word different * from the input. You can retrieve the result with * getResultLength()/getResultBuffer() or toString(). */ public boolean stem(char[] word, int wordLen) { return stem(word, 0, wordLen); } /** Stem the word placed into the Stemmer buffer through calls to add(). * Returns true if the stemming process resulted in a word different * from the input. You can retrieve the result with * getResultLength()/getResultBuffer() or toString(). */ public boolean stem() { return stem(0); } public boolean stem(int i0) { k = i - 1; k0 = i0; if (k > k0+1) { step1(); step2(); step3(); step4(); step5(); step6(); } // Also, a word is considered dirty if we lopped off letters // Thanks to Ifigenia Vairelles for pointing this out. if (i != k+1) dirty = true; i = k+1; return dirty; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/stemmer/Stemmer.java0100664 0001750 0001750 00000001677 14135770370 031512 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.stemmer; /** * The stemmer is reducing a word to its stem. */ public interface Stemmer { CharSequence stem(CharSequence word); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_wordvector_F0100644 0000000 0000000 00000000162 14135770370 032663 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/FloatArrayVector.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/FloatArrayVector.0100664 0001750 0001750 00000003344 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; class FloatArrayVector implements WordVector { private final float[] vector; FloatArrayVector(float[] vector) { this.vector = vector; } @Override public WordVectorType getDataType() { return WordVectorType.FLOAT; } @Override public float getAsFloat(int index) { return vector[index]; } @Override public double getAsDouble(int index) { return getAsFloat(index); } @Override public FloatBuffer toFloatBuffer() { return FloatBuffer.wrap(vector).asReadOnlyBuffer(); } @Override public DoubleBuffer toDoubleBuffer() { double[] doubleVector = new double[vector.length]; for (int i = 0; i < doubleVector.length ; i++) { doubleVector[i] = vector[i]; } return DoubleBuffer.wrap(doubleVector).asReadOnlyBuffer(); } @Override public int dimension() { return vector.length; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/WordVector.java0100664 0001750 0001750 00000002442 14135770370 033662 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; import opennlp.tools.util.java.Experimental; /** * A word vector. * *

* Warning: Experimental new feature, see OPENNLP-1144 for details, the API might be changed anytime. */ @Experimental public interface WordVector { WordVectorType getDataType(); float getAsFloat(int index); double getAsDouble(int index); FloatBuffer toFloatBuffer(); DoubleBuffer toDoubleBuffer(); int dimension(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/Glove.java0100664 0001750 0001750 00000004775 14135770370 032653 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.HashMap; import java.util.Map; import opennlp.tools.util.java.Experimental; /** *

* Warning: Experimental new feature, see OPENNLP-1144 for details, the API might be changed anytime. */ @Experimental public class Glove { private Glove() { } /** * Parses a glove vector plain text file. *

* Warning: Experimental new feature, see OPENNLP-1144 for details, the API might be changed anytime. * * @param in the input stream for Glove vectors * @return a Glove based wv table * @throws IOException if any error occurs during parsing */ @Experimental public static WordVectorTable parse(InputStream in) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8), 1024 * 1024); Map vectors = new HashMap<>(); int dimension = -1; String line; while ((line = reader.readLine()) != null) { String[] parts = line.split(" "); if (dimension == -1) { dimension = parts.length - 1; } else if (dimension != parts.length - 1) { throw new IOException("Vector dimension must be constant!"); } String token = parts[0]; float[] vector = new float[dimension]; for (int i = 0; i < vector.length; i++) { vector[i] = Float.parseFloat(parts[i + 1]); } vectors.put(token, new FloatArrayVector(vector)); } return new MapWordVectorTable(Collections.unmodifiableMap(vectors)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_wordvector_W0100644 0000000 0000000 00000000161 14135770370 032703 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/WordVectorTable.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/WordVectorTable.j0100664 0001750 0001750 00000002316 14135770370 034142 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.util.Iterator; import opennlp.tools.util.java.Experimental; /** * A table that maps tokens to word vectors. * *

* Warning: Experimental new feature, see OPENNLP-1144 for details, the API might be changed anytime. */ @Experimental public interface WordVectorTable { WordVector get(String token); Iterator tokens(); int size(); int dimension(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_wordvector_D0100644 0000000 0000000 00000000163 14135770370 032662 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/DoubleArrayVector.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/DoubleArrayVector0100664 0001750 0001750 00000003364 14135770370 034244 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; class DoubleArrayVector implements WordVector { private final double[] vector; DoubleArrayVector(double[] vector) { this.vector = vector; } @Override public WordVectorType getDataType() { return WordVectorType.DOUBLE; } @Override public float getAsFloat(int index) { return (float) getAsDouble(index); } @Override public double getAsDouble(int index) { return vector[index]; } @Override public FloatBuffer toFloatBuffer() { float[] floatVector = new float[vector.length]; for (int i = 0; i < floatVector.length ; i++) { floatVector[i] = (float) vector[i]; } return FloatBuffer.wrap(floatVector).asReadOnlyBuffer(); } @Override public DoubleBuffer toDoubleBuffer() { return DoubleBuffer.wrap(vector).asReadOnlyBuffer(); } @Override public int dimension() { return vector.length; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_wordvector_W0100644 0000000 0000000 00000000160 14135770370 032702 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/WordVectorType.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/WordVectorType.ja0100664 0001750 0001750 00000001670 14135770370 034177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import opennlp.tools.util.java.Experimental; @Experimental public enum WordVectorType { FLOAT, DOUBLE; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_wordvector_M0100644 0000000 0000000 00000000164 14135770370 032674 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/MapWordVectorTable.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/wordvector/MapWordVectorTabl0100664 0001750 0001750 00000002746 14135770370 034212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.wordvector; import java.util.Iterator; import java.util.Map; class MapWordVectorTable implements WordVectorTable { private final Map vectors; MapWordVectorTable(Map vectors) { this.vectors = vectors; } @Override public WordVector get(String token) { return vectors.get(token); } @Override public Iterator tokens() { return vectors.keySet().iterator(); } @Override public int size() { return vectors.size(); } @Override public int dimension() { if (vectors.size() > 0) { return vectors.values().iterator().next().dimension(); } else { return -1; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/java/Experimental.java0100664 0001750 0001750 00000001715 14135770370 032746 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.java; import java.lang.annotation.Documented; /** * Indicates that the API is not stable. */ @Documented public @interface Experimental { } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/Cache.java0100664 0001750 0001750 00000002334 14135770370 030371 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.LinkedHashMap; import java.util.Map; /** * Provides fixed size, pre-allocated, least recently used replacement cache. */ public class Cache extends LinkedHashMap { private int capacity; public Cache(final int capacity) { this.capacity = capacity; } @Override protected boolean removeEldestEntry(Map.Entry eldest) { return this.size() > this.capacity; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/InvalidFormatException.java0100664 0001750 0001750 00000002475 14135770370 034012 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; /** * This exception indicates that a resource violates the expected data format. */ @SuppressWarnings("serial") public class InvalidFormatException extends IOException { public InvalidFormatException() { } public InvalidFormatException(String message) { super(message); } public InvalidFormatException(Throwable t) { super(); initCause(t); } public InvalidFormatException(String message, Throwable t) { super(message); initCause(t); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ParagraphStream.java0100664 0001750 0001750 00000003403 14135770370 032445 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; /** * Stream filter which merges text lines into paragraphs. The boundary of paragraph is defined * by an empty text line. If the last paragraph in the stream is not terminated by an empty line * the left over is assumed to be a paragraph. */ public class ParagraphStream extends FilterObjectStream { public ParagraphStream(ObjectStream lineStream) { super(lineStream); } public String read() throws IOException { StringBuilder paragraph = new StringBuilder(); while (true) { String line = samples.read(); // The last paragraph in the input might not // be terminated well with a new line at the end. if (line == null || line.equals("")) { if (paragraph.length() > 0) { return paragraph.toString(); } } else { paragraph.append(line).append('\n'); } if (line == null) return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/package-info.java0100664 0001750 0001750 00000001644 14135770370 031715 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package containing utility data structures and algorithms used by multiple other packages. */ package opennlp.tools.util; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/SequenceValidator.java0100664 0001750 0001750 00000003111 14135770370 032776 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; public interface SequenceValidator { /** * Determines whether a particular continuation of a sequence is valid. * This is used to restrict invalid sequences such as those used in start/continue tag-based chunking * or could be used to implement tag dictionary restrictions. * * @param i The index in the input sequence for which the new outcome is being proposed. * @param inputSequence The input sequence. * @param outcomesSequence The outcomes so far in this sequence. * @param outcome The next proposed outcome for the outcomes sequence. * * @return true is the sequence would still be valid with the new outcome, false otherwise. */ boolean validSequence(int i, T[] inputSequence, String[] outcomesSequence, String outcome); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/EventTraceStream.java0100664 0001750 0001750 00000002616 14135770370 032605 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.io.Writer; import opennlp.tools.ml.model.Event; public class EventTraceStream extends FilterObjectStream { private Writer writer; public EventTraceStream(ObjectStream stream, Writer writer) { super(stream); this.writer = writer; } public Event read() throws IOException { Event event = samples.read(); if (event != null) { writer.write(event.toString()); writer.write("\n"); } return event; } public void remove() { // TODO: not supported, should be removed ... } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/Sequence.java0100664 0001750 0001750 00000007430 14135770370 031140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; /** Represents a weighted sequence of outcomes. */ public class Sequence implements Comparable { private double score; private List outcomes; private List probs; private static final Double ONE = 1.0d; /** Creates a new sequence of outcomes. */ public Sequence() { outcomes = new ArrayList<>(1); probs = new ArrayList<>(1); score = 0d; } public Sequence(Sequence s) { outcomes = new ArrayList<>(s.outcomes.size() + 1); outcomes.addAll(s.outcomes); probs = new ArrayList<>(s.probs.size() + 1); probs.addAll(s.probs); score = s.score; } public Sequence(Sequence s,String outcome, double p) { outcomes = new ArrayList<>(s.outcomes.size() + 1); outcomes.addAll(s.outcomes); outcomes.add(outcome); probs = new ArrayList<>(s.probs.size() + 1); probs.addAll(s.probs); probs.add(p); score = s.score + StrictMath.log(p); } public Sequence(List outcomes) { this.outcomes = outcomes; this.probs = Collections.nCopies(outcomes.size(),ONE); } public int compareTo(Sequence s) { return Double.compare(s.score, score); } @Override public int hashCode() { return Objects.hash(outcomes, probs, score); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj instanceof Sequence) { Sequence other = (Sequence) obj; double epsilon = 0.0000001; return Objects.equals(outcomes, other.outcomes) && Objects.equals(probs, other.probs) && StrictMath.abs(score - other.score) < epsilon; } return false; } /** Adds an outcome and probability to this sequence. * @param outcome the outcome to be added. * @param p the probability associated with this outcome. */ public void add(String outcome, double p) { outcomes.add(outcome); probs.add(p); score += StrictMath.log(p); } /** Returns a list of outcomes for this sequence. * @return a list of outcomes. */ public List getOutcomes() { return outcomes; } /** Returns an array of probabilities associated with the outcomes of this sequence. * @return an array of probabilities. */ public double[] getProbs() { double[] ps = new double[probs.size()]; getProbs(ps); return ps; } /** * Returns the score of this sequence. * @return The score of this sequence. */ public double getScore() { return score; } /** Populates an array with the probabilities associated with the outcomes of this sequence. * @param ps a pre-allocated array to use to hold the values of the * probabilities of the outcomes for this sequence. */ public void getProbs(double[] ps) { for (int pi = 0, pl = probs.size(); pi < pl; pi++) { ps[pi] = probs.get(pi); } } @Override public String toString() { return score + " " + outcomes; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/MutableInt.java0100664 0001750 0001750 00000002050 14135770370 031425 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; /** * This is a non-thread safe mutable int. */ public class MutableInt { private int i; public MutableInt(int i) { this.i = i; } public void increment() { i++; } public int getValue() { return i; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_BeamSearchCo0100644 0000000 0000000 00000000161 14135770370 032473 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/BeamSearchContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/BeamSearchContextGenerator.j0100664 0001750 0001750 00000003105 14135770370 034101 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; /** * Interface for context generators used with a sequence beam search. */ public interface BeamSearchContextGenerator { /** Returns the context for the specified position in the specified sequence (list). * @param index The index of the sequence. * @param sequence The sequence of items over which the beam search is performed. * @param priorDecisions The sequence of decisions made prior to the context for * which this decision is being made. * @param additionalContext Any addition context specific to a class implementing this interface. * @return the context for the specified position in the specified sequence. */ String[] getContext(int index, T[] sequence, String[] priorDecisions, Object[] additionalContext); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/InputStreamFactory.java0100664 0001750 0001750 00000002207 14135770370 033170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.io.InputStream; /** * Allows repeated reads through a stream for certain types of model building. * Use {@code MockInputStreamFactory} MockInputStreamFactory for default * behavior. * */ public interface InputStreamFactory { InputStream createInputStream() throws IOException; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_MarkableFile0100644 0000000 0000000 00000000165 14135770370 032541 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/MarkableFileInputStreamFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/MarkableFileInputStreamFacto0100664 0001750 0001750 00000002705 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; /** * A factory that creates {@link MarkableFileInputStream} from a {@link File} */ public class MarkableFileInputStreamFactory implements InputStreamFactory { private File file; public MarkableFileInputStreamFactory(File file) throws FileNotFoundException { if (!file.exists()) { throw new FileNotFoundException("File '" + file + "' cannot be found"); } this.file = file; } @Override public InputStream createInputStream() throws IOException { return new MarkableFileInputStream(file); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/FilterObjectStream.java0100664 0001750 0001750 00000003101 14135770370 033107 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.util.Objects; /** * Abstract base class for filtering {@link ObjectStream}s. *

* Filtering streams take an existing stream and convert * its output to something else. * * @param the type of the source/input stream * @param the type of this stream */ public abstract class FilterObjectStream implements ObjectStream { protected final ObjectStream samples; protected FilterObjectStream(ObjectStream samples) { this.samples = Objects.requireNonNull(samples, "samples must not be null!"); } @Override public void reset() throws IOException, UnsupportedOperationException { samples.reset(); } @Override public void close() throws IOException { samples.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/Version.java0100664 0001750 0001750 00000013340 14135770370 031012 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.io.InputStream; import java.util.Objects; import java.util.Properties; /** * The {@link Version} class represents the OpenNlp Tools library version. *

* The version has three parts: *

    *
  • Major: OpenNlp Tools libraries with a different major version are not interchangeable.
  • *
  • Minor: OpenNlp Tools libraries with an identical major version, but different * minor version may be interchangeable. See release notes for further details.
  • *
  • Revision: OpenNlp Tools libraries with same major and minor version, but a different * revision, are fully interchangeable.
  • *
*/ public class Version { private static final String DEV_VERSION_STRING = "0.0.0-SNAPSHOT"; public static final Version DEV_VERSION = Version.parse(DEV_VERSION_STRING); private static final String SNAPSHOT_MARKER = "-SNAPSHOT"; private final int major; private final int minor; private final int revision; private final boolean snapshot; /** * Initializes the current instance with the provided * versions. * * @param major * @param minor * @param revision * @param snapshot */ public Version(int major, int minor, int revision, boolean snapshot) { this.major = major; this.minor = minor; this.revision = revision; this.snapshot = snapshot; } /** * Initializes the current instance with the provided * versions. The version will not be a snapshot version. * * @param major * @param minor * @param revision */ public Version(int major, int minor, int revision) { this(major, minor, revision, false); } /** * Retrieves the major version. * * @return major version */ public int getMajor() { return major; } /** * Retrieves the minor version. * * @return minor version */ public int getMinor() { return minor; } /** * Retrieves the revision version. * * @return revision version */ public int getRevision() { return revision; } public boolean isSnapshot() { return snapshot; } /** * Retrieves the version string. * * The {@link #parse(String)} method can create an instance * of {@link Version} with the returned version value string. * * @return the version value string */ @Override public String toString() { return Integer.toString(getMajor()) + "." + Integer.toString(getMinor()) + "." + Integer.toString(getRevision()) + (isSnapshot() ? SNAPSHOT_MARKER : ""); } @Override public int hashCode() { return Objects.hash(getMajor(), getMinor(), getRevision(), isSnapshot()); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof Version) { Version version = (Version) obj; return getMajor() == version.getMajor() && getMinor() == version.getMinor() && getRevision() == version.getRevision() && isSnapshot() == version.isSnapshot(); } return false; } /** * Return a new {@link Version} initialized to the value * represented by the specified {@link String} * * @param version the string to be parsed * * @return the version represented by the string value * * @throws NumberFormatException if the string does * not contain a valid version */ public static Version parse(String version) { int indexFirstDot = version.indexOf('.'); int indexSecondDot = version.indexOf('.', indexFirstDot + 1); if (indexFirstDot == -1 || indexSecondDot == -1) { throw new NumberFormatException("Invalid version format '" + version + "', expected two dots!"); } int indexFirstDash = version.indexOf('-'); int versionEnd; if (indexFirstDash == -1) { versionEnd = version.length(); } else { versionEnd = indexFirstDash; } boolean snapshot = version.endsWith(SNAPSHOT_MARKER); return new Version(Integer.parseInt(version.substring(0, indexFirstDot)), Integer.parseInt(version.substring(indexFirstDot + 1, indexSecondDot)), Integer.parseInt(version.substring(indexSecondDot + 1, versionEnd)), snapshot); } /** * Retrieves the current version of the OpenNlp Tools library. * * @return the current version */ public static Version currentVersion() { Properties manifest = new Properties(); // Try to read the version from the version file if it is available, // otherwise set the version to the development version try (InputStream versionIn = Version.class.getResourceAsStream("opennlp.version")) { if (versionIn != null) { manifest.load(versionIn); } } catch (IOException e) { // ignore error } String versionString = manifest.getProperty("OpenNLP-Version", DEV_VERSION_STRING); if (versionString.equals("${project.version}")) versionString = DEV_VERSION_STRING; return Version.parse(versionString); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/Span.java0100664 0001750 0001750 00000023667 14135770370 030303 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.Serializable; import java.util.Objects; /** * Class for storing start and end integer offsets. * */ public class Span implements Comparable, Serializable { private final int start; private final int end; private final double prob;//default is 0 private final String type; /** * Initializes a new Span Object. Sets the prob to 0 as default. * * @param s start of span. * @param e end of span, which is +1 more than the last element in the span. * @param type the type of the span */ public Span(int s, int e, String type) { this(s, e, type, 0d); } /** * Initializes a new Span Object. * * @param s start of span. * @param e end of span, which is +1 more than the last element in the span. * @param type the type of the span * @param prob probability of span. */ public Span(int s, int e, String type, double prob) { if (s < 0) { throw new IllegalArgumentException("start index must be zero or greater: " + s); } if (e < 0) { throw new IllegalArgumentException("end index must be zero or greater: " + e); } if (s > e) { throw new IllegalArgumentException("start index must not be larger than end index: " + "start=" + s + ", end=" + e); } start = s; end = e; this.prob = prob; this.type = type; } /** * Initializes a new Span Object. Sets the prob to 0 as default * * @param s start of span. * @param e end of span. */ public Span(int s, int e) { this(s, e, null, 0d); } /** * * @param s the start of the span (the token index, not the char index) * @param e the end of the span (the token index, not the char index) * @param prob */ public Span(int s, int e, double prob) { this(s, e, null, prob); } /** * Initializes a new Span object with an existing Span which is shifted by an * offset. * * @param span * @param offset */ public Span(Span span, int offset) { this(span.start + offset, span.end + offset, span.getType(), span.getProb()); } /** * Creates a new immutable span based on an existing span, where the existing span did not include the prob * @param span the span that has no prob or the prob is incorrect and a new Span must be generated * @param prob the probability of the span */ public Span(Span span, double prob) { this(span.start, span.end, span.getType(), prob); } /** * Return the start of a span. * * @return the start of a span. * */ public int getStart() { return start; } /** * Return the end of a span. * * Note: that the returned index is one past the actual end of the span in the * text, or the first element past the end of the span. * * @return the end of a span. * */ public int getEnd() { return end; } /** * Retrieves the type of the span. * * @return the type or null if not set */ public String getType() { return type; } /** * Returns the length of this span. * * @return the length of the span. */ public int length() { return end - start; } /** * Returns true if the specified span is contained by this span. Identical * spans are considered to contain each other. * * @param s The span to compare with this span. * * @return true is the specified span is contained by this span; false otherwise. */ public boolean contains(Span s) { return start <= s.getStart() && s.getEnd() <= end; } /** * Returns true if the specified index is contained inside this span. An index * with the value of end is considered outside the span. * * @param index the index to test with this span. * * @return true if the span contains this specified index; false otherwise. */ public boolean contains(int index) { return start <= index && index < end; } /** * Returns true if the specified span is the begin of this span and the * specified span is contained in this span. * * @param s The span to compare with this span. * * @return true if the specified span starts with this span and is contained * in this span; false otherwise */ public boolean startsWith(Span s) { return getStart() == s.getStart() && contains(s); } /** * Returns true if the specified span intersects with this span. * * @param s The span to compare with this span. * * @return true is the spans overlap; false otherwise. */ public boolean intersects(Span s) { int sstart = s.getStart(); //either s's start is in this or this' start is in s return this.contains(s) || s.contains(this) || getStart() <= sstart && sstart < getEnd() || sstart <= getStart() && getStart() < s.getEnd(); } /** * Returns true is the specified span crosses this span. * * @param s The span to compare with this span. * * @return true is the specified span overlaps this span and contains a * non-overlapping section; false otherwise. */ public boolean crosses(Span s) { int sstart = s.getStart(); //either s's start is in this or this' start is in s return !this.contains(s) && !s.contains(this) && (getStart() <= sstart && sstart < getEnd() || sstart <= getStart() && getStart() < s.getEnd()); } /** * Retrieves the string covered by the current span of the specified text. * * @param text * * @return the substring covered by the current span */ public CharSequence getCoveredText(CharSequence text) { if (getEnd() > text.length()) { throw new IllegalArgumentException("The span " + this + " is outside the given text which has length " + text.length() + "!"); } return text.subSequence(getStart(), getEnd()); } /** * Return a copy of this span with leading and trailing white spaces removed. * * @param text * * @return the trimmed span or the same object if already trimmed */ public Span trim(CharSequence text) { int newStartOffset = getStart(); for (int i = getStart(); i < getEnd() && StringUtil.isWhitespace(text.charAt(i)); i++) { newStartOffset++; } int newEndOffset = getEnd(); for (int i = getEnd(); i > getStart() && StringUtil.isWhitespace(text.charAt(i - 1)); i--) { newEndOffset--; } if (newStartOffset == getStart() && newEndOffset == getEnd()) { return this; } else if (newStartOffset > newEndOffset) { return new Span(getStart(), getStart(), getType()); } else { return new Span(newStartOffset, newEndOffset, getType()); } } /** * Compares the specified span to the current span. */ public int compareTo(Span s) { if (getStart() < s.getStart()) { return -1; } else if (getStart() == s.getStart()) { if (getEnd() > s.getEnd()) { return -1; } else if (getEnd() < s.getEnd()) { return 1; } else { // compare the type if (getType() == null && s.getType() == null) { return 0; } else if (getType() != null && s.getType() != null) { // use type lexicography order return getType().compareTo(s.getType()); } else if (getType() != null) { return -1; } return 1; } } else { return 1; } } /** * Generates a hash code of the current span. */ @Override public int hashCode() { return Objects.hash(getStart(), getEnd(), getType()); } /** * Checks if the specified span is equal to the current span. */ @Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Span) { Span s = (Span) o; return getStart() == s.getStart() && getEnd() == s.getEnd() && Objects.equals(getType(), s.getType()); } return false; } /** * Generates a human readable string. */ @Override public String toString() { StringBuilder toStringBuffer = new StringBuilder(15); toStringBuffer.append("["); toStringBuffer.append(getStart()); toStringBuffer.append(".."); toStringBuffer.append(getEnd()); toStringBuffer.append(")"); if (getType() != null) { toStringBuffer.append(" "); toStringBuffer.append(getType()); } return toStringBuffer.toString(); } /** * Converts an array of {@link Span}s to an array of {@link String}s. * * @param spans * @param s * @return the strings */ public static String[] spansToStrings(Span[] spans, CharSequence s) { String[] tokens = new String[spans.length]; for (int si = 0, sl = spans.length; si < sl; si++) { tokens[si] = spans[si].getCoveredText(s).toString(); } return tokens; } public static String[] spansToStrings(Span[] spans, String[] tokens) { String[] chunks = new String[spans.length]; StringBuilder cb = new StringBuilder(); for (int si = 0, sl = spans.length; si < sl; si++) { cb.setLength(0); for (int ti = spans[si].getStart(); ti < spans[si].getEnd(); ti++) { cb.append(tokens[ti]).append(" "); } chunks[si] = cb.substring(0, cb.length() - 1); } return chunks; } public double getProb() { return prob; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ReverseListIterator.java0100664 0001750 0001750 00000002554 14135770370 033353 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Iterator; import java.util.List; /** * An iterator for a list which returns values in the opposite order as the typical list iterator. */ public class ReverseListIterator implements Iterator { private int index; private List list; public ReverseListIterator(List list) { index = list.size() - 1; this.list = list; } public T next() { return list.get(index--); } public boolean hasNext() { return index >= 0; } public void remove() { throw new UnsupportedOperationException(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ObjectStream.java0100664 0001750 0001750 00000006065 14135770370 031755 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.io.ObjectStreamException; /** * Reads Objects from a stream. *

* Design Decision:
* This interface provides a means for iterating over the * objects in a stream, it does not implement {@link java.util.Iterator} or * {@link Iterable} because: *

    *
  • {@link java.util.Iterator#next()} and * {@link java.util.Iterator#hasNext()} are declared as throwing no checked * exceptions. Thus the {@link IOException}s thrown by {@link #read()} would * have to be wrapped in {@link RuntimeException}s, and the compiler would be * unable to force users of this code to catch such exceptions.
  • *
  • Implementing {@link Iterable} would mean either silently calling * {@link #reset()} to guarantee that all items were always seen on each * iteration, or documenting that the Iterable only iterates over the remaining * elements of the ObjectStream. In either case, users not reading the * documentation carefully might run into unexpected behavior.
  • *
* * @see ObjectStreamException */ public interface ObjectStream extends AutoCloseable { /** * Returns the next object. Calling this method repeatedly until it returns * null will return each object from the underlying source exactly once. * * @return the next object or null to signal that the stream is exhausted * * @throws IOException if there is an error during reading */ T read() throws IOException; /** * Repositions the stream at the beginning and the previously seen object sequence * will be repeated exactly. This method can be used to re-read * the stream if multiple passes over the objects are required. * * The implementation of this method is optional. * * @throws IOException if there is an error during reseting the stream */ default void reset() throws IOException, UnsupportedOperationException { throw new UnsupportedOperationException("reset is not supported on this stream"); } /** * Closes the ObjectStream and releases all allocated * resources. After close was called its not allowed to call * read or reset. * * @throws IOException if there is an error during closing the stream */ default void close() throws IOException {} } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/StringList.java0100664 0001750 0001750 00000010104 14135770370 031462 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Arrays; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Objects; /** * The {@link StringList} is an immutable list of {@link String}s. */ public class StringList implements Iterable { private String[] tokens; /** * Initializes the current instance. * * Note:
* Token String will be replaced by identical internal String object. * * @param singleToken one single token */ public StringList(String singleToken) { tokens = new String[]{singleToken.intern()}; } /** * Initializes the current instance. * * Note:
* Token Strings will be replaced by identical internal String object. * * @param tokens the string parts of the new {@link StringList}, an empty * tokens array or null is not permitted. */ public StringList(String... tokens) { Objects.requireNonNull(tokens, "tokens must not be null"); if (tokens.length == 0) { throw new IllegalArgumentException("tokens must not be empty"); } this.tokens = new String[tokens.length]; for (int i = 0; i < tokens.length; i++) { this.tokens[i] = tokens[i].intern(); } } /** * Retrieves a token from the given index. * * @param index * * @return token at the given index */ public String getToken(int index) { return tokens[index]; } /** * Retrieves the number of tokens inside this list. * * @return number of tokens */ public int size() { return tokens.length; } /** * Retrieves an {@link Iterator} over all tokens. * * @return iterator over tokens */ public Iterator iterator() { return new Iterator() { private int index; public boolean hasNext() { return index < size(); } public String next() { if (hasNext()) { return getToken(index++); } else { throw new NoSuchElementException(); } } public void remove() { throw new UnsupportedOperationException(); } }; } /** * Compares to tokens list and ignores the case of the tokens. * * Note: This can cause problems with some locals. * * @param tokens * * @return true if identically with ignore the case otherwise false */ public boolean compareToIgnoreCase(StringList tokens) { if (size() == tokens.size()) { for (int i = 0; i < size(); i++) { if (getToken(i).compareToIgnoreCase( tokens.getToken(i)) != 0) { return false; } } } else { return false; } return true; } @Override public int hashCode() { return Arrays.hashCode(tokens); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof StringList) { StringList tokenList = (StringList) obj; return Arrays.equals(tokens, tokenList.tokens); } return false; } @Override public String toString() { StringBuilder string = new StringBuilder(); string.append('['); for (int i = 0; i < size(); i++) { string.append(getToken(i)); if (i < size() - 1) { string.append(','); } } string.append(']'); return string.toString(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_C0100644 0000000 0000000 00000000170 14135770370 032643 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/CharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/CharSequenceNorma0100664 0001750 0001750 00000002515 14135770370 034174 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.io.Serializable; /** * A char sequence normalizer, used to adjusting (prune, substitute, add, etc.) * characters in order to remove noise from text * * @see
Text normalization * */ public interface CharSequenceNormalizer extends Serializable { /** * normalize a sequence of characters * @param text the char sequence to normalize * @return the normalized char sequence */ CharSequence normalize(CharSequence text); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_N0100644 0000000 0000000 00000000176 14135770370 032664 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/NumberCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/NumberCharSequenc0100664 0001750 0001750 00000002521 14135770370 034200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.util.regex.Pattern; /** * Normalizer for numbers */ public class NumberCharSequenceNormalizer implements CharSequenceNormalizer { private static final Pattern NUMBER_REGEX = Pattern.compile("\\d+"); private static final NumberCharSequenceNormalizer INSTANCE = new NumberCharSequenceNormalizer(); public static NumberCharSequenceNormalizer getInstance() { return INSTANCE; } public CharSequence normalize (CharSequence text) { return NUMBER_REGEX.matcher(text).replaceAll(" "); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_A0100644 0000000 0000000 00000000201 14135770370 032634 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/AggregateCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/AggregateCharSequ0100664 0001750 0001750 00000002425 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; public class AggregateCharSequenceNormalizer implements CharSequenceNormalizer { private final CharSequenceNormalizer[] normalizers; public AggregateCharSequenceNormalizer(CharSequenceNormalizer ... normalizers) { this.normalizers = normalizers; } public CharSequence normalize (CharSequence text) { for (CharSequenceNormalizer normalizers : normalizers) { text = normalizers.normalize(text); } return text; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_E0100644 0000000 0000000 00000000175 14135770370 032652 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/EmojiCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/EmojiCharSequence0100664 0001750 0001750 00000002556 14135770370 034170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.util.regex.Pattern; /** * Normalizer for emojis. */ public class EmojiCharSequenceNormalizer implements CharSequenceNormalizer { private static final EmojiCharSequenceNormalizer INSTANCE = new EmojiCharSequenceNormalizer(); public static EmojiCharSequenceNormalizer getInstance() { return INSTANCE; } private static final Pattern EMOJI_REGEX = Pattern.compile("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+"); public CharSequence normalize (CharSequence text) { return EMOJI_REGEX.matcher(text).replaceAll(" "); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_S0100644 0000000 0000000 00000000176 14135770370 032671 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/ShrinkCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/ShrinkCharSequenc0100664 0001750 0001750 00000003104 14135770370 034204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.util.regex.Pattern; /** * Normalizer to shrink repeated spaces / chars */ public class ShrinkCharSequenceNormalizer implements CharSequenceNormalizer { private static final Pattern REPEATED_CHAR_REGEX = Pattern.compile("(.)\\1{2,}", Pattern.CASE_INSENSITIVE); private static final Pattern SPACE_REGEX = Pattern.compile("\\s{2,}", Pattern.CASE_INSENSITIVE); private static final ShrinkCharSequenceNormalizer INSTANCE = new ShrinkCharSequenceNormalizer(); public static ShrinkCharSequenceNormalizer getInstance() { return INSTANCE; } public CharSequence normalize (CharSequence text) { text = SPACE_REGEX.matcher(text).replaceAll(" "); return REPEATED_CHAR_REGEX.matcher(text).replaceAll("$1$1").trim(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_T0100644 0000000 0000000 00000000177 14135770370 032673 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/TwitterCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/TwitterCharSequen0100664 0001750 0001750 00000003661 14135770370 034255 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.util.regex.Pattern; /** * Normalizer for Twitter character sequences */ public class TwitterCharSequenceNormalizer implements CharSequenceNormalizer { private static final Pattern HASH_USER_REGEX = Pattern.compile("[#@]\\S+"); private static final Pattern RT_REGEX = Pattern.compile("\\b(rt[ :])+", Pattern.CASE_INSENSITIVE); private static final Pattern FACE_REGEX = Pattern.compile("[:;x]-?[()dop]", Pattern.CASE_INSENSITIVE); private static final Pattern LAUGH_REGEX = Pattern.compile("([hj])+([aieou])+(\\1+\\2+)+", Pattern.CASE_INSENSITIVE); private static final TwitterCharSequenceNormalizer INSTANCE = new TwitterCharSequenceNormalizer(); public static TwitterCharSequenceNormalizer getInstance() { return INSTANCE; } public CharSequence normalize (CharSequence text) { String modified = HASH_USER_REGEX.matcher(text).replaceAll(" "); modified = RT_REGEX.matcher(modified).replaceAll(" "); modified = FACE_REGEX.matcher(modified).replaceAll(" "); modified = LAUGH_REGEX.matcher(modified).replaceAll("$1$2$1$2"); return modified; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_normalizer_U0100644 0000000 0000000 00000000173 14135770370 032670 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/UrlCharSequenceNormalizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/normalizer/UrlCharSequenceNo0100664 0001750 0001750 00000003064 14135770370 034157 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.normalizer; import java.util.regex.Pattern; /** * Normalizer that removes URls and email addresses. */ public class UrlCharSequenceNormalizer implements CharSequenceNormalizer { private static final Pattern URL_REGEX = Pattern.compile("https?://[-_.?&~;+=/#0-9A-Za-z]+"); private static final Pattern MAIL_REGEX = Pattern.compile("[-_.0-9A-Za-z]+@[-_0-9A-Za-z]+[-_.0-9A-Za-z]+"); private static final UrlCharSequenceNormalizer INSTANCE = new UrlCharSequenceNormalizer(); public static UrlCharSequenceNormalizer getInstance() { return INSTANCE; } public CharSequence normalize (CharSequence text) { String modified = URL_REGEX.matcher(text).replaceAll(" "); return MAIL_REGEX.matcher(modified).replaceAll(" "); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/PlainTextByLineStream.java0100664 0001750 0001750 00000004071 14135770370 033555 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.Objects; /** * Reads a plain text file and return each line as a String object. */ public class PlainTextByLineStream implements ObjectStream { private final Charset encoding; private InputStreamFactory inputStreamFactory; private BufferedReader in; public PlainTextByLineStream(InputStreamFactory inputStreamFactory, String charsetName) throws IOException { this(inputStreamFactory, Charset.forName(charsetName)); } public PlainTextByLineStream(InputStreamFactory inputStreamFactory, Charset charset) throws IOException { this.inputStreamFactory = Objects.requireNonNull(inputStreamFactory, "inputStreamFactory must not be null!"); this.encoding = charset; reset(); } public String read() throws IOException { return in.readLine(); } public void reset() throws IOException { in = new BufferedReader(new InputStreamReader(inputStreamFactory.createInputStream(), encoding)); } public void close() throws IOException { if (in != null) { in.close(); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/AbstractEventStream.java0100664 0001750 0001750 00000004347 14135770370 033315 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.util.Collections; import java.util.Iterator; import opennlp.tools.ml.model.Event; public abstract class AbstractEventStream implements ObjectStream { private ObjectStream samples; private Iterator events = Collections.emptyList().iterator(); /** * Initializes the current instance with a sample {@link Iterator}. * * @param samples the sample {@link Iterator}. */ public AbstractEventStream(ObjectStream samples) { this.samples = samples; } /** * Creates events for the provided sample. * * @param sample the sample for which training {@link Event}s * are be created. * * @return an {@link Iterator} of training events or * an empty {@link Iterator}. */ protected abstract Iterator createEvents(T sample); @Override public final Event read() throws IOException { if (events.hasNext()) { return events.next(); } else { T sample; while (!events.hasNext() && (sample = samples.read()) != null) { events = createEvents(sample); } if (events.hasNext()) { return read(); } } return null; } @Override public void reset() throws IOException, UnsupportedOperationException { events = Collections.emptyIterator(); samples.reset(); } @Override public void close() throws IOException { samples.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java0100664 0001750 0001750 00000010635 14135770370 032431 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.HashMap; import java.util.Map; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.model.ArtifactProvider; import opennlp.tools.util.model.ArtifactSerializer; /** * Base class for all tool factories. * * Extensions of this class should: *
    *
  • implement an empty constructor (TODO is it necessary?) *
  • implement a constructor that takes the {@link ArtifactProvider} and * calls {@code BaseToolFactory(Map)} *
  • override {@link #createArtifactMap()} and * {@link #createArtifactSerializersMap()} methods if necessary. *
*/ public abstract class BaseToolFactory { protected ArtifactProvider artifactProvider; /** * All sub-classes should have an empty constructor */ public BaseToolFactory() { } /** * Initializes the ToolFactory with an artifact provider. */ protected void init(ArtifactProvider artifactProvider) { this.artifactProvider = artifactProvider; } /** * Creates a {@link Map} with pairs of keys and {@link ArtifactSerializer}. * The models implementation should call this method from * {@code BaseModel#createArtifactSerializersMap} *

* The base implementation will return a {@link HashMap} that should be * populated by sub-classes. */ @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { return new HashMap<>(); } /** * Creates a {@link Map} with pairs of keys and objects. The models * implementation should call this constructor that creates a model * programmatically. *

* The base implementation will return a {@link HashMap} that should be * populated by sub-classes. */ public Map createArtifactMap() { return new HashMap<>(); } /** * Creates the manifest entries that will be added to the model manifest * * @return the manifest entries to added to the model manifest */ public Map createManifestEntries() { return new HashMap<>(); } /** * Validates the parsed artifacts. If something is not * valid subclasses should throw an {@link InvalidFormatException}. * * Note: * Subclasses should generally invoke super.validateArtifactMap at the beginning * of this method. * * @throws InvalidFormatException */ public abstract void validateArtifactMap() throws InvalidFormatException; public static BaseToolFactory create(String subclassName, ArtifactProvider artifactProvider) throws InvalidFormatException { BaseToolFactory theFactory; try { // load the ToolFactory using the default constructor theFactory = ExtensionLoader.instantiateExtension(BaseToolFactory.class, subclassName); if (theFactory != null) { theFactory.init(artifactProvider); } } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; throw new InvalidFormatException(msg, e); } return theFactory; } public static BaseToolFactory create(Class factoryClass, ArtifactProvider artifactProvider) throws InvalidFormatException { BaseToolFactory theFactory = null; if (factoryClass != null) { try { theFactory = factoryClass.newInstance(); theFactory.init(artifactProvider); } catch (Exception e) { String msg = "Could not instantiate the " + factoryClass.getCanonicalName() + ". The initialization throw an exception."; throw new InvalidFormatException(msg, e); } } return theFactory; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ResetableIterator.java0100664 0001750 0001750 00000002157 14135770370 033011 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Iterator; /** * This interface makes an {@link Iterator} resetable. */ public interface ResetableIterator extends Iterator { /** * Sets the {@link Iterator} back to the first retrieved element, * the seen sequence of elements must be repeated. */ void reset(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/ExtensionLoader.java0100664 0001750 0001750 00000010331 14135770370 033265 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.ext; import java.lang.reflect.Field; /** * The {@link ExtensionLoader} is responsible to load extensions to the OpenNLP library. *

* Note: Do not use this class, internal use only! */ public class ExtensionLoader { private static boolean isOsgiAvailable = false; private ExtensionLoader() { } static boolean isOSGiAvailable() { return isOsgiAvailable; } static void setOSGiAvailable() { isOsgiAvailable = true; } // Pass in the type (interface) of the class to load /** * Instantiates an user provided extension to OpenNLP. *

* The extension is either loaded from the class path or if running * inside an OSGi environment via an OSGi service. *

* Initially it tries using the public default * constructor. If it is not found, it will check if the class follows the singleton * pattern: a static field named INSTANCE that returns an object of the type * T. * * @param clazz * @param extensionClassName * * @return the instance of the extension class */ // TODO: Throw custom exception if loading fails ... @SuppressWarnings("unchecked") public static T instantiateExtension(Class clazz, String extensionClassName) { // First try to load extension and instantiate extension from class path try { Class extClazz = Class.forName(extensionClassName); if (clazz.isAssignableFrom(extClazz)) { try { return (T) extClazz.newInstance(); } catch (InstantiationException e) { throw new ExtensionNotLoadedException(e); } catch (IllegalAccessException e) { // constructor is private. Try to load using INSTANCE Field instanceField; try { instanceField = extClazz.getDeclaredField("INSTANCE"); } catch (NoSuchFieldException | SecurityException e1) { throw new ExtensionNotLoadedException(e1); } if (instanceField != null) { try { return (T) instanceField.get(null); } catch (IllegalArgumentException | IllegalAccessException e1) { throw new ExtensionNotLoadedException(e1); } } throw new ExtensionNotLoadedException(e); } } else { throw new ExtensionNotLoadedException("Extension class '" + extClazz.getName() + "' needs to have type: " + clazz.getName()); } } catch (ClassNotFoundException e) { // Class is not on classpath } // Loading from class path failed // Either something is wrong with the class name or OpenNLP is // running in an OSGi environment. The extension classes are not // on our classpath in this case. // In OSGi we need to use services to get access to extensions. // Determine if OSGi class is on class path // Now load class which depends on OSGi API if (isOsgiAvailable) { // The OSGIExtensionLoader class will be loaded when the next line // is executed, but not prior, and that is why it is safe to directly // reference it here. OSGiExtensionLoader extLoader = OSGiExtensionLoader.getInstance(); return extLoader.getExtension(clazz, extensionClassName); } throw new ExtensionNotLoadedException("Unable to find implementation for " + clazz.getName() + ", the class or service " + extensionClassName + " could not be located!"); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_ext_Extensio0100644 0000000 0000000 00000000166 14135770370 032702 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/ExtensionNotLoadedException.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/ExtensionNotLoadedExcept0100664 0001750 0001750 00000003001 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.ext; /** * Exception indicates that an OpenNLP extension could not be loaded. */ @SuppressWarnings("serial") public class ExtensionNotLoadedException extends RuntimeException { private final boolean isOSGiEnvironment; public ExtensionNotLoadedException(String message) { super(message); isOSGiEnvironment = ExtensionLoader.isOSGiAvailable(); } public ExtensionNotLoadedException(Throwable t) { super(t); isOSGiEnvironment = ExtensionLoader.isOSGiAvailable(); } /** * Indicates if OpenNLP is running in an OSGi environment or not. * * @return true if running in an OSGi environment */ public boolean isOSGiEnvironment() { return isOSGiEnvironment; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/package-info.java0100664 0001750 0001750 00000001570 14135770370 032513 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package containing extension loading code. */ package opennlp.tools.util.ext; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_ext_OSGiExte0100644 0000000 0000000 00000000156 14135770370 032532 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/OSGiExtensionLoader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/OSGiExtensionLoader.java0100664 0001750 0001750 00000005476 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.ext; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Filter; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.InvalidSyntaxException; import org.osgi.util.tracker.ServiceTracker; /** * OSGi bundle activator which can use an OSGi service as * an OpenNLP extension. *

* Note: Do not use this class, internal use only! */ public class OSGiExtensionLoader implements BundleActivator { private static OSGiExtensionLoader instance; private BundleContext context; public void start(BundleContext context) throws Exception { instance = this; this.context = context; ExtensionLoader.setOSGiAvailable(); } public void stop(BundleContext context) throws Exception { instance = null; this.context = null; } /** * Retrieves the * * @param clazz * @param id * @return */ T getExtension(Class clazz, String id) { if (context == null) { throw new IllegalStateException("OpenNLP Tools Bundle is not active!"); } Filter filter; try { filter = FrameworkUtil.createFilter("(&(objectclass=" + clazz.getName() + ")(" + "opennlp" + "=" + id + "))"); } catch (InvalidSyntaxException e) { // Might happen when the provided IDs are invalid in some way. throw new ExtensionNotLoadedException(e); } // NOTE: In 4.3 the parameters are ServiceTracker extensionTracker = new ServiceTracker(context, filter, null); T extension = null; try { extensionTracker.open(); try { extension = (T) extensionTracker.waitForService(30000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } finally { extensionTracker.close(); } if (extension == null) { throw new ExtensionNotLoadedException("No suitable extension found. Extension name: " + id); } return extension; } static OSGiExtensionLoader getInstance() { return instance; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_ext_Extensio0100644 0000000 0000000 00000000157 14135770370 032702 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/ExtensionServiceKeys.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ext/ExtensionServiceKeys.jav0100664 0001750 0001750 00000002014 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.ext; public class ExtensionServiceKeys { /** * Property key for the unique id which identifies an * OSGi OpenNLP extension service. */ public static final String ID = "OPENLP_EXTENSION_ID"; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/ObjectStreamUtils.java0100664 0001750 0001750 00000011074 14135770370 032772 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.util.Collection; import java.util.Iterator; public class ObjectStreamUtils { /** * Creates an {@link ObjectStream} form an array. * * @param * @param array * * @return the object stream over the array elements */ @SafeVarargs public static ObjectStream createObjectStream(final T... array) { return new ObjectStream() { private int index = 0; public T read() { if (index < array.length) return array[index++]; else return null; } public void reset() { index = 0; } public void close() { } }; } /** * Creates an {@link ObjectStream} form a collection. * * @param * @param collection * * @return the object stream over the collection elements */ public static ObjectStream createObjectStream(final Collection collection) { return new ObjectStream() { private Iterator iterator = collection.iterator(); public T read() { if (iterator.hasNext()) return iterator.next(); else return null; } public void reset() { iterator = collection.iterator(); } public void close() { } }; } /** * Creates a single concatenated ObjectStream from multiple individual * ObjectStreams with the same type. * * @param streams * @return */ public static ObjectStream concatenateObjectStream(final Collection> streams) { // We may want to skip null streams instead of throwing a for (ObjectStream stream : streams) { if (stream == null) { throw new NullPointerException("stream cannot be null"); } } return new ObjectStream() { private Iterator> iterator = streams.iterator(); private ObjectStream currentStream = iterator.next(); @Override public T read() throws IOException { T object = null; while (currentStream != null && object == null) { object = currentStream.read(); if (object == null) { currentStream = (iterator.hasNext()) ? iterator.next() : null; } } return object; } @Override public void reset() throws IOException, UnsupportedOperationException { for (ObjectStream stream : streams) { stream.reset(); } iterator = streams.iterator(); } @Override public void close() throws IOException { for (ObjectStream stream : streams) { stream.close(); } } }; } /** * Creates a single concatenated ObjectStream from multiple individual * ObjectStreams with the same type. * * @param streams * @return */ @SafeVarargs public static ObjectStream concatenateObjectStream(final ObjectStream... streams) { for (ObjectStream stream : streams) { if (stream == null) { throw new NullPointerException("stream cannot be null"); } } return new ObjectStream() { private int streamIndex = 0; public T read() throws IOException { T object = null; while (streamIndex < streams.length && object == null) { object = streams[streamIndex].read(); if (object == null) streamIndex++; } return object; } public void reset() throws IOException, UnsupportedOperationException { streamIndex = 0; for (ObjectStream stream : streams) { stream.reset(); } } public void close() throws IOException { for (ObjectStream stream : streams) { stream.close(); } } }; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/SequenceCodec.java0100664 0001750 0001750 00000003030 14135770370 032066 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.List; public interface SequenceCodec { /** * Decodes a sequence T objects into Span objects. * * @param c * * @return */ Span[] decode(List c); /** * Encodes Span objects into a sequence of T objects. * * @param names * @param length * * @return */ T[] encode(Span[] names, int length); /** * Creates a sequence validator which can validate a sequence of outcomes. * * @return */ SequenceValidator createSequenceValidator(); /** * Checks if the outcomes of the model are compatible with the codec. * * @param outcomes all possible model outcomes * * @return */ boolean areOutcomesCompatible(String[] outcomes); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/StringUtil.java0100664 0001750 0001750 00000025673 14135770370 031505 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; public class StringUtil { /** * Determines if the specified character is a whitespace. * * A character is considered a whitespace when one * of the following conditions is meet: * *

    *
  • Its a {@link Character#isWhitespace(int)} whitespace.
  • *
  • Its a part of the Unicode Zs category ({@link Character#SPACE_SEPARATOR}).
  • *
* * Character.isWhitespace(int) does not include no-break spaces. * In OpenNLP no-break spaces are also considered as white spaces. * * @param charCode * @return true if white space otherwise false */ public static boolean isWhitespace(char charCode) { return Character.isWhitespace(charCode) || Character.getType(charCode) == Character.SPACE_SEPARATOR; } /** * Determines if the specified character is a whitespace. * * A character is considered a whitespace when one * of the following conditions is meet: * *
    *
  • Its a {@link Character#isWhitespace(int)} whitespace.
  • *
  • Its a part of the Unicode Zs category ({@link Character#SPACE_SEPARATOR}).
  • *
* * Character.isWhitespace(int) does not include no-break spaces. * In OpenNLP no-break spaces are also considered as white spaces. * * @param charCode * @return true if white space otherwise false */ public static boolean isWhitespace(int charCode) { return Character.isWhitespace(charCode) || Character.getType(charCode) == Character.SPACE_SEPARATOR; } /** * Converts to lower case independent of the current locale via * {@link Character#toLowerCase(int)} which uses mapping information * from the UnicodeData file. * * @param string * @return lower cased String */ public static String toLowerCase(CharSequence string) { int[] cp = string.codePoints().map(Character::toLowerCase).toArray(); return new String(cp, 0, cp.length); } /** * Converts to upper case independent of the current locale via * {@link Character#toUpperCase(char)} which uses mapping information * from the UnicodeData file. * * @param string * @return upper cased String */ public static String toUpperCase(CharSequence string) { char[] upperCaseChars = new char[string.length()]; for (int i = 0; i < string.length(); i++) { upperCaseChars[i] = Character.toUpperCase(string.charAt(i)); } return new String(upperCaseChars); } /** * Returns {@code true} if {@link CharSequence#length()} is * {@code 0} or {@code null}. * * @return {@code true} if {@link CharSequence#length()} is {@code 0}, otherwise * {@code false} * * @since 1.5.1 */ public static boolean isEmpty(CharSequence theString) { return theString.length() == 0; } /** * Get mininum of three values. * @param a number a * @param b number b * @param c number c * @return the minimum */ private static int minimum(int a, int b, int c) { int minValue; minValue = a; if (b < minValue) { minValue = b; } if (c < minValue) { minValue = c; } return minValue; } /** * Computes the Levenshtein distance of two strings in a matrix. * Based on pseudo-code provided here: * https://en.wikipedia.org/wiki/Levenshtein_distance#Computing_Levenshtein_distance * which in turn is based on the paper Wagner, Robert A.; Fischer, Michael J. (1974), * "The String-to-String Correction Problem", Journal of the ACM 21 (1): 168-173 * @param wordForm the form * @param lemma the lemma * @return the distance */ public static int[][] levenshteinDistance(String wordForm, String lemma) { int wordLength = wordForm.length(); int lemmaLength = lemma.length(); int cost; int[][] distance = new int[wordLength + 1][lemmaLength + 1]; if (wordLength == 0) { return distance; } if (lemmaLength == 0) { return distance; } //fill in the rows of column 0 for (int i = 0; i <= wordLength; i++) { distance[i][0] = i; } //fill in the columns of row 0 for (int j = 0; j <= lemmaLength; j++) { distance[0][j] = j; } //fill in the rest of the matrix calculating the minimum distance for (int i = 1; i <= wordLength; i++) { int s_i = wordForm.charAt(i - 1); for (int j = 1; j <= lemmaLength; j++) { if (s_i == lemma.charAt(j - 1)) { cost = 0; } else { cost = 1; } //obtain minimum distance from calculating deletion, insertion, substitution distance[i][j] = minimum(distance[i - 1][j] + 1, distance[i][j - 1] + 1, distance[i - 1][j - 1] + cost); } } return distance; } /** * Computes the Shortest Edit Script (SES) to convert a word into its lemma. * This is based on Chrupala's PhD thesis (2008). * @param wordForm the token * @param lemma the target lemma * @param distance the levenshtein distance * @param permutations the number of permutations */ public static void computeShortestEditScript(String wordForm, String lemma, int[][] distance, StringBuffer permutations) { int n = distance.length; int m = distance[0].length; int wordFormLength = n - 1; int lemmaLength = m - 1; while (true) { if (distance[wordFormLength][lemmaLength] == 0) { break; } if ((lemmaLength > 0 && wordFormLength > 0) && (distance[wordFormLength - 1][lemmaLength - 1] < distance[wordFormLength][lemmaLength])) { permutations.append('R').append(Integer.toString(wordFormLength - 1)) .append(wordForm.charAt(wordFormLength - 1)).append(lemma.charAt(lemmaLength - 1)); lemmaLength--; wordFormLength--; continue; } if (lemmaLength > 0 && (distance[wordFormLength][lemmaLength - 1] < distance[wordFormLength][lemmaLength])) { permutations.append('I').append(Integer.toString(wordFormLength)) .append(lemma.charAt(lemmaLength - 1)); lemmaLength--; continue; } if (wordFormLength > 0 && (distance[wordFormLength - 1][lemmaLength] < distance[wordFormLength][lemmaLength])) { permutations.append('D').append(Integer.toString(wordFormLength - 1)) .append(wordForm.charAt(wordFormLength - 1)); wordFormLength--; continue; } if ((wordFormLength > 0 && lemmaLength > 0) && (distance[wordFormLength - 1][lemmaLength - 1] == distance[wordFormLength][lemmaLength])) { wordFormLength--; lemmaLength--; continue ; } if (wordFormLength > 0 && (distance[wordFormLength - 1][lemmaLength] == distance[wordFormLength][lemmaLength])) { wordFormLength--; continue; } if (lemmaLength > 0 && (distance[wordFormLength][lemmaLength - 1] == distance[wordFormLength][lemmaLength])) { lemmaLength--; } } } /** * Read predicted SES by the lemmatizer model and apply the * permutations to obtain the lemma from the wordForm. * @param wordForm the wordForm * @param permutations the permutations predicted by the lemmatizer model * @return the lemma */ public static String decodeShortestEditScript(String wordForm, String permutations) { StringBuffer lemma = new StringBuffer(wordForm).reverse(); int permIndex = 0; while (true) { if (permutations.length() <= permIndex) { break; } //read first letter of permutation string char nextOperation = permutations.charAt(permIndex); //System.err.println("-> NextOP: " + nextOperation); //go to the next permutation letter permIndex++; if (nextOperation == 'R') { String charAtPerm = Character.toString(permutations.charAt(permIndex)); int charIndex = Integer.parseInt(charAtPerm); // go to the next character in the permutation buffer // which is the replacement character permIndex++; char replace = permutations.charAt(permIndex); //go to the next char in the permutation buffer // which is the candidate character permIndex++; char with = permutations.charAt(permIndex); if (lemma.length() <= charIndex) { return wordForm; } if (lemma.charAt(charIndex) == replace) { lemma.setCharAt(charIndex, with); } //System.err.println("-> ROP: " + lemma.toString()); //go to next permutation permIndex++; } else if (nextOperation == 'I') { String charAtPerm = Character.toString(permutations.charAt(permIndex)); int charIndex = Integer.parseInt(charAtPerm); permIndex++; //character to be inserted char in = permutations.charAt(permIndex); if (lemma.length() < charIndex) { return wordForm; } lemma.insert(charIndex, in); //System.err.println("-> IOP " + lemma.toString()); //go to next permutation permIndex++; } else if (nextOperation == 'D') { String charAtPerm = Character.toString(permutations.charAt(permIndex)); int charIndex = Integer.parseInt(charAtPerm); if (lemma.length() <= charIndex) { return wordForm; } lemma.deleteCharAt(charIndex); permIndex++; // go to next permutation permIndex++; } } return lemma.reverse().toString(); } /** * Get the SES required to go from a word to a lemma. * @param wordForm the word * @param lemma the lemma * @return the shortest edit script */ public static String getShortestEditScript(String wordForm, String lemma) { String reversedWF = new StringBuffer(wordForm.toLowerCase()).reverse().toString(); String reversedLemma = new StringBuffer(lemma.toLowerCase()).reverse().toString(); StringBuffer permutations = new StringBuffer(); String ses; if (!reversedWF.equals(reversedLemma)) { int[][]levenDistance = StringUtil.levenshteinDistance(reversedWF, reversedLemma); StringUtil.computeShortestEditScript(reversedWF, reversedLemma, levenDistance, permutations); ses = permutations.toString(); } else { ses = "O"; } return ses; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_O0100644 0000000 0000000 00000000176 14135770370 032630 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/OutcomePriorFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/OutcomePriorFeatu0100664 0001750 0001750 00000002372 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * The definition feature maps the underlying distribution of outcomes. */ public class OutcomePriorFeatureGenerator implements AdaptiveFeatureGenerator { private static final String OUTCOME_PRIOR_FEATURE = "def"; public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { features.add(OUTCOME_PRIOR_FEATURE); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_D0100644 0000000 0000000 00000000203 14135770370 032604 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DefinitionFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DefinitionFeature0100664 0001750 0001750 00000003713 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see DefinitionFeatureGeneratorFactory */ public class DefinitionFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { private static final String ELEMENT_NAME = "definition"; public DefinitionFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { return new OutcomePriorFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put(ELEMENT_NAME, new DefinitionFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new OutcomePriorFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000201 14135770370 032621 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SentenceFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SentenceFeatureGe0100664 0001750 0001750 00000004600 14135770370 034125 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see SentenceFeatureGenerator */ public class SentenceFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public SentenceFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { String beginFeatureString = generatorElement.getAttribute("begin"); boolean beginFeature = true; if (beginFeatureString.length() != 0) beginFeature = Boolean.parseBoolean(beginFeatureString); String endFeatureString = generatorElement.getAttribute("end"); boolean endFeature = true; if (endFeatureString.length() != 0) endFeature = Boolean.parseBoolean(endFeatureString); return new SentenceFeatureGenerator(beginFeature, endFeature); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("sentence", new SentenceFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { String beginFeatureString = generatorElement.getAttribute("begin"); return new SentenceFeatureGenerator(getBool("begin", true), getBool("end", true)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000175 14135770370 032634 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TrigramNameFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TrigramNameFeatur0100664 0001750 0001750 00000003606 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * Adds trigram features based on tokens and token classes. * */ public class TrigramNameFeatureGenerator implements AdaptiveFeatureGenerator { public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String wc = FeatureGeneratorUtil.tokenFeature(tokens[index]); // trigram features if (index > 1) { features.add("ppw,pw,w=" + tokens[index - 2] + "," + tokens[index - 1] + "," + tokens[index]); String pwc = FeatureGeneratorUtil.tokenFeature(tokens[index - 1]); String ppwc = FeatureGeneratorUtil.tokenFeature(tokens[index - 2]); features.add("ppwc,pwc,wc=" + ppwc + "," + pwc + "," + wc); } if (index + 2 < tokens.length) { features.add("w,nw,nnw=" + tokens[index] + "," + tokens[index + 1] + "," + tokens[index + 2]); String nwc = FeatureGeneratorUtil.tokenFeature(tokens[index + 1]); String nnwc = FeatureGeneratorUtil.tokenFeature(tokens[index + 2]); features.add("wc,nwc,nnwc=" + wc + "," + nwc + "," + nnwc); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000176 14135770370 032635 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenFeatureGener0100664 0001750 0001750 00000003467 14135770370 034160 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; public class TokenFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public TokenFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new TokenFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("token", new TokenFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new TokenFeatureGenerator(getBool("lowercase", true)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000163 14135770370 032607 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenClasses.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenClasses0100664 0001750 0001750 00000004071 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; /** * Obtain the paths listed in the pathLengths array from the Brown class. * This class is not to be instantiated. * */ public class BrownTokenClasses { public static final int[] pathLengths = { 4, 6, 10, 20 }; /** * It provides a list containing the pathLengths for a token if found * in the Map:token,BrownClass. * * @param token the token to be looked up in the brown clustering map * @param brownLexicon the Brown clustering map * @return the list of the paths for a token */ public static List getWordClasses(String token, BrownCluster brownLexicon) { if (brownLexicon.lookupToken(token) == null) { return new ArrayList<>(0); } else { String brownClass = brownLexicon.lookupToken(token); List pathLengthsList = new ArrayList<>(); pathLengthsList.add(brownClass.substring(0, StrictMath.min(brownClass.length(), pathLengths[0]))); for (int i = 1; i < pathLengths.length; i++) { if (pathLengths[i - 1] < brownClass.length()) { pathLengthsList.add(brownClass.substring(0, StrictMath.min(brownClass.length(), pathLengths[i]))); } } return pathLengthsList; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000170 14135770370 032606 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CustomFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CustomFeatureGene0100664 0001750 0001750 00000002571 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import opennlp.tools.util.InvalidFormatException; @Deprecated // TODO: (OPENNLP-1174) remove back-compat support when it is unnecessary public abstract class CustomFeatureGenerator implements AdaptiveFeatureGenerator { /** * Initialized the Custom Feature Generator with defined properties and loaded resources. * * @param properties * @param resourceProvider */ public abstract void init(Map properties, FeatureGeneratorResourceProvider resourceProvider) throws InvalidFormatException; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000174 14135770370 032611 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BigramNameFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BigramNameFeature0100664 0001750 0001750 00000003137 14135770370 034113 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; public class BigramNameFeatureGenerator implements AdaptiveFeatureGenerator { public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String wc = FeatureGeneratorUtil.tokenFeature(tokens[index]); //bi-gram features if (index > 0) { features.add("pw,w=" + tokens[index - 1] + "," + tokens[index]); String pwc = FeatureGeneratorUtil.tokenFeature(tokens[index - 1]); features.add("pwc,wc=" + pwc + "," + wc); } if (index + 1 < tokens.length) { features.add("w,nw=" + tokens[index] + "," + tokens[index + 1]); String nwc = FeatureGeneratorUtil.tokenFeature(tokens[index + 1]); features.add("wc,nc=" + wc + "," + nwc); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000212 14135770370 032602 xustar000000000 0000000 138 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterTokenFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterToken0100664 0001750 0001750 00000006005 14135770370 034224 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; /** * Generates Brown clustering features for current token. */ public class BrownClusterTokenFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public BrownClusterTokenFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String dictResourceKey = generatorElement.getAttribute("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownTokenFeatureGenerator((BrownCluster) dictResource); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("brownclustertoken", new BrownClusterTokenFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String dictResourceKey = getStr("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownTokenFeatureGenerator((BrownCluster) dictResource); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("dict"), new BrownCluster.BrownClusterSerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_D0100644 0000000 0000000 00000000174 14135770370 032613 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeature0100664 0001750 0001750 00000003557 14135770370 034224 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.namefind.DictionaryNameFinder; /** * The {@link DictionaryFeatureGenerator} uses the {@link DictionaryNameFinder} * to generated features for detected names based on the {@link InSpanGenerator}. * * @see Dictionary * @see DictionaryNameFinder * @see InSpanGenerator */ public class DictionaryFeatureGenerator implements AdaptiveFeatureGenerator { private InSpanGenerator isg; public DictionaryFeatureGenerator(Dictionary dict) { this("",dict); } public DictionaryFeatureGenerator(String prefix, Dictionary dict) { setDictionary(prefix,dict); } public void setDictionary(Dictionary dict) { setDictionary("",dict); } public void setDictionary(String name, Dictionary dict) { isg = new InSpanGenerator(name, new DictionaryNameFinder(dict)); } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { isg.createFeatures(features, tokens, index, previousOutcomes); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000204 14135770370 032625 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TrigramNameFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TrigramNameFeatur0100664 0001750 0001750 00000003532 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; public class TrigramNameFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public TrigramNameFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new TrigramNameFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("trigram", new TrigramNameFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new TrigramNameFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000204 14135770370 032621 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousMapFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousMapFeatur0100664 0001750 0001750 00000003552 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see PreviousMapFeatureGenerator */ public class PreviousMapFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public PreviousMapFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new PreviousMapFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("prevmap", new PreviousMapFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new PreviousMapFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000177 14135770370 032641 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WindowFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WindowFeatureGene0100664 0001750 0001750 00000006757 14135770370 034172 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import opennlp.tools.util.InvalidFormatException; /** * @see WindowFeatureGenerator */ public class WindowFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public WindowFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { Element nestedGeneratorElement = null; NodeList kids = generatorElement.getChildNodes(); for (int i = 0; i < kids.getLength(); i++) { Node childNode = kids.item(i); if (childNode instanceof Element) { nestedGeneratorElement = (Element) childNode; break; } } if (nestedGeneratorElement == null) { throw new InvalidFormatException("window feature generator must contain" + " an aggregator element"); } AdaptiveFeatureGenerator nestedGenerator = GeneratorFactory.createGenerator(nestedGeneratorElement, resourceManager); String prevLengthString = generatorElement.getAttribute("prevLength"); int prevLength; try { prevLength = Integer.parseInt(prevLengthString); } catch (NumberFormatException e) { throw new InvalidFormatException("prevLength attribute '" + prevLengthString + "' is not a number!", e); } String nextLengthString = generatorElement.getAttribute("nextLength"); int nextLength; try { nextLength = Integer.parseInt(nextLengthString); } catch (NumberFormatException e) { throw new InvalidFormatException("nextLength attribute '" + nextLengthString + "' is not a number!", e); } return new WindowFeatureGenerator(nestedGenerator, prevLength, nextLength); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("window", new WindowFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { AdaptiveFeatureGenerator generator = (AdaptiveFeatureGenerator)args.get("generator#0"); if (generator == null) { throw new InvalidFormatException("window feature generator must contain" + " an aggregator element"); } return new WindowFeatureGenerator(generator, getInt("prevLength"), getInt("nextLength")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000173 14135770370 032626 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PosTaggerFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PosTaggerFeatureG0100664 0001750 0001750 00000003446 14135770370 034116 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; public class PosTaggerFeatureGenerator implements AdaptiveFeatureGenerator { private final String SB = "S=begin"; @Override public void createFeatures(List features, String[] tokens, int index, String[] tags) { String prev, prevprev = null; String tagprev, tagprevprev; tagprev = tagprevprev = null; if (index - 1 >= 0) { prev = tokens[index - 1]; tagprev = tags[index - 1]; if (index - 2 >= 0) { prevprev = tokens[index - 2]; tagprevprev = tags[index - 2]; } else { prevprev = SB; } } else { prev = SB; } // add the words and pos's of the surrounding context if (prev != null) { if (tagprev != null) { features.add("t=" + tagprev); } if (prevprev != null) { if (tagprevprev != null) { features.add("t2=" + tagprevprev + "," + tagprev); } } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_I0100644 0000000 0000000 00000000161 14135770370 032614 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/InSpanGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/InSpanGenerator.j0100664 0001750 0001750 00000004617 14135770370 034070 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import java.util.Objects; import opennlp.tools.namefind.TokenNameFinder; import opennlp.tools.util.Span; /** * Generates features if the tokens are recognized by the provided * {@link TokenNameFinder}. */ public class InSpanGenerator implements AdaptiveFeatureGenerator { private final String prefix; private final TokenNameFinder finder; private String[] currentSentence; private Span[] currentNames; /** * Initializes the current instance. * * @param prefix the prefix is used to distinguish the generated features * from features generated by other instances of {@link InSpanGenerator}s. * @param finder the {@link TokenNameFinder} used to detect the names. */ public InSpanGenerator(String prefix, TokenNameFinder finder) { this.prefix = Objects.requireNonNull(prefix, "prefix must not be null"); this.finder = Objects.requireNonNull(finder, "finder must not be null"); } public void createFeatures(List features, String[] tokens, int index, String[] preds) { // cache results for sentence if (currentSentence != tokens) { currentSentence = tokens; currentNames = finder.find(tokens); } // iterate over names and check if a span is contained for (Span currentName : currentNames) { if (currentName.contains(index)) { // found a span for the current token features.add(prefix + ":w=dic"); features.add(prefix + ":w=dic=" + tokens[index]); // TODO: consider generation start and continuation features break; } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_p0100644 0000000 0000000 00000000156 14135770370 032667 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/package-info.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/package-info.java0100664 0001750 0001750 00000001624 14135770370 034040 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * This package contains classes for generating sequence features. */ package opennlp.tools.util.featuregen; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000201 14135770370 032600 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenClassFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenClassFe0100664 0001750 0001750 00000003060 14135770370 034121 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * Generates Brown cluster features for current token and token class. */ public class BrownTokenClassFeatureGenerator implements AdaptiveFeatureGenerator { private BrownCluster brownLexicon; public BrownTokenClassFeatureGenerator(BrownCluster dict) { this.brownLexicon = dict; } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String wordShape = FeatureGeneratorUtil.tokenFeature(tokens[index]); List wordClasses = BrownTokenClasses.getWordClasses(tokens[index], brownLexicon); for (String wordClass : wordClasses) { features.add("c," + "browncluster" + "=" + wordShape + "," + wordClass); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000213 14135770370 032603 xustar000000000 0000000 139 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterBigramFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterBigra0100664 0001750 0001750 00000006013 14135770370 034167 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; /** * Generates Brown clustering features for token bigrams. */ public class BrownClusterBigramFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public BrownClusterBigramFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String dictResourceKey = generatorElement.getAttribute("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownBigramFeatureGenerator((BrownCluster) dictResource); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("brownclusterbigram", new BrownClusterBigramFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String dictResourceKey = getStr("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownBigramFeatureGenerator((BrownCluster) dictResource); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("dict"), new BrownCluster.BrownClusterSerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_A0100644 0000000 0000000 00000000203 14135770370 032601 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeature0100664 0001750 0001750 00000005753 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import opennlp.tools.util.InvalidFormatException; /** * @see AggregatedFeatureGenerator */ public class AggregatedFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public AggregatedFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { Collection aggregatedGenerators = new LinkedList<>(); NodeList childNodes = generatorElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); if (childNode instanceof Element) { Element aggregatedGeneratorElement = (Element) childNode; aggregatedGenerators.add( GeneratorFactory.createGenerator(aggregatedGeneratorElement, resourceManager)); } } return new AggregatedFeatureGenerator(aggregatedGenerators.toArray( new AdaptiveFeatureGenerator[aggregatedGenerators.size()])); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("generators", new AggregatedFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { List aggregatedGenerators = new ArrayList<>(); for (Map.Entry arg: args.entrySet()) { if (arg.getKey().startsWith("generator#")) { aggregatedGenerators.add((AdaptiveFeatureGenerator)arg.getValue()); } } return new AggregatedFeatureGenerator(aggregatedGenerators.toArray( new AdaptiveFeatureGenerator[aggregatedGenerators.size()])); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000167 14135770370 032640 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterDictionary.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterDictio0100664 0001750 0001750 00000005551 14135770370 034210 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.SerializableArtifact; public class WordClusterDictionary implements SerializableArtifact { public static class WordClusterDictionarySerializer implements ArtifactSerializer { public WordClusterDictionary create(InputStream in) throws IOException { return new WordClusterDictionary(in); } public void serialize(WordClusterDictionary artifact, OutputStream out) throws IOException { artifact.serialize(out); } } private Map tokenToClusterMap = new HashMap<>(); /** * Read word2vec and clark clustering style lexicons. * @param in the inputstream * @throws IOException the io exception */ public WordClusterDictionary(InputStream in) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); String line; while ((line = reader.readLine()) != null) { String[] parts = line.split(" "); if (parts.length == 3) { tokenToClusterMap.put(parts[0], parts[1].intern()); } else if (parts.length == 2) { tokenToClusterMap.put(parts[0], parts[1].intern()); } } } public String lookupToken(String string) { return tokenToClusterMap.get(string); } public void serialize(OutputStream out) throws IOException { Writer writer = new BufferedWriter(new OutputStreamWriter(out)); for (Map.Entry entry : tokenToClusterMap.entrySet()) { writer.write(entry.getKey() + " " + entry.getValue() + "\n"); } writer.flush(); } public Class getArtifactSerializerClass() { return WordClusterDictionarySerializer.class; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_A0100644 0000000 0000000 00000000174 14135770370 032610 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/ArtifactToSerializerMapper.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/ArtifactToSeriali0100664 0001750 0001750 00000002143 14135770370 034142 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import opennlp.tools.util.model.ArtifactSerializer; @Deprecated // TODO: (OPENNLP-1174) remove back-compat support when it is unnecessary public interface ArtifactToSerializerMapper { Map> getArtifactSerializerMapping(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000170 14135770370 032606 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CachedFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CachedFeatureGene0100664 0001750 0001750 00000006252 14135770370 034060 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.Cache; /** * Caches features of the aggregated {@link AdaptiveFeatureGenerator}s. */ public class CachedFeatureGenerator implements AdaptiveFeatureGenerator { private final AdaptiveFeatureGenerator generator; private String[] prevTokens; private Cache> contextsCache; private long numberOfCacheHits; private long numberOfCacheMisses; @Deprecated public CachedFeatureGenerator(AdaptiveFeatureGenerator... generators) { this.generator = new AggregatedFeatureGenerator(generators); contextsCache = new Cache<>(100); } public CachedFeatureGenerator(AdaptiveFeatureGenerator generator) { this.generator = generator; contextsCache = new Cache<>(100); } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { List cacheFeatures; if (tokens == prevTokens) { cacheFeatures = contextsCache.get(index); if (cacheFeatures != null) { numberOfCacheHits++; features.addAll(cacheFeatures); return; } } else { contextsCache.clear(); prevTokens = tokens; } cacheFeatures = new ArrayList<>(); numberOfCacheMisses++; generator.createFeatures(cacheFeatures, tokens, index, previousOutcomes); contextsCache.put(index, cacheFeatures); features.addAll(cacheFeatures); } public void updateAdaptiveData(String[] tokens, String[] outcomes) { generator.updateAdaptiveData(tokens, outcomes); } public void clearAdaptiveData() { generator.clearAdaptiveData(); } /** * Retrieves the number of times a cache hit occurred. * * @return number of cache hits */ public long getNumberOfCacheHits() { return numberOfCacheHits; } /** * Retrieves the number of times a cache miss occurred. * * @return number of cache misses */ public long getNumberOfCacheMisses() { return numberOfCacheMisses; } @Override public String toString() { return super.toString() + ": hits=" + numberOfCacheHits + " misses=" + numberOfCacheMisses + " hit%" + (numberOfCacheHits > 0 ? (double) numberOfCacheHits / (numberOfCacheMisses + numberOfCacheHits) : 0); } public AdaptiveFeatureGenerator getCachedFeatureGenerator() { return generator; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000200 14135770370 032600 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CharacterNgramFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CharacterNgramFea0100664 0001750 0001750 00000003654 14135770370 034076 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import opennlp.tools.ngram.NGramModel; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; /** * The {@link CharacterNgramFeatureGenerator} uses character ngrams to * generate features about each token. * The minimum and maximum length can be specified. */ public class CharacterNgramFeatureGenerator implements AdaptiveFeatureGenerator { private final int minLength; private final int maxLength; public CharacterNgramFeatureGenerator(int minLength, int maxLength) { this.minLength = minLength; this.maxLength = maxLength; } /** * Initializes the current instance with min 2 length and max 5 length of ngrams. */ public CharacterNgramFeatureGenerator() { this(2, 5); } public void createFeatures(List features, String[] tokens, int index, String[] preds) { NGramModel model = new NGramModel(); model.add(tokens[index], minLength, maxLength); for (StringList tokenList : model) { if (tokenList.size() > 0) { features.add("ng=" + StringUtil.toLowerCase(tokenList.getToken(0))); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000172 14135770370 032630 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SentenceFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SentenceFeatureGe0100664 0001750 0001750 00000003225 14135770370 034127 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * This feature generator creates sentence begin and end features. */ public class SentenceFeatureGenerator implements AdaptiveFeatureGenerator { private final boolean isGenerateFirstWordFeature; private final boolean isGenerateLastWordFeature; public SentenceFeatureGenerator(boolean isGenerateFirstWordFeature, boolean isGenerateLastWordFeature) { this.isGenerateFirstWordFeature = isGenerateFirstWordFeature; this.isGenerateLastWordFeature = isGenerateLastWordFeature; } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { if (isGenerateFirstWordFeature && index == 0) { features.add("S=begin"); } if (isGenerateLastWordFeature && tokens.length == index + 1) { features.add("S=end"); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000175 14135770370 032630 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousMapFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousMapFeatur0100664 0001750 0001750 00000003323 14135770370 034213 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.List; import java.util.Map; /** * This {@link AdaptiveFeatureGenerator} generates features indicating the * outcome associated with a previously occuring word. */ public class PreviousMapFeatureGenerator implements AdaptiveFeatureGenerator { private Map previousMap = new HashMap<>(); public void createFeatures(List features, String[] tokens, int index, String[] preds) { features.add("pd=" + previousMap.get(tokens[index])); } /** * Generates previous decision features for the token based on contents of the previous map. */ public void updateAdaptiveData(String[] tokens, String[] outcomes) { for (int i = 0; i < tokens.length; i++) { previousMap.put(tokens[i], outcomes[i]); } } /** * Clears the previous map. */ public void clearAdaptiveData() { previousMap.clear(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_F0100644 0000000 0000000 00000000166 14135770370 032616 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/FeatureGeneratorUtil.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/FeatureGeneratorU0100664 0001750 0001750 00000006264 14135770370 034170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.regex.Pattern; /** * This class provide common utilities for feature generation. */ public class FeatureGeneratorUtil { private static final String TOKEN_CLASS_PREFIX = "wc"; private static final String TOKEN_AND_CLASS_PREFIX = "w&c"; private static final Pattern capPeriod = Pattern.compile("^[A-Z]\\.$"); /** * Generates a class name for the specified token. * The classes are as follows where the first matching class is used: *
    *
  • jah - Japanese Hiragana
  • *
  • jak - Japanese Katakana
  • *
  • lc - lowercase alphabetic
  • *
  • 2d - two digits
  • *
  • 4d - four digits
  • *
  • an - alpha-numeric
  • *
  • dd - digits and dashes
  • *
  • ds - digits and slashes
  • *
  • dc - digits and commas
  • *
  • dp - digits and periods
  • *
  • num - digits
  • *
  • sc - single capital letter
  • *
  • ac - all capital letters
  • *
  • ic - initial capital letter
  • *
  • other - other
  • *
* @param token A token or word. * @return The class name that the specified token belongs in. */ public static String tokenFeature(String token) { StringPattern pattern = StringPattern.recognize(token); String feat; if (pattern.isAllHiragana()) { feat = "jah"; } else if (pattern.isAllKatakana()) { feat = "jak"; } else if (pattern.isAllLowerCaseLetter()) { feat = "lc"; } else if (pattern.digits() == 2) { feat = "2d"; } else if (pattern.digits() == 4) { feat = "4d"; } else if (pattern.containsDigit()) { if (pattern.containsLetters()) { feat = "an"; } else if (pattern.containsHyphen()) { feat = "dd"; } else if (pattern.containsSlash()) { feat = "ds"; } else if (pattern.containsComma()) { feat = "dc"; } else if (pattern.containsPeriod()) { feat = "dp"; } else { feat = "num"; } } else if (pattern.isAllCapitalLetter()) { if (token.length() == 1) { feat = "sc"; } else { feat = "ac"; } } else if (capPeriod.matcher(token).find()) { feat = "cp"; } else if (pattern.isInitialCapitalLetter()) { feat = "ic"; } else { feat = "other"; } return (feat); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000176 14135770370 032635 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenPatternFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenPatternFeatu0100664 0001750 0001750 00000005435 14135770370 034203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import java.util.regex.Pattern; import opennlp.tools.tokenize.SimpleTokenizer; import opennlp.tools.tokenize.Tokenizer; import opennlp.tools.util.StringUtil; /** * Partitions tokens into sub-tokens based on character classes and generates * class features for each of the sub-tokens and combinations of those sub-tokens. */ public class TokenPatternFeatureGenerator implements AdaptiveFeatureGenerator { private Pattern noLetters = Pattern.compile("[^a-zA-Z]"); private Tokenizer tokenizer; /** * Initializes a new instance. * For tokinization the {@link SimpleTokenizer} is used. */ public TokenPatternFeatureGenerator() { this(SimpleTokenizer.INSTANCE); } /** * Initializes a new instance. * * @param supportTokenizer */ public TokenPatternFeatureGenerator(Tokenizer supportTokenizer) { tokenizer = supportTokenizer; } public void createFeatures(List feats, String[] toks, int index, String[] preds) { String[] tokenized = tokenizer.tokenize(toks[index]); if (tokenized.length == 1) { feats.add("st=" + StringUtil.toLowerCase(toks[index])); return; } feats.add("stn=" + tokenized.length); StringBuilder pattern = new StringBuilder(); for (int i = 0; i < tokenized.length; i++) { if (i < tokenized.length - 1) { feats.add("pt2=" + FeatureGeneratorUtil.tokenFeature(tokenized[i]) + FeatureGeneratorUtil.tokenFeature(tokenized[i + 1])); } if (i < tokenized.length - 2) { feats.add("pt3=" + FeatureGeneratorUtil.tokenFeature(tokenized[i]) + FeatureGeneratorUtil.tokenFeature(tokenized[i + 1]) + FeatureGeneratorUtil.tokenFeature(tokenized[i + 2])); } pattern.append(FeatureGeneratorUtil.tokenFeature(tokenized[i])); if (!noLetters.matcher(tokenized[i]).find()) { feats.add("st=" + StringUtil.toLowerCase(tokenized[i])); } } feats.add("pta=" + pattern); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000177 14135770370 032635 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SuffixFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SuffixFeatureGene0100664 0001750 0001750 00000004233 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import java.util.Objects; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see SuffixFeatureGenerator */ public class SuffixFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public SuffixFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { String attribute = generatorElement.getAttribute("length"); int suffixLength = SuffixFeatureGenerator.DEFAULT_MAX_LENGTH; if (!Objects.equals(attribute, "")) { suffixLength = Integer.parseInt(attribute); } return new SuffixFeatureGenerator(suffixLength); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("suffix", new SuffixFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new SuffixFeatureGenerator(getInt("length", SuffixFeatureGenerator.DEFAULT_MAX_LENGTH)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000156 14135770370 032611 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownCluster.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownCluster.java0100664 0001750 0001750 00000007032 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.SerializableArtifact; /** * * Class to load a Brown cluster document: word\tword_class\tprob * http://metaoptimize.com/projects/wordreprs/ * * The file containing the clustering lexicon has to be passed as the * value of the dict attribute of each BrownCluster feature generator. * */ public class BrownCluster implements SerializableArtifact { private static final Pattern tabPattern = Pattern.compile("\t"); public static class BrownClusterSerializer implements ArtifactSerializer { public BrownCluster create(InputStream in) throws IOException { return new BrownCluster(in); } public void serialize(BrownCluster artifact, OutputStream out) throws IOException { artifact.serialize(out); } } private Map tokenToClusterMap = new HashMap<>(); /** * Generates the token to cluster map from Brown cluster input file. * NOTE: we only add those tokens with frequency bigger than 5. * @param in the inputstream * @throws IOException the io exception */ public BrownCluster(InputStream in) throws IOException { BufferedReader breader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); String line; while ((line = breader.readLine()) != null) { String[] lineArray = tabPattern.split(line); if (lineArray.length == 3) { int freq = Integer.parseInt(lineArray[2]); if (freq > 5 ) { tokenToClusterMap.put(lineArray[1], lineArray[0]); } } else if (lineArray.length == 2) { tokenToClusterMap.put(lineArray[0], lineArray[1]); } } } /** * Check if a token is in the Brown:paths, token map. * @param string the token to look-up * @return the brown class if such token is in the brown cluster map */ public String lookupToken(String string) { return tokenToClusterMap.get(string); } public void serialize(OutputStream out) throws IOException { Writer writer = new BufferedWriter(new OutputStreamWriter(out)); for (Map.Entry entry : tokenToClusterMap.entrySet()) { writer.write(entry.getKey() + "\t" + entry.getValue() + "\n"); } writer.flush(); } public Class getArtifactSerializerClass() { return BrownClusterSerializer.class; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_D0100644 0000000 0000000 00000000177 14135770370 032616 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DocumentBeginFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DocumentBeginFeat0100664 0001750 0001750 00000002474 14135770370 034123 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; public class DocumentBeginFeatureGenerator implements AdaptiveFeatureGenerator { private String[] firstSentence; public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { if (firstSentence == null) { firstSentence = tokens; } if (firstSentence == tokens && index == 0) { features.add("D=begin"); } } @Override public void clearAdaptiveData() { firstSentence = null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000203 14135770370 032624 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeature0100664 0001750 0001750 00000004426 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import java.util.Objects; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see TokenClassFeatureGenerator */ public class TokenClassFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public TokenClassFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { String attribute = generatorElement.getAttribute("wordAndClass"); // Default to true. boolean generateWordAndClassFeature = true; if (!Objects.equals(attribute, "")) { // Anything other than "true" sets it to false. if (!"true".equalsIgnoreCase(attribute)) { generateWordAndClassFeature = false; } } return new TokenClassFeatureGenerator(generateWordAndClassFeature); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("tokenclass", new TokenClassFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new TokenClassFeatureGenerator(getBool("wordAndClass", true)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000204 14135770370 032630 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterFeatur0100664 0001750 0001750 00000006706 14135770370 034226 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; /** * Defines a word cluster generator factory; it reads an element containing * 'w2vwordcluster' as a tag name; these clusters are typically produced by * word2vec or clark pos induction systems. */ public class WordClusterFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public WordClusterFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String dictResourceKey = generatorElement.getAttribute("dict"); boolean lowerCaseDictionary = "true".equals(generatorElement.getAttribute("lowerCase")); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof WordClusterDictionary)) { throw new InvalidFormatException("Not a WordClusterDictionary resource for key: " + dictResourceKey); } return new WordClusterFeatureGenerator((WordClusterDictionary) dictResource, dictResourceKey, lowerCaseDictionary); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("wordcluster", new WordClusterFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String dictResourceKey = getStr("dict"); boolean lowerCaseDictionary = getBool("lowerCase"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof WordClusterDictionary)) { throw new InvalidFormatException("Not a WordClusterDictionary resource for key: " + dictResourceKey); } return new WordClusterFeatureGenerator((WordClusterDictionary) dictResource, dictResourceKey, lowerCaseDictionary); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("dict"), new WordClusterDictionary.WordClusterDictionarySerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000205 14135770370 032626 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenPatternFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenPatternFeatu0100664 0001750 0001750 00000003564 14135770370 034204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see TokenPatternFeatureGenerator */ public class TokenPatternFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public TokenPatternFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new TokenPatternFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("tokenpattern", new TokenPatternFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new TokenPatternFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000203 14135770370 032602 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BigramNameFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BigramNameFeature0100664 0001750 0001750 00000003470 14135770370 034113 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; public class BigramNameFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public BigramNameFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new BigramNameFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("bigram", new BigramNameFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new BigramNameFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_F0100644 0000000 0000000 00000000202 14135770370 032605 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/FeatureGeneratorResourceProvider.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/FeatureGeneratorR0100664 0001750 0001750 00000002654 14135770370 034164 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; /** * The {@link FeatureGeneratorResourceProvider} provides access to the resources * provided in the model. Inside the model resources are identified by a * name. *

* Note:
* This class is not be intended to be implemented by users.
* All implementing classes must be thread safe. */ public interface FeatureGeneratorResourceProvider { /** * Retrieves the resource object for the given name/identifier. * * @param resourceIdentifier the identifier which names the resource. * * @return the resource object */ Object getResource(String resourceIdentifier); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000177 14135770370 032615 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CachedFeatureGene0100664 0001750 0001750 00000005322 14135770370 034055 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import opennlp.tools.util.InvalidFormatException; /** * @see CachedFeatureGenerator */ public class CachedFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public CachedFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { Element cachedGeneratorElement = null; NodeList kids = generatorElement.getChildNodes(); for (int i = 0; i < kids.getLength(); i++) { Node childNode = kids.item(i); if (childNode instanceof Element) { cachedGeneratorElement = (Element) childNode; break; } } if (cachedGeneratorElement == null) { throw new InvalidFormatException("Could not find containing generator element!"); } AdaptiveFeatureGenerator cachedGenerator = GeneratorFactory.createGenerator(cachedGeneratorElement, resourceManager); return new CachedFeatureGenerator(cachedGenerator); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("cache", new CachedFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { AdaptiveFeatureGenerator generator = (AdaptiveFeatureGenerator)args.get("generator#0"); if (generator == null) { throw new InvalidFormatException("Could not find containing generator element!"); } return new CachedFeatureGenerator(generator); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000167 14135770370 032635 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenFeatureGener0100664 0001750 0001750 00000003016 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import opennlp.tools.util.StringUtil; /** * Generates a feature which contains the token itself. */ public class TokenFeatureGenerator implements AdaptiveFeatureGenerator { private static final String WORD_PREFIX = "w"; private boolean lowercase; public TokenFeatureGenerator(boolean lowercase) { this.lowercase = lowercase; } public TokenFeatureGenerator() { this(true); } public void createFeatures(List features, String[] tokens, int index, String[] preds) { if (lowercase) { features.add(WORD_PREFIX + "=" + StringUtil.toLowerCase(tokens[index])); } else { features.add(WORD_PREFIX + "=" + tokens[index]); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_T0100644 0000000 0000000 00000000174 14135770370 032633 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeature0100664 0001750 0001750 00000003450 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import opennlp.tools.util.StringUtil; /** * Generates features for different for the class of the token. */ public class TokenClassFeatureGenerator implements AdaptiveFeatureGenerator { private static final String TOKEN_CLASS_PREFIX = "wc"; private static final String TOKEN_AND_CLASS_PREFIX = "w&c"; private boolean generateWordAndClassFeature; public TokenClassFeatureGenerator() { this(false); } public TokenClassFeatureGenerator(boolean generateWordAndClassFeature) { this.generateWordAndClassFeature = generateWordAndClassFeature; } public void createFeatures(List features, String[] tokens, int index, String[] preds) { String wordClass = FeatureGeneratorUtil.tokenFeature(tokens[index]); features.add(TOKEN_CLASS_PREFIX + "=" + wordClass); if (generateWordAndClassFeature) { features.add(TOKEN_AND_CLASS_PREFIX + "=" + StringUtil.toLowerCase(tokens[index]) + "," + wordClass); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_A0100644 0000000 0000000 00000000203 14135770370 032601 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AdditionalContextFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AdditionalContext0100664 0001750 0001750 00000002753 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * The {@link AdditionalContextFeatureGenerator} generates the context from the passed * in additional context. */ public class AdditionalContextFeatureGenerator implements AdaptiveFeatureGenerator { private String[][] additionalContext; public void createFeatures(List features, String[] tokens, int index, String[] preds) { if (additionalContext != null && additionalContext.length != 0) { String[] context = additionalContext[index]; for (String s : context) { features.add("ne=" + s); } } } public void setCurrentContext(String[][] context) { additionalContext = context; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000175 14135770370 032637 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WordClusterFeatur0100664 0001750 0001750 00000003357 14135770370 034225 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; import opennlp.tools.util.StringUtil; public class WordClusterFeatureGenerator implements AdaptiveFeatureGenerator { private WordClusterDictionary tokenDictionary; private String resourceName; private boolean lowerCaseDictionary; public WordClusterFeatureGenerator(WordClusterDictionary dict, String dictResourceKey, boolean lowerCaseDictionary) { tokenDictionary = dict; resourceName = dictResourceKey; this.lowerCaseDictionary = lowerCaseDictionary; } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String clusterId; if (lowerCaseDictionary) { clusterId = tokenDictionary.lookupToken(StringUtil.toLowerCase(tokens[index])); } else { clusterId = tokenDictionary.lookupToken(tokens[index]); } if (clusterId != null) { features.add(resourceName + clusterId); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000217 14135770370 032607 xustar000000000 0000000 143 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterTokenClassFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownClusterToken0100664 0001750 0001750 00000006043 14135770370 034226 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; /** * Generates Brown clustering features for token classes. */ public class BrownClusterTokenClassFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public BrownClusterTokenClassFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String dictResourceKey = generatorElement.getAttribute("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownTokenClassFeatureGenerator((BrownCluster) dictResource); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("brownclustertokenclass", new BrownClusterTokenClassFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String dictResourceKey = getStr("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof BrownCluster)) { throw new InvalidFormatException("Not a BrownLexicon resource for key: " + dictResourceKey); } return new BrownTokenClassFeatureGenerator((BrownCluster) dictResource); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("dict"), new BrownCluster.BrownClusterSerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000170 14135770370 032626 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SuffixFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/SuffixFeatureGene0100664 0001750 0001750 00000003360 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; public class SuffixFeatureGenerator implements AdaptiveFeatureGenerator { static final int DEFAULT_MAX_LENGTH = 4; private final int suffixLength; public SuffixFeatureGenerator() { suffixLength = DEFAULT_MAX_LENGTH; } public SuffixFeatureGenerator(int suffixLength) { this.suffixLength = suffixLength; } @Override public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String[] suffs = getSuffixes(tokens[index]); for (String suff : suffs) { features.add("suf=" + suff); } } private String[] getSuffixes(String lex) { int suffixes = StrictMath.min(suffixLength, lex.length()); String[] suffs = new String[suffixes]; for (int li = 0; li < suffixes; li++) { suffs[li] = lex.substring(StrictMath.max(lex.length() - li - 1, 0)); } return suffs; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_S0100644 0000000 0000000 00000000157 14135770370 032633 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/StringPattern.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/StringPattern.jav0100664 0001750 0001750 00000014154 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; /** * Recognizes predefined patterns in strings. */ public class StringPattern { private static final int INITAL_CAPITAL_LETTER = 0x1; private static final int ALL_CAPITAL_LETTER = 0x1 << 1; private static final int ALL_LOWERCASE_LETTER = 0x1 << 2; private static final int ALL_LETTERS = 0x1 << 3; private static final int ALL_DIGIT = 0x1 << 4; private static final int ALL_HIRAGANA = 0x1 << 5; private static final int ALL_KATAKANA = 0x1 << 6; private static final int CONTAINS_PERIOD = 0x1 << 7; private static final int CONTAINS_COMMA = 0x1 << 8; private static final int CONTAINS_SLASH = 0x1 << 9; private static final int CONTAINS_DIGIT = 0x1 << 10; private static final int CONTAINS_HYPHEN = 0x1 << 11; private static final int CONTAINS_LETTERS = 0x1 << 12; private static final int CONTAINS_UPPERCASE = 0x1 << 13; private final int pattern; private final int digits; private StringPattern(int pattern, int digits) { this.pattern = pattern; this.digits = digits; } public static StringPattern recognize(String token) { int pattern = ALL_CAPITAL_LETTER | ALL_LOWERCASE_LETTER | ALL_DIGIT | ALL_LETTERS | ALL_HIRAGANA | ALL_KATAKANA; int digits = 0; for (int i = 0; i < token.length(); i++) { final char ch = token.charAt(i); final int letterType = Character.getType(ch); boolean isLetter = letterType == Character.UPPERCASE_LETTER || letterType == Character.LOWERCASE_LETTER || letterType == Character.TITLECASE_LETTER || letterType == Character.MODIFIER_LETTER || letterType == Character.OTHER_LETTER; if (isLetter) { pattern |= CONTAINS_LETTERS; pattern &= ~ALL_DIGIT; if (letterType == Character.UPPERCASE_LETTER) { if (i == 0) { pattern |= INITAL_CAPITAL_LETTER; } pattern |= CONTAINS_UPPERCASE; pattern &= ~ALL_LOWERCASE_LETTER; } else { pattern &= ~ALL_CAPITAL_LETTER; } } else { // contains chars other than letter, this means // it can not be one of these: pattern &= ~ALL_LETTERS; pattern &= ~ALL_CAPITAL_LETTER; pattern &= ~ALL_LOWERCASE_LETTER; if (letterType == Character.DECIMAL_DIGIT_NUMBER) { pattern |= CONTAINS_DIGIT; pattern &= ~(ALL_HIRAGANA | ALL_KATAKANA); digits++; } else { pattern &= ~ALL_DIGIT; } switch (ch) { case ',': pattern |= CONTAINS_COMMA; break; case '.': pattern |= CONTAINS_PERIOD; break; case '/': pattern |= CONTAINS_SLASH; break; case '-': pattern |= CONTAINS_HYPHEN; break; default: break; } } // for Japanese... final int codePoint = token.codePointAt(i); final Character.UnicodeScript us = Character.UnicodeScript.of(codePoint); if (us != Character.UnicodeScript.COMMON) { if (us == Character.UnicodeScript.LATIN) { pattern &= ~(ALL_HIRAGANA | ALL_KATAKANA); } else if (us == Character.UnicodeScript.HAN) { pattern &= ~(ALL_HIRAGANA | ALL_KATAKANA | ALL_LOWERCASE_LETTER); } else if (us == Character.UnicodeScript.HIRAGANA) { pattern &= ~(ALL_KATAKANA | ALL_LOWERCASE_LETTER); } else if (us == Character.UnicodeScript.KATAKANA) { pattern &= ~(ALL_HIRAGANA | ALL_LOWERCASE_LETTER); } } else { if (ch != '・' && ch != 'ー' && ch != '〜') pattern &= ~(ALL_HIRAGANA | ALL_KATAKANA); } } return new StringPattern(pattern, digits); } /** * @return true if all characters are letters. */ public boolean isAllLetter() { return (pattern & ALL_LETTERS) > 0; } /** * @return true if first letter is capital. */ public boolean isInitialCapitalLetter() { return (pattern & INITAL_CAPITAL_LETTER) > 0; } /** * @return true if all letters are capital. */ public boolean isAllCapitalLetter() { return (pattern & ALL_CAPITAL_LETTER) > 0; } /** * @return true if all letters are lower case. */ public boolean isAllLowerCaseLetter() { return (pattern & ALL_LOWERCASE_LETTER) > 0; } /** * @return true if all chars are digits. */ public boolean isAllDigit() { return (pattern & ALL_DIGIT) > 0; } /** * @return true if all chars are hiragana. */ public boolean isAllHiragana() { return (pattern & ALL_HIRAGANA) > 0; } /** * @return true if all chars are katakana. */ public boolean isAllKatakana() { return (pattern & ALL_KATAKANA) > 0; } /** * Retrieves the number of digits. */ public int digits() { return digits; } public boolean containsPeriod() { return (pattern & CONTAINS_PERIOD) > 0; } public boolean containsComma() { return (pattern & CONTAINS_COMMA) > 0; } public boolean containsSlash() { return (pattern & CONTAINS_SLASH) > 0; } public boolean containsDigit() { return (pattern & CONTAINS_DIGIT) > 0; } public boolean containsHyphen() { return (pattern & CONTAINS_HYPHEN) > 0; } public boolean containsLetters() { return (pattern & CONTAINS_LETTERS) > 0; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000175 14135770370 032612 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownBigramFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownBigramFeatur0100664 0001750 0001750 00000004262 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * Generates Brown cluster features for token bigrams. */ public class BrownBigramFeatureGenerator implements AdaptiveFeatureGenerator { private BrownCluster brownCluster; /** * Creates a new Brown Cluster bigram feature generator. * @param brownCluster A {@link BrownCluster}. */ public BrownBigramFeatureGenerator(BrownCluster brownCluster) { this.brownCluster = brownCluster; } @Override public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { List wordClasses = BrownTokenClasses.getWordClasses(tokens[index], brownCluster); if (index > 0) { List prevWordClasses = BrownTokenClasses.getWordClasses(tokens[index - 1], brownCluster); for (int i = 0; i < wordClasses.size() && i < prevWordClasses.size(); i++) features.add("p" + "browncluster" + "," + "browncluster" + "=" + prevWordClasses.get(i) + "," + wordClasses.get(i)); } if (index + 1 < tokens.length) { List nextWordClasses = BrownTokenClasses.getWordClasses(tokens[index + 1], brownCluster); for (int i = 0; i < wordClasses.size() && i < nextWordClasses.size(); i++) { features.add("browncluster" + "," + "n" + "browncluster" + "=" + wordClasses.get(i) + "," + nextWordClasses.get(i)); } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_D0100644 0000000 0000000 00000000203 14135770370 032604 xustar000000000 0000000 131 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DictionaryFeature0100664 0001750 0001750 00000006152 14135770370 034216 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.DictionarySerializer; /** * @see DictionaryFeatureGenerator */ public class DictionaryFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public DictionaryFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String dictResourceKey = generatorElement.getAttribute("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof Dictionary)) { throw new InvalidFormatException("No dictionary resource for key: " + dictResourceKey); } String prefix = generatorElement.getAttribute("prefix"); return new DictionaryFeatureGenerator(prefix, (Dictionary) dictResource); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("dictionary", new DictionaryFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String dictResourceKey = getStr("dict"); Object dictResource = resourceManager.getResource(dictResourceKey); if (!(dictResource instanceof Dictionary)) { throw new InvalidFormatException("No dictionary resource for key: " + dictResourceKey); } return new DictionaryFeatureGenerator(getStr("prefix"), (Dictionary) dictResource); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("dict"), new DictionarySerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_A0100644 0000000 0000000 00000000172 14135770370 032606 xustar000000000 0000000 122 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AdaptiveFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AdaptiveFeatureGe0100664 0001750 0001750 00000004715 14135770370 034125 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * An interface for generating features for name entity identification and for * updating document level contexts. *

* * Note:
* Feature generation is not thread safe and a instance of a feature generator * must only be called from one thread. The resources used by a feature * generator are typically shared between man instances of features generators * which are called from many threads and have to be thread safe. */ public interface AdaptiveFeatureGenerator { /** * Adds the appropriate features for the token at the specified index with the * specified array of previous outcomes to the specified list of features. * * @param features The list of features to be added to. * @param tokens The tokens of the sentence or other text unit being processed. * @param index The index of the token which is currently being processed. * @param previousOutcomes The outcomes for the tokens prior to the specified index. */ void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes); /** * Informs the feature generator that the specified tokens have been classified with the * corresponding set of specified outcomes. * * @param tokens The tokens of the sentence or other text unit which has been processed. * @param outcomes The outcomes associated with the specified tokens. */ default void updateAdaptiveData(String[] tokens, String[] outcomes) {}; /** * Informs the feature generator that the context of the adaptive data (typically a document) * is no longer valid. */ default void clearAdaptiveData() {}; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_B0100644 0000000 0000000 00000000174 14135770370 032611 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownTokenFeature0100664 0001750 0001750 00000002663 14135770370 034204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; /** * Generates Brown cluster features for current token. */ public class BrownTokenFeatureGenerator implements AdaptiveFeatureGenerator { private BrownCluster brownLexicon; public BrownTokenFeatureGenerator(BrownCluster dict) { this.brownLexicon = dict; } public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { List wordClasses = BrownTokenClasses.getWordClasses(tokens[index], brownLexicon); for (String wordClass : wordClasses) { features.add("browncluster" + "=" + wordClass); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_W0100644 0000000 0000000 00000000170 14135770370 032632 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WindowFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/WindowFeatureGene0100664 0001750 0001750 00000010135 14135770370 034153 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.List; /** * Generates previous and next features for a given {@link AdaptiveFeatureGenerator}. * The window size can be specified. * * Features: * Current token is always included unchanged * Previous tokens are prefixed with p distance * Next tokens are prefix with n distance */ public class WindowFeatureGenerator implements AdaptiveFeatureGenerator { public static final String PREV_PREFIX = "p"; public static final String NEXT_PREFIX = "n"; private final AdaptiveFeatureGenerator generator; private final int prevWindowSize; private final int nextWindowSize; /** * Initializes the current instance with the given parameters. * * @param generator Feature generator to apply to the window. * @param prevWindowSize Size of the window to the left of the current token. * @param nextWindowSize Size of the window to the right of the current token. */ public WindowFeatureGenerator(AdaptiveFeatureGenerator generator, int prevWindowSize, int nextWindowSize) { this.generator = generator; this.prevWindowSize = prevWindowSize; this.nextWindowSize = nextWindowSize; } /** * Initializes the current instance with the given parameters. * * @param prevWindowSize * @param nextWindowSize * @param generators */ public WindowFeatureGenerator(int prevWindowSize, int nextWindowSize, AdaptiveFeatureGenerator... generators) { this(new AggregatedFeatureGenerator(generators), prevWindowSize, nextWindowSize); } /** * Initializes the current instance. The previous and next window size is 5. * * @param generator feature generator */ public WindowFeatureGenerator(AdaptiveFeatureGenerator generator) { this(generator, 5, 5); } /** * Initializes the current instance with the given parameters. * * @param generators array of feature generators */ public WindowFeatureGenerator(AdaptiveFeatureGenerator... generators) { this(new AggregatedFeatureGenerator(generators), 5, 5); } public void createFeatures(List features, String[] tokens, int index, String[] preds) { // current features generator.createFeatures(features, tokens, index, preds); // previous features for (int i = 1; i < prevWindowSize + 1; i++) { if (index - i >= 0) { List prevFeatures = new ArrayList<>(); generator.createFeatures(prevFeatures, tokens, index - i, preds); for (String prevFeature : prevFeatures) { features.add(PREV_PREFIX + i + prevFeature); } } } // next features for (int i = 1; i < nextWindowSize + 1; i++) { if (i + index < tokens.length) { List nextFeatures = new ArrayList<>(); generator.createFeatures(nextFeatures, tokens, index + i, preds); for (String nextFeature : nextFeatures) { features.add(NEXT_PREFIX + i + nextFeature); } } } } public void updateAdaptiveData(String[] tokens, String[] outcomes) { generator.updateAdaptiveData(tokens, outcomes); } public void clearAdaptiveData() { generator.clearAdaptiveData(); } @Override public String toString() { return super.toString() + ": Prev window size: " + prevWindowSize + ", Next window size: " + nextWindowSize; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_G0100644 0000000 0000000 00000000162 14135770370 032613 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.0100664 0001750 0001750 00000070175 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.XmlUtil; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.DictionarySerializer; import opennlp.tools.util.model.POSModelSerializer; /** * Creates a set of feature generators based on a provided XML descriptor. * * Example of an XML descriptor: *

* <featureGenerators name="namefind"> * <generator class="opennlp.tools.util.featuregen.CachedFeatureGeneratorFactory"> * <generator class="opennlp.tools.util.featuregen.WindowFeatureGeneratorFactory"> * <int name="prevLength">2</int> * <int name="nextLength">2</int> * <generator class="opennlp.tools.util.featuregen.TokenClassFeatureGeneratorFactory"/> * </generator> * <generator class="opennlp.tools.util.featuregen.WindowFeatureGeneratorFactory"> * <int name="prevLength">2</int> * <int name="nextLength">2</int> * <generator class="opennlp.tools.util.featuregen.TokenFeatureGeneratorFactory"/> * </generator> * <generator class="opennlp.tools.util.featuregen.DefinitionFeatureGeneratorFactory"/> * <generator class="opennlp.tools.util.featuregen.PreviousMapFeatureGeneratorFactory"/> * <generator class="opennlp.tools.util.featuregen.BigramNameFeatureGeneratorFactory"/> * <generator class="opennlp.tools.util.featuregen.SentenceFeatureGeneratorFactory"> * <bool name="begin">true</bool> * <bool name="end">false</bool> * </generator> * </generator> * </featureGenerators> *

* * Each XML element is mapped to a {@link GeneratorFactory.XmlFeatureGeneratorFactory} which * is responsible to process the element and create the specified * {@link AdaptiveFeatureGenerator}. Elements can contain other * elements in this case it is the responsibility of the mapped factory to process * the child elements correctly. In some factories this leads to recursive * calls the * {@link GeneratorFactory.XmlFeatureGeneratorFactory#create(Element, FeatureGeneratorResourceProvider)} * method. * * In the example above the generators element is mapped to the * {@link AggregatedFeatureGeneratorFactory} which then * creates all the aggregated {@link AdaptiveFeatureGenerator}s to * accomplish this it evaluates the mapping with the same mechanism * and gives the child element to the corresponding factories. All * created generators are added to a new instance of the * {@link AggregatedFeatureGenerator} which is then returned. */ public class GeneratorFactory { /** * The {@link XmlFeatureGeneratorFactory} is responsible to construct * an {@link AdaptiveFeatureGenerator} from an given XML {@link Element} * which contains all necessary configuration if any. */ @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed interface XmlFeatureGeneratorFactory { /** * Creates an {@link AdaptiveFeatureGenerator} from a the describing * XML element. * * @param generatorElement the element which contains the configuration * @param resourceManager the resource manager which could be used * to access referenced resources * * @return the configured {@link AdaptiveFeatureGenerator} */ AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException; } public static abstract class AbstractXmlFeatureGeneratorFactory { protected Element generatorElement; protected FeatureGeneratorResourceProvider resourceManager; // to respect the order in AggregatedFeatureGenerator, let's use LinkedHashMap protected LinkedHashMap args; public AbstractXmlFeatureGeneratorFactory() { args = new LinkedHashMap<>(); } public Map> getArtifactSerializerMapping() throws InvalidFormatException { return null; } final void init(Element element, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { this.generatorElement = element; this.resourceManager = resourceManager; List generators = new ArrayList<>(); NodeList childNodes = generatorElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); if (childNode instanceof Element) { Element elem = (Element)childNode; String type = elem.getTagName(); if (type.equals("generator")) { String key = "generator#" + Integer.toString(generators.size()); AdaptiveFeatureGenerator afg = buildGenerator(elem, resourceManager); generators.add(afg); if (afg != null) args.put(key, afg); } else { String name = elem.getAttribute("name"); Node cn = elem.getFirstChild(); Text text = (Text)cn; switch (type) { case "int" : args.put(name, Integer.parseInt(text.getWholeText())); break; case "long" : args.put(name, Long.parseLong(text.getWholeText())); break; case "float" : args.put(name, Float.parseFloat(text.getWholeText())); break; case "double" : args.put(name, Double.parseDouble(text.getWholeText())); break; case "str" : args.put(name, text.getWholeText()); break; case "bool" : args.put(name, Boolean.parseBoolean(text.getWholeText())); break; default: throw new InvalidFormatException( "child element must be one of generator, int, long, float, double," + " str or bool"); } } } } if (generators.size() > 1) { AdaptiveFeatureGenerator aggregatedFeatureGenerator = new AggregatedFeatureGenerator(generators.toArray( new AdaptiveFeatureGenerator[generators.size()])); args.put("generator#0", aggregatedFeatureGenerator); } } public int getInt(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof Integer) { return (Integer)value; } else { throw new InvalidFormatException("parameter " + name + " must be integer!"); } } public int getInt(String name, int defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof Integer) { return (Integer)value; } else { throw new InvalidFormatException("parameter " + name + " must be integer!"); } } public long getLong(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof Long) { return (Long)value; } else { throw new InvalidFormatException("parameter " + name + " must be long!"); } } public long getLong(String name, long defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof Long) { return (Long)value; } else { throw new InvalidFormatException("parameter " + name + " must be long!"); } } public float getFloat(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof Float) { return (Float)value; } else { throw new InvalidFormatException("parameter " + name + " must be float!"); } } public float getFloat(String name, float defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof Float) { return (Float)value; } else { throw new InvalidFormatException("parameter " + name + " must be float!"); } } public double getDouble(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof Double) { return (Double)value; } else { throw new InvalidFormatException("parameter " + name + " must be double!"); } } public double getDouble(String name, double defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof Double) { return (Double)value; } else { throw new InvalidFormatException("parameter " + name + " must be double!"); } } public String getStr(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof String) { return (String)value; } else { throw new InvalidFormatException("parameter " + name + " must be double!"); } } public String getStr(String name, String defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof String) { return (String)value; } else { throw new InvalidFormatException("parameter " + name + " must be String!"); } } public boolean getBool(String name) throws InvalidFormatException { Object value = args.get(name); if (value == null) { throw new InvalidFormatException("parameter " + name + " must be set!"); } else if (value instanceof Boolean) { return (Boolean)value; } else { throw new InvalidFormatException("parameter " + name + " must be boolean!"); } } public boolean getBool(String name, boolean defValue) throws InvalidFormatException { Object value = args.get(name); if (value == null) { return defValue; } else if (value instanceof Boolean) { return (Boolean)value; } else { throw new InvalidFormatException("parameter " + name + " must be boolean!"); } } /** * * @return null if the subclass uses {@link #resourceManager} to instantiate * @throws InvalidFormatException */ public abstract AdaptiveFeatureGenerator create() throws InvalidFormatException; } // TODO: We have to support custom resources here. How does it work ?! // Attributes get into a Map properties // How can serialization be supported ?! // The model is loaded, and the manifest should contain all serializer classes registered for the // resources by name. // When training, the descriptor could be consulted first to register the serializers, and afterwards // they are stored in the model. // TODO: (OPENNLP-1174) just remove this class when back-compat is no longer needed static class CustomFeatureGeneratorFactory implements XmlFeatureGeneratorFactory { public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String featureGeneratorClassName = generatorElement.getAttribute("class"); AdaptiveFeatureGenerator generator = ExtensionLoader.instantiateExtension(AdaptiveFeatureGenerator.class, featureGeneratorClassName); if (generator instanceof CustomFeatureGenerator) { CustomFeatureGenerator customGenerator = (CustomFeatureGenerator) generator; Map properties = new HashMap<>(); NamedNodeMap attributes = generatorElement.getAttributes(); for (int i = 0; i < attributes.getLength(); i++) { Node attribute = attributes.item(i); if (!"class".equals(attribute.getNodeName())) { properties.put(attribute.getNodeName(), attribute.getNodeValue()); } } if (resourceManager != null) { customGenerator.init(properties, resourceManager); } } return generator; } static void register(Map factoryMap) { factoryMap.put("custom", new CustomFeatureGeneratorFactory()); } } // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed private static Map factories = new HashMap<>(); // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static { AggregatedFeatureGeneratorFactory.register(factories); CachedFeatureGeneratorFactory.register(factories); CharacterNgramFeatureGeneratorFactory.register(factories); DefinitionFeatureGeneratorFactory.register(factories); DictionaryFeatureGeneratorFactory.register(factories); DocumentBeginFeatureGeneratorFactory.register(factories); PreviousMapFeatureGeneratorFactory.register(factories); SentenceFeatureGeneratorFactory.register(factories); TokenClassFeatureGeneratorFactory.register(factories); TokenFeatureGeneratorFactory.register(factories); BigramNameFeatureGeneratorFactory.register(factories); TokenPatternFeatureGeneratorFactory.register(factories); PosTaggerFeatureGeneratorFactory.register(factories); PrefixFeatureGeneratorFactory.register(factories); SuffixFeatureGeneratorFactory.register(factories); WindowFeatureGeneratorFactory.register(factories); WordClusterFeatureGeneratorFactory.register(factories); BrownClusterTokenFeatureGeneratorFactory.register(factories); BrownClusterTokenClassFeatureGeneratorFactory.register(factories); BrownClusterBigramFeatureGeneratorFactory.register(factories); CustomFeatureGeneratorFactory.register(factories); POSTaggerNameFeatureGeneratorFactory.register(factories); } /** * Creates a {@link AdaptiveFeatureGenerator} for the provided element. * To accomplish this it looks up the corresponding factory by the * element tag name. The factory is then responsible for the creation * of the generator from the element. * * @param generatorElement * @param resourceManager * * @return */ @Deprecated // TODO: (OPENNLP-1174) remove back-compat support when it is unnecessary static AdaptiveFeatureGenerator createGenerator(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String elementName = generatorElement.getTagName(); // check it is new format? if (elementName.equals("featureGenerators")) { List generators = new ArrayList<>(); NodeList childNodes = generatorElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); if (childNode instanceof Element) { Element elem = (Element)childNode; String type = elem.getTagName(); if (type.equals("generator")) { generators.add(buildGenerator(elem, resourceManager)); } else throw new InvalidFormatException("Unexpected element: " + elementName); } } AdaptiveFeatureGenerator featureGenerator = null; if (generators.size() == 1) featureGenerator = generators.get(0); else if (generators.size() > 1) featureGenerator = new AggregatedFeatureGenerator(generators.toArray( new AdaptiveFeatureGenerator[generators.size()])); else throw new InvalidFormatException("featureGenerators must have one or more generators"); // disallow manually specifying CachedFeatureGenerator if (featureGenerator instanceof CachedFeatureGenerator) throw new InvalidFormatException("CachedFeatureGeneratorFactory cannot be specified manually." + "Use cache=\"true\" attribute in featureGenerators element instead."); // check cache usage if (Boolean.parseBoolean(generatorElement.getAttribute("cache"))) return new CachedFeatureGenerator(featureGenerator); else return featureGenerator; } else { // support classic format XmlFeatureGeneratorFactory generatorFactory = factories.get(elementName); if (generatorFactory != null) { return generatorFactory.create(generatorElement, resourceManager); } else throw new InvalidFormatException("Unexpected element: " + elementName); } } static Element getFirstChild(Element elem) { NodeList nodes = elem.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { if (nodes.item(i) instanceof Element) { return (Element)nodes.item(i); } } return null; } /** * Creates a {@link AdaptiveFeatureGenerator} for the provided element. * To accomplish this it looks up the corresponding factory by the * element tag name. The factory is then responsible for the creation * of the generator from the element. * * @param generatorElement * @param resourceManager * * @return */ static AdaptiveFeatureGenerator buildGenerator(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String className = generatorElement.getAttribute("class"); if (className == null) { throw new InvalidFormatException("generator must have class attribute"); } else { try { Class factoryClass = Class.forName(className); try { Constructor constructor = factoryClass.getConstructor(); AbstractXmlFeatureGeneratorFactory factory = (AbstractXmlFeatureGeneratorFactory)constructor.newInstance(); factory.init(generatorElement, resourceManager); return factory.create(); } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } } private static org.w3c.dom.Document createDOM(InputStream xmlDescriptorIn) throws IOException { DocumentBuilder documentBuilder = XmlUtil.createDocumentBuilder(); org.w3c.dom.Document xmlDescriptorDOM; try { xmlDescriptorDOM = documentBuilder.parse(xmlDescriptorIn); } catch (SAXException e) { throw new InvalidFormatException("Descriptor is not valid XML!", e); } return xmlDescriptorDOM; } /** * Creates an {@link AdaptiveFeatureGenerator} from an provided XML descriptor. * * Usually this XML descriptor contains a set of nested feature generators * which are then used to generate the features by one of the opennlp * components. * * @param xmlDescriptorIn the {@link InputStream} from which the descriptor * is read, the stream remains open and must be closed by the caller. * * @param resourceManager the resource manager which is used to resolve resources * referenced by a key in the descriptor * * @return created feature generators * * @throws IOException if an error occurs during reading from the descriptor * {@link InputStream} */ public static AdaptiveFeatureGenerator create(InputStream xmlDescriptorIn, FeatureGeneratorResourceProvider resourceManager) throws IOException { org.w3c.dom.Document xmlDescriptorDOM = createDOM(xmlDescriptorIn); Element generatorElement = xmlDescriptorDOM.getDocumentElement(); // TODO: (OPENNLP-1174) use #buildGenerator() after back-compat support is gone return createGenerator(generatorElement, resourceManager); } public static Map> extractArtifactSerializerMappings( InputStream xmlDescriptorIn) throws IOException { org.w3c.dom.Document xmlDescriptorDOM = createDOM(xmlDescriptorIn); Element element = xmlDescriptorDOM.getDocumentElement(); String elementName = element.getTagName(); // check it is new format? if (elementName.equals("featureGenerators")) { Map> mapping = new HashMap<>(); NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { if (nodes.item(i) instanceof Element) { Element childElem = (Element)nodes.item(i); if (childElem.getTagName().equals("generator")) { extractArtifactSerializerMappings(mapping, childElem); } } } return mapping; } else { return extractArtifactSerializerMappingsClassicFormat(element); } } static void extractArtifactSerializerMappings(Map> mapping, Element element) { String className = element.getAttribute("class"); if (className != null) { try { Class factoryClass = Class.forName(className); try { Constructor constructor = factoryClass.getConstructor(); AbstractXmlFeatureGeneratorFactory factory = (AbstractXmlFeatureGeneratorFactory)constructor.newInstance(); factory.init(element, null); Map> map = factory.getArtifactSerializerMapping(); if (map != null) mapping.putAll(map); } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } catch (InvalidFormatException ignored) { } } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { if (nodes.item(i) instanceof Element) { Element childElem = (Element)nodes.item(i); if (childElem.getTagName().equals("generator")) { extractArtifactSerializerMappings(mapping, childElem); } } } } @Deprecated // TODO: (OPENNLP-1174) remove back-compat support when it is unnecessary static Map> extractArtifactSerializerMappingsClassicFormat( Element elem) throws IOException { Map> mapping = new HashMap<>(); XPath xPath = XPathFactory.newInstance().newXPath(); NodeList customElements; try { XPathExpression exp = xPath.compile("//custom"); customElements = (NodeList) exp.evaluate(elem, XPathConstants.NODESET); } catch (XPathExpressionException e) { throw new IllegalStateException("The hard coded XPath expression should always be valid!"); } for (int i = 0; i < customElements.getLength(); i++) { if (customElements.item(i) instanceof Element) { Element customElement = (Element) customElements.item(i); // Note: The resource provider is not available at that point, to provide // resources they need to be loaded first! AdaptiveFeatureGenerator generator = createGenerator(customElement, null); if (generator instanceof ArtifactToSerializerMapper) { ArtifactToSerializerMapper mapper = (ArtifactToSerializerMapper) generator; mapping.putAll(mapper.getArtifactSerializerMapping()); } } } NodeList allElements; try { XPathExpression exp = xPath.compile("//*"); allElements = (NodeList) exp.evaluate(elem, XPathConstants.NODESET); } catch (XPathExpressionException e) { throw new IllegalStateException("The hard coded XPath expression should always be valid!"); } for (int i = 0; i < allElements.getLength(); i++) { if (allElements.item(i) instanceof Element) { Element xmlElement = (Element) allElements.item(i); String dictName = xmlElement.getAttribute("dict"); if (dictName != null) { switch (xmlElement.getTagName()) { case "wordcluster": mapping.put(dictName, new WordClusterDictionary.WordClusterDictionarySerializer()); break; case "brownclustertoken": mapping.put(dictName, new BrownCluster.BrownClusterSerializer()); break; case "brownclustertokenclass"://, ; mapping.put(dictName, new BrownCluster.BrownClusterSerializer()); break; case "brownclusterbigram": //, ; mapping.put(dictName, new BrownCluster.BrownClusterSerializer()); break; case "dictionary": mapping.put(dictName, new DictionarySerializer()); break; } } String modelName = xmlElement.getAttribute("model"); if (modelName != null) { if ("tokenpos".equals(xmlElement.getTagName())) { mapping.put(modelName, new POSModelSerializer()); } } } } return mapping; } /** * Provides a list with all the elements in the xml feature descriptor. * @param xmlDescriptorIn the xml feature descriptor * @return a list containing all elements * @throws IOException if inputstream cannot be open * @throws InvalidFormatException if xml is not well-formed */ public static List getDescriptorElements(InputStream xmlDescriptorIn) throws IOException { List elements = new ArrayList<>(); org.w3c.dom.Document xmlDescriptorDOM = createDOM(xmlDescriptorIn); XPath xPath = XPathFactory.newInstance().newXPath(); NodeList allElements; try { XPathExpression exp = xPath.compile("//*"); allElements = (NodeList) exp.evaluate(xmlDescriptorDOM.getDocumentElement(), XPathConstants.NODESET); } catch (XPathExpressionException e) { throw new IllegalStateException("The hard coded XPath expression should always be valid!"); } for (int i = 0; i < allElements.getLength(); i++) { if (allElements.item(i) instanceof Element) { Element customElement = (Element) allElements.item(i); elements.add(customElement); } } return elements; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000200 14135770370 032615 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousTwoMapFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PreviousTwoMapFea0100664 0001750 0001750 00000003453 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.List; import java.util.Map; /** * This {@link AdaptiveFeatureGenerator} generates features indicating the * outcome associated with two previously occuring words. */ public class PreviousTwoMapFeatureGenerator implements AdaptiveFeatureGenerator { private Map previousMap = new HashMap<>(); /** * Generates previous decision features for the token based on contents of the previous map. */ public void createFeatures(List features, String[] tokens, int index, String[] preds) { if (index > 0) { features.add("ppd=" + previousMap.get(tokens[index]) + "," + previousMap.get(tokens[index - 1])); } } public void updateAdaptiveData(String[] tokens, String[] outcomes) { for (int i = 0; i < tokens.length; i++) { previousMap.put(tokens[i], outcomes[i]); } } /** * Clears the previous map. */ public void clearAdaptiveData() { previousMap.clear(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_D0100644 0000000 0000000 00000000206 14135770370 032607 xustar000000000 0000000 134 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DocumentBeginFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/DocumentBeginFeat0100664 0001750 0001750 00000003510 14135770370 034113 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; public class DocumentBeginFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public DocumentBeginFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new DocumentBeginFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("docbegin", new DocumentBeginFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new DocumentBeginFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_A0100644 0000000 0000000 00000000174 14135770370 032610 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/AggregatedFeature0100664 0001750 0001750 00000006506 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; /** * The {@link AggregatedFeatureGenerator} aggregates a set of * {@link AdaptiveFeatureGenerator}s and calls them to generate the features. */ public class AggregatedFeatureGenerator implements AdaptiveFeatureGenerator { /** * Contains all aggregated {@link AdaptiveFeatureGenerator}s. */ private Collection generators; /** * Initializes the current instance. * * @param generators array of generators, null values are not permitted */ public AggregatedFeatureGenerator(AdaptiveFeatureGenerator... generators) { for (AdaptiveFeatureGenerator generator : generators) { Objects.requireNonNull(generator, "null values in generators are not permitted"); } this.generators = new ArrayList<>(generators.length); Collections.addAll(this.generators, generators); this.generators = Collections.unmodifiableCollection(this.generators); } public AggregatedFeatureGenerator(Collection generators) { this(generators.toArray(new AdaptiveFeatureGenerator[generators.size()])); } /** * Calls the {@link AdaptiveFeatureGenerator#clearAdaptiveData()} method * on all aggregated {@link AdaptiveFeatureGenerator}s. */ public void clearAdaptiveData() { for (AdaptiveFeatureGenerator generator : generators) { generator.clearAdaptiveData(); } } /** * Calls the {@link AdaptiveFeatureGenerator#createFeatures(List, String[], int, String[])} * method on all aggregated {@link AdaptiveFeatureGenerator}s. */ public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { for (AdaptiveFeatureGenerator generator : generators) { generator.createFeatures(features, tokens, index, previousOutcomes); } } /** * Calls the {@link AdaptiveFeatureGenerator#updateAdaptiveData(String[], String[])} * method on all aggregated {@link AdaptiveFeatureGenerator}s. */ public void updateAdaptiveData(String[] tokens, String[] outcomes) { for (AdaptiveFeatureGenerator generator : generators) { generator.updateAdaptiveData(tokens, outcomes); } } /** * Retrieves a {@link Collections} of all aggregated * {@link AdaptiveFeatureGenerator}s. * * @return all aggregated generators */ public Collection getGenerators() { return generators; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000202 14135770370 032617 xustar000000000 0000000 130 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PosTaggerFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PosTaggerFeatureG0100664 0001750 0001750 00000003465 14135770370 034117 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; public class PosTaggerFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public PosTaggerFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { return new PosTaggerFeatureGenerator(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("postagger", new PosTaggerFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new PosTaggerFeatureGenerator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000177 14135770370 032632 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PrefixFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PrefixFeatureGene0100664 0001750 0001750 00000004267 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import java.util.Objects; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see PrefixFeatureGenerator */ public class PrefixFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public PrefixFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { String attribute = generatorElement.getAttribute("length"); int prefixLength = PrefixFeatureGenerator.DEFAULT_MAX_LENGTH; if (!Objects.equals(attribute, "")) { prefixLength = Integer.parseInt(attribute); } return new PrefixFeatureGenerator(prefixLength); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("prefix", new PrefixFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new PrefixFeatureGenerator(getInt("length", PrefixFeatureGenerator.DEFAULT_MAX_LENGTH)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_C0100644 0000000 0000000 00000000207 14135770370 032607 xustar000000000 0000000 135 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CharacterNgramFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/CharacterNgramFea0100664 0001750 0001750 00000004736 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.util.InvalidFormatException; /** * @see CharacterNgramFeatureGenerator */ public class CharacterNgramFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public CharacterNgramFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String minString = generatorElement.getAttribute("min"); int min; try { min = Integer.parseInt(minString); } catch (NumberFormatException e) { throw new InvalidFormatException("min attribute '" + minString + "' is not a number!", e); } String maxString = generatorElement.getAttribute("max"); int max; try { max = Integer.parseInt(maxString); } catch (NumberFormatException e) { throw new InvalidFormatException("max attribute '" + maxString + "' is not a number!", e); } return new CharacterNgramFeatureGenerator(min, max); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("charngram", new CharacterNgramFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { return new CharacterNgramFeatureGenerator(getInt("min"), getInt("max")); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000170 14135770370 032623 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PrefixFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/PrefixFeatureGene0100664 0001750 0001750 00000003350 14135770370 034142 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.List; public class PrefixFeatureGenerator implements AdaptiveFeatureGenerator { static final int DEFAULT_MAX_LENGTH = 4; private final int prefixLength; public PrefixFeatureGenerator() { prefixLength = DEFAULT_MAX_LENGTH; } public PrefixFeatureGenerator(int prefixLength) { this.prefixLength = prefixLength; } @Override public void createFeatures(List features, String[] tokens, int index, String[] previousOutcomes) { String[] prefs = getPrefixes(tokens[index]); for (String pref : prefs) { features.add("pre=" + pref); } } private String[] getPrefixes(String lex) { int prefixes = StrictMath.min(prefixLength, lex.length()); String[] prefs = new String[prefixes]; for (int li = 0; li < prefixes; li++) { prefs[li] = lex.substring(0, StrictMath.min(li + 1, lex.length())); } return prefs; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000206 14135770370 032623 xustar000000000 0000000 134 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/POSTaggerNameFeatureGeneratorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/POSTaggerNameFeat0100664 0001750 0001750 00000005334 14135770370 033772 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.HashMap; import java.util.Map; import org.w3c.dom.Element; import opennlp.tools.postag.POSModel; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.POSModelSerializer; /** * @see POSTaggerNameFeatureGenerator */ public class POSTaggerNameFeatureGeneratorFactory extends GeneratorFactory.AbstractXmlFeatureGeneratorFactory implements GeneratorFactory.XmlFeatureGeneratorFactory { public POSTaggerNameFeatureGeneratorFactory() { super(); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) throws InvalidFormatException { String modelResourceKey = generatorElement.getAttribute("model"); POSModel model = (POSModel)resourceManager.getResource(modelResourceKey); return new POSTaggerNameFeatureGenerator(model); } @Deprecated // TODO: (OPENNLP-1174) just remove when back-compat is no longer needed static void register(Map factoryMap) { factoryMap.put("tokenpos", new POSTaggerNameFeatureGeneratorFactory()); } @Override public AdaptiveFeatureGenerator create() throws InvalidFormatException { // if resourceManager is null, we don't instantiate if (resourceManager == null) return null; String modelResourceKey = getStr("model"); POSModel model = (POSModel)resourceManager.getResource(modelResourceKey); return new POSTaggerNameFeatureGenerator(model); } @Override public Map> getArtifactSerializerMapping() throws InvalidFormatException { Map> mapping = new HashMap<>(); mapping.put(getStr("model"), new POSModelSerializer()); return mapping; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_featuregen_P0100644 0000000 0000000 00000000177 14135770370 032632 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/POSTaggerNameFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/POSTaggerNameFeat0100664 0001750 0001750 00000003651 14135770370 033772 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.featuregen; import java.util.Arrays; import java.util.List; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTagger; import opennlp.tools.postag.POSTaggerME; /** * Adds the token POS Tag as feature. Requires a POS Tag model. */ public class POSTaggerNameFeatureGenerator implements AdaptiveFeatureGenerator { private POSTagger posTagger; private String[] cachedTokens; private String[] cachedTags; /** * Initializes a new instance. * * @param aPosTagger a POSTagger implementation. */ public POSTaggerNameFeatureGenerator(POSTagger aPosTagger) { this.posTagger = aPosTagger; } /** * Initializes a new instance. * * @param aPosModel a POSTagger model. */ public POSTaggerNameFeatureGenerator(POSModel aPosModel) { this.posTagger = new POSTaggerME(aPosModel); } public void createFeatures(List feats, String[] toks, int index, String[] preds) { if (!Arrays.equals(this.cachedTokens, toks)) { this.cachedTokens = toks; this.cachedTags = this.posTagger.tag(toks); } feats.add("pos=" + this.cachedTags[index]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/EvaluationMonitor.java0100664 0001750 0001750 00000001732 14135770370 033775 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; public interface EvaluationMonitor { void correctlyClassified(T reference, T prediction); void missclassified(T reference, T prediction); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/Evaluator.java0100664 0001750 0001750 00000006475 14135770370 032271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import opennlp.tools.util.ObjectStream; /** * The {@link Evaluator} is an abstract base class for evaluators. * * Evaluation results are the arithmetic mean of the * scores calculated for each reference sample. */ public abstract class Evaluator { private List> listeners; @SafeVarargs public Evaluator(EvaluationMonitor... aListeners) { if (aListeners != null) { List> listenersList = new ArrayList<>(aListeners.length); for (EvaluationMonitor evaluationMonitor : aListeners) { if (evaluationMonitor != null) { listenersList.add(evaluationMonitor); } } listeners = Collections.unmodifiableList(listenersList); } else { listeners = Collections.emptyList(); } } /** * Evaluates the given reference sample object. * * The implementation has to update the score after every invocation. * * @param reference the reference sample. * * @return the predicted sample */ protected abstract T processSample(T reference); /** * Evaluates the given reference object. The default implementation calls * {@link Evaluator#processSample(Object)} * *

* note: this method will be changed to private in the future. * Implementations should override {@link Evaluator#processSample(Object)} instead. * If this method is override, the implementation has to update the score * after every invocation. *

* * @param sample * the sample to be evaluated */ public void evaluateSample(T sample) { T predicted = processSample(sample); if (!listeners.isEmpty()) { if (sample.equals(predicted)) { for (EvaluationMonitor listener : listeners) { listener.correctlyClassified(sample, predicted); } } else { for (EvaluationMonitor listener : listeners) { listener.missclassified(sample, predicted); } } } } /** * Reads all sample objects from the stream * and evaluates each sample object with * {@link #evaluateSample(Object)} method. * * @param samples the stream of reference which * should be evaluated. * * @throws IOException IOException */ public void evaluate(ObjectStream samples) throws IOException { T sample; while ((sample = samples.read()) != null) { evaluateSample(sample); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_eval_CrossVa0100644 0000000 0000000 00000000166 14135770370 032613 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/CrossValidationPartitioner.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/CrossValidationPartitio0100664 0001750 0001750 00000017514 14135770370 034223 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import java.io.IOException; import java.util.Collection; import java.util.NoSuchElementException; import opennlp.tools.util.CollectionObjectStream; import opennlp.tools.util.ObjectStream; /** * Provides access to training and test partitions for n-fold cross validation. *

* Cross validation is used to evaluate the performance of a classifier when only * training data is available. The training set is split into n parts * and the training / evaluation is performed n times on these parts. * The training partition always consists of n -1 parts and one part is used for testing. *

* To use the CrossValidationPartioner a client iterates over the n * TrainingSampleStreams. Each TrainingSampleStream represents * one partition and is used first for training and afterwards for testing. * The TestSampleStream can be obtained from the TrainingSampleStream * with the getTestSampleStream method. */ public class CrossValidationPartitioner { /** * The TestSampleStream iterates over all test elements. * * @param */ private static class TestSampleStream implements ObjectStream { private ObjectStream sampleStream; private final int numberOfPartitions; private final int testIndex; private int index; private boolean isPoisened; private TestSampleStream(ObjectStream sampleStream, int numberOfPartitions, int testIndex) { this.numberOfPartitions = numberOfPartitions; this.sampleStream = sampleStream; this.testIndex = testIndex; } public E read() throws IOException { if (isPoisened) { throw new IllegalStateException(); } // skip training samples while (index % numberOfPartitions != testIndex) { sampleStream.read(); index++; } index++; return sampleStream.read(); } /** * Throws UnsupportedOperationException */ public void reset() { throw new UnsupportedOperationException(); } public void close() throws IOException { sampleStream.close(); isPoisened = true; } void poison() { isPoisened = true; } } /** * The TrainingSampleStream which iterates over * all training elements. * * Note: * After the TestSampleStream was obtained * the TrainingSampleStream must not be used * anymore, otherwise a {@link IllegalStateException} * is thrown. * * The ObjectStreams must not be used anymore after the * CrossValidationPartitioner was moved * to one of next partitions. If they are called anyway * a {@link IllegalStateException} is thrown. * * @param */ public static class TrainingSampleStream implements ObjectStream { private ObjectStream sampleStream; private final int numberOfPartitions; private final int testIndex; private int index; private boolean isPoisened; private TestSampleStream testSampleStream; TrainingSampleStream(ObjectStream sampleStream, int numberOfPartitions, int testIndex) { this.numberOfPartitions = numberOfPartitions; this.sampleStream = sampleStream; this.testIndex = testIndex; } public E read() throws IOException { if (testSampleStream != null || isPoisened) { throw new IllegalStateException(); } // If the test element is reached skip over it to not include it in // the training data if (index % numberOfPartitions == testIndex) { sampleStream.read(); index++; } index++; return sampleStream.read(); } /** * Resets the training sample. Use this if you need to collect things before * training, for example, to collect induced abbreviations or create a POS * Dictionary. * * @throws IOException */ public void reset() throws IOException { if (testSampleStream != null || isPoisened) { throw new IllegalStateException(); } this.index = 0; this.sampleStream.reset(); } public void close() throws IOException { sampleStream.close(); poison(); } void poison() { isPoisened = true; if (testSampleStream != null) testSampleStream.poison(); } /** * Retrieves the ObjectStream over the test/evaluations * elements and poisons this TrainingSampleStream. * From now on calls to the hasNext and next methods are forbidden * and will raise anIllegalArgumentException. * * @return the test sample stream */ public ObjectStream getTestSampleStream() throws IOException { if (isPoisened) { throw new IllegalStateException(); } if (testSampleStream == null) { sampleStream.reset(); testSampleStream = new TestSampleStream<>(sampleStream, numberOfPartitions, testIndex); } return testSampleStream; } } /** * An ObjectStream over the whole set of data samples which * are used for the cross validation. */ private ObjectStream sampleStream; /** * The number of parts the data is divided into. */ private final int numberOfPartitions; /** * The index of test part. */ private int testIndex; /** * The last handed out TrainingIterator. The reference * is needed to poison the instance to fail fast if it is used * despite the fact that it is forbidden!. */ private TrainingSampleStream lastTrainingSampleStream; /** * Initializes the current instance. * * @param inElements * @param numberOfPartitions */ public CrossValidationPartitioner(ObjectStream inElements, int numberOfPartitions) { this.sampleStream = inElements; this.numberOfPartitions = numberOfPartitions; } /** * Initializes the current instance. * * @param elements * @param numberOfPartitions */ public CrossValidationPartitioner(Collection elements, int numberOfPartitions) { this(new CollectionObjectStream<>(elements), numberOfPartitions); } /** * Checks if there are more partitions available. */ public boolean hasNext() { return testIndex < numberOfPartitions; } /** * Retrieves the next training and test partitions. */ public TrainingSampleStream next() throws IOException { if (hasNext()) { if (lastTrainingSampleStream != null) lastTrainingSampleStream.poison(); sampleStream.reset(); TrainingSampleStream trainingSampleStream = new TrainingSampleStream<>(sampleStream, numberOfPartitions, testIndex); testIndex++; lastTrainingSampleStream = trainingSampleStream; return trainingSampleStream; } else { throw new NoSuchElementException(); } } @Override public String toString() { return "At partition" + Integer.toString(testIndex + 1) + " of " + Integer.toString(numberOfPartitions); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/FMeasure.java0100664 0001750 0001750 00000013265 14135770370 032031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * The {@link FMeasure} is an utility class for evaluators * which measure precision, recall and the resulting f-measure. * * Evaluation results are the arithmetic mean of the precision * scores calculated for each reference sample and * the arithmetic mean of the recall scores calculated for * each reference sample. */ public final class FMeasure { /** * |selected| = true positives + false positives
* the count of selected (or retrieved) items. */ private long selected; /** * |target| = true positives + false negatives
* the count of target (or correct) items. */ private long target; /** * Storing the number of true positives found. */ private long truePositive; /** * Retrieves the arithmetic mean of the precision scores calculated for each * evaluated sample. * * @return the arithmetic mean of all precision scores */ public double getPrecisionScore() { return selected > 0 ? (double) truePositive / (double) selected : 0; } /** * Retrieves the arithmetic mean of the recall score calculated for each * evaluated sample. * * @return the arithmetic mean of all recall scores */ public double getRecallScore() { return target > 0 ? (double) truePositive / (double) target : 0; } /** * Retrieves the f-measure score. * * f-measure = 2 * precision * recall / (precision + recall) * @return the f-measure or -1 if precision + recall <= 0 */ public double getFMeasure() { if (getPrecisionScore() + getRecallScore() > 0) { return 2 * (getPrecisionScore() * getRecallScore()) / (getPrecisionScore() + getRecallScore()); } else { // cannot divide by zero, return error code return -1; } } /** * Updates the score based on the number of true positives and * the number of predictions and references. * * @param references the provided references * @param predictions the predicted spans */ public void updateScores(final Object[] references, final Object[] predictions) { truePositive += countTruePositives(references, predictions); selected += predictions.length; target += references.length; } /** * Merge results into fmeasure metric. * @param measure the fmeasure */ public void mergeInto(final FMeasure measure) { this.selected += measure.selected; this.target += measure.target; this.truePositive += measure.truePositive; } /** * Creates a human read-able {@link String} representation. * @return the results */ @Override public String toString() { return "Precision: " + Double.toString(getPrecisionScore()) + "\n" + "Recall: " + Double.toString(getRecallScore()) + "\n" + "F-Measure: " + Double.toString(getFMeasure()); } /** * This method counts the number of objects which are equal and occur in the * references and predictions arrays. * Matched items are removed from the prediction list. * * @param references * the gold standard * @param predictions * the predictions * @return number of true positives */ static int countTruePositives(final Object[] references, final Object[] predictions) { List predListSpans = new ArrayList<>(predictions.length); Collections.addAll(predListSpans, predictions); int truePositives = 0; Object matchedItem = null; for (Object referenceName : references) { for (Object predListSpan : predListSpans) { if (referenceName.equals(predListSpan)) { matchedItem = predListSpan; truePositives++; } } if (matchedItem != null) { predListSpans.remove(matchedItem); } } return truePositives; } /** * Calculates the precision score for the given reference and predicted spans. * * @param references * the gold standard spans * @param predictions * the predicted spans * @return the precision score or NaN if there are no predicted spans */ public static double precision(final Object[] references, final Object[] predictions) { if (predictions.length > 0) { return countTruePositives(references, predictions) / (double) predictions.length; } else { return Double.NaN; } } /** * Calculates the recall score for the given reference and predicted spans. * * @param references * the gold standard spans * @param predictions * the predicted spans * * @return the recall score or NaN if there are no reference spans */ public static double recall(final Object[] references, final Object[] predictions) { if (references.length > 0) { return countTruePositives(references, predictions) / (double) references.length; } else { return Double.NaN; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/eval/Mean.java0100664 0001750 0001750 00000004022 14135770370 031171 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.eval; /** * Calculates the arithmetic mean of values * added with the {@link #add(double)} method. */ public class Mean { /** * The sum of all added values. */ private double sum; /** * The number of times a value was added. */ private long count; /** * Adds a value to the arithmetic mean. * * @param value the value which should be added * to the arithmetic mean. */ public void add(double value) { add(value, 1); } /** * Adds a value count times to the arithmetic mean. * * @param value the value which should be added * to the arithmetic mean. * * @param count number of times the value should be added to * arithmetic mean. */ public void add(double value, long count) { sum += value * count; this.count += count; } /** * Retrieves the mean of all values added with * {@link #add(double)} or 0 if there are zero added * values. */ public double mean() { return count > 0 ? sum / count : 0; } /** * Retrieves the number of times a value * was added to the mean. */ public long count() { return count; } @Override public String toString() { return Double.toString(mean()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_Insufficient0100644 0000000 0000000 00000000170 14135770370 032645 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/InsufficientTrainingDataException.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/InsufficientTrainingDataExce0100664 0001750 0001750 00000002620 14135770370 034165 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; /** * This exception indicates that the provided training data is * insufficient to train the desired model. */ @SuppressWarnings("serial") public class InsufficientTrainingDataException extends IOException { public InsufficientTrainingDataException() { } public InsufficientTrainingDataException(String message) { super(message); } public InsufficientTrainingDataException(Throwable t) { super(); initCause(t); } public InsufficientTrainingDataException(String message, Throwable t) { super(message); initCause(t); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java0100664 0001750 0001750 00000031252 14135770370 033166 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import opennlp.tools.ml.EventTrainer; public class TrainingParameters { // TODO: are them duplicated? public static final String ALGORITHM_PARAM = "Algorithm"; public static final String TRAINER_TYPE_PARAM = "TrainerType"; public static final String ITERATIONS_PARAM = "Iterations"; public static final String CUTOFF_PARAM = "Cutoff"; public static final String THREADS_PARAM = "Threads"; private Map parameters = new HashMap<>(); public TrainingParameters() { } public TrainingParameters(TrainingParameters trainingParameters) { this.parameters.putAll(trainingParameters.parameters); } /** * * @deprecated */ public TrainingParameters(Map map) { //parameters.putAll(map); // try to respect their original type... for (String key: map.keySet()) { String value = map.get(key); try { int intValue = Integer.parseInt(value); parameters.put(key, intValue); } catch (NumberFormatException ei) { try { double doubleValue = Double.parseDouble(value); parameters.put(key, doubleValue); } catch (NumberFormatException ed) { // Because Boolean.parseBoolean() doesn't throw NFE, it just checks the value is either // true or yes. So let's see their letters here. if (value.toLowerCase().equals("true") || value.toLowerCase().equals("false")) { parameters.put(key, Boolean.parseBoolean(value)); } else { parameters.put(key, value); } } } } } /* TODO: Once we throw Map away, have this constructor to be uncommented public TrainingParameters(Map map) { parameters.putAll(map); } */ public TrainingParameters(InputStream in) throws IOException { Properties properties = new Properties(); properties.load(in); for (Map.Entry entry : properties.entrySet()) { parameters.put((String) entry.getKey(), entry.getValue()); } } /** * Retrieves the training algorithm name for a given name space. * * @return the name or null if not set. */ public String algorithm(String namespace) { return (String)parameters.get(getKey(namespace, ALGORITHM_PARAM)); } /** * Retrieves the training algorithm name. * * @return the name or null if not set. */ public String algorithm() { return (String)parameters.get(ALGORITHM_PARAM); } /** * Retrieves a map with the training parameters which have the passed name space. * * @param namespace * * @return a parameter map which can be passed to the train and validate methods. * * @deprecated use {@link #getObjectSettings(String)} instead */ public Map getSettings(String namespace) { Map trainingParams = new HashMap<>(); String prefix = namespace + "."; for (Map.Entry entry : parameters.entrySet()) { String key = entry.getKey(); if (namespace != null) { if (key.startsWith(prefix)) { trainingParams.put(key.substring(prefix.length()), getStringValue(entry.getValue())); } } else { if (!key.contains(".")) { trainingParams.put(key, getStringValue(entry.getValue())); } } } return Collections.unmodifiableMap(trainingParams); } private static String getStringValue(Object value) { if (value instanceof Integer) { return Integer.toString((Integer)value); } else if (value instanceof Double) { return Double.toString((Double)value); } else if (value instanceof Boolean) { return Boolean.toString((Boolean)value); } else { return (String)value; } } /** * Retrieves all parameters without a name space. * * @return the settings map * * @deprecated use {@link #getObjectSettings()} instead */ public Map getSettings() { return getSettings(null); } /** * Retrieves a map with the training parameters which have the passed name space. * * @param namespace * * @return a parameter map which can be passed to the train and validate methods. */ public Map getObjectSettings(String namespace) { Map trainingParams = new HashMap<>(); String prefix = namespace + "."; for (Map.Entry entry : parameters.entrySet()) { String key = entry.getKey(); if (namespace != null) { if (key.startsWith(prefix)) { trainingParams.put(key.substring(prefix.length()), entry.getValue()); } } else { if (!key.contains(".")) { trainingParams.put(key, entry.getValue()); } } } return Collections.unmodifiableMap(trainingParams); } /** * Retrieves all parameters without a name space. * * @return the settings map */ public Map getObjectSettings() { return getObjectSettings(null); } // reduces the params to contain only the params in the name space public TrainingParameters getParameters(String namespace) { TrainingParameters params = new TrainingParameters(); Map settings = getObjectSettings(namespace); for (Entry entry: settings.entrySet()) { String key = entry.getKey(); Object value = entry.getValue();; if (value instanceof Integer) { params.put(key, (Integer)value); } else if (value instanceof Double) { params.put(key, (Double)value); } else if (value instanceof Boolean) { params.put(key, (Boolean)value); } else { params.put(key, (String)value); } } return params; } public void putIfAbsent(String namespace, String key, String value) { parameters.putIfAbsent(getKey(namespace, key), value); } public void putIfAbsent(String key, String value) { putIfAbsent(null, key, value); } public void putIfAbsent(String namespace, String key, int value) { parameters.putIfAbsent(getKey(namespace, key), value); } public void putIfAbsent(String key, int value) { putIfAbsent(null, key, value); } public void putIfAbsent(String namespace, String key, double value) { parameters.putIfAbsent(getKey(namespace, key), value); } public void putIfAbsent(String key, double value) { putIfAbsent(null, key, value); } public void putIfAbsent(String namespace, String key, boolean value) { parameters.putIfAbsent(getKey(namespace, key), value); } public void putIfAbsent(String key, boolean value) { putIfAbsent(null, key, value); } public void put(String namespace, String key, String value) { parameters.put(getKey(namespace, key), value); } public void put(String key, String value) { put(null, key, value); } public void put(String namespace, String key, int value) { parameters.put(getKey(namespace, key), value); } public void put(String key, int value) { put(null, key, value); } public void put(String namespace, String key, double value) { parameters.put(getKey(namespace, key), value); } public void put(String key, double value) { put(null, key, value); } public void put(String namespace, String key, boolean value) { parameters.put(getKey(namespace, key), value); } public void put(String key, boolean value) { put(null, key, value); } public void serialize(OutputStream out) throws IOException { Properties properties = new Properties(); for (Map.Entry entry: parameters.entrySet()) { properties.put(entry.getKey(), entry.getValue()); } properties.store(out, null); } /** * get a String parameter. * * {@link java.lang.ClassCastException} can be thrown if the value is not {@code String} * @param key * @param defaultValue * @return */ public String getStringParameter(String key, String defaultValue) { return getStringParameter(null, key, defaultValue); } /** * get a String parameter in the specified namespace. * * {@link java.lang.ClassCastException} can be thrown if the value is not {@link String} * @param namespace * @param key * @param defaultValue * @return */ public String getStringParameter(String namespace, String key, String defaultValue) { Object value = parameters.get(getKey(namespace, key)); if (value == null) { return defaultValue; } else { return (String)value; } } /** * get an Integer parameter * @param key * @param defaultValue * @return */ public int getIntParameter(String key, int defaultValue) { return getIntParameter(null, key, defaultValue); } /** * get an Integer parameter in the specified namespace * @param namespace * @param key * @param defaultValue * @return */ public int getIntParameter(String namespace, String key, int defaultValue) { Object value = parameters.get(getKey(namespace, key)); if (value == null) { return defaultValue; } else { // TODO: We have this try-catch for back-compat reason. After removing deprecated flag, // we can remove try-catch block and just return (Integer)value; try { return (Integer) value; } catch (ClassCastException e) { return Integer.parseInt((String)value); } } } /** * get a Double parameter * @param key * @param defaultValue * @return */ public double getDoubleParameter(String key, double defaultValue) { return getDoubleParameter(null, key, defaultValue); } /** * get a Double parameter in the specified namespace * @param namespace * @param key * @param defaultValue * @return */ public double getDoubleParameter(String namespace, String key, double defaultValue) { Object value = parameters.get(getKey(namespace, key)); if (value == null) { return defaultValue; } else { // TODO: We have this try-catch for back-compat reason. After removing deprecated flag, // we can remove try-catch block and just return (Double)value; try { return (Double) value; } catch (ClassCastException e) { return Double.parseDouble((String)value); } } } /** * get a Boolean parameter * @param key * @param defaultValue * @return */ public boolean getBooleanParameter(String key, boolean defaultValue) { return getBooleanParameter(null, key, defaultValue); } /** * get a Boolean parameter in the specified namespace * @param namespace * @param key * @param defaultValue * @return */ public boolean getBooleanParameter(String namespace, String key, boolean defaultValue) { Object value = parameters.get(getKey(namespace, key)); if (value == null) { return defaultValue; } else { // TODO: We have this try-catch for back-compat reason. After removing deprecated flag, // we can remove try-catch block and just return (Boolean)value; try { return (Boolean) value; } catch (ClassCastException e) { return Boolean.parseBoolean((String)value); } } } public static TrainingParameters defaultParams() { TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT"); mlParams.put(TrainingParameters.TRAINER_TYPE_PARAM, EventTrainer.EVENT_VALUE); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 5); return mlParams; } static String getKey(String namespace, String key) { if (namespace == null) { return key; } else { return namespace + "." + key; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ArtifactProvider.java0100664 0001750 0001750 00000003344 14135770370 033740 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; /** * Provides access to model persisted artifacts. */ public interface ArtifactProvider { /** * Gets an artifact by name */ public T getArtifact(String key); /** * Retrieves the value to the given key from the manifest.properties * entry. * * @param key * * @return the value */ public String getManifestProperty(String key); /** * Retrieves the language code of the material which was used to train the * model or x-unspecified if non was set. * * @return the language code of this model */ public String getLanguage(); /** * Indicates if this provider was loaded from serialized. It is useful, for * example, while validating artifacts: you can skip the time consuming ones * if they where already validated during the serialization. * * @return true if this model was loaded from serialized */ public boolean isLoadedFromSerialized(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_ByteAr0100644 0000000 0000000 00000000160 14135770370 032564 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ByteArraySerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ByteArraySerializer.ja0100664 0001750 0001750 00000002264 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class ByteArraySerializer implements ArtifactSerializer { public byte[] create(InputStream in) throws IOException { return ModelUtil.read(in); } public void serialize(byte[] artifact, OutputStream out) throws IOException { out.write(artifact); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java0100664 0001750 0001750 00000011175 14135770370 032367 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; import java.util.HashSet; import java.util.Map; import java.util.Objects; import java.util.Set; import opennlp.tools.ml.maxent.GISTrainer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.GenericModelWriter; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.TrainingParameters; /** * Utility class for handling of {@link MaxentModel}s. */ public final class ModelUtil { private ModelUtil() { // not intended to be instantiated } /** * Writes the given model to the given {@link OutputStream}. * * This methods does not closes the provided stream. * * @param model the model to be written * @param out the stream the model should be written to * * @throws IOException * @throws IllegalArgumentException in case one of the parameters is null */ public static void writeModel(MaxentModel model, final OutputStream out) throws IOException, IllegalArgumentException { Objects.requireNonNull(model, "model parameter must not be null"); Objects.requireNonNull(out, "out parameter must not be null"); GenericModelWriter modelWriter = new GenericModelWriter((AbstractModel) model, new DataOutputStream(new OutputStream() { @Override public void write(int b) throws IOException { out.write(b); } })); modelWriter.persist(); } /** * Checks if the expected outcomes are all contained as outcomes in the given model. * * @param model * @param expectedOutcomes * * @return true if all expected outcomes are the only outcomes of the model. */ public static boolean validateOutcomes(MaxentModel model, String... expectedOutcomes) { boolean result = true; if (expectedOutcomes.length == model.getNumOutcomes()) { Set expectedOutcomesSet = new HashSet<>(Arrays.asList(expectedOutcomes)); for (int i = 0; i < model.getNumOutcomes(); i++) { if (!expectedOutcomesSet.contains(model.getOutcome(i))) { result = false; break; } } } else { result = false; } return result; } /** * Writes the provided {@link InputStream} into a byte array * which is returned * * @param in stream to read data for the byte array from * @return byte array with the contents of the stream * * @throws IOException if an exception is thrown while reading * from the provided {@link InputStream} */ public static byte[] read(InputStream in) throws IOException { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); int length; byte[] buffer = new byte[1024]; while ((length = in.read(buffer)) > 0) { byteArrayOut.write(buffer, 0, length); } byteArrayOut.close(); return byteArrayOut.toByteArray(); } public static void addCutoffAndIterations(Map manifestInfoEntries, int cutoff, int iterations) { manifestInfoEntries.put(BaseModel.TRAINING_CUTOFF_PROPERTY, Integer.toString(cutoff)); manifestInfoEntries.put(BaseModel.TRAINING_ITERATIONS_PROPERTY, Integer.toString(iterations)); } /** * Creates the default training parameters in case they are not provided. * * Note: Do not use this method, internal use only! * * * @return training parameters instance */ public static TrainingParameters createDefaultTrainingParameters() { TrainingParameters mlParams = new TrainingParameters(); mlParams.put(TrainingParameters.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100); mlParams.put(TrainingParameters.CUTOFF_PARAM, 5); return mlParams; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Unclos0100644 0000000 0000000 00000000163 14135770370 032644 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/UncloseableInputStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/UncloseableInputStream0100664 0001750 0001750 00000002403 14135770370 034173 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; /** * An {@link InputStream} which cannot be closed. */ public class UncloseableInputStream extends FilterInputStream { public UncloseableInputStream(InputStream in) { super(in); } /** * This method does not has any effect the {@link InputStream} * cannot be closed. */ @Override public void close() throws IOException { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Artifa0100644 0000000 0000000 00000000157 14135770370 032612 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ArtifactSerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ArtifactSerializer.jav0100664 0001750 0001750 00000003002 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Responsible to create an artifact from an {@link InputStream}. */ public interface ArtifactSerializer { /** * Creates the artifact from the provided {@link InputStream}. * * The {@link InputStream} remains open. * * @return the artifact * * @throws IOException */ T create(InputStream in) throws IOException; /** * Serializes the artifact to the provided {@link OutputStream}. * * The {@link OutputStream} remains open. * * @param artifact * @param out * @throws IOException */ void serialize(T artifact, OutputStream out) throws IOException; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_POSMod0100644 0000000 0000000 00000000157 14135770370 032505 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.jav0100664 0001750 0001750 00000004316 14135770370 034003 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import opennlp.tools.ml.BeamSearch; import opennlp.tools.postag.POSModel; import opennlp.tools.util.Version; public class POSModelSerializer implements ArtifactSerializer { public POSModel create(InputStream in) throws IOException { POSModel posModel = new POSModel(new UncloseableInputStream(in)); // The 1.6.x models write the non-default beam size into the model itself. // In 1.5.x the parser configured the beam size when the model was loaded, // this is not possible anymore with the new APIs Version version = posModel.getVersion(); if (version.getMajor() == 1 && version.getMinor() == 5) { if (posModel.getManifestProperty(BeamSearch.BEAM_SIZE_PARAMETER) == null) { Map manifestInfoEntries = new HashMap<>(); // The version in the model must be correct or otherwise version // dependent code branches in other places fail manifestInfoEntries.put("OpenNLP-Version", "1.5.0"); posModel = new POSModel(posModel.getLanguage(), posModel.getPosModel(), 10, manifestInfoEntries, posModel.getFactory()); } } return posModel; } public void serialize(POSModel artifact, OutputStream out) throws IOException { artifact.serialize(out); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Serial0100644 0000000 0000000 00000000161 14135770370 032616 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/SerializableArtifact.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/SerializableArtifact.j0100664 0001750 0001750 00000002313 14135770370 034057 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; public interface SerializableArtifact { /** * Retrieves the class which can serialize and recreate this artifact. *
* Note: * The serializer class must have a public zero argument constructor or * an exception is thrown during model serialization/loading. * * @return the corresponding ArtifactSerializer class. */ Class getArtifactSerializerClass(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Proper0100644 0000000 0000000 00000000161 14135770370 032646 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/PropertiesSerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/PropertiesSerializer.j0100664 0001750 0001750 00000002673 14135770370 034172 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import java.util.Properties; class PropertiesSerializer implements ArtifactSerializer { public Properties create(InputStream in) throws IOException { Properties properties = new Properties(); properties.load(in); return properties; } public void serialize(Properties properties, OutputStream out) throws IOException { properties.store(out, ""); } static void register(Map factories) { factories.put("properties", new PropertiesSerializer()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Chunke0100644 0000000 0000000 00000000163 14135770370 032616 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer0100664 0001750 0001750 00000003160 14135770370 034156 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import opennlp.tools.chunker.ChunkerModel; import opennlp.tools.parser.ParserChunkerFactory; import opennlp.tools.util.Version; public class ChunkerModelSerializer implements ArtifactSerializer { public ChunkerModel create(InputStream in) throws IOException { ChunkerModel model = new ChunkerModel(new UncloseableInputStream(in)); Version version = model.getVersion(); if (version.getMajor() == 1 && version.getMinor() == 5) { model = new ChunkerModel(model.getLanguage(), model.getChunkerModel(), new ParserChunkerFactory()); } return model; } public void serialize(ChunkerModel artifact, OutputStream out) throws IOException { artifact.serialize(out); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Generi0100644 0000000 0000000 00000000163 14135770370 032612 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/GenericModelSerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/GenericModelSerializer0100664 0001750 0001750 00000003075 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.BinaryFileDataReader; import opennlp.tools.ml.model.GenericModelReader; public class GenericModelSerializer implements ArtifactSerializer { public AbstractModel create(InputStream in) throws IOException { return new GenericModelReader(new BinaryFileDataReader(in)).getModel(); } public void serialize(AbstractModel artifact, OutputStream out) throws IOException { ModelUtil.writeModel(artifact, out); } public static void register(Map factories) { factories.put("model", new GenericModelSerializer()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelType.java0100664 0001750 0001750 00000001615 14135770370 032371 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; public enum ModelType { MAXENT, PERCEPTRON, PERCEPTRON_SEQUENCE } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_model_Dictio0100644 0000000 0000000 00000000161 14135770370 032612 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/DictionarySerializer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/DictionarySerializer.j0100664 0001750 0001750 00000002622 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; import opennlp.tools.dictionary.Dictionary; public class DictionarySerializer implements ArtifactSerializer { public Dictionary create(InputStream in) throws IOException { return new Dictionary(in); } public void serialize(Dictionary dictionary, OutputStream out) throws IOException { dictionary.serialize(out); } static void register(Map factories) { factories.put("dictionary", new DictionarySerializer()); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java0100664 0001750 0001750 00000052244 14135770370 032326 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util.model; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; import java.net.URL; import java.nio.file.Path; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Properties; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.Version; import opennlp.tools.util.ext.ExtensionLoader; /** * This model is a common based which can be used by the components * model classes. * * TODO: * Provide sub classes access to serializers already in constructor */ public abstract class BaseModel implements ArtifactProvider, Serializable { protected static final String MANIFEST_ENTRY = "manifest.properties"; protected static final String FACTORY_NAME = "factory"; private static final String MANIFEST_VERSION_PROPERTY = "Manifest-Version"; private static final String COMPONENT_NAME_PROPERTY = "Component-Name"; private static final String VERSION_PROPERTY = "OpenNLP-Version"; private static final String TIMESTAMP_PROPERTY = "Timestamp"; private static final String LANGUAGE_PROPERTY = "Language"; public static final String TRAINING_CUTOFF_PROPERTY = "Training-Cutoff"; public static final String TRAINING_ITERATIONS_PROPERTY = "Training-Iterations"; public static final String TRAINING_EVENTHASH_PROPERTY = "Training-Eventhash"; private static String SERIALIZER_CLASS_NAME_PREFIX = "serializer-class-"; private Map artifactSerializers = new HashMap<>(); protected Map artifactMap = new HashMap<>(); protected BaseToolFactory toolFactory; private String componentName; private boolean subclassSerializersInitiated = false; private boolean finishedLoadingArtifacts = false; private boolean isLoadedFromSerialized; private BaseModel(String componentName, boolean isLoadedFromSerialized) { this.isLoadedFromSerialized = isLoadedFromSerialized; this.componentName = Objects.requireNonNull(componentName, "componentName must not be null!"); } /** * Initializes the current instance. The sub-class constructor should call the * method {@link #checkArtifactMap()} to check the artifact map is OK. *

* Sub-classes will have access to custom artifacts and serializers provided * by the factory. * * @param componentName * the component name * @param languageCode * the language code * @param manifestInfoEntries * additional information in the manifest * @param factory * the factory */ protected BaseModel(String componentName, String languageCode, Map manifestInfoEntries, BaseToolFactory factory) { this(componentName, false); Objects.requireNonNull(languageCode, "languageCode must not be null"); createBaseArtifactSerializers(artifactSerializers); Properties manifest = new Properties(); manifest.setProperty(MANIFEST_VERSION_PROPERTY, "1.0"); manifest.setProperty(LANGUAGE_PROPERTY, languageCode); manifest.setProperty(VERSION_PROPERTY, Version.currentVersion().toString()); manifest.setProperty(TIMESTAMP_PROPERTY, Long.toString(System.currentTimeMillis())); manifest.setProperty(COMPONENT_NAME_PROPERTY, componentName); if (manifestInfoEntries != null) { for (Map.Entry entry : manifestInfoEntries.entrySet()) { manifest.setProperty(entry.getKey(), entry.getValue()); } } artifactMap.put(MANIFEST_ENTRY, manifest); finishedLoadingArtifacts = true; if (factory != null) { setManifestProperty(FACTORY_NAME, factory.getClass().getCanonicalName()); artifactMap.putAll(factory.createArtifactMap()); // new manifest entries Map entries = factory.createManifestEntries(); for (Entry entry : entries.entrySet()) { setManifestProperty(entry.getKey(), entry.getValue()); } } try { initializeFactory(); } catch (InvalidFormatException e) { throw new IllegalArgumentException("Could not initialize tool factory. ", e); } loadArtifactSerializers(); } /** * Initializes the current instance. The sub-class constructor should call the * method {@link #checkArtifactMap()} to check the artifact map is OK. * * @param componentName * the component name * @param languageCode * the language code * @param manifestInfoEntries * additional information in the manifest */ protected BaseModel(String componentName, String languageCode, Map manifestInfoEntries) { this(componentName, languageCode, manifestInfoEntries, null); } /** * Initializes the current instance. * * @param componentName the component name * @param in the input stream containing the model * * @throws IOException */ protected BaseModel(String componentName, InputStream in) throws IOException { this(componentName, true); loadModel(in); } protected BaseModel(String componentName, File modelFile) throws IOException { this(componentName, true); try (InputStream in = new BufferedInputStream(new FileInputStream(modelFile))) { loadModel(in); } } protected BaseModel(String componentName, URL modelURL) throws IOException { this(componentName, true); try (InputStream in = new BufferedInputStream(modelURL.openStream())) { loadModel(in); } } private void loadModel(InputStream in) throws IOException { Objects.requireNonNull(in, "in must not be null"); createBaseArtifactSerializers(artifactSerializers); if (!in.markSupported()) { in = new BufferedInputStream(in); } // TODO: Discuss this solution, the buffering should int MODEL_BUFFER_SIZE_LIMIT = Integer.MAX_VALUE; in.mark(MODEL_BUFFER_SIZE_LIMIT); final ZipInputStream zip = new ZipInputStream(in); // The model package can contain artifacts which are serialized with 3rd party // serializers which are configured in the manifest file. To be able to load // the model the manifest must be read first, and afterwards all the artifacts // can be de-serialized. // The ordering of artifacts in a zip package is not guaranteed. The stream is first // read until the manifest appears, reseted, and read again to load all artifacts. boolean isSearchingForManifest = true; ZipEntry entry; while ((entry = zip.getNextEntry()) != null && isSearchingForManifest) { if ("manifest.properties".equals(entry.getName())) { // TODO: Probably better to use the serializer here directly! ArtifactSerializer factory = artifactSerializers.get("properties"); artifactMap.put(entry.getName(), factory.create(zip)); isSearchingForManifest = false; } zip.closeEntry(); } initializeFactory(); loadArtifactSerializers(); // The Input Stream should always be reset-able because if markSupport returns // false it is wrapped before hand into an Buffered InputStream in.reset(); finishLoadingArtifacts(in); checkArtifactMap(); } private void initializeFactory() throws InvalidFormatException { String factoryName = getManifestProperty(FACTORY_NAME); if (factoryName == null) { // load the default factory Class factoryClass = getDefaultFactory(); if (factoryClass != null) { this.toolFactory = BaseToolFactory.create(factoryClass, this); } } else { try { this.toolFactory = BaseToolFactory.create(factoryName, this); } catch (InvalidFormatException e) { throw new IllegalArgumentException(e); } } } /** * Sub-classes should override this method if their module has a default * BaseToolFactory sub-class. * * @return the default {@link BaseToolFactory} for the module, or null if none. */ protected Class getDefaultFactory() { return null; } /** * Loads the artifact serializers. */ private void loadArtifactSerializers() { if (!subclassSerializersInitiated) createArtifactSerializers(artifactSerializers); subclassSerializersInitiated = true; } /** * Finish loading the artifacts now that it knows all serializers. */ private void finishLoadingArtifacts(InputStream in) throws IOException { final ZipInputStream zip = new ZipInputStream(in); Map artifactMap = new HashMap<>(); ZipEntry entry; while ((entry = zip.getNextEntry()) != null ) { // Note: The manifest.properties file will be read here again, // there should be no need to prevent that. String entryName = entry.getName(); String extension = getEntryExtension(entryName); ArtifactSerializer factory = artifactSerializers.get(extension); String artifactSerializerClazzName = getManifestProperty(SERIALIZER_CLASS_NAME_PREFIX + entryName); if (artifactSerializerClazzName != null) { factory = ExtensionLoader.instantiateExtension(ArtifactSerializer.class, artifactSerializerClazzName); } if (factory != null) { artifactMap.put(entryName, factory.create(zip)); } else { throw new InvalidFormatException("Unknown artifact format: " + extension); } zip.closeEntry(); } this.artifactMap.putAll(artifactMap); finishedLoadingArtifacts = true; } /** * Extracts the "." extension from an entry name. * * @param entry the entry name which contains the extension * * @return the extension * * @throws InvalidFormatException if no extension can be extracted */ private String getEntryExtension(String entry) throws InvalidFormatException { int extensionIndex = entry.lastIndexOf('.') + 1; if (extensionIndex >= entry.length()) throw new InvalidFormatException("Entry name must have type extension: " + entry); return entry.substring(extensionIndex); } protected ArtifactSerializer getArtifactSerializer(String resourceName) { try { return artifactSerializers.get(getEntryExtension(resourceName)); } catch (InvalidFormatException e) { throw new IllegalStateException(e); } } protected static Map createArtifactSerializers() { Map serializers = new HashMap<>(); GenericModelSerializer.register(serializers); PropertiesSerializer.register(serializers); DictionarySerializer.register(serializers); serializers.put("txt", new ByteArraySerializer()); serializers.put("html", new ByteArraySerializer()); return serializers; } /** * Registers all {@link ArtifactSerializer} for their artifact file name extensions. * The registered {@link ArtifactSerializer} are used to create and serialize * resources in the model package. * * Override this method to register custom {@link ArtifactSerializer}s. * * Note: * Subclasses should generally invoke super.createArtifactSerializers at the beginning * of this method. * * This method is called during construction. * * @param serializers the key of the map is the file extension used to lookup * the {@link ArtifactSerializer}. */ protected void createArtifactSerializers( Map serializers) { if (this.toolFactory != null) serializers.putAll(this.toolFactory.createArtifactSerializersMap()); } private void createBaseArtifactSerializers( Map serializers) { serializers.putAll(createArtifactSerializers()); } /** * Validates the parsed artifacts. If something is not * valid subclasses should throw an {@link InvalidFormatException}. * * Note: * Subclasses should generally invoke super.validateArtifactMap at the beginning * of this method. * * @throws InvalidFormatException */ protected void validateArtifactMap() throws InvalidFormatException { if (!(artifactMap.get(MANIFEST_ENTRY) instanceof Properties)) throw new InvalidFormatException("Missing the " + MANIFEST_ENTRY + "!"); // First check version, everything else might change in the future String versionString = getManifestProperty(VERSION_PROPERTY); if (versionString != null) { Version version; try { version = Version.parse(versionString); } catch (NumberFormatException e) { throw new InvalidFormatException("Unable to parse model version '" + versionString + "'!", e); } // Version check is only performed if current version is not the dev/debug version if (!Version.currentVersion().equals(Version.DEV_VERSION)) { // Major and minor version must match, revision might be // this check allows for the use of models of n minor release behind current minor release if (Version.currentVersion().getMajor() != version.getMajor() || Version.currentVersion().getMinor() - 4 > version.getMinor()) { throw new InvalidFormatException("Model version " + version + " is not supported by this (" + Version.currentVersion() + ") version of OpenNLP!"); } // Reject loading a snapshot model with a non-snapshot version if (!Version.currentVersion().isSnapshot() && version.isSnapshot()) { throw new InvalidFormatException("Model version " + version + " is a snapshot - snapshot models are not supported by this non-snapshot version (" + Version.currentVersion() + ") of OpenNLP!"); } } } else { throw new InvalidFormatException("Missing " + VERSION_PROPERTY + " property in " + MANIFEST_ENTRY + "!"); } if (getManifestProperty(COMPONENT_NAME_PROPERTY) == null) throw new InvalidFormatException("Missing " + COMPONENT_NAME_PROPERTY + " property in " + MANIFEST_ENTRY + "!"); if (!getManifestProperty(COMPONENT_NAME_PROPERTY).equals(componentName)) throw new InvalidFormatException("The " + componentName + " cannot load a model for the " + getManifestProperty(COMPONENT_NAME_PROPERTY) + "!"); if (getManifestProperty(LANGUAGE_PROPERTY) == null) throw new InvalidFormatException("Missing " + LANGUAGE_PROPERTY + " property in " + MANIFEST_ENTRY + "!"); // Validate the factory. We try to load it using the ExtensionLoader. It // will return the factory, null or raise an exception String factoryName = getManifestProperty(FACTORY_NAME); if (factoryName != null) { try { if (ExtensionLoader.instantiateExtension(BaseToolFactory.class, factoryName) == null) { throw new InvalidFormatException( "Could not load an user extension specified by the model: " + factoryName); } } catch (Exception e) { throw new InvalidFormatException( "Could not load an user extension specified by the model: " + factoryName, e); } } // validate artifacts declared by the factory if (toolFactory != null) { toolFactory.validateArtifactMap(); } } /** * Checks the artifact map. *

* A subclass should call this method from a constructor which accepts the individual * artifact map items, to validate that these items form a valid model. *

* If the artifacts are not valid an IllegalArgumentException will be thrown. */ protected void checkArtifactMap() { if (!finishedLoadingArtifacts) throw new IllegalStateException( "The method BaseModel.finishLoadingArtifacts(..) was not called by BaseModel sub-class."); try { validateArtifactMap(); } catch (InvalidFormatException e) { throw new IllegalArgumentException(e); } } /** * Retrieves the value to the given key from the manifest.properties * entry. * * @param key * * @return the value */ public final String getManifestProperty(String key) { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); return manifest.getProperty(key); } /** * Sets a given value for a given key to the manifest.properties entry. * * @param key * @param value */ protected final void setManifestProperty(String key, String value) { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.setProperty(key, value); } /** * Retrieves the language code of the material which * was used to train the model or x-unspecified if * non was set. * * @return the language code of this model */ public final String getLanguage() { return getManifestProperty(LANGUAGE_PROPERTY); } /** * Retrieves the OpenNLP version which was used * to create the model. * * @return the version */ public final Version getVersion() { String version = getManifestProperty(VERSION_PROPERTY); return Version.parse(version); } /** * Serializes the model to the given {@link OutputStream}. * * @param out stream to write the model to * @throws IOException */ @SuppressWarnings("unchecked") public final void serialize(OutputStream out) throws IOException { if (!subclassSerializersInitiated) { throw new IllegalStateException( "The method BaseModel.loadArtifactSerializers() was not called by BaseModel subclass constructor."); } for (Entry entry : artifactMap.entrySet()) { final String name = entry.getKey(); final Object artifact = entry.getValue(); if (artifact instanceof SerializableArtifact) { SerializableArtifact serializableArtifact = (SerializableArtifact) artifact; String artifactSerializerName = serializableArtifact .getArtifactSerializerClass().getName(); setManifestProperty(SERIALIZER_CLASS_NAME_PREFIX + name, artifactSerializerName); } } ZipOutputStream zip = new ZipOutputStream(out); for (Entry entry : artifactMap.entrySet()) { String name = entry.getKey(); zip.putNextEntry(new ZipEntry(name)); Object artifact = entry.getValue(); ArtifactSerializer serializer = getArtifactSerializer(name); // If model is serialize-able always use the provided serializer if (artifact instanceof SerializableArtifact) { SerializableArtifact serializableArtifact = (SerializableArtifact) artifact; String artifactSerializerName = serializableArtifact.getArtifactSerializerClass().getName(); serializer = ExtensionLoader.instantiateExtension(ArtifactSerializer.class, artifactSerializerName); } if (serializer == null) { throw new IllegalStateException("Missing serializer for " + name); } serializer.serialize(artifactMap.get(name), zip); zip.closeEntry(); } zip.finish(); zip.flush(); } public final void serialize(File model) throws IOException { try (OutputStream out = new BufferedOutputStream(new FileOutputStream(model))) { serialize(out); } } public final void serialize(Path model) throws IOException { serialize(model.toFile()); } @SuppressWarnings("unchecked") public T getArtifact(String key) { Object artifact = artifactMap.get(key); if (artifact == null) return null; return (T) artifact; } public boolean isLoadedFromSerialized() { return isLoadedFromSerialized; } // These methods are required to serialize/deserialize the model because // many of the included objects in this model are not Serializable. // An alternative to this solution is to make all included objects // Serializable and remove the writeObject and readObject methods. // This will allow the usage of final for fields that should not change. private void writeObject(ObjectOutputStream out) throws IOException { out.writeUTF(componentName); this.serialize(out); } private void readObject(final ObjectInputStream in) throws IOException { isLoadedFromSerialized = true; artifactSerializers = new HashMap<>(); artifactMap = new HashMap<>(); componentName = in.readUTF(); this.loadModel(in); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/XmlUtil.java0100664 0001750 0001750 00000004057 14135770370 030770 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.SAXException; public class XmlUtil { /** * Create a new DocumentBuilder which processes XML securely. * * @return a DocumentBuilder */ public static DocumentBuilder createDocumentBuilder() { try { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); return documentBuilderFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new IllegalStateException(e); } } /** * Create a new SAXParser which processes XML securely. * * @return a SAXParser */ public static SAXParser createSaxParser() { SAXParserFactory spf = SAXParserFactory.newInstance(); try { spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); return spf.newSAXParser(); } catch (ParserConfigurationException | SAXException e) { throw new IllegalStateException(e); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/TokenTag.java0100664 0001750 0001750 00000005165 14135770370 031107 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Arrays; import java.util.Objects; public class TokenTag { private final String token; private final String tag; private final String[] addtionalData; public TokenTag(String token, String tag, String[] addtionalData) { this.token = token; this.tag = tag; if (addtionalData != null) { this.addtionalData = Arrays.copyOf(addtionalData, addtionalData.length); } else { this.addtionalData = null; } } public String getToken() { return token; } public String getTag() { return tag; } public String[] getAddtionalData() { return addtionalData; } public static String[] extractTokens(TokenTag[] tuples) { String[] tokens = new String[tuples.length]; for (int i = 0; i < tuples.length; i++) { tokens[i] = tuples[i].getToken(); } return tokens; } public static String[] extractTags(TokenTag[] tuples) { String[] tags = new String[tuples.length]; for (int i = 0; i < tuples.length; i++) { tags[i] = tuples[i].getTag(); } return tags; } public static TokenTag[] create(String[] toks, String[] tags) { TokenTag[] tuples = new TokenTag[toks.length]; for (int i = 0; i < toks.length; i++) { tuples[i] = new TokenTag(toks[i], tags[i], null); } return tuples; } @Override public boolean equals(Object o) { if (this == o) { return true; } else if (o instanceof TokenTag) { return Objects.equals(this.token, ((TokenTag) o).token) && Objects.equals(this.tag, ((TokenTag) o).tag) && Arrays.equals(this.addtionalData, ((TokenTag) o).addtionalData); } return false; } @Override public int hashCode() { return Objects.hash(token, tag, addtionalData); } @Override public String toString() { return token + "_" + tag; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/CollectionObjectStream.java0100664 0001750 0001750 00000002451 14135770370 033764 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.util.Collection; import java.util.Iterator; public class CollectionObjectStream implements ObjectStream { private Collection collection; private Iterator iterator; public CollectionObjectStream(Collection collection) { this.collection = collection; reset(); } public E read() { return iterator.hasNext() ? iterator.next() : null; } public void reset() { this.iterator = collection.iterator(); } public void close() { } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/AbstractObjectStream.java0100664 0001750 0001750 00000002464 14135770370 033440 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.IOException; public class AbstractObjectStream implements ObjectStream { private final ObjectStream stream; protected AbstractObjectStream(ObjectStream stream) { this.stream = stream; } @Override public T read() throws IOException { return stream.read(); } @Override public void reset() throws IOException, UnsupportedOperationException { stream.reset(); } @Override public void close() throws IOException { stream.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_util_MarkableFile0100644 0000000 0000000 00000000156 14135770370 032541 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/MarkableFileInputStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/util/MarkableFileInputStream.java0100664 0001750 0001750 00000004325 14135770370 034102 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; /** * A markable File Input Stream. */ class MarkableFileInputStream extends InputStream { private FileInputStream in; private long markedPosition = -1; private IOException markException; MarkableFileInputStream(File file) throws FileNotFoundException { in = new FileInputStream(file); } @Override public synchronized void mark(int readlimit) { try { markedPosition = in.getChannel().position(); } catch (IOException e) { markedPosition = -1; } } @Override public boolean markSupported() { return true; } private void throwMarkExceptionIfOccured() throws IOException { if (markException != null) { throw markException; } } @Override public synchronized void reset() throws IOException { throwMarkExceptionIfOccured(); if (markedPosition >= 0) { in.getChannel().position(markedPosition); } else { throw new IOException("Stream has to be marked before it can be reset!"); } } @Override public int read() throws IOException { return in.read(); } @Override public int read(byte[] b) throws IOException { return in.read(b); } @Override public int read(byte[] b, int off, int len) throws IOException { return in.read(b, off, len); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java0100664 0001750 0001750 00000025644 14135770370 032435 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.EventModelSequenceTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.SequenceTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.ml.perceptron.PerceptronTrainer; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.Span; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; import opennlp.tools.util.featuregen.AdditionalContextFeatureGenerator; import opennlp.tools.util.featuregen.GeneratorFactory; import opennlp.tools.util.featuregen.WindowFeatureGenerator; /** * Class for creating a maximum-entropy-based name finder. */ public class NameFinderME implements TokenNameFinder { private static String[][] EMPTY = new String[0][0]; public static final int DEFAULT_BEAM_SIZE = 3; private static final Pattern typedOutcomePattern = Pattern.compile("(.+)-\\w+"); public static final String START = "start"; public static final String CONTINUE = "cont"; public static final String OTHER = "other"; private SequenceCodec seqCodec = new BioCodec(); protected SequenceClassificationModel model; protected NameContextGenerator contextGenerator; private Sequence bestSequence; private AdditionalContextFeatureGenerator additionalContextFeatureGenerator = new AdditionalContextFeatureGenerator(); private SequenceValidator sequenceValidator; public NameFinderME(TokenNameFinderModel model) { TokenNameFinderFactory factory = model.getFactory(); seqCodec = factory.createSequenceCodec(); sequenceValidator = seqCodec.createSequenceValidator(); this.model = model.getNameFinderSequenceModel(); contextGenerator = factory.createContextGenerator(); // TODO: We should deprecate this. And come up with a better solution! contextGenerator.addFeatureGenerator( new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8)); } private static AdaptiveFeatureGenerator createFeatureGenerator( byte[] generatorDescriptor, final Map resources) throws IOException { AdaptiveFeatureGenerator featureGenerator; if (generatorDescriptor != null) { featureGenerator = GeneratorFactory.create(new ByteArrayInputStream( generatorDescriptor), key -> { if (resources != null) { return resources.get(key); } return null; }); } else { featureGenerator = null; } return featureGenerator; } public Span[] find(String[] tokens) { return find(tokens, EMPTY); } /** * Generates name tags for the given sequence, typically a sentence, returning * token spans for any identified names. * * @param tokens an array of the tokens or words of the sequence, typically a sentence. * @param additionalContext features which are based on context outside of the * sentence but which should also be used. * * @return an array of spans for each of the names identified. */ public Span[] find(String[] tokens, String[][] additionalContext) { additionalContextFeatureGenerator.setCurrentContext(additionalContext); bestSequence = model.bestSequence(tokens, additionalContext, contextGenerator, sequenceValidator); List c = bestSequence.getOutcomes(); contextGenerator.updateAdaptiveData(tokens, c.toArray(new String[c.size()])); Span[] spans = seqCodec.decode(c); spans = setProbs(spans); return spans; } /** * Forgets all adaptive data which was collected during previous calls to one * of the find methods. * * This method is typical called at the end of a document. */ public void clearAdaptiveData() { contextGenerator.clearAdaptiveData(); } /** * Populates the specified array with the probabilities of the last decoded * sequence. The sequence was determined based on the previous call to * chunk. The specified array should be at least as large as the * number of tokens in the previous call to chunk. * * @param probs An array used to hold the probabilities of the last decoded * sequence. */ public void probs(double[] probs) { bestSequence.getProbs(probs); } /** * Returns an array with the probabilities of the last decoded sequence. The * sequence was determined based on the previous call to chunk. * * @return An array with the same number of probabilities as tokens were sent * to chunk when it was last called. */ public double[] probs() { return bestSequence.getProbs(); } /** * sets the probs for the spans * * @param spans * @return */ private Span[] setProbs(Span[] spans) { double[] probs = probs(spans); if (probs != null) { for (int i = 0; i < probs.length; i++) { double prob = probs[i]; spans[i] = new Span(spans[i], prob); } } return spans; } /** * Returns an array of probabilities for each of the specified spans which is * the arithmetic mean of the probabilities for each of the outcomes which * make up the span. * * @param spans The spans of the names for which probabilities are desired. * * @return an array of probabilities for each of the specified spans. */ public double[] probs(Span[] spans) { double[] sprobs = new double[spans.length]; double[] probs = bestSequence.getProbs(); for (int si = 0; si < spans.length; si++) { double p = 0; for (int oi = spans[si].getStart(); oi < spans[si].getEnd(); oi++) { p += probs[oi]; } p /= spans[si].length(); sprobs[si] = p; } return sprobs; } public static TokenNameFinderModel train(String languageCode, String type, ObjectStream samples, TrainingParameters trainParams, TokenNameFinderFactory factory) throws IOException { trainParams.putIfAbsent(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); trainParams.putIfAbsent(TrainingParameters.CUTOFF_PARAM, 0); trainParams.putIfAbsent(TrainingParameters.ITERATIONS_PARAM, 300); int beamSize = trainParams.getIntParameter(BeamSearch.BEAM_SIZE_PARAMETER, NameFinderME.DEFAULT_BEAM_SIZE); Map manifestInfoEntries = new HashMap<>(); MaxentModel nameFinderModel = null; SequenceClassificationModel seqModel = null; TrainerType trainerType = TrainerFactory.getTrainerType(trainParams); if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream eventStream = new NameFinderEventStream(samples, type, factory.createContextGenerator(), factory.createSequenceCodec()); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, manifestInfoEntries); nameFinderModel = trainer.train(eventStream); } // TODO: Maybe it is not a good idea, that these two don't use the context generator ?! // These also don't use the sequence codec ?! else if (TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)) { NameSampleSequenceStream ss = new NameSampleSequenceStream(samples, factory.createContextGenerator()); EventModelSequenceTrainer trainer = TrainerFactory.getEventModelSequenceTrainer( trainParams, manifestInfoEntries); nameFinderModel = trainer.train(ss); } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { SequenceTrainer trainer = TrainerFactory.getSequenceModelTrainer( trainParams, manifestInfoEntries); NameSampleSequenceStream ss = new NameSampleSequenceStream(samples, factory.createContextGenerator(), false); seqModel = trainer.train(ss); } else { throw new IllegalStateException("Unexpected trainer type!"); } if (seqModel != null) { return new TokenNameFinderModel(languageCode, seqModel, factory.getFeatureGenerator(), factory.getResources(), manifestInfoEntries, factory.getSequenceCodec(), factory); } else { return new TokenNameFinderModel(languageCode, nameFinderModel, beamSize, factory.getFeatureGenerator(), factory.getResources(), manifestInfoEntries, factory.getSequenceCodec(), factory); } } /** * Gets the name type from the outcome * * @param outcome the outcome * @return the name type, or null if not set */ static String extractNameType(String outcome) { Matcher matcher = typedOutcomePattern.matcher(outcome); if (matcher.matches()) { return matcher.group(1); } return null; } /** * Removes spans with are intersecting or crossing in anyway. * *

* The following rules are used to remove the spans:
* Identical spans: The first span in the array after sorting it remains
* Intersecting spans: The first span after sorting remains
* Contained spans: All spans which are contained by another are removed
* * @param spans * * @return non-overlapping spans */ public static Span[] dropOverlappingSpans(Span[] spans) { List sortedSpans = new ArrayList<>(spans.length); Collections.addAll(sortedSpans, spans); Collections.sort(sortedSpans); Iterator it = sortedSpans.iterator(); Span lastSpan = null; while (it.hasNext()) { Span span = it.next(); if (lastSpan != null) { if (lastSpan.intersects(span)) { it.remove(); span = lastSpan; } } lastSpan = span; } return sortedSpans.toArray(new Span[sortedSpans.size()]); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/DocumentNameFinder.java0100664 0001750 0001750 00000003244 14135770370 033702 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.Span; /** * Name finding interface which processes an entire document allowing the name finder to use context * from the entire document. * * EXPERIMENTAL. * This interface has been added as part of a work in progress and might change without notice. */ public interface DocumentNameFinder { /** * Returns tokens span for the specified document of sentences and their tokens. * Span start and end indices are relative to the sentence they are in. * For example, a span identifying a name consisting of the first and second word * of the second sentence would be 0..2 and be referenced as spans[1][0]. * * @param document An array of tokens for each sentence of a document. * @return The token spans for each sentence of the specified document. */ Span[][] find(String[][] document); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouCodec.java0100664 0001750 0001750 00000012566 14135770370 032212 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.Span; public class BilouCodec implements SequenceCodec { public static final String START = "start"; public static final String CONTINUE = "cont"; public static final String LAST = "last"; public static final String UNIT = "unit"; public static final String OTHER = "other"; @Override public Span[] decode(List c) { int start = -1; int end = -1; List spans = new ArrayList<>(c.size()); for (int li = 0; li < c.size(); li++) { String chunkTag = c.get(li); if (chunkTag.endsWith(BilouCodec.START)) { start = li; end = li + 1; } else if (chunkTag.endsWith(BilouCodec.CONTINUE)) { end = li + 1; } else if (chunkTag.endsWith(LAST)) { if (start != -1) { spans.add(new Span(start, end + 1, BioCodec.extractNameType(c.get(li - 1)))); start = -1; end = -1; } } else if (chunkTag.endsWith(UNIT)) { spans.add(new Span(li, li + 1, BioCodec.extractNameType(c.get(li)))); } } return spans.toArray(new Span[spans.size()]); } @Override public String[] encode(Span[] names, int length) { String[] outcomes = new String[length]; Arrays.fill(outcomes, BilouCodec.OTHER); for (Span name : names) { if (name.length() > 1) { if (name.getType() == null) { outcomes[name.getStart()] = "default" + "-" + BilouCodec.START; } else { outcomes[name.getStart()] = name.getType() + "-" + BilouCodec.START; } // now iterate from begin + 1 till end for (int i = name.getStart() + 1; i < name.getEnd() - 1; i++) { if (name.getType() == null) { outcomes[i] = "default" + "-" + BilouCodec.CONTINUE; } else { outcomes[i] = name.getType() + "-" + BilouCodec.CONTINUE; } } if (name.getType() == null) { outcomes[name.getEnd() - 1] = "default" + "-" + BilouCodec.LAST; } else { outcomes[name.getEnd() - 1] = name.getType() + "-" + BilouCodec.LAST; } } else { if (name.getType() == null) { outcomes[name.getEnd() - 1] = "default" + "-" + BilouCodec.UNIT; } else { outcomes[name.getEnd() - 1] = name.getType() + "-" + BilouCodec.UNIT; } } } return outcomes; } @Override public SequenceValidator createSequenceValidator() { return new BilouNameFinderSequenceValidator(); } /** * B requires CL or L * C requires BL * L requires B * O requires any valid combo/unit * U requires none * * @param outcomes all possible model outcomes * * @return true, if model outcomes are compatible */ @Override public boolean areOutcomesCompatible(String[] outcomes) { Set start = new HashSet<>(); Set cont = new HashSet<>(); Set last = new HashSet<>(); Set unit = new HashSet<>(); for (String outcome : outcomes) { if (outcome.endsWith(BilouCodec.START)) { start.add(outcome.substring(0, outcome.length() - BilouCodec.START.length())); } else if (outcome.endsWith(BilouCodec.CONTINUE)) { cont.add(outcome.substring(0, outcome.length() - BilouCodec.CONTINUE.length())); } else if (outcome.endsWith(BilouCodec.LAST)) { last.add(outcome.substring(0, outcome.length() - BilouCodec.LAST.length())); } else if (outcome.endsWith(BilouCodec.UNIT)) { unit.add(outcome.substring(0, outcome.length() - BilouCodec.UNIT.length())); } else if (!outcome.equals(BilouCodec.OTHER)) { return false; } } if (start.size() == 0 && unit.size() == 0) { return false; } else { // Start, must have matching Last for (String startPrefix : start) { if (!last.contains(startPrefix)) { return false; } } // Cont, must have matching Start and Last for (String contPrefix : cont) { if (!start.contains(contPrefix) && !last.contains(contPrefix)) { return false; } } // Last, must have matching Start for (String lastPrefix : last) { if (!start.contains(lastPrefix)) { return false; } } } return true; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameSamp0100644 0000000 0000000 00000000157 14135770370 032531 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.jav0100664 0001750 0001750 00000004303 14135770370 034061 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * A stream which removes Name Samples which do not have a certain type. */ public class NameSampleTypeFilter extends FilterObjectStream { private final Set types; public NameSampleTypeFilter(String[] types, ObjectStream samples) { super(samples); this.types = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(types))); } public NameSampleTypeFilter(Set types, ObjectStream samples) { super(samples); this.types = Collections.unmodifiableSet(new HashSet<>(types)); } public NameSample read() throws IOException { NameSample sample = samples.read(); if (sample != null) { List filteredNames = new ArrayList<>(); for (Span name : sample.getNames()) { if (types.contains(name.getType())) { filteredNames.add(name); } } return new NameSample(sample.getId(), sample.getSentence(), filteredNames.toArray(new Span[filteredNames.size()]), null, sample.isClearAdaptiveDataSet()); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000163 14135770370 032541 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderEvaluator0100664 0001750 0001750 00000006067 14135770370 034155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * The {@link TokenNameFinderEvaluator} measures the performance * of the given {@link TokenNameFinder} with the provided * reference {@link NameSample}s. * * @see Evaluator * @see TokenNameFinder * @see NameSample */ public class TokenNameFinderEvaluator extends Evaluator { private FMeasure fmeasure = new FMeasure(); /** * The {@link TokenNameFinder} used to create the predicted * {@link NameSample} objects. */ private TokenNameFinder nameFinder; /** * Initializes the current instance with the given * {@link TokenNameFinder}. * * @param nameFinder the {@link TokenNameFinder} to evaluate. * @param listeners evaluation sample listeners */ public TokenNameFinderEvaluator(TokenNameFinder nameFinder, TokenNameFinderEvaluationMonitor ... listeners) { super(listeners); this.nameFinder = nameFinder; } /** * Evaluates the given reference {@link NameSample} object. * * This is done by finding the names with the * {@link TokenNameFinder} in the sentence from the reference * {@link NameSample}. The found names are then used to * calculate and update the scores. * * @param reference the reference {@link NameSample}. * * @return the predicted {@link NameSample}. */ @Override protected NameSample processSample(NameSample reference) { if (reference.isClearAdaptiveDataSet()) { nameFinder.clearAdaptiveData(); } Span[] predictedNames = nameFinder.find(reference.getSentence()); Span[] references = reference.getNames(); // OPENNLP-396 When evaluating with a file in the old format // the type of the span is null, but must be set to default to match // the output of the name finder. for (int i = 0; i < references.length; i++) { if (references[i].getType() == null) { references[i] = new Span(references[i].getStart(), references[i].getEnd(), "default"); } } fmeasure.updateScores(references, predictedNames); return new NameSample(reference.getSentence(), predictedNames, reference.isClearAdaptiveDataSet()); } public FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/package-info.java0100664 0001750 0001750 00000001612 14135770370 032514 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to finding proper names and numeric amounts. */ package opennlp.tools.namefind; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_DefaultN0100644 0000000 0000000 00000000166 14135770370 032532 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/DefaultNameContextGenera0100664 0001750 0001750 00000012255 14135770370 034131 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; import opennlp.tools.util.featuregen.BigramNameFeatureGenerator; import opennlp.tools.util.featuregen.CachedFeatureGenerator; import opennlp.tools.util.featuregen.FeatureGeneratorUtil; import opennlp.tools.util.featuregen.OutcomePriorFeatureGenerator; import opennlp.tools.util.featuregen.PreviousMapFeatureGenerator; import opennlp.tools.util.featuregen.TokenClassFeatureGenerator; import opennlp.tools.util.featuregen.TokenFeatureGenerator; import opennlp.tools.util.featuregen.WindowFeatureGenerator; /** * Class for determining contextual features for a tag/chunk style * named-entity recognizer. */ public class DefaultNameContextGenerator implements NameContextGenerator { protected AdaptiveFeatureGenerator[] featureGenerators; @Deprecated private static AdaptiveFeatureGenerator windowFeatures = new CachedFeatureGenerator( new WindowFeatureGenerator(new TokenFeatureGenerator(), 2, 2), new WindowFeatureGenerator(new TokenClassFeatureGenerator(true), 2, 2), new OutcomePriorFeatureGenerator(), new PreviousMapFeatureGenerator(), new BigramNameFeatureGenerator()); /** * Creates a name context generator. * @deprecated use the other constructor and always provide the feature generators */ @Deprecated public DefaultNameContextGenerator() { this((AdaptiveFeatureGenerator[]) null); } /** * Creates a name context generator with the specified cache size. */ public DefaultNameContextGenerator(AdaptiveFeatureGenerator... featureGenerators) { if (featureGenerators != null) { this.featureGenerators = featureGenerators; } else { // use defaults this.featureGenerators = new AdaptiveFeatureGenerator[]{ windowFeatures, new PreviousMapFeatureGenerator()}; } } public void addFeatureGenerator(AdaptiveFeatureGenerator generator) { AdaptiveFeatureGenerator[] generators = featureGenerators; featureGenerators = new AdaptiveFeatureGenerator[featureGenerators.length + 1]; System.arraycopy(generators, 0, featureGenerators, 0, generators.length); featureGenerators[featureGenerators.length - 1] = generator; } public void updateAdaptiveData(String[] tokens, String[] outcomes) { if (tokens != null && outcomes != null && tokens.length != outcomes.length) { throw new IllegalArgumentException( "The tokens and outcome arrays MUST have the same size!"); } for (AdaptiveFeatureGenerator featureGenerator : featureGenerators) { featureGenerator.updateAdaptiveData(tokens, outcomes); } } public void clearAdaptiveData() { for (AdaptiveFeatureGenerator featureGenerator : featureGenerators) { featureGenerator.clearAdaptiveData(); } } /** * Return the context for finding names at the specified index. * @param index The index of the token in the specified toks array for which the * context should be constructed. * @param tokens The tokens of the sentence. The toString methods * of these objects should return the token text. * @param preds The previous decisions made in the tagging of this sequence. * Only indices less than i will be examined. * @param additionalContext Addition features which may be based on a context outside of the sentence. * * @return the context for finding names at the specified index. */ public String[] getContext(int index, String[] tokens, String[] preds, Object[] additionalContext) { List features = new ArrayList<>(); for (AdaptiveFeatureGenerator featureGenerator : featureGenerators) { featureGenerator.createFeatures(features, tokens, index, preds); } //previous outcome features String po = NameFinderME.OTHER; String ppo = NameFinderME.OTHER; // TODO: These should be moved out here in its own feature generator! if (preds != null) { if (index > 1) { ppo = preds[index - 2]; } if (index > 0) { po = preds[index - 1]; } features.add("po=" + po); features.add("pow=" + po + "," + tokens[index]); features.add("powf=" + po + "," + FeatureGeneratorUtil.tokenFeature(tokens[index])); features.add("ppo=" + ppo); } return features.toArray(new String[features.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000157 14135770370 032544 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.jav0100664 0001750 0001750 00000022370 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import java.util.Properties; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.featuregen.BrownCluster; import opennlp.tools.util.featuregen.WordClusterDictionary; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.BaseModel; import opennlp.tools.util.model.ByteArraySerializer; /** * The {@link TokenNameFinderModel} is the model used * by a learnable {@link TokenNameFinder}. * * @see NameFinderME */ // TODO: Fix the model validation, on loading via constructors and input streams public class TokenNameFinderModel extends BaseModel { public static class FeatureGeneratorCreationError extends RuntimeException { FeatureGeneratorCreationError(Throwable t) { super(t); } } private static final String COMPONENT_NAME = "NameFinderME"; private static final String MAXENT_MODEL_ENTRY_NAME = "nameFinder.model"; static final String GENERATOR_DESCRIPTOR_ENTRY_NAME = "generator.featuregen"; static final String SEQUENCE_CODEC_CLASS_NAME_PARAMETER = "sequenceCodecImplName"; public TokenNameFinderModel(String languageCode, SequenceClassificationModel nameFinderModel, byte[] generatorDescriptor, Map resources, Map manifestInfoEntries, SequenceCodec seqCodec, TokenNameFinderFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); init(nameFinderModel, generatorDescriptor, resources, manifestInfoEntries, seqCodec); if (!seqCodec.areOutcomesCompatible(nameFinderModel.getOutcomes())) { throw new IllegalArgumentException("Model not compatible with name finder!"); } } public TokenNameFinderModel(String languageCode, MaxentModel nameFinderModel, int beamSize, byte[] generatorDescriptor, Map resources, Map manifestInfoEntries, SequenceCodec seqCodec, TokenNameFinderFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.put(BeamSearch.BEAM_SIZE_PARAMETER, Integer.toString(beamSize)); init(nameFinderModel, generatorDescriptor, resources, manifestInfoEntries, seqCodec); if (!isModelValid(nameFinderModel)) { throw new IllegalArgumentException("Model not compatible with name finder!"); } } // TODO: Extend this one with beam size! public TokenNameFinderModel(String languageCode, MaxentModel nameFinderModel, byte[] generatorDescriptor, Map resources, Map manifestInfoEntries) { this(languageCode, nameFinderModel, NameFinderME.DEFAULT_BEAM_SIZE, generatorDescriptor, resources, manifestInfoEntries, new BioCodec(), new TokenNameFinderFactory()); } public TokenNameFinderModel(String languageCode, MaxentModel nameFinderModel, Map resources, Map manifestInfoEntries) { this(languageCode, nameFinderModel, null, resources, manifestInfoEntries); } public TokenNameFinderModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public TokenNameFinderModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public TokenNameFinderModel(Path modelPath) throws IOException { this(modelPath.toFile()); } public TokenNameFinderModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } private void init(Object nameFinderModel, byte[] generatorDescriptor, Map resources, Map manifestInfoEntries, SequenceCodec seqCodec) { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.put(SEQUENCE_CODEC_CLASS_NAME_PARAMETER, seqCodec.getClass().getName()); artifactMap.put(MAXENT_MODEL_ENTRY_NAME, nameFinderModel); if (generatorDescriptor != null && generatorDescriptor.length > 0) artifactMap.put(GENERATOR_DESCRIPTOR_ENTRY_NAME, generatorDescriptor); if (resources != null) { // The resource map must not contain key which are already taken // like the name finder maxent model name if (resources.containsKey(MAXENT_MODEL_ENTRY_NAME) || resources.containsKey(GENERATOR_DESCRIPTOR_ENTRY_NAME)) { throw new IllegalArgumentException(); } // TODO: Add checks to not put resources where no serializer exists, // make that case fail here, should be done in the BaseModel artifactMap.putAll(resources); } checkArtifactMap(); } public SequenceClassificationModel getNameFinderSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); if (artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof MaxentModel) { String beamSizeString = manifest.getProperty(BeamSearch.BEAM_SIZE_PARAMETER); int beamSize = NameFinderME.DEFAULT_BEAM_SIZE; if (beamSizeString != null) { beamSize = Integer.parseInt(beamSizeString); } return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME)); } else if (artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME); } else { return null; } } @Override protected Class getDefaultFactory() { return TokenNameFinderFactory.class; } public SequenceCodec getSequenceCodec() { return this.getFactory().getSequenceCodec(); } public TokenNameFinderFactory getFactory() { return (TokenNameFinderFactory) this.toolFactory; } @Override protected void createArtifactSerializers(Map serializers) { super.createArtifactSerializers(serializers); serializers.put("featuregen", new ByteArraySerializer()); } /** * Create the artifact serializers. Currently for serializers related to * features that require external resources, such as {@code W2VClassesDictionary} * objects, the convention is to add its element tag name as key of the serializer map. * For example, the element tag name for the {@code WordClusterFeatureGenerator} which * uses {@code W2VClassesDictionary} objects serialized by the {@code W2VClassesDictionarySerializer} * is 'wordcluster', which is the key used to add the serializer to the map. * @return the map containing the added serializers */ public static Map createArtifactSerializers() { // TODO: Not so nice, because code cannot really be reused by the other create serializer method // Has to be redesigned, we need static access to default serializers // and these should be able to extend during runtime ?! // // The XML feature generator factory should provide these mappings. // Usually the feature generators should know what type of resource they expect. Map serializers = BaseModel.createArtifactSerializers(); serializers.put("featuregen", new ByteArraySerializer()); serializers.put("wordcluster", new WordClusterDictionary.WordClusterDictionarySerializer()); serializers.put("brownclustertoken", new BrownCluster.BrownClusterSerializer()); serializers.put("brownclustertokenclass", new BrownCluster.BrownClusterSerializer()); serializers.put("brownclusterbigram", new BrownCluster.BrownClusterSerializer()); return serializers; } private boolean isModelValid(MaxentModel model) { String[] outcomes = new String[model.getNumOutcomes()]; for (int i = 0; i < model.getNumOutcomes(); i++) { outcomes[i] = model.getOutcome(i); } return getFactory().createSequenceCodec().areOutcomesCompatible(outcomes); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof MaxentModel) && !(artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel)) { throw new InvalidFormatException("Token Name Finder model is incomplete!"); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_RegexNam0100644 0000000 0000000 00000000161 14135770370 032531 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinderFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinderFactory.j0100664 0001750 0001750 00000014726 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.regex.Pattern; /** * * Returns a RegexNameFinder based on A selection of * defaults or a configuration and a selection of defaults */ public class RegexNameFinderFactory { /** * Allows for use of selected Defaults as well as regexes from external * configuration * * @param config a map where the key is a type, and the value is a * Pattern[]. If the keys clash with default keys, the config * map will win * @param defaults the OpenNLP default regexes * @return {@link RegexNameFinder} */ public static synchronized RegexNameFinder getDefaultRegexNameFinders( Map config, DEFAULT_REGEX_NAME_FINDER... defaults) { Objects.requireNonNull(config, "config must not be null"); Map defaultsToMap = new HashMap<>(); if (defaults != null) { defaultsToMap = defaultsToMap(defaults); } defaultsToMap.putAll(config); return new RegexNameFinder(defaultsToMap); } /** * Returns a RegexNamefinder that will utilize specified default regexes. * * @param defaults the OpenNLP default regexes * @return {@link RegexNameFinder} */ public static synchronized RegexNameFinder getDefaultRegexNameFinders( DEFAULT_REGEX_NAME_FINDER... defaults) { Objects.requireNonNull(defaults, "defaults must not be null"); return new RegexNameFinder(defaultsToMap(defaults)); } private synchronized static Map defaultsToMap( DEFAULT_REGEX_NAME_FINDER... defaults) { Map regexMap = new HashMap<>(); for (DEFAULT_REGEX_NAME_FINDER def : defaults) { regexMap.putAll(def.getRegexMap()); } return regexMap; } public interface RegexAble { Map getRegexMap(); String getType(); } public enum DEFAULT_REGEX_NAME_FINDER implements RegexAble { USA_PHONE_NUM { @Override public Map getRegexMap() { Pattern[] p = new Pattern[1]; // p[0] = Pattern.compile("([\\+(]?(\\d){2,}[)]?[- \\.]?(\\d){2,}[- \\.]?(\\d){2,}[- \\.]? // (\\d){2,}[- \\.]?(\\d){2,})|([\\+(]?(\\d){2,}[)]?[- \\.]?(\\d){2,}[- \\.]?(\\d){2,}[- // \\.]?(\\d){2,})|([\\+(]?(\\d){2,}[)]?[- \\.]?(\\d){2,}[- \\.]?(\\d){2,})", // Pattern.CASE_INSENSITIVE); p[0] = Pattern.compile("((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}"); Map regexMap = new HashMap<>(); regexMap.put(getType(), p); return regexMap; } @Override public String getType() { return "PHONE_NUM"; } }, EMAIL { @Override public Map getRegexMap() { Pattern[] p = new Pattern[1]; p[0] = Pattern.compile("([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*" + "|\"([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09" + "\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]" + "*[a-z0-9])?|\\[((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]" + "?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]" + "|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])", Pattern.CASE_INSENSITIVE); Map regexMap = new HashMap<>(); regexMap.put(getType(), p); return regexMap; } @Override public String getType() { return "EMAIL"; } }, URL { @Override public Map getRegexMap() { Pattern[] p = new Pattern[1]; p[0] = Pattern.compile("\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" + "(\\w+:\\w+@)?(([-\\w]+\\.)+(com|org|net|gov" + "|mil|biz|info|mobi|name|aero|jobs|museum" + "|travel|[a-z]{2}))(:[\\d]{1,5})?" + "(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" + "((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" + "(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" + "(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b", Pattern.CASE_INSENSITIVE); Map regexMap = new HashMap<>(); regexMap.put(getType(), p); return regexMap; } @Override public String getType() { return "URL"; } }, MGRS { @Override public Map getRegexMap() { Pattern[] p = new Pattern[1]; p[0] = Pattern.compile("\\d{1,2}[A-Za-z]\\s*[A-Za-z]{2}\\s*\\d{1,5}\\s*\\d{1,5}", Pattern.CASE_INSENSITIVE); Map regexMap = new HashMap<>(); regexMap.put(getType(), p); return regexMap; } @Override public String getType() { return "MGRS"; } }, DEGREES_MIN_SEC_LAT_LON { @Override public Map getRegexMap() { Pattern[] p = new Pattern[1]; p[0] = Pattern.compile("([-|\\+]?\\d{1,3}[d|D|\\u00B0|\\s](\\s*\\d{1,2}['|\\u2019|\\s])" + "?(\\s*\\d{1,2}[\\\"|\\u201d])?\\s*[N|n|S|s]?)(\\s*|,|,\\s*)([-|\\+]?\\d{1,3}[d|D|\\u00B0|" + "\\s](\\s*\\d{1,2}['|\\u2019|\\s])?(\\s*\\d{1,2}[\\\"|\\u201d])?\\s*[E|e|W|w]?)", Pattern.CASE_INSENSITIVE); Map regexMap = new HashMap<>(); regexMap.put(getType(), p); return regexMap; } @Override public String getType() { return "DEGREES_MIN_SEC_LAT_LON"; } } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameSamp0100644 0000000 0000000 00000000163 14135770370 032526 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleSequenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleSequenceStream0100664 0001750 0001750 00000010234 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.util.Collections; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.Sequence; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; public class NameSampleSequenceStream implements SequenceStream { private NameContextGenerator pcg; private final boolean useOutcomes; private ObjectStream psi; private SequenceCodec seqCodec; public NameSampleSequenceStream(ObjectStream psi) throws IOException { this(psi, new DefaultNameContextGenerator((AdaptiveFeatureGenerator) null), true); } public NameSampleSequenceStream(ObjectStream psi, AdaptiveFeatureGenerator featureGen) throws IOException { this(psi, new DefaultNameContextGenerator(featureGen), true); } public NameSampleSequenceStream(ObjectStream psi, AdaptiveFeatureGenerator featureGen, boolean useOutcomes) throws IOException { this(psi, new DefaultNameContextGenerator(featureGen), useOutcomes); } public NameSampleSequenceStream(ObjectStream psi, NameContextGenerator pcg) throws IOException { this(psi, pcg, true); } public NameSampleSequenceStream(ObjectStream psi, NameContextGenerator pcg, boolean useOutcomes) throws IOException { this(psi, pcg, useOutcomes, new BioCodec()); } public NameSampleSequenceStream(ObjectStream psi, NameContextGenerator pcg, boolean useOutcomes, SequenceCodec seqCodec) throws IOException { this.psi = psi; this.useOutcomes = useOutcomes; this.pcg = pcg; this.seqCodec = seqCodec; } @SuppressWarnings("unchecked") public Event[] updateContext(Sequence sequence, AbstractModel model) { TokenNameFinder tagger = new NameFinderME(new TokenNameFinderModel( "x-unspecified", model, Collections.emptyMap(), null)); String[] sentence = ((Sequence) sequence).getSource().getSentence(); String[] tags = seqCodec.encode(tagger.find(sentence), sentence.length); Event[] events = new Event[sentence.length]; NameFinderEventStream.generateEvents(sentence,tags,pcg).toArray(events); return events; } @Override public Sequence read() throws IOException { NameSample sample = psi.read(); if (sample != null) { String[] sentence = sample.getSentence(); String[] tags = seqCodec.encode(sample.getNames(), sentence.length); Event[] events = new Event[sentence.length]; for (int i = 0; i < sentence.length; i++) { // it is safe to pass the tags as previous tags because // the context generator does not look for non predicted tags String[] context; if (useOutcomes) { context = pcg.getContext(i, sentence, tags, null); } else { context = pcg.getContext(i, sentence, null, null); } events[i] = new Event(tags[i], context); } return new Sequence<>(events,sample); } else { return null; } } @Override public void reset() throws IOException, UnsupportedOperationException { psi.reset(); } @Override public void close() throws IOException { psi.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/RegexNameFinder.java0100664 0001750 0001750 00000013063 14135770370 033176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.util.Span; /** * Name finder based on a series of regular expressions. */ public final class RegexNameFinder implements TokenNameFinder { private Pattern[] mPatterns; private String sType; private Map regexMap; public RegexNameFinder(Map regexMap) { this.regexMap = Objects.requireNonNull(regexMap, "regexMap must not be null"); } public RegexNameFinder(Pattern[] patterns, String type) { if (patterns == null || patterns.length == 0) { throw new IllegalArgumentException("patterns must not be null or empty!"); } mPatterns = patterns; sType = type; } /** * use constructor {@link #RegexNameFinder(Pattern[], String)} * for single types, and/or constructor * {@link #RegexNameFinder(Map)} */ @Deprecated public RegexNameFinder(Pattern[] patterns) { if (patterns == null || patterns.length == 0) { throw new IllegalArgumentException("patterns must not be null or empty!"); } mPatterns = patterns; sType = null; } @Override public Span[] find(String[] tokens) { Map sentencePosTokenMap = new HashMap<>(); StringBuilder sentenceString = new StringBuilder(tokens.length * 10); for (int i = 0; i < tokens.length; i++) { int startIndex = sentenceString.length(); sentencePosTokenMap.put(startIndex, i); sentenceString.append(tokens[i]); int endIndex = sentenceString.length(); sentencePosTokenMap.put(endIndex, i + 1); if (i < tokens.length - 1) { sentenceString.append(' '); } } Collection annotations = new LinkedList<>(); if (regexMap != null) { for (Map.Entry entry : regexMap.entrySet()) { for (Pattern mPattern : entry.getValue()) { Matcher matcher = mPattern.matcher(sentenceString); while (matcher.find()) { Integer tokenStartIndex = sentencePosTokenMap.get(matcher.start()); Integer tokenEndIndex = sentencePosTokenMap.get(matcher.end()); if (tokenStartIndex != null && tokenEndIndex != null) { Span annotation = new Span(tokenStartIndex, tokenEndIndex, entry.getKey()); annotations.add(annotation); } } } } } else { for (Pattern mPattern : mPatterns) { Matcher matcher = mPattern.matcher(sentenceString); while (matcher.find()) { Integer tokenStartIndex = sentencePosTokenMap.get(matcher.start()); Integer tokenEndIndex = sentencePosTokenMap.get(matcher.end()); if (tokenStartIndex != null && tokenEndIndex != null) { Span annotation = new Span(tokenStartIndex, tokenEndIndex, sType); annotations.add(annotation); } } } } return annotations.toArray( new Span[annotations.size()]); } /** * NEW. This method removes the need for tokenization, but returns the Span * with character indices, rather than word. * * @param text * @return */ public Span[] find(String text) { return getAnnotations(text); } private Span[] getAnnotations(String text) { Collection annotations = new LinkedList<>(); if (regexMap != null) { for (Map.Entry entry : regexMap.entrySet()) { for (Pattern mPattern : entry.getValue()) { Matcher matcher = mPattern.matcher(text); while (matcher.find()) { Integer tokenStartIndex = matcher.start(); Integer tokenEndIndex = matcher.end(); Span annotation = new Span(tokenStartIndex, tokenEndIndex, entry.getKey()); annotations.add(annotation); } } } } else { for (Pattern mPattern : mPatterns) { Matcher matcher = mPattern.matcher(text); while (matcher.find()) { Integer tokenStartIndex = matcher.start(); Integer tokenEndIndex = matcher.end(); Span annotation = new Span(tokenStartIndex, tokenEndIndex, sType); annotations.add(annotation); } } } return annotations.toArray( new Span[annotations.size()]); } @Override public void clearAdaptiveData() { // nothing to clear } public Pattern[] getmPatterns() { return mPatterns; } public void setmPatterns(Pattern[] mPatterns) { this.mPatterns = mPatterns; } public String getsType() { return sType; } public void setsType(String sType) { this.sType = sType; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000173 14135770370 032542 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderEvaluatio0100664 0001750 0001750 00000001723 14135770370 034136 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.eval.EvaluationMonitor; public interface TokenNameFinderEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000161 14135770370 032537 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderFactory.j0100664 0001750 0001750 00000017675 14135770370 034061 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Map; import opennlp.tools.namefind.TokenNameFinderModel.FeatureGeneratorCreationError; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; import opennlp.tools.util.featuregen.AggregatedFeatureGenerator; import opennlp.tools.util.featuregen.BigramNameFeatureGenerator; import opennlp.tools.util.featuregen.CachedFeatureGenerator; import opennlp.tools.util.featuregen.GeneratorFactory; import opennlp.tools.util.featuregen.OutcomePriorFeatureGenerator; import opennlp.tools.util.featuregen.PreviousMapFeatureGenerator; import opennlp.tools.util.featuregen.SentenceFeatureGenerator; import opennlp.tools.util.featuregen.TokenClassFeatureGenerator; import opennlp.tools.util.featuregen.TokenFeatureGenerator; import opennlp.tools.util.featuregen.WindowFeatureGenerator; // Idea of this factory is that most resources/impls used by the name finder // can be modified through this class! // That only works if that's the central class used for training/runtime public class TokenNameFinderFactory extends BaseToolFactory { private byte[] featureGeneratorBytes; private Map resources; private SequenceCodec seqCodec; /** * Creates a {@link TokenNameFinderFactory} that provides the default implementation * of the resources. */ public TokenNameFinderFactory() { this.seqCodec = new BioCodec(); } public TokenNameFinderFactory(byte[] featureGeneratorBytes, final Map resources, SequenceCodec seqCodec) { init(featureGeneratorBytes, resources, seqCodec); } void init(byte[] featureGeneratorBytes, final Map resources, SequenceCodec seqCodec) { this.featureGeneratorBytes = featureGeneratorBytes; this.resources = resources; this.seqCodec = seqCodec; } private static byte[] loadDefaultFeatureGeneratorBytes() { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); try (InputStream in = TokenNameFinderFactory.class.getResourceAsStream( "/opennlp/tools/namefind/ner-default-features.xml")) { if (in == null) { throw new IllegalStateException("Classpath must contain ner-default-features.xml file!"); } byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { bytes.write(buf, 0, len); } } catch (IOException e) { throw new IllegalStateException("Failed reading from ner-default-features.xml file on classpath!"); } return bytes.toByteArray(); } protected SequenceCodec getSequenceCodec() { return seqCodec; } protected Map getResources() { return resources; } protected byte[] getFeatureGenerator() { return featureGeneratorBytes; } public static TokenNameFinderFactory create(String subclassName, byte[] featureGeneratorBytes, final Map resources, SequenceCodec seqCodec) throws InvalidFormatException { TokenNameFinderFactory theFactory; if (subclassName == null) { // will create the default factory theFactory = new TokenNameFinderFactory(); } else { try { theFactory = ExtensionLoader.instantiateExtension( TokenNameFinderFactory.class, subclassName); } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } theFactory.init(featureGeneratorBytes, resources, seqCodec); return theFactory; } @Override public void validateArtifactMap() throws InvalidFormatException { // no additional artifacts } public SequenceCodec createSequenceCodec() { if (artifactProvider != null) { String sequeceCodecImplName = artifactProvider.getManifestProperty( TokenNameFinderModel.SEQUENCE_CODEC_CLASS_NAME_PARAMETER); return instantiateSequenceCodec(sequeceCodecImplName); } else { return seqCodec; } } public NameContextGenerator createContextGenerator() { AdaptiveFeatureGenerator featureGenerator = createFeatureGenerators(); if (featureGenerator == null) { featureGenerator = new CachedFeatureGenerator( new WindowFeatureGenerator(new TokenFeatureGenerator(), 2, 2), new WindowFeatureGenerator(new TokenClassFeatureGenerator(true), 2, 2), new OutcomePriorFeatureGenerator(), new PreviousMapFeatureGenerator(), new BigramNameFeatureGenerator(), new SentenceFeatureGenerator(true, false)); } return new DefaultNameContextGenerator(featureGenerator); } /** * Creates the {@link AdaptiveFeatureGenerator}. Usually this * is a set of generators contained in the {@link AggregatedFeatureGenerator}. * * Note: * The generators are created on every call to this method. * * @return the feature generator or null if there is no descriptor in the model */ public AdaptiveFeatureGenerator createFeatureGenerators() { if (featureGeneratorBytes == null && artifactProvider != null) { featureGeneratorBytes = artifactProvider.getArtifact( TokenNameFinderModel.GENERATOR_DESCRIPTOR_ENTRY_NAME); } if (featureGeneratorBytes == null) { featureGeneratorBytes = loadDefaultFeatureGeneratorBytes(); } InputStream descriptorIn = new ByteArrayInputStream(featureGeneratorBytes); AdaptiveFeatureGenerator generator; try { generator = GeneratorFactory.create(descriptorIn, key -> { if (artifactProvider != null) { return artifactProvider.getArtifact(key); } else { return resources.get(key); } }); } catch (InvalidFormatException e) { // It is assumed that the creation of the feature generation does not // fail after it succeeded once during model loading. // But it might still be possible that such an exception is thrown, // in this case the caller should not be forced to handle the exception // and a Runtime Exception is thrown instead. // If the re-creation of the feature generation fails it is assumed // that this can only be caused by a programming mistake and therefore // throwing a Runtime Exception is reasonable throw new FeatureGeneratorCreationError(e); } catch (IOException e) { throw new IllegalStateException("Reading from mem cannot result in an I/O error", e); } return generator; } public static SequenceCodec instantiateSequenceCodec( String sequenceCodecImplName) { if (sequenceCodecImplName != null) { return ExtensionLoader.instantiateExtension( SequenceCodec.class, sequenceCodecImplName); } else { // If nothing is specified return old default! return new BioCodec(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameCont0100644 0000000 0000000 00000000157 14135770370 032534 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameContextGenerator.jav0100664 0001750 0001750 00000003610 14135770370 034123 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.BeamSearchContextGenerator; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; /** * Interface for generating the context for an name finder by specifying a set of geature generators. * */ public interface NameContextGenerator extends BeamSearchContextGenerator { /** * Adds a feature generator to this set of feature generators. * @param generator The feature generator to add. */ void addFeatureGenerator(AdaptiveFeatureGenerator generator); /** * Informs all the feature generators for a name finder that the specified tokens have * been classified with the coorisponds set of specified outcomes. * @param tokens The tokens of the sentence or other text unit which has been processed. * @param outcomes The outcomes associated with the specified tokens. */ void updateAdaptiveData(String[] tokens, String[] outcomes); /** * Informs all the feature generators for a name finder that the context of the adaptive * data (typically a document) is no longer valid. */ void clearAdaptiveData(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameFind0100644 0000000 0000000 00000000166 14135770370 032511 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderSequenceValida0100664 0001750 0001750 00000004075 14135770370 034100 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.SequenceValidator; /** * This class is created by the {@link BioCodec}. */ public class NameFinderSequenceValidator implements SequenceValidator { public boolean validSequence(int i, String[] inputSequence, String[] outcomesSequence, String outcome) { // outcome is formatted like "cont" or "sometype-cont", so we // can check if it ends with "cont". if (outcome.endsWith(BioCodec.CONTINUE)) { int li = outcomesSequence.length - 1; if (li == -1) { return false; } else if (outcomesSequence[li].endsWith(BioCodec.OTHER)) { return false; } else if (outcomesSequence[li].endsWith(BioCodec.CONTINUE) || outcomesSequence[li].endsWith(BioCodec.START)) { // if it is continue or start, we have to check if previous match was of the same type String previousNameType = NameFinderME.extractNameType(outcomesSequence[li]); String nameType = NameFinderME.extractNameType(outcome); if (previousNameType != null || nameType != null ) { if (nameType != null ) { return nameType.equals(previousNameType); } return false; // outcomes types are not equal } } } return true; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_Dictiona0100644 0000000 0000000 00000000157 14135770370 032562 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/DictionaryNameFinder.jav0100664 0001750 0001750 00000006045 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.LinkedList; import java.util.List; import java.util.Objects; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.Span; import opennlp.tools.util.StringList; /** * This is a dictionary based name finder, it scans text * for names inside a dictionary. */ public class DictionaryNameFinder implements TokenNameFinder { private static final String DEFAULT_TYPE = "default"; private Dictionary mDictionary; private final String type; /** * Initialized the current instance with he provided dictionary * and a type. * * @param dictionary * @param type the name type used for the produced spans */ public DictionaryNameFinder(Dictionary dictionary, String type) { mDictionary = Objects.requireNonNull(dictionary, "dictionary must not be null"); this.type = Objects.requireNonNull(type, "type must not be null"); } /** * Initializes the current instance with the provided dictionary. * * @param dictionary */ public DictionaryNameFinder(Dictionary dictionary) { this(dictionary, DEFAULT_TYPE); } public Span[] find(String[] textTokenized) { List namesFound = new LinkedList<>(); for (int offsetFrom = 0; offsetFrom < textTokenized.length; offsetFrom++) { Span nameFound = null; String[] tokensSearching; for (int offsetTo = offsetFrom; offsetTo < textTokenized.length; offsetTo++) { int lengthSearching = offsetTo - offsetFrom + 1; if (lengthSearching > mDictionary.getMaxTokenCount()) { break; } else { tokensSearching = new String[lengthSearching]; System.arraycopy(textTokenized, offsetFrom, tokensSearching, 0, lengthSearching); StringList entryForSearch = new StringList(tokensSearching); if (mDictionary.contains(entryForSearch)) { nameFound = new Span(offsetFrom, offsetTo + 1, type); } } } if (nameFound != null) { namesFound.add(nameFound); // skip over the found tokens for the next search offsetFrom += nameFound.length() - 1; } } return namesFound.toArray(new Span[namesFound.size()]); } public void clearAdaptiveData() { // nothing to clear } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameFind0100644 0000000 0000000 00000000160 14135770370 032503 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.ja0100664 0001750 0001750 00000013700 14135770370 034030 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Objects; import opennlp.tools.ml.model.Event; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.Span; import opennlp.tools.util.featuregen.AdditionalContextFeatureGenerator; import opennlp.tools.util.featuregen.WindowFeatureGenerator; /** * Class for creating an event stream out of data files for training an name * finder. */ public class NameFinderEventStream extends opennlp.tools.util.AbstractEventStream { private NameContextGenerator contextGenerator; private AdditionalContextFeatureGenerator additionalContextFeatureGenerator = new AdditionalContextFeatureGenerator(); private SequenceCodec codec; private final String defaultType; /** * Creates a new name finder event stream using the specified data stream and context generator. * @param dataStream The data stream of events. * @param type null or overrides the type parameter in the provided samples * @param contextGenerator The context generator used to generate features for the event stream. */ public NameFinderEventStream(ObjectStream dataStream, String type, NameContextGenerator contextGenerator, SequenceCodec codec) { super(dataStream); this.codec = codec; if (codec == null) { this.codec = new BioCodec(); } this.contextGenerator = contextGenerator; this.contextGenerator.addFeatureGenerator( new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8)); this.defaultType = type; } public NameFinderEventStream(ObjectStream dataStream) { this(dataStream, null, new DefaultNameContextGenerator(), null); } /** * Generates the name tag outcomes (start, continue, other) for each token in a sentence * with the specified length using the specified name spans. * @param names Token spans for each of the names. * @param type null or overrides the type parameter in the provided samples * @param length The length of the sentence. * @return An array of start, continue, other outcomes based on the specified names and sentence length. * * @deprecated use the BioCodec implementation of the SequenceValidator instead! */ @Deprecated public static String[] generateOutcomes(Span[] names, String type, int length) { String[] outcomes = new String[length]; Arrays.fill(outcomes, NameFinderME.OTHER); for (Span name : names) { if (name.getType() == null) { outcomes[name.getStart()] = type + "-" + NameFinderME.START; } else { outcomes[name.getStart()] = name.getType() + "-" + NameFinderME.START; } // now iterate from begin + 1 till end for (int i = name.getStart() + 1; i < name.getEnd(); i++) { if (name.getType() == null) { outcomes[i] = type + "-" + NameFinderME.CONTINUE; } else { outcomes[i] = name.getType() + "-" + NameFinderME.CONTINUE; } } } return outcomes; } public static List generateEvents(String[] sentence, String[] outcomes, NameContextGenerator cg) { List events = new ArrayList<>(outcomes.length); for (int i = 0; i < outcomes.length; i++) { events.add(new Event(outcomes[i], cg.getContext(i, sentence, outcomes,null))); } cg.updateAdaptiveData(sentence, outcomes); return events; } @Override protected Iterator createEvents(NameSample sample) { if (sample.isClearAdaptiveDataSet()) { contextGenerator.clearAdaptiveData(); } Span[] names = sample.getNames(); if (!Objects.isNull(this.defaultType)) { overrideType(names); } String[] outcomes = codec.encode(names, sample.getSentence().length); // String outcomes[] = generateOutcomes(sample.getNames(), type, sample.getSentence().length); additionalContextFeatureGenerator.setCurrentContext(sample.getAdditionalContext()); String[] tokens = new String[sample.getSentence().length]; for (int i = 0; i < sample.getSentence().length; i++) { tokens[i] = sample.getSentence()[i]; } return generateEvents(tokens, outcomes, contextGenerator).iterator(); } private void overrideType(Span[] names) { for (int i = 0; i < names.length; i++) { Span n = names[i]; names[i] = new Span(n.getStart(), n.getEnd(), this.defaultType, n.getProb()); } } /** * Generated previous decision features for each token based on contents of the specified map. * @param tokens The token for which the context is generated. * @param prevMap A mapping of tokens to their previous decisions. * @return An additional context array with features for each token. */ public static String[][] additionalContext(String[] tokens, Map prevMap) { String[][] ac = new String[tokens.length][1]; for (int ti = 0; ti < tokens.length; ti++) { String pt = prevMap.get(tokens[ti]); ac[ti][0] = "pd=" + pt; } return ac; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/BioCodec.java0100664 0001750 0001750 00000010630 14135770370 031637 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.Span; public class BioCodec implements SequenceCodec { public static final String START = "start"; public static final String CONTINUE = "cont"; public static final String OTHER = "other"; private static final Pattern typedOutcomePattern = Pattern.compile("(.+)-\\w+"); static String extractNameType(String outcome) { Matcher matcher = typedOutcomePattern.matcher(outcome); if (matcher.matches()) { return matcher.group(1); } return null; } public Span[] decode(List c) { int start = -1; int end = -1; List spans = new ArrayList<>(c.size()); for (int li = 0; li < c.size(); li++) { String chunkTag = c.get(li); if (chunkTag.endsWith(BioCodec.START)) { if (start != -1) { spans.add(new Span(start, end, extractNameType(c.get(li - 1)))); } start = li; end = li + 1; } else if (chunkTag.endsWith(BioCodec.CONTINUE)) { end = li + 1; } else if (chunkTag.endsWith(BioCodec.OTHER)) { if (start != -1) { spans.add(new Span(start, end, extractNameType(c.get(li - 1)))); start = -1; end = -1; } } } if (start != -1) { spans.add(new Span(start, end, extractNameType(c.get(c.size() - 1)))); } return spans.toArray(new Span[spans.size()]); } public String[] encode(Span[] names, int length) { String[] outcomes = new String[length]; Arrays.fill(outcomes, BioCodec.OTHER); for (Span name : names) { if (name.getType() == null) { outcomes[name.getStart()] = "default" + "-" + BioCodec.START; } else { outcomes[name.getStart()] = name.getType() + "-" + BioCodec.START; } // now iterate from begin + 1 till end for (int i = name.getStart() + 1; i < name.getEnd(); i++) { if (name.getType() == null) { outcomes[i] = "default" + "-" + BioCodec.CONTINUE; } else { outcomes[i] = name.getType() + "-" + BioCodec.CONTINUE; } } } return outcomes; } public NameFinderSequenceValidator createSequenceValidator() { return new NameFinderSequenceValidator(); } @Override public boolean areOutcomesCompatible(String[] outcomes) { // We should have *optionally* one outcome named "other", some named xyz-start and sometimes // they have a pair xyz-cont. We should not have any other outcome // To validate the model we check if we have one outcome named "other", at least // one outcome with suffix start. After that we check if all outcomes that ends with // "cont" have a pair that ends with "start". List start = new ArrayList<>(); List cont = new ArrayList<>(); for (String outcome : outcomes) { if (outcome.endsWith(BioCodec.START)) { start.add(outcome.substring(0, outcome.length() - BioCodec.START.length())); } else if (outcome.endsWith(BioCodec.CONTINUE)) { cont.add(outcome.substring(0, outcome.length() - BioCodec.CONTINUE.length())); } else if (!outcome.equals(BioCodec.OTHER)) { // got unexpected outcome return false; } } if (start.size() == 0) { return false; } else { for (String contPreffix : cont) { if (!start.contains(contPreffix)) { return false; } } } return true; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_TokenNam0100644 0000000 0000000 00000000170 14135770370 032537 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossVali0100664 0001750 0001750 00000016230 14135770370 034111 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.SequenceCodec; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.FMeasure; public class TokenNameFinderCrossValidator { private static class DocumentSample implements Serializable { private NameSample[] samples; DocumentSample(NameSample[] samples) { this.samples = samples; } private NameSample[] getSamples() { return samples; } } /** * Reads Name Samples to group them as a document based on the clear adaptive data flag. */ private static class NameToDocumentSampleStream extends FilterObjectStream { private NameSample beginSample; protected NameToDocumentSampleStream(ObjectStream samples) { super(samples); } public DocumentSample read() throws IOException { List document = new ArrayList<>(); if (beginSample == null) { // Assume that the clear flag is set beginSample = samples.read(); } // Underlying stream is exhausted! if (beginSample == null) { return null; } document.add(beginSample); NameSample sample; while ((sample = samples.read()) != null) { if (sample.isClearAdaptiveDataSet()) { beginSample = sample; break; } document.add(sample); } // Underlying stream is exhausted, // next call must return null if (sample == null) { beginSample = null; } return new DocumentSample(document.toArray(new NameSample[document.size()])); } @Override public void reset() throws IOException, UnsupportedOperationException { super.reset(); beginSample = null; } } /** * Splits DocumentSample into NameSamples. */ private static class DocumentToNameSampleStream extends FilterObjectStream { protected DocumentToNameSampleStream(ObjectStream samples) { super(samples); } private Iterator documentSamples = Collections.emptyList().iterator(); public NameSample read() throws IOException { // Note: Empty document samples should be skipped if (documentSamples.hasNext()) { return documentSamples.next(); } else { DocumentSample docSample = samples.read(); if (docSample != null) { documentSamples = Arrays.asList(docSample.getSamples()).iterator(); return read(); } else { return null; } } } } private final String languageCode; private final TrainingParameters params; private final String type; private byte[] featureGeneratorBytes; private Map resources; private TokenNameFinderEvaluationMonitor[] listeners; private FMeasure fmeasure = new FMeasure(); private TokenNameFinderFactory factory; /** * Name finder cross validator * * @param languageCode * the language of the training data * @param type * null or an override type for all types in the training data * @param trainParams * machine learning train parameters * @param featureGeneratorBytes * descriptor to configure the feature generation or null * @param listeners * a list of listeners * @param resources * the resources for the name finder or null if none */ public TokenNameFinderCrossValidator(String languageCode, String type, TrainingParameters trainParams, byte[] featureGeneratorBytes, Map resources, SequenceCodec codec, TokenNameFinderEvaluationMonitor... listeners) { this.languageCode = languageCode; this.type = type; this.featureGeneratorBytes = featureGeneratorBytes; this.resources = resources; this.params = trainParams; this.listeners = listeners; } public TokenNameFinderCrossValidator(String languageCode, String type, TrainingParameters trainParams, byte[] featureGeneratorBytes, Map resources, TokenNameFinderEvaluationMonitor... listeners) { this(languageCode, type, trainParams, featureGeneratorBytes, resources, new BioCodec(), listeners); } public TokenNameFinderCrossValidator(String languageCode, String type, TrainingParameters trainParams, TokenNameFinderFactory factory, TokenNameFinderEvaluationMonitor... listeners) { this.languageCode = languageCode; this.type = type; this.params = trainParams; this.factory = factory; this.listeners = listeners; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { // Note: The name samples need to be grouped on a document basis. CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>( new NameToDocumentSampleStream(samples), nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner.next(); TokenNameFinderModel model; if (factory != null) { model = NameFinderME.train(languageCode, type, new DocumentToNameSampleStream(trainingSampleStream), params, factory); } else { model = NameFinderME.train(languageCode, type, new DocumentToNameSampleStream(trainingSampleStream), params, TokenNameFinderFactory.create(null, featureGeneratorBytes, resources, new BioCodec())); } // do testing TokenNameFinderEvaluator evaluator = new TokenNameFinderEvaluator( new NameFinderME(model), listeners); evaluator.evaluate(new DocumentToNameSampleStream(trainingSampleStream.getTestSampleStream())); fmeasure.mergeInto(evaluator.getFMeasure()); } } public FMeasure getFMeasure() { return fmeasure; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_BilouNam0100644 0000000 0000000 00000000173 14135770370 032534 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouNameFinderSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/BilouNameFinderSequenceV0100664 0001750 0001750 00000005107 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.SequenceValidator; public class BilouNameFinderSequenceValidator implements SequenceValidator { public boolean validSequence(int i, String[] inputSequence, String[] outcomesSequence, String outcome) { if (outcome.endsWith(BilouCodec.CONTINUE) || outcome.endsWith(BilouCodec.LAST)) { int li = outcomesSequence.length - 1; if (li == -1) { return false; } else if (outcomesSequence[li].endsWith(BilouCodec.OTHER) || outcomesSequence[li].endsWith(BilouCodec.UNIT)) { return false; } else if (outcomesSequence[li].endsWith(BilouCodec.LAST) && (outcome.endsWith(BilouCodec.CONTINUE) || outcome.endsWith(BilouCodec.LAST))) { return false; } else if (outcomesSequence[li].endsWith(BilouCodec.CONTINUE) || outcomesSequence[li].endsWith(BilouCodec.START)) { // if it is continue, we have to check if previous match was of the same type String previousNameType = NameFinderME.extractNameType(outcomesSequence[li]); String nameType = NameFinderME.extractNameType(outcome); if (previousNameType != null || nameType != null) { if (nameType != null) { return nameType.equals(previousNameType); } return false; // outcomes types are not equal } } } if (outcomesSequence.length > 0) { if (outcome.endsWith(BilouCodec.START) || outcome.endsWith(BilouCodec.OTHER) || outcome.endsWith(BilouCodec.UNIT)) { return !outcomesSequence[outcomesSequence.length - 1].endsWith(BilouCodec.START) && !outcomesSequence[outcomesSequence.length - 1].endsWith(BilouCodec.CONTINUE); } } return true; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinder.java0100664 0001750 0001750 00000002777 14135770370 033216 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import opennlp.tools.util.Span; /** * The interface for name finders which provide name tags for a sequence of tokens. */ public interface TokenNameFinder { /** Generates name tags for the given sequence, typically a sentence, * returning token spans for any identified names. * * @param tokens an array of the tokens or words of the sequence, typically a sentence. * @return an array of spans for each of the names identified. */ Span[] find(String[] tokens); /** * Forgets all adaptive data which was collected during previous * calls to one of the find methods. * * This method is typical called at the end of a document. */ void clearAdaptiveData(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java0100664 0001750 0001750 00000021327 14135770370 032217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.Span; /** * Class for holding names for a single unit of text. */ public class NameSample implements Serializable { private final String id; private final List sentence; private final List names; private final String[][] additionalContext; private final boolean isClearAdaptiveData; /** The a default type value when there is no type in training data. */ public static final String DEFAULT_TYPE = "default"; public NameSample(String id, String[] sentence, Span[] names, String[][] additionalContext, boolean clearAdaptiveData) { this.id = id; Objects.requireNonNull(sentence, "sentence must not be null"); if (names == null) { names = new Span[0]; } this.sentence = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(sentence))); List namesList = Arrays.asList(names); Collections.sort(namesList); this.names = Collections.unmodifiableList(namesList); if (additionalContext != null) { this.additionalContext = new String[additionalContext.length][]; for (int i = 0; i < additionalContext.length; i++) { this.additionalContext[i] = new String[additionalContext[i].length]; System.arraycopy(additionalContext[i], 0, this.additionalContext[i], 0, additionalContext[i].length); } } else { this.additionalContext = null; } isClearAdaptiveData = clearAdaptiveData; // Check that name spans are not overlapping, otherwise throw exception if (this.names.size() > 1) { for (int i = 1; i < this.names.size(); i++) { if (this.names.get(i).getStart() < this.names.get(i - 1).getEnd()) { throw new RuntimeException(String.format("name spans %s and %s are overlapped in file: %s", this.names.get(i - 1), this.names.get(i), id)); } } } } /** * Initializes the current instance. * * @param sentence training sentence * @param names * @param additionalContext * @param clearAdaptiveData if true the adaptive data of the * feature generators is cleared */ public NameSample(String[] sentence, Span[] names, String[][] additionalContext, boolean clearAdaptiveData) { this(null, sentence, names, additionalContext, clearAdaptiveData); } public NameSample(String[] sentence, Span[] names, boolean clearAdaptiveData) { this(sentence, names, null, clearAdaptiveData); } public String getId() { return id; } public String[] getSentence() { return sentence.toArray(new String[sentence.size()]); } public Span[] getNames() { return names.toArray(new Span[names.size()]); } public String[][] getAdditionalContext() { return additionalContext; } public boolean isClearAdaptiveDataSet() { return isClearAdaptiveData; } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(getSentence()), Arrays.hashCode(getNames()), Arrays.hashCode(getAdditionalContext()), isClearAdaptiveDataSet()); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof NameSample) { NameSample a = (NameSample) obj; return Arrays.equals(getSentence(), a.getSentence()) && Arrays.equals(getNames(), a.getNames()) && Arrays.equals(getAdditionalContext(), a.getAdditionalContext()) && isClearAdaptiveDataSet() == a.isClearAdaptiveDataSet(); } return false; } @Override public String toString() { StringBuilder result = new StringBuilder(); // If adaptive data must be cleared insert an empty line // before the sample sentence line if (isClearAdaptiveDataSet()) result.append("\n"); for (int tokenIndex = 0; tokenIndex < sentence.size(); tokenIndex++) { // token for (Span name : names) { if (name.getStart() == tokenIndex) { // check if nameTypes is null, or if the nameType for this specific // entity is empty. If it is, we leave the nameType blank. if (name.getType() == null) { result.append(NameSampleDataStream.START_TAG).append(' '); } else { result.append(NameSampleDataStream.START_TAG_PREFIX).append(name.getType()).append("> "); } } if (name.getEnd() == tokenIndex) { result.append(NameSampleDataStream.END_TAG).append(' '); } } result.append(sentence.get(tokenIndex)).append(' '); } if (sentence.size() > 1) result.setLength(result.length() - 1); for (Span name : names) { if (name.getEnd() == sentence.size()) { result.append(' ').append(NameSampleDataStream.END_TAG); } } return result.toString(); } private static String errorTokenWithContext(String[] sentence, int index) { StringBuilder errorString = new StringBuilder(); // two token before if (index > 1) errorString.append(sentence[index - 2]).append(" "); if (index > 0) errorString.append(sentence[index - 1]).append(" "); // token itself errorString.append("###"); errorString.append(sentence[index]); errorString.append("###").append(" "); // two token after if (index + 1 < sentence.length) errorString.append(sentence[index + 1]).append(" "); if (index + 2 < sentence.length) errorString.append(sentence[index + 2]); return errorString.toString(); } private static final Pattern START_TAG_PATTERN = Pattern.compile("\\s]*))?>"); public static NameSample parse(String taggedTokens, boolean isClearAdaptiveData) throws IOException { return parse(taggedTokens, DEFAULT_TYPE, isClearAdaptiveData); } public static NameSample parse(String taggedTokens, String defaultType, boolean isClearAdaptiveData) throws IOException { // TODO: Should throw another exception, and then convert it into an IOException in the stream String[] parts = WhitespaceTokenizer.INSTANCE.tokenize(taggedTokens); List tokenList = new ArrayList<>(parts.length); List nameList = new ArrayList<>(); String nameType = defaultType; int startIndex = -1; int wordIndex = 0; // we check if at least one name has the a type. If no one has, we will // leave the NameType property of NameSample null. boolean catchingName = false; for (int pi = 0; pi < parts.length; pi++) { Matcher startMatcher = START_TAG_PATTERN.matcher(parts[pi]); if (startMatcher.matches()) { if (catchingName) { throw new IOException("Found unexpected annotation" + " while handling a name sequence: " + errorTokenWithContext(parts, pi)); } catchingName = true; startIndex = wordIndex; String nameTypeFromSample = startMatcher.group(2); if (nameTypeFromSample != null) { if (nameTypeFromSample.length() == 0) { throw new IOException("Missing a name type: " + errorTokenWithContext(parts, pi)); } nameType = nameTypeFromSample; } } else if (parts[pi].equals(NameSampleDataStream.END_TAG)) { if (!catchingName) { throw new IOException("Found unexpected annotation: " + errorTokenWithContext(parts, pi)); } catchingName = false; // create name nameList.add(new Span(startIndex, wordIndex, nameType)); } else { tokenList.add(parts[pi]); wordIndex++; } } String[] sentence = tokenList.toArray(new String[tokenList.size()]); Span[] names = nameList.toArray(new Span[nameList.size()]); return new NameSample(sentence, names, isClearAdaptiveData); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_namefind_NameSamp0100644 0000000 0000000 00000000157 14135770370 032531 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleDataStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleDataStream.jav0100664 0001750 0001750 00000004142 14135770370 034020 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.namefind; import java.io.IOException; import opennlp.tools.ml.maxent.DataStream; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * The {@link NameSampleDataStream} class converts tagged {@link String}s * provided by a {@link DataStream} to {@link NameSample} objects. * It uses text that is is one-sentence per line and tokenized * with names identified by <START> and <END> tags. */ public class NameSampleDataStream extends FilterObjectStream { public static final String START_TAG_PREFIX = " in) { super(in); } public NameSample read() throws IOException { String token = samples.read(); boolean isClearAdaptiveData = false; // An empty line indicates the begin of a new article // for which the adaptive data in the feature generators // must be cleared while (token != null && token.trim().length() == 0) { isClearAdaptiveData = true; token = samples.read(); } if (token != null) { return NameSample.parse(token, isClearAdaptiveData); } else { return null; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Defaul0100644 0000000 0000000 00000000170 14135770370 032604 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/DefaultEndOfSentenceScanner.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/DefaultEndOfSentenceSc0100664 0001750 0001750 00000004235 14135770370 034110 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Default implementation of the {@link EndOfSentenceScanner}. * It uses an character array with possible end of sentence chars * to identify potential sentence endings. */ public class DefaultEndOfSentenceScanner implements EndOfSentenceScanner { private Set eosCharacters; @Deprecated private char[] eosChars; /** * Initializes the current instance. * * @param eosCharacters */ public DefaultEndOfSentenceScanner(char[] eosCharacters) { this.eosCharacters = new HashSet<>(); for (char eosChar: eosCharacters) { this.eosCharacters.add(eosChar); } this.eosChars = eosCharacters; } public List getPositions(String s) { return getPositions(s.toCharArray()); } public List getPositions(StringBuffer buf) { return getPositions(buf.toString().toCharArray()); } public List getPositions(char[] cbuf) { List l = new ArrayList<>(); for (int i = 0; i < cbuf.length; i++) { if (eosCharacters.contains(cbuf[i])) { l.add(i); } } return l; } @Deprecated public char[] getEndOfSentenceCharacters() { return eosChars; } @Override public Set getEOSCharacters() { return eosCharacters; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_EmptyL0100644 0000000 0000000 00000000170 14135770370 032616 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/EmptyLinePreprocessorStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/EmptyLinePreprocessorS0100664 0001750 0001750 00000004170 14135770370 034273 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Stream to to clean up empty lines for empty line separated document streams.
* * - Skips empty line at training data start
* - Transforms multiple empty lines in a row into one
* - Replaces white space lines with empty lines
* - TODO: Terminates last document with empty line if it is missing
*
* This stream should be used by the components that mark empty lines to mark document boundaries. *

* Note: * This class is not thread safe.
* Do not use this class, internal use only! */ public class EmptyLinePreprocessorStream extends FilterObjectStream { private boolean lastLineWasEmpty = true; public EmptyLinePreprocessorStream(ObjectStream in) { super(in); } private static boolean isLineEmpty(String line) { return line.trim().length() == 0; } public String read() throws IOException { String line = samples.read(); if (lastLineWasEmpty) { lastLineWasEmpty = false; while (line != null && isLineEmpty(line)) { line = samples.read(); } } if (line != null && isLineEmpty(line)) { lastLineWasEmpty = true; line = ""; } return line; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Newlin0100644 0000000 0000000 00000000164 14135770370 032643 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetector.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/NewlineSentenceDetecto0100664 0001750 0001750 00000003527 14135770370 034236 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.Span; /** * The Newline Sentence Detector assumes that sentences are line delimited and * recognizes one sentence per non-empty line. */ public class NewlineSentenceDetector implements SentenceDetector { public String[] sentDetect(String s) { return Span.spansToStrings(sentPosDetect(s), s); } public Span[] sentPosDetect(String s) { List sentences = new ArrayList<>(); int start = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '\n' || c == '\r') { if (i - start > 0) { Span span = new Span(start, i).trim(s); if (span.length() > 0) { sentences.add(span); } start = i + 1; } } } if (s.length() - start > 0) { Span span = new Span(start, s.length()).trim(s); if (span.length() > 0) { sentences.add(span); } } return sentences.toArray(new Span[sentences.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_EndOfS0100644 0000000 0000000 00000000161 14135770370 032522 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/EndOfSentenceScanner.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/EndOfSentenceScanner.j0100664 0001750 0001750 00000004531 14135770370 034056 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.List; import java.util.Set; /** * Scans Strings, StringBuffers, and char[] arrays for the offsets of * sentence ending characters. * *

Implementations of this interface can use regular expressions, * hand-coded DFAs, and other scanning techniques to locate end of * sentence offsets.

*/ public interface EndOfSentenceScanner { /** * Returns an array of character which can indicate the end of a sentence. * @return an array of character which can indicate the end of a sentence. */ @Deprecated char[] getEndOfSentenceCharacters(); /** * Returns a set of character which can indicate the end of a sentence. * @return a set of character which can indicate the end of a sentence. */ Set getEOSCharacters(); /** * The receiver scans the specified string for sentence ending characters and * returns their offsets. * * @param s a String value * @return a List of Integer objects. */ List getPositions(String s); /** * The receiver scans `buf' for sentence ending characters and * returns their offsets. * * @param buf a StringBuffer value * @return a List of Integer objects. */ List getPositions(StringBuffer buf); /** * The receiver scans `cbuf' for sentence ending characters and * returns their offsets. * * @param cbuf a char[] value * @return a List of Integer objects. */ List getPositions(char[] cbuf); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/package-info.java0100664 0001750 0001750 00000001601 14135770370 033073 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to identifying sentece boundries. */ package opennlp.tools.sentdetect; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java0100664 0001750 0001750 00000007224 14135770370 033464 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import opennlp.tools.tokenize.Detokenizer; import opennlp.tools.util.Span; /** * A {@link SentenceSample} contains a document with * begin indexes of the individual sentences. */ public class SentenceSample implements Serializable { private final String document; private final List sentences; /** * Initializes the current instance. * * @param document * @param sentences */ public SentenceSample(CharSequence document, Span... sentences) { this.document = document.toString(); this.sentences = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(sentences))); // validate that all spans are inside the document text for (Span sentence : sentences) { if (sentence.getEnd() > document.length()) { throw new IllegalArgumentException( String.format("Sentence span is outside of document text [len %d] and span %s", document.length(), sentence)); } } } public SentenceSample(Detokenizer detokenizer, String[][] sentences) { List spans = new ArrayList<>(sentences.length); StringBuilder documentBuilder = new StringBuilder(); for (String[] sentenceTokens : sentences) { String sampleSentence = detokenizer.detokenize(sentenceTokens, null); int beginIndex = documentBuilder.length(); documentBuilder.append(sampleSentence); spans.add(new Span(beginIndex, documentBuilder.length())); } document = documentBuilder.toString(); this.sentences = Collections.unmodifiableList(spans); } /** * Retrieves the document. * * @return the document */ public String getDocument() { return document; } /** * Retrieves the sentences. * * @return the begin indexes of the sentences in the document. */ public Span[] getSentences() { return sentences.toArray(new Span[sentences.size()]); } // TODO: This one must output the tags! @Override public String toString() { StringBuilder documentBuilder = new StringBuilder(); for (Span sentSpan : sentences) { documentBuilder.append(sentSpan.getCoveredText(document).toString() .replace("\r", "").replace("\n", "")); documentBuilder.append("\n"); } return documentBuilder.toString(); } @Override public int hashCode() { return Objects.hash(getDocument(), Arrays.hashCode(getSentences())); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof SentenceSample) { SentenceSample a = (SentenceSample) obj; return getDocument().equals(a.getDocument()) && Arrays.equals(getSentences(), a.getSentences()); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetector.java0100664 0001750 0001750 00000002770 14135770370 034015 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import opennlp.tools.util.Span; /** * The interface for sentence detectors, which find the sentence boundaries in * a text. */ public interface SentenceDetector { /** * Sentence detect a string. * * @param s The string to be sentence detected. * @return The String[] with the individual sentences as the array * elements. */ String[] sentDetect(String s); /** * Sentence detect a string. * * @param s The string to be sentence detected. * * @return The Span[] with the spans (offsets into s) for each * detected sentence as the individuals array elements. */ Span[] sentPosDetect(String s); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000161 14135770370 032640 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSampleStream.j0100664 0001750 0001750 00000004450 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import java.util.LinkedList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; /** * This class is a stream filter which reads a sentence by line samples from * a Reader and converts them into {@link SentenceSample} objects. * An empty line indicates the begin of a new document. */ public class SentenceSampleStream extends FilterObjectStream { public SentenceSampleStream(ObjectStream sentences) { super(new EmptyLinePreprocessorStream(sentences)); } public static String replaceNewLineEscapeTags(String s) { return s.replace("", "\n").replace("", "\r"); } public SentenceSample read() throws IOException { StringBuilder sentencesString = new StringBuilder(); List sentenceSpans = new LinkedList<>(); String sentence; while ((sentence = samples.read()) != null && !sentence.equals("")) { int begin = sentencesString.length(); sentence = sentence.trim(); sentence = replaceNewLineEscapeTags(sentence); sentencesString.append(sentence); int end = sentencesString.length(); sentenceSpans.add(new Span(begin, end)); sentencesString.append(' '); } if (sentenceSpans.size() > 0) { return new SentenceSample(sentencesString.toString(), sentenceSpans.toArray(new Span[sentenceSpans.size()])); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000166 14135770370 032645 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvalua0100664 0001750 0001750 00000004705 14135770370 034233 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * The {@link SentenceDetectorEvaluator} measures the performance of * the given {@link SentenceDetector} with the provided reference * {@link SentenceSample}s. * * @see Evaluator * @see SentenceDetector * @see SentenceSample */ public class SentenceDetectorEvaluator extends Evaluator { private FMeasure fmeasure = new FMeasure(); /** * The {@link SentenceDetector} used to predict sentences. */ private SentenceDetector sentenceDetector; /** * Initializes the current instance. * * @param sentenceDetector * @param listeners evaluation sample listeners */ public SentenceDetectorEvaluator(SentenceDetector sentenceDetector, SentenceDetectorEvaluationMonitor... listeners) { super(listeners); this.sentenceDetector = sentenceDetector; } private Span[] trimSpans(String document, Span[] spans) { Span[] trimedSpans = new Span[spans.length]; for (int i = 0; i < spans.length; i++) { trimedSpans[i] = spans[i].trim(document); } return trimedSpans; } @Override protected SentenceSample processSample(SentenceSample sample) { Span[] predictions = trimSpans(sample.getDocument(), sentenceDetector.sentPosDetect(sample.getDocument())); Span[] references = trimSpans(sample.getDocument(), sample.getSentences()); fmeasure.updateScores(references, predictions); return new SentenceSample(sample.getDocument(), predictions); } public FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceModel.java0100664 0001750 0001750 00000012017 14135770370 033277 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.BaseModel; import opennlp.tools.util.model.ModelUtil; /** * The {@link SentenceModel} is the model used * by a learnable {@link SentenceDetector}. * * @see SentenceDetectorME */ public class SentenceModel extends BaseModel { private static final String COMPONENT_NAME = "SentenceDetectorME"; private static final String MAXENT_MODEL_ENTRY_NAME = "sent.model"; public SentenceModel(String languageCode, MaxentModel sentModel, Map manifestInfoEntries, SentenceDetectorFactory sdFactory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, sdFactory); artifactMap.put(MAXENT_MODEL_ENTRY_NAME, sentModel); checkArtifactMap(); } /** * TODO: was added in 1.5.3 -> remove * @deprecated Use * {@link #SentenceModel(String, MaxentModel, Map, SentenceDetectorFactory)} * instead and pass in a {@link SentenceDetectorFactory} */ public SentenceModel(String languageCode, MaxentModel sentModel, boolean useTokenEnd, Dictionary abbreviations, char[] eosCharacters, Map manifestInfoEntries) { this(languageCode, sentModel, manifestInfoEntries, new SentenceDetectorFactory(languageCode, useTokenEnd, abbreviations, eosCharacters)); } /** * TODO: was added in 1.5.3 -> remove * * @deprecated Use * {@link #SentenceModel(String, MaxentModel, Map, SentenceDetectorFactory)} * instead and pass in a {@link SentenceDetectorFactory} */ public SentenceModel(String languageCode, MaxentModel sentModel, boolean useTokenEnd, Dictionary abbreviations, char[] eosCharacters) { this(languageCode, sentModel, useTokenEnd, abbreviations, eosCharacters, null); } public SentenceModel(String languageCode, MaxentModel sentModel, boolean useTokenEnd, Dictionary abbreviations, Map manifestInfoEntries) { this(languageCode, sentModel, useTokenEnd, abbreviations, null, manifestInfoEntries); } public SentenceModel(String languageCode, MaxentModel sentModel, boolean useTokenEnd, Dictionary abbreviations) { this (languageCode, sentModel, useTokenEnd, abbreviations, null, null); } public SentenceModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public SentenceModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public SentenceModel(Path modelPath) throws IOException { this(modelPath.toFile()); } public SentenceModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof MaxentModel)) { throw new InvalidFormatException("Unable to find " + MAXENT_MODEL_ENTRY_NAME + " maxent model!"); } if (!ModelUtil.validateOutcomes(getMaxentModel(), SentenceDetectorME.SPLIT, SentenceDetectorME.NO_SPLIT)) { throw new InvalidFormatException("The maxent model is not compatible " + "with the sentence detector!"); } } public SentenceDetectorFactory getFactory() { return (SentenceDetectorFactory) this.toolFactory; } @Override protected Class getDefaultFactory() { return SentenceDetectorFactory.class; } public MaxentModel getMaxentModel() { return (MaxentModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME); } public Dictionary getAbbreviations() { if (getFactory() != null) { return getFactory().getAbbreviationDictionary(); } return null; } public boolean useTokenEnd() { return getFactory() == null || getFactory().isUseTokenEnd(); } public char[] getEosCharacters() { if (getFactory() != null) { return getFactory().getEOSCharacters(); } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_lang_t0100644 0000000 0000000 00000000175 14135770370 032655 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/th/SentenceContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/th/SentenceContex0100664 0001750 0001750 00000005250 14135770370 034114 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect.lang.th; import opennlp.tools.sentdetect.DefaultSDContextGenerator; /** * Creates contexts/features for end-of-sentence detection in Thai text. */ public class SentenceContextGenerator extends DefaultSDContextGenerator { public static final char[] eosCharacters = {' ','\n'}; public SentenceContextGenerator() { super(eosCharacters); } @Override protected void collectFeatures(String prefix, String suffix, String previous, String next) { buf.append("p="); buf.append(prefix); collectFeats.add(buf.toString()); buf.setLength(0); buf.append("s="); buf.append(suffix); collectFeats.add(buf.toString()); buf.setLength(0); collectFeats.add("p1=" + prefix.substring(StrictMath.max(prefix.length() - 1,0))); collectFeats.add("p2=" + prefix.substring(StrictMath.max(prefix.length() - 2,0))); collectFeats.add("p3=" + prefix.substring(StrictMath.max(prefix.length() - 3,0))); collectFeats.add("p4=" + prefix.substring(StrictMath.max(prefix.length() - 4,0))); collectFeats.add("p5=" + prefix.substring(StrictMath.max(prefix.length() - 5,0))); collectFeats.add("p6=" + prefix.substring(StrictMath.max(prefix.length() - 6,0))); collectFeats.add("p7=" + prefix.substring(StrictMath.max(prefix.length() - 7,0))); collectFeats.add("n1=" + suffix.substring(0,StrictMath.min(1, suffix.length()))); collectFeats.add("n2=" + suffix.substring(0,StrictMath.min(2, suffix.length()))); collectFeats.add("n3=" + suffix.substring(0,StrictMath.min(3, suffix.length()))); collectFeats.add("n4=" + suffix.substring(0,StrictMath.min(4, suffix.length()))); collectFeats.add("n5=" + suffix.substring(0,StrictMath.min(5, suffix.length()))); collectFeats.add("n6=" + suffix.substring(0,StrictMath.min(6, suffix.length()))); collectFeats.add("n7=" + suffix.substring(0,StrictMath.min(7, suffix.length()))); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/th/package.html0100664 0001750 0001750 00000001666 14135770370 033534 0ustar00jeffjeff0000000 0000000 Package related to the processing of Thai data. apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/lang/Factory.java0100664 0001750 0001750 00000006060 14135770370 033103 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect.lang; import java.util.Collections; import java.util.Set; import opennlp.tools.sentdetect.DefaultEndOfSentenceScanner; import opennlp.tools.sentdetect.DefaultSDContextGenerator; import opennlp.tools.sentdetect.EndOfSentenceScanner; import opennlp.tools.sentdetect.SDContextGenerator; import opennlp.tools.sentdetect.lang.th.SentenceContextGenerator; public class Factory { public static final char[] ptEosCharacters = new char[] { '.', '?', '!', ';', ':', '(', ')', '«', '»', '\'', '"' }; public static final char[] defaultEosCharacters = new char[] { '.', '!', '?' }; public static final char[] thEosCharacters = new char[] { ' ','\n' }; public static final char[] jpnEosCharacters = new char[] {'。', '!', '?'}; public EndOfSentenceScanner createEndOfSentenceScanner(String languageCode) { return new DefaultEndOfSentenceScanner(getEOSCharacters(languageCode)); } public EndOfSentenceScanner createEndOfSentenceScanner( char[] customEOSCharacters) { return new DefaultEndOfSentenceScanner(customEOSCharacters); } public SDContextGenerator createSentenceContextGenerator(String languageCode, Set abbreviations) { if ("th".equals(languageCode) || "tha".equals(languageCode)) { return new SentenceContextGenerator(); } else if ("pt".equals(languageCode) || "por".equals(languageCode)) { return new DefaultSDContextGenerator(abbreviations, ptEosCharacters); } return new DefaultSDContextGenerator(abbreviations, defaultEosCharacters); } public SDContextGenerator createSentenceContextGenerator( Set abbreviations, char[] customEOSCharacters) { return new DefaultSDContextGenerator(abbreviations, customEOSCharacters); } public SDContextGenerator createSentenceContextGenerator(String languageCode) { return createSentenceContextGenerator(languageCode, Collections.emptySet()); } public char[] getEOSCharacters(String languageCode) { if ("th".equals(languageCode) || "tha".equals(languageCode)) { return thEosCharacters; } else if ("pt".equals(languageCode) || "por".equals(languageCode)) { return ptEosCharacters; } else if ("jpn".equals(languageCode)) { return jpnEosCharacters; } return defaultEosCharacters; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000176 14135770370 032646 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvalua0100664 0001750 0001750 00000001736 14135770370 034234 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import opennlp.tools.util.eval.EvaluationMonitor; public interface SentenceDetectorEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000164 14135770370 032643 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorFactor0100664 0001750 0001750 00000016063 14135770370 034234 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.Collections; import java.util.Map; import java.util.Set; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ext.ExtensionLoader; /** * The factory that provides SentenceDetecor default implementations and * resources */ public class SentenceDetectorFactory extends BaseToolFactory { private String languageCode; private char[] eosCharacters; private Dictionary abbreviationDictionary; private Boolean useTokenEnd = null; private static final String ABBREVIATIONS_ENTRY_NAME = "abbreviations.dictionary"; private static final String EOS_CHARACTERS_PROPERTY = "eosCharacters"; private static final String TOKEN_END_PROPERTY = "useTokenEnd"; /** * Creates a {@link SentenceDetectorFactory} that provides the default * implementation of the resources. */ public SentenceDetectorFactory() { } /** * Creates a {@link SentenceDetectorFactory}. Use this constructor to * programmatically create a factory. * * @param languageCode * @param abbreviationDictionary * @param eosCharacters */ public SentenceDetectorFactory(String languageCode, boolean useTokenEnd, Dictionary abbreviationDictionary, char[] eosCharacters) { this.init(languageCode, useTokenEnd, abbreviationDictionary, eosCharacters); } protected void init(String languageCode, boolean useTokenEnd, Dictionary abbreviationDictionary, char[] eosCharacters) { this.languageCode = languageCode; this.useTokenEnd = useTokenEnd; this.eosCharacters = eosCharacters; this.abbreviationDictionary = abbreviationDictionary; } @Override public void validateArtifactMap() throws InvalidFormatException { if (this.artifactProvider.getManifestProperty(TOKEN_END_PROPERTY) == null) throw new InvalidFormatException(TOKEN_END_PROPERTY + " is a mandatory property!"); Object abbreviationsEntry = this.artifactProvider.getArtifact(ABBREVIATIONS_ENTRY_NAME); if (abbreviationsEntry != null && !(abbreviationsEntry instanceof Dictionary)) { throw new InvalidFormatException( "Abbreviations dictionary '" + abbreviationsEntry + "' has wrong type, needs to be of type Dictionary!"); } } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); // Abbreviations are optional if (abbreviationDictionary != null) artifactMap.put(ABBREVIATIONS_ENTRY_NAME, abbreviationDictionary); return artifactMap; } @Override public Map createManifestEntries() { Map manifestEntries = super.createManifestEntries(); manifestEntries.put(TOKEN_END_PROPERTY, Boolean.toString(isUseTokenEnd())); // EOS characters are optional if (getEOSCharacters() != null) manifestEntries.put(EOS_CHARACTERS_PROPERTY, eosCharArrayToString(getEOSCharacters())); return manifestEntries; } public static SentenceDetectorFactory create(String subclassName, String languageCode, boolean useTokenEnd, Dictionary abbreviationDictionary, char[] eosCharacters) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new SentenceDetectorFactory(languageCode, useTokenEnd, abbreviationDictionary, eosCharacters); } try { SentenceDetectorFactory theFactory = ExtensionLoader .instantiateExtension(SentenceDetectorFactory.class, subclassName); theFactory.init(languageCode, useTokenEnd, abbreviationDictionary, eosCharacters); return theFactory; } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } public char[] getEOSCharacters() { if (this.eosCharacters == null) { if (artifactProvider != null) { String prop = this.artifactProvider .getManifestProperty(EOS_CHARACTERS_PROPERTY); if (prop != null) { this.eosCharacters = eosStringToCharArray(prop); } } else { // get from language dependent factory Factory f = new Factory(); this.eosCharacters = f.getEOSCharacters(languageCode); } } return this.eosCharacters; } public boolean isUseTokenEnd() { if (this.useTokenEnd == null && artifactProvider != null) { this.useTokenEnd = Boolean.valueOf(artifactProvider .getManifestProperty(TOKEN_END_PROPERTY)); } return this.useTokenEnd; } public Dictionary getAbbreviationDictionary() { if (this.abbreviationDictionary == null && artifactProvider != null) { this.abbreviationDictionary = artifactProvider .getArtifact(ABBREVIATIONS_ENTRY_NAME); } return this.abbreviationDictionary; } public String getLanguageCode() { if (this.languageCode == null && artifactProvider != null) { this.languageCode = this.artifactProvider.getLanguage(); } return this.languageCode; } public EndOfSentenceScanner getEndOfSentenceScanner() { Factory f = new Factory(); char[] eosChars = getEOSCharacters(); if (eosChars != null && eosChars.length > 0) { return f.createEndOfSentenceScanner(eosChars); } else { return f.createEndOfSentenceScanner(this.languageCode); } } public SDContextGenerator getSDContextGenerator() { Factory f = new Factory(); char[] eosChars = getEOSCharacters(); Set abbs; Dictionary abbDict = getAbbreviationDictionary(); if (abbDict != null) { abbs = abbDict.asStringSet(); } else { abbs = Collections.emptySet(); } if (eosChars != null && eosChars.length > 0) { return f.createSentenceContextGenerator(abbs, eosChars); } else { return f.createSentenceContextGenerator(this.languageCode, abbs); } } private String eosCharArrayToString(char[] eosCharacters) { return String.valueOf(eosCharacters); } private char[] eosStringToCharArray(String eosCharacters) { return eosCharacters.toCharArray(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java0100664 0001750 0001750 00000007666 14135770370 033756 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.FMeasure; import opennlp.tools.util.model.ModelUtil; /** * A cross validator for the sentence detector. */ public class SDCrossValidator { private final String languageCode; private final TrainingParameters params; private FMeasure fmeasure = new FMeasure(); private SentenceDetectorEvaluationMonitor[] listeners; private SentenceDetectorFactory sdFactory; public SDCrossValidator(String languageCode, TrainingParameters params, SentenceDetectorFactory sdFactory, SentenceDetectorEvaluationMonitor... listeners) { this.languageCode = languageCode; this.params = params; this.listeners = listeners; this.sdFactory = sdFactory; } /** * @deprecated Use * {@link #SDCrossValidator(String, TrainingParameters, * SentenceDetectorFactory, SentenceDetectorEvaluationMonitor...)} * and pass in a {@link SentenceDetectorFactory}. */ public SDCrossValidator(String languageCode, TrainingParameters params) { this(languageCode, params, new SentenceDetectorFactory(languageCode, true, null, null)); } /** * @deprecated use * {@link #SDCrossValidator(String, TrainingParameters, SentenceDetectorFactory, * SentenceDetectorEvaluationMonitor...)} * instead and pass in a TrainingParameters object. */ public SDCrossValidator(String languageCode, TrainingParameters params, SentenceDetectorEvaluationMonitor... listeners) { this(languageCode, params, new SentenceDetectorFactory(languageCode, true, null, null), listeners); } /** * @deprecated use {@link #SDCrossValidator(String, TrainingParameters, * SentenceDetectorFactory, SentenceDetectorEvaluationMonitor...)} * instead and pass in a TrainingParameters object. */ public SDCrossValidator(String languageCode) { this(languageCode, ModelUtil.createDefaultTrainingParameters()); } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner.next(); SentenceModel model; model = SentenceDetectorME.train(languageCode, trainingSampleStream, sdFactory, params); // do testing SentenceDetectorEvaluator evaluator = new SentenceDetectorEvaluator( new SentenceDetectorME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); fmeasure.mergeInto(evaluator.getFMeasure()); } } public FMeasure getFMeasure() { return fmeasure; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Senten0100644 0000000 0000000 00000000157 14135770370 032645 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.jav0100664 0001750 0001750 00000025354 14135770370 034101 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.sentdetect.lang.Factory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; import opennlp.tools.util.StringUtil; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelUtil; /** * A sentence detector for splitting up raw text into sentences. *

* A maximum entropy model is used to evaluate end-of-sentence characters in a * string to determine if they signify the end of a sentence. */ public class SentenceDetectorME implements SentenceDetector { /** * Constant indicates a sentence split. */ public static final String SPLIT = "s"; /** * Constant indicates no sentence split. */ public static final String NO_SPLIT = "n"; /** * The maximum entropy model to use to evaluate contexts. */ private MaxentModel model; /** * The feature context generator. */ private final SDContextGenerator cgen; /** * The {@link EndOfSentenceScanner} to use when scanning for end of sentence offsets. */ private final EndOfSentenceScanner scanner; /** * The list of probabilities associated with each decision. */ private List sentProbs = new ArrayList<>(); protected boolean useTokenEnd; /** * Initializes the current instance. * * @param model the {@link SentenceModel} */ public SentenceDetectorME(SentenceModel model) { SentenceDetectorFactory sdFactory = model.getFactory(); this.model = model.getMaxentModel(); cgen = sdFactory.getSDContextGenerator(); scanner = sdFactory.getEndOfSentenceScanner(); useTokenEnd = sdFactory.isUseTokenEnd(); } /** * @deprecated Use a {@link SentenceDetectorFactory} to extend * SentenceDetector functionality. */ public SentenceDetectorME(SentenceModel model, Factory factory) { this.model = model.getMaxentModel(); // if the model has custom EOS characters set, use this to get the context // generator and the EOS scanner; otherwise use language-specific defaults char[] customEOSCharacters = model.getEosCharacters(); if (customEOSCharacters == null) { cgen = factory.createSentenceContextGenerator(model.getLanguage(), getAbbreviations(model.getAbbreviations())); scanner = factory.createEndOfSentenceScanner(model.getLanguage()); } else { cgen = factory.createSentenceContextGenerator( getAbbreviations(model.getAbbreviations()), customEOSCharacters); scanner = factory.createEndOfSentenceScanner(customEOSCharacters); } useTokenEnd = model.useTokenEnd(); } private static Set getAbbreviations(Dictionary abbreviations) { if (abbreviations == null) { return Collections.emptySet(); } return abbreviations.asStringSet(); } /** * Detect sentences in a String. * * @param s The string to be processed. * * @return A string array containing individual sentences as elements. */ public String[] sentDetect(String s) { Span[] spans = sentPosDetect(s); String[] sentences; if (spans.length != 0) { sentences = new String[spans.length]; for (int si = 0; si < spans.length; si++) { sentences[si] = spans[si].getCoveredText(s).toString(); } } else { sentences = new String[] {}; } return sentences; } private int getFirstWS(String s, int pos) { while (pos < s.length() && !StringUtil.isWhitespace(s.charAt(pos))) pos++; return pos; } private int getFirstNonWS(String s, int pos) { while (pos < s.length() && StringUtil.isWhitespace(s.charAt(pos))) pos++; return pos; } /** * Detect the position of the first words of sentences in a String. * * @param s The string to be processed. * @return A integer array containing the positions of the end index of * every sentence * */ public Span[] sentPosDetect(String s) { sentProbs.clear(); StringBuffer sb = new StringBuffer(s); List enders = scanner.getPositions(s); List positions = new ArrayList<>(enders.size()); for (int i = 0, end = enders.size(), index = 0; i < end; i++) { int cint = enders.get(i); // skip over the leading parts of non-token final delimiters int fws = getFirstWS(s,cint + 1); if (i + 1 < end && enders.get(i + 1) < fws) { continue; } if (positions.size() > 0 && cint < positions.get(positions.size() - 1)) continue; double[] probs = model.eval(cgen.getContext(sb, cint)); String bestOutcome = model.getBestOutcome(probs); if (bestOutcome.equals(SPLIT) && isAcceptableBreak(s, index, cint)) { if (index != cint) { if (useTokenEnd) { positions.add(getFirstNonWS(s, getFirstWS(s,cint + 1))); } else { positions.add(getFirstNonWS(s, cint + 1)); } sentProbs.add(probs[model.getIndex(bestOutcome)]); } index = cint + 1; } } int[] starts = new int[positions.size()]; for (int i = 0; i < starts.length; i++) { starts[i] = positions.get(i); } // string does not contain sentence end positions if (starts.length == 0) { // remove leading and trailing whitespace int start = 0; int end = s.length(); while (start < s.length() && StringUtil.isWhitespace(s.charAt(start))) start++; while (end > 0 && StringUtil.isWhitespace(s.charAt(end - 1))) end--; if (end - start > 0) { sentProbs.add(1d); return new Span[] {new Span(start, end)}; } else return new Span[0]; } // Convert the sentence end indexes to spans boolean leftover = starts[starts.length - 1] != s.length(); Span[] spans = new Span[leftover ? starts.length + 1 : starts.length]; for (int si = 0; si < starts.length; si++) { int start; if (si == 0) { start = 0; } else { start = starts[si - 1]; } // A span might contain only white spaces, in this case the length of // the span will be zero after trimming and should be ignored. Span span = new Span(start, starts[si]).trim(s); if (span.length() > 0) { spans[si] = span; } else { sentProbs.remove(si); } } if (leftover) { Span span = new Span(starts[starts.length - 1], s.length()).trim(s); if (span.length() > 0) { spans[spans.length - 1] = span; sentProbs.add(1d); } } /* * set the prob for each span */ for (int i = 0; i < spans.length; i++) { double prob = sentProbs.get(i); spans[i] = new Span(spans[i], prob); } return spans; } /** * Returns the probabilities associated with the most recent * calls to sentDetect(). * * @return probability for each sentence returned for the most recent * call to sentDetect. If not applicable an empty array is returned. */ public double[] getSentenceProbabilities() { double[] sentProbArray = new double[sentProbs.size()]; for (int i = 0; i < sentProbArray.length; i++) { sentProbArray[i] = sentProbs.get(i); } return sentProbArray; } /** * Allows subclasses to check an overzealous (read: poorly * trained) model from flagging obvious non-breaks as breaks based * on some boolean determination of a break's acceptability. * *

The implementation here always returns true, which means * that the MaxentModel's outcome is taken as is.

* * @param s the string in which the break occurred. * @param fromIndex the start of the segment currently being evaluated * @param candidateIndex the index of the candidate sentence ending * @return true if the break is acceptable */ protected boolean isAcceptableBreak(String s, int fromIndex, int candidateIndex) { return true; } /** * @deprecated Use * {@link #train(String, ObjectStream, SentenceDetectorFactory, TrainingParameters)} * and pass in af {@link SentenceDetectorFactory}. */ public static SentenceModel train(String languageCode, ObjectStream samples, boolean useTokenEnd, Dictionary abbreviations, TrainingParameters mlParams) throws IOException { SentenceDetectorFactory sdFactory = new SentenceDetectorFactory( languageCode, useTokenEnd, abbreviations, null); return train(languageCode, samples, sdFactory, mlParams); } public static SentenceModel train(String languageCode, ObjectStream samples, SentenceDetectorFactory sdFactory, TrainingParameters mlParams) throws IOException { Map manifestInfoEntries = new HashMap<>(); // TODO: Fix the EventStream to throw exceptions when training goes wrong ObjectStream eventStream = new SDEventStream(samples, sdFactory.getSDContextGenerator(), sdFactory.getEndOfSentenceScanner()); EventTrainer trainer = TrainerFactory.getEventTrainer(mlParams, manifestInfoEntries); MaxentModel sentModel = trainer.train(eventStream); return new SentenceModel(languageCode, sentModel, manifestInfoEntries, sdFactory); } /** * @deprecated Use * {@link #train(String, ObjectStream, SentenceDetectorFactory, TrainingParameters)} * and pass in af {@link SentenceDetectorFactory}. */ @Deprecated public static SentenceModel train(String languageCode, ObjectStream samples, boolean useTokenEnd, Dictionary abbreviations) throws IOException { return train(languageCode, samples, useTokenEnd, abbreviations, ModelUtil.createDefaultTrainingParameters()); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_SDCont0100644 0000000 0000000 00000000157 14135770370 032543 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDContextGenerator.jav0100664 0001750 0001750 00000002730 14135770370 034134 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; /** * Interface for {@link SentenceDetectorME} context generators. */ public interface SDContextGenerator { /** * Returns an array of contextual features for the potential sentence boundary at the * specified position within the specified string buffer. * * @param s The {@link String} for which sentences are being determined. * @param position An index into the specified string buffer when a sentence boundary may occur. * * @return an array of contextual features for the potential sentence boundary at the * specified position within the specified string buffer. */ String[] getContext(CharSequence s, int position); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_sentdetect_Defaul0100644 0000000 0000000 00000000166 14135770370 032611 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/DefaultSDContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/DefaultSDContextGenera0100664 0001750 0001750 00000021472 14135770370 034141 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import opennlp.tools.util.StringUtil; /** * Generate event contexts for maxent decisions for sentence detection. * */ public class DefaultSDContextGenerator implements SDContextGenerator { /** * String buffer for generating features. */ protected StringBuffer buf; /** * List for holding features as they are generated. */ protected List collectFeats; private Set inducedAbbreviations; private Set eosCharacters; /** * Creates a new SDContextGenerator instance with * no induced abbreviations. * * @param eosCharacters */ public DefaultSDContextGenerator(char[] eosCharacters) { this(Collections.emptySet(), eosCharacters); } /** * Creates a new SDContextGenerator instance which uses * the set of induced abbreviations. * * @param inducedAbbreviations a Set of Strings * representing induced abbreviations in the training data. * Example: "Mr." * * @param eosCharacters */ public DefaultSDContextGenerator(Set inducedAbbreviations, char[] eosCharacters) { this.inducedAbbreviations = inducedAbbreviations; this.eosCharacters = new HashSet<>(); for (char eosChar: eosCharacters) { this.eosCharacters.add(eosChar); } buf = new StringBuffer(); collectFeats = new ArrayList<>(); } private static String escapeChar(Character c) { if (c == '\n') { return ""; } if (c == '\r') { return ""; } return new String(new char[]{c}); } /* (non-Javadoc) * @see opennlp.tools.sentdetect.SDContextGenerator#getContext(java.lang.StringBuffer, int) */ public String[] getContext(CharSequence sb, int position) { /* * String preceding the eos character in the eos token. */ String prefix; /* * Space delimited token preceding token containing eos character. */ String previous; /* * String following the eos character in the eos token. */ String suffix; /* * Space delimited token following token containing eos character. */ String next; int lastIndex = sb.length() - 1; { // compute space previous and space next features. if (position > 0 && StringUtil.isWhitespace(sb.charAt(position - 1))) collectFeats.add("sp"); if (position < lastIndex && StringUtil.isWhitespace(sb.charAt(position + 1))) collectFeats.add("sn"); collectFeats.add("eos=" + escapeChar(sb.charAt(position))); } int prefixStart = previousSpaceIndex(sb, position); int c = position; { ///assign prefix, stop if you run into a period though otherwise stop at space while (--c > prefixStart) { if (eosCharacters.contains(sb.charAt(c))) { prefixStart = c; c++; // this gets us out of while loop. } } prefix = String.valueOf(sb.subSequence(prefixStart, position)).trim(); } int prevStart = previousSpaceIndex(sb, prefixStart); previous = String.valueOf(sb.subSequence(prevStart, prefixStart)).trim(); int suffixEnd = nextSpaceIndex(sb, position, lastIndex); { c = position; while (++c < suffixEnd) { if (eosCharacters.contains(sb.charAt(c))) { suffixEnd = c; c--; // this gets us out of while loop. } } } int nextEnd = nextSpaceIndex(sb, suffixEnd + 1, lastIndex + 1); if (position == lastIndex) { suffix = ""; next = ""; } else { suffix = String.valueOf(sb.subSequence(position + 1, suffixEnd)).trim(); next = String.valueOf(sb.subSequence(suffixEnd + 1, nextEnd)).trim(); } collectFeatures(prefix,suffix,previous,next, sb.charAt(position)); String[] context = new String[collectFeats.size()]; context = collectFeats.toArray(context); collectFeats.clear(); return context; } /** * Determines some of the features for the sentence detector and adds them to list features. * * @param prefix String preceding the eos character in the eos token. * @param suffix String following the eos character in the eos token. * @param previous Space delimited token preceding token containing eos character. * @param next Space delimited token following token containing eos character. * * @deprecated use {@link #collectFeatures(String, String, String, String, Character)} instead. */ protected void collectFeatures(String prefix, String suffix, String previous, String next) { collectFeatures(prefix, suffix, previous, next, null); } /** * Determines some of the features for the sentence detector and adds them to list features. * * @param prefix String preceding the eos character in the eos token. * @param suffix String following the eos character in the eos token. * @param previous Space delimited token preceding token containing eos character. * @param next Space delimited token following token containing eos character. * @param eosChar the EOS character been analyzed */ protected void collectFeatures(String prefix, String suffix, String previous, String next, Character eosChar) { buf.append("x="); buf.append(prefix); collectFeats.add(buf.toString()); buf.setLength(0); if (!prefix.equals("")) { collectFeats.add(Integer.toString(prefix.length())); if (isFirstUpper(prefix)) { collectFeats.add("xcap"); } if (eosChar != null && inducedAbbreviations.contains(prefix + eosChar)) { collectFeats.add("xabbrev"); } } buf.append("v="); buf.append(previous); collectFeats.add(buf.toString()); buf.setLength(0); if (!previous.equals("")) { if (isFirstUpper(previous)) { collectFeats.add("vcap"); } if (inducedAbbreviations.contains(previous)) { collectFeats.add("vabbrev"); } } buf.append("s="); buf.append(suffix); collectFeats.add(buf.toString()); buf.setLength(0); if (!suffix.equals("")) { if (isFirstUpper(suffix)) { collectFeats.add("scap"); } if (inducedAbbreviations.contains(suffix)) { collectFeats.add("sabbrev"); } } buf.append("n="); buf.append(next); collectFeats.add(buf.toString()); buf.setLength(0); if (!next.equals("")) { if (isFirstUpper(next)) { collectFeats.add("ncap"); } if (inducedAbbreviations.contains(next)) { collectFeats.add("nabbrev"); } } } private static boolean isFirstUpper(String s) { return Character.isUpperCase(s.charAt(0)); } /** * Finds the index of the nearest space before a specified index which is not itself preceded by a space. * * @param sb The string buffer which contains the text being examined. * @param seek The index to begin searching from. * @return The index which contains the nearest space. */ private static int previousSpaceIndex(CharSequence sb, int seek) { seek--; while (seek > 0 && !StringUtil.isWhitespace(sb.charAt(seek))) { seek--; } if (seek > 0 && StringUtil.isWhitespace(sb.charAt(seek))) { while (seek > 0 && StringUtil.isWhitespace(sb.charAt(seek - 1))) seek--; return seek; } return 0; } /** * Finds the index of the nearest space after a specified index. * * @param sb The string buffer which contains the text being examined. * @param seek The index to begin searching from. * @param lastIndex The highest index of the StringBuffer sb. * @return The index which contains the nearest space. */ private static int nextSpaceIndex(CharSequence sb, int seek, int lastIndex) { seek++; char c; while (seek < lastIndex) { c = sb.charAt(seek); if (StringUtil.isWhitespace(c)) { while (sb.length() > seek + 1 && StringUtil.isWhitespace(sb.charAt(seek + 1))) seek++; return seek; } seek++; } return lastIndex; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDEventStream.java0100664 0001750 0001750 00000004266 14135770370 033245 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.sentdetect; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Span; public class SDEventStream extends AbstractEventStream { private SDContextGenerator cg; private EndOfSentenceScanner scanner; /** * Initializes the current instance. * * @param samples */ public SDEventStream(ObjectStream samples, SDContextGenerator cg, EndOfSentenceScanner scanner) { super(samples); this.cg = cg; this.scanner = scanner; } @Override protected Iterator createEvents(SentenceSample sample) { Collection events = new ArrayList<>(); for (Span sentenceSpan : sample.getSentences()) { String sentenceString = sentenceSpan.getCoveredText(sample.getDocument()).toString(); for (Iterator it = scanner.getPositions( sentenceString).iterator(); it.hasNext();) { int candidate = it.next(); String type = SentenceDetectorME.NO_SPLIT; if (!it.hasNext()) { type = SentenceDetectorME.SPLIT; } events.add(new Event(type, cg.getContext(sample.getDocument(), sentenceSpan.getStart() + candidate))); } } return events.iterator(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/NGramGenerator.java0100664 0001750 0001750 00000005505 14135770370 032373 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.util.ArrayList; import java.util.List; /** * Generates an nGram, with optional separator, and returns the grams as a list * of strings */ public class NGramGenerator { /** * Creates an ngram separated * by the separator param value i.e. a,b,c,d with n = 3 and separator = "-" * would return a-b-c,b-c-d * * @param input the input tokens the output ngrams will be derived from * @param n the number of tokens as the sliding window * @param separator each string in each gram will be separated by this value if desired. * Pass in empty string if no separator is desired * @return */ public static List generate(List input, int n, String separator) { List outGrams = new ArrayList<>(); for (int i = 0; i < input.size() - (n - 1); i++) { final StringBuilder sb = new StringBuilder(); for (int x = i; x < (n + i); x++) { sb.append(input.get(x)); sb.append(separator); } String gram = sb.toString(); gram = gram.substring(0, gram.lastIndexOf(separator)); outGrams.add(gram); } return outGrams; } /** *Generates an nGram based on a char[] input * @param input the array of chars to convert to nGram * @param n The number of grams (chars) that each output gram will consist of * @param separator each char in each gram will be separated by this value if desired. * Pass in empty string if no separator is desired * @return */ public static List generate(char[] input, int n, String separator) { List outGrams = new ArrayList<>(); for (int i = 0; i < input.length - (n - 1); i++) { final StringBuilder sb = new StringBuilder(); for (int x = i; x < (n + i); x++) { sb.append(input[x]); sb.append(separator); } String gram = sb.toString(); gram = gram.substring(0, gram.lastIndexOf(separator)); outGrams.add(gram); } return outGrams; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/package-info.java0100664 0001750 0001750 00000001607 14135770370 032043 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to computing and storing n-gram frequencies. */ package opennlp.tools.ngram; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/NGramModel.java0100664 0001750 0001750 00000022023 14135770370 031477 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.NoSuchElementException; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.dictionary.serializer.Attributes; import opennlp.tools.dictionary.serializer.DictionaryEntryPersistor; import opennlp.tools.dictionary.serializer.Entry; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; /** * The {@link NGramModel} can be used to crate ngrams and character ngrams. * * @see StringList */ public class NGramModel implements Iterable { protected static final String COUNT = "count"; private Map mNGrams = new LinkedHashMap<>(); /** * Initializes an empty instance. */ public NGramModel() { } /** * Initializes the current instance. * * @param in the serialized model stream * @throws IOException */ public NGramModel(InputStream in) throws IOException { DictionaryEntryPersistor.create(in, entry -> { int count; String countValueString = null; try { countValueString = entry.getAttributes().getValue(COUNT); if (countValueString == null) { throw new InvalidFormatException( "The count attribute must be set!"); } count = Integer.parseInt(countValueString); } catch (NumberFormatException e) { throw new InvalidFormatException("The count attribute '" + countValueString + "' must be a number!", e); } add(entry.getTokens()); setCount(entry.getTokens(), count); }); } /** * Retrieves the count of the given ngram. * * @param ngram an ngram * @return count of the ngram or 0 if it is not contained * */ public int getCount(StringList ngram) { Integer count = mNGrams.get(ngram); if (count == null) { return 0; } return count; } /** * Sets the count of an existing ngram. * * @param ngram * @param count */ public void setCount(StringList ngram, int count) { Integer oldCount = mNGrams.put(ngram, count); if (oldCount == null) { mNGrams.remove(ngram); throw new NoSuchElementException(); } } /** * Adds one NGram, if it already exists the count increase by one. * * @param ngram */ public void add(StringList ngram) { if (contains(ngram)) { setCount(ngram, getCount(ngram) + 1); } else { mNGrams.put(ngram, 1); } } /** * Adds NGrams up to the specified length to the current instance. * * @param ngram the tokens to build the uni-grams, bi-grams, tri-grams, .. * from. * @param minLength - minimal length * @param maxLength - maximal length */ public void add(StringList ngram, int minLength, int maxLength) { if (minLength < 1 || maxLength < 1) throw new IllegalArgumentException("minLength and maxLength param must be at least 1. " + "minLength=" + minLength + ", maxLength= " + maxLength); if (minLength > maxLength) throw new IllegalArgumentException("minLength param must not be larger than " + "maxLength param. minLength=" + minLength + ", maxLength= " + maxLength); for (int lengthIndex = minLength; lengthIndex < maxLength + 1; lengthIndex++) { for (int textIndex = 0; textIndex + lengthIndex - 1 < ngram.size(); textIndex++) { String[] grams = new String[lengthIndex]; for (int i = textIndex; i < textIndex + lengthIndex; i++) { grams[i - textIndex] = ngram.getToken(i); } add(new StringList(grams)); } } } /** * Adds character NGrams to the current instance. * * @param chars * @param minLength * @param maxLength */ public void add(CharSequence chars, int minLength, int maxLength) { for (int lengthIndex = minLength; lengthIndex < maxLength + 1; lengthIndex++) { for (int textIndex = 0; textIndex + lengthIndex - 1 < chars.length(); textIndex++) { String gram = StringUtil.toLowerCase( chars.subSequence(textIndex, textIndex + lengthIndex)); add(new StringList(new String[]{gram})); } } } /** * Removes the specified tokens form the NGram model, they are just dropped. * * @param tokens */ public void remove(StringList tokens) { mNGrams.remove(tokens); } /** * Checks fit he given tokens are contained by the current instance. * * @param tokens * * @return true if the ngram is contained */ public boolean contains(StringList tokens) { return mNGrams.containsKey(tokens); } /** * Retrieves the number of {@link StringList} entries in the current instance. * * @return number of different grams */ public int size() { return mNGrams.size(); } /** * Retrieves an {@link Iterator} over all {@link StringList} entries. * * @return iterator over all grams */ @Override public Iterator iterator() { return mNGrams.keySet().iterator(); } /** * Retrieves the total count of all Ngrams. * * @return total count of all ngrams */ public int numberOfGrams() { int counter = 0; for (StringList ngram : this) { counter += getCount(ngram); } return counter; } /** * Deletes all ngram which do appear less than the cutoffUnder value * and more often than the cutoffOver value. * * @param cutoffUnder * @param cutoffOver */ public void cutoff(int cutoffUnder, int cutoffOver) { if (cutoffUnder > 0 || cutoffOver < Integer.MAX_VALUE) { for (Iterator it = iterator(); it.hasNext(); ) { StringList ngram = it.next(); int count = getCount(ngram); if (count < cutoffUnder || count > cutoffOver) { it.remove(); } } } } /** * Creates a dictionary which contain all {@link StringList} which * are in the current {@link NGramModel}. * * Entries which are only different in the case are merged into one. * * Calling this method is the same as calling {@link #toDictionary(boolean)} with true. * * @return a dictionary of the ngrams */ public Dictionary toDictionary() { return toDictionary(false); } /** * Creates a dictionary which contains all {@link StringList}s which * are in the current {@link NGramModel}. * * @param caseSensitive Specifies whether case distinctions should be kept * in the creation of the dictionary. * * @return a dictionary of the ngrams */ public Dictionary toDictionary(boolean caseSensitive) { Dictionary dict = new Dictionary(caseSensitive); for (StringList stringList : this) { dict.put(stringList); } return dict; } /** * Writes the ngram instance to the given {@link OutputStream}. * * @param out * * @throws IOException if an I/O Error during writing occurs */ public void serialize(OutputStream out) throws IOException { Iterator entryIterator = new Iterator() { private Iterator mDictionaryIterator = NGramModel.this.iterator(); @Override public boolean hasNext() { return mDictionaryIterator.hasNext(); } @Override public Entry next() { StringList tokens = mDictionaryIterator.next(); Attributes attributes = new Attributes(); attributes.setValue(COUNT, Integer.toString(getCount(tokens))); return new Entry(tokens, attributes); } @Override public void remove() { throw new UnsupportedOperationException(); } }; DictionaryEntryPersistor.serialize(out, entryIterator, false); } @Override public boolean equals(Object obj) { boolean result; if (obj == this) { result = true; } else if (obj instanceof NGramModel) { NGramModel model = (NGramModel) obj; result = mNGrams.equals(model.mNGrams); } else { result = false; } return result; } @Override public String toString() { return "Size: " + size(); } @Override public int hashCode() { return mNGrams.hashCode(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/NGramUtils.java0100664 0001750 0001750 00000023435 14135770370 031547 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; import opennlp.tools.util.StringList; /** * Utility class for ngrams. * Some methods apply specifically to certain 'n' values, for e.g. tri/bi/uni-grams. */ public class NGramUtils { /** * calculate the probability of a ngram in a vocabulary using Laplace smoothing algorithm * * @param ngram the ngram to get the probability for * @param set the vocabulary * @param k the smoothing factor * @return the Laplace smoothing probability * @see Additive Smoothing */ public static double calculateLaplaceSmoothingProbability(StringList ngram, Iterable set, Double k) { return (count(ngram, set) + k) / (count(getNMinusOneTokenFirst(ngram), set) + k * 1); } /** * calculate the probability of a unigram in a vocabulary using maximum likelihood estimation * * @param word the only word in the unigram * @param set the vocabulary * @return the maximum likelihood probability */ public static double calculateUnigramMLProbability(String word, Collection set) { double vocSize = 0d; for (StringList s : set) { vocSize += s.size(); } return count(new StringList(word), set) / vocSize; } /** * calculate the probability of a bigram in a vocabulary using maximum likelihood estimation * * @param x0 first word in the bigram * @param x1 second word in the bigram * @param set the vocabulary * @return the maximum likelihood probability */ public static double calculateBigramMLProbability(String x0, String x1, Collection set) { return calculateNgramMLProbability(new StringList(x0, x1), set); } /** * calculate the probability of a trigram in a vocabulary using maximum likelihood estimation * * @param x0 first word in the trigram * @param x1 second word in the trigram * @param x2 third word in the trigram * @param set the vocabulary * @return the maximum likelihood probability */ public static double calculateTrigramMLProbability(String x0, String x1, String x2, Iterable set) { return calculateNgramMLProbability(new StringList(x0, x1, x2), set); } /** * calculate the probability of a ngram in a vocabulary using maximum likelihood estimation * * @param ngram a ngram * @param set the vocabulary * @return the maximum likelihood probability */ public static double calculateNgramMLProbability(StringList ngram, Iterable set) { StringList ngramMinusOne = getNMinusOneTokenFirst(ngram); return count(ngram, set) / count(ngramMinusOne, set); } /** * calculate the probability of a bigram in a vocabulary using prior Laplace smoothing algorithm * * @param x0 the first word in the bigram * @param x1 the second word in the bigram * @param set the vocabulary * @param k the smoothing factor * @return the prior Laplace smoothiing probability */ public static double calculateBigramPriorSmoothingProbability(String x0, String x1, Collection set, Double k) { return (count(new StringList(x0, x1), set) + k * calculateUnigramMLProbability(x1, set)) / (count(new StringList(x0), set) + k * set.size()); } /** * calculate the probability of a trigram in a vocabulary using a linear interpolation algorithm * * @param x0 the first word in the trigram * @param x1 the second word in the trigram * @param x2 the third word in the trigram * @param set the vocabulary * @param lambda1 trigram interpolation factor * @param lambda2 bigram interpolation factor * @param lambda3 unigram interpolation factor * @return the linear interpolation probability */ public static double calculateTrigramLinearInterpolationProbability(String x0, String x1, String x2, Collection set, Double lambda1, Double lambda2, Double lambda3) { assert lambda1 + lambda2 + lambda3 == 1 : "lambdas sum should be equals to 1"; assert lambda1 > 0 && lambda2 > 0 && lambda3 > 0 : "lambdas should all be greater than 0"; return lambda1 * calculateTrigramMLProbability(x0, x1, x2, set) + lambda2 * calculateBigramMLProbability(x1, x2, set) + lambda3 * calculateUnigramMLProbability(x2, set); } /** * calculate the probability of a ngram in a vocabulary using the missing probability mass algorithm * * @param ngram the ngram * @param discount discount factor * @param set the vocabulary * @return the probability */ public static double calculateMissingNgramProbabilityMass(StringList ngram, Double discount, Iterable set) { Double missingMass = 0d; Double countWord = count(ngram, set); for (String word : flatSet(set)) { missingMass += (count(getNPlusOneNgram(ngram, word), set) - discount) / countWord; } return 1 - missingMass; } /** * get the (n-1)th ngram of a given ngram, that is the same ngram except the last word in the ngram * * @param ngram a ngram * @return a ngram */ public static StringList getNMinusOneTokenFirst(StringList ngram) { String[] tokens = new String[ngram.size() - 1]; for (int i = 0; i < ngram.size() - 1; i++) { tokens[i] = ngram.getToken(i); } return tokens.length > 0 ? new StringList(tokens) : null; } /** * get the (n-1)th ngram of a given ngram, that is the same ngram except the first word in the ngram * * @param ngram a ngram * @return a ngram */ public static StringList getNMinusOneTokenLast(StringList ngram) { String[] tokens = new String[ngram.size() - 1]; for (int i = 1; i < ngram.size(); i++) { tokens[i - 1] = ngram.getToken(i); } return tokens.length > 0 ? new StringList(tokens) : null; } private static StringList getNPlusOneNgram(StringList ngram, String word) { String[] tokens = new String[ngram.size() + 1]; for (int i = 0; i < ngram.size(); i++) { tokens[i] = ngram.getToken(i); } tokens[tokens.length - 1] = word; return new StringList(tokens); } private static Double count(StringList ngram, Iterable sentences) { Double count = 0d; for (StringList sentence : sentences) { int idx0 = indexOf(sentence, ngram.getToken(0)); if (idx0 >= 0 && sentence.size() >= idx0 + ngram.size()) { boolean match = true; for (int i = 1; i < ngram.size(); i++) { String sentenceToken = sentence.getToken(idx0 + i); String ngramToken = ngram.getToken(i); match &= sentenceToken.equals(ngramToken); } if (match) { count++; } } } return count; } private static int indexOf(StringList sentence, String token) { for (int i = 0; i < sentence.size(); i++) { if (token.equals(sentence.getToken(i))) { return i; } } return -1; } private static Collection flatSet(Iterable set) { Collection flatSet = new HashSet<>(); for (StringList sentence : set) { for (String word : sentence) { flatSet.add(word); } } return flatSet; } /** * Get the ngrams of dimension n of a certain input sequence of tokens. * * @param sequence a sequence of tokens * @param size the size of the resulting ngrmams * @return all the possible ngrams of the given size derivable from the input sequence */ public static Collection getNGrams(StringList sequence, int size) { Collection ngrams = new LinkedList<>(); if (size == -1 || size >= sequence.size()) { ngrams.add(sequence); } else { String[] ngram = new String[size]; for (int i = 0; i < sequence.size() - size + 1; i++) { ngram[0] = sequence.getToken(i); for (int j = 1; j < size; j++) { ngram[j] = sequence.getToken(i + j); } ngrams.add(new StringList(ngram)); } } return ngrams; } /** * Get the ngrams of dimension n of a certain input sequence of tokens. * * @param sequence a sequence of tokens * @param size the size of the resulting ngrmams * @return all the possible ngrams of the given size derivable from the input sequence */ public static Collection getNGrams(String[] sequence, int size) { Collection ngrams = new LinkedList<>(); if (size == -1 || size >= sequence.length) { ngrams.add(sequence); } else { for (int i = 0; i < sequence.length - size + 1; i++) { String[] ngram = new String[size]; ngram[0] = sequence[i]; for (int j = 1; j < size; j++) { ngram[j] = sequence[i + j]; } ngrams.add(ngram); } } return ngrams; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ngram/NGramCharModel.java0100664 0001750 0001750 00000011435 14135770370 032302 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ngram; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import opennlp.tools.util.StringUtil; /** * The {@link NGramCharModel} can be used to create character ngrams. * * @see {@link NGramModel} */ public class NGramCharModel implements Iterable { protected static final String COUNT = "count"; private Map mNGrams = new HashMap<>(); /** * Initializes an empty instance. */ public NGramCharModel() { } /** * Retrieves the count of the given ngram. * * @param ngram an ngram * @return count of the ngram or 0 if it is not contained * */ public int getCount(String ngram) { Integer count = mNGrams.get(ngram); if (count == null) { return 0; } return count; } /** * Sets the count of an existing ngram. * * @param ngram * @param count */ public void setCount(String ngram, int count) { Integer oldCount = mNGrams.put(ngram, count); if (oldCount == null) { mNGrams.remove(ngram); throw new NoSuchElementException(); } } /** * Adds one NGram, if it already exists the count increase by one. * * @param ngram */ public void add(String ngram) { if (contains(ngram)) { setCount(ngram, getCount(ngram) + 1); } else { mNGrams.put(ngram, 1); } } /** * Adds CharSequence that will be ngrammed into chars. * * @param chars * @param minLength * @param maxLength */ public void add(CharSequence chars, int minLength, int maxLength) { for (int lengthIndex = minLength; lengthIndex < maxLength + 1; lengthIndex++) { for (int textIndex = 0; textIndex + lengthIndex - 1 < chars.length(); textIndex++) { String gram = StringUtil.toLowerCase( chars.subSequence(textIndex, textIndex + lengthIndex)); add(gram); } } } /** * Removes the specified tokens form the NGram model, they are just dropped. * * @param ngram */ public void remove(String ngram) { mNGrams.remove(ngram); } /** * Checks fit he given tokens are contained by the current instance. * * @param ngram * * @return true if the ngram is contained */ public boolean contains(String ngram) { return mNGrams.containsKey(ngram); } /** * Retrieves the number of {@link String} entries in the current instance. * * @return number of different grams */ public int size() { return mNGrams.size(); } /** * Retrieves an {@link Iterator} over all {@link String} entries. * * @return iterator over all grams */ @Override public Iterator iterator() { return mNGrams.keySet().iterator(); } /** * Retrieves the total count of all Ngrams. * * @return total count of all ngrams */ public int numberOfGrams() { int counter = 0; for (String ngram : this) { counter += getCount(ngram); } return counter; } /** * Deletes all ngram which do appear less than the cutoffUnder value * and more often than the cutoffOver value. * * @param cutoffUnder * @param cutoffOver */ public void cutoff(int cutoffUnder, int cutoffOver) { if (cutoffUnder > 0 || cutoffOver < Integer.MAX_VALUE) { for (Iterator it = iterator(); it.hasNext(); ) { String ngram = it.next(); int count = getCount(ngram); if (count < cutoffUnder || count > cutoffOver) { it.remove(); } } } } @Override public boolean equals(Object obj) { boolean result; if (obj == this) { result = true; } else if (obj instanceof NGramCharModel) { NGramCharModel model = (NGramCharModel) obj; result = mNGrams.equals(model.mNGrams); } else { result = false; } return result; } @Override public String toString() { return "Size: " + size(); } @Override public int hashCode() { return mNGrams.hashCode(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_AbstractEventM0100644 0000000 0000000 00000000166 14135770370 032541 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrai0100664 0001750 0001750 00000002703 14135770370 034140 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceStream; public abstract class AbstractEventModelSequenceTrainer extends AbstractTrainer implements EventModelSequenceTrainer { public AbstractEventModelSequenceTrainer() { } public abstract MaxentModel doTrain(SequenceStream events) throws IOException; public final MaxentModel train(SequenceStream events) throws IOException { validate(); MaxentModel model = doTrain(events); addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, EventModelSequenceTrainer.SEQUENCE_VALUE); return model; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Per0100644 0000000 0000000 00000000165 14135770370 032645 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModelRead0100664 0001750 0001750 00000005526 14135770370 034166 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.File; import java.io.IOException; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelReader; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.DataReader; /** * Abstract parent class for readers of Perceptron. * */ public class PerceptronModelReader extends AbstractModelReader { public PerceptronModelReader(File file) throws IOException { super(file); } public PerceptronModelReader(DataReader dataReader) { super(dataReader); } /** * Retrieve a model from disk. It assumes that models are saved in the * following sequence: * *
Perceptron (model type identifier) *
1. # of parameters (int) *
2. # of outcomes (int) *
* list of outcome names (String) *
3. # of different types of outcome patterns (int) *
* list of (int int[]) *
[# of predicates for which outcome pattern is true] [outcome pattern] *
4. # of predicates (int) *
* list of predicate names (String) * *

If you are creating a reader for a format which won't work with this * (perhaps a database or xml file), override this method and ignore the * other methods provided in this abstract class. * * @return The PerceptronModel stored in the format and location specified to * this PerceptronModelReader (usually via its the constructor). */ public AbstractModel constructModel() throws IOException { String[] outcomeLabels = getOutcomes(); int[][] outcomePatterns = getOutcomePatterns(); String[] predLabels = getPredicates(); Context[] params = getParameters(outcomePatterns); return new PerceptronModel(params, predLabels, outcomeLabels); } public void checkModelType() throws java.io.IOException { String modelType = readUTF(); if (!modelType.equals("Perceptron")) System.out.println("Error: attempting to load a " + modelType + " model as a Perceptron model." + " You should expect problems."); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Bin0100644 0000000 0000000 00000000173 14135770370 032626 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/BinaryPerceptronModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/BinaryPerceptronMod0100664 0001750 0001750 00000003176 14135770370 034215 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.DataInputStream; import java.io.File; import java.io.IOException; import opennlp.tools.ml.model.BinaryFileDataReader; public class BinaryPerceptronModelReader extends PerceptronModelReader { /** * Constructor which directly instantiates the DataInputStream containing * the model contents. * * @param dis The DataInputStream containing the model information. */ public BinaryPerceptronModelReader(DataInputStream dis) { super(new BinaryFileDataReader(dis)); } /** * Constructor which takes a File and creates a reader for it. Detects * whether the file is gzipped or not based on whether the suffix contains * ".gz" * * @param f The File in which the model is stored. */ public BinaryPerceptronModelReader(File f) throws IOException { super(f); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Bin0100644 0000000 0000000 00000000173 14135770370 032626 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/BinaryPerceptronModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/BinaryPerceptronMod0100664 0001750 0001750 00000005120 14135770370 034204 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.model.AbstractModel; /** * Model writer that saves models in binary format. */ public class BinaryPerceptronModelWriter extends PerceptronModelWriter { private DataOutputStream output; /** * Constructor which takes a GISModel and a File and prepares itself to * write the model to that file. Detects whether the file is gzipped or not * based on whether the suffix contains ".gz". * * @param model The GISModel which is to be persisted. * @param f The File in which the model is to be persisted. */ public BinaryPerceptronModelWriter(AbstractModel model, File f) throws IOException { super(model); if (f.getName().endsWith(".gz")) { output = new DataOutputStream( new GZIPOutputStream(new FileOutputStream(f))); } else { output = new DataOutputStream(new FileOutputStream(f)); } } /** * Constructor which takes a GISModel and a DataOutputStream and prepares * itself to write the model to that stream. * * @param model The GISModel which is to be persisted. * @param dos The stream which will be used to persist the model. */ public BinaryPerceptronModelWriter(AbstractModel model, DataOutputStream dos) { super(model); output = dos; } public void writeUTF(String s) throws java.io.IOException { output.writeUTF(s); } public void writeInt(int i) throws java.io.IOException { output.writeInt(i); } public void writeDouble(double d) throws java.io.IOException { output.writeDouble(d); } public void close() throws java.io.IOException { output.flush(); output.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Per0100644 0000000 0000000 00000000165 14135770370 032645 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModelWrit0100664 0001750 0001750 00000013162 14135770370 034233 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Map.Entry; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelWriter; import opennlp.tools.ml.model.ComparablePredicate; import opennlp.tools.ml.model.Context; /** * Abstract parent class for Perceptron writers. It provides the persist method * which takes care of the structure of a stored document, and requires an * extending class to define precisely how the data should be stored. * */ public abstract class PerceptronModelWriter extends AbstractModelWriter { protected Context[] PARAMS; protected String[] OUTCOME_LABELS; protected String[] PRED_LABELS; private int numOutcomes; public PerceptronModelWriter(AbstractModel model) { Object[] data = model.getDataStructures(); this.numOutcomes = model.getNumOutcomes(); PARAMS = (Context[]) data[0]; Map pmap = (Map) data[1]; OUTCOME_LABELS = (String[]) data[2]; PARAMS = new Context[pmap.size()]; PRED_LABELS = new String[pmap.size()]; int i = 0; for (Map.Entry pred : pmap.entrySet()) { PRED_LABELS[i] = pred.getKey(); PARAMS[i] = pred.getValue(); i++; } } protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds; ComparablePredicate[] tmpPreds = new ComparablePredicate[PARAMS.length]; int[] tmpOutcomes = new int[numOutcomes]; double[] tmpParams = new double[numOutcomes]; int numPreds = 0; //remove parameters with 0 weight and predicates with no parameters for (int pid = 0; pid < PARAMS.length; pid++) { int numParams = 0; double[] predParams = PARAMS[pid].getParameters(); int[] outcomePattern = PARAMS[pid].getOutcomes(); for (int pi = 0; pi < predParams.length; pi++) { if (predParams[pi] != 0d) { tmpOutcomes[numParams] = outcomePattern[pi]; tmpParams[numParams] = predParams[pi]; numParams++; } } int[] activeOutcomes = new int[numParams]; double[] activeParams = new double[numParams]; for (int pi = 0; pi < numParams; pi++) { activeOutcomes[pi] = tmpOutcomes[pi]; activeParams[pi] = tmpParams[pi]; } if (numParams != 0) { tmpPreds[numPreds] = new ComparablePredicate(PRED_LABELS[pid],activeOutcomes,activeParams); numPreds++; } } System.err.println("Compressed " + PARAMS.length + " parameters to " + numPreds); sortPreds = new ComparablePredicate[numPreds]; System.arraycopy(tmpPreds, 0, sortPreds, 0, numPreds); Arrays.sort(sortPreds); return sortPreds; } protected List> computeOutcomePatterns(ComparablePredicate[] sorted) { ComparablePredicate cp = sorted[0]; List> outcomePatterns = new ArrayList<>(); List newGroup = new ArrayList<>(); for (ComparablePredicate predicate : sorted) { if (cp.compareTo(predicate) == 0) { newGroup.add(predicate); } else { cp = predicate; outcomePatterns.add(newGroup); newGroup = new ArrayList<>(); newGroup.add(predicate); } } outcomePatterns.add(newGroup); System.err.println(outcomePatterns.size() + " outcome patterns"); return outcomePatterns; } /** * Writes the model to disk, using the writeX() methods * provided by extending classes. * *

If you wish to create a PerceptronModelWriter which uses a different * structure, it will be necessary to override the persist method in * addition to implementing the writeX() methods. */ public void persist() throws IOException { // the type of model (Perceptron) writeUTF("Perceptron"); // the mapping from outcomes to their integer indexes writeInt(OUTCOME_LABELS.length); for (String label : OUTCOME_LABELS) { writeUTF(label); } // the mapping from predicates to the outcomes they contributed to. // The sorting is done so that we actually can write this out more // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); List> compressed = computeOutcomePatterns(sorted); writeInt(compressed.size()); for (List a : compressed) { writeUTF(a.size() + a.get(0).toString()); } // the mapping from predicate names to their integer indexes writeInt(sorted.length); for (ComparablePredicate s : sorted) { writeUTF(s.name); } // write out the parameters for (int i = 0; i < sorted.length; i++) for (int j = 0; j < sorted[i].params.length; j++) writeDouble(sorted[i].params[j]); close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Per0100644 0000000 0000000 00000000161 14135770370 032641 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronTrainer.j0100664 0001750 0001750 00000033134 14135770370 034162 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.IOException; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.EvalParameters; import opennlp.tools.ml.model.MutableContext; import opennlp.tools.util.TrainingParameters; /** * Trains models using the perceptron algorithm. Each outcome is represented as * a binary perceptron classifier. This supports standard (integer) weighting as well * average weighting as described in: * Discriminative Training Methods for Hidden Markov Models: Theory and Experiments * with the Perceptron Algorithm. Michael Collins, EMNLP 2002. * */ public class PerceptronTrainer extends AbstractEventTrainer { public static final String PERCEPTRON_VALUE = "PERCEPTRON"; public static final double TOLERANCE_DEFAULT = .00001; /** Number of unique events which occurred in the event set. */ private int numUniqueEvents; /** Number of events in the event set. */ private int numEvents; /** Number of predicates. */ private int numPreds; /** Number of outcomes. */ private int numOutcomes; /** Records the array of predicates seen in each event. */ private int[][] contexts; /** The value associates with each context. If null then context values are assumes to be 1. */ private float[][] values; /** List of outcomes for each event i, in context[i]. */ private int[] outcomeList; /** Records the num of times an event has been seen for each event i, in context[i]. */ private int[] numTimesEventsSeen; /** Stores the String names of the outcomes. The GIS only tracks outcomes as ints, and so this array is needed to save the model to disk and thereby allow users to know what the outcome was in human understandable terms. */ private String[] outcomeLabels; /** Stores the String names of the predicates. The GIS only tracks predicates as ints, and so this array is needed to save the model to disk and thereby allow users to know what the outcome was in human understandable terms. */ private String[] predLabels; private double tolerance = TOLERANCE_DEFAULT; private Double stepSizeDecrease; private boolean useSkippedlAveraging; public PerceptronTrainer() { } public PerceptronTrainer(TrainingParameters parameters) { super(parameters); } @Override public void validate() { super.validate(); String algorithmName = getAlgorithm(); if (algorithmName != null) { if (!PERCEPTRON_VALUE.equals(algorithmName)) { throw new IllegalArgumentException("algorithmName must be PERCEPTRON"); } } } @Deprecated @Override public boolean isValid() { if (!super.isValid()) { return false; } String algorithmName = getAlgorithm(); if (algorithmName != null) { return PERCEPTRON_VALUE.equals(algorithmName); } else { return true; } } public boolean isSortAndMerge() { return false; } public AbstractModel doTrain(DataIndexer indexer) throws IOException { int iterations = getIterations(); int cutoff = getCutoff(); AbstractModel model; boolean useAverage = trainingParameters.getBooleanParameter("UseAverage", true); boolean useSkippedAveraging = trainingParameters.getBooleanParameter("UseSkippedAveraging", false); // overwrite otherwise it might not work if (useSkippedAveraging) useAverage = true; double stepSizeDecrease = trainingParameters.getDoubleParameter("StepSizeDecrease", 0); double tolerance = trainingParameters.getDoubleParameter("Tolerance", PerceptronTrainer.TOLERANCE_DEFAULT); this.setSkippedAveraging(useSkippedAveraging); if (stepSizeDecrease > 0) this.setStepSizeDecrease(stepSizeDecrease); this.setTolerance(tolerance); model = this.trainModel(iterations, indexer, cutoff, useAverage); return model; } // << members related to AbstractSequenceTrainer /** * Specifies the tolerance. If the change in training set accuracy * is less than this, stop iterating. * * @param tolerance */ public void setTolerance(double tolerance) { if (tolerance < 0) { throw new IllegalArgumentException("tolerance must be a positive number but is " + tolerance + "!"); } this.tolerance = tolerance; } /** * Enables and sets step size decrease. The step size is * decreased every iteration by the specified value. * * @param decrease - step size decrease in percent */ public void setStepSizeDecrease(double decrease) { if (decrease < 0 || decrease > 100) { throw new IllegalArgumentException("decrease must be between 0 and 100 but is " + decrease + "!"); } stepSizeDecrease = decrease; } /** * Enables skipped averaging, this flag changes the standard * averaging to special averaging instead. *

* If we are doing averaging, and the current iteration is one * of the first 20 or it is a perfect square, then updated the * summed parameters. *

* The reason we don't take all of them is that the parameters change * less toward the end of training, so they drown out the contributions * of the more volatile early iterations. The use of perfect * squares allows us to sample from successively farther apart iterations. * * @param averaging averaging flag */ public void setSkippedAveraging(boolean averaging) { useSkippedlAveraging = averaging; } public AbstractModel trainModel(int iterations, DataIndexer di, int cutoff) { return trainModel(iterations,di,cutoff,true); } public AbstractModel trainModel(int iterations, DataIndexer di, int cutoff, boolean useAverage) { display("Incorporating indexed data for training... \n"); contexts = di.getContexts(); values = di.getValues(); numTimesEventsSeen = di.getNumTimesEventsSeen(); numEvents = di.getNumEvents(); numUniqueEvents = contexts.length; outcomeLabels = di.getOutcomeLabels(); outcomeList = di.getOutcomeList(); predLabels = di.getPredLabels(); numPreds = predLabels.length; numOutcomes = outcomeLabels.length; display("done.\n"); display("\tNumber of Event Tokens: " + numUniqueEvents + "\n"); display("\t Number of Outcomes: " + numOutcomes + "\n"); display("\t Number of Predicates: " + numPreds + "\n"); display("Computing model parameters...\n"); MutableContext[] finalParameters = findParameters(iterations, useAverage); display("...done.\n"); /* Create and return the model *************/ return new PerceptronModel(finalParameters, predLabels, outcomeLabels); } private MutableContext[] findParameters(int iterations, boolean useAverage) { display("Performing " + iterations + " iterations.\n"); int[] allOutcomesPattern = new int[numOutcomes]; for (int oi = 0; oi < numOutcomes; oi++) allOutcomesPattern[oi] = oi; /* Stores the estimated parameter value of each predicate during iteration. */ MutableContext[] params = new MutableContext[numPreds]; for (int pi = 0; pi < numPreds; pi++) { params[pi] = new MutableContext(allOutcomesPattern,new double[numOutcomes]); for (int aoi = 0; aoi < numOutcomes; aoi++) params[pi].setParameter(aoi, 0.0); } EvalParameters evalParams = new EvalParameters(params, numOutcomes); /* Stores the sum of parameter values of each predicate over many iterations. */ MutableContext[] summedParams = new MutableContext[numPreds]; if (useAverage) { for (int pi = 0; pi < numPreds; pi++) { summedParams[pi] = new MutableContext(allOutcomesPattern,new double[numOutcomes]); for (int aoi = 0; aoi < numOutcomes; aoi++) summedParams[pi].setParameter(aoi, 0.0); } } // Keep track of the previous three accuracies. The difference of // the mean of these and the current training set accuracy is used // with tolerance to decide whether to stop. double prevAccuracy1 = 0.0; double prevAccuracy2 = 0.0; double prevAccuracy3 = 0.0; // A counter for the denominator for averaging. int numTimesSummed = 0; double stepsize = 1; for (int i = 1; i <= iterations; i++) { // Decrease the stepsize by a small amount. if (stepSizeDecrease != null) stepsize *= 1 - stepSizeDecrease; displayIteration(i); int numCorrect = 0; for (int ei = 0; ei < numUniqueEvents; ei++) { int targetOutcome = outcomeList[ei]; for (int ni = 0; ni < this.numTimesEventsSeen[ei]; ni++) { // Compute the model's prediction according to the current parameters. double[] modelDistribution = new double[numOutcomes]; if (values != null) PerceptronModel.eval(contexts[ei], values[ei], modelDistribution, evalParams, false); else PerceptronModel.eval(contexts[ei], null, modelDistribution, evalParams, false); int maxOutcome = ArrayMath.argmax(modelDistribution); // If the predicted outcome is different from the target // outcome, do the standard update: boost the parameters // associated with the target and reduce those associated // with the incorrect predicted outcome. if (maxOutcome != targetOutcome) { for (int ci = 0; ci < contexts[ei].length; ci++) { int pi = contexts[ei][ci]; if (values == null) { params[pi].updateParameter(targetOutcome, stepsize); params[pi].updateParameter(maxOutcome, -stepsize); } else { params[pi].updateParameter(targetOutcome, stepsize * values[ei][ci]); params[pi].updateParameter(maxOutcome, -stepsize * values[ei][ci]); } } } // Update the counts for accuracy. if (maxOutcome == targetOutcome) numCorrect++; } } // Calculate the training accuracy and display. double trainingAccuracy = (double) numCorrect / numEvents; if (i < 10 || (i % 10) == 0) display(". (" + numCorrect + "/" + numEvents + ") " + trainingAccuracy + "\n"); // TODO: Make averaging configurable !!! boolean doAveraging; doAveraging = useAverage && useSkippedlAveraging && (i < 20 || isPerfectSquare(i)) || useAverage; if (doAveraging) { numTimesSummed++; for (int pi = 0; pi < numPreds; pi++) for (int aoi = 0; aoi < numOutcomes; aoi++) summedParams[pi].updateParameter(aoi, params[pi].getParameters()[aoi]); } // If the tolerance is greater than the difference between the // current training accuracy and all of the previous three // training accuracies, stop training. if (StrictMath.abs(prevAccuracy1 - trainingAccuracy) < tolerance && StrictMath.abs(prevAccuracy2 - trainingAccuracy) < tolerance && StrictMath.abs(prevAccuracy3 - trainingAccuracy) < tolerance) { display("Stopping: change in training set accuracy less than " + tolerance + "\n"); break; } // Update the previous training accuracies. prevAccuracy1 = prevAccuracy2; prevAccuracy2 = prevAccuracy3; prevAccuracy3 = trainingAccuracy; } // Output the final training stats. trainingStats(evalParams); // Create averaged parameters if (useAverage) { for (int pi = 0; pi < numPreds; pi++) for (int aoi = 0; aoi < numOutcomes; aoi++) summedParams[pi].setParameter(aoi, summedParams[pi].getParameters()[aoi] / numTimesSummed); return summedParams; } else { return params; } } private double trainingStats(EvalParameters evalParams) { int numCorrect = 0; for (int ei = 0; ei < numUniqueEvents; ei++) { for (int ni = 0; ni < this.numTimesEventsSeen[ei]; ni++) { double[] modelDistribution = new double[numOutcomes]; if (values != null) PerceptronModel.eval(contexts[ei], values[ei], modelDistribution, evalParams,false); else PerceptronModel.eval(contexts[ei], null, modelDistribution, evalParams, false); int max = ArrayMath.argmax(modelDistribution); if (max == outcomeList[ei]) numCorrect++; } } double trainingAccuracy = (double) numCorrect / numEvents; display("Stats: (" + numCorrect + "/" + numEvents + ") " + trainingAccuracy + "\n"); return trainingAccuracy; } private void displayIteration(int i) { if (i > 10 && (i % 10) != 0) return; if (i < 10) display(" " + i + ": "); else if (i < 100) display(" " + i + ": "); else display(i + ": "); } // See whether a number is a perfect square. Inefficient, but fine // for our purposes. private static boolean isPerfectSquare(int n) { int root = (int) StrictMath.sqrt(n); return root * root == n; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Per0100644 0000000 0000000 00000000157 14135770370 032646 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/PerceptronModel.jav0100664 0001750 0001750 00000006147 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.EvalParameters; public class PerceptronModel extends AbstractModel { public PerceptronModel(Context[] params, String[] predLabels, String[] outcomeNames) { super(params,predLabels,outcomeNames); modelType = ModelType.Perceptron; } public double[] eval(String[] context) { return eval(context,new double[evalParams.getNumOutcomes()]); } public double[] eval(String[] context, float[] values) { return eval(context,values,new double[evalParams.getNumOutcomes()]); } public double[] eval(String[] context, double[] probs) { return eval(context,null,probs); } public double[] eval(String[] context, float[] values,double[] outsums) { Context[] scontexts = new Context[context.length]; java.util.Arrays.fill(outsums, 0); for (int i = 0; i < context.length; i++) { scontexts[i] = pmap.get(context[i]); } return eval(scontexts,values,outsums,evalParams,true); } public static double[] eval(int[] context, double[] prior, EvalParameters model) { return eval(context,null,prior,model,true); } static double[] eval(int[] context, float[] values, double[] prior, EvalParameters model, boolean normalize) { Context[] scontexts = new Context[context.length]; for (int i = 0; i < context.length; i++) { scontexts[i] = model.getParams()[context[i]]; } return eval(scontexts, values, prior, model, normalize); } static double[] eval(Context[] context, float[] values, double[] prior, EvalParameters model, boolean normalize) { ArrayMath.sumFeatures(context, values, prior); if (normalize) { int numOutcomes = model.getNumOutcomes(); double maxPrior = 1; for (int oid = 0; oid < numOutcomes; oid++) { if (maxPrior < StrictMath.abs(prior[oid])) maxPrior = StrictMath.abs(prior[oid]); } double normal = 0.0; for (int oid = 0; oid < numOutcomes; oid++) { prior[oid] = StrictMath.exp(prior[oid] / maxPrior); normal += prior[oid]; } for (int oid = 0; oid < numOutcomes; oid++) { prior[oid] /= normal; } } return prior; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_perceptron_Sim0100644 0000000 0000000 00000000177 14135770370 032652 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSeq0100664 0001750 0001750 00000032070 14135770370 034226 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.perceptron; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.ml.AbstractEventModelSequenceTrainer; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MutableContext; import opennlp.tools.ml.model.OnePassDataIndexer; import opennlp.tools.ml.model.Sequence; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.ml.model.SequenceStreamEventStream; /** * Trains models for sequences using the perceptron algorithm. Each outcome is represented as * a binary perceptron classifier. This supports standard (integer) weighting as well * average weighting. Sequence information is used in a simplified was to that described in: * Discriminative Training Methods for Hidden Markov Models: Theory and Experiments * with the Perceptron Algorithm. Michael Collins, EMNLP 2002. * Specifically only updates are applied to tokens which were incorrectly tagged by a sequence tagger * rather than to all feature across the sequence which differ from the training sequence. */ public class SimplePerceptronSequenceTrainer extends AbstractEventModelSequenceTrainer { public static final String PERCEPTRON_SEQUENCE_VALUE = "PERCEPTRON_SEQUENCE"; private int iterations; private SequenceStream sequenceStream; /** Number of events in the event set. */ private int numEvents; /** Number of predicates. */ private int numPreds; private int numOutcomes; /** List of outcomes for each event i, in context[i]. */ private int[] outcomeList; private String[] outcomeLabels; /** Stores the average parameter values of each predicate during iteration. */ private MutableContext[] averageParams; /** Mapping between context and an integer */ private Map pmap; private Map omap; /** Stores the estimated parameter value of each predicate during iteration. */ private MutableContext[] params; private boolean useAverage; private int[][][] updates; private static final int VALUE = 0; private static final int ITER = 1; private static final int EVENT = 2; private String[] predLabels; private int numSequences; public SimplePerceptronSequenceTrainer() { } @Override public void validate() { super.validate(); String algorithmName = getAlgorithm(); if (algorithmName != null) { if (!PERCEPTRON_SEQUENCE_VALUE.equals(algorithmName)) { throw new IllegalArgumentException("algorithmName must be PERCEPTRON_SEQUENCE"); } } } @Deprecated @Override public boolean isValid() { try { validate(); return true; } catch (IllegalArgumentException e) { return false; } } public AbstractModel doTrain(SequenceStream events) throws IOException { int iterations = getIterations(); int cutoff = getCutoff(); boolean useAverage = trainingParameters.getBooleanParameter("UseAverage", true); return trainModel(iterations, events, cutoff, useAverage); } // << members related to AbstractSequenceTrainer public AbstractModel trainModel(int iterations, SequenceStream sequenceStream, int cutoff, boolean useAverage) throws IOException { this.iterations = iterations; this.sequenceStream = sequenceStream; trainingParameters.put(AbstractDataIndexer.CUTOFF_PARAM, cutoff); trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false); DataIndexer di = new OnePassDataIndexer(); di.init(trainingParameters,reportMap); di.index(new SequenceStreamEventStream(sequenceStream)); numSequences = 0; sequenceStream.reset(); while (sequenceStream.read() != null) { numSequences++; } outcomeList = di.getOutcomeList(); predLabels = di.getPredLabels(); pmap = new HashMap<>(); for (int i = 0; i < predLabels.length; i++) { pmap.put(predLabels[i], i); } display("Incorporating indexed data for training... \n"); this.useAverage = useAverage; numEvents = di.getNumEvents(); this.iterations = iterations; outcomeLabels = di.getOutcomeLabels(); omap = new HashMap<>(); for (int oli = 0; oli < outcomeLabels.length; oli++) { omap.put(outcomeLabels[oli], oli); } outcomeList = di.getOutcomeList(); numPreds = predLabels.length; numOutcomes = outcomeLabels.length; if (useAverage) { updates = new int[numPreds][numOutcomes][3]; } display("done.\n"); display("\tNumber of Event Tokens: " + numEvents + "\n"); display("\t Number of Outcomes: " + numOutcomes + "\n"); display("\t Number of Predicates: " + numPreds + "\n"); params = new MutableContext[numPreds]; if (useAverage) averageParams = new MutableContext[numPreds]; int[] allOutcomesPattern = new int[numOutcomes]; for (int oi = 0; oi < numOutcomes; oi++) { allOutcomesPattern[oi] = oi; } for (int pi = 0; pi < numPreds; pi++) { params[pi] = new MutableContext(allOutcomesPattern, new double[numOutcomes]); if (useAverage) averageParams[pi] = new MutableContext(allOutcomesPattern,new double[numOutcomes]); for (int aoi = 0; aoi < numOutcomes; aoi++) { params[pi].setParameter(aoi, 0.0); if (useAverage) averageParams[pi].setParameter(aoi, 0.0); } } double[] modelDistribution = new double[numOutcomes]; display("Computing model parameters...\n"); findParameters(iterations); display("...done.\n"); /* Create and return the model ****/ String[] updatedPredLabels = predLabels; if (useAverage) { return new PerceptronModel(averageParams, updatedPredLabels, outcomeLabels); } else { return new PerceptronModel(params, updatedPredLabels, outcomeLabels); } } private void findParameters(int iterations) throws IOException { display("Performing " + iterations + " iterations.\n"); for (int i = 1; i <= iterations; i++) { if (i < 10) display(" " + i + ": "); else if (i < 100) display(" " + i + ": "); else display(i + ": "); nextIteration(i); } if (useAverage) { trainingStats(averageParams); } else { trainingStats(params); } } public void nextIteration(int iteration) throws IOException { iteration--; //move to 0-based index int numCorrect = 0; int oei = 0; int si = 0; List> featureCounts = new ArrayList<>(numOutcomes); for (int oi = 0; oi < numOutcomes; oi++) { featureCounts.add(new HashMap<>()); } PerceptronModel model = new PerceptronModel(params,predLabels,outcomeLabels); sequenceStream.reset(); Sequence sequence; while ((sequence = sequenceStream.read()) != null) { Event[] taggerEvents = sequenceStream.updateContext(sequence, model); Event[] events = sequence.getEvents(); boolean update = false; for (int ei = 0; ei < events.length; ei++, oei++) { if (!taggerEvents[ei].getOutcome().equals(events[ei].getOutcome())) { update = true; //break; } else { numCorrect++; } } if (update) { for (int oi = 0; oi < numOutcomes; oi++) { featureCounts.get(oi).clear(); } //System.err.print("train:");for (int ei=0;ei "+averageParams[pi].getParameters()[oi]); updates[pi][oi][VALUE] = (int) params[pi].getParameters()[oi]; updates[pi][oi][ITER] = iteration; updates[pi][oi][EVENT] = si; } } } } model = new PerceptronModel(params,predLabels,outcomeLabels); } si++; } //finish average computation double totIterations = (double) iterations * si; if (useAverage && iteration == iterations - 1) { for (int pi = 0; pi < numPreds; pi++) { double[] predParams = averageParams[pi].getParameters(); for (int oi = 0; oi < numOutcomes; oi++) { if (updates[pi][oi][VALUE] != 0) { predParams[oi] += updates[pi][oi][VALUE] * (numSequences * (iterations - updates[pi][oi][ITER]) - updates[pi][oi][EVENT]); } if (predParams[oi] != 0) { predParams[oi] /= totIterations; averageParams[pi].setParameter(oi, predParams[oi]); //System.err.println("updates["+pi+"]["+oi+"]=("+updates[pi][oi][ITER]+"," // +updates[pi][oi][EVENT]+","+updates[pi][oi][VALUE]+") + ("+iterations+","+0+"," // +params[pi].getParameters()[oi]+") -> "+averageParams[pi].getParameters()[oi]); } } } } display(". (" + numCorrect + "/" + numEvents + ") " + ((double) numCorrect / numEvents) + "\n"); } private void trainingStats(MutableContext[] params) throws IOException { int numCorrect = 0; int oei = 0; sequenceStream.reset(); Sequence sequence; while ((sequence = sequenceStream.read()) != null) { Event[] taggerEvents = sequenceStream.updateContext(sequence, new PerceptronModel(params,predLabels,outcomeLabels)); for (int ei = 0; ei < taggerEvents.length; ei++, oei++) { int max = omap.get(taggerEvents[ei].getOutcome()); if (max == outcomeList[oei]) { numCorrect ++; } } } display(". (" + numCorrect + "/" + numEvents + ") " + ((double) numCorrect / numEvents) + "\n"); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractSequenceTrainer.java0100664 0001750 0001750 00000002753 14135770370 033607 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.ml.model.SequenceStream; public abstract class AbstractSequenceTrainer extends AbstractTrainer implements SequenceTrainer { public AbstractSequenceTrainer() { } public abstract SequenceClassificationModel doTrain(SequenceStream events) throws IOException; public final SequenceClassificationModel train(SequenceStream events) throws IOException { validate(); SequenceClassificationModel model = doTrain(events); addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, SequenceTrainer.SEQUENCE_VALUE); return model; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Log0100644 0000000 0000000 00000000156 14135770370 032605 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/LogProbability.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/LogProbability.java0100664 0001750 0001750 00000007234 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; /** * Class implementing the probability for a label. * * @param the label (category) class * */ public class LogProbability extends Probability { public LogProbability(T label) { super(label); set(1.0); } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param probability the probability to assign */ public void set(double probability) { this.probability = StrictMath.log(probability); } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param probability the probability to assign */ public void set(Probability probability) { this.probability = probability.getLog(); } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param probability the probability to assign */ public void setIfLarger(double probability) { double logP = StrictMath.log(probability); if (this.probability < logP) { this.probability = logP; } } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param probability the probability to assign */ public void setIfLarger(Probability probability) { if (this.probability < probability.getLog()) { this.probability = probability.getLog(); } } /** * Checks if a probability is greater than the old one. * * @param probability the probability to assign */ public boolean isLarger(Probability probability) { return this.probability < probability.getLog(); } /** * Assigns a log probability to a label, discarding any previously assigned probability. * * @param probability the log probability to assign */ public void setLog(double probability) { this.probability = probability; } /** * Compounds the existing probability mass on the label with the new * probability passed in to the method. * * @param probability the probability weight to add */ public void addIn(double probability) { setLog(this.probability + StrictMath.log(probability)); } /** * Returns the probability associated with a label * * @return the probability associated with the label */ public Double get() { return StrictMath.exp(probability); } /** * Returns the log probability associated with a label * * @return the log probability associated with the label */ public Double getLog() { return probability; } /** * Returns the probabilities associated with all labels * * @return the HashMap of labels and their probabilities */ public T getLabel() { return label; } public String toString() { return label + ":" + probability; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Pla0100644 0000000 0000000 00000000176 14135770370 032602 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/PlainTextNaiveBayesModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/PlainTextNaiveBayes0100664 0001750 0001750 00000003206 14135770370 034105 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import opennlp.tools.ml.model.PlainTextFileDataReader; public class PlainTextNaiveBayesModelReader extends NaiveBayesModelReader { /** * Constructor which directly instantiates the BufferedReader containing * the model contents. * * @param br The BufferedReader containing the model information. */ public PlainTextNaiveBayesModelReader(BufferedReader br) { super(new PlainTextFileDataReader(br)); } /** * Constructor which takes a File and creates a reader for it. Detects * whether the file is gzipped or not based on whether the suffix contains * ".gz". * * @param f The File in which the model is stored. */ public PlainTextNaiveBayesModelReader(File f) throws IOException { super(f); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000157 14135770370 032574 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModel.jav0100664 0001750 0001750 00000013367 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.EvalParameters; /** * Class implementing the multinomial Naive Bayes classifier model. */ public class NaiveBayesModel extends AbstractModel { protected double[] outcomeTotals; protected long vocabulary; NaiveBayesModel(Context[] params, String[] predLabels, Map pmap, String[] outcomeNames) { super(params, predLabels, pmap, outcomeNames); outcomeTotals = initOutcomeTotals(outcomeNames, params); this.evalParams = new NaiveBayesEvalParameters(params, outcomeNames.length, outcomeTotals, predLabels.length); modelType = ModelType.NaiveBayes; } public NaiveBayesModel(Context[] params, String[] predLabels, String[] outcomeNames) { super(params, predLabels, outcomeNames); outcomeTotals = initOutcomeTotals(outcomeNames, params); this.evalParams = new NaiveBayesEvalParameters(params, outcomeNames.length, outcomeTotals, predLabels.length); modelType = ModelType.NaiveBayes; } protected double[] initOutcomeTotals(String[] outcomeNames, Context[] params) { double[] outcomeTotals = new double[outcomeNames.length]; for (Context context : params) { for (int j = 0; j < context.getOutcomes().length; ++j) { int outcome = context.getOutcomes()[j]; double count = context.getParameters()[j]; outcomeTotals[outcome] += count; } } return outcomeTotals; } public double[] eval(String[] context) { return eval(context, new double[evalParams.getNumOutcomes()]); } public double[] eval(String[] context, float[] values) { return eval(context, values, new double[evalParams.getNumOutcomes()]); } public double[] eval(String[] context, double[] probs) { return eval(context, null, probs); } public double[] eval(String[] context, float[] values, double[] outsums) { Context[] scontexts = new Context[context.length]; java.util.Arrays.fill(outsums, 0); for (int i = 0; i < context.length; i++) { scontexts[i] = pmap.get(context[i]); } return eval(scontexts, values, outsums, evalParams, true); } public static double[] eval(int[] context, double[] prior, EvalParameters model) { return eval(context, null, prior, model, true); } static double[] eval(Context[] context, float[] values, double[] prior, EvalParameters model, boolean normalize) { Probabilities probabilities = new LogProbabilities<>(); double[] outcomeTotals = model instanceof NaiveBayesEvalParameters ? ((NaiveBayesEvalParameters) model).getOutcomeTotals() : new double[prior.length]; long vocabulary = model instanceof NaiveBayesEvalParameters ? ((NaiveBayesEvalParameters) model).getVocabulary() : 0; double[] activeParameters; int[] activeOutcomes; double value = 1; for (int ci = 0; ci < context.length; ci++) { if (context[ci] != null) { Context predParams = context[ci]; activeOutcomes = predParams.getOutcomes(); activeParameters = predParams.getParameters(); if (values != null) { value = values[ci]; } int ai = 0; for (int i = 0; i < outcomeTotals.length && ai < activeOutcomes.length; ++i) { int oid = activeOutcomes[ai]; double numerator = oid == i ? activeParameters[ai++] * value : 0; double denominator = outcomeTotals[i]; probabilities.addIn(i, getProbability(numerator, denominator, vocabulary, true), 1); } } } double total = 0; for (double outcomeTotal : outcomeTotals) { total += outcomeTotal; } for (int i = 0; i < outcomeTotals.length; ++i) { double numerator = outcomeTotals[i]; probabilities.addIn(i, numerator / total, 1); } for (int i = 0; i < outcomeTotals.length; ++i) { prior[i] = probabilities.get(i); } return prior; } static double[] eval(int[] context, float[] values, double[] prior, EvalParameters model, boolean normalize) { Context[] scontexts = new Context[context.length]; for (int i = 0; i < context.length; i++) { scontexts[i] = model.getParams()[context[i]]; } return eval(scontexts, values, prior, model, normalize); } private static double getProbability(double numerator, double denominator, double vocabulary, boolean isSmoothed) { if (isSmoothed) return getSmoothedProbability(numerator, denominator, vocabulary); else if (denominator == 0 || denominator < Double.MIN_VALUE) return 0; else return 1.0 * numerator / denominator; } private static double getSmoothedProbability(double numerator, double denominator, double vocabulary) { final double delta = 0.05; // Lidstone smoothing return 1.0 * (numerator + delta) / (denominator + delta * vocabulary); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Bin0100644 0000000 0000000 00000000173 14135770370 032573 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/BinaryNaiveBayesModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/BinaryNaiveBayesMod0100664 0001750 0001750 00000003176 14135770370 034067 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.DataInputStream; import java.io.File; import java.io.IOException; import opennlp.tools.ml.model.BinaryFileDataReader; public class BinaryNaiveBayesModelReader extends NaiveBayesModelReader { /** * Constructor which directly instantiates the DataInputStream containing * the model contents. * * @param dis The DataInputStream containing the model information. */ public BinaryNaiveBayesModelReader(DataInputStream dis) { super(new BinaryFileDataReader(dis)); } /** * Constructor which takes a File and creates a reader for it. Detects * whether the file is gzipped or not based on whether the suffix contains * ".gz" * * @param f The File in which the model is stored. */ public BinaryNaiveBayesModelReader(File f) throws IOException { super(f); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/Probabilities.java0100664 0001750 0001750 00000015274 14135770370 033746 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * Class implementing the probability distribution over labels returned by a classifier. * * @param the label (category) class * */ public abstract class Probabilities { protected Map map = new HashMap<>(); protected transient boolean isNormalised = false; protected Map normalised; protected double confidence = 0.0; /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void set(T t, double probability) { isNormalised = false; map.put(t, probability); } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void set(T t, Probability probability) { isNormalised = false; map.put(t, probability.get()); } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void setIfLarger(T t, double probability) { Double p = map.get(t); if (p == null || probability > p) { isNormalised = false; map.put(t, probability); } } /** * Assigns a log probability to a label, discarding any previously assigned probability. * * @param t the label to which the log probability is being assigned * @param probability the log probability to assign */ public void setLog(T t, double probability) { set(t, StrictMath.exp(probability)); } /** * Compounds the existing probability mass on the label with the new probability passed in to the method. * * @param t the label whose probability mass is being updated * @param probability the probability weight to add * @param count the amplifying factor for the probability compounding */ public void addIn(T t, double probability, int count) { isNormalised = false; Double p = map.get(t); if (p == null) p = 1.0; probability = StrictMath.pow(probability, count); map.put(t, p * probability); } /** * Returns the probability associated with a label * * @param t the label whose probability needs to be returned * @return the probability associated with the label */ public Double get(T t) { Double d = normalize().get(t); if (d == null) return 0.0; return d; } /** * Returns the log probability associated with a label * * @param t the label whose log probability needs to be returned * @return the log probability associated with the label */ public Double getLog(T t) { return StrictMath.log(get(t)); } /** * Returns the probabilities associated with all labels * * @return the HashMap of labels and their probabilities */ public Set getKeys() { return map.keySet(); } /** * Returns the probabilities associated with all labels * * @return the HashMap of labels and their probabilities */ public Map getAll() { return normalize(); } private Map normalize() { if (isNormalised) return normalised; Map temp = createMapDataStructure(); double sum = 0; for (Entry entry : map.entrySet()) { Double p = entry.getValue(); if (p != null) { sum += p; } } for (Entry entry : temp.entrySet()) { T t = entry.getKey(); Double p = entry.getValue(); if (p != null) { temp.put(t, p / sum); } } normalised = temp; isNormalised = true; return temp; } protected Map createMapDataStructure() { return new HashMap<>(); } /** * Returns the most likely label * * @return the label that has the highest associated probability */ public T getMax() { double max = 0; T maxT = null; for (Entry entry : map.entrySet()) { final T t = entry.getKey(); final Double temp = entry.getValue(); if (temp >= max) { max = temp; maxT = t; } } return maxT; } /** * Returns the probability of the most likely label * * @return the highest probability */ public double getMaxValue() { return get(getMax()); } public void discardCountsBelow(double i) { List labelsToRemove = new ArrayList<>(); for (Entry entry : map.entrySet()) { T label = entry.getKey(); Double sum = entry.getValue(); if (sum == null) sum = 0.0; if (sum < i) labelsToRemove.add(label); } for (T label : labelsToRemove) { map.remove(label); } } /** * Returns the best confidence with which this set of probabilities has been calculated. * This is a function of the amount of data that supports the assertion. * It is also a measure of the accuracy of the estimator of the probability. * * @return the best confidence of the probabilities */ public double getConfidence() { return confidence; } /** * Sets the best confidence with which this set of probabilities has been calculated. * This is a function of the amount of data that supports the assertion. * It is also a measure of the accuracy of the estimator of the probability. * * @param confidence the confidence in the probabilities */ public void setConfidence(double confidence) { this.confidence = confidence; } public String toString() { return getAll().toString(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000170 14135770370 032567 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesEvalParameters.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesEvalParam0100664 0001750 0001750 00000002715 14135770370 034051 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.EvalParameters; /** * Parameters for the evalution of a naive bayes classifier */ public class NaiveBayesEvalParameters extends EvalParameters { protected double[] outcomeTotals; protected long vocabulary; public NaiveBayesEvalParameters(Context[] params, int numOutcomes, double[] outcomeTotals, long vocabulary) { super(params, numOutcomes); this.outcomeTotals = outcomeTotals; this.vocabulary = vocabulary; } public double[] getOutcomeTotals() { return outcomeTotals; } public long getVocabulary() { return vocabulary; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Log0100644 0000000 0000000 00000000160 14135770370 032600 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/LogProbabilities.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/LogProbabilities.ja0100664 0001750 0001750 00000014207 14135770370 034054 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.util.ArrayList; import java.util.Map; import java.util.Map.Entry; /** * Class implementing the probability distribution over labels returned by * a classifier as a log of probabilities. * This is necessary because floating point precision in Java does not allow for high-accuracy * representation of very low probabilities such as would occur in a text categorizer. * * @param the label (category) class * */ public class LogProbabilities extends Probabilities { /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void set(T t, double probability) { isNormalised = false; map.put(t, log(probability)); } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void set(T t, Probability probability) { isNormalised = false; map.put(t, probability.getLog()); } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param t the label to which the probability is being assigned * @param probability the probability to assign */ public void setIfLarger(T t, double probability) { double logProbability = log(probability); Double p = map.get(t); if (p == null || logProbability > p) { isNormalised = false; map.put(t, logProbability); } } /** * Assigns a log probability to a label, discarding any previously assigned probability. * * @param t the label to which the log probability is being assigned * @param probability the log probability to assign */ public void setLog(T t, double probability) { isNormalised = false; map.put(t, probability); } /** * Compounds the existing probability mass on the label with the new probability passed in to the method. * * @param t the label whose probability mass is being updated * @param probability the probability weight to add * @param count the amplifying factor for the probability compounding */ public void addIn(T t, double probability, int count) { isNormalised = false; Double p = map.get(t); if (p == null) p = 0.0; probability = log(probability) * count; map.put(t, p + probability); } private Map normalize() { if (isNormalised) return normalised; Map temp = createMapDataStructure(); double highestLogProbability = Double.NEGATIVE_INFINITY; for (Entry entry : map.entrySet()) { final Double p = entry.getValue(); if (p != null && p > highestLogProbability) { highestLogProbability = p; } } double sum = 0; for (Entry entry : map.entrySet()) { T t = entry.getKey(); Double p = entry.getValue(); if (p != null) { double temp_p = StrictMath.exp(p - highestLogProbability); if (!Double.isNaN(temp_p)) { sum += temp_p; temp.put(t, temp_p); } } } for (Entry entry : temp.entrySet()) { final T t = entry.getKey(); final Double p = entry.getValue(); if (p != null && sum > Double.MIN_VALUE) { temp.put(t, p / sum); } } normalised = temp; isNormalised = true; return temp; } private double log(double prob) { return StrictMath.log(prob); } /** * Returns the probability associated with a label * * @param t the label whose probability needs to be returned * @return the probability associated with the label */ public Double get(T t) { Double d = normalize().get(t); if (d == null) return 0.0; return d; } /** * Returns the log probability associated with a label * * @param t the label whose log probability needs to be returned * @return the log probability associated with the label */ public Double getLog(T t) { Double d = map.get(t); if (d == null) return Double.NEGATIVE_INFINITY; return d; } public void discardCountsBelow(double i) { i = StrictMath.log(i); ArrayList labelsToRemove = new ArrayList<>(); for (Entry entry : map.entrySet()) { final T label = entry.getKey(); Double sum = entry.getValue(); if (sum == null) sum = Double.NEGATIVE_INFINITY; if (sum < i) labelsToRemove.add(label); } for (T label : labelsToRemove) { map.remove(label); } } /** * Returns the probabilities associated with all labels * * @return the HashMap of labels and their probabilities */ public Map getAll() { return normalize(); } /** * Returns the most likely label * * @return the label that has the highest associated probability */ public T getMax() { double max = Double.NEGATIVE_INFINITY; T maxT = null; for (Entry entry : map.entrySet()) { final T t = entry.getKey(); final Double temp = entry.getValue(); if (temp >= max) { max = temp; maxT = t; } } return maxT; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000165 14135770370 032573 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModelWrit0100664 0001750 0001750 00000013341 14135770370 034104 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Map.Entry; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelWriter; import opennlp.tools.ml.model.ComparablePredicate; import opennlp.tools.ml.model.Context; /** * Abstract parent class for NaiveBayes writers. It provides the persist method * which takes care of the structure of a stored document, and requires an * extending class to define precisely how the data should be stored. */ public abstract class NaiveBayesModelWriter extends AbstractModelWriter { protected Context[] PARAMS; protected String[] OUTCOME_LABELS; protected String[] PRED_LABELS; int numOutcomes; public NaiveBayesModelWriter(AbstractModel model) { Object[] data = model.getDataStructures(); this.numOutcomes = model.getNumOutcomes(); PARAMS = (Context[]) data[0]; @SuppressWarnings("unchecked") Map pmap = (Map) data[1]; OUTCOME_LABELS = (String[]) data[2]; PARAMS = new Context[pmap.size()]; PRED_LABELS = new String[pmap.size()]; int i = 0; for (Map.Entry pred : pmap.entrySet()) { PRED_LABELS[i] = pred.getKey(); PARAMS[i] = pred.getValue(); i++; } } protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; } protected List> compressOutcomes(ComparablePredicate[] sorted) { List> outcomePatterns = new ArrayList<>(); if (sorted.length > 0) { ComparablePredicate cp = sorted[0]; List newGroup = new ArrayList<>(); for (int i = 0; i < sorted.length; i++) { if (cp.compareTo(sorted[i]) == 0) { newGroup.add(sorted[i]); } else { cp = sorted[i]; outcomePatterns.add(newGroup); newGroup = new ArrayList<>(); newGroup.add(sorted[i]); } } outcomePatterns.add(newGroup); } return outcomePatterns; } protected List> computeOutcomePatterns(ComparablePredicate[] sorted) { ComparablePredicate cp = sorted[0]; List> outcomePatterns = new ArrayList<>(); List newGroup = new ArrayList<>(); for (ComparablePredicate predicate : sorted) { if (cp.compareTo(predicate) == 0) { newGroup.add(predicate); } else { cp = predicate; outcomePatterns.add(newGroup); newGroup = new ArrayList<>(); newGroup.add(predicate); } } outcomePatterns.add(newGroup); System.err.println(outcomePatterns.size() + " outcome patterns"); return outcomePatterns; } /** * Writes the model to disk, using the writeX() methods * provided by extending classes. * *

If you wish to create a NaiveBayesModelWriter which uses a different * structure, it will be necessary to override the persist method in * addition to implementing the writeX() methods. */ public void persist() throws IOException { // the type of model (NaiveBayes) writeUTF("NaiveBayes"); // the mapping from outcomes to their integer indexes writeInt(OUTCOME_LABELS.length); for (String label : OUTCOME_LABELS) { writeUTF(label); } // the mapping from predicates to the outcomes they contributed to. // The sorting is done so that we actually can write this out more // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); List> compressed = computeOutcomePatterns(sorted); writeInt(compressed.size()); for (List a : compressed) { writeUTF(a.size() + a.get(0).toString()); } // the mapping from predicate names to their integer indexes writeInt(sorted.length); for (ComparablePredicate s : sorted) { writeUTF(s.name); } // write out the parameters for (int i = 0; i < sorted.length; i++) for (int j = 0; j < sorted[i].params.length; j++) writeDouble(sorted[i].params[j]); close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000161 14135770370 032567 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesTrainer.j0100664 0001750 0001750 00000014171 14135770370 034034 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.IOException; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.EvalParameters; import opennlp.tools.ml.model.MutableContext; import opennlp.tools.util.TrainingParameters; /** * Trains models using the combination of EM algorithm and Naive Bayes classifier * which is described in: * Text Classification from Labeled and Unlabeled Documents using EM * Nigam, McCallum, et al paper of 2000 */ public class NaiveBayesTrainer extends AbstractEventTrainer { public static final String NAIVE_BAYES_VALUE = "NAIVEBAYES"; /** * Number of unique events which occurred in the event set. */ private int numUniqueEvents; /** * Number of events in the event set. */ private int numEvents; /** * Number of predicates. */ private int numPreds; /** * Number of outcomes. */ private int numOutcomes; /** * Records the array of predicates seen in each event. */ private int[][] contexts; /** * The value associates with each context. If null then context values are assumes to be 1. */ private float[][] values; /** * List of outcomes for each event i, in context[i]. */ private int[] outcomeList; /** * Records the num of times an event has been seen for each event i, in context[i]. */ private int[] numTimesEventsSeen; /** * Stores the String names of the outcomes. The NaiveBayes only tracks outcomes * as ints, and so this array is needed to save the model to disk and * thereby allow users to know what the outcome was in human * understandable terms. */ private String[] outcomeLabels; /** * Stores the String names of the predicates. The NaiveBayes only tracks * predicates as ints, and so this array is needed to save the model to * disk and thereby allow users to know what the outcome was in human * understandable terms. */ private String[] predLabels; public NaiveBayesTrainer() { } public NaiveBayesTrainer(TrainingParameters parameters) { super(parameters); } public boolean isSortAndMerge() { return false; } public AbstractModel doTrain(DataIndexer indexer) throws IOException { return this.trainModel(indexer); } // << members related to AbstractSequenceTrainer public AbstractModel trainModel(DataIndexer di) { display("Incorporating indexed data for training... \n"); contexts = di.getContexts(); values = di.getValues(); numTimesEventsSeen = di.getNumTimesEventsSeen(); numEvents = di.getNumEvents(); numUniqueEvents = contexts.length; outcomeLabels = di.getOutcomeLabels(); outcomeList = di.getOutcomeList(); predLabels = di.getPredLabels(); numPreds = predLabels.length; numOutcomes = outcomeLabels.length; display("done.\n"); display("\tNumber of Event Tokens: " + numUniqueEvents + "\n"); display("\t Number of Outcomes: " + numOutcomes + "\n"); display("\t Number of Predicates: " + numPreds + "\n"); display("Computing model parameters...\n"); MutableContext[] finalParameters = findParameters(); display("...done.\n"); /* Create and return the model ****/ return new NaiveBayesModel(finalParameters, predLabels, outcomeLabels); } private MutableContext[] findParameters() { int[] allOutcomesPattern = new int[numOutcomes]; for (int oi = 0; oi < numOutcomes; oi++) allOutcomesPattern[oi] = oi; /* Stores the estimated parameter value of each predicate during iteration. */ MutableContext[] params = new MutableContext[numPreds]; for (int pi = 0; pi < numPreds; pi++) { params[pi] = new MutableContext(allOutcomesPattern, new double[numOutcomes]); for (int aoi = 0; aoi < numOutcomes; aoi++) params[pi].setParameter(aoi, 0.0); } EvalParameters evalParams = new EvalParameters(params, numOutcomes); double stepSize = 1; for (int ei = 0; ei < numUniqueEvents; ei++) { int targetOutcome = outcomeList[ei]; for (int ni = 0; ni < this.numTimesEventsSeen[ei]; ni++) { for (int ci = 0; ci < contexts[ei].length; ci++) { int pi = contexts[ei][ci]; if (values == null) { params[pi].updateParameter(targetOutcome, stepSize); } else { params[pi].updateParameter(targetOutcome, stepSize * values[ei][ci]); } } } } // Output the final training stats. trainingStats(evalParams); return params; } private double trainingStats(EvalParameters evalParams) { int numCorrect = 0; for (int ei = 0; ei < numUniqueEvents; ei++) { for (int ni = 0; ni < this.numTimesEventsSeen[ei]; ni++) { double[] modelDistribution = new double[numOutcomes]; if (values != null) NaiveBayesModel.eval(contexts[ei], values[ei], modelDistribution, evalParams, false); else NaiveBayesModel.eval(contexts[ei], null, modelDistribution, evalParams, false); int max = ArrayMath.argmax(modelDistribution); if (max == outcomeList[ei]) numCorrect++; } } double trainingAccuracy = (double) numCorrect / numEvents; display("Stats: (" + numCorrect + "/" + numEvents + ") " + trainingAccuracy + "\n"); return trainingAccuracy; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Pla0100644 0000000 0000000 00000000176 14135770370 032602 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/PlainTextNaiveBayesModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/PlainTextNaiveBayes0100664 0001750 0001750 00000005443 14135770370 034112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.model.AbstractModel; /** * Model writer that saves models in plain text format. */ public class PlainTextNaiveBayesModelWriter extends NaiveBayesModelWriter { private BufferedWriter output; /** * Constructor which takes a NaiveBayesModel and a File and prepares itself to * write the model to that file. Detects whether the file is gzipped or not * based on whether the suffix contains ".gz". * * @param model The NaiveBayesModel which is to be persisted. * @param f The File in which the model is to be persisted. */ public PlainTextNaiveBayesModelWriter(AbstractModel model, File f) throws IOException { super(model); if (f.getName().endsWith(".gz")) { output = new BufferedWriter(new OutputStreamWriter( new GZIPOutputStream(new FileOutputStream(f)))); } else { output = new BufferedWriter(new FileWriter(f)); } } /** * Constructor which takes a NaiveBayesModel and a BufferedWriter and prepares * itself to write the model to that writer. * * @param model The NaiveBayesModel which is to be persisted. * @param bw The BufferedWriter which will be used to persist the model. */ public PlainTextNaiveBayesModelWriter(AbstractModel model, BufferedWriter bw) { super(model); output = bw; } public void writeUTF(String s) throws java.io.IOException { output.write(s); output.newLine(); } public void writeInt(int i) throws java.io.IOException { output.write(Integer.toString(i)); output.newLine(); } public void writeDouble(double d) throws java.io.IOException { output.write(Double.toString(d)); output.newLine(); } public void close() throws java.io.IOException { output.flush(); output.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/Probability.java0100664 0001750 0001750 00000007174 14135770370 033436 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; /** * Class implementing the probability for a label. * * @param the label (category) class * */ public class Probability { protected T label; protected double probability = 1.0; public Probability(T label) { this.label = label; } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param probability the probability to assign */ public void set(double probability) { this.probability = probability; } /** * Assigns a probability to a label, discarding any previously assigned probability. * * @param probability the probability to assign */ public void set(Probability probability) { this.probability = probability.get(); } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param probability the probability to assign */ public void setIfLarger(double probability) { if (this.probability < probability) { this.probability = probability; } } /** * Assigns a probability to a label, discarding any previously assigned probability, * if the new probability is greater than the old one. * * @param probability the probability to assign */ public void setIfLarger(Probability probability) { if (this.probability < probability.get()) { this.probability = probability.get(); } } /** * Checks if a probability is greater than the old one. * * @param probability the probability to assign */ public boolean isLarger(Probability probability) { return this.probability < probability.get(); } /** * Assigns a log probability to a label, discarding any previously assigned probability. * * @param probability the log probability to assign */ public void setLog(double probability) { set(StrictMath.exp(probability)); } /** * Compounds the existing probability mass on the label with the new probability passed in to the method. * * @param probability the probability weight to add */ public void addIn(double probability) { set(this.probability * probability); } /** * Returns the probability associated with a label * * @return the probability associated with the label */ public Double get() { return probability; } /** * Returns the log probability associated with a label * * @return the log probability associated with the label */ public Double getLog() { return StrictMath.log(get()); } /** * Returns the probabilities associated with all labels * * @return the HashMap of labels and their probabilities */ public T getLabel() { return label; } public String toString() { return label == null ? "" + probability : label + ":" + probability; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Nai0100644 0000000 0000000 00000000165 14135770370 032573 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/NaiveBayesModelRead0100664 0001750 0001750 00000005517 14135770370 034040 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.File; import java.io.IOException; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelReader; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.DataReader; /** * Abstract parent class for readers of NaiveBayes. */ public class NaiveBayesModelReader extends AbstractModelReader { public NaiveBayesModelReader(File file) throws IOException { super(file); } public NaiveBayesModelReader(DataReader dataReader) { super(dataReader); } /** * Retrieve a model from disk. It assumes that models are saved in the * following sequence: * *
NaiveBayes (model type identifier) *
1. # of parameters (int) *
2. # of outcomes (int) *
* list of outcome names (String) *
3. # of different types of outcome patterns (int) *
* list of (int int[]) *
[# of predicates for which outcome pattern is true] [outcome pattern] *
4. # of predicates (int) *
* list of predicate names (String) * *

If you are creating a reader for a format which won't work with this * (perhaps a database or xml file), override this method and ignore the * other methods provided in this abstract class. * * @return The NaiveBayesModel stored in the format and location specified to * this NaiveBayesModelReader (usually via its the constructor). */ public AbstractModel constructModel() throws IOException { String[] outcomeLabels = getOutcomes(); int[][] outcomePatterns = getOutcomePatterns(); String[] predLabels = getPredicates(); Context[] params = getParameters(outcomePatterns); return new NaiveBayesModel(params, predLabels, outcomeLabels); } public void checkModelType() throws java.io.IOException { String modelType = readUTF(); if (!modelType.equals("NaiveBayes")) System.out.println("Error: attempting to load a " + modelType + " model as a NaiveBayes model." + " You should expect problems."); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_naivebayes_Bin0100644 0000000 0000000 00000000173 14135770370 032573 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/BinaryNaiveBayesModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/naivebayes/BinaryNaiveBayesMod0100664 0001750 0001750 00000005156 14135770370 034067 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.naivebayes; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.model.AbstractModel; /** * Model writer that saves models in binary format. */ public class BinaryNaiveBayesModelWriter extends NaiveBayesModelWriter { private DataOutputStream output; /** * Constructor which takes a NaiveBayesModel and a File and prepares itself to * write the model to that file. Detects whether the file is gzipped or not * based on whether the suffix contains ".gz". * * @param model The NaiveBayesModel which is to be persisted. * @param f The File in which the model is to be persisted. */ public BinaryNaiveBayesModelWriter(AbstractModel model, File f) throws IOException { super(model); if (f.getName().endsWith(".gz")) { output = new DataOutputStream( new GZIPOutputStream(new FileOutputStream(f))); } else { output = new DataOutputStream(new FileOutputStream(f)); } } /** * Constructor which takes a NaiveBayesModel and a DataOutputStream and prepares * itself to write the model to that stream. * * @param model The NaiveBayesModel which is to be persisted. * @param dos The stream which will be used to persist the model. */ public BinaryNaiveBayesModelWriter(AbstractModel model, DataOutputStream dos) { super(model); output = dos; } public void writeUTF(String s) throws java.io.IOException { output.writeUTF(s); } public void writeInt(int i) throws java.io.IOException { output.writeInt(i); } public void writeDouble(double d) throws java.io.IOException { output.writeDouble(d); } public void close() throws java.io.IOException { output.flush(); output.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/ContextGenerator.java0100664 0001750 0001750 00000002023 14135770370 033603 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; /** * Generate contexts for maxent decisions. */ public interface ContextGenerator { /** * Builds up the list of contextual predicates given an Object. */ public String[] getContext(T o); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISModel.java0100664 0001750 0001750 00000016763 14135770370 031733 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.EvalParameters; import opennlp.tools.ml.model.Prior; import opennlp.tools.ml.model.UniformPrior; /** * A maximum entropy model which has been trained using the Generalized * Iterative Scaling procedure (implemented in GIS.java). */ public final class GISModel extends AbstractModel { /** * Creates a new model with the specified parameters, outcome names, and * predicate/feature labels. * * @param params * The parameters of the model. * @param predLabels * The names of the predicates used in this model. * @param outcomeNames * The names of the outcomes this model predicts. */ public GISModel(Context[] params, String[] predLabels, String[] outcomeNames) { this(params, predLabels, outcomeNames, new UniformPrior()); } /** * Creates a new model with the specified parameters, outcome names, and * predicate/feature labels. * * @param params * The parameters of the model. * @param predLabels * The names of the predicates used in this model. * @param outcomeNames * The names of the outcomes this model predicts. * @param prior * The prior to be used with this model. */ public GISModel(Context[] params, String[] predLabels, String[] outcomeNames, Prior prior) { super(params, predLabels, outcomeNames); this.prior = prior; prior.setLabels(outcomeNames, predLabels); modelType = ModelType.Maxent; } /** * Use this model to evaluate a context and return an array of the likelihood * of each outcome given that context. * * @param context * The names of the predicates which have been observed at the * present decision point. * @return The normalized probabilities for the outcomes given the context. * The indexes of the double[] are the outcome ids, and the actual * string representation of the outcomes can be obtained from the * method getOutcome(int i). */ public final double[] eval(String[] context) { return (eval(context, new double[evalParams.getNumOutcomes()])); } public final double[] eval(String[] context, float[] values) { return (eval(context, values, new double[evalParams.getNumOutcomes()])); } public final double[] eval(String[] context, double[] outsums) { return eval(context, null, outsums); } /** * Use this model to evaluate a context and return an array of the likelihood * of each outcome given that context. * * @param context * The names of the predicates which have been observed at the * present decision point. * @param outsums * This is where the distribution is stored. * @return The normalized probabilities for the outcomes given the context. * The indexes of the double[] are the outcome ids, and the actual * string representation of the outcomes can be obtained from the * method getOutcome(int i). */ public final double[] eval(String[] context, float[] values, double[] outsums) { Context[] scontexts = new Context[context.length]; for (int i = 0; i < context.length; i++) { scontexts[i] = pmap.get(context[i]); } prior.logPrior(outsums, scontexts, values); return GISModel.eval(scontexts, values, outsums, evalParams); } /** * Use this model to evaluate a context and return an array of the likelihood * of each outcome given the specified context and the specified parameters. * * @param context * The integer values of the predicates which have been observed at * the present decision point. * @param prior * The prior distribution for the specified context. * @param model * The set of parametes used in this computation. * @return The normalized probabilities for the outcomes given the context. * The indexes of the double[] are the outcome ids, and the actual * string representation of the outcomes can be obtained from the * method getOutcome(int i). */ public static double[] eval(int[] context, double[] prior, EvalParameters model) { return eval(context, null, prior, model); } /** * Use this model to evaluate a context and return an array of the likelihood * of each outcome given the specified context and the specified parameters. * * @param context * The integer values of the predicates which have been observed at * the present decision point. * @param values * The values for each of the parameters. * @param prior * The prior distribution for the specified context. * @param model * The set of parametes used in this computation. * @return The normalized probabilities for the outcomes given the context. * The indexes of the double[] are the outcome ids, and the actual * string representation of the outcomes can be obtained from the * method getOutcome(int i). */ static double[] eval(int[] context, float[] values, double[] prior, EvalParameters model) { Context[] scontexts = new Context[context.length]; for (int i = 0; i < context.length; i++) { scontexts[i] = model.getParams()[context[i]]; } return GISModel.eval(scontexts, values, prior, model); } /** * Use this model to evaluate a context and return an array of the likelihood * of each outcome given the specified context and the specified parameters. * * @param context * The integer values of the predicates which have been observed at * the present decision point. * @param values * The values for each of the parameters. * @param prior * The prior distribution for the specified context. * @param model * The set of parametes used in this computation. * @return The normalized probabilities for the outcomes given the context. * The indexes of the double[] are the outcome ids, and the actual * string representation of the outcomes can be obtained from the * method getOutcome(int i). */ static double[] eval(Context[] context, float[] values, double[] prior, EvalParameters model) { ArrayMath.sumFeatures(context, values, prior); double normal = 0.0; for (int oid = 0; oid < model.getNumOutcomes(); oid++) { prior[oid] = StrictMath.exp(prior[oid]); normal += prior[oid]; } for (int oid = 0; oid < model.getNumOutcomes(); oid++) { prior[oid] /= normal; } return prior; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000200 14135770370 032665 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/ParallelNegLogLikelihood.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/ParallelNeg0100664 0001750 0001750 00000016653 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.DataIndexer; /** * Evaluate negative log-likelihood and its gradient in parallel */ public class ParallelNegLogLikelihood extends NegLogLikelihood { // Number of threads private int threads; // Partial value of negative log-likelihood to be computed by each thread private double[] negLogLikelihoodThread; // Partial gradient private double[][] gradientThread; public ParallelNegLogLikelihood(DataIndexer indexer, int threads) { super(indexer); if (threads <= 0) throw new IllegalArgumentException( "Number of threads must 1 or larger"); this.threads = threads; this.negLogLikelihoodThread = new double[threads]; this.gradientThread = new double[threads][dimension]; } /** * Negative log-likelihood */ @Override public double valueAt(double[] x) { if (x.length != dimension) throw new IllegalArgumentException( "x is invalid, its dimension is not equal to domain dimension."); // Compute partial value of negative log-likelihood in each thread computeInParallel(x, NegLLComputeTask.class); double negLogLikelihood = 0; for (int t = 0; t < threads; t++) { negLogLikelihood += negLogLikelihoodThread[t]; } return negLogLikelihood; } /** * Compute gradient */ @Override public double[] gradientAt(double[] x) { if (x.length != dimension) throw new IllegalArgumentException( "x is invalid, its dimension is not equal to the function."); // Compute partial gradient in each thread computeInParallel(x, GradientComputeTask.class); // Accumulate gradient for (int i = 0; i < dimension; i++) { gradient[i] = 0; for (int t = 0; t < threads; t++) { gradient[i] += gradientThread[t][i]; } } return gradient; } /** * Compute tasks in parallel */ private void computeInParallel(double[] x, Class taskClass) { ExecutorService executor = Executors.newFixedThreadPool(threads, runnable -> { Thread thread = new Thread(runnable); thread.setName( "opennlp.tools.ml.maxent.quasinewton.ParallelNegLogLikelihood.computeInParallel()"); thread.setDaemon(true); return thread; }); int taskSize = numContexts / threads; int leftOver = numContexts % threads; try { Constructor cons = taskClass.getConstructor( ParallelNegLogLikelihood.class, int.class, int.class, int.class, double[].class); List> futures = new ArrayList<>(); for (int i = 0; i < threads; i++) { if (i != threads - 1) futures.add(executor.submit( cons.newInstance(this, i, i * taskSize, taskSize, x))); else futures.add(executor.submit( cons.newInstance(this, i, i * taskSize, taskSize + leftOver, x))); } for (Future future: futures) future.get(); } catch (Exception e) { e.printStackTrace(); } executor.shutdown(); } /** * Task that is computed in parallel */ abstract class ComputeTask implements Callable { final int threadIndex; // Start index of contexts to compute final int startIndex; // Number of contexts to compute final int length; final double[] x; public ComputeTask(int threadIndex, int startIndex, int length, double[] x) { this.threadIndex = threadIndex; this.startIndex = startIndex; this.length = length; this.x = x; } } /** * Task for computing partial value of negative log-likelihood */ class NegLLComputeTask extends ComputeTask { final double[] tempSums; public NegLLComputeTask(int threadIndex, int startIndex, int length, double[] x) { super(threadIndex, startIndex, length, x); this.tempSums = new double[numOutcomes]; } @Override public NegLLComputeTask call() { int ci, oi, ai, vectorIndex, outcome; double predValue, logSumOfExps; negLogLikelihoodThread[threadIndex] = 0; for (ci = startIndex; ci < startIndex + length; ci++) { for (oi = 0; oi < numOutcomes; oi++) { tempSums[oi] = 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; tempSums[oi] += predValue * x[vectorIndex]; } } logSumOfExps = ArrayMath.logSumOfExps(tempSums); outcome = outcomeList[ci]; negLogLikelihoodThread[threadIndex] -= (tempSums[outcome] - logSumOfExps) * numTimesEventsSeen[ci]; } return this; } } /** * Task for computing partial gradient */ class GradientComputeTask extends ComputeTask { final double[] expectation; public GradientComputeTask(int threadIndex, int startIndex, int length, double[] x) { super(threadIndex, startIndex, length, x); this.expectation = new double[numOutcomes]; } @Override public GradientComputeTask call() { int ci, oi, ai, vectorIndex; double predValue, logSumOfExps; int empirical; // Reset gradientThread Arrays.fill(gradientThread[threadIndex], 0); for (ci = startIndex; ci < startIndex + length; ci++) { for (oi = 0; oi < numOutcomes; oi++) { expectation[oi] = 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; expectation[oi] += predValue * x[vectorIndex]; } } logSumOfExps = ArrayMath.logSumOfExps(expectation); for (oi = 0; oi < numOutcomes; oi++) { expectation[oi] = StrictMath.exp(expectation[oi] - logSumOfExps); } for (oi = 0; oi < numOutcomes; oi++) { empirical = outcomeList[ci] == oi ? 1 : 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; gradientThread[threadIndex][vectorIndex] += predValue * (expectation[oi] - empirical) * numTimesEventsSeen[ci]; } } } return this; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000161 14135770370 032673 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNTrainer.j0100664 0001750 0001750 00000020220 14135770370 034037 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.maxent.quasinewton.QNMinimizer.Evaluator; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.util.TrainingParameters; /** * Maxent model trainer using L-BFGS algorithm. */ public class QNTrainer extends AbstractEventTrainer { public static final String MAXENT_QN_VALUE = "MAXENT_QN"; public static final String THREADS_PARAM = "Threads"; public static final int THREADS_DEFAULT = 1; public static final String L1COST_PARAM = "L1Cost"; public static final double L1COST_DEFAULT = 0.1; public static final String L2COST_PARAM = "L2Cost"; public static final double L2COST_DEFAULT = 0.1; // Number of Hessian updates to store public static final String M_PARAM = "NumOfUpdates"; public static final int M_DEFAULT = 15; // Maximum number of function evaluations public static final String MAX_FCT_EVAL_PARAM = "MaxFctEval"; public static final int MAX_FCT_EVAL_DEFAULT = 30000; // Number of threads private int threads; // L1-regularization cost private double l1Cost; // L2-regularization cost private double l2Cost; // Settings for QNMinimizer private int m; private int maxFctEval; public QNTrainer(TrainingParameters parameters) { super(parameters); } // Constructor -- to log. For testing purpose public QNTrainer(boolean printMessages) { this(M_DEFAULT, printMessages); } // Constructor -- m : number of hessian updates to store. For testing purpose public QNTrainer(int m) { this(m, true); } // Constructor -- to log, number of hessian updates to store. For testing purpose public QNTrainer(int m, boolean verbose) { this(m, MAX_FCT_EVAL_DEFAULT, verbose); } // For testing purpose public QNTrainer(int m, int maxFctEval, boolean printMessages) { this.printMessages = printMessages; this.m = m < 0 ? M_DEFAULT : m; this.maxFctEval = maxFctEval < 0 ? MAX_FCT_EVAL_DEFAULT : maxFctEval; this.threads = THREADS_DEFAULT; this.l1Cost = L1COST_DEFAULT; this.l2Cost = L2COST_DEFAULT; } // >> Members related to AbstractEventTrainer public QNTrainer() { } @Override public void init(TrainingParameters trainingParameters, Map reportMap) { super.init(trainingParameters,reportMap); this.m = trainingParameters.getIntParameter(M_PARAM, M_DEFAULT); this.maxFctEval = trainingParameters.getIntParameter(MAX_FCT_EVAL_PARAM, MAX_FCT_EVAL_DEFAULT); this.threads = trainingParameters.getIntParameter(THREADS_PARAM, THREADS_DEFAULT); this.l1Cost = trainingParameters.getDoubleParameter(L1COST_PARAM, L1COST_DEFAULT); this.l2Cost = trainingParameters.getDoubleParameter(L2COST_PARAM, L2COST_DEFAULT); } @Override @Deprecated public void init(Map trainParams, Map reportMap) { init(new TrainingParameters(trainParams),reportMap); } @Override public void validate() { super.validate(); String algorithmName = getAlgorithm(); if (algorithmName != null && !(MAXENT_QN_VALUE.equals(algorithmName))) { throw new IllegalArgumentException("algorithmName must be MAXENT_QN"); } // Number of Hessian updates to remember if (m < 0) { throw new IllegalArgumentException( "Number of Hessian updates to remember must be >= 0"); } // Maximum number of function evaluations if (maxFctEval < 0) { throw new IllegalArgumentException( "Maximum number of function evaluations must be >= 0"); } // Number of threads must be >= 1 if (threads < 1) { throw new IllegalArgumentException("Number of threads must be >= 1"); } // Regularization costs must be >= 0 if (l1Cost < 0) { throw new IllegalArgumentException("Regularization costs must be >= 0"); } if (l2Cost < 0) { throw new IllegalArgumentException("Regularization costs must be >= 0"); } } @Deprecated @Override public boolean isValid() { try { validate(); return true; } catch (IllegalArgumentException e) { return false; } } public boolean isSortAndMerge() { return true; } public AbstractModel doTrain(DataIndexer indexer) throws IOException { int iterations = getIterations(); return trainModel(iterations, indexer); } // << Members related to AbstractEventTrainer public QNModel trainModel(int iterations, DataIndexer indexer) { // Train model's parameters Function objectiveFunction; if (threads == 1) { System.out.println("Computing model parameters ..."); objectiveFunction = new NegLogLikelihood(indexer); } else { System.out.println("Computing model parameters in " + threads + " threads ..."); objectiveFunction = new ParallelNegLogLikelihood(indexer, threads); } QNMinimizer minimizer = new QNMinimizer( l1Cost, l2Cost, iterations, m, maxFctEval, printMessages); minimizer.setEvaluator(new ModelEvaluator(indexer)); double[] parameters = minimizer.minimize(objectiveFunction); // Construct model with trained parameters String[] predLabels = indexer.getPredLabels(); int nPredLabels = predLabels.length; String[] outcomeNames = indexer.getOutcomeLabels(); int nOutcomes = outcomeNames.length; Context[] params = new Context[nPredLabels]; for (int ci = 0; ci < params.length; ci++) { List outcomePattern = new ArrayList<>(nOutcomes); List alpha = new ArrayList<>(nOutcomes); for (int oi = 0; oi < nOutcomes; oi++) { double val = parameters[oi * nPredLabels + ci]; outcomePattern.add(oi); alpha.add(val); } params[ci] = new Context(ArrayMath.toIntArray(outcomePattern), ArrayMath.toDoubleArray(alpha)); } return new QNModel(params, predLabels, outcomeNames); } /** * For measuring model's training accuracy */ private static class ModelEvaluator implements Evaluator { private DataIndexer indexer; public ModelEvaluator(DataIndexer indexer) { this.indexer = indexer; } /** * Evaluate the current model on training data set * @return model's training accuracy */ @Override public double evaluate(double[] parameters) { int[][] contexts = indexer.getContexts(); float[][] values = indexer.getValues(); int[] nEventsSeen = indexer.getNumTimesEventsSeen(); int[] outcomeList = indexer.getOutcomeList(); int nOutcomes = indexer.getOutcomeLabels().length; int nPredLabels = indexer.getPredLabels().length; int nCorrect = 0; int nTotalEvents = 0; for (int ei = 0; ei < contexts.length; ei++) { int[] context = contexts[ei]; float[] value = values == null ? null : values[ei]; double[] probs = new double[nOutcomes]; QNModel.eval(context, value, probs, nOutcomes, nPredLabels, parameters); int outcome = ArrayMath.argmax(probs); if (outcome == outcomeList[ei]) { nCorrect += nEventsSeen[ei]; } nTotalEvents += nEventsSeen[ei]; } return (double) nCorrect / nTotalEvents; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000160 14135770370 032672 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/Function.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/Function.ja0100664 0001750 0001750 00000001754 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; /** * Interface for a function */ public interface Function { int getDimension(); double valueAt(double[] x); double[] gradientAt(double[] x); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000163 14135770370 032675 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNMinimizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNMinimizer0100664 0001750 0001750 00000036574 14135770370 034171 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.maxent.quasinewton.LineSearch.LineSearchResult; /** * Implementation of L-BFGS which supports L1-, L2-regularization * and Elastic Net for solving convex optimization problems.

* Usage example: *

 *  // Quadratic function f(x) = (x-1)^2 + 10
 *  // f obtains its minimum value 10 at x = 1
 *  Function f = new Function() {
 *
 *    {@literal @}Override
 *    public int getDimension() {
 *      return 1;
 *    }
 *
 *    {@literal @}Override
 *    public double valueAt(double[] x) {
 *      return StrictMath.pow(x[0]-1, 2) + 10;
 *    }
 *
 *    {@literal @}Override
 *    public double[] gradientAt(double[] x) {
 *      return new double[] { 2*(x[0]-1) };
 *    }
 *
 *  };
 *
 *  QNMinimizer minimizer = new QNMinimizer();
 *  double[] x = minimizer.minimize(f);
 *  double min = f.valueAt(x);
 * 
*/ public class QNMinimizer { // Function change rate tolerance public static final double CONVERGE_TOLERANCE = 1e-4; // Relative gradient norm tolerance public static final double REL_GRAD_NORM_TOL = 1e-4; // Initial step size public static final double INITIAL_STEP_SIZE = 1.0; // Minimum step size public static final double MIN_STEP_SIZE = 1e-10; // Default L1-cost public static final double L1COST_DEFAULT = 0; // Default L2-cost public static final double L2COST_DEFAULT = 0; // Default number of iterations public static final int NUM_ITERATIONS_DEFAULT = 100; // Default number of Hessian updates to store public static final int M_DEFAULT = 15; // Default maximum number of function evaluations public static final int MAX_FCT_EVAL_DEFAULT = 30000; // L1-regularization cost private double l1Cost; // L2-regularization cost private double l2Cost; // Maximum number of iterations private int iterations; // Number of Hessian updates to store private int m; // Maximum number of function evaluations private int maxFctEval; // Verbose output private boolean verbose; // Objective function's dimension private int dimension; // Hessian updates private UpdateInfo updateInfo; // For evaluating quality of training parameters. // This is optional and can be omitted. private Evaluator evaluator; public QNMinimizer() { this(L1COST_DEFAULT, L2COST_DEFAULT); } public QNMinimizer(double l1Cost, double l2Cost) { this(l1Cost, l2Cost, NUM_ITERATIONS_DEFAULT); } public QNMinimizer(double l1Cost, double l2Cost, int iterations) { this(l1Cost, l2Cost, iterations, M_DEFAULT, MAX_FCT_EVAL_DEFAULT); } public QNMinimizer(double l1Cost, double l2Cost, int iterations, int m, int maxFctEval) { this(l1Cost, l2Cost, iterations, m, maxFctEval, true); } /** * Constructor * @param l1Cost L1-regularization cost * @param l2Cost L2-regularization cost * @param iterations maximum number of iterations * @param m number of Hessian updates to store * @param maxFctEval maximum number of function evaluations * @param verbose verbose output */ public QNMinimizer(double l1Cost, double l2Cost, int iterations, int m, int maxFctEval, boolean verbose) { // Check arguments if (l1Cost < 0 || l2Cost < 0) throw new IllegalArgumentException( "L1-cost and L2-cost must not be less than zero"); if (iterations <= 0) throw new IllegalArgumentException( "Number of iterations must be larger than zero"); if (m <= 0) throw new IllegalArgumentException( "Number of Hessian updates must be larger than zero"); if (maxFctEval <= 0) throw new IllegalArgumentException( "Maximum number of function evaluations must be larger than zero"); this.l1Cost = l1Cost; this.l2Cost = l2Cost; this.iterations = iterations; this.m = m; this.maxFctEval = maxFctEval; this.verbose = verbose; } public Evaluator getEvaluator() { return evaluator; } public void setEvaluator(Evaluator evaluator) { this.evaluator = evaluator; } /** * Find the parameters that minimize the objective function * @param function objective function * @return minimizing parameters */ public double[] minimize(Function function) { Function l2RegFunction = new L2RegFunction(function, l2Cost); this.dimension = l2RegFunction.getDimension(); this.updateInfo = new UpdateInfo(this.m, this.dimension); // Current point is at the origin double[] currPoint = new double[dimension]; double currValue = l2RegFunction.valueAt(currPoint); // Gradient at the current point double[] currGrad = new double[dimension]; System.arraycopy(l2RegFunction.gradientAt(currPoint), 0, currGrad, 0, dimension); // Pseudo-gradient - only use when L1-regularization is enabled double[] pseudoGrad = null; if (l1Cost > 0) { currValue += l1Cost * ArrayMath.l1norm(currPoint); pseudoGrad = new double[dimension]; computePseudoGrad(currPoint, currGrad, pseudoGrad); } LineSearchResult lsr; if (l1Cost > 0) { lsr = LineSearchResult.getInitialObjectForL1( currValue, currGrad, pseudoGrad, currPoint); } else { lsr = LineSearchResult.getInitialObject( currValue, currGrad, currPoint); } if (verbose) { display("\nSolving convex optimization problem."); display("\nObjective function has " + dimension + " variable(s)."); display("\n\nPerforming " + iterations + " iterations with " + "L1Cost=" + l1Cost + " and L2Cost=" + l2Cost + "\n"); } double[] direction = new double[dimension]; long startTime = System.currentTimeMillis(); // Initial step size for the 1st iteration double initialStepSize = l1Cost > 0 ? ArrayMath.invL2norm(lsr.getPseudoGradAtNext()) : ArrayMath.invL2norm(lsr.getGradAtNext()); for (int iter = 1; iter <= iterations; iter++) { // Find direction if (l1Cost > 0) { System.arraycopy(lsr.getPseudoGradAtNext(), 0, direction, 0, direction.length); } else { System.arraycopy(lsr.getGradAtNext(), 0, direction, 0, direction.length); } computeDirection(direction); // Line search if (l1Cost > 0) { // Constrain the search direction pseudoGrad = lsr.getPseudoGradAtNext(); for (int i = 0; i < dimension; i++) { if (direction[i] * pseudoGrad[i] >= 0) { direction[i] = 0; } } LineSearch.doConstrainedLineSearch(l2RegFunction, direction, lsr, l1Cost, initialStepSize); computePseudoGrad(lsr.getNextPoint(), lsr.getGradAtNext(), pseudoGrad); lsr.setPseudoGradAtNext(pseudoGrad); } else { LineSearch.doLineSearch(l2RegFunction, direction, lsr, initialStepSize); } // Save Hessian updates updateInfo.update(lsr); if (verbose) { if (iter < 10) display(" " + iter + ": "); else if (iter < 100) display(" " + iter + ": "); else display(iter + ": "); if (evaluator != null) { display("\t" + lsr.getValueAtNext() + "\t" + lsr.getFuncChangeRate() + "\t" + evaluator.evaluate(lsr.getNextPoint()) + "\n"); } else { display("\t " + lsr.getValueAtNext() + "\t" + lsr.getFuncChangeRate() + "\n"); } } if (isConverged(lsr)) break; initialStepSize = INITIAL_STEP_SIZE; } // Undo L2-shrinkage if Elastic Net is used (since // in that case, the shrinkage is done twice) if (l1Cost > 0 && l2Cost > 0) { double[] x = lsr.getNextPoint(); for (int i = 0; i < dimension; i++) { x[i] = StrictMath.sqrt(1 + l2Cost) * x[i]; } } long endTime = System.currentTimeMillis(); long duration = endTime - startTime; display("Running time: " + (duration / 1000.) + "s\n"); // Release memory this.updateInfo = null; System.gc(); // Avoid returning the reference to LineSearchResult's member so that GC can // collect memory occupied by lsr after this function completes (is it necessary?) double[] parameters = new double[dimension]; System.arraycopy(lsr.getNextPoint(), 0, parameters, 0, dimension); return parameters; } /** * Pseudo-gradient for L1-regularization (see equation 4 in the paper * "Scalable Training of L1-Regularized Log-Linear Models", Andrew et al. 2007) * * @param x current point * @param g gradient at x * @param pg pseudo-gradient at x which is to be computed */ private void computePseudoGrad(double[] x, double[] g, double[] pg) { for (int i = 0; i < dimension; i++) { if (x[i] < 0) { pg[i] = g[i] - l1Cost; } else if (x[i] > 0) { pg[i] = g[i] + l1Cost; } else { if (g[i] < -l1Cost) { // right partial derivative pg[i] = g[i] + l1Cost; } else if (g[i] > l1Cost) { // left partial derivative pg[i] = g[i] - l1Cost; } else { pg[i] = 0; } } } } /** * L-BFGS two-loop recursion (see Nocedal & Wright 2006, Numerical Optimization, p. 178) */ private void computeDirection(double[] direction) { // Implemented two-loop Hessian update method. int k = updateInfo.kCounter; double[] rho = updateInfo.rho; double[] alpha = updateInfo.alpha; // just to avoid recreating alpha double[][] S = updateInfo.S; double[][] Y = updateInfo.Y; // First loop for (int i = k - 1; i >= 0; i--) { alpha[i] = rho[i] * ArrayMath.innerProduct(S[i], direction); for (int j = 0; j < dimension; j++) { direction[j] = direction[j] - alpha[i] * Y[i][j]; } } // Second loop for (int i = 0; i < k; i++) { double beta = rho[i] * ArrayMath.innerProduct(Y[i], direction); for (int j = 0; j < dimension; j++) { direction[j] = direction[j] + S[i][j] * (alpha[i] - beta); } } for (int i = 0; i < dimension; i++) { direction[i] = -direction[i]; } } private boolean isConverged(LineSearchResult lsr) { // Check function's change rate if (lsr.getFuncChangeRate() < CONVERGE_TOLERANCE) { if (verbose) display("Function change rate is smaller than the threshold " + CONVERGE_TOLERANCE + ".\nTraining will stop.\n\n"); return true; } // Check gradient's norm using the criteria: ||g(x)|| / max(1, ||x||) < threshold double xNorm = StrictMath.max(1, ArrayMath.l2norm(lsr.getNextPoint())); double gradNorm = l1Cost > 0 ? ArrayMath.l2norm(lsr.getPseudoGradAtNext()) : ArrayMath.l2norm(lsr.getGradAtNext()); if (gradNorm / xNorm < REL_GRAD_NORM_TOL) { if (verbose) display("Relative L2-norm of the gradient is smaller than the threshold " + REL_GRAD_NORM_TOL + ".\nTraining will stop.\n\n"); return true; } // Check step size if (lsr.getStepSize() < MIN_STEP_SIZE) { if (verbose) display("Step size is smaller than the minimum step size " + MIN_STEP_SIZE + ".\nTraining will stop.\n\n"); return true; } // Check number of function evaluations if (lsr.getFctEvalCount() > this.maxFctEval) { if (verbose) display("Maximum number of function evaluations has exceeded the threshold " + this.maxFctEval + ".\nTraining will stop.\n\n"); return true; } return false; } /** * Shorthand for System.out.print */ private void display(String s) { System.out.print(s); } /** * Class to store vectors for Hessian approximation update. */ private class UpdateInfo { private double[][] S; private double[][] Y; private double[] rho; private double[] alpha; private int m; private int kCounter; // Constructor UpdateInfo(int numCorrection, int dimension) { this.m = numCorrection; this.kCounter = 0; S = new double[this.m][dimension]; Y = new double[this.m][dimension]; rho = new double[this.m]; alpha = new double[this.m]; } public void update(LineSearchResult lsr) { double[] currPoint = lsr.getCurrPoint(); double[] gradAtCurr = lsr.getGradAtCurr(); double[] nextPoint = lsr.getNextPoint(); double[] gradAtNext = lsr.getGradAtNext(); // Inner product of S_k and Y_k double SYk = 0.0; // Add new ones. if (kCounter < m) { for (int j = 0; j < dimension; j++) { S[kCounter][j] = nextPoint[j] - currPoint[j]; Y[kCounter][j] = gradAtNext[j] - gradAtCurr[j]; SYk += S[kCounter][j] * Y[kCounter][j]; } rho[kCounter] = 1.0 / SYk; } else { // Discard oldest vectors and add new ones. for (int i = 0; i < m - 1; i++) { S[i] = S[i + 1]; Y[i] = Y[i + 1]; rho[i] = rho[i + 1]; } for (int j = 0; j < dimension; j++) { S[m - 1][j] = nextPoint[j] - currPoint[j]; Y[m - 1][j] = gradAtNext[j] - gradAtCurr[j]; SYk += S[m - 1][j] * Y[m - 1][j]; } rho[m - 1] = 1.0 / SYk; } if (kCounter < m) kCounter++; } } /** * L2-regularized objective function */ public static class L2RegFunction implements Function { private Function f; private double l2Cost; public L2RegFunction(Function f, double l2Cost) { this.f = f; this.l2Cost = l2Cost; } @Override public int getDimension() { return f.getDimension(); } @Override public double valueAt(double[] x) { checkDimension(x); double value = f.valueAt(x); if (l2Cost > 0) { value += l2Cost * ArrayMath.innerProduct(x, x); } return value; } @Override public double[] gradientAt(double[] x) { checkDimension(x); double[] gradient = f.gradientAt(x); if (l2Cost > 0) { for (int i = 0; i < x.length; i++) { gradient[i] += 2 * l2Cost * x[i]; } } return gradient; } private void checkDimension(double[] x) { if (x.length != getDimension()) throw new IllegalArgumentException( "x's dimension is not the same as function's dimension"); } } /** * Evaluate quality of training parameters. For example, * it can be used to report model's training accuracy when * we train a Maximum Entropy classifier. */ public interface Evaluator { /** * Measure quality of the training parameters * @param parameters * @return evaluated result */ double evaluate(double[] parameters); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000157 14135770370 032700 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/QNModel.jav0100664 0001750 0001750 00000010067 14135770370 034032 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Context; public class QNModel extends AbstractModel { public QNModel(Context[] params, String[] predLabels, String[] outcomeNames) { super(params, predLabels, outcomeNames); this.modelType = ModelType.MaxentQn; } public int getNumOutcomes() { return this.outcomeNames.length; } private Context getPredIndex(String predicate) { return pmap.get(predicate); } public double[] eval(String[] context) { return eval(context, new double[evalParams.getNumOutcomes()]); } public double[] eval(String[] context, double[] probs) { return eval(context, null, probs); } public double[] eval(String[] context, float[] values) { return eval(context, values, new double[evalParams.getNumOutcomes()]); } /** * Model evaluation which should be used during inference. * @param context * The predicates which have been observed at the present * decision point. * @param values * Weights of the predicates which have been observed at * the present decision point. * @param probs * Probability for outcomes. * @return Normalized probabilities for the outcomes given the context. */ private double[] eval(String[] context, float[] values, double[] probs) { for (int ci = 0; ci < context.length; ci++) { Context pred = getPredIndex(context[ci]); if (pred != null) { double predValue = 1.0; if (values != null) predValue = values[ci]; double[] parameters = pred.getParameters(); int[] outcomes = pred.getOutcomes(); for (int i = 0; i < outcomes.length; i++) { int oi = outcomes[i]; probs[oi] += predValue * parameters[i]; } } } double logSumExp = ArrayMath.logSumOfExps(probs); for (int oi = 0; oi < outcomeNames.length; oi++) { probs[oi] = StrictMath.exp(probs[oi] - logSumExp); } return probs; } /** * Model evaluation which should be used during training to report model accuracy. * @param context * Indices of the predicates which have been observed at the present * decision point. * @param values * Weights of the predicates which have been observed at * the present decision point. * @param probs * Probability for outcomes * @param nOutcomes * Number of outcomes * @param nPredLabels * Number of unique predicates * @param parameters * Model parameters * @return Normalized probabilities for the outcomes given the context. */ static double[] eval(int[] context, float[] values, double[] probs, int nOutcomes, int nPredLabels, double[] parameters) { for (int i = 0; i < context.length; i++) { int predIdx = context[i]; double predValue = values != null ? values[i] : 1.0; for (int oi = 0; oi < nOutcomes; oi++) { probs[oi] += predValue * parameters[oi * nPredLabels + predIdx]; } } double logSumExp = ArrayMath.logSumOfExps(probs); for (int oi = 0; oi < nOutcomes; oi++) { probs[oi] = StrictMath.exp(probs[oi] - logSumExp); } return probs; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000161 14135770370 032673 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/ArrayMath.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/ArrayMath.j0100664 0001750 0001750 00000002415 14135770370 034072 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; /** * Utility class for simple vector arithmetic. */ @Deprecated public class ArrayMath extends opennlp.tools.ml.ArrayMath { /** * Find index of maximum element in the vector x * @param x input vector * @return index of the maximum element. Index of the first * maximum element is returned if multiple maximums are found. */ public static int maxIdx(double[] x) { return opennlp.tools.ml.ArrayMath.argmax(x); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000170 14135770370 032673 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihood.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikel0100664 0001750 0001750 00000011365 14135770370 034112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import java.util.Arrays; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.OnePassRealValueDataIndexer; /** * Evaluate negative log-likelihood and its gradient from DataIndexer. */ public class NegLogLikelihood implements Function { protected int dimension; protected int numOutcomes; protected int numFeatures; protected int numContexts; // Information from data index protected final float[][] values; protected final int[][] contexts; protected final int[] outcomeList; protected final int[] numTimesEventsSeen; // For calculating negLogLikelihood and gradient protected double[] tempSums; protected double[] expectation; protected double[] gradient; public NegLogLikelihood(DataIndexer indexer) { // Get data from indexer. if (indexer instanceof OnePassRealValueDataIndexer) { this.values = indexer.getValues(); } else { this.values = null; } this.contexts = indexer.getContexts(); this.outcomeList = indexer.getOutcomeList(); this.numTimesEventsSeen = indexer.getNumTimesEventsSeen(); this.numOutcomes = indexer.getOutcomeLabels().length; this.numFeatures = indexer.getPredLabels().length; this.numContexts = this.contexts.length; this.dimension = numOutcomes * numFeatures; this.expectation = new double[numOutcomes]; this.tempSums = new double[numOutcomes]; this.gradient = new double[dimension]; } public int getDimension() { return this.dimension; } public double[] getInitialPoint() { return new double[dimension]; } /** * Negative log-likelihood */ public double valueAt(double[] x) { if (x.length != dimension) throw new IllegalArgumentException( "x is invalid, its dimension is not equal to domain dimension."); int ci, oi, ai, vectorIndex, outcome; double predValue, logSumOfExps; double negLogLikelihood = 0; for (ci = 0; ci < numContexts; ci++) { for (oi = 0; oi < numOutcomes; oi++) { tempSums[oi] = 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; tempSums[oi] += predValue * x[vectorIndex]; } } logSumOfExps = ArrayMath.logSumOfExps(tempSums); outcome = outcomeList[ci]; negLogLikelihood -= (tempSums[outcome] - logSumOfExps) * numTimesEventsSeen[ci]; } return negLogLikelihood; } /** * Compute gradient */ public double[] gradientAt(double[] x) { if (x.length != dimension) throw new IllegalArgumentException( "x is invalid, its dimension is not equal to the function."); int ci, oi, ai, vectorIndex; double predValue, logSumOfExps; int empirical; // Reset gradient Arrays.fill(gradient, 0); for (ci = 0; ci < numContexts; ci++) { for (oi = 0; oi < numOutcomes; oi++) { expectation[oi] = 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; expectation[oi] += predValue * x[vectorIndex]; } } logSumOfExps = ArrayMath.logSumOfExps(expectation); for (oi = 0; oi < numOutcomes; oi++) { expectation[oi] = StrictMath.exp(expectation[oi] - logSumOfExps); } for (oi = 0; oi < numOutcomes; oi++) { empirical = outcomeList[ci] == oi ? 1 : 0; for (ai = 0; ai < contexts[ci].length; ai++) { vectorIndex = indexOf(oi, contexts[ci][ai]); predValue = values != null ? values[ci][ai] : 1.0; gradient[vectorIndex] += predValue * (expectation[oi] - empirical) * numTimesEventsSeen[ci]; } } } return gradient; } protected int indexOf(int outcomeId, int featureId) { return outcomeId * numFeatures + featureId; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_quasine0100644 0000000 0000000 00000000162 14135770370 032674 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/LineSearch.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/quasinewton/LineSearch.0100664 0001750 0001750 00000024164 14135770370 034052 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.quasinewton; import opennlp.tools.ml.ArrayMath; /** * Class that performs line search to find minimum */ public class LineSearch { private static final double C = 0.0001; private static final double RHO = 0.5; // decrease of step size (must be from 0 to 1) /** * Backtracking line search (see Nocedal & Wright 2006, Numerical Optimization, p. 37) */ public static void doLineSearch(Function function, double[] direction, LineSearchResult lsr, double initialStepSize) { double stepSize = initialStepSize; int currFctEvalCount = lsr.getFctEvalCount(); double[] x = lsr.getNextPoint(); double[] gradAtX = lsr.getGradAtNext(); double valueAtX = lsr.getValueAtNext(); int dimension = x.length; // Retrieve current points and gradient for array reuse purpose double[] nextPoint = lsr.getCurrPoint(); double[] gradAtNextPoint = lsr.getGradAtCurr(); double valueAtNextPoint; double dirGradientAtX = ArrayMath.innerProduct(direction, gradAtX); // To avoid recomputing in the loop double cachedProd = C * dirGradientAtX; while (true) { // Get next point for (int i = 0; i < dimension; i++) { nextPoint[i] = x[i] + direction[i] * stepSize; } // New value valueAtNextPoint = function.valueAt(nextPoint); currFctEvalCount++; // Check Armijo condition if (valueAtNextPoint <= valueAtX + cachedProd * stepSize) break; // Shrink step size stepSize *= RHO; } // Compute and save gradient at the new point System.arraycopy(function.gradientAt(nextPoint), 0, gradAtNextPoint, 0, gradAtNextPoint.length); // Update line search result lsr.setAll(stepSize, valueAtX, valueAtNextPoint, gradAtX, gradAtNextPoint, x, nextPoint, currFctEvalCount); } /** * Constrained line search (see section 3.2 in the paper "Scalable Training * of L1-Regularized Log-Linear Models", Andrew et al. 2007) */ public static void doConstrainedLineSearch(Function function, double[] direction, LineSearchResult lsr, double l1Cost, double initialStepSize) { double stepSize = initialStepSize; int currFctEvalCount = lsr.getFctEvalCount(); double[] x = lsr.getNextPoint(); double[] signX = lsr.getSignVector(); // existing sign vector double[] gradAtX = lsr.getGradAtNext(); double[] pseudoGradAtX = lsr.getPseudoGradAtNext(); double valueAtX = lsr.getValueAtNext(); int dimension = x.length; // Retrieve current points and gradient for array reuse purpose double[] nextPoint = lsr.getCurrPoint(); double[] gradAtNextPoint = lsr.getGradAtCurr(); double valueAtNextPoint; double dirGradientAtX; // New sign vector for (int i = 0; i < dimension; i++) { signX[i] = x[i] == 0 ? -pseudoGradAtX[i] : x[i]; } while (true) { // Get next point for (int i = 0; i < dimension; i++) { nextPoint[i] = x[i] + direction[i] * stepSize; } // Projection for (int i = 0; i < dimension; i++) { if (nextPoint[i] * signX[i] <= 0) nextPoint[i] = 0; } // New value valueAtNextPoint = function.valueAt(nextPoint) + l1Cost * ArrayMath.l1norm(nextPoint); currFctEvalCount++; dirGradientAtX = 0; for (int i = 0; i < dimension; i++) { dirGradientAtX += (nextPoint[i] - x[i]) * pseudoGradAtX[i]; } // Check the sufficient decrease condition if (valueAtNextPoint <= valueAtX + C * dirGradientAtX) break; // Shrink step size stepSize *= RHO; } // Compute and save gradient at the new point System.arraycopy(function.gradientAt(nextPoint), 0, gradAtNextPoint, 0, gradAtNextPoint.length); // Update line search result lsr.setAll(stepSize, valueAtX, valueAtNextPoint, gradAtX, gradAtNextPoint, pseudoGradAtX, x, nextPoint, signX, currFctEvalCount); } // ------------------------------------------------------------------------------------- // /** * Class to store lineSearch result */ public static class LineSearchResult { private int fctEvalCount; private double stepSize; private double valueAtCurr; private double valueAtNext; private double[] gradAtCurr; private double[] gradAtNext; private double[] pseudoGradAtNext; private double[] currPoint; private double[] nextPoint; private double[] signVector; /** * Constructor */ public LineSearchResult( double stepSize, double valueAtCurr, double valueAtNext, double[] gradAtCurr, double[] gradAtNext, double[] currPoint, double[] nextPoint, int fctEvalCount) { setAll(stepSize, valueAtCurr, valueAtNext, gradAtCurr, gradAtNext, currPoint, nextPoint, fctEvalCount); } /** * Constructor with sign vector */ public LineSearchResult( double stepSize, double valueAtCurr, double valueAtNext, double[] gradAtCurr, double[] gradAtNext, double[] pseudoGradAtNext, double[] currPoint, double[] nextPoint, double[] signVector, int fctEvalCount) { setAll(stepSize, valueAtCurr, valueAtNext, gradAtCurr, gradAtNext, pseudoGradAtNext, currPoint, nextPoint, signVector, fctEvalCount); } /** * Update line search elements */ public void setAll( double stepSize, double valueAtCurr, double valueAtNext, double[] gradAtCurr, double[] gradAtNext, double[] currPoint, double[] nextPoint, int fctEvalCount) { setAll(stepSize, valueAtCurr, valueAtNext, gradAtCurr, gradAtNext, null, currPoint, nextPoint, null, fctEvalCount); } /** * Update line search elements */ public void setAll( double stepSize, double valueAtCurr, double valueAtNext, double[] gradAtCurr, double[] gradAtNext, double[] pseudoGradAtNext, double[] currPoint, double[] nextPoint, double[] signVector, int fctEvalCount) { this.stepSize = stepSize; this.valueAtCurr = valueAtCurr; this.valueAtNext = valueAtNext; this.gradAtCurr = gradAtCurr; this.gradAtNext = gradAtNext; this.pseudoGradAtNext = pseudoGradAtNext; this.currPoint = currPoint; this.nextPoint = nextPoint; this.signVector = signVector; this.fctEvalCount = fctEvalCount; } public double getFuncChangeRate() { return (valueAtCurr - valueAtNext) / valueAtCurr; } public double getStepSize() { return stepSize; } public void setStepSize(double stepSize) { this.stepSize = stepSize; } public double getValueAtCurr() { return valueAtCurr; } public void setValueAtCurr(double valueAtCurr) { this.valueAtCurr = valueAtCurr; } public double getValueAtNext() { return valueAtNext; } public void setValueAtNext(double valueAtNext) { this.valueAtNext = valueAtNext; } public double[] getGradAtCurr() { return gradAtCurr; } public void setGradAtCurr(double[] gradAtCurr) { this.gradAtCurr = gradAtCurr; } public double[] getGradAtNext() { return gradAtNext; } public void setGradAtNext(double[] gradAtNext) { this.gradAtNext = gradAtNext; } public double[] getPseudoGradAtNext() { return pseudoGradAtNext; } public void setPseudoGradAtNext(double[] pseudoGradAtNext) { this.pseudoGradAtNext = pseudoGradAtNext; } public double[] getCurrPoint() { return currPoint; } public void setCurrPoint(double[] currPoint) { this.currPoint = currPoint; } public double[] getNextPoint() { return nextPoint; } public void setNextPoint(double[] nextPoint) { this.nextPoint = nextPoint; } public double[] getSignVector() { return signVector; } public void setSignVector(double[] signVector) { this.signVector = signVector; } public int getFctEvalCount() { return fctEvalCount; } public void setFctEvalCount(int fctEvalCount) { this.fctEvalCount = fctEvalCount; } /** * Initial linear search object. */ public static LineSearchResult getInitialObject( double valueAtX, double[] gradAtX, double[] x) { return getInitialObject(valueAtX, gradAtX, null, x, null, 0); } /** * Initial linear search object for L1-regularization. */ public static LineSearchResult getInitialObjectForL1( double valueAtX, double[] gradAtX, double[] pseudoGradAtX, double[] x) { return getInitialObject(valueAtX, gradAtX, pseudoGradAtX, x, new double[x.length], 0); } public static LineSearchResult getInitialObject( double valueAtX, double[] gradAtX, double[] pseudoGradAtX, double[] x, double[] signX, int fctEvalCount) { return new LineSearchResult(0.0, 0.0, valueAtX, new double[x.length], gradAtX, pseudoGradAtX, new double[x.length], x, signX, fctEvalCount); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_BasicCo0100644 0000000 0000000 00000000161 14135770370 032531 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/BasicContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/BasicContextGenerator.j0100664 0001750 0001750 00000002634 14135770370 034065 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; /** * Generate contexts for maxent decisions, assuming that the input * given to the getContext() method is a String containing contextual * predicates separated by spaces. * e.g: *

* cp_1 cp_2 ... cp_n *

*/ public class BasicContextGenerator implements ContextGenerator { private String separator = " "; public BasicContextGenerator() {} public BasicContextGenerator(String sep) { separator = sep; } /** * Builds up the list of contextual predicates given a String. */ public String[] getContext(String o) { return o.split(separator); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/QNModelReader.java0100664 0001750 0001750 00000003441 14135770370 033346 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.File; import java.io.IOException; import opennlp.tools.ml.maxent.quasinewton.QNModel; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.DataReader; public class QNModelReader extends GISModelReader { public QNModelReader(DataReader dataReader) { super(dataReader); } public QNModelReader(File file) throws IOException { super(file); } @Override public void checkModelType() throws IOException { String modelType = readUTF(); if (!modelType.equals("QN")) System.out.println("Error: attempting to load a " + modelType + " model as a MAXENT_QN model." + " You should expect problems."); } public QNModel constructModel() throws IOException { String[] outcomeLabels = getOutcomes(); int[][] outcomePatterns = getOutcomePatterns(); String[] predLabels = getPredicates(); Context[] params = getParameters(outcomePatterns); return new QNModel(params, predLabels, outcomeLabels); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/GISModelWriter.java0100664 0001750 0001750 00000012166 14135770370 033530 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelWriter; import opennlp.tools.ml.model.ComparablePredicate; import opennlp.tools.ml.model.Context; /** * Abstract parent class for GISModel writers. It provides the persist method * which takes care of the structure of a stored document, and requires an * extending class to define precisely how the data should be stored. */ public abstract class GISModelWriter extends AbstractModelWriter { protected Context[] PARAMS; protected String[] OUTCOME_LABELS; protected String[] PRED_LABELS; public GISModelWriter(AbstractModel model) { Object[] data = model.getDataStructures(); @SuppressWarnings("unchecked") Map pmap = (Map) data[1]; OUTCOME_LABELS = (String[]) data[2]; PARAMS = new Context[pmap.size()]; PRED_LABELS = new String[pmap.size()]; int i = 0; for (Map.Entry pred : pmap.entrySet()) { PRED_LABELS[i] = pred.getKey(); PARAMS[i] = pred.getValue(); i++; } } /** * Writes the model to disk, using the writeX() methods provided * by extending classes. * *

* If you wish to create a GISModelWriter which uses a different structure, it * will be necessary to override the persist method in addition to * implementing the writeX() methods. */ public void persist() throws IOException { // the type of model (GIS) writeUTF("GIS"); // the value of the correction constant (not used anymore) writeInt(1); // the value of the correction params (not used anymore) writeDouble(1); // the mapping from outcomes to their integer indexes writeInt(OUTCOME_LABELS.length); for (String OUTCOME_LABEL : OUTCOME_LABELS) { writeUTF(OUTCOME_LABEL); } // the mapping from predicates to the outcomes they contributed to. // The sorting is done so that we actually can write this out more // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); List> compressed = compressOutcomes(sorted); writeInt(compressed.size()); for (List aCompressed : compressed) { writeUTF(aCompressed.size() + ((List) aCompressed).get(0).toString()); } // the mapping from predicate names to their integer indexes writeInt(PARAMS.length); for (ComparablePredicate aSorted : sorted) { writeUTF(aSorted.name); } // write out the parameters for (ComparablePredicate aSorted : sorted) { for (int j = 0; j < aSorted.params.length; j++) { writeDouble(aSorted.params[j]); } } close(); } protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; } protected List> compressOutcomes(ComparablePredicate[] sorted) { List> outcomePatterns = new ArrayList<>(); if (sorted.length > 0) { ComparablePredicate cp = sorted[0]; List newGroup = new ArrayList<>(); for (int i = 0; i < sorted.length; i++) { if (cp.compareTo(sorted[i]) == 0) { newGroup.add(sorted[i]); } else { cp = sorted[i]; outcomePatterns.add(newGroup); newGroup = new ArrayList<>(); newGroup.add(sorted[i]); } } outcomePatterns.add(newGroup); } return outcomePatterns; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/GISModelReader.java0100664 0001750 0001750 00000006024 14135770370 033452 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.File; import java.io.IOException; import opennlp.tools.ml.maxent.GISModel; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.AbstractModelReader; import opennlp.tools.ml.model.Context; import opennlp.tools.ml.model.DataReader; /** * Abstract parent class for readers of GISModels. */ public class GISModelReader extends AbstractModelReader { public GISModelReader(File file) throws IOException { super(file); } public GISModelReader(DataReader dataReader) { super(dataReader); } /** * Retrieve a model from disk. It assumes that models are saved in the * following sequence: * *
* GIS (model type identifier)
* 1. # of parameters (int)
* 2. the correction constant (int)
* 3. the correction constant parameter (double)
* 4. # of outcomes (int)
* * list of outcome names (String)
* 5. # of different types of outcome patterns (int)
* * list of (int int[])
* [# of predicates for which outcome pattern is true] [outcome pattern]
* 6. # of predicates (int)
* * list of predicate names (String) * *

* If you are creating a reader for a format which won't work with this * (perhaps a database or xml file), override this method and ignore the other * methods provided in this abstract class. * * @return The GISModel stored in the format and location specified to this * GISModelReader (usually via its the constructor). */ public AbstractModel constructModel() throws IOException { // read correction constant (not used anymore) readInt(); // read correction params (not used anymore) readDouble(); String[] outcomeLabels = getOutcomes(); int[][] outcomePatterns = getOutcomePatterns(); String[] predLabels = getPredicates(); Context[] params = getParameters(outcomePatterns); return new GISModel(params, predLabels, outcomeLabels); } public void checkModelType() throws java.io.IOException { String modelType = readUTF(); if (!modelType.equals("GIS")) System.out.println("Error: attempting to load a " + modelType + " model as a GIS model." + " You should expect problems."); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_io_Bina0100644 0000000 0000000 00000000162 14135770370 032567 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelReader.0100664 0001750 0001750 00000002512 14135770370 033647 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.DataInputStream; import opennlp.tools.ml.model.BinaryFileDataReader; /** * A reader for quasi-newton models stored in binary format. */ public class BinaryQNModelReader extends QNModelReader { /** * Constructor which directly instantiates the DataInputStream containing the * model contents. * * @param dis * The DataInputStream containing the model information. */ public BinaryQNModelReader(DataInputStream dis) { super(new BinaryFileDataReader(dis)); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_io_Bina0100644 0000000 0000000 00000000163 14135770370 032570 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryGISModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryGISModelWriter0100664 0001750 0001750 00000005147 14135770370 033756 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.model.AbstractModel; /** * Model writer that saves models in binary format. */ public class BinaryGISModelWriter extends GISModelWriter { private DataOutputStream output; /** * Constructor which takes a GISModel and a File and prepares itself to write * the model to that file. Detects whether the file is gzipped or not based on * whether the suffix contains ".gz". * * @param model * The GISModel which is to be persisted. * @param f * The File in which the model is to be persisted. */ public BinaryGISModelWriter(AbstractModel model, File f) throws IOException { super(model); if (f.getName().endsWith(".gz")) { output = new DataOutputStream(new GZIPOutputStream( new FileOutputStream(f))); } else { output = new DataOutputStream(new FileOutputStream(f)); } } /** * Constructor which takes a GISModel and a DataOutputStream and prepares * itself to write the model to that stream. * * @param model * The GISModel which is to be persisted. * @param dos * The stream which will be used to persist the model. */ public BinaryGISModelWriter(AbstractModel model, DataOutputStream dos) { super(model); output = dos; } public void writeUTF(String s) throws java.io.IOException { output.writeUTF(s); } public void writeInt(int i) throws java.io.IOException { output.writeInt(i); } public void writeDouble(double d) throws java.io.IOException { output.writeDouble(d); } public void close() throws java.io.IOException { output.flush(); output.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_io_Bina0100644 0000000 0000000 00000000162 14135770370 032567 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.0100664 0001750 0001750 00000004775 14135770370 033736 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.model.AbstractModel; public class BinaryQNModelWriter extends QNModelWriter { protected DataOutputStream output; /** * Constructor which takes a GISModel and a File and prepares itself to write * the model to that file. Detects whether the file is gzipped or not based on * whether the suffix contains ".gz". * * @param model * The GISModel which is to be persisted. * @param f * The File in which the model is to be persisted. */ public BinaryQNModelWriter(AbstractModel model, File f) throws IOException { super(model); if (f.getName().endsWith(".gz")) { output = new DataOutputStream(new GZIPOutputStream(new FileOutputStream(f))); } else { output = new DataOutputStream(new FileOutputStream(f)); } } /** * Constructor which takes a GISModel and a DataOutputStream and prepares * itself to write the model to that stream. * * @param model * The GISModel which is to be persisted. * @param dos * The stream which will be used to persist the model. */ public BinaryQNModelWriter(AbstractModel model, DataOutputStream dos) { super(model); output = dos; } public void writeUTF(String s) throws IOException { output.writeUTF(s); } public void writeInt(int i) throws IOException { output.writeInt(i); } public void writeDouble(double d) throws IOException { output.writeDouble(d); } public void close() throws IOException { output.flush(); output.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_io_Bina0100644 0000000 0000000 00000000163 14135770370 032570 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryGISModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryGISModelReader0100664 0001750 0001750 00000002504 14135770370 033676 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.DataInputStream; import opennlp.tools.ml.model.BinaryFileDataReader; /** * A reader for GIS models stored in binary format. */ public class BinaryGISModelReader extends GISModelReader { /** * Constructor which directly instantiates the DataInputStream containing the * model contents. * * @param dis * The DataInputStream containing the model information. */ public BinaryGISModelReader(DataInputStream dis) { super(new BinaryFileDataReader(dis)); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/package.html0100664 0001750 0001750 00000002032 14135770370 032335 0ustar00jeffjeff0000000 0000000 Provides the I/O functionality of the maxent package including reading and writing models in several formats. apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/QNModelWriter.java0100664 0001750 0001750 00000004352 14135770370 033422 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent.io; import java.io.IOException; import java.util.List; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.ComparablePredicate; public abstract class QNModelWriter extends GISModelWriter { public QNModelWriter(AbstractModel model) { super(model); } @Override public void persist() throws IOException { // the type of model (QN) writeUTF("QN"); // the mapping from outcomes to their integer indexes writeInt(OUTCOME_LABELS.length); for (int i = 0; i < OUTCOME_LABELS.length; i++) writeUTF(OUTCOME_LABELS[i]); // the mapping from predicates to the outcomes they contributed to. // The sorting is done so that we actually can write this out more // compactly than as the entire list. ComparablePredicate[] sorted = sortValues(); List> compressed = compressOutcomes(sorted); writeInt(compressed.size()); for (int i = 0; i < compressed.size(); i++) { List a = compressed.get(i); writeUTF(a.size() + a.get(0).toString()); } // the mapping from predicate names to their integer indexes writeInt(PARAMS.length); for (int i = 0; i < sorted.length; i++) writeUTF(sorted[i].name); // write out the parameters for (int i = 0; i < sorted.length; i++) for (int j = 0; j < sorted[i].params.length; j++) writeDouble(sorted[i].params[j]); close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISFormat0100664 0001750 0001750 00000002351 14135770370 031167 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Format for the GIS maxent info (.mei) files. GIS (model type identifier) 1. # of parameters (int) 2. the correction constant (int) 3. the correction constant parameter (double) 4. # of outcomes (int) * list of outcome names (String) 5. # of different types of outcome patterns (int) * list of (int int[]) [# of predicates for which outcome pattern is true] [outcome pattern] 6. # of predicates (int) * list of predicate names (String) apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/DataStream.java0100664 0001750 0001750 00000002735 14135770370 032347 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; /** * A interface for objects which can deliver a stream of training data to be * supplied to an EventStream. It is not necessary to use a DataStream in a * Maxent application, but it can be used to support a wider variety of formats * in which your training data can be held. */ public interface DataStream { /** * Returns the next slice of data held in this DataStream. * * @return the Object representing the data which is next in this DataStream */ Object nextToken(); /** * Test whether there are any Events remaining in this EventStream. * * @return true if this DataStream has more data tokens */ boolean hasNext(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/package.html0100664 0001750 0001750 00000002041 14135770370 031726 0ustar00jeffjeff0000000 0000000 Provides main functionality of the maxent package including data structures and algorithms for parameter estimation. ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_maxent_RealBas0100644 0000000 0000000 00000000160 14135770370 032536 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/RealBasicEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/RealBasicEventStream.ja0100664 0001750 0001750 00000003661 14135770370 033775 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.RealValueFileEventStream; import opennlp.tools.util.ObjectStream; public class RealBasicEventStream implements ObjectStream { ContextGenerator cg = new BasicContextGenerator(); private ObjectStream ds; public RealBasicEventStream(ObjectStream ds) { this.ds = ds; } public Event read() throws IOException { String eventString = ds.read(); if (eventString != null) { return createEvent(eventString); } return null; } private Event createEvent(String obs) { int lastSpace = obs.lastIndexOf(' '); if (lastSpace == -1) return null; else { String[] contexts = obs.substring(0,lastSpace).split("\\s+"); float[] values = RealValueFileEventStream.parseContexts(contexts); return new Event(obs.substring(lastSpace + 1),contexts,values); } } @Override public void reset() throws IOException, UnsupportedOperationException { ds.reset(); } @Override public void close() throws IOException { ds.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/AllEnglishAffixes.txt0100664 0001750 0001750 00000004352 14135770370 033545 0ustar00jeffjeff0000000 0000000 -'s -able -acea -aceae -aceous -ad -ade -aemia -age -agogue -al -ales -algia -amine -an -ana -ance -ancy -and -androus -andry -ane -ant -ar -arch -archy -ard -arian -arium -art -ary -ase -asis -aster -ate -atic -ation -ative -ator -atory -bashing -biosis -blast -bodied -branch -cade -carp -carpic -carpous -cele -cene -centric -cephalic -cephalus -chore -chrome -chroous -cide -clase -cle -cline -colous -cracy -crat -cule -cy -cyst -cyte -decker -derm -diene -dom -drome -dromous -ean -ectomy -ed -ee -eer -eme -emia -en -ence -enchyma -ency -ene -ent -eous -er -ery -es -escent -ese -esque -ess -est -et -eth -ette -ey -facient -favoured -featured -fer -ferous -fic -fid -florous -fold -footed -form -free -fuge -ful -fy -gaited -gamy -gen -gene -genesis -genic -genous -geny -gerous -gnathous -gnosis -gon -gonium -gony -grade -gram -graph -grapher -graphy -gynous -haemia -haired -handed -hearted -hedron -hemia -hood -i -i- -ia -ial -ian -iana -iasis -iatrics -iatry -ible -ic -ical -ician -ics -id -idae -ide -ie -ier -ify -ile -in -inae -ine -ing -ion -ious -ise -ish -ism -ist -istic -ite -itis -itol -ity -ium -ive -ize -ji -kin -lalia -lashed -latry -lepsy -less -let -like -ling -lipped -lite -lith -lithic -lived -log -logue -logy -ly -lysis -lyte -lytic -mancy -mania -mantic -mas -masted -ment -mer -mere -merous -meter -metry -mo -morph -most -motored -mycete -n't -nasty -naut -ness -nik -nomy -o -o- -ock -ode -odont -oid -oidea -ol -ole -oma -ome -on -one -onym -opia -opsis -or -ory -ose -osis -otic -our -ous -parous -path -pathy -ped -pede -person -petal -phage -phagy -phane -phany -phasia -phile -philia -philous -phobe -phobia -phone -phony -phore -phoresis -phyll -phyllous -phyte -plasia -plasm -plast -plastic -plasty -plegia -ploid -pod -podium -podous -poiesis -pounder -prone -proof -pterous -rhoea -rigged -rrhagia -rrhoea -ry -s -s' -saur -scape -scope -scopy -sect -sepalous -shaped -ship -sided -some -sophy -sperm -sphere -sporous -st -stat -ster -stichous -stome -stomous -stomy -stress -tactic -taxis -taxy -termer -th -thermy -thymia -tion -to-be -tome -tomy -trix -tron -trope -trophy -tropic -tropism -tropous -tude -ty -type -ule -ulent -ure -uret -urgy -uria -ville -visaged -vorous -ward -wards -ways -wise -witted -y -yl -yne -zoa -zoon apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java0100664 0001750 0001750 00000065557 14135770370 032304 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.maxent; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.ArrayMath; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.EvalParameters; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.MutableContext; import opennlp.tools.ml.model.OnePassDataIndexer; import opennlp.tools.ml.model.Prior; import opennlp.tools.ml.model.UniformPrior; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * An implementation of Generalized Iterative Scaling. The reference paper * for this implementation was Adwait Ratnaparkhi's tech report at the * University of Pennsylvania's Institute for Research in Cognitive Science, * and is available at ftp://ftp.cis.upenn.edu/pub/ircs/tr/97-08.ps.Z. *

* The slack parameter used in the above implementation has been removed by default * from the computation and a method for updating with Gaussian smoothing has been * added per Investigating GIS and Smoothing for Maximum Entropy Taggers, Clark and Curran (2002). * http://acl.ldc.upenn.edu/E/E03/E03-1071.pdf * The slack parameter can be used by setting useSlackParameter to true. * Gaussian smoothing can be used by setting useGaussianSmoothing to true. *

* A prior can be used to train models which converge to the distribution which minimizes the * relative entropy between the distribution specified by the empirical constraints of the training * data and the specified prior. By default, the uniform distribution is used as the prior. */ public class GISTrainer extends AbstractEventTrainer { @Deprecated public static final String OLD_LL_THRESHOLD_PARAM = "llthreshold"; public static final String LOG_LIKELIHOOD_THRESHOLD_PARAM = "LLThreshold"; public static final double LOG_LIKELIHOOD_THRESHOLD_DEFAULT = 0.0001; private double llThreshold = 0.0001; /** * Specifies whether unseen context/outcome pairs should be estimated as occur very infrequently. */ private boolean useSimpleSmoothing = false; /** * Specified whether parameter updates should prefer a distribution of parameters which * is gaussian. */ private boolean useGaussianSmoothing = false; private double sigma = 2.0; // If we are using smoothing, this is used as the "number" of // times we want the trainer to imagine that it saw a feature that it // actually didn't see. Defaulted to 0.1. private double _smoothingObservation = 0.1; /** * Number of unique events which occured in the event set. */ private int numUniqueEvents; /** * Number of predicates. */ private int numPreds; /** * Number of outcomes. */ private int numOutcomes; /** * Records the array of predicates seen in each event. */ private int[][] contexts; /** * The value associated with each context. If null then context values are assumes to be 1. */ private float[][] values; /** * List of outcomes for each event i, in context[i]. */ private int[] outcomeList; /** * Records the num of times an event has been seen for each event i, in context[i]. */ private int[] numTimesEventsSeen; /** * Stores the String names of the outcomes. The GIS only tracks outcomes as * ints, and so this array is needed to save the model to disk and thereby * allow users to know what the outcome was in human understandable terms. */ private String[] outcomeLabels; /** * Stores the String names of the predicates. The GIS only tracks predicates * as ints, and so this array is needed to save the model to disk and thereby * allow users to know what the outcome was in human understandable terms. */ private String[] predLabels; /** * Stores the observed expected values of the features based on training data. */ private MutableContext[] observedExpects; /** * Stores the estimated parameter value of each predicate during iteration */ private MutableContext[] params; /** * Stores the expected values of the features based on the current models */ private MutableContext[][] modelExpects; /** * This is the prior distribution that the model uses for training. */ private Prior prior; /** * Initial probability for all outcomes. */ private EvalParameters evalParams; public static final String MAXENT_VALUE = "MAXENT"; /** * If we are using smoothing, this is used as the "number" of times we want * the trainer to imagine that it saw a feature that it actually didn't see. * Defaulted to 0.1. */ private static final String SMOOTHING_PARAM = "Smoothing"; private static final boolean SMOOTHING_DEFAULT = false; private static final String SMOOTHING_OBSERVATION_PARAM = "SmoothingObservation"; private static final double SMOOTHING_OBSERVATION = 0.1; private static final String GAUSSIAN_SMOOTHING_PARAM = "GaussianSmoothing"; private static final boolean GAUSSIAN_SMOOTHING_DEFAULT = false; private static final String GAUSSIAN_SMOOTHING_SIGMA_PARAM = "GaussianSmoothingSigma"; private static final double GAUSSIAN_SMOOTHING_SIGMA_DEFAULT = 2.0; /** * Creates a new GISTrainer instance which does not print * progress messages about training to STDOUT. */ public GISTrainer() { printMessages = false; } @Override public boolean isSortAndMerge() { return true; } @Override public void init(TrainingParameters trainingParameters, Map reportMap) { super.init(trainingParameters, reportMap); // Just in case someone is using "llthreshold" instead of LLThreshold... // this warning can be removed in a future version of OpenNLP. if (trainingParameters.getDoubleParameter(OLD_LL_THRESHOLD_PARAM, -1.) > 0. ) { display("WARNING: the training parameter: " + OLD_LL_THRESHOLD_PARAM + " has been deprecated. Please use " + LOG_LIKELIHOOD_THRESHOLD_DEFAULT + " instead"); // if they didn't supply a value for both llthreshold AND LLThreshold copy it over.. if (trainingParameters.getDoubleParameter(LOG_LIKELIHOOD_THRESHOLD_PARAM, -1.) < 0. ) { trainingParameters.put(LOG_LIKELIHOOD_THRESHOLD_PARAM, trainingParameters.getDoubleParameter(OLD_LL_THRESHOLD_PARAM, LOG_LIKELIHOOD_THRESHOLD_DEFAULT)); } } llThreshold = trainingParameters.getDoubleParameter(LOG_LIKELIHOOD_THRESHOLD_PARAM, LOG_LIKELIHOOD_THRESHOLD_DEFAULT); useSimpleSmoothing = trainingParameters.getBooleanParameter(SMOOTHING_PARAM, SMOOTHING_DEFAULT); if (useSimpleSmoothing) { _smoothingObservation = trainingParameters.getDoubleParameter(SMOOTHING_OBSERVATION_PARAM, SMOOTHING_OBSERVATION); } useGaussianSmoothing = trainingParameters.getBooleanParameter(GAUSSIAN_SMOOTHING_PARAM, GAUSSIAN_SMOOTHING_DEFAULT); if (useGaussianSmoothing) { sigma = trainingParameters.getDoubleParameter( GAUSSIAN_SMOOTHING_SIGMA_PARAM, GAUSSIAN_SMOOTHING_SIGMA_DEFAULT); } if (useSimpleSmoothing && useGaussianSmoothing) throw new RuntimeException("Cannot set both Gaussian smoothing and Simple smoothing"); } @Override public MaxentModel doTrain(DataIndexer indexer) throws IOException { int iterations = getIterations(); int threads = trainingParameters.getIntParameter(TrainingParameters.THREADS_PARAM, 1); AbstractModel model = trainModel(iterations, indexer, threads); return model; } /** * Creates a new GISTrainer instance. * * @param printMessages sends progress messages about training to * STDOUT when true; trains silently otherwise. */ GISTrainer(boolean printMessages) { this.printMessages = printMessages; } /** * Sets whether this trainer will use smoothing while training the model. * This can improve model accuracy, though training will potentially take * longer and use more memory. Model size will also be larger. * * @param smooth true if smoothing is desired, false if not */ public void setSmoothing(boolean smooth) { useSimpleSmoothing = smooth; } /** * Sets whether this trainer will use smoothing while training the model. * This can improve model accuracy, though training will potentially take * longer and use more memory. Model size will also be larger. * * @param timesSeen the "number" of times we want the trainer to imagine * it saw a feature that it actually didn't see */ public void setSmoothingObservation(double timesSeen) { _smoothingObservation = timesSeen; } /** * Sets whether this trainer will use smoothing while training the model. * This can improve model accuracy, though training will potentially take * longer and use more memory. Model size will also be larger. */ public void setGaussianSigma(double sigmaValue) { useGaussianSmoothing = true; sigma = sigmaValue; } /** * Train a model using the GIS algorithm, assuming 100 iterations and no * cutoff. * * @param eventStream * The EventStream holding the data on which this model will be * trained. * @return The newly trained model, which can be used immediately or saved to * disk using an opennlp.tools.ml.maxent.io.GISModelWriter object. */ public GISModel trainModel(ObjectStream eventStream) throws IOException { return trainModel(eventStream, 100, 0); } /** * Trains a GIS model on the event in the specified event stream, using the specified number * of iterations and the specified count cutoff. * * @param eventStream A stream of all events. * @param iterations The number of iterations to use for GIS. * @param cutoff The number of times a feature must occur to be included. * @return A GIS model trained with specified */ public GISModel trainModel(ObjectStream eventStream, int iterations, int cutoff) throws IOException { DataIndexer indexer = new OnePassDataIndexer(); TrainingParameters indexingParameters = new TrainingParameters(); indexingParameters.put(GISTrainer.CUTOFF_PARAM, cutoff); indexingParameters.put(GISTrainer.ITERATIONS_PARAM, iterations); Map reportMap = new HashMap<>(); indexer.init(indexingParameters, reportMap); indexer.index(eventStream); return trainModel(iterations, indexer); } /** * Train a model using the GIS algorithm. * * @param iterations The number of GIS iterations to perform. * @param di The data indexer used to compress events in memory. * @return The newly trained model, which can be used immediately or saved * to disk using an opennlp.tools.ml.maxent.io.GISModelWriter object. */ public GISModel trainModel(int iterations, DataIndexer di) { return trainModel(iterations, di, new UniformPrior(), 1); } /** * Train a model using the GIS algorithm. * * @param iterations The number of GIS iterations to perform. * @param di The data indexer used to compress events in memory. * @param threads * @return The newly trained model, which can be used immediately or saved * to disk using an opennlp.tools.ml.maxent.io.GISModelWriter object. */ public GISModel trainModel(int iterations, DataIndexer di, int threads) { return trainModel(iterations, di, new UniformPrior(), threads); } /** * Train a model using the GIS algorithm. * * @param iterations The number of GIS iterations to perform. * @param di The data indexer used to compress events in memory. * @param modelPrior The prior distribution used to train this model. * @return The newly trained model, which can be used immediately or saved * to disk using an opennlp.tools.ml.maxent.io.GISModelWriter object. */ public GISModel trainModel(int iterations, DataIndexer di, Prior modelPrior, int threads) { if (threads <= 0) { throw new IllegalArgumentException("threads must be at least one or greater but is " + threads + "!"); } modelExpects = new MutableContext[threads][]; /* Incorporate all of the needed info *****/ display("Incorporating indexed data for training... \n"); contexts = di.getContexts(); values = di.getValues(); /* The number of times a predicate occured in the training data. */ int[] predicateCounts = di.getPredCounts(); numTimesEventsSeen = di.getNumTimesEventsSeen(); numUniqueEvents = contexts.length; this.prior = modelPrior; //printTable(contexts); // determine the correction constant and its inverse double correctionConstant = 0; for (int ci = 0; ci < contexts.length; ci++) { if (values == null || values[ci] == null) { if (contexts[ci].length > correctionConstant) { correctionConstant = contexts[ci].length; } } else { float cl = values[ci][0]; for (int vi = 1; vi < values[ci].length; vi++) { cl += values[ci][vi]; } if (cl > correctionConstant) { correctionConstant = cl; } } } display("done.\n"); outcomeLabels = di.getOutcomeLabels(); outcomeList = di.getOutcomeList(); numOutcomes = outcomeLabels.length; predLabels = di.getPredLabels(); prior.setLabels(outcomeLabels, predLabels); numPreds = predLabels.length; display("\tNumber of Event Tokens: " + numUniqueEvents + "\n"); display("\t Number of Outcomes: " + numOutcomes + "\n"); display("\t Number of Predicates: " + numPreds + "\n"); // set up feature arrays float[][] predCount = new float[numPreds][numOutcomes]; for (int ti = 0; ti < numUniqueEvents; ti++) { for (int j = 0; j < contexts[ti].length; j++) { if (values != null && values[ti] != null) { predCount[contexts[ti][j]][outcomeList[ti]] += numTimesEventsSeen[ti] * values[ti][j]; } else { predCount[contexts[ti][j]][outcomeList[ti]] += numTimesEventsSeen[ti]; } } } // A fake "observation" to cover features which are not detected in // the data. The default is to assume that we observed "1/10th" of a // feature during training. final double smoothingObservation = _smoothingObservation; // Get the observed expectations of the features. Strictly speaking, // we should divide the counts by the number of Tokens, but because of // the way the model's expectations are approximated in the // implementation, this is cancelled out when we compute the next // iteration of a parameter, making the extra divisions wasteful. params = new MutableContext[numPreds]; for (int i = 0; i < modelExpects.length; i++) { modelExpects[i] = new MutableContext[numPreds]; } observedExpects = new MutableContext[numPreds]; // The model does need the correction constant and the correction feature. The correction constant // is only needed during training, and the correction feature is not necessary. // For compatibility reasons the model contains form now on a correction constant of 1, // and a correction param 0. evalParams = new EvalParameters(params, numOutcomes); int[] activeOutcomes = new int[numOutcomes]; int[] outcomePattern; int[] allOutcomesPattern = new int[numOutcomes]; for (int oi = 0; oi < numOutcomes; oi++) { allOutcomesPattern[oi] = oi; } int numActiveOutcomes; for (int pi = 0; pi < numPreds; pi++) { numActiveOutcomes = 0; if (useSimpleSmoothing) { numActiveOutcomes = numOutcomes; outcomePattern = allOutcomesPattern; } else { //determine active outcomes for (int oi = 0; oi < numOutcomes; oi++) { if (predCount[pi][oi] > 0) { activeOutcomes[numActiveOutcomes] = oi; numActiveOutcomes++; } } if (numActiveOutcomes == numOutcomes) { outcomePattern = allOutcomesPattern; } else { outcomePattern = new int[numActiveOutcomes]; System.arraycopy(activeOutcomes, 0, outcomePattern, 0, numActiveOutcomes); } } params[pi] = new MutableContext(outcomePattern, new double[numActiveOutcomes]); for (int i = 0; i < modelExpects.length; i++) { modelExpects[i][pi] = new MutableContext(outcomePattern, new double[numActiveOutcomes]); } observedExpects[pi] = new MutableContext(outcomePattern, new double[numActiveOutcomes]); for (int aoi = 0; aoi < numActiveOutcomes; aoi++) { int oi = outcomePattern[aoi]; params[pi].setParameter(aoi, 0.0); for (MutableContext[] modelExpect : modelExpects) { modelExpect[pi].setParameter(aoi, 0.0); } if (predCount[pi][oi] > 0) { observedExpects[pi].setParameter(aoi, predCount[pi][oi]); } else if (useSimpleSmoothing) { observedExpects[pi].setParameter(aoi, smoothingObservation); } } } display("...done.\n"); /* Find the parameters *****/ if (threads == 1) { display("Computing model parameters ...\n"); } else { display("Computing model parameters in " + threads + " threads...\n"); } findParameters(iterations, correctionConstant); // Create and return the model return new GISModel(params, predLabels, outcomeLabels); } /* Estimate and return the model parameters. */ private void findParameters(int iterations, double correctionConstant) { int threads = modelExpects.length; ExecutorService executor = Executors.newFixedThreadPool(threads, runnable -> { Thread thread = new Thread(runnable); thread.setName("opennlp.tools.ml.maxent.ModelExpactationComputeTask.nextIteration()"); thread.setDaemon(true); return thread; }); CompletionService completionService = new ExecutorCompletionService<>(executor); double prevLL = 0.0; double currLL; display("Performing " + iterations + " iterations.\n"); for (int i = 1; i <= iterations; i++) { if (i < 10) { display(" " + i + ": "); } else if (i < 100) { display(" " + i + ": "); } else { display(i + ": "); } currLL = nextIteration(correctionConstant, completionService); if (i > 1) { if (prevLL > currLL) { System.err.println("Model Diverging: loglikelihood decreased"); break; } if (currLL - prevLL < llThreshold) { break; } } prevLL = currLL; } // kill a bunch of these big objects now that we don't need them observedExpects = null; modelExpects = null; numTimesEventsSeen = null; contexts = null; executor.shutdown(); } //modeled on implementation in Zhang Le's maxent kit private double gaussianUpdate(int predicate, int oid, double correctionConstant) { double param = params[predicate].getParameters()[oid]; double x0 = 0.0; double modelValue = modelExpects[0][predicate].getParameters()[oid]; double observedValue = observedExpects[predicate].getParameters()[oid]; for (int i = 0; i < 50; i++) { double tmp = modelValue * StrictMath.exp(correctionConstant * x0); double f = tmp + (param + x0) / sigma - observedValue; double fp = tmp * correctionConstant + 1 / sigma; if (fp == 0) { break; } double x = x0 - f / fp; if (StrictMath.abs(x - x0) < 0.000001) { x0 = x; break; } x0 = x; } return x0; } /* Compute one iteration of GIS and retutn log-likelihood.*/ private double nextIteration(double correctionConstant, CompletionService completionService) { // compute contribution of p(a|b_i) for each feature and the new // correction parameter double loglikelihood = 0.0; int numEvents = 0; int numCorrect = 0; // Each thread gets equal number of tasks, if the number of tasks // is not divisible by the number of threads, the first "leftOver" // threads have one extra task. int numberOfThreads = modelExpects.length; int taskSize = numUniqueEvents / numberOfThreads; int leftOver = numUniqueEvents % numberOfThreads; // submit all tasks to the completion service. for (int i = 0; i < numberOfThreads; i++) { if (i < leftOver) { completionService.submit(new ModelExpectationComputeTask(i, i * taskSize + i, taskSize + 1)); } else { completionService.submit(new ModelExpectationComputeTask(i, i * taskSize + leftOver, taskSize)); } } for (int i = 0; i < numberOfThreads; i++) { ModelExpectationComputeTask finishedTask; try { finishedTask = completionService.take().get(); } catch (InterruptedException e) { // TODO: We got interrupted, but that is currently not really supported! // For now we just print the exception and fail hard. We hopefully soon // handle this case properly! e.printStackTrace(); throw new IllegalStateException("Interruption is not supported!", e); } catch (ExecutionException e) { // Only runtime exception can be thrown during training, if one was thrown // it should be re-thrown. That could for example be a NullPointerException // which is caused through a bug in our implementation. throw new RuntimeException("Exception during training: " + e.getMessage(), e); } // When they are done, retrieve the results ... numEvents += finishedTask.getNumEvents(); numCorrect += finishedTask.getNumCorrect(); loglikelihood += finishedTask.getLoglikelihood(); } display("."); // merge the results of the two computations for (int pi = 0; pi < numPreds; pi++) { int[] activeOutcomes = params[pi].getOutcomes(); for (int aoi = 0; aoi < activeOutcomes.length; aoi++) { for (int i = 1; i < modelExpects.length; i++) { modelExpects[0][pi].updateParameter(aoi, modelExpects[i][pi].getParameters()[aoi]); } } } display("."); // compute the new parameter values for (int pi = 0; pi < numPreds; pi++) { double[] observed = observedExpects[pi].getParameters(); double[] model = modelExpects[0][pi].getParameters(); int[] activeOutcomes = params[pi].getOutcomes(); for (int aoi = 0; aoi < activeOutcomes.length; aoi++) { if (useGaussianSmoothing) { params[pi].updateParameter(aoi, gaussianUpdate(pi, aoi, correctionConstant)); } else { if (model[aoi] == 0) { System.err.println("Model expects == 0 for " + predLabels[pi] + " " + outcomeLabels[aoi]); } //params[pi].updateParameter(aoi,(StrictMath.log(observed[aoi]) - StrictMath.log(model[aoi]))); params[pi].updateParameter(aoi, ((StrictMath.log(observed[aoi]) - StrictMath.log(model[aoi])) / correctionConstant)); } for (MutableContext[] modelExpect : modelExpects) { modelExpect[pi].setParameter(aoi, 0.0); // re-initialize to 0.0's } } } display(". loglikelihood=" + loglikelihood + "\t" + ((double) numCorrect / numEvents) + "\n"); return loglikelihood; } protected void display(String s) { if (printMessages) { System.out.print(s); } } private class ModelExpectationComputeTask implements Callable { private final int startIndex; private final int length; final private int threadIndex; private double loglikelihood = 0; private int numEvents = 0; private int numCorrect = 0; // startIndex to compute, number of events to compute ModelExpectationComputeTask(int threadIndex, int startIndex, int length) { this.startIndex = startIndex; this.length = length; this.threadIndex = threadIndex; } public ModelExpectationComputeTask call() { final double[] modelDistribution = new double[numOutcomes]; for (int ei = startIndex; ei < startIndex + length; ei++) { // TODO: check interruption status here, if interrupted set a poisoned flag and return if (values != null) { prior.logPrior(modelDistribution, contexts[ei], values[ei]); GISModel.eval(contexts[ei], values[ei], modelDistribution, evalParams); } else { prior.logPrior(modelDistribution, contexts[ei]); GISModel.eval(contexts[ei], modelDistribution, evalParams); } for (int j = 0; j < contexts[ei].length; j++) { int pi = contexts[ei][j]; int[] activeOutcomes = modelExpects[threadIndex][pi].getOutcomes(); for (int aoi = 0; aoi < activeOutcomes.length; aoi++) { int oi = activeOutcomes[aoi]; // numTimesEventsSeen must also be thread safe if (values != null && values[ei] != null) { modelExpects[threadIndex][pi].updateParameter(aoi, modelDistribution[oi] * values[ei][j] * numTimesEventsSeen[ei]); } else { modelExpects[threadIndex][pi].updateParameter(aoi, modelDistribution[oi] * numTimesEventsSeen[ei]); } } } loglikelihood += StrictMath.log(modelDistribution[outcomeList[ei]]) * numTimesEventsSeen[ei]; numEvents += numTimesEventsSeen[ei]; if (printMessages) { int max = ArrayMath.argmax(modelDistribution); if (max == outcomeList[ei]) { numCorrect += numTimesEventsSeen[ei]; } } } return this; } synchronized int getNumEvents() { return numEvents; } synchronized int getNumCorrect() { return numCorrect; } synchronized double getLoglikelihood() { return loglikelihood; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_EventModelSequ0100644 0000000 0000000 00000000156 14135770370 032556 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/EventModelSequenceTrainer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/EventModelSequenceTrainer.java0100664 0001750 0001750 00000002501 14135770370 034075 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.TrainingParameters; public interface EventModelSequenceTrainer { String SEQUENCE_VALUE = "EventModelSequence"; @Deprecated void init(Map trainParams, Map reportMap); void init(TrainingParameters trainParams, Map reportMap); MaxentModel train(SequenceStream events) throws IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/TrainerFactory.java0100664 0001750 0001750 00000017616 14135770370 031766 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.lang.reflect.Constructor; import java.util.Collections; import java.util.HashMap; import java.util.Map; import opennlp.tools.ml.maxent.GISTrainer; import opennlp.tools.ml.maxent.quasinewton.QNTrainer; import opennlp.tools.ml.naivebayes.NaiveBayesTrainer; import opennlp.tools.ml.perceptron.PerceptronTrainer; import opennlp.tools.ml.perceptron.SimplePerceptronSequenceTrainer; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.ext.ExtensionNotLoadedException; public class TrainerFactory { public enum TrainerType { EVENT_MODEL_TRAINER, EVENT_MODEL_SEQUENCE_TRAINER, SEQUENCE_TRAINER } // built-in trainers private static final Map BUILTIN_TRAINERS; static { Map _trainers = new HashMap<>(); _trainers.put(GISTrainer.MAXENT_VALUE, GISTrainer.class); _trainers.put(QNTrainer.MAXENT_QN_VALUE, QNTrainer.class); _trainers.put(PerceptronTrainer.PERCEPTRON_VALUE, PerceptronTrainer.class); _trainers.put(SimplePerceptronSequenceTrainer.PERCEPTRON_SEQUENCE_VALUE, SimplePerceptronSequenceTrainer.class); _trainers.put(NaiveBayesTrainer.NAIVE_BAYES_VALUE, NaiveBayesTrainer.class); BUILTIN_TRAINERS = Collections.unmodifiableMap(_trainers); } /** * Determines the trainer type based on the ALGORITHM_PARAM value. * * @param trainParams - Map of training parameters * @return the trainer type or null if type couldn't be determined. */ public static TrainerType getTrainerType(TrainingParameters trainParams) { String algorithmValue = trainParams.getStringParameter(AbstractTrainer.ALGORITHM_PARAM,null); // Check if it is defaulting to the MAXENT trainer if (algorithmValue == null) { return TrainerType.EVENT_MODEL_TRAINER; } Class trainerClass = BUILTIN_TRAINERS.get(algorithmValue); if (trainerClass != null) { if (EventTrainer.class.isAssignableFrom(trainerClass)) { return TrainerType.EVENT_MODEL_TRAINER; } else if (EventModelSequenceTrainer.class.isAssignableFrom(trainerClass)) { return TrainerType.EVENT_MODEL_SEQUENCE_TRAINER; } else if (SequenceTrainer.class.isAssignableFrom(trainerClass)) { return TrainerType.SEQUENCE_TRAINER; } } // Try to load the different trainers, and return the type on success try { ExtensionLoader.instantiateExtension(EventTrainer.class, algorithmValue); return TrainerType.EVENT_MODEL_TRAINER; } catch (ExtensionNotLoadedException ignored) { // this is ignored } try { ExtensionLoader.instantiateExtension(EventModelSequenceTrainer.class, algorithmValue); return TrainerType.EVENT_MODEL_SEQUENCE_TRAINER; } catch (ExtensionNotLoadedException ignored) { // this is ignored } try { ExtensionLoader.instantiateExtension(SequenceTrainer.class, algorithmValue); return TrainerType.SEQUENCE_TRAINER; } catch (ExtensionNotLoadedException ignored) { // this is ignored } return null; } public static SequenceTrainer getSequenceModelTrainer(TrainingParameters trainParams, Map reportMap) { String trainerType = trainParams.getStringParameter(AbstractTrainer.ALGORITHM_PARAM,null); if (trainerType != null) { if (BUILTIN_TRAINERS.containsKey(trainerType)) { SequenceTrainer trainer = TrainerFactory.createBuiltinTrainer( BUILTIN_TRAINERS.get(trainerType)); trainer.init(trainParams, reportMap); return trainer; } else { SequenceTrainer trainer = ExtensionLoader.instantiateExtension(SequenceTrainer.class, trainerType); trainer.init(trainParams, reportMap); return trainer; } } else { throw new IllegalArgumentException("Trainer type couldn't be determined!"); } } public static EventModelSequenceTrainer getEventModelSequenceTrainer(TrainingParameters trainParams, Map reportMap) { String trainerType = trainParams.getStringParameter(AbstractTrainer.ALGORITHM_PARAM,null); if (trainerType != null) { if (BUILTIN_TRAINERS.containsKey(trainerType)) { EventModelSequenceTrainer trainer = TrainerFactory.createBuiltinTrainer( BUILTIN_TRAINERS.get(trainerType)); trainer.init(trainParams, reportMap); return trainer; } else { EventModelSequenceTrainer trainer = ExtensionLoader.instantiateExtension(EventModelSequenceTrainer.class, trainerType); trainer.init(trainParams, reportMap); return trainer; } } else { throw new IllegalArgumentException("Trainer type couldn't be determined!"); } } public static EventTrainer getEventTrainer(TrainingParameters trainParams, Map reportMap) { // if the trainerType is not defined -- use the GISTrainer. String trainerType = trainParams.getStringParameter(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); if (BUILTIN_TRAINERS.containsKey(trainerType)) { EventTrainer trainer = TrainerFactory.createBuiltinTrainer( BUILTIN_TRAINERS.get(trainerType)); trainer.init(trainParams, reportMap); return trainer; } else { EventTrainer trainer = ExtensionLoader.instantiateExtension(EventTrainer.class, trainerType); trainer.init(trainParams, reportMap); return trainer; } } public static boolean isValid(TrainingParameters trainParams) { // TODO: Need to validate all parameters correctly ... error prone?! String algorithmName = trainParams.getStringParameter(AbstractTrainer.ALGORITHM_PARAM,null); // If a trainer type can be determined, then the trainer is valid! if (algorithmName != null && !(BUILTIN_TRAINERS.containsKey(algorithmName) || getTrainerType(trainParams) != null)) { return false; } try { // require that the Cutoff and the number of iterations be an integer. // if they are not set, the default values will be ok. trainParams.getIntParameter(AbstractTrainer.CUTOFF_PARAM, 0); trainParams.getIntParameter(AbstractTrainer.ITERATIONS_PARAM, 0); } catch (NumberFormatException e) { return false; } // no reason to require that the dataIndexer be a 1-pass or 2-pass dataindexer. trainParams.getStringParameter(AbstractEventTrainer.DATA_INDEXER_PARAM, null); // TODO: Check data indexing ... return true; } private static T createBuiltinTrainer(Class trainerClass) { T theTrainer = null; if (trainerClass != null) { try { Constructor contructor = trainerClass.getConstructor(); theTrainer = contructor.newInstance(); } catch (Exception e) { String msg = "Could not instantiate the " + trainerClass.getCanonicalName() + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new IllegalArgumentException(msg, e); } } return theTrainer; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/EventTrainer.java0100664 0001750 0001750 00000002662 14135770370 031433 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public interface EventTrainer { String EVENT_VALUE = "Event"; @Deprecated void init(Map trainParams, Map reportMap); void init(TrainingParameters trainingParams, Map reportMap); MaxentModel train(ObjectStream events) throws IOException; MaxentModel train(DataIndexer indexer) throws IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java0100664 0001750 0001750 00000002524 14135770370 032117 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import java.util.Map; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.TrainingParameters; public interface SequenceTrainer { String SEQUENCE_VALUE = "Sequence"; @Deprecated void init(Map trainParams, Map reportMap); void init(TrainingParameters trainParams, Map reportMap); SequenceClassificationModel train(SequenceStream events) throws IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java0100664 0001750 0001750 00000014054 14135770370 031015 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.util.Arrays; import java.util.List; import java.util.PriorityQueue; import java.util.Queue; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BeamSearchContextGenerator; import opennlp.tools.util.Cache; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceValidator; /** * Performs k-best search over sequence. This is based on the description in * Ratnaparkhi (1998), PhD diss, Univ. of Pennsylvania. * * @see Sequence * @see SequenceValidator * @see BeamSearchContextGenerator */ public class BeamSearch implements SequenceClassificationModel { public static final String BEAM_SIZE_PARAMETER = "BeamSize"; private static final Object[] EMPTY_ADDITIONAL_CONTEXT = new Object[0]; protected int size; protected MaxentModel model; private double[] probs; private Cache contextsCache; private static final int zeroLog = -100000; /** * Creates new search object. * * @param size The size of the beam (k). * @param model the model for assigning probabilities to the sequence outcomes. */ public BeamSearch(int size, MaxentModel model) { this(size, model, 0); } public BeamSearch(int size, MaxentModel model, int cacheSize) { this.size = size; this.model = model; if (cacheSize > 0) { contextsCache = new Cache<>(cacheSize); } this.probs = new double[model.getNumOutcomes()]; } /** * Returns the best sequence of outcomes based on model for this object. * * @param sequence The input sequence. * @param additionalContext An Object[] of additional context. * This is passed to the context generator blindly with the * assumption that the context are appropiate. * * @return The top ranked sequence of outcomes or null if no sequence could be found */ public Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, double minSequenceScore, BeamSearchContextGenerator cg, SequenceValidator validator) { Queue prev = new PriorityQueue<>(size); Queue next = new PriorityQueue<>(size); Queue tmp; prev.add(new Sequence()); if (additionalContext == null) { additionalContext = EMPTY_ADDITIONAL_CONTEXT; } for (int i = 0; i < sequence.length; i++) { int sz = StrictMath.min(size, prev.size()); for (int sc = 0; prev.size() > 0 && sc < sz; sc++) { Sequence top = prev.remove(); List tmpOutcomes = top.getOutcomes(); String[] outcomes = tmpOutcomes.toArray(new String[tmpOutcomes.size()]); String[] contexts = cg.getContext(i, sequence, outcomes, additionalContext); double[] scores; if (contextsCache != null) { scores = contextsCache.computeIfAbsent(contexts, c -> model.eval(c, probs)); } else { scores = model.eval(contexts, probs); } double[] temp_scores = new double[scores.length]; System.arraycopy(scores, 0, temp_scores, 0, scores.length); Arrays.sort(temp_scores); double min = temp_scores[StrictMath.max(0,scores.length - size)]; for (int p = 0; p < scores.length; p++) { if (scores[p] >= min) { String out = model.getOutcome(p); if (validator.validSequence(i, sequence, outcomes, out)) { Sequence ns = new Sequence(top, out, scores[p]); if (ns.getScore() > minSequenceScore) { next.add(ns); } } } } if (next.size() == 0) { //if no advanced sequences, advance all valid for (int p = 0; p < scores.length; p++) { String out = model.getOutcome(p); if (validator.validSequence(i, sequence, outcomes, out)) { Sequence ns = new Sequence(top, out, scores[p]); if (ns.getScore() > minSequenceScore) { next.add(ns); } } } } } // make prev = next; and re-init next (we reuse existing prev set once we clear it) prev.clear(); tmp = prev; prev = next; next = tmp; } int numSeq = StrictMath.min(numSequences, prev.size()); Sequence[] topSequences = new Sequence[numSeq]; for (int seqIndex = 0; seqIndex < numSeq; seqIndex++) { topSequences[seqIndex] = prev.remove(); } return topSequences; } public Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, BeamSearchContextGenerator cg, SequenceValidator validator) { return bestSequences(numSequences, sequence, additionalContext, zeroLog, cg, validator); } public Sequence bestSequence(T[] sequence, Object[] additionalContext, BeamSearchContextGenerator cg, SequenceValidator validator) { Sequence[] sequences = bestSequences(1, sequence, additionalContext, cg, validator); if (sequences.length > 0) return sequences[0]; else return null; } @Override public String[] getOutcomes() { String[] outcomes = new String[model.getNumOutcomes()]; for (int i = 0; i < model.getNumOutcomes(); i++) { outcomes[i] = model.getOutcome(i); } return outcomes; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java0100664 0001750 0001750 00000006322 14135770370 033114 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.io.IOException; import opennlp.tools.ml.model.AbstractDataIndexer; import opennlp.tools.ml.model.DataIndexer; import opennlp.tools.ml.model.DataIndexerFactory; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.HashSumEventStream; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; public abstract class AbstractEventTrainer extends AbstractTrainer implements EventTrainer { public static final String DATA_INDEXER_PARAM = "DataIndexer"; public static final String DATA_INDEXER_ONE_PASS_VALUE = "OnePass"; public static final String DATA_INDEXER_TWO_PASS_VALUE = "TwoPass"; public static final String DATA_INDEXER_ONE_PASS_REAL_VALUE = "OnePassRealValue"; public AbstractEventTrainer() { } public AbstractEventTrainer(TrainingParameters parameters) { super(parameters); } @Override public void validate() { super.validate(); } @Deprecated @Override public boolean isValid() { return super.isValid(); } public abstract boolean isSortAndMerge(); public DataIndexer getDataIndexer(ObjectStream events) throws IOException { trainingParameters.put(AbstractDataIndexer.SORT_PARAM, isSortAndMerge()); // If the cutoff was set, don't overwrite the value. if (trainingParameters.getIntParameter(CUTOFF_PARAM, -1) == -1) { trainingParameters.put(CUTOFF_PARAM, 5); } DataIndexer indexer = DataIndexerFactory.getDataIndexer(trainingParameters, reportMap); indexer.index(events); return indexer; } public abstract MaxentModel doTrain(DataIndexer indexer) throws IOException; public final MaxentModel train(DataIndexer indexer) throws IOException { validate(); if (indexer.getOutcomeLabels().length <= 1) { throw new InsufficientTrainingDataException("Training data must contain more than one outcome"); } MaxentModel model = doTrain(indexer); addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, EventTrainer.EVENT_VALUE); return model; } public final MaxentModel train(ObjectStream events) throws IOException { validate(); HashSumEventStream hses = new HashSumEventStream(events); DataIndexer indexer = getDataIndexer(hses); addToReport("Training-Eventhash", hses.calculateHashSum().toString(16)); return train(indexer); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/ArrayMath.java0100664 0001750 0001750 00000007646 14135770370 030724 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.util.List; import opennlp.tools.ml.model.Context; /** * Utility class for simple vector arithmetic. */ public class ArrayMath { public static double innerProduct(double[] vecA, double[] vecB) { if (vecA == null || vecB == null || vecA.length != vecB.length) return Double.NaN; double product = 0.0; for (int i = 0; i < vecA.length; i++) { product += vecA[i] * vecB[i]; } return product; } /** * L1-norm */ public static double l1norm(double[] v) { double norm = 0; for (int i = 0; i < v.length; i++) norm += StrictMath.abs(v[i]); return norm; } /** * L2-norm */ public static double l2norm(double[] v) { return StrictMath.sqrt(innerProduct(v, v)); } /** * Inverse L2-norm */ public static double invL2norm(double[] v) { return 1 / l2norm(v); } /** * Computes \log(\sum_{i=1}^n e^{x_i}) using a maximum-element trick * to avoid arithmetic overflow. * * @param x input vector * @return log-sum of exponentials of vector elements */ public static double logSumOfExps(double[] x) { double max = max(x); double sum = 0.0; for (int i = 0; i < x.length; i++) { if (x[i] != Double.NEGATIVE_INFINITY) sum += StrictMath.exp(x[i] - max); } return max + StrictMath.log(sum); } public static double max(double[] x) { int maxIdx = argmax(x); return x[maxIdx]; } /** * Find index of maximum element in the vector x * @param x input vector * @return index of the maximum element. Index of the first * maximum element is returned if multiple maximums are found. */ public static int argmax(double[] x) { if (x == null || x.length == 0) { throw new IllegalArgumentException("Vector x is null or empty"); } int maxIdx = 0; for (int i = 1; i < x.length; i++) { if (x[maxIdx] < x[i]) maxIdx = i; } return maxIdx; } public static void sumFeatures(Context[] context, float[] values, double[] prior) { for (int ci = 0; ci < context.length; ci++) { if (context[ci] != null) { Context predParams = context[ci]; int[] activeOutcomes = predParams.getOutcomes(); double[] activeParameters = predParams.getParameters(); double value = 1; if (values != null) { value = values[ci]; } for (int ai = 0; ai < activeOutcomes.length; ai++) { int oid = activeOutcomes[ai]; prior[oid] += activeParameters[ai] * value; } } } } // === Not really related to math === /** * Convert a list of Double objects into an array of primitive doubles */ public static double[] toDoubleArray(List list) { double[] arr = new double[list.size()]; for (int i = 0; i < arr.length; i++) { arr[i] = list.get(i); } return arr; } /** * Convert a list of Integer objects into an array of primitive integers */ public static int[] toIntArray(List list) { int[] arr = new int[list.size()]; for (int i = 0; i < arr.length; i++) { arr[i] = list.get(i); } return arr; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/TwoPassDataIndexer.java0100664 0001750 0001750 00000015162 14135770370 033635 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigInteger; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.util.ObjectStream; /** * Collecting event and context counts by making two passes over the events. The * first pass determines which contexts will be used by the model, and the * second pass creates the events in memory containing only the contexts which * will be used. This greatly reduces the amount of memory required for storing * the events. During the first pass a temporary event file is created which * is read during the second pass. */ public class TwoPassDataIndexer extends AbstractDataIndexer { public TwoPassDataIndexer() {} @Override public void index(ObjectStream eventStream) throws IOException { int cutoff = trainingParameters.getIntParameter(CUTOFF_PARAM, CUTOFF_DEFAULT); boolean sort = trainingParameters.getBooleanParameter(SORT_PARAM, SORT_DEFAULT); long start = System.currentTimeMillis(); display("Indexing events with TwoPass using cutoff of " + cutoff + "\n\n"); display("\tComputing event counts... "); Map predicateIndex = new HashMap<>(); File tmp = File.createTempFile("events", null); tmp.deleteOnExit(); int numEvents; BigInteger writeHash; HashSumEventStream writeEventStream = new HashSumEventStream(eventStream); // do not close. try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(tmp)))) { numEvents = computeEventCounts(writeEventStream, dos, predicateIndex, cutoff); } writeHash = writeEventStream.calculateHashSum(); display("done. " + numEvents + " events\n"); display("\tIndexing... "); List eventsToCompare; BigInteger readHash = null; try (HashSumEventStream readStream = new HashSumEventStream(new EventStream(tmp))) { eventsToCompare = index(readStream, predicateIndex); readHash = readStream.calculateHashSum(); } tmp.delete(); if (readHash.compareTo(writeHash) != 0) throw new IOException("Event hash for writing and reading events did not match."); display("done.\n"); if (sort) { display("Sorting and merging events... "); } else { display("Collecting events... "); } sortAndMerge(eventsToCompare,sort); display(String.format("Done indexing in %.2f s.\n", (System.currentTimeMillis() - start) / 1000d)); } /** * Reads events from eventStream into a linked list. The * predicates associated with each event are counted and any which * occur at least cutoff times are added to the * predicatesInOut map along with a unique integer index. * * Protocol: * 1 - (utf string) - Event outcome * 2 - (int) - Event context array length * 3+ - (utf string) - Event context string * 4 - (int) - Event values array length * 5+ - (float) - Event value * * @param eventStream an EventStream value * @param eventStore a writer to which the events are written to for later processing. * @param predicatesInOut a TObjectIntHashMap value * @param cutoff an int value */ private int computeEventCounts(ObjectStream eventStream, DataOutputStream eventStore, Map predicatesInOut, int cutoff) throws IOException { Map counter = new HashMap<>(); int eventCount = 0; Event ev; while ((ev = eventStream.read()) != null) { eventCount++; eventStore.writeUTF(ev.getOutcome()); eventStore.writeInt(ev.getContext().length); String[] ec = ev.getContext(); update(ec, counter); for (String ctxString : ec) eventStore.writeUTF(ctxString); if (ev.getValues() == null) { eventStore.writeInt(0); } else { eventStore.writeInt(ev.getValues().length); for (float value : ev.getValues()) eventStore.writeFloat(value); } } String[] predicateSet = counter.entrySet().stream() .filter(entry -> entry.getValue() >= cutoff) .map(Map.Entry::getKey).sorted() .toArray(String[]::new); predCounts = new int[predicateSet.length]; for (int i = 0; i < predicateSet.length; i++) { predCounts[i] = counter.get(predicateSet[i]); predicatesInOut.put(predicateSet[i], i); } return eventCount; } private static class EventStream implements ObjectStream { private final DataInputStream inputStream; public EventStream(File file) throws IOException { inputStream = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); } @Override public Event read() throws IOException { if (inputStream.available() != 0) { String outcome = inputStream.readUTF(); int contextLenght = inputStream.readInt(); String[] context = new String[contextLenght]; for (int i = 0; i < contextLenght; i++) context[i] = inputStream.readUTF(); int valuesLength = inputStream.readInt(); float[] values = null; if (valuesLength > 0) { values = new float[valuesLength]; for (int i = 0; i < valuesLength; i++) values[i] = inputStream.readFloat(); } return new Event(outcome, context, values); } else { return null; } } @Override public void reset() throws IOException, UnsupportedOperationException { throw new UnsupportedOperationException(); } @Override public void close() throws IOException { inputStream.close(); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_OnePassR0100644 0000000 0000000 00000000166 14135770370 032531 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/OnePassRealValueDataIndexer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/OnePassRealValueDataInde0100664 0001750 0001750 00000003502 14135770370 033742 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.List; import opennlp.tools.util.InsufficientTrainingDataException; /** * An indexer for maxent model data which handles cutoffs for uncommon * contextual predicates and provides a unique integer index for each of the * predicates and maintains event values. */ public class OnePassRealValueDataIndexer extends OnePassDataIndexer { float[][] values; public OnePassRealValueDataIndexer() { } public float[][] getValues() { return values; } protected int sortAndMerge(List eventsToCompare, boolean sort) throws InsufficientTrainingDataException { int numUniqueEvents = super.sortAndMerge(eventsToCompare,sort); values = new float[numUniqueEvents][]; int numEvents = eventsToCompare.size(); for (int i = 0, j = 0; i < numEvents; i++) { ComparableEvent evt = eventsToCompare.get(i); if (null == evt) { continue; // this was a dupe, skip over it. } values[j++] = evt.values; } return numUniqueEvents; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Sequence0100644 0000000 0000000 00000000164 14135770370 032605 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStrea0100664 0001750 0001750 00000003655 14135770370 034135 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import opennlp.tools.util.ObjectStream; /** * Class which turns a sequence stream into an event stream. */ public class SequenceStreamEventStream implements ObjectStream { private final SequenceStream sequenceStream; private Iterator eventIt = Collections.emptyListIterator(); public SequenceStreamEventStream(SequenceStream sequenceStream) { this.sequenceStream = sequenceStream; } @Override public Event read() throws IOException { while (!eventIt.hasNext()) { Sequence sequence = sequenceStream.read(); if (sequence == null) { return null; } eventIt = Arrays.asList(sequence.getEvents()).iterator(); } return eventIt.next(); } @Override public void reset() throws IOException, UnsupportedOperationException { eventIt = Collections.emptyListIterator(); sequenceStream.reset(); } @Override public void close() throws IOException { eventIt = Collections.emptyListIterator(); sequenceStream.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/GenericModelReader.java0100664 0001750 0001750 00000004112 14135770370 033575 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.File; import java.io.IOException; import opennlp.tools.ml.maxent.io.GISModelReader; import opennlp.tools.ml.maxent.io.QNModelReader; import opennlp.tools.ml.naivebayes.NaiveBayesModelReader; import opennlp.tools.ml.perceptron.PerceptronModelReader; public class GenericModelReader extends AbstractModelReader { private AbstractModelReader delegateModelReader; public GenericModelReader(File f) throws IOException { super(f); } public GenericModelReader(DataReader dataReader) { super(dataReader); } public void checkModelType() throws IOException { String modelType = readUTF(); switch (modelType) { case "Perceptron": delegateModelReader = new PerceptronModelReader(this.dataReader); break; case "GIS": delegateModelReader = new GISModelReader(this.dataReader); break; case "QN": delegateModelReader = new QNModelReader(this.dataReader); break; case "NaiveBayes": delegateModelReader = new NaiveBayesModelReader(this.dataReader); break; default: throw new IOException("Unknown model format: " + modelType); } } public AbstractModel constructModel() throws IOException { return delegateModelReader.constructModel(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Abstract0100644 0000000 0000000 00000000156 14135770370 032601 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractModelReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractModelReader.java0100664 0001750 0001750 00000011765 14135770370 034000 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.StringTokenizer; import java.util.zip.GZIPInputStream; public abstract class AbstractModelReader { /** * The number of predicates contained in the model. */ protected int NUM_PREDS; protected DataReader dataReader; public AbstractModelReader(File f) throws IOException { String filename = f.getName(); InputStream input; // handle the zipped/not zipped distinction if (filename.endsWith(".gz")) { input = new GZIPInputStream(new FileInputStream(f)); filename = filename.substring(0,filename.length() - 3); } else { input = new FileInputStream(f); } // handle the different formats if (filename.endsWith(".bin")) { this.dataReader = new BinaryFileDataReader(input); } else { // filename ends with ".txt" this.dataReader = new PlainTextFileDataReader(input); } } public AbstractModelReader(DataReader dataReader) { super(); this.dataReader = dataReader; } /** * Implement as needed for the format the model is stored in. */ public int readInt() throws java.io.IOException { return dataReader.readInt(); } /** * Implement as needed for the format the model is stored in. */ public double readDouble() throws java.io.IOException { return dataReader.readDouble(); } /** * Implement as needed for the format the model is stored in. */ public String readUTF() throws java.io.IOException { return dataReader.readUTF(); } public AbstractModel getModel() throws IOException { checkModelType(); return constructModel(); } public abstract void checkModelType() throws java.io.IOException; public abstract AbstractModel constructModel() throws java.io.IOException; protected String[] getOutcomes() throws java.io.IOException { int numOutcomes = readInt(); String[] outcomeLabels = new String[numOutcomes]; for (int i = 0; i < numOutcomes; i++) outcomeLabels[i] = readUTF(); return outcomeLabels; } protected int[][] getOutcomePatterns() throws java.io.IOException { int numOCTypes = readInt(); int[][] outcomePatterns = new int[numOCTypes][]; for (int i = 0; i < numOCTypes; i++) { StringTokenizer tok = new StringTokenizer(readUTF(), " "); int[] infoInts = new int[tok.countTokens()]; for (int j = 0; tok.hasMoreTokens(); j++) { infoInts[j] = Integer.parseInt(tok.nextToken()); } outcomePatterns[i] = infoInts; } return outcomePatterns; } protected String[] getPredicates() throws java.io.IOException { NUM_PREDS = readInt(); String[] predLabels = new String[NUM_PREDS]; for (int i = 0; i < NUM_PREDS; i++) predLabels[i] = readUTF(); return predLabels; } /** * Reads the parameters from a file and populates an array of context objects. * @param outcomePatterns The outcomes patterns for the model. The first index refers to which * outcome pattern (a set of outcomes that occurs with a context) is being specified. The * second index specifies the number of contexts which use this pattern at index 0, and the * index of each outcomes which make up this pattern in indicies 1-n. * @return An array of context objects. * @throws java.io.IOException when the model file does not match the outcome patterns or can not be read. */ protected Context[] getParameters(int[][] outcomePatterns) throws java.io.IOException { Context[] params = new Context[NUM_PREDS]; int pid = 0; for (int[] pattern : outcomePatterns) { //construct outcome pattern int[] outcomePattern = new int[pattern.length - 1]; System.arraycopy(pattern, 1, outcomePattern, 0, pattern.length - 1); //populate parameters for each context which uses this outcome pattern. for (int j = 0; j < pattern[0]; j++) { double[] contextParameters = new double[pattern.length - 1]; for (int k = 1; k < pattern.length; k++) { contextParameters[k - 1] = readDouble(); } params[pid] = new Context(outcomePattern, contextParameters); pid++; } } return params; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/MaxentModel.java0100664 0001750 0001750 00000007571 14135770370 032346 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; /** * Interface for maximum entropy models. **/ public interface MaxentModel { /** * Evaluates a context. * * @param context A list of String names of the contextual predicates * which are to be evaluated together. * @return an array of the probabilities for each of the different * outcomes, all of which sum to 1. * **/ double[] eval(String[] context); /** * Evaluates a context. * * @param context A list of String names of the contextual predicates * which are to be evaluated together. * @param probs An array which is populated with the probabilities for each of the different * outcomes, all of which sum to 1. * @return an array of the probabilities for each of the different outcomes, all of which sum to 1. **/ double[] eval(String[] context, double[] probs); /** * Evaluates a contexts with the specified context values. * @param context A list of String names of the contextual predicates * which are to be evaluated together. * @param values The values associated with each context. * @return an array of the probabilities for each of the different outcomes, all of which sum to 1. */ double[] eval(String[] context, float[] values); /** * Simple function to return the outcome associated with the index * containing the highest probability in the double[]. * * @param outcomes A double[] as returned by the * eval(String[] context) * method. * @return the String name of the best outcome **/ String getBestOutcome(double[] outcomes); /** * Return a string matching all the outcome names with all the * probabilities produced by the eval(String[] * context) method. * * @param outcomes A double[] as returned by the * eval(String[] context) * method. * @return String containing outcome names paired with the normalized * probability (contained in the double[] ocs) * for each one. **/ // TODO: This should be removed, can't be used anyway without format spec String getAllOutcomes(double[] outcomes); /** * Gets the String name of the outcome associated with the index * i. * * @param i the index for which the name of the associated outcome is * desired. * @return the String name of the outcome **/ String getOutcome(int i); /** * Gets the index associated with the String name of the given * outcome. * * @param outcome the String name of the outcome for which the * index is desired * @return the index if the given outcome label exists for this * model, -1 if it does not. **/ int getIndex(String outcome); /* * Returns the data structures relevant to storing the model. **/ // public Object[] getDataStructures(); /** Returns the number of outcomes for this model. * @return The number of outcomes. **/ int getNumOutcomes(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStream.java0100664 0001750 0001750 00000002424 14135770370 033045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import opennlp.tools.util.ObjectStream; /** * Interface for streams of sequences used to train sequence models. */ public interface SequenceStream extends ObjectStream { /** * Creates a new event array based on the outcomes predicted by the specified parameters * for the specified sequence. * @param sequence The sequence to be evaluated. * @return event array */ Event[] updateContext(Sequence sequence, AbstractModel model); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/UniformPrior.java0100664 0001750 0001750 00000003610 14135770370 032552 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Objects; /** * Provide a maximum entropy model with a uniform prior. */ public class UniformPrior implements Prior { private int numOutcomes; private double r; public void logPrior(double[] dist, int[] context, float[] values) { for (int oi = 0; oi < numOutcomes; oi++) { dist[oi] = r; } } @Override public void logPrior(double[] dist, Context[] context, float[] values) { logPrior(dist, (int[]) null, values); } public void logPrior(double[] dist, int[] context) { logPrior(dist,context,null); } public void setLabels(String[] outcomeLabels, String[] contextLabels) { this.numOutcomes = outcomeLabels.length; r = StrictMath.log(1.0 / numOutcomes); } @Override public int hashCode() { return Objects.hash(numOutcomes, r); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof UniformPrior) { UniformPrior prior = (UniformPrior) obj; return numOutcomes == prior.numOutcomes && r == prior.r; } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/Sequence.java0100664 0001750 0001750 00000003544 14135770370 031675 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; /** * Class which models a sequence. * @param The type of the object which is the source of this sequence. */ public class Sequence { private Event[] events; private T source; /** * Creates a new sequence made up of the specified events and derived from the * specified source. * * @param events * The events of the sequence. * @param source * The source object for this sequence. */ public Sequence(Event[] events, T source) { this.events = events; this.source = source; } /** * Returns the events which make up this sequence. * * @return the events which make up this sequence. */ public Event[] getEvents() { return events; } /** * Returns an object from which this sequence can be derived. This object is * used when the events for this sequence need to be re-derived such as in a * call to SequenceStream.updateContext. * * @return an object from which this sequence can be derived. */ public T getSource() { return source; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/ObjectDataReader.java0100664 0001750 0001750 00000002427 14135770370 033247 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.io.ObjectInputStream; public class ObjectDataReader implements DataReader { protected ObjectInputStream ois; public ObjectDataReader(ObjectInputStream ois) { this.ois = ois; } public double readDouble() throws IOException { return ois.readDouble(); } public int readInt() throws IOException { return ois.readInt(); } public String readUTF() throws IOException { return ois.readUTF(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_PlainTex0100644 0000000 0000000 00000000162 14135770370 032557 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/PlainTextFileDataReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/PlainTextFileDataReader.0100664 0001750 0001750 00000004002 14135770370 033676 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.zip.GZIPInputStream; public class PlainTextFileDataReader implements DataReader { private BufferedReader input; public PlainTextFileDataReader(File f) throws IOException { if (f.getName().endsWith(".gz")) { input = new BufferedReader(new InputStreamReader(new BufferedInputStream( new GZIPInputStream(new BufferedInputStream(new FileInputStream(f)))))); } else { input = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(f)))); } } public PlainTextFileDataReader(InputStream in) { input = new BufferedReader(new InputStreamReader(in)); } public PlainTextFileDataReader(BufferedReader in) { input = in; } public double readDouble() throws IOException { return Double.parseDouble(input.readLine()); } public int readInt() throws IOException { return Integer.parseInt(input.readLine()); } public String readUTF() throws IOException { return input.readLine(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_RealValu0100644 0000000 0000000 00000000163 14135770370 032547 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/RealValueFileEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/RealValueFileEventStream0100664 0001750 0001750 00000005650 14135770370 034043 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.File; import java.io.IOException; public class RealValueFileEventStream extends FileEventStream { public RealValueFileEventStream(String fileName) throws IOException { super(fileName); } public RealValueFileEventStream(String fileName, String encoding) throws IOException { super(fileName, encoding); } public RealValueFileEventStream(File file) throws IOException { super(file); } /** * Parses the specified contexts and re-populates context array with features * and returns the values for these features. If all values are unspecified, * then null is returned. * * @param contexts The contexts with real values specified. * @return The value for each context or null if all values are unspecified. */ public static float[] parseContexts(String[] contexts) { boolean hasRealValue = false; float[] values = new float[contexts.length]; for (int ci = 0; ci < contexts.length; ci++) { int ei = contexts[ci].lastIndexOf("="); if (ei > 0 && ei + 1 < contexts[ci].length()) { boolean gotReal = true; try { values[ci] = Float.parseFloat(contexts[ci].substring(ei + 1)); } catch (NumberFormatException e) { gotReal = false; System.err.println("Unable to determine value in context:" + contexts[ci]); values[ci] = 1; } if (gotReal) { if (values[ci] < 0) { throw new RuntimeException("Negative values are not allowed: " + contexts[ci]); } contexts[ci] = contexts[ci].substring(0, ei); hasRealValue = true; } } else { values[ci] = 1; } } if (!hasRealValue) { values = null; } return values; } @Override public Event read() throws IOException { String line; if ((line = reader.readLine()) != null) { int si = line.indexOf(' '); String outcome = line.substring(0, si); String[] contexts = line.substring(si + 1).split(" "); float[] values = parseContexts(contexts); return new Event(outcome, contexts, values); } return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/Context.java0100664 0001750 0001750 00000005130 14135770370 031542 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Arrays; import java.util.Objects; /** * Class which associates a real valued parameter or expected value with a particular contextual * predicate or feature. This is used to store maxent model parameters as well as model and empirical * expected values. */ public class Context { /** The real valued parameters or expected values for this context. */ protected double[] parameters; /** The outcomes which occur with this context. */ protected int[] outcomes; /** * Creates a new parameters object with the specified parameters associated with the specified * outcome pattern. * @param outcomePattern Array of outcomes for which parameters exists for this context. * @param parameters Parameters for the outcomes specified. */ public Context(int[] outcomePattern, double[] parameters) { this.outcomes = outcomePattern; this.parameters = parameters; } /** * Returns the outcomes for which parameters exists for this context. * @return Array of outcomes for which parameters exists for this context. */ public int[] getOutcomes() { return outcomes; } /** * Returns the parameters or expected values for the outcomes which occur with this context. * @return Array of parameters for the outcomes of this context. */ public double[] getParameters() { return parameters; } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(parameters), Arrays.hashCode(outcomes)); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof Context) { Context context = (Context) obj; return Arrays.equals(parameters, context.parameters) && Arrays.equals(outcomes, context.outcomes); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/MutableContext.java0100664 0001750 0001750 00000004334 14135770370 033061 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Arrays; /** * Class used to store parameters or expected values associated with this context which * can be updated or assigned. */ public class MutableContext extends Context { /** * Creates a new parameters object with the specified parameters associated with the specified * outcome pattern. * * @param outcomePattern Array of outcomes for which parameters exists for this context. * @param parameters Parameters for the outcomes specified. */ public MutableContext(int[] outcomePattern, double[] parameters) { super(outcomePattern, parameters); } /** * Assigns the parameter or expected value at the specified outcomeIndex the specified value. * * @param outcomeIndex The index of the parameter or expected value to be updated. * @param value The value to be assigned. */ public void setParameter(int outcomeIndex, double value) { parameters[outcomeIndex] = value; } /** * Updated the parameter or expected value at the specified outcomeIndex by * adding the specified value to its current value. * * @param outcomeIndex The index of the parameter or expected value to be updated. * @param value The value to be added. */ public void updateParameter(int outcomeIndex, double value) { parameters[outcomeIndex] += value; } public boolean contains(int outcome) { return Arrays.binarySearch(outcomes,outcome) >= 0; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Sequence0100644 0000000 0000000 00000000166 14135770370 032607 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationMo0100664 0001750 0001750 00000004223 14135770370 034120 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import opennlp.tools.util.BeamSearchContextGenerator; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceValidator; /** * A classification model that can label an input sequence. * * @param */ public interface SequenceClassificationModel { /** * Finds the sequence with the highest probability. * * @param sequence * @param additionalContext * @param cg * @param validator * * @return */ Sequence bestSequence(T[] sequence, Object[] additionalContext, BeamSearchContextGenerator cg, SequenceValidator validator); /** * Finds the n most probable sequences. * * @param sequence * @param additionalContext * @param cg * @param validator * * @return */ Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, double minSequenceScore, BeamSearchContextGenerator cg, SequenceValidator validator); /** * Finds the n most probable sequences. * * @param sequence * @param additionalContext * @param cg * @param validator * * @return */ Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, BeamSearchContextGenerator cg, SequenceValidator validator); /** * Returns all possible outcomes. * * @return */ String[] getOutcomes(); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/DataIndexer.java0100664 0001750 0001750 00000005740 14135770370 032315 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.Map; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** Object which compresses events in memory and performs feature selection. */ public interface DataIndexer { /** * Returns the array of predicates seen in each event. * @return a 2-D array whose first dimension is the event index and array this refers to contains * the contexts for that event. */ int[][] getContexts(); /** * Returns an array indicating the number of times a particular event was seen. * @return an array indexed by the event index indicating the number of times a particular event was seen. */ int[] getNumTimesEventsSeen(); /** * Returns an array indicating the outcome index for each event. * @return an array indicating the outcome index for each event. */ int[] getOutcomeList(); /** * Returns an array of predicate/context names. * @return an array of predicate/context names indexed by context index. These indices are the * value of the array returned by getContexts. */ String[] getPredLabels(); /** * Returns an array of the count of each predicate in the events. * @return an array of the count of each predicate in the events. */ int[] getPredCounts(); /** * Returns an array of outcome names. * @return an array of outcome names indexed by outcome index. */ String[] getOutcomeLabels(); /** * Returns the values associated with each event context or null if integer values are to be used. * @return the values associated with each event context. */ float[][] getValues(); /** * Returns the number of total events indexed. * @return The number of total events indexed. */ int getNumEvents(); /** * Sets parameters used during the data indexing. * @param trainParams {@link TrainingParameters} */ void init(TrainingParameters trainParams,Map reportMap); /** * Performs the data indexing. Make sure the init(...) method is called first. * * @param eventStream a stream of events */ void index(ObjectStream eventStream) throws IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/HashSumEventStream.java0100664 0001750 0001750 00000004145 14135770370 033651 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import opennlp.tools.util.AbstractObjectStream; import opennlp.tools.util.ObjectStream; public class HashSumEventStream extends AbstractObjectStream { private MessageDigest digest; public HashSumEventStream(ObjectStream eventStream) { super(eventStream); try { digest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { // should never happen, does all java runtimes have md5 ?! throw new IllegalStateException(e); } } @Override public Event read() throws IOException { Event event = super.read(); if (event != null) { digest.update(event.toString().getBytes(StandardCharsets.UTF_8)); } return event; } /** * Calculates the hash sum of the stream. The method must be * called after the stream is completely consumed. * * @return the hash sum * @throws IllegalStateException if the stream is not consumed completely, * completely means that hasNext() returns false */ public BigInteger calculateHashSum() { return new BigInteger(1, digest.digest()); } public void remove() { } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/EvalParameters.java0100664 0001750 0001750 00000004460 14135770370 033036 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Arrays; import java.util.Objects; /** * This class encapsulates the varibales used in producing probabilities from a model * and facilitaes passing these variables to the eval method. */ public class EvalParameters { /** * Mapping between outcomes and parameter values for each context. * The integer representation of the context can be found using pmap. */ private Context[] params; /** * The number of outcomes being predicted. */ private final int numOutcomes; /** * The maximum number of features fired in an event. Usually referred to as C. * This is used to normalize the number of features which occur in an event. */ private double correctionConstant; public EvalParameters(Context[] params, int numOutcomes) { this.params = params; this.numOutcomes = numOutcomes; } public Context[] getParams() { return params; } public int getNumOutcomes() { return numOutcomes; } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(params), numOutcomes, correctionConstant); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof EvalParameters) { EvalParameters evalParameters = (EvalParameters) obj; return Arrays.equals(params, evalParameters.params) && numOutcomes == evalParameters.numOutcomes && correctionConstant == evalParameters.correctionConstant; } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Comparab0100644 0000000 0000000 00000000156 14135770370 032562 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/ComparablePredicate.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/ComparablePredicate.java0100664 0001750 0001750 00000004576 14135770370 034021 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Arrays; import java.util.Objects; /** * A maxent predicate representation which we can use to sort based on the * outcomes. This allows us to make the mapping of features to their parameters * much more compact. */ public class ComparablePredicate implements Comparable { public String name; public int[] outcomes; public double[] params; public ComparablePredicate(String n, int[] ocs, double[] ps) { name = n; outcomes = ocs; params = ps; } public int compareTo(ComparablePredicate cp) { int smallerLength = StrictMath.min(outcomes.length, cp.outcomes.length); for (int i = 0; i < smallerLength; i++) { int compareOutcomes = Integer.compare(outcomes[i], cp.outcomes[i]); if (compareOutcomes != 0) { return compareOutcomes; } } return Integer.compare(outcomes.length, cp.outcomes.length); } @Override public int hashCode() { return Objects.hash(name, Arrays.hashCode(outcomes), Arrays.hashCode(params)); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj instanceof ComparablePredicate) { ComparablePredicate other = (ComparablePredicate) obj; return Objects.equals(name, other.name) && Arrays.equals(outcomes, other.outcomes) && Arrays.equals(params, other.params); } return false; } public String toString() { StringBuilder s = new StringBuilder(); for (int outcome : outcomes) { s.append(" ").append(outcome); } return s.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/FileEventStream.java0100664 0001750 0001750 00000007022 14135770370 033155 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.util.StringTokenizer; import opennlp.tools.util.ObjectStream; /** * Class for using a file of events as an event stream. The format of the file is one event perline with * each line consisting of outcome followed by contexts (space delimited). */ public class FileEventStream implements ObjectStream { protected final BufferedReader reader; /** * Creates a new file event stream from the specified file name. * @param fileName the name fo the file containing the events. * @throws IOException When the specified file can not be read. */ public FileEventStream(String fileName, String encoding) throws IOException { this(encoding == null ? new FileReader(fileName) : new InputStreamReader(new FileInputStream(fileName), encoding)); } public FileEventStream(String fileName) throws IOException { this(fileName,null); } public FileEventStream(Reader reader) throws IOException { this.reader = new BufferedReader(reader); } /** * Creates a new file event stream from the specified file. * @param file the file containing the events. * @throws IOException When the specified file can not be read. */ public FileEventStream(File file) throws IOException { reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF8")); } @Override public Event read() throws IOException { String line; if ((line = reader.readLine()) != null) { StringTokenizer st = new StringTokenizer(line); String outcome = st.nextToken(); int count = st.countTokens(); String[] context = new String[count]; for (int ci = 0; ci < count; ci++) { context[ci] = st.nextToken(); } return new Event(outcome, context); } else { return null; } } public void close() throws IOException { reader.close(); } /** * Generates a string representing the specified event. * @param event The event for which a string representation is needed. * @return A string representing the specified event. */ public static String toLine(Event event) { StringBuilder sb = new StringBuilder(); sb.append(event.getOutcome()); String[] context = event.getContext(); for (int ci = 0,cl = context.length; ci < cl; ci++) { sb.append(" ").append(context[ci]); } sb.append(System.getProperty("line.separator")); return sb.toString(); } @Override public void reset() throws IOException, UnsupportedOperationException { throw new UnsupportedOperationException(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_DynamicE0100644 0000000 0000000 00000000160 14135770370 032522 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/DynamicEvalParameters.ja0100664 0001750 0001750 00000003207 14135770370 034012 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.List; public class DynamicEvalParameters { /** Mapping between outcomes and paramater values for each context. * The integer representation of the context can be found using pmap.*/ private List params; /** The number of outcomes being predicted. */ private final int numOutcomes; /** * Creates a set of paramters which can be evaulated with the eval method. * @param params The parameters of the model. * @param numOutcomes The number of outcomes. */ public DynamicEvalParameters(List params, int numOutcomes) { this.params = params; this.numOutcomes = numOutcomes; } public Context[] getParams() { return params.toArray(new Context[params.size()]); } public int getNumOutcomes() { return numOutcomes; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/Event.java0100664 0001750 0001750 00000004060 14135770370 031200 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Objects; /** * The context of a decision point during training. This includes * contextual predicates and an outcome. */ public class Event { private final String outcome; private final String[] context; private final float[] values; public Event(String outcome, String[] context) { this(outcome,context,null); } public Event(String outcome, String[] context, float[] values) { this.outcome = Objects.requireNonNull(outcome, "outcome must not be null"); this.context = Objects.requireNonNull(context, "context must not be null"); this.values = values; } public String getOutcome() { return outcome; } public String[] getContext() { return context; } public float[] getValues() { return values; } public String toString() { StringBuilder sb = new StringBuilder(); sb.append(outcome).append(" ["); if (context.length > 0) { sb.append(context[0]); if (values != null) { sb.append("=").append(values[0]); } } for (int ci = 1; ci < context.length; ci++) { sb.append(" ").append(context[ci]); if (values != null) { sb.append("=").append(values[ci]); } } sb.append("]"); return sb.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/GenericModelWriter.java0100664 0001750 0001750 00000005743 14135770370 033662 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.zip.GZIPOutputStream; import opennlp.tools.ml.maxent.io.BinaryGISModelWriter; import opennlp.tools.ml.maxent.io.BinaryQNModelWriter; import opennlp.tools.ml.model.AbstractModel.ModelType; import opennlp.tools.ml.naivebayes.BinaryNaiveBayesModelWriter; import opennlp.tools.ml.perceptron.BinaryPerceptronModelWriter; public class GenericModelWriter extends AbstractModelWriter { private AbstractModelWriter delegateWriter; public GenericModelWriter(AbstractModel model, File file) throws IOException { String filename = file.getName(); OutputStream os; // handle the zipped/not zipped distinction if (filename.endsWith(".gz")) { os = new GZIPOutputStream(new FileOutputStream(file)); filename = filename.substring(0, filename.length() - 3); } else { os = new FileOutputStream(file); } init(model, new DataOutputStream(os)); } public GenericModelWriter(AbstractModel model, DataOutputStream dos) { init(model, dos); } private void init(AbstractModel model, DataOutputStream dos) { if (model.getModelType() == ModelType.Perceptron) { delegateWriter = new BinaryPerceptronModelWriter(model, dos); } else if (model.getModelType() == ModelType.Maxent) { delegateWriter = new BinaryGISModelWriter(model, dos); } else if (model.getModelType() == ModelType.MaxentQn) { delegateWriter = new BinaryQNModelWriter(model, dos); } if (model.getModelType() == ModelType.NaiveBayes) { delegateWriter = new BinaryNaiveBayesModelWriter(model, dos); } } @Override public void close() throws IOException { delegateWriter.close(); } @Override public void persist() throws IOException { delegateWriter.persist(); } @Override public void writeDouble(double d) throws IOException { delegateWriter.writeDouble(d); } @Override public void writeInt(int i) throws IOException { delegateWriter.writeInt(i); } @Override public void writeUTF(String s) throws IOException { delegateWriter.writeUTF(s); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Abstract0100644 0000000 0000000 00000000156 14135770370 032601 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractModelWriter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractModelWriter.java0100664 0001750 0001750 00000002364 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; public abstract class AbstractModelWriter { public AbstractModelWriter() { super(); } public abstract void writeUTF(String s) throws java.io.IOException; public abstract void writeInt(int i) throws java.io.IOException; public abstract void writeDouble(double d) throws java.io.IOException; public abstract void close() throws java.io.IOException; public abstract void persist() throws java.io.IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/OnePassDataIndexer.java0100664 0001750 0001750 00000007102 14135770370 033600 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.ObjectStreamUtils; /** * An indexer for maxent model data which handles cutoffs for uncommon * contextual predicates and provides a unique integer index for each of the * predicates. */ public class OnePassDataIndexer extends AbstractDataIndexer { public OnePassDataIndexer(){} @Override public void index(ObjectStream eventStream) throws IOException { int cutoff = trainingParameters.getIntParameter(CUTOFF_PARAM, CUTOFF_DEFAULT); boolean sort = trainingParameters.getBooleanParameter(SORT_PARAM, SORT_DEFAULT); long start = System.currentTimeMillis(); display("Indexing events with OnePass using cutoff of " + cutoff + "\n\n"); display("\tComputing event counts... "); Map predicateIndex = new HashMap<>(); List events = computeEventCounts(eventStream, predicateIndex, cutoff); display("done. " + events.size() + " events\n"); display("\tIndexing... "); List eventsToCompare = index(ObjectStreamUtils.createObjectStream(events), predicateIndex); display("done.\n"); display("Sorting and merging events... "); sortAndMerge(eventsToCompare, sort); display(String.format("Done indexing in %.2f s.\n", (System.currentTimeMillis() - start) / 1000d)); } /** * Reads events from eventStream into a linked list. The predicates * associated with each event are counted and any which occur at least * cutoff times are added to the predicatesInOut map along * with a unique integer index. * * @param eventStream * an EventStream value * @param predicatesInOut * a TObjectIntHashMap value * @param cutoff * an int value * @return a TLinkedList value */ private List computeEventCounts(ObjectStream eventStream, Map predicatesInOut, int cutoff) throws IOException { Map counter = new HashMap<>(); List events = new LinkedList<>(); Event ev; while ((ev = eventStream.read()) != null) { events.add(ev); update(ev.getContext(), counter); } String[] predicateSet = counter.entrySet().stream() .filter(entry -> entry.getValue() >= cutoff) .map(Map.Entry::getKey).sorted() .toArray(String[]::new); predCounts = new int[predicateSet.length]; for (int i = 0; i < predicateSet.length; i++) { predCounts[i] = counter.get(predicateSet[i]); predicatesInOut.put(predicateSet[i], i); } return events; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/DataReader.java0100664 0001750 0001750 00000002015 14135770370 032111 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; public interface DataReader { public double readDouble() throws IOException; public int readInt() throws IOException; public String readUTF() throws IOException; } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/ComparableEvent.java0100664 0001750 0001750 00000006715 14135770370 033177 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.Arrays; import java.util.Objects; /** * A maxent event representation which we can use to sort based on the * predicates indexes contained in the events. */ public class ComparableEvent implements Comparable { public int outcome; public int[] predIndexes; public int seen = 1; // the number of times this event has been seen. public float[] values; public ComparableEvent(int oc, int[] pids, float[] values) { outcome = oc; this.values = values; predIndexes = pids; } public ComparableEvent(int oc, int[] pids) { this(oc, pids, null); } public int compareTo(ComparableEvent ce) { int compareOutcome = Integer.compare(outcome, ce.outcome); if (compareOutcome != 0) { return compareOutcome; } int smallerLength = StrictMath.min(predIndexes.length, ce.predIndexes.length); for (int i = 0; i < smallerLength; i++) { int comparePredIndexes = Integer.compare(predIndexes[i], ce.predIndexes[i]); if (comparePredIndexes != 0) { return comparePredIndexes; } if (values != null && ce.values != null) { float compareValues = Float.compare(values[i], ce.values[i]); if (!Float.valueOf(compareValues).equals(Float.valueOf(0.0f))) { return (int) compareValues; } } else if (values != null) { float compareValues = Float.compare(values[i], 1.0f); if (!Float.valueOf(compareValues).equals(Float.valueOf(0.0f))) { return (int) compareValues; } } else if (ce.values != null) { float compareValues = Float.compare(1.0f, ce.values[i]); if (!Float.valueOf(compareValues).equals(Float.valueOf(0.0f))) { return (int) compareValues; } } } return Integer.compare(predIndexes.length, ce.predIndexes.length); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj instanceof ComparableEvent) { ComparableEvent other = (ComparableEvent) obj; return outcome == other.outcome && Arrays.equals(predIndexes, other.predIndexes) && seen == other.seen && Arrays.equals(values, other.values); } return false; } @Override public int hashCode() { return Objects.hash(outcome, Arrays.hashCode(predIndexes), seen, Arrays.hashCode(values)); } public String toString() { StringBuilder s = new StringBuilder().append(outcome).append(":"); for (int i = 0; i < predIndexes.length; i++) { s.append(" ").append(predIndexes[i]); if (values != null) { s.append("=").append(values[i]); } } return s.toString(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/DataIndexerFactory.java0100664 0001750 0001750 00000004315 14135770370 033642 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.util.HashMap; import java.util.Map; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.ext.ExtensionLoader; public class DataIndexerFactory { public static DataIndexer getDataIndexer(TrainingParameters parameters, Map reportMap) { // The default is currently a 2-Pass data index. Is this what we really want? String indexerParam = parameters.getStringParameter(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE); // allow the user to pass in a report map. If the don't, create one. if (reportMap == null) { reportMap = new HashMap<>(); } DataIndexer indexer; switch (indexerParam) { case AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE: indexer = new OnePassDataIndexer(); break; case AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE: indexer = new TwoPassDataIndexer(); break; case AbstractEventTrainer.DATA_INDEXER_ONE_PASS_REAL_VALUE: indexer = new OnePassRealValueDataIndexer(); break; default: // if the user passes in a class name for the indexer, try to instantiate the class. indexer = ExtensionLoader.instantiateExtension(DataIndexer.class, indexerParam); } indexer.init(parameters, reportMap); return indexer; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/Prior.java0100664 0001750 0001750 00000005361 14135770370 031217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; /** * This interface allows one to implement a prior distribution for use in * maximum entropy model training. */ public interface Prior { /** * Populates the specified array with the the log of the distribution for the specified context. * The returned array will be overwritten and needs to be re-initialized with every call to this method. * @param dist An array to be populated with the log of the prior distribution. * @param context The indices of the contextual predicates for an event. */ void logPrior(double[] dist, int[] context); /** * Populates the specified array with the the log of the distribution for the specified context. * The returned array will be overwritten and needs to be re-initialized with every call to this method. * @param dist An array to be populated with the log of the prior distribution. * @param context The indices of the contextual predicates for an event. * @param values The values associated with the context. */ void logPrior(double[] dist, int[] context, float[] values); /** * Populates the specified array with the the log of the distribution for the specified context. * The returned array will be overwritten and needs to be re-initialized with every call to this method. * @param dist An array to be populated with the log of the prior distribution. * @param context The indices of the contextual predicates for an event. * @param values The values associated with the context. */ void logPrior(double[] dist, Context[] context, float[] values); /** * Method to specify the label for the outcomes and contexts. This is used to map * integer outcomes and contexts to their string values. This method is called prior * to any call to #logPrior. * @param outcomeLabels An array of each outcome label. * @param contextLabels An array of each context label. */ void setLabels(String[] outcomeLabels, String[] contextLabels); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractModel.java0100664 0001750 0001750 00000013655 14135770370 032655 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.text.DecimalFormat; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; import opennlp.tools.ml.ArrayMath; public abstract class AbstractModel implements MaxentModel { /** Mapping between predicates/contexts and an integer representing them. */ protected Map pmap; /** The names of the outcomes. */ protected String[] outcomeNames; /** Parameters for the model. */ protected EvalParameters evalParams; /** Prior distribution for this model. */ protected Prior prior; public enum ModelType { Maxent,Perceptron,MaxentQn,NaiveBayes } /** The type of the model. */ protected ModelType modelType; protected AbstractModel(Context[] params, String[] predLabels, Map pmap, String[] outcomeNames) { this.pmap = pmap; this.outcomeNames = outcomeNames; this.evalParams = new EvalParameters(params,outcomeNames.length); } public AbstractModel(Context[] params, String[] predLabels, String[] outcomeNames) { init(predLabels, params, outcomeNames); this.evalParams = new EvalParameters(params, outcomeNames.length); } private void init(String[] predLabels, Context[] params, String[] outcomeNames) { this.pmap = new LinkedHashMap<>(predLabels.length); for (int i = 0; i < predLabels.length; i++) { pmap.put(predLabels[i], params[i]); } this.outcomeNames = outcomeNames; } /** * Return the name of the outcome corresponding to the highest likelihood * in the parameter ocs. * * @param ocs A double[] as returned by the eval(String[] context) * method. * @return The name of the most likely outcome. */ public final String getBestOutcome(double[] ocs) { return outcomeNames[ArrayMath.argmax(ocs)]; } public ModelType getModelType() { return modelType; } /** * Return a string matching all the outcome names with all the * probabilities produced by the eval(String[] context) * method. * * @param ocs A double[] as returned by the * eval(String[] context) * method. * @return String containing outcome names paired with the normalized * probability (contained in the double[] ocs) * for each one. */ public final String getAllOutcomes(double[] ocs) { if (ocs.length != outcomeNames.length) { return "The double array sent as a parameter to GISModel.getAllOutcomes() " + "must not have been produced by this model."; } else { DecimalFormat df = new DecimalFormat("0.0000"); StringBuilder sb = new StringBuilder(ocs.length * 2); sb.append(outcomeNames[0]).append("[").append(df.format(ocs[0])).append("]"); for (int i = 1; i < ocs.length; i++) { sb.append(" ").append(outcomeNames[i]).append("[").append(df.format(ocs[i])).append("]"); } return sb.toString(); } } /** * Return the name of an outcome corresponding to an int id. * * @param i An outcome id. * @return The name of the outcome associated with that id. */ public final String getOutcome(int i) { return outcomeNames[i]; } /** * Gets the index associated with the String name of the given outcome. * * @param outcome the String name of the outcome for which the * index is desired * @return the index if the given outcome label exists for this * model, -1 if it does not. **/ public int getIndex(String outcome) { for (int i = 0; i < outcomeNames.length; i++) { if (outcomeNames[i].equals(outcome)) return i; } return -1; } public int getNumOutcomes() { return evalParams.getNumOutcomes(); } /** * Provides the fundamental data structures which encode the maxent model * information. This method will usually only be needed by * GISModelWriters. The following values are held in the Object array * which is returned by this method: *

    *
  • index 0: opennlp.tools.ml.maxent.Context[] containing the model * parameters *
  • index 1: java.util.Map containing the mapping of model predicates * to unique integers *
  • index 2: java.lang.String[] containing the names of the outcomes, * stored in the index of the array which represents their * unique ids in the model. *
* * @return An Object[] with the values as described above. */ public final Object[] getDataStructures() { Object[] data = new Object[3]; data[0] = evalParams.getParams(); data[1] = pmap; data[2] = outcomeNames; return data; } @Override public int hashCode() { return Objects.hash(pmap, Arrays.hashCode(outcomeNames), evalParams, prior); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof AbstractModel) { AbstractModel model = (AbstractModel) obj; return pmap.equals(model.pmap) && Objects.deepEquals(outcomeNames, model.outcomeNames) && Objects.equals(prior, model.prior); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_Abstract0100644 0000000 0000000 00000000156 14135770370 032601 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractDataIndexer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/AbstractDataIndexer.java0100664 0001750 0001750 00000017723 14135770370 034005 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import opennlp.tools.ml.AbstractTrainer; import opennlp.tools.util.InsufficientTrainingDataException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * Abstract class for collecting event and context counts used in training. * */ public abstract class AbstractDataIndexer implements DataIndexer { public static final String CUTOFF_PARAM = AbstractTrainer.CUTOFF_PARAM; public static final int CUTOFF_DEFAULT = AbstractTrainer.CUTOFF_DEFAULT; public static final String SORT_PARAM = "sort"; public static final boolean SORT_DEFAULT = true; protected TrainingParameters trainingParameters; protected Map reportMap; protected boolean printMessages; public void init(TrainingParameters indexingParameters,Map reportMap) { this.reportMap = reportMap; if (this.reportMap == null) reportMap = new HashMap<>(); trainingParameters = indexingParameters; printMessages = trainingParameters.getBooleanParameter(AbstractTrainer.VERBOSE_PARAM, AbstractTrainer.VERBOSE_DEFAULT); } private int numEvents; /** The integer contexts associated with each unique event. */ protected int[][] contexts; /** The integer outcome associated with each unique event. */ protected int[] outcomeList; /** The number of times an event occured in the training data. */ protected int[] numTimesEventsSeen; /** The predicate/context names. */ protected String[] predLabels; /** The names of the outcomes. */ protected String[] outcomeLabels; /** The number of times each predicate occured. */ protected int[] predCounts; public int[][] getContexts() { return contexts; } public int[] getNumTimesEventsSeen() { return numTimesEventsSeen; } public int[] getOutcomeList() { return outcomeList; } public String[] getPredLabels() { return predLabels; } public String[] getOutcomeLabels() { return outcomeLabels; } public int[] getPredCounts() { return predCounts; } /** * Sorts and uniques the array of comparable events and return the number of unique events. * This method will alter the eventsToCompare array -- it does an in place * sort, followed by an in place edit to remove duplicates. * * @param eventsToCompare a ComparableEvent[] value * @return The number of unique events in the specified list. * @throws InsufficientTrainingDataException if not enough events are provided * @since maxent 1.2.6 */ protected int sortAndMerge(List eventsToCompare, boolean sort) throws InsufficientTrainingDataException { int numUniqueEvents = 1; numEvents = eventsToCompare.size(); if (sort && eventsToCompare.size() > 0) { Collections.sort(eventsToCompare); ComparableEvent ce = eventsToCompare.get(0); for (int i = 1; i < numEvents; i++) { ComparableEvent ce2 = eventsToCompare.get(i); if (ce.compareTo(ce2) == 0) { ce.seen++; // increment the seen count eventsToCompare.set(i, null); // kill the duplicate } else { ce = ce2; // a new champion emerges... numUniqueEvents++; // increment the # of unique events } } } else { numUniqueEvents = eventsToCompare.size(); } if (numUniqueEvents == 0) { throw new InsufficientTrainingDataException("Insufficient training data to create model."); } if (sort) display("done. Reduced " + numEvents + " events to " + numUniqueEvents + ".\n"); contexts = new int[numUniqueEvents][]; outcomeList = new int[numUniqueEvents]; numTimesEventsSeen = new int[numUniqueEvents]; for (int i = 0, j = 0; i < numEvents; i++) { ComparableEvent evt = eventsToCompare.get(i); if (null == evt) { continue; // this was a dupe, skip over it. } numTimesEventsSeen[j] = evt.seen; outcomeList[j] = evt.outcome; contexts[j] = evt.predIndexes; ++j; } return numUniqueEvents; } protected List index(ObjectStream events, Map predicateIndex) throws IOException { Map omap = new HashMap<>(); List eventsToCompare = new ArrayList<>(); Event ev; while ((ev = events.read()) != null) { omap.putIfAbsent(ev.getOutcome(), omap.size()); int[] cons = Arrays.stream(ev.getContext()) .map(pred -> predicateIndex.get(pred)) .filter(Objects::nonNull) .mapToInt(i -> i).toArray(); // drop events with no active features if (cons.length > 0) { int ocID = omap.get(ev.getOutcome()); eventsToCompare.add(new ComparableEvent(ocID, cons, ev.getValues())); } else { display("Dropped event " + ev.getOutcome() + ":" + Arrays.asList(ev.getContext()) + "\n"); } } outcomeLabels = toIndexedStringArray(omap); predLabels = toIndexedStringArray(predicateIndex); return eventsToCompare; } public int getNumEvents() { return numEvents; } /** * Updates the set of predicated and counter with the specified event contexts and cutoff. * @param ec The contexts/features which occur in a event. * @param predicateSet The set of predicates which will be used for model building. * @param counter The predicate counters. * @param cutoff The cutoff which determines whether a predicate is included. * @deprecated will be removed after 1.8.1 release */ @Deprecated protected static void update(String[] ec, Set predicateSet, Map counter, int cutoff) { for (String s : ec) { counter.merge(s, 1, (value, one) -> value + one); if (!predicateSet.contains(s) && counter.get(s) >= cutoff) { predicateSet.add(s); } } } /** * Updates the set of predicated and counter with the specified event contexts. * @param ec The contexts/features which occur in a event. * @param counter The predicate counters. */ protected static void update(String[] ec, Map counter) { for (String s : ec) { counter.merge(s, 1, (value, one) -> value + one); } } /** * Utility method for creating a String[] array from a map whose * keys are labels (Strings) to be stored in the array and whose * values are the indices (Integers) at which the corresponding * labels should be inserted. * * @param labelToIndexMap a TObjectIntHashMap value * @return a String[] value */ protected static String[] toIndexedStringArray(Map labelToIndexMap) { return labelToIndexMap.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getValue)) .map(Map.Entry::getKey).toArray(String[]::new); } public float[][] getValues() { return null; } protected void display(String s) { if (printMessages) { System.out.print(s); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_ml_model_BinaryFi0100644 0000000 0000000 00000000157 14135770370 032542 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/BinaryFileDataReader.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/model/BinaryFileDataReader.jav0100664 0001750 0001750 00000003557 14135770370 033731 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml.model; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.GZIPInputStream; public class BinaryFileDataReader implements DataReader { private DataInputStream input; public BinaryFileDataReader(File f) throws IOException { if (f.getName().endsWith(".gz")) { input = new DataInputStream(new BufferedInputStream( new GZIPInputStream(new BufferedInputStream(new FileInputStream(f))))); } else { input = new DataInputStream(new BufferedInputStream(new FileInputStream(f))); } } public BinaryFileDataReader(InputStream in) { input = new DataInputStream(in); } public BinaryFileDataReader(DataInputStream in) { input = in; } public double readDouble() throws IOException { return input.readDouble(); } public int readInt() throws IOException { return input.readInt(); } public String readUTF() throws IOException { return input.readUTF(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractTrainer.java0100664 0001750 0001750 00000011137 14135770370 032112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.ml; import java.util.HashMap; import java.util.Map; import opennlp.tools.ml.maxent.GISTrainer; import opennlp.tools.util.TrainingParameters; public abstract class AbstractTrainer { public static final String ALGORITHM_PARAM = "Algorithm"; public static final String TRAINER_TYPE_PARAM = "TrainerType"; public static final String CUTOFF_PARAM = "Cutoff"; public static final int CUTOFF_DEFAULT = 5; public static final String ITERATIONS_PARAM = "Iterations"; public static final int ITERATIONS_DEFAULT = 100; public static final String VERBOSE_PARAM = "PrintMessages"; public static final boolean VERBOSE_DEFAULT = true; protected TrainingParameters trainingParameters; protected Map reportMap; protected boolean printMessages; public AbstractTrainer() { } public AbstractTrainer(TrainingParameters parameters) { init(parameters,new HashMap<>()); } public void init(TrainingParameters trainingParameters, Map reportMap) { this.trainingParameters = trainingParameters; if (reportMap == null) reportMap = new HashMap<>(); this.reportMap = reportMap; printMessages = trainingParameters.getBooleanParameter(VERBOSE_PARAM, VERBOSE_DEFAULT); } @Deprecated public void init(Map trainParams, Map reportMap) { init(new TrainingParameters(trainParams),reportMap); } public String getAlgorithm() { return trainingParameters.getStringParameter(ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE); } public int getCutoff() { return trainingParameters.getIntParameter(CUTOFF_PARAM, CUTOFF_DEFAULT); } public int getIterations() { return trainingParameters.getIntParameter(ITERATIONS_PARAM, ITERATIONS_DEFAULT); } /** * Check parameters. If subclass overrides this, it should call super.validate(); * * @throws java.lang.IllegalArgumentException */ public void validate() { // TODO: Need to validate all parameters correctly ... error prone?! // should validate if algorithm is set? What about the Parser? try { trainingParameters.getIntParameter(CUTOFF_PARAM, CUTOFF_DEFAULT); trainingParameters.getIntParameter(ITERATIONS_PARAM, ITERATIONS_DEFAULT); } catch (NumberFormatException e) { throw new IllegalArgumentException(e); } } /** * @deprecated Use {@link #validate()} instead. * @return */ @Deprecated public boolean isValid() { try { validate(); return true; } catch (IllegalArgumentException e) { return false; } } /** * Use the TrainingParameters directly... * @param key * @param defaultValue */ @Deprecated protected String getStringParam(String key, String defaultValue) { return trainingParameters.getStringParameter(key, defaultValue); } /** * Use the PluggableParameters directly... * @param key * @param defaultValue */ @Deprecated protected int TrainingParameters(String key, int defaultValue) { return trainingParameters.getIntParameter(key, defaultValue); } /** * Use the PluggableParameters directly... * @param key * @param defaultValue */ @Deprecated protected double getDoubleParam(String key, double defaultValue) { return trainingParameters.getDoubleParameter(key, defaultValue); } /** * Use the PluggableParameters directly... * @param key * @param defaultValue */ @Deprecated protected boolean getBooleanParam(String key, boolean defaultValue) { return trainingParameters.getBooleanParameter(key, defaultValue); } /** * Adds the key/Value to the report map. * @param key * @param value */ protected void addToReport(String key, String value) { reportMap.put(key, value); } protected void display(String s) { if (printMessages) { System.out.print(s); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_DefaultPOS0100644 0000000 0000000 00000000164 14135770370 032510 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSSequenceValidato0100664 0001750 0001750 00000002664 14135770370 034117 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.util.Arrays; import opennlp.tools.util.SequenceValidator; public class DefaultPOSSequenceValidator implements SequenceValidator { private TagDictionary tagDictionary; public DefaultPOSSequenceValidator(TagDictionary tagDictionary) { this.tagDictionary = tagDictionary; } public boolean validSequence(int i, String[] inputSequence, String[] outcomesSequence, String outcome) { if (tagDictionary == null) { return true; } else { String[] tags = tagDictionary.getTags(inputSequence[i]); return tags == null || Arrays.asList(tags).contains(outcome); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java0100664 0001750 0001750 00000014260 14135770370 031331 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import java.util.Objects; import java.util.Properties; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.BaseModel; import opennlp.tools.util.model.ByteArraySerializer; import opennlp.tools.util.model.POSModelSerializer; import opennlp.tools.util.model.SerializableArtifact; /** * The {@link POSModel} is the model used * by a learnable {@link POSTagger}. * * @see POSTaggerME */ public final class POSModel extends BaseModel implements SerializableArtifact { private static final String COMPONENT_NAME = "POSTaggerME"; static final String POS_MODEL_ENTRY_NAME = "pos.model"; static final String GENERATOR_DESCRIPTOR_ENTRY_NAME = "generator.featuregen"; public POSModel(String languageCode, SequenceClassificationModel posModel, Map manifestInfoEntries, POSTaggerFactory posFactory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, posFactory); artifactMap.put(POS_MODEL_ENTRY_NAME, Objects.requireNonNull(posModel, "posModel must not be null")); artifactMap.put(GENERATOR_DESCRIPTOR_ENTRY_NAME, posFactory.getFeatureGenerator()); for (Map.Entry resource : posFactory.getResources().entrySet()) { artifactMap.put(resource.getKey(), resource.getValue()); } // TODO: This fails probably for the sequence model ... ?! // checkArtifactMap(); } public POSModel(String languageCode, MaxentModel posModel, Map manifestInfoEntries, POSTaggerFactory posFactory) { this(languageCode, posModel, POSTaggerME.DEFAULT_BEAM_SIZE, manifestInfoEntries, posFactory); } public POSModel(String languageCode, MaxentModel posModel, int beamSize, Map manifestInfoEntries, POSTaggerFactory posFactory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, posFactory); Objects.requireNonNull(posModel, "posModel must not be null"); Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.setProperty(BeamSearch.BEAM_SIZE_PARAMETER, Integer.toString(beamSize)); artifactMap.put(POS_MODEL_ENTRY_NAME, posModel); artifactMap.put(GENERATOR_DESCRIPTOR_ENTRY_NAME, posFactory.getFeatureGenerator()); for (Map.Entry resource : posFactory.getResources().entrySet()) { artifactMap.put(resource.getKey(), resource.getValue()); } checkArtifactMap(); } public POSModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public POSModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public POSModel(Path modelPath) throws IOException { this(modelPath.toFile()); } public POSModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } @Override protected Class getDefaultFactory() { return POSTaggerFactory.class; } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof MaxentModel)) { throw new InvalidFormatException("POS model is incomplete!"); } } /** * @deprecated use getPosSequenceModel instead. This method will be removed soon. * Only required for Parser 1.5.x backward compatibility. Newer models don't need this anymore. */ @Deprecated public MaxentModel getPosModel() { if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof MaxentModel) { return (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME); } else { return null; } } public SequenceClassificationModel getPosSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof MaxentModel) { String beamSizeString = manifest.getProperty(BeamSearch.BEAM_SIZE_PARAMETER); int beamSize = POSTaggerME.DEFAULT_BEAM_SIZE; if (beamSizeString != null) { beamSize = Integer.parseInt(beamSizeString); } return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME)); } else if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(POS_MODEL_ENTRY_NAME); } else { return null; } } public POSTaggerFactory getFactory() { return (POSTaggerFactory) this.toolFactory; } @Override protected void createArtifactSerializers(Map serializers) { super.createArtifactSerializers(serializers); serializers.put("featuregen", new ByteArraySerializer()); } /** * Retrieves the ngram dictionary. * * @return ngram dictionary or null if not used */ public Dictionary getNgramDictionary() { if (getFactory() != null) return getFactory().getDictionary(); return null; } @Override public Class getArtifactSerializerClass() { return POSModelSerializer.class; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/package-info.java0100664 0001750 0001750 00000001566 14135770370 032240 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to part-of-speech tagging. */ package opennlp.tools.postag; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java0100664 0001750 0001750 00000033105 14135770370 033031 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.namefind.TokenNameFinderFactory; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.Version; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; import opennlp.tools.util.featuregen.AggregatedFeatureGenerator; import opennlp.tools.util.featuregen.GeneratorFactory; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.UncloseableInputStream; /** * The factory that provides POS Tagger default implementations and resources */ public class POSTaggerFactory extends BaseToolFactory { private static final String TAG_DICTIONARY_ENTRY_NAME = "tags.tagdict"; private static final String NGRAM_DICTIONARY_ENTRY_NAME = "ngram.dictionary"; protected Dictionary ngramDictionary; private byte[] featureGeneratorBytes; private Map resources; protected TagDictionary posDictionary; /** * Creates a {@link POSTaggerFactory} that provides the default implementation * of the resources. */ public POSTaggerFactory() { } /** * Creates a {@link POSTaggerFactory}. Use this constructor to * programmatically create a factory. * * @param ngramDictionary * @param posDictionary * * @deprecated this constructor is here for backward compatibility and * is not functional anymore in the training of 1.8.x series models */ @Deprecated public POSTaggerFactory(Dictionary ngramDictionary, TagDictionary posDictionary) { this.init(ngramDictionary, posDictionary); // TODO: This could be made functional by creating some default feature generation // which uses the dictionary ... } public POSTaggerFactory(byte[] featureGeneratorBytes, final Map resources, TagDictionary posDictionary) { this.featureGeneratorBytes = featureGeneratorBytes; if (this.featureGeneratorBytes == null) { this.featureGeneratorBytes = loadDefaultFeatureGeneratorBytes(); } this.resources = resources; this.posDictionary = posDictionary; } @Deprecated // will be removed when only 8 series models are supported protected void init(Dictionary ngramDictionary, TagDictionary posDictionary) { this.ngramDictionary = ngramDictionary; this.posDictionary = posDictionary; } protected void init(byte[] featureGeneratorBytes, final Map resources, TagDictionary posDictionary) { this.featureGeneratorBytes = featureGeneratorBytes; this.resources = resources; this.posDictionary = posDictionary; } private static byte[] loadDefaultFeatureGeneratorBytes() { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); try (InputStream in = TokenNameFinderFactory.class.getResourceAsStream( "/opennlp/tools/postag/pos-default-features.xml")) { if (in == null) { throw new IllegalStateException("Classpath must contain pos-default-features.xml file!"); } byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { bytes.write(buf, 0, len); } } catch (IOException e) { throw new IllegalStateException("Failed reading from pos-default-features.xml file on classpath!"); } return bytes.toByteArray(); } /** * Creates the {@link AdaptiveFeatureGenerator}. Usually this * is a set of generators contained in the {@link AggregatedFeatureGenerator}. * * Note: * The generators are created on every call to this method. * * @return the feature generator or null if there is no descriptor in the model */ public AdaptiveFeatureGenerator createFeatureGenerators() { if (featureGeneratorBytes == null && artifactProvider != null) { featureGeneratorBytes = artifactProvider.getArtifact( POSModel.GENERATOR_DESCRIPTOR_ENTRY_NAME); } if (featureGeneratorBytes == null) { featureGeneratorBytes = loadDefaultFeatureGeneratorBytes(); } InputStream descriptorIn = new ByteArrayInputStream(featureGeneratorBytes); AdaptiveFeatureGenerator generator; try { generator = GeneratorFactory.create(descriptorIn, key -> { if (artifactProvider != null) { return artifactProvider.getArtifact(key); } else { return resources.get(key); } }); } catch (InvalidFormatException e) { // It is assumed that the creation of the feature generation does not // fail after it succeeded once during model loading. // But it might still be possible that such an exception is thrown, // in this case the caller should not be forced to handle the exception // and a Runtime Exception is thrown instead. // If the re-creation of the feature generation fails it is assumed // that this can only be caused by a programming mistake and therefore // throwing a Runtime Exception is reasonable throw new IllegalStateException(); // FeatureGeneratorCreationError(e); } catch (IOException e) { throw new IllegalStateException("Reading from mem cannot result in an I/O error", e); } return generator; } @Override @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { Map serializers = super.createArtifactSerializersMap(); // NOTE: This is only needed for old models and this if can be removed if support is dropped POSDictionarySerializer.register(serializers); return serializers; } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); if (posDictionary != null) artifactMap.put(TAG_DICTIONARY_ENTRY_NAME, posDictionary); if (ngramDictionary != null) artifactMap.put(NGRAM_DICTIONARY_ENTRY_NAME, ngramDictionary); return artifactMap; } public TagDictionary createTagDictionary(File dictionary) throws IOException { return createTagDictionary(new FileInputStream(dictionary)); } public TagDictionary createTagDictionary(InputStream in) throws IOException { return POSDictionary.create(in); } public void setTagDictionary(TagDictionary dictionary) { if (artifactProvider != null) { throw new IllegalStateException( "Can not set tag dictionary while using artifact provider."); } this.posDictionary = dictionary; } protected Map getResources() { if (resources != null) { return resources; } return Collections.emptyMap(); } protected byte[] getFeatureGenerator() { return featureGeneratorBytes; } public TagDictionary getTagDictionary() { if (this.posDictionary == null && artifactProvider != null) this.posDictionary = artifactProvider.getArtifact(TAG_DICTIONARY_ENTRY_NAME); return this.posDictionary; } /** * @deprecated this will be reduced in visibility and later removed */ @Deprecated public Dictionary getDictionary() { if (this.ngramDictionary == null && artifactProvider != null) this.ngramDictionary = artifactProvider.getArtifact(NGRAM_DICTIONARY_ENTRY_NAME); return this.ngramDictionary; } @Deprecated public void setDictionary(Dictionary ngramDict) { if (artifactProvider != null) { throw new IllegalStateException( "Can not set ngram dictionary while using artifact provider."); } this.ngramDictionary = ngramDict; } public POSContextGenerator getPOSContextGenerator() { return getPOSContextGenerator(0); } public POSContextGenerator getPOSContextGenerator(int cacheSize) { if (artifactProvider != null) { Properties manifest = (Properties) artifactProvider.getArtifact("manifest.properties"); String version = manifest.getProperty("OpenNLP-Version"); if (Version.parse(version).getMinor() < 8) { return new DefaultPOSContextGenerator(cacheSize, getDictionary()); } } return new ConfigurablePOSContextGenerator(cacheSize, createFeatureGenerators()); } public SequenceValidator getSequenceValidator() { return new DefaultPOSSequenceValidator(getTagDictionary()); } // TODO: This should not be done anymore for 8 models, they can just // use the SerializableArtifact interface public static class POSDictionarySerializer implements ArtifactSerializer { public POSDictionary create(InputStream in) throws IOException { return POSDictionary.create(new UncloseableInputStream(in)); } public void serialize(POSDictionary artifact, OutputStream out) throws IOException { artifact.serialize(out); } @SuppressWarnings("rawtypes") static void register(Map factories) { factories.put("tagdict", new POSDictionarySerializer()); } } protected void validatePOSDictionary(POSDictionary posDict, AbstractModel posModel) throws InvalidFormatException { Set dictTags = new HashSet<>(); for (String word : posDict) { Collections.addAll(dictTags, posDict.getTags(word)); } Set modelTags = new HashSet<>(); for (int i = 0; i < posModel.getNumOutcomes(); i++) { modelTags.add(posModel.getOutcome(i)); } if (!modelTags.containsAll(dictTags)) { StringBuilder unknownTag = new StringBuilder(); for (String d : dictTags) { if (!modelTags.contains(d)) { unknownTag.append(d).append(" "); } } throw new InvalidFormatException("Tag dictionary contains tags " + "which are unknown by the model! The unknown tags are: " + unknownTag); } } @Override public void validateArtifactMap() throws InvalidFormatException { // Ensure that the tag dictionary is compatible with the model Object tagdictEntry = this.artifactProvider .getArtifact(TAG_DICTIONARY_ENTRY_NAME); if (tagdictEntry != null) { if (tagdictEntry instanceof POSDictionary) { if (!this.artifactProvider.isLoadedFromSerialized()) { AbstractModel posModel = this.artifactProvider .getArtifact(POSModel.POS_MODEL_ENTRY_NAME); POSDictionary posDict = (POSDictionary) tagdictEntry; validatePOSDictionary(posDict, posModel); } } else { throw new InvalidFormatException( "POSTag dictionary has wrong type!"); } } Object ngramDictEntry = this.artifactProvider .getArtifact(NGRAM_DICTIONARY_ENTRY_NAME); if (ngramDictEntry != null && !(ngramDictEntry instanceof Dictionary)) { throw new InvalidFormatException("NGram dictionary has wrong type!"); } } @Deprecated public static POSTaggerFactory create(String subclassName, Dictionary ngramDictionary, TagDictionary posDictionary) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new POSTaggerFactory(ngramDictionary, posDictionary); } try { POSTaggerFactory theFactory = ExtensionLoader.instantiateExtension( POSTaggerFactory.class, subclassName); theFactory.init(ngramDictionary, posDictionary); return theFactory; } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; throw new InvalidFormatException(msg, e); } } public static POSTaggerFactory create(String subclassName, byte[] featureGeneratorBytes, Map resources, TagDictionary posDictionary) throws InvalidFormatException { POSTaggerFactory theFactory; if (subclassName == null) { // will create the default factory theFactory = new POSTaggerFactory(null, posDictionary); } else { try { theFactory = ExtensionLoader.instantiateExtension( POSTaggerFactory.class, subclassName); } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; throw new InvalidFormatException(msg, e); } } theFactory.init(featureGeneratorBytes, resources, posDictionary); return theFactory; } public TagDictionary createEmptyTagDictionary() { this.posDictionary = new POSDictionary(true); return this.posDictionary; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/WordTagSampleStream.java0100664 0001750 0001750 00000004321 14135770370 033571 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ObjectStream; /** * A stream filter which reads a sentence per line which contains * words and tags in word_tag format and outputs a {@link POSSample} objects. */ public class WordTagSampleStream extends FilterObjectStream { /** * Initializes the current instance. * * @param sentences the sentences */ public WordTagSampleStream(ObjectStream sentences) { super(sentences); } /** * Parses the next sentence and return the next * {@link POSSample} object. * * If an error occurs an empty {@link POSSample} object is returned * and an warning message is logged. Usually it does not matter if one * of many sentences is ignored. * * TODO: An exception in error case should be thrown. */ public POSSample read() throws IOException { String sentence = samples.read(); if (sentence != null) { POSSample sample; try { sample = POSSample.parse(sentence); } catch (InvalidFormatException e) { System.out.println("Error during parsing, ignoring sentence: " + sentence); sample = new POSSample(new String[]{}, new String[]{}); } return sample; } else { // sentences stream is exhausted return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSContextGenerator.java0100664 0001750 0001750 00000002145 14135770370 033563 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import opennlp.tools.util.BeamSearchContextGenerator; /** * The interface for a context generator for the POS Tagger. */ public interface POSContextGenerator extends BeamSearchContextGenerator { String[] getContext(int pos, String[] tokens, String[] prevTags, Object[] ac); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_Configurab0100644 0000000 0000000 00000000170 14135770370 032616 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/ConfigurablePOSContextGene0100664 0001750 0001750 00000006253 14135770370 034120 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.util.ArrayList; import java.util.List; import java.util.Objects; import opennlp.tools.util.Cache; import opennlp.tools.util.featuregen.AdaptiveFeatureGenerator; /** * A context generator for the POS Tagger. */ public class ConfigurablePOSContextGenerator implements POSContextGenerator { private Cache contextsCache; private Object wordsKey; private final AdaptiveFeatureGenerator featureGenerator; /** * Initializes the current instance. * * @param cacheSize */ public ConfigurablePOSContextGenerator(int cacheSize, AdaptiveFeatureGenerator featureGenerator) { this.featureGenerator = Objects.requireNonNull(featureGenerator, "featureGenerator must not be null"); if (cacheSize > 0) { contextsCache = new Cache<>(cacheSize); } } /** * Initializes the current instance. * */ public ConfigurablePOSContextGenerator(AdaptiveFeatureGenerator featureGenerator) { this(0, featureGenerator); } /** * Returns the context for making a pos tag decision at the specified token index * given the specified tokens and previous tags. * @param index The index of the token for which the context is provided. * @param tokens The tokens in the sentence. * @param tags The tags assigned to the previous words in the sentence. * @return The context for making a pos tag decision at the specified token index * given the specified tokens and previous tags. */ public String[] getContext(int index, String[] tokens, String[] tags, Object[] additionalContext) { String tagprev = null; String tagprevprev = null; if (index - 1 >= 0) { tagprev = tags[index - 1]; if (index - 2 >= 0) { tagprevprev = tags[index - 2]; } } String cacheKey = index + tagprev + tagprevprev; if (contextsCache != null) { if (wordsKey == tokens) { String[] cachedContexts = contextsCache.get(cacheKey); if (cachedContexts != null) { return cachedContexts; } } else { contextsCache.clear(); wordsKey = tokens; } } List e = new ArrayList<>(); featureGenerator.createFeatures(e, tokens, index, tags); String[] contexts = e.toArray(new String[e.size()]); if (contextsCache != null) { contextsCache.put(cacheKey, contexts); } return contexts; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_POSSampleS0100644 0000000 0000000 00000000160 14135770370 032464 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSSampleSequenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSSampleSequenceStream.ja0100664 0001750 0001750 00000005663 14135770370 034037 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.Sequence; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.ObjectStream; public class POSSampleSequenceStream implements SequenceStream { private POSContextGenerator pcg; private ObjectStream psi; public POSSampleSequenceStream(ObjectStream psi) throws IOException { this(psi, new DefaultPOSContextGenerator(null)); } public POSSampleSequenceStream(ObjectStream psi, POSContextGenerator pcg) throws IOException { this.psi = psi; this.pcg = pcg; } @SuppressWarnings("unchecked") public Event[] updateContext(Sequence sequence, AbstractModel model) { Sequence pss = sequence; POSTagger tagger = new POSTaggerME(new POSModel("x-unspecified", model, null, new POSTaggerFactory())); String[] sentence = pss.getSource().getSentence(); Object[] ac = pss.getSource().getAddictionalContext(); String[] tags = tagger.tag(pss.getSource().getSentence()); Event[] events = new Event[sentence.length]; POSSampleEventStream.generateEvents(sentence, tags, ac, pcg) .toArray(events); return events; } @Override public Sequence read() throws IOException { POSSample sample = psi.read(); if (sample != null) { String[] sentence = sample.getSentence(); String[] tags = sample.getTags(); Event[] events = new Event[sentence.length]; for (int i = 0; i < sentence.length; i++) { // it is safe to pass the tags as previous tags because // the context generator does not look for non predicted tags String[] context = pcg.getContext(i, sentence, tags, null); events[i] = new Event(tags[i], context); } Sequence sequence = new Sequence(events,sample); return sequence; } return null; } @Override public void reset() throws IOException, UnsupportedOperationException { psi.reset(); } @Override public void close() throws IOException { psi.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSSampleEventStream.java0100664 0001750 0001750 00000005707 14135770370 033676 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; /** * This class reads the {@link POSSample}s from the given {@link Iterator} * and converts the {@link POSSample}s into {@link Event}s which * can be used by the maxent library for training. */ public class POSSampleEventStream extends AbstractEventStream { /** * The {@link POSContextGenerator} used * to create the training {@link Event}s. */ private POSContextGenerator cg; /** * Initializes the current instance with the given samples and the * given {@link POSContextGenerator}. * * @param samples * @param cg */ public POSSampleEventStream(ObjectStream samples, POSContextGenerator cg) { super(samples); this.cg = cg; } /** * Initializes the current instance with given samples * and a {@link DefaultPOSContextGenerator}. * @param samples */ public POSSampleEventStream(ObjectStream samples) { this(samples, new DefaultPOSContextGenerator(null)); } @Override protected Iterator createEvents(POSSample sample) { String[] sentence = sample.getSentence(); String[] tags = sample.getTags(); Object[] ac = sample.getAddictionalContext(); List events = generateEvents(sentence, tags, ac, cg); return events.iterator(); } public static List generateEvents(String[] sentence, String[] tags, Object[] additionalContext, POSContextGenerator cg) { List events = new ArrayList(sentence.length); for (int i = 0; i < sentence.length; i++) { // it is safe to pass the tags as previous tags because // the context generator does not look for non predicted tags String[] context = cg.getContext(i, sentence, tags, additionalContext); events.add(new Event(tags[i], context)); } return events; } public static List generateEvents(String[] sentence, String[] tags, POSContextGenerator cg) { return generateEvents(sentence, tags, null, cg); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java0100664 0001750 0001750 00000010764 14135770370 031517 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.Serializable; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.InvalidFormatException; /** * Represents an pos-tagged sentence. */ public class POSSample implements Serializable { private List sentence; private List tags; private final String[][] additionalContext; public POSSample(String[] sentence, String[] tags) { this(sentence, tags, null); } public POSSample(List sentence, List tags) { this(sentence, tags, null); } public POSSample(List sentence, List tags, String[][] additionalContext) { this.sentence = Collections.unmodifiableList(sentence); this.tags = Collections.unmodifiableList(tags); checkArguments(); String[][] ac; if (additionalContext != null) { ac = new String[additionalContext.length][]; for (int i = 0; i < additionalContext.length; i++) { ac[i] = new String[additionalContext[i].length]; System.arraycopy(additionalContext[i], 0, ac[i], 0, additionalContext[i].length); } } else { ac = null; } this.additionalContext = ac; } public POSSample(String[] sentence, String[] tags, String[][] additionalContext) { this(Arrays.asList(sentence), Arrays.asList(tags), additionalContext); } private void checkArguments() { if (sentence.size() != tags.size()) { throw new IllegalArgumentException( "There must be exactly one tag for each token. tokens: " + sentence.size() + ", tags: " + tags.size()); } if (sentence.contains(null)) { throw new IllegalArgumentException("null elements are not allowed in sentence tokens!"); } if (tags.contains(null)) { throw new IllegalArgumentException("null elements are not allowed in tags!"); } } public String[] getSentence() { return sentence.toArray(new String[sentence.size()]); } public String[] getTags() { return tags.toArray(new String[tags.size()]); } public String[][] getAddictionalContext() { return this.additionalContext; } @Override public String toString() { StringBuilder result = new StringBuilder(); for (int i = 0; i < getSentence().length; i++) { result.append(getSentence()[i]); result.append('_'); result.append(getTags()[i]); result.append(' '); } if (result.length() > 0) { // get rid of last space result.setLength(result.length() - 1); } return result.toString(); } public static POSSample parse(String sentenceString) throws InvalidFormatException { String[] tokenTags = WhitespaceTokenizer.INSTANCE.tokenize(sentenceString); String[] sentence = new String[tokenTags.length]; String[] tags = new String[tokenTags.length]; for (int i = 0; i < tokenTags.length; i++) { int split = tokenTags[i].lastIndexOf("_"); if (split == -1) { throw new InvalidFormatException("Cannot find \"_\" inside token '" + tokenTags[i] + "'!"); } sentence[i] = tokenTags[i].substring(0, split); tags[i] = tokenTags[i].substring(split + 1); } return new POSSample(sentence, tags); } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(getSentence()), Arrays.hashCode(getTags())); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof POSSample) { POSSample a = (POSSample) obj; return Arrays.equals(getSentence(), a.getSentence()) && Arrays.equals(getTags(), a.getTags()); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_POSTaggerE0100644 0000000 0000000 00000000163 14135770370 032441 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerEvaluationMonitor0100664 0001750 0001750 00000001712 14135770370 034160 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import opennlp.tools.util.eval.EvaluationMonitor; public interface POSTaggerEvaluationMonitor extends EvaluationMonitor { } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/MutableTagDictionary.java0100664 0001750 0001750 00000003432 14135770370 033761 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; /** * Interface that allows {@link TagDictionary} entries to be added and removed. * This can be used to induce the dictionary from training data. */ public interface MutableTagDictionary extends TagDictionary { /** * Associates the specified tags with the specified word. If the dictionary * previously contained keys for the word, the old tags are replaced by the * specified tags. * * @param word * word with which the specified tags is to be associated * @param tags * tags to be associated with the specified word * * @return the previous tags associated with the word, or null if there was no * mapping for word. */ String[] put(String word, String... tags); /** * Whether if the dictionary is case sensitive or not * * @return true if the dictionary is case sensitive */ // TODO: move to TagDictionary, can't do it now because of backward // compatibility. boolean isCaseSensitive(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_POSTaggerC0100644 0000000 0000000 00000000160 14135770370 032434 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.ja0100664 0001750 0001750 00000013012 14135770370 034025 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.File; import java.io.IOException; import java.util.Map; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.Mean; public class POSTaggerCrossValidator { private final String languageCode; private final TrainingParameters params; private byte[] featureGeneratorBytes; private Map resources; private Mean wordAccuracy = new Mean(); private POSTaggerEvaluationMonitor[] listeners; /* this will be used to load the factory after the ngram dictionary was created */ private String factoryClassName; /* user can also send a ready to use factory */ private POSTaggerFactory factory; private Integer tagdicCutoff = null; private File tagDictionaryFile; /** * Creates a {@link POSTaggerCrossValidator} that builds a ngram dictionary * dynamically. It instantiates a sub-class of {@link POSTaggerFactory} using * the tag and the ngram dictionaries. */ public POSTaggerCrossValidator(String languageCode, TrainingParameters trainParam, File tagDictionary, byte[] featureGeneratorBytes, Map resources, Integer tagdicCutoff, String factoryClass, POSTaggerEvaluationMonitor... listeners) { this.languageCode = languageCode; this.params = trainParam; this.featureGeneratorBytes = featureGeneratorBytes; this.resources = resources; this.listeners = listeners; this.factoryClassName = factoryClass; this.tagdicCutoff = tagdicCutoff; this.tagDictionaryFile = tagDictionary; } /** * Creates a {@link POSTaggerCrossValidator} using the given * {@link POSTaggerFactory}. */ public POSTaggerCrossValidator(String languageCode, TrainingParameters trainParam, POSTaggerFactory factory, POSTaggerEvaluationMonitor... listeners) { this.languageCode = languageCode; this.params = trainParam; this.listeners = listeners; this.factory = factory; this.tagdicCutoff = null; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>( samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner .next(); if (this.tagDictionaryFile != null && this.factory.getTagDictionary() == null) { this.factory.setTagDictionary(this.factory .createTagDictionary(tagDictionaryFile)); } TagDictionary dict = null; if (this.tagdicCutoff != null) { dict = this.factory.getTagDictionary(); if (dict == null) { dict = this.factory.createEmptyTagDictionary(); } if (dict instanceof MutableTagDictionary) { POSTaggerME.populatePOSDictionary(trainingSampleStream, (MutableTagDictionary)dict, this.tagdicCutoff); } else { throw new IllegalArgumentException( "Can't extend a TagDictionary that does not implement MutableTagDictionary."); } trainingSampleStream.reset(); } if (this.factory == null) { this.factory = POSTaggerFactory.create(this.factoryClassName, null, null); } factory.init(featureGeneratorBytes, resources, dict); POSModel model = POSTaggerME.train(languageCode, trainingSampleStream, params, this.factory); POSEvaluator evaluator = new POSEvaluator(new POSTaggerME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); wordAccuracy.add(evaluator.getWordAccuracy(), evaluator.getWordCount()); if (this.tagdicCutoff != null) { this.factory.setTagDictionary(null); } } } /** * Retrieves the accuracy for all iterations. * * @return the word accuracy */ public double getWordAccuracy() { return wordAccuracy.mean(); } /** * Retrieves the number of words which where validated * over all iterations. The result is the amount of folds * multiplied by the total number of words. * * @return the word count */ public long getWordCount() { return wordAccuracy.count(); } private static POSTaggerFactory create(Dictionary ngram, TagDictionary pos) { return new POSTaggerFactory(ngram, pos); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_postag_DefaultPOS0100644 0000000 0000000 00000000163 14135770370 032507 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/DefaultPOSContextGenerator0100664 0001750 0001750 00000013132 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.Cache; import opennlp.tools.util.StringList; /** * A context generator for the POS Tagger. */ public class DefaultPOSContextGenerator implements POSContextGenerator { protected final String SE = "*SE*"; protected final String SB = "*SB*"; private static final int PREFIX_LENGTH = 4; private static final int SUFFIX_LENGTH = 4; private static Pattern hasCap = Pattern.compile("[A-Z]"); private static Pattern hasNum = Pattern.compile("[0-9]"); private Cache contextsCache; private Object wordsKey; private Dictionary dict; /** * Initializes the current instance. * * @param dict */ public DefaultPOSContextGenerator(Dictionary dict) { this(0,dict); } /** * Initializes the current instance. * * @param cacheSize * @param dict */ public DefaultPOSContextGenerator(int cacheSize, Dictionary dict) { this.dict = dict; if (cacheSize > 0) { contextsCache = new Cache<>(cacheSize); } } protected static String[] getPrefixes(String lex) { String[] prefs = new String[PREFIX_LENGTH]; for (int li = 0; li < PREFIX_LENGTH; li++) { prefs[li] = lex.substring(0, StrictMath.min(li + 1, lex.length())); } return prefs; } protected static String[] getSuffixes(String lex) { String[] suffs = new String[SUFFIX_LENGTH]; for (int li = 0; li < SUFFIX_LENGTH; li++) { suffs[li] = lex.substring(StrictMath.max(lex.length() - li - 1, 0)); } return suffs; } public String[] getContext(int index, String[] sequence, String[] priorDecisions, Object[] additionalContext) { return getContext(index,sequence,priorDecisions); } /** * Returns the context for making a pos tag decision at the specified token index * given the specified tokens and previous tags. * @param index The index of the token for which the context is provided. * @param tokens The tokens in the sentence. * @param tags The tags assigned to the previous words in the sentence. * @return The context for making a pos tag decision at the specified token index * given the specified tokens and previous tags. */ public String[] getContext(int index, Object[] tokens, String[] tags) { String next, nextnext = null, lex, prev, prevprev = null; String tagprev, tagprevprev; tagprev = tagprevprev = null; lex = tokens[index].toString(); if (tokens.length > index + 1) { next = tokens[index + 1].toString(); if (tokens.length > index + 2) nextnext = tokens[index + 2].toString(); else nextnext = SE; // Sentence End } else { next = SE; // Sentence End } if (index - 1 >= 0) { prev = tokens[index - 1].toString(); tagprev = tags[index - 1]; if (index - 2 >= 0) { prevprev = tokens[index - 2].toString(); tagprevprev = tags[index - 2]; } else { prevprev = SB; // Sentence Beginning } } else { prev = SB; // Sentence Beginning } String cacheKey = index + tagprev + tagprevprev; if (contextsCache != null) { if (wordsKey == tokens) { String[] cachedContexts = contextsCache.get(cacheKey); if (cachedContexts != null) { return cachedContexts; } } else { contextsCache.clear(); wordsKey = tokens; } } List e = new ArrayList<>(); e.add("default"); // add the word itself e.add("w=" + lex); if (dict == null || !dict.contains(new StringList(lex))) { // do some basic suffix analysis String[] suffs = getSuffixes(lex); for (String suff : suffs) { e.add("suf=" + suff); } String[] prefs = getPrefixes(lex); for (String pref : prefs) { e.add("pre=" + pref); } // see if the word has any special characters if (lex.indexOf('-') != -1) { e.add("h"); } if (hasCap.matcher(lex).find()) { e.add("c"); } if (hasNum.matcher(lex).find()) { e.add("d"); } } // add the words and pos's of the surrounding context if (prev != null) { e.add("p=" + prev); if (tagprev != null) { e.add("t=" + tagprev); } if (prevprev != null) { e.add("pp=" + prevprev); if (tagprevprev != null) { e.add("t2=" + tagprevprev + "," + tagprev); } } } if (next != null) { e.add("n=" + next); if (nextnext != null) { e.add("nn=" + nextnext); } } String[] contexts = e.toArray(new String[e.size()]); if (contextsCache != null) { contextsCache.put(cacheKey,contexts); } return contexts; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/TagDictionary.java0100664 0001750 0001750 00000002314 14135770370 032445 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; /** * Interface to determine which tags are valid for a particular word * based on a tag dictionary. */ public interface TagDictionary { /** * Returns a list of valid tags for the specified word. * * @param word The word. * @return A list of valid tags for the specified word or null if no information * is available for that word. */ String[] getTags(String word); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java0100664 0001750 0001750 00000026767 14135770370 031743 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicInteger; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.EventModelSequenceTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.SequenceTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.ngram.NGramModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.featuregen.StringPattern; /** * A part-of-speech tagger that uses maximum entropy. Tries to predict whether * words are nouns, verbs, or any of 70 other POS tags depending on their * surrounding context. * */ public class POSTaggerME implements POSTagger { public static final int DEFAULT_BEAM_SIZE = 3; private POSModel modelPackage; /** * The feature context generator. */ protected POSContextGenerator contextGen; /** * Tag dictionary used for restricting words to a fixed set of tags. */ protected TagDictionary tagDictionary; protected Dictionary ngramDictionary; /** * Says whether a filter should be used to check whether a tag assignment * is to a word outside of a closed class. */ protected boolean useClosedClassTagsFilter = false; /** * The size of the beam to be used in determining the best sequence of pos tags. */ protected int size; private Sequence bestSequence; private SequenceClassificationModel model; private SequenceValidator sequenceValidator; /** * Initializes the current instance with the provided model. * * @param model */ public POSTaggerME(POSModel model) { POSTaggerFactory factory = model.getFactory(); int beamSize = POSTaggerME.DEFAULT_BEAM_SIZE; String beamSizeString = model.getManifestProperty(BeamSearch.BEAM_SIZE_PARAMETER); if (beamSizeString != null) { beamSize = Integer.parseInt(beamSizeString); } modelPackage = model; contextGen = factory.getPOSContextGenerator(beamSize); tagDictionary = factory.getTagDictionary(); size = beamSize; sequenceValidator = factory.getSequenceValidator(); if (model.getPosSequenceModel() != null) { this.model = model.getPosSequenceModel(); } else { this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, model.getPosModel(), 0); } } /** * Retrieves an array of all possible part-of-speech tags from the * tagger. * * @return String[] */ public String[] getAllPosTags() { return model.getOutcomes(); } public String[] tag(String[] sentence) { return this.tag(sentence, null); } public String[] tag(String[] sentence, Object[] additionaContext) { bestSequence = model.bestSequence(sentence, additionaContext, contextGen, sequenceValidator); List t = bestSequence.getOutcomes(); return t.toArray(new String[t.size()]); } /** * Returns at most the specified number of taggings for the specified sentence. * * @param numTaggings The number of tagging to be returned. * @param sentence An array of tokens which make up a sentence. * * @return At most the specified number of taggings for the specified sentence. */ public String[][] tag(int numTaggings, String[] sentence) { Sequence[] bestSequences = model.bestSequences(numTaggings, sentence, null, contextGen, sequenceValidator); String[][] tags = new String[bestSequences.length][]; for (int si = 0; si < tags.length; si++) { List t = bestSequences[si].getOutcomes(); tags[si] = t.toArray(new String[t.size()]); } return tags; } public Sequence[] topKSequences(String[] sentence) { return this.topKSequences(sentence, null); } public Sequence[] topKSequences(String[] sentence, Object[] additionaContext) { return model.bestSequences(size, sentence, additionaContext, contextGen, sequenceValidator); } /** * Populates the specified array with the probabilities for each tag of the last tagged sentence. * * @param probs An array to put the probabilities into. */ public void probs(double[] probs) { bestSequence.getProbs(probs); } /** * Returns an array with the probabilities for each tag of the last tagged sentence. * * @return an array with the probabilities for each tag of the last tagged sentence. */ public double[] probs() { return bestSequence.getProbs(); } public String[] getOrderedTags(List words, List tags, int index) { return getOrderedTags(words,tags,index,null); } public String[] getOrderedTags(List words, List tags, int index,double[] tprobs) { if (modelPackage.getPosModel() != null) { MaxentModel posModel = modelPackage.getPosModel(); double[] probs = posModel.eval(contextGen.getContext(index, words.toArray(new String[words.size()]), tags.toArray(new String[tags.size()]),null)); String[] orderedTags = new String[probs.length]; for (int i = 0; i < probs.length; i++) { int max = 0; for (int ti = 1; ti < probs.length; ti++) { if (probs[ti] > probs[max]) { max = ti; } } orderedTags[i] = posModel.getOutcome(max); if (tprobs != null) { tprobs[i] = probs[max]; } probs[max] = 0; } return orderedTags; } else { throw new UnsupportedOperationException("This method can only be called if the " + "classifcation model is an event model!"); } } public static POSModel train(String languageCode, ObjectStream samples, TrainingParameters trainParams, POSTaggerFactory posFactory) throws IOException { int beamSize = trainParams.getIntParameter(BeamSearch.BEAM_SIZE_PARAMETER, POSTaggerME.DEFAULT_BEAM_SIZE); POSContextGenerator contextGenerator = posFactory.getPOSContextGenerator(); Map manifestInfoEntries = new HashMap<>(); TrainerType trainerType = TrainerFactory.getTrainerType(trainParams); MaxentModel posModel = null; SequenceClassificationModel seqPosModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream es = new POSSampleEventStream(samples, contextGenerator); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, manifestInfoEntries); posModel = trainer.train(es); } else if (TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)) { POSSampleSequenceStream ss = new POSSampleSequenceStream(samples, contextGenerator); EventModelSequenceTrainer trainer = TrainerFactory.getEventModelSequenceTrainer(trainParams, manifestInfoEntries); posModel = trainer.train(ss); } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { SequenceTrainer trainer = TrainerFactory.getSequenceModelTrainer( trainParams, manifestInfoEntries); // TODO: This will probably cause issue, since the feature generator uses the outcomes array POSSampleSequenceStream ss = new POSSampleSequenceStream(samples, contextGenerator); seqPosModel = trainer.train(ss); } else { throw new IllegalArgumentException("Trainer type is not supported: " + trainerType); } if (posModel != null) { return new POSModel(languageCode, posModel, beamSize, manifestInfoEntries, posFactory); } else { return new POSModel(languageCode, seqPosModel, manifestInfoEntries, posFactory); } } public static Dictionary buildNGramDictionary(ObjectStream samples, int cutoff) throws IOException { NGramModel ngramModel = new NGramModel(); POSSample sample; while ((sample = samples.read()) != null) { String[] words = sample.getSentence(); if (words.length > 0) ngramModel.add(new StringList(words), 1, 1); } ngramModel.cutoff(cutoff, Integer.MAX_VALUE); return ngramModel.toDictionary(true); } public static void populatePOSDictionary(ObjectStream samples, MutableTagDictionary dict, int cutoff) throws IOException { System.out.println("Expanding POS Dictionary ..."); long start = System.nanoTime(); // the data structure will store the word, the tag, and the number of // occurrences Map> newEntries = new HashMap<>(); POSSample sample; while ((sample = samples.read()) != null) { String[] words = sample.getSentence(); String[] tags = sample.getTags(); for (int i = 0; i < words.length; i++) { // only store words if (!StringPattern.recognize(words[i]).containsDigit()) { String word; if (dict.isCaseSensitive()) { word = words[i]; } else { word = StringUtil.toLowerCase(words[i]); } if (!newEntries.containsKey(word)) { newEntries.put(word, new HashMap<>()); } String[] dictTags = dict.getTags(word); if (dictTags != null) { for (String tag : dictTags) { // for this tags we start with the cutoff Map value = newEntries.get(word); if (!value.containsKey(tag)) { value.put(tag, new AtomicInteger(cutoff)); } } } if (!newEntries.get(word).containsKey(tags[i])) { newEntries.get(word).put(tags[i], new AtomicInteger(1)); } else { newEntries.get(word).get(tags[i]).incrementAndGet(); } } } } // now we check if the word + tag pairs have enough occurrences, if yes we // add it to the dictionary for (Entry> wordEntry : newEntries .entrySet()) { List tagsForWord = new ArrayList<>(); for (Entry entry : wordEntry.getValue().entrySet()) { if (entry.getValue().get() >= cutoff) { tagsForWord.add(entry.getKey()); } } if (tagsForWord.size() > 0) { dict.put(wordEntry.getKey(), tagsForWord.toArray(new String[tagsForWord.size()])); } } System.out.println("... finished expanding POS Dictionary. [" + (System.nanoTime() - start) / 1000000 + "ms]"); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java0100664 0001750 0001750 00000005641 14135770370 032236 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.Mean; /** * The {@link POSEvaluator} measures the performance of * the given {@link POSTagger} with the provided reference * {@link POSSample}s. */ public class POSEvaluator extends Evaluator { private POSTagger tagger; private Mean wordAccuracy = new Mean(); /** * Initializes the current instance. * * @param tagger * @param listeners an array of evaluation listeners */ public POSEvaluator(POSTagger tagger, POSTaggerEvaluationMonitor ... listeners) { super(listeners); this.tagger = tagger; } /** * Evaluates the given reference {@link POSSample} object. * * This is done by tagging the sentence from the reference * {@link POSSample} with the {@link POSTagger}. The * tags are then used to update the word accuracy score. * * @param reference the reference {@link POSSample}. * * @return the predicted {@link POSSample}. */ @Override protected POSSample processSample(POSSample reference) { String[] predictedTags = tagger.tag(reference.getSentence(), reference.getAddictionalContext()); String[] referenceTags = reference.getTags(); for (int i = 0; i < referenceTags.length; i++) { if (referenceTags[i].equals(predictedTags[i])) { wordAccuracy.add(1); } else { wordAccuracy.add(0); } } return new POSSample(reference.getSentence(), predictedTags); } /** * Retrieves the word accuracy. * * This is defined as: * word accuracy = correctly detected tags / total words * * @return the word accuracy */ public double getWordAccuracy() { return wordAccuracy.mean(); } /** * Retrieves the total number of words considered * in the evaluation. * * @return the word count */ public long getWordCount() { return wordAccuracy.count(); } /** * Represents this objects as human readable {@link String}. */ @Override public String toString() { return "Accuracy:" + wordAccuracy.mean() + " Number of Samples: " + wordAccuracy.count(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSDictionary.java0100664 0001750 0001750 00000016641 14135770370 032403 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Objects; import opennlp.tools.dictionary.serializer.Attributes; import opennlp.tools.dictionary.serializer.DictionaryEntryPersistor; import opennlp.tools.dictionary.serializer.Entry; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; import opennlp.tools.util.model.SerializableArtifact; /** * Provides a means of determining which tags are valid for a particular word * based on a tag dictionary read from a file. */ public class POSDictionary implements Iterable, MutableTagDictionary, SerializableArtifact { private Map dictionary; private boolean caseSensitive = true; /** * Initializes an empty case sensitive {@link POSDictionary}. */ public POSDictionary() { this(true); } /** * Initializes an empty {@link POSDictionary}. * @param caseSensitive the {@link POSDictionary} case sensitivity */ public POSDictionary(boolean caseSensitive) { dictionary = new HashMap<>(); this.caseSensitive = caseSensitive; } /** * Returns a list of valid tags for the specified word. * * @param word The word. * * @return A list of valid tags for the specified word or * null if no information is available for that word. */ public String[] getTags(String word) { if (caseSensitive) { return dictionary.get(word); } else { return dictionary.get(StringUtil.toLowerCase(word)); } } /** * Associates the specified tags with the specified word. If the dictionary * previously contained the word, the old tags are replaced by the specified * ones. * * @param word * The word to be added to the dictionary. * @param tags * The set of tags associated with the specified word. * * @deprecated Use {@link #put(String, String[])} instead */ void addTags(String word, String... tags) { put(word, tags); } /** * Retrieves an iterator over all words in the dictionary. */ public Iterator iterator() { return dictionary.keySet().iterator(); } private static String tagsToString(String[] tags) { StringBuilder tagString = new StringBuilder(); for (String tag : tags) { tagString.append(tag); tagString.append(' '); } // remove last space if (tagString.length() > 0) { tagString.setLength(tagString.length() - 1); } return tagString.toString(); } /** * Writes the {@link POSDictionary} to the given {@link OutputStream}; * * After the serialization is finished the provided * {@link OutputStream} remains open. * * @param out * the {@link OutputStream} to write the dictionary into. * * @throws IOException * if writing to the {@link OutputStream} fails */ public void serialize(OutputStream out) throws IOException { Iterator entries = new Iterator() { Iterator iterator = dictionary.keySet().iterator(); public boolean hasNext() { return iterator.hasNext(); } public Entry next() { String word = iterator.next(); Attributes tagAttribute = new Attributes(); tagAttribute.setValue("tags", tagsToString(getTags(word))); return new Entry(new StringList(word), tagAttribute); } public void remove() { throw new UnsupportedOperationException(); } }; DictionaryEntryPersistor.serialize(out, entries, caseSensitive); } @Override public int hashCode() { int[] keyHashes = new int[dictionary.size()]; int[] valueHashes = new int[dictionary.size()]; int i = 0; for (String word : this) { keyHashes[i] = word.hashCode(); valueHashes[i] = Arrays.hashCode(getTags(word)); i++; } Arrays.sort(keyHashes); Arrays.sort(valueHashes); return Objects.hash(Arrays.hashCode(keyHashes), Arrays.hashCode(valueHashes)); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof POSDictionary) { POSDictionary posDictionary = (POSDictionary) obj; if (this.dictionary.size() == posDictionary.dictionary.size()) { for (String word : this) { if (!Arrays.equals(getTags(word), posDictionary.getTags(word))) { return false; } } return true; } } return false; } @Override public String toString() { // it is time consuming to output the dictionary entries. // will output something meaningful for debugging, like // POSDictionary{size=100, caseSensitive=true} return "POSDictionary{size=" + dictionary.size() + ", caseSensitive=" + this.caseSensitive + "}"; } /** * Creates a new {@link POSDictionary} from a provided {@link InputStream}. * * After creation is finished the provided {@link InputStream} is closed. * * @param in * * @return the pos dictionary * * @throws IOException * @throws InvalidFormatException */ public static POSDictionary create(InputStream in) throws IOException { final POSDictionary newPosDict = new POSDictionary(); boolean isCaseSensitive = DictionaryEntryPersistor.create(in, entry -> { String tagString = entry.getAttributes().getValue("tags"); String[] tags = tagString.split(" "); StringList word = entry.getTokens(); if (word.size() != 1) throw new InvalidFormatException("Each entry must have exactly one token! " + word); newPosDict.dictionary.put(word.getToken(0), tags); }); newPosDict.caseSensitive = isCaseSensitive; // TODO: The dictionary API needs to be improved to do this better! if (!isCaseSensitive) { Map lowerCasedDictionary = new HashMap<>(); for (Map.Entry entry : newPosDict.dictionary.entrySet()) { lowerCasedDictionary.put(StringUtil.toLowerCase(entry.getKey()), entry.getValue()); } newPosDict.dictionary = lowerCasedDictionary; } return newPosDict; } public String[] put(String word, String... tags) { if (this.caseSensitive) { return dictionary.put(word, tags); } else { return dictionary.put(StringUtil.toLowerCase(word), tags); } } public boolean isCaseSensitive() { return this.caseSensitive; } @Override public Class getArtifactSerializerClass() { return POSTaggerFactory.POSDictionarySerializer.class; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/postag/POSTagger.java0100664 0001750 0001750 00000002522 14135770370 031500 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.postag; import opennlp.tools.util.Sequence; /** * The interface for part of speech taggers. */ public interface POSTagger { /** * Assigns the sentence of tokens pos tags. * @param sentence The sentece of tokens to be tagged. * @return an array of pos tags for each token provided in sentence. */ String[] tag(String[] sentence); String[] tag(String[] sentence, Object[] additionaContext); Sequence[] topKSequences(String[] sentence); Sequence[] topKSequences(String[] sentence, Object[] additionaContext); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000157 14135770370 032570 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.jav0100664 0001750 0001750 00000024654 14135770370 034032 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import opennlp.tools.ml.AbstractEventTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.MutableInt; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * Implements learnable Language Detector * *

* This will process the entire string when called with * {@link #predictLanguage(CharSequence)} or * {@link #predictLanguages(CharSequence)}. *

*

* If you want this to stop early, use {@link #probingPredictLanguages(CharSequence)} * or {@link #probingPredictLanguages(CharSequence, LanguageDetectorConfig)}. * When run in probing mode, this starts at the beginning of the charsequence * and runs language detection on chunks of text. If the end of the * string is reached or there are {@link LanguageDetectorConfig#getMinConsecImprovements()} * consecutive predictions for the best language and the confidence * increases over those last predictions and if the difference * in confidence between the highest confidence language * and the second highest confidence language is greater than * {@link LanguageDetectorConfig#getMinDiff()}, the language detector will * stop and report the results. *

*

* The authors wish to thank Ken Krugler and * Yalder} * for the inspiration for many of the design * components of this detector. * */ public class LanguageDetectorME implements LanguageDetector { protected LanguageDetectorModel model; private LanguageDetectorContextGenerator mContextGenerator; /** * Initializes the current instance with a language detector model. Default feature * generation is used. * * @param model the language detector model */ public LanguageDetectorME(LanguageDetectorModel model) { this.model = model; this.mContextGenerator = model.getFactory().getContextGenerator(); } /** * This will process the full content length. * * @param content * @return the predicted languages */ @Override public Language[] predictLanguages(CharSequence content) { return predict(arrayToCounts( mContextGenerator.getContext(content))); } /** * This will process the full content length. * * @param content * @return the language with the highest confidence */ @Override public Language predictLanguage(CharSequence content) { return predictLanguages(content)[0]; } @Override public String[] getSupportedLanguages() { int numberLanguages = model.getMaxentModel().getNumOutcomes(); String[] languages = new String[numberLanguages]; for (int i = 0; i < numberLanguages; i++) { languages[i] = model.getMaxentModel().getOutcome(i); } return languages; } /** * This will stop processing early if the stopping criteria * specified in {@link LanguageDetectorConfig#DEFAULT_LANGUAGE_DETECTOR_CONFIG} * are met. * * @param content content to be processed * @return result */ public ProbingLanguageDetectionResult probingPredictLanguages(CharSequence content) { return probingPredictLanguages(content, LanguageDetectorConfig.DEFAULT_LANGUAGE_DETECTOR_CONFIG); } /** * This will stop processing early if the stopping criteria * specified in {@link LanguageDetectorConfig#DEFAULT_LANGUAGE_DETECTOR_CONFIG} * are met. * * @param content content to process * @param config config to customize detection * @return */ public ProbingLanguageDetectionResult probingPredictLanguages(CharSequence content, LanguageDetectorConfig config) { //list of the languages that received the highest //confidence over the last n chunk detections List predictions = new LinkedList(); int start = 0;//where to start the next chunk in codepoints Language[] currPredictions = null; //cache ngram counts across chunks Map ngramCounts = new HashMap<>(); while (true) { int actualChunkSize = (start + config.getChunkSize() > config.getMaxLength()) ? config.getMaxLength() - start : config.getChunkSize(); StringCPLengthPair chunk = chunk(content, start, actualChunkSize); if (chunk.length() == 0) { if (currPredictions == null) { return new ProbingLanguageDetectionResult(predict(ngramCounts), start); } else { return new ProbingLanguageDetectionResult(currPredictions, start); } } start += chunk.length(); updateCounts(mContextGenerator.getContext(chunk.getString()), ngramCounts); currPredictions = predict(ngramCounts); if (seenEnough(predictions, currPredictions, ngramCounts, config)) { return new ProbingLanguageDetectionResult(currPredictions, start); } } } private void updateCounts(String[] context, Map ngrams) { for (String ngram : context) { MutableInt i = ngrams.get(ngram); if (i == null) { i = new MutableInt(1); ngrams.put(ngram, i); } else { i.increment(); } } } private Map arrayToCounts(String[] context) { Map ngrams = new HashMap<>(); updateCounts(context, ngrams); return ngrams; } private Language[] predict(Map ngramCounts) { String[] allGrams = new String[ngramCounts.size()]; float[] counts = new float[ngramCounts.size()]; int i = 0; for (Map.Entry e : ngramCounts.entrySet()) { allGrams[i] = e.getKey(); // TODO -- once OPENNLP-1261 is fixed, // change this to e.getValue().getValue(). counts[i] = 1; i++; } double[] eval = model.getMaxentModel().eval(allGrams, counts); Language[] arr = new Language[eval.length]; for (int j = 0; j < eval.length; j++) { arr[j] = new Language(model.getMaxentModel().getOutcome(j), eval[j]); } Arrays.sort(arr, (o1, o2) -> Double.compare(o2.getConfidence(), o1.getConfidence())); return arr; } /** * Override this for different behavior to determine if there is enough * confidence in the predictions to stop. * * @param predictionsQueue queue of earlier predictions * @param newPredictions most recent predictions * @param ngramCounts -- not currently used, but might be useful * @return whether or not enough text has been processed to make a determination */ boolean seenEnough(List predictionsQueue, Language[] newPredictions, Map ngramCounts, LanguageDetectorConfig config) { if (predictionsQueue.size() < config.getMinConsecImprovements()) { predictionsQueue.add(newPredictions); return false; } else if (predictionsQueue.size() > config.getMinConsecImprovements() && predictionsQueue.size() > 0) { predictionsQueue.remove(0); } predictionsQueue.add(newPredictions); if (config.getMinDiff() > 0.0 && newPredictions[0].getConfidence() - newPredictions[1].getConfidence() < config.getMinDiff()) { return false; } String lastLang = null; double lastConf = -1.0; //iterate through the last predictions //and check that the lang with the highest confidence //hasn't changed, and that the confidence in it //hasn't decreased for (Language[] predictions : predictionsQueue) { if (lastLang == null) { lastLang = predictions[0].getLang(); lastConf = predictions[0].getConfidence(); continue; } else { if (!lastLang.equals(predictions[0].getLang())) { return false; } if (lastConf > predictions[0].getConfidence()) { return false; } } lastLang = predictions[0].getLang(); lastConf = predictions[0].getConfidence(); } return true; } private StringCPLengthPair chunk(CharSequence content, int start, int chunkSize) { if (start == 0 && chunkSize > content.length()) { String s = content.toString(); int codePointLength = s.codePointCount(0, s.length()); return new StringCPLengthPair(s, codePointLength); } int[] codepoints = content.codePoints().skip(start).limit(chunkSize).toArray(); return new StringCPLengthPair( new String(codepoints, 0, codepoints.length), codepoints.length); } public static LanguageDetectorModel train(ObjectStream samples, TrainingParameters mlParams, LanguageDetectorFactory factory) throws IOException { Map manifestInfoEntries = new HashMap<>(); mlParams.putIfAbsent(AbstractEventTrainer.DATA_INDEXER_PARAM, AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE); EventTrainer trainer = TrainerFactory.getEventTrainer( mlParams, manifestInfoEntries); MaxentModel model = trainer.train( new LanguageDetectorEventStream(samples, factory.getContextGenerator())); return new LanguageDetectorModel(model, manifestInfoEntries, factory); } private static class StringCPLengthPair { private final String s; private final int length; StringCPLengthPair(String s, int length) { this.s = s; this.length = length; } int length() { return length; } String getString() { return s; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000170 14135770370 032563 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEventS0100664 0001750 0001750 00000004110 14135770370 034137 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.util.Iterator; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; /** * Iterator-like class for modeling language detector events. */ public class LanguageDetectorEventStream extends AbstractEventStream { private LanguageDetectorContextGenerator mContextGenerator; /** * Initializes the current instance via samples and feature generators. * * @param data {@link ObjectStream} of {@link LanguageSample}s */ public LanguageDetectorEventStream(ObjectStream data, LanguageDetectorContextGenerator contextGenerator) { super(data); mContextGenerator = contextGenerator; } @Override protected Iterator createEvents(final LanguageSample sample) { return new Iterator() { private boolean isVirgin = true; public boolean hasNext() { return isVirgin; } public Event next() { isVirgin = false; return new Event(sample.getLanguage().getLang(), mContextGenerator.getContext(sample.getContext().toString())); } public void remove() { throw new UnsupportedOperationException(); } }; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000162 14135770370 032564 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.0100664 0001750 0001750 00000005306 14135770370 034061 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.BaseModel; /** * A model for language detection */ public class LanguageDetectorModel extends BaseModel { private static final String COMPONENT_NAME = "LanguageDetectorME"; private static final String LANGDETECT_MODEL_ENTRY_NAME = "langdetect.model"; public LanguageDetectorModel(MaxentModel langdetectModel, Map manifestInfoEntries, LanguageDetectorFactory factory) { super(COMPONENT_NAME, "und", manifestInfoEntries, factory); artifactMap.put(LANGDETECT_MODEL_ENTRY_NAME, langdetectModel); checkArtifactMap(); } public LanguageDetectorModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public LanguageDetectorModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public LanguageDetectorModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(LANGDETECT_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Language detector model is incomplete!"); } } public LanguageDetectorFactory getFactory() { return (LanguageDetectorFactory) this.toolFactory; } @Override protected Class getDefaultFactory() { return LanguageDetectorFactory.class; } public MaxentModel getMaxentModel() { return (MaxentModel) artifactMap.get(LANGDETECT_MODEL_ENTRY_NAME); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageSample.java0100664 0001750 0001750 00000003661 14135770370 033414 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.Serializable; import java.util.Objects; /** * Class which holds a classified document and its @{@link Language}. */ public class LanguageSample implements Serializable { private final Language language; private final CharSequence context; public LanguageSample(Language language, CharSequence context) { this.language = Objects.requireNonNull(language, "language must not be null"); this.context = Objects.requireNonNull(context, "context must not be null"); } public Language getLanguage() { return language; } public CharSequence getContext() { return context; } @Override public String toString() { return language.getLang() + '\t' + context; } @Override public int hashCode() { return Objects.hash(getContext(), getLanguage()); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof LanguageSample) { LanguageSample a = (LanguageSample) obj; return getLanguage().equals(a.getLanguage()) && getContext().equals(a.getContext()); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/Language.java0100664 0001750 0001750 00000003501 14135770370 032243 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.Serializable; import java.util.Objects; /** * Class for holding the document language and its confidence */ public class Language implements Serializable { private final String lang; private final double confidence; public Language(String lang) { this(lang, 0); } public Language(String lang, double confidence) { Objects.requireNonNull(lang, "lang must not be null"); this.lang = lang; this.confidence = confidence; } public String getLang() { return lang; } public double getConfidence() { return confidence; } @Override public String toString() { return getLang() + " (" + this.confidence + ")"; } @Override public int hashCode() { return Objects.hash(getLang(), getConfidence()); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof Language) { Language a = (Language) obj; return getLang().equals(a.getLang()); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000163 14135770370 032565 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorConfig.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorConfig0100664 0001750 0001750 00000006565 14135770370 034160 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; public class LanguageDetectorConfig { public static final int DEFAULT_MAX_LENGTH = 10000; public static final int DEFAULT_CHUNK_SIZE = 200; public static final int DEFAULT_MIN_CONSEC_IMPROVEMENTS = 2; public static final double DEFAULT_MIN_DIFF = 0.20; public static final LanguageDetectorConfig DEFAULT_LANGUAGE_DETECTOR_CONFIG = new ImmutableLanguageDetectorConfig(); private int maxLength = DEFAULT_MAX_LENGTH; private int chunkSize = DEFAULT_CHUNK_SIZE; private int minConsecImprovements = DEFAULT_MIN_CONSEC_IMPROVEMENTS; private double minDiff = DEFAULT_MIN_DIFF; /** * Maximum length in codepoints of text to process. * * @return */ public int getMaxLength() { return maxLength; } public void setMaxLength(int maxLength) { this.maxLength = maxLength; } /** * Size in codepoints of chunk to process at each * step for the probing detection. *

* After processing a chunk of this size, the probing * detection will compute probabilities and determine * if there is enough confidence to stop. * * @return */ public int getChunkSize() { return chunkSize; } public void setChunkSize(int chunkSize) { this.chunkSize = chunkSize; } /** * Minimum number of consecutive increased probabilities * for the top language required in probing detection * to stop early. *

* If this value equals 0, probing detection will * rely solely on {@link #getMinDiff()} * * @return minimum consecutive improvements */ public int getMinConsecImprovements() { return minConsecImprovements; } public void setMinConsecImprovements(int minConsecImprovements) { this.minConsecImprovements = minConsecImprovements; } /** * Minimum difference in confidence between the top predicted * language and the next most likely language. *

* If this value equals 0, probing detection will * rely solely on {@link #getMinConsecImprovements()} * * @return */ public double getMinDiff() { return minDiff; } public void setMinDiff(double minDiff) { this.minDiff = minDiff; } private static class ImmutableLanguageDetectorConfig extends LanguageDetectorConfig { @Override public void setMaxLength(int maxLength) { //no-op } @Override public void setChunkSize(int chunkSize) { //no-op } @Override public void setMinConsecImprovements(int minConsecImprovements) { //no-op } @Override public void setMinDiff(double minDiff) { //no-op } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000166 14135770370 032570 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEvalua0100664 0001750 0001750 00000005556 14135770370 034167 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import opennlp.tools.doccat.DocumentCategorizer; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.Mean; /** * The {@link LanguageDetectorEvaluator} measures the performance of * the given {@link LanguageDetector} with the provided reference * {@link LanguageSample}s. * * @see LanguageDetector * @see LanguageSample */ public class LanguageDetectorEvaluator extends Evaluator { private LanguageDetector languageDetector; private Mean accuracy = new Mean(); /** * Initializes the current instance. * * @param langDetect the language detector instance */ public LanguageDetectorEvaluator(LanguageDetector langDetect, LanguageDetectorEvaluationMonitor ... listeners) { super(listeners); this.languageDetector = langDetect; } /** * Evaluates the given reference {@link LanguageSample} object. * * This is done by categorizing the document from the provided * {@link LanguageSample}. The detected language is then used * to calculate and update the score. * * @param sample the reference {@link LanguageSample}. */ public LanguageSample processSample(LanguageSample sample) { CharSequence document = sample.getContext(); Language predicted = languageDetector.predictLanguage(document); if (sample.getLanguage().getLang().equals(predicted.getLang())) { accuracy.add(1); } else { accuracy.add(0); } return new LanguageSample(predicted, sample.getContext()); } /** * Retrieves the accuracy of provided {@link DocumentCategorizer}. * * accuracy = correctly categorized documents / total documents * * @return the accuracy */ public double getAccuracy() { return accuracy.mean(); } public long getDocumentCount() { return accuracy.count(); } /** * Represents this objects as human readable {@link String}. */ @Override public String toString() { return "Accuracy: " + accuracy.mean() + "\n" + "Number of documents: " + accuracy.count(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetector.java0100664 0001750 0001750 00000002231 14135770370 033734 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.Serializable; /** * The interface for LanguageDetector which provide the @{@link Language} according to the context. */ public interface LanguageDetector extends Serializable { Language[] predictLanguages(CharSequence content); Language predictLanguage(CharSequence content); String[] getSupportedLanguages(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000164 14135770370 032566 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorFactor0100664 0001750 0001750 00000006043 14135770370 034160 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ext.ExtensionLoader; import opennlp.tools.util.normalizer.EmojiCharSequenceNormalizer; import opennlp.tools.util.normalizer.NumberCharSequenceNormalizer; import opennlp.tools.util.normalizer.ShrinkCharSequenceNormalizer; import opennlp.tools.util.normalizer.TwitterCharSequenceNormalizer; import opennlp.tools.util.normalizer.UrlCharSequenceNormalizer; /** * Default factory used by Language Detector. Extend this class to change the Language Detector * behaviour, such as the {@link LanguageDetectorContextGenerator}. * The default {@link DefaultLanguageDetectorContextGenerator} will use char n-grams of * size 1 to 3 and the following normalizers: *

    *
  • {@link EmojiCharSequenceNormalizer} *
  • {@link UrlCharSequenceNormalizer} *
  • {@link TwitterCharSequenceNormalizer} *
  • {@link NumberCharSequenceNormalizer} *
  • {@link ShrinkCharSequenceNormalizer} *
* */ public class LanguageDetectorFactory extends BaseToolFactory { public LanguageDetectorContextGenerator getContextGenerator() { return new DefaultLanguageDetectorContextGenerator(1, 3, EmojiCharSequenceNormalizer.getInstance(), UrlCharSequenceNormalizer.getInstance(), TwitterCharSequenceNormalizer.getInstance(), NumberCharSequenceNormalizer.getInstance(), ShrinkCharSequenceNormalizer.getInstance()); } public static LanguageDetectorFactory create(String subclassName) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new LanguageDetectorFactory(); } try { LanguageDetectorFactory theFactory = ExtensionLoader.instantiateExtension( LanguageDetectorFactory.class, subclassName); theFactory.init(); return theFactory; } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; throw new InvalidFormatException(msg, e); } } public void init() { // nothing to do } @Override public void validateArtifactMap() throws InvalidFormatException { // nothing to validate } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Defaul0100644 0000000 0000000 00000000204 14135770370 032552 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetecto0100664 0001750 0001750 00000004720 14135770370 034144 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.util.ArrayList; import java.util.Collection; import opennlp.tools.ngram.NGramCharModel; import opennlp.tools.util.normalizer.AggregateCharSequenceNormalizer; import opennlp.tools.util.normalizer.CharSequenceNormalizer; /** * A context generator for language detector. */ public class DefaultLanguageDetectorContextGenerator implements LanguageDetectorContextGenerator { protected final int minLength; protected final int maxLength; protected final CharSequenceNormalizer normalizer; /** * Creates a customizable @{@link DefaultLanguageDetectorContextGenerator} that computes ngrams from text * @param minLength min ngrams chars * @param maxLength max ngrams chars * @param normalizers zero or more normalizers to * be applied in to the text before extracting ngrams */ public DefaultLanguageDetectorContextGenerator(int minLength, int maxLength, CharSequenceNormalizer... normalizers) { this.minLength = minLength; this.maxLength = maxLength; this.normalizer = new AggregateCharSequenceNormalizer(normalizers); } /** * Generates the context for a document using character ngrams. * @param document document to extract context from * @return the generated context */ @Override public String[] getContext(CharSequence document) { Collection context = new ArrayList<>(); NGramCharModel model = new NGramCharModel(); model.add(normalizer.normalize(document), minLength, maxLength); for (String token : model) { context.add(token); } return context.toArray(new String[context.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000171 14135770370 032564 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorSample0100664 0001750 0001750 00000003624 14135770370 034165 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.IOException; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * This class reads in string encoded training samples, parses them and * outputs {@link LanguageSample} objects. *

* Format:
* Each line contains one sample document.
* The language is the first string in the line followed by a tab and the document content.
* Sample line: category-string tab-char document line-break-char(s)
*/ public class LanguageDetectorSampleStream extends FilterObjectStream { public LanguageDetectorSampleStream(ObjectStream samples) { super(samples); } public LanguageSample read() throws IOException { String sampleString; while ((sampleString = samples.read()) != null) { int tabIndex = sampleString.indexOf("\t"); if (tabIndex > 0) { String lang = sampleString.substring(0, tabIndex); String context = sampleString.substring(tabIndex + 1); return new LanguageSample(new Language(lang), context); } } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000175 14135770370 032570 xustar000000000 0000000 125 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorContex0100664 0001750 0001750 00000002034 14135770370 034176 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.Serializable; /** * A context generator interface for language detector. */ public interface LanguageDetectorContextGenerator extends Serializable { String[] getContext(CharSequence document); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Probin0100644 0000000 0000000 00000000173 14135770370 032610 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/ProbingLanguageDetectionResult.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/ProbingLanguageDetecti0100664 0001750 0001750 00000002373 14135770370 034154 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; public class ProbingLanguageDetectionResult { private final Language[] languages; private final int length; public ProbingLanguageDetectionResult(Language[] languages, int length) { this.languages = languages; this.length = length; } public Language[] getLanguages() { return languages; } /** * * @return length in codepoints of text processed */ public int getLength() { return length; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000173 14135770370 032566 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorCrossValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorCrossV0100664 0001750 0001750 00000006304 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import java.io.IOException; import opennlp.tools.doccat.FeatureGenerator; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.Mean; /** * Cross validator for language detector */ public class LanguageDetectorCrossValidator { private final TrainingParameters params; private Mean documentAccuracy = new Mean(); private LanguageDetectorEvaluationMonitor[] listeners; private LanguageDetectorFactory factory; /** * Creates a {@link LanguageDetectorCrossValidator} with the given * {@link FeatureGenerator}s. */ public LanguageDetectorCrossValidator(TrainingParameters mlParams, LanguageDetectorFactory factory, LanguageDetectorEvaluationMonitor ... listeners) { this.params = mlParams; this.listeners = listeners; this.factory = factory; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>(samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner.next(); LanguageDetectorModel model = LanguageDetectorME.train( trainingSampleStream, params, factory); LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator( new LanguageDetectorME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); documentAccuracy.add(evaluator.getAccuracy(), evaluator.getDocumentCount()); } } /** * Retrieves the accuracy for all iterations. * * @return the word accuracy */ public double getDocumentAccuracy() { return documentAccuracy.mean(); } /** * Retrieves the number of words which where validated over all iterations. * The result is the amount of folds multiplied by the total number of words. * * @return the word count */ public long getDocumentCount() { return documentAccuracy.count(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_langdetect_Langua0100644 0000000 0000000 00000000176 14135770370 032571 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorEvalua0100664 0001750 0001750 00000002032 14135770370 034151 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.langdetect; import opennlp.tools.util.eval.EvaluationMonitor; /** * {@link EvaluationMonitor} for Language Detector. */ public interface LanguageDetectorEvaluationMonitor extends EvaluationMonitor { } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java0100664 0001750 0001750 00000011154 14135770370 033654 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import java.util.Properties; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.BaseModel; /** * The {@link LemmatizerModel} is the model used * by a learnable {@link Lemmatizer}. * * @see LemmatizerME */ public class LemmatizerModel extends BaseModel { private static final String COMPONENT_NAME = "StatisticalLemmatizer"; private static final String LEMMATIZER_MODEL_ENTRY_NAME = "lemmatizer.model"; public LemmatizerModel(String languageCode, SequenceClassificationModel lemmatizerModel, Map manifestInfoEntries, LemmatizerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(LEMMATIZER_MODEL_ENTRY_NAME, lemmatizerModel); checkArtifactMap(); } public LemmatizerModel(String languageCode, MaxentModel lemmatizerModel, Map manifestInfoEntries, LemmatizerFactory factory) { this(languageCode, lemmatizerModel, LemmatizerME.DEFAULT_BEAM_SIZE, manifestInfoEntries, factory); } public LemmatizerModel(String languageCode, MaxentModel lemmatizerModel, int beamSize, Map manifestInfoEntries, LemmatizerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(LEMMATIZER_MODEL_ENTRY_NAME, lemmatizerModel); Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.put(BeamSearch.BEAM_SIZE_PARAMETER, Integer.toString(beamSize)); checkArtifactMap(); } public LemmatizerModel(String languageCode, MaxentModel lemmatizerModel, LemmatizerFactory factory) { this(languageCode, lemmatizerModel, null, factory); } public LemmatizerModel(InputStream in) throws IOException, InvalidFormatException { super(COMPONENT_NAME, in); } public LemmatizerModel(File modelFile) throws IOException, InvalidFormatException { super(COMPONENT_NAME, modelFile); } public LemmatizerModel(Path modelPath) throws IOException, InvalidFormatException { this(modelPath.toFile()); } public LemmatizerModel(URL modelURL) throws IOException, InvalidFormatException { super(COMPONENT_NAME, modelURL); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Lemmatizer model is incomplete!"); } } public SequenceClassificationModel getLemmatizerSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); if (artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME) instanceof MaxentModel) { String beamSizeString = manifest.getProperty(BeamSearch.BEAM_SIZE_PARAMETER); int beamSize = LemmatizerME.DEFAULT_BEAM_SIZE; if (beamSizeString != null) { beamSize = Integer.parseInt(beamSizeString); } return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME)); } else if (artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME); } else { return null; } } @Override protected Class getDefaultFactory() { return LemmatizerFactory.class; } public LemmatizerFactory getFactory() { return (LemmatizerFactory) this.toolFactory; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Lemmat0100644 0000000 0000000 00000000170 14135770370 032632 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerEvaluationMo0100664 0001750 0001750 00000002036 14135770370 034276 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import opennlp.tools.util.eval.EvaluationMonitor; /** * Interface for the lemmatizer evaluator. * @version 2016-02-18 * */ public interface LemmatizerEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_LemmaS0100644 0000000 0000000 00000000163 14135770370 032573 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleEventStream0100664 0001750 0001750 00000004472 14135770370 034222 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; /** * Class for creating an event stream out of data files for training a probabilistic lemmatizer. */ public class LemmaSampleEventStream extends AbstractEventStream { private LemmatizerContextGenerator contextGenerator; /** * Creates a new event stream based on the specified data stream using the specified context generator. * @param d The data stream for this event stream. * @param cg The context generator which should be used in the creation of events for this event stream. */ public LemmaSampleEventStream(ObjectStream d, LemmatizerContextGenerator cg) { super(d); this.contextGenerator = cg; } protected Iterator createEvents(LemmaSample sample) { if (sample != null) { List events = new ArrayList<>(); String[] toksArray = sample.getTokens(); String[] tagsArray = sample.getTags(); String[] lemmasArray = LemmatizerME.encodeLemmas(toksArray,sample.getLemmas()); for (int ei = 0, el = sample.getTokens().length; ei < el; ei++) { events.add(new Event(lemmasArray[ei], contextGenerator.getContext(ei,toksArray,tagsArray,lemmasArray))); } return events.iterator(); } else { return Collections.emptyListIterator(); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/package-info.java0100664 0001750 0001750 00000001570 14135770370 033107 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related with the lemmatizer tool */ package opennlp.tools.lemmatizer; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Lemmat0100644 0000000 0000000 00000000167 14135770370 032640 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerContextGener0100664 0001750 0001750 00000003341 14135770370 034300 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import opennlp.tools.util.BeamSearchContextGenerator; /** * Interface for the context generator used for probabilistic lemmatizer. */ public interface LemmatizerContextGenerator extends BeamSearchContextGenerator { /** * Returns the contexts for lemmatizing of the specified index. * @param i The index of the token in the specified toks array for which the context should be constructed. * @param toks The tokens of the sentence. The toString methods of * these objects should return the token text. * @param tags The POS tags for the the specified tokens. * @param lemmas The previous decisions made in the tagging of this sequence. * Only indices less than i will be examined. * @return An array of predictive contexts on which a model basis its decisions. */ String[] getContext(int i, String[] toks, String[] tags, String[] lemmas); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_LemmaS0100644 0000000 0000000 00000000156 14135770370 032575 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleStream.java0100664 0001750 0001750 00000004030 14135770370 034126 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Reads data for training and testing the lemmatizer. The format consists of: * word\tpostag\tlemma. * @version 2016-02-16 */ public class LemmaSampleStream extends FilterObjectStream { public LemmaSampleStream(ObjectStream samples) { super(samples); } public LemmaSample read() throws IOException { List toks = new ArrayList<>(); List tags = new ArrayList<>(); List preds = new ArrayList<>(); for (String line = samples.read(); line != null && !line.equals(""); line = samples.read()) { String[] parts = line.split("\t"); if (parts.length != 3) { System.err.println("Skipping corrupt line: " + line); } else { toks.add(parts[0]); tags.add(parts[1]); preds.add(parts[2]); } } if (toks.size() > 0) { return new LemmaSample(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]), preds.toArray(new String[preds.size()])); } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java0100664 0001750 0001750 00000007322 14135770370 032761 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; /** * Represents an lemmatized sentence. */ public class LemmaSample implements Serializable { private List tokens; private List tags; private final List lemmas; /** * Represents one lemma sample. * @param tokens the token * @param tags the postags * @param lemmas the lemmas */ public LemmaSample(String[] tokens, String[] tags, String[] lemmas) { validateArguments(tokens.length, tags.length, lemmas.length); this.tokens = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(tokens))); this.tags = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(tags))); this.lemmas = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(lemmas))); } /** * Lemma Sample constructor. * @param tokens the tokens * @param tags the postags * @param lemmas the lemmas */ public LemmaSample(List tokens, List tags, List lemmas) { validateArguments(tokens.size(), tags.size(), lemmas.size()); this.tokens = Collections.unmodifiableList(new ArrayList<>(tokens)); this.tags = Collections.unmodifiableList(new ArrayList<>(tags)); this.lemmas = Collections.unmodifiableList(new ArrayList<>(lemmas)); } public String[] getTokens() { return tokens.toArray(new String[tokens.size()]); } public String[] getTags() { return tags.toArray(new String[tags.size()]); } public String[] getLemmas() { return lemmas.toArray(new String[lemmas.size()]); } private void validateArguments(int tokensSize, int tagsSize, int lemmasSize) throws IllegalArgumentException { if (tokensSize != tagsSize || tagsSize != lemmasSize) { throw new IllegalArgumentException( "All arrays must have the same length: " + "sentenceSize: " + tokensSize + ", tagsSize: " + tagsSize + ", predsSize: " + lemmasSize + "!"); } } @Override public String toString() { StringBuilder lemmaString = new StringBuilder(); for (int ci = 0; ci < lemmas.size(); ci++) { lemmaString.append(tokens.get(ci)).append("\t").append(tags.get(ci)) .append("\t").append(lemmas.get(ci)).append("\n"); } return lemmaString.toString(); } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(getTokens()), Arrays.hashCode(getTags()), Arrays.hashCode(getLemmas())); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof LemmaSample) { LemmaSample a = (LemmaSample) obj; return Arrays.equals(getTokens(), a.getTokens()) && Arrays.equals(getTags(), a.getTags()) && Arrays.equals(getLemmas(), a.getLemmas()); } return false; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Lemmat0100644 0000000 0000000 00000000160 14135770370 032631 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerEvaluator.ja0100664 0001750 0001750 00000006015 14135770370 034227 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.Mean; /** * The {@link LemmatizerEvaluator} measures the performance of * the given {@link Lemmatizer} with the provided reference * {@link LemmaSample}s. */ public class LemmatizerEvaluator extends Evaluator { private Lemmatizer lemmatizer; private Mean wordAccuracy = new Mean(); /** * Initializes the current instance. * * @param aLemmatizer a lemmatizer * @param listeners an array of evaluation listeners */ public LemmatizerEvaluator(Lemmatizer aLemmatizer, LemmatizerEvaluationMonitor ... listeners) { super(listeners); this.lemmatizer = aLemmatizer; } /** * Evaluates the given reference {@link LemmaSample} object. * * This is done by tagging the sentence from the reference * {@link LemmaSample} with the {@link Lemmatizer}. The * tags are then used to update the word accuracy score. * * @param reference the reference {@link LemmaSample}. * * @return the predicted {@link LemmaSample}. */ @Override protected LemmaSample processSample(LemmaSample reference) { String[] predictedLemmas = lemmatizer.lemmatize(reference.getTokens(), reference.getTags()); String[] referenceLemmas = reference.getLemmas(); for (int i = 0; i < referenceLemmas.length; i++) { if (referenceLemmas[i].equals(predictedLemmas[i])) { wordAccuracy.add(1); } else { wordAccuracy.add(0); } } return new LemmaSample(reference.getTokens(), reference.getTags(), predictedLemmas); } /** * Retrieves the word accuracy. * * This is defined as: * word accuracy = correctly detected tags / total words * * @return the word accuracy */ public double getWordAccuracy() { return wordAccuracy.mean(); } /** * Retrieves the total number of words considered * in the evaluation. * * @return the word count */ public long getWordCount() { return wordAccuracy.count(); } /** * Represents this objects as human readable {@link String}. */ @Override public String toString() { return "Accuracy:" + wordAccuracy.mean() + " Number of Samples: " + wordAccuracy.count(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Defaul0100644 0000000 0000000 00000000176 14135770370 032621 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerConte0100664 0001750 0001750 00000006517 14135770370 034260 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; /** * Simple feature generator for learning statistical lemmatizers. * Features based on Grzegorz Chrupała. 2008. Towards a Machine-Learning * Architecture for Lexical Functional Grammar Parsing. PhD dissertation, * Dublin City University * @version 2016-02-15 */ public class DefaultLemmatizerContextGenerator implements LemmatizerContextGenerator { private static final int PREFIX_LENGTH = 5; private static final int SUFFIX_LENGTH = 7; private static Pattern hasCap = Pattern.compile("[A-Z]"); private static Pattern hasNum = Pattern.compile("[0-9]"); public DefaultLemmatizerContextGenerator() { } protected static String[] getPrefixes(String lex) { String[] prefs = new String[PREFIX_LENGTH]; for (int li = 1; li < PREFIX_LENGTH; li++) { prefs[li] = lex.substring(0, StrictMath.min(li + 1, lex.length())); } return prefs; } protected static String[] getSuffixes(String lex) { String[] suffs = new String[SUFFIX_LENGTH]; for (int li = 1; li < SUFFIX_LENGTH; li++) { suffs[li] = lex.substring(StrictMath.max(lex.length() - li - 1, 0)); } return suffs; } public String[] getContext(int index, String[] sequence, String[] priorDecisions, Object[] additionalContext) { return getContext(index, sequence, (String[]) additionalContext[0], priorDecisions); } public String[] getContext(int index, String[] toks, String[] tags, String[] preds) { // Word String w0; // Tag String t0; // Previous prediction String p_1; String lex = toks[index]; if (index < 1) { p_1 = "p_1=bos"; } else { p_1 = "p_1=" + preds[index - 1]; } w0 = "w0=" + toks[index]; t0 = "t0=" + tags[index]; List features = new ArrayList<>(); features.add(w0); features.add(t0); features.add(p_1); features.add(p_1 + t0); features.add(p_1 + w0); // do some basic suffix analysis String[] suffs = getSuffixes(lex); for (String suff : suffs) { features.add("suf=" + suff); } String[] prefs = getPrefixes(lex); for (String pref : prefs) { features.add("pre=" + pref); } // see if the word has any special characters if (lex.indexOf('-') != -1) { features.add("h"); } if (hasCap.matcher(lex).find()) { features.add("c"); } if (hasNum.matcher(lex).find()) { features.add("d"); } return features.toArray(new String[features.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Lemmat0100644 0000000 0000000 00000000156 14135770370 032636 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerFactory.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerFactory.java0100664 0001750 0001750 00000004167 14135770370 034231 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.ext.ExtensionLoader; public class LemmatizerFactory extends BaseToolFactory { /** * Creates a {@link LemmatizerFactory} that provides the default implementation * of the resources. */ public LemmatizerFactory() { } public static LemmatizerFactory create(String subclassName) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new LemmatizerFactory(); } try { return ExtensionLoader.instantiateExtension(LemmatizerFactory.class, subclassName); } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } @Override public void validateArtifactMap() throws InvalidFormatException { // no additional artifacts } public SequenceValidator getSequenceValidator() { return new DefaultLemmatizerSequenceValidator(); } public LemmatizerContextGenerator getContextGenerator() { return new DefaultLemmatizerContextGenerator(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/Lemmatizer.java0100664 0001750 0001750 00000003137 14135770370 032675 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.util.List; /** * The interface for lemmatizers. */ public interface Lemmatizer { /** * Generates lemmas for the word and postag returning the result in an array. * * @param toks an array of the tokens * @param tags an array of the pos tags * * @return an array of possible lemmas for each token in the sequence. */ String[] lemmatize(String[] toks, String[] tags); /** * Generates a lemma tags for the word and postag returning the result in a list * of every possible lemma for each token and postag. * * @param toks an array of the tokens * @param tags an array of the pos tags * @return a list of every possible lemma for each token in the sequence. */ List> lemmatize(List toks, List tags); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_LemmaS0100644 0000000 0000000 00000000166 14135770370 032576 xustar000000000 0000000 118 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleSequenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSampleSequenceStr0100664 0001750 0001750 00000004747 14135770370 034233 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.IOException; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.Sequence; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.ObjectStream; public class LemmaSampleSequenceStream implements SequenceStream { private final ObjectStream samples; private final LemmatizerContextGenerator contextGenerator; public LemmaSampleSequenceStream(ObjectStream samples, LemmatizerContextGenerator contextGenerator) { this.samples = samples; this.contextGenerator = contextGenerator; } @Override public Sequence read() throws IOException { LemmaSample sample = samples.read(); if (sample != null) { String[] sentence = sample.getTokens(); String[] tags = sample.getTags(); String[] preds = sample.getLemmas(); Event[] events = new Event[sentence.length]; for (int i = 0; i < sentence.length; i++) { // it is safe to pass the tags as previous tags because // the context generator does not look for non predicted tags String[] context = contextGenerator.getContext(i, sentence, tags, preds); events[i] = new Event(tags[i], context); } return new Sequence<>(events,sample); } return null; } @Override public Event[] updateContext(Sequence sequence, AbstractModel model) { // TODO: Should be implemented for Perceptron sequence learning ... return null; } @Override public void reset() throws IOException, UnsupportedOperationException { samples.reset(); } @Override public void close() throws IOException { samples.close(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java0100664 0001750 0001750 00000023423 14135770370 033117 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.EventModelSequenceTrainer; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.SequenceTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.StringUtil; import opennlp.tools.util.TrainingParameters; /** * A probabilistic lemmatizer. Tries to predict the induced permutation class * for each word depending on its surrounding context. Based on * Grzegorz Chrupała. 2008. Towards a Machine-Learning Architecture * for Lexical Functional Grammar Parsing. PhD dissertation, Dublin City University. * http://grzegorz.chrupala.me/papers/phd-single.pdf */ public class LemmatizerME implements Lemmatizer { public static final int LEMMA_NUMBER = 29; public static final int DEFAULT_BEAM_SIZE = 3; protected int beamSize; private Sequence bestSequence; private SequenceClassificationModel model; private LemmatizerContextGenerator contextGenerator; private SequenceValidator sequenceValidator; /** * Initializes the current instance with the provided model * and the default beam size of 3. * * @param model the model */ public LemmatizerME(LemmatizerModel model) { LemmatizerFactory factory = model.getFactory(); int defaultBeamSize = LemmatizerME.DEFAULT_BEAM_SIZE; String beamSizeString = model.getManifestProperty(BeamSearch.BEAM_SIZE_PARAMETER); if (beamSizeString != null) { defaultBeamSize = Integer.parseInt(beamSizeString); } contextGenerator = factory.getContextGenerator(); beamSize = defaultBeamSize; sequenceValidator = factory.getSequenceValidator(); if (model.getLemmatizerSequenceModel() != null) { this.model = model.getLemmatizerSequenceModel(); } else { this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, (MaxentModel) model.getLemmatizerSequenceModel(), 0); } } public String[] lemmatize(String[] toks, String[] tags) { String[] ses = predictSES(toks, tags); return decodeLemmas(toks, ses); } @Override public List> lemmatize(List toks, List tags) { String[] tokens = toks.toArray(new String[toks.size()]); String[] posTags = tags.toArray(new String[tags.size()]); String[][] allLemmas = predictLemmas(LEMMA_NUMBER, tokens, posTags); List> predictedLemmas = new ArrayList<>(); for (String[] allLemma : allLemmas) { predictedLemmas.add(Arrays.asList(allLemma)); } return predictedLemmas; } /** * Predict Short Edit Script (automatically induced lemma class). * @param toks the array of tokens * @param tags the array of pos tags * @return an array containing the lemma classes */ public String[] predictSES(String[] toks, String[] tags) { bestSequence = model.bestSequence(toks, new Object[] {tags}, contextGenerator, sequenceValidator); List ses = bestSequence.getOutcomes(); return ses.toArray(new String[ses.size()]); } /** * Predict all possible lemmas (using a default upper bound). * @param numLemmas the default number of lemmas * @param toks the tokens * @param tags the postags * @return a double array containing all posible lemmas for each token and postag pair */ public String[][] predictLemmas(int numLemmas, String[] toks, String[] tags) { Sequence[] bestSequences = model.bestSequences(numLemmas, toks, new Object[] {tags}, contextGenerator, sequenceValidator); String[][] allLemmas = new String[bestSequences.length][]; for (int i = 0; i < allLemmas.length; i++) { List ses = bestSequences[i].getOutcomes(); String[] sesArray = ses.toArray(new String[ses.size()]); allLemmas[i] = decodeLemmas(toks,sesArray); } return allLemmas; } /** * Decodes the lemma from the word and the induced lemma class. * @param toks the array of tokens * @param preds the predicted lemma classes * @return the array of decoded lemmas */ public static String[] decodeLemmas(String[] toks, String[] preds) { List lemmas = new ArrayList<>(); for (int i = 0; i < toks.length; i++) { String lemma = StringUtil.decodeShortestEditScript(toks[i].toLowerCase(), preds[i]); if (lemma.length() == 0) { lemma = "_"; } lemmas.add(lemma); } return lemmas.toArray(new String[lemmas.size()]); } public static String[] encodeLemmas(String[] toks, String[] lemmas) { List sesList = new ArrayList<>(); for (int i = 0; i < toks.length; i++) { String ses = StringUtil.getShortestEditScript(toks[i], lemmas[i]); if (ses.length() == 0) { ses = "_"; } sesList.add(ses); } return sesList.toArray(new String[sesList.size()]); } public Sequence[] topKSequences(String[] sentence, String[] tags) { return model.bestSequences(DEFAULT_BEAM_SIZE, sentence, new Object[] { tags }, contextGenerator, sequenceValidator); } public Sequence[] topKSequences(String[] sentence, String[] tags, double minSequenceScore) { return model.bestSequences(DEFAULT_BEAM_SIZE, sentence, new Object[] { tags }, minSequenceScore, contextGenerator, sequenceValidator); } /** * Populates the specified array with the probabilities of the last decoded sequence. The * sequence was determined based on the previous call to lemmatize. The * specified array should be at least as large as the number of tokens in the * previous call to lemmatize. * * @param probs An array used to hold the probabilities of the last decoded sequence. */ public void probs(double[] probs) { bestSequence.getProbs(probs); } /** * Returns an array with the probabilities of the last decoded sequence. The * sequence was determined based on the previous call to chunk. * @return An array with the same number of probabilities as tokens were sent to chunk * when it was last called. */ public double[] probs() { return bestSequence.getProbs(); } public static LemmatizerModel train(String languageCode, ObjectStream samples, TrainingParameters trainParams, LemmatizerFactory posFactory) throws IOException { int beamSize = trainParams.getIntParameter(BeamSearch.BEAM_SIZE_PARAMETER, LemmatizerME.DEFAULT_BEAM_SIZE); LemmatizerContextGenerator contextGenerator = posFactory.getContextGenerator(); Map manifestInfoEntries = new HashMap<>(); TrainerType trainerType = TrainerFactory.getTrainerType(trainParams); MaxentModel lemmatizerModel = null; SequenceClassificationModel seqLemmatizerModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream es = new LemmaSampleEventStream(samples, contextGenerator); EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, manifestInfoEntries); lemmatizerModel = trainer.train(es); } else if (TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)) { LemmaSampleSequenceStream ss = new LemmaSampleSequenceStream(samples, contextGenerator); EventModelSequenceTrainer trainer = TrainerFactory.getEventModelSequenceTrainer(trainParams, manifestInfoEntries); lemmatizerModel = trainer.train(ss); } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { SequenceTrainer trainer = TrainerFactory.getSequenceModelTrainer( trainParams, manifestInfoEntries); // TODO: This will probably cause issue, since the feature generator uses the outcomes array LemmaSampleSequenceStream ss = new LemmaSampleSequenceStream(samples, contextGenerator); seqLemmatizerModel = trainer.train(ss); } else { throw new IllegalArgumentException("Trainer type is not supported: " + trainerType); } if (lemmatizerModel != null) { return new LemmatizerModel(languageCode, lemmatizerModel, beamSize, manifestInfoEntries, posFactory); } else { return new LemmatizerModel(languageCode, seqLemmatizerModel, manifestInfoEntries, posFactory); } } public Sequence[] topKLemmaClasses(String[] sentence, String[] tags) { return model.bestSequences(DEFAULT_BEAM_SIZE, sentence, new Object[] { tags }, contextGenerator, sequenceValidator); } public Sequence[] topKLemmaClasses(String[] sentence, String[] tags, double minSequenceScore) { return model.bestSequences(DEFAULT_BEAM_SIZE, sentence, new Object[] { tags }, minSequenceScore, contextGenerator, sequenceValidator); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Dictio0100644 0000000 0000000 00000000161 14135770370 032626 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DictionaryLemmatizer.j0100664 0001750 0001750 00000012005 14135770370 034225 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Lemmatize by simple dictionary lookup into a hashmap built from a file * containing, for each line, word\tabpostag\tablemma. * @version 2014-07-08 */ public class DictionaryLemmatizer implements Lemmatizer { /** * The hashmap containing the dictionary. */ private final Map, List> dictMap = new HashMap<>(); /** * Construct a hashmap from the input tab separated dictionary. * * The input file should have, for each line, word\tabpostag\tablemma. * Alternatively, if multiple lemmas are possible for each word,postag pair, * then the format should be word\tab\postag\tablemma01#lemma02#lemma03 * * @param dictionary * the input dictionary via inputstream */ public DictionaryLemmatizer(final InputStream dictionary) throws IOException { init(dictionary); } public DictionaryLemmatizer(File dictionaryFile) throws IOException { try (InputStream in = new FileInputStream(dictionaryFile)) { init(in); } } public DictionaryLemmatizer(Path dictionaryFile) throws IOException { this(dictionaryFile.toFile()); } private void init(InputStream dictionary) throws IOException { final BufferedReader breader = new BufferedReader( new InputStreamReader(dictionary)); String line; while ((line = breader.readLine()) != null) { final String[] elems = line.split("\t"); final String[] lemmas = elems[2].split("#"); this.dictMap.put(Arrays.asList(elems[0], elems[1]), Arrays.asList(lemmas)); } } /** * Get the Map containing the dictionary. * * @return dictMap the Map */ public Map, List> getDictMap() { return this.dictMap; } /** * Get the dictionary keys (word and postag). * * @param word * the surface form word * @param postag * the assigned postag * @return returns the dictionary keys */ private List getDictKeys(final String word, final String postag) { final List keys = new ArrayList<>(Arrays.asList(word.toLowerCase(), postag)); return keys; } public String[] lemmatize(final String[] tokens, final String[] postags) { List lemmas = new ArrayList<>(); for (int i = 0; i < tokens.length; i++) { lemmas.add(this.lemmatize(tokens[i], postags[i])); } return lemmas.toArray(new String[lemmas.size()]); } public List> lemmatize(final List tokens, final List posTags) { List> allLemmas = new ArrayList<>(); for (int i = 0; i < tokens.size(); i++) { allLemmas.add(this.getAllLemmas(tokens.get(i), posTags.get(i))); } return allLemmas; } /** * Lookup lemma in a dictionary. Outputs "O" if not found. * * @param word * the token * @param postag * the postag * @return the lemma */ private String lemmatize(final String word, final String postag) { String lemma; final List keys = this.getDictKeys(word, postag); // lookup lemma as value of the map final List keyValues = this.dictMap.get(keys); if ( keyValues != null && !keyValues.isEmpty()) { lemma = keyValues.get(0); } else { lemma = "O"; } return lemma; } /** * Lookup every lemma for a word,pos tag in a dictionary. Outputs "O" if not * found. * * @param word * the token * @param postag * the postag * @return every lemma */ private List getAllLemmas(final String word, final String postag) { List lemmasList = new ArrayList<>(); final List keys = this.getDictKeys(word, postag); // lookup lemma as value of the map final List keyValues = this.dictMap.get(keys); if (keyValues != null && !keyValues.isEmpty()) { lemmasList.addAll(keyValues); } else { lemmasList.add("O"); } return lemmasList; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_lemmatizer_Defaul0100644 0000000 0000000 00000000177 14135770370 032622 xustar000000000 0000000 127 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/DefaultLemmatizerSeque0100664 0001750 0001750 00000002122 14135770370 034256 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.lemmatizer; import opennlp.tools.util.SequenceValidator; public class DefaultLemmatizerSequenceValidator implements SequenceValidator { //TODO implement this public boolean validSequence(int i, String[] sequence, String[] s, String outcome) { return true; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/Index.java0100664 0001750 0001750 00000003447 14135770370 031633 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import opennlp.tools.util.StringList; /** * This classes indexes {@link StringList}s. This makes it possible * to check if a certain token is contained in at least one of the * {@link StringList}s. */ public class Index { private Set tokens = new HashSet<>(); /** * Initializes the current instance with the given * {@link StringList} {@link Iterator}. * * @param tokenLists */ public Index(Iterator tokenLists) { while (tokenLists.hasNext()) { StringList tokens = tokenLists.next(); for (int i = 0; i < tokens.size(); i++) { this.tokens.add(tokens.getToken(i)); } } } /** * Checks if at leat one {@link StringList} contains the * given token. * * @param token * * @return true if the token is contained otherwise false. */ public boolean contains(String token) { return tokens.contains(token); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/package-info.java0100664 0001750 0001750 00000001604 14135770370 033101 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to parsing and storing dictionaries. */ package opennlp.tools.dictionary; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/Dictionary.java0100664 0001750 0001750 00000021027 14135770370 032663 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.util.AbstractSet; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.StringTokenizer; import opennlp.tools.dictionary.serializer.Attributes; import opennlp.tools.dictionary.serializer.DictionaryEntryPersistor; import opennlp.tools.dictionary.serializer.Entry; import opennlp.tools.util.StringList; import opennlp.tools.util.StringUtil; import opennlp.tools.util.model.DictionarySerializer; import opennlp.tools.util.model.SerializableArtifact; /** * This class is a dictionary. */ public class Dictionary implements Iterable, SerializableArtifact { private class StringListWrapper { private final StringList stringList; private StringListWrapper(StringList stringList) { this.stringList = stringList; } private StringList getStringList() { return stringList; } @Override public boolean equals(Object obj) { boolean result; if (obj == this) { result = true; } else if (obj instanceof StringListWrapper) { StringListWrapper other = (StringListWrapper) obj; if (isCaseSensitive) { result = this.stringList.equals(other.getStringList()); } else { result = this.stringList.compareToIgnoreCase(other.getStringList()); } } else { result = false; } return result; } @Override public int hashCode() { // if lookup is too slow optimize this return StringUtil.toLowerCase(this.stringList.toString()).hashCode(); } @Override public String toString() { return this.stringList.toString(); } } private Set entrySet = new HashSet<>(); private final boolean isCaseSensitive; private int minTokenCount = 99999; private int maxTokenCount = 0; /** * Initializes an empty {@link Dictionary}. */ public Dictionary() { this(false); } public Dictionary(boolean caseSensitive) { isCaseSensitive = caseSensitive; } /** * Initializes the {@link Dictionary} from an existing dictionary resource. * * @param in {@link InputStream} * @throws IOException */ public Dictionary(InputStream in) throws IOException { isCaseSensitive = DictionaryEntryPersistor.create(in, entry -> put(entry.getTokens())); } /** * Adds the tokens to the dictionary as one new entry. * * @param tokens the new entry */ public void put(StringList tokens) { entrySet.add(new StringListWrapper(tokens)); minTokenCount = StrictMath.min(minTokenCount, tokens.size()); maxTokenCount = StrictMath.max(maxTokenCount, tokens.size()); } /** * * @return minimum token count in the dictionary */ public int getMinTokenCount() { return minTokenCount; } /** * * @return maximum token count in the dictionary */ public int getMaxTokenCount() { return maxTokenCount; } /** * Checks if this dictionary has the given entry. * * @param tokens query * @return true if it contains the entry otherwise false */ public boolean contains(StringList tokens) { return entrySet.contains(new StringListWrapper(tokens)); } /** * Removes the given tokens form the current instance. * * @param tokens filter tokens */ public void remove(StringList tokens) { entrySet.remove(new StringListWrapper(tokens)); } /** * Retrieves an Iterator over all tokens. * * @return token-{@link Iterator} */ public Iterator iterator() { final Iterator entries = entrySet.iterator(); return new Iterator() { public boolean hasNext() { return entries.hasNext(); } public StringList next() { return entries.next().getStringList(); } public void remove() { entries.remove(); } }; } /** * Retrieves the number of tokens in the current instance. * * @return number of tokens */ public int size() { return entrySet.size(); } /** * Writes the current instance to the given {@link OutputStream}. * * @param out {@link OutputStream} * @throws IOException */ public void serialize(OutputStream out) throws IOException { Iterator entryIterator = new Iterator() { private Iterator dictionaryIterator = Dictionary.this.iterator(); public boolean hasNext() { return dictionaryIterator.hasNext(); } public Entry next() { StringList tokens = dictionaryIterator.next(); return new Entry(tokens, new Attributes()); } public void remove() { throw new UnsupportedOperationException(); } }; DictionaryEntryPersistor.serialize(out, entryIterator, isCaseSensitive); } @Override public boolean equals(Object obj) { boolean result; if (obj == this) { result = true; } else if (obj instanceof Dictionary) { Dictionary dictionary = (Dictionary) obj; result = entrySet.equals(dictionary.entrySet); } else { result = false; } return result; } @Override public int hashCode() { return entrySet.hashCode(); } @Override public String toString() { return entrySet.toString(); } /** * Reads a dictionary which has one entry per line. The tokens inside an * entry are whitespace delimited. * * @param in {@link Reader} * @return the parsed dictionary * @throws IOException */ public static Dictionary parseOneEntryPerLine(Reader in) throws IOException { BufferedReader lineReader = new BufferedReader(in); Dictionary dictionary = new Dictionary(); String line; while ((line = lineReader.readLine()) != null) { StringTokenizer whiteSpaceTokenizer = new StringTokenizer(line, " "); String[] tokens = new String[whiteSpaceTokenizer.countTokens()]; if (tokens.length > 0) { int tokenIndex = 0; while (whiteSpaceTokenizer.hasMoreTokens()) { tokens[tokenIndex++] = whiteSpaceTokenizer.nextToken(); } dictionary.put(new StringList(tokens)); } } return dictionary; } /** * Gets this dictionary as a {@code Set}. Only {@code iterator()}, * {@code size()} and {@code contains(Object)} methods are implemented. * * If this dictionary entries are multi tokens only the first token of the * entry will be part of the Set. * * @return a Set containing the entries of this dictionary */ public Set asStringSet() { return new AbstractSet() { @Override public Iterator iterator() { final Iterator entries = entrySet.iterator(); return new Iterator() { public boolean hasNext() { return entries.hasNext(); } public String next() { return entries.next().getStringList().getToken(0); } public void remove() { throw new UnsupportedOperationException(); } }; } @Override public int size() { return entrySet.size(); } @Override public boolean contains(Object obj) { boolean result = false; if (obj instanceof String) { String str = (String) obj; result = entrySet.contains(new StringListWrapper(new StringList(str))); } return result; } }; } /** * Gets the Serializer Class for {@link Dictionary} * @return {@link DictionarySerializer} */ @Override public Class getArtifactSerializerClass() { return DictionarySerializer.class; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_dictionary_serial0100644 0000000 0000000 00000000165 14135770370 032672 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/EntryInserter.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/EntryInsert0100664 0001750 0001750 00000002051 14135770370 034271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary.serializer; import opennlp.tools.util.InvalidFormatException; public interface EntryInserter { /** * * @param entry * @throws InvalidFormatException */ void insert(Entry entry) throws InvalidFormatException; } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_dictionary_serial0100644 0000000 0000000 00000000162 14135770370 032667 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/Attributes.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/Attributes.0100664 0001750 0001750 00000003544 14135770370 034217 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary.serializer; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Objects; /** * The {@link Attributes} class stores name value pairs. * * Problem: The HashMap for storing the name value pairs has a very high * memory footprint, replace it. */ public class Attributes { private Map mNameValueMap = new HashMap<>(); /** * Retrieves the value for the given key or null if attribute it not set. * * @param key * * @return the value */ public String getValue(String key) { return mNameValueMap.get(key); } /** * Sets a key/value pair. * * @param key * @param value */ public void setValue(String key, String value) { Objects.requireNonNull(key, "key must not be null"); Objects.requireNonNull(value, "value must not be null"); mNameValueMap.put(key, value); } /** * Iterates over the keys. * * @return key-{@link Iterator} */ public Iterator iterator() { return mNameValueMap.keySet().iterator(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_dictionary_serial0100644 0000000 0000000 00000000200 14135770370 032660 xustar000000000 0000000 128 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryEntryPersistor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/DictionaryE0100664 0001750 0001750 00000023460 14135770370 034224 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary.serializer; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.helpers.XMLReaderFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.StringList; import opennlp.tools.util.model.UncloseableInputStream; /** * This class is used by for reading and writing dictionaries of all kinds. */ public class DictionaryEntryPersistor { // TODO: should check for invalid format, make it save private static class DictionaryContenthandler implements ContentHandler { private EntryInserter mInserter; // private boolean mIsInsideDictionaryElement; // private boolean mIsInsideEntryElement; private boolean mIsInsideTokenElement; private boolean mIsCaseSensitiveDictionary; private List mTokenList = new LinkedList<>(); private StringBuilder token = new StringBuilder(); private Attributes mAttributes; private DictionaryContenthandler(EntryInserter inserter) { mInserter = inserter; mIsCaseSensitiveDictionary = true; } /** * Not implemented. */ public void processingInstruction(String target, String data) throws SAXException { } /** * Not implemented. */ public void startDocument() throws SAXException { } public void startElement(String uri, String localName, String qName, org.xml.sax.Attributes atts) throws SAXException { if (DICTIONARY_ELEMENT.equals(localName)) { mAttributes = new Attributes(); for (int i = 0; i < atts.getLength(); i++) { mAttributes.setValue(atts.getLocalName(i), atts.getValue(i)); } /* get the attribute here ... */ if (mAttributes.getValue(ATTRIBUTE_CASE_SENSITIVE) != null) { mIsCaseSensitiveDictionary = Boolean.valueOf(mAttributes.getValue(ATTRIBUTE_CASE_SENSITIVE)); } mAttributes = null; } else if (ENTRY_ELEMENT.equals(localName)) { mAttributes = new Attributes(); for (int i = 0; i < atts.getLength(); i++) { mAttributes.setValue(atts.getLocalName(i), atts.getValue(i)); } } else if (TOKEN_ELEMENT.equals(localName)) { mIsInsideTokenElement = true; } } public void characters(char[] ch, int start, int length) throws SAXException { if (mIsInsideTokenElement) { token.append(ch, start, length); } } /** * Creates the Profile object after processing is complete * and switches mIsInsideNgramElement flag. */ public void endElement(String uri, String localName, String qName) throws SAXException { if (TOKEN_ELEMENT.equals(localName)) { mTokenList.add(token.toString().trim()); token.setLength(0); mIsInsideTokenElement = false; } else if (ENTRY_ELEMENT.equals(localName)) { String[] tokens = mTokenList.toArray( new String[mTokenList.size()]); Entry entry = new Entry(new StringList(tokens), mAttributes); try { mInserter.insert(entry); } catch (InvalidFormatException e) { throw new SAXException("Invalid dictionary format!", e); } mTokenList.clear(); mAttributes = null; } } /** * Not implemented. */ public void endDocument() throws SAXException { } /** * Not implemented. */ public void endPrefixMapping(String prefix) throws SAXException { } /** * Not implemented. */ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { } /** * Not implemented. */ public void setDocumentLocator(Locator locator) { } /** * Not implemented. */ public void skippedEntity(String name) throws SAXException { } /** * Not implemented. */ public void startPrefixMapping(String prefix, String uri) throws SAXException { } } private static final String CHARSET = StandardCharsets.UTF_8.name(); private static final String DICTIONARY_ELEMENT = "dictionary"; private static final String ENTRY_ELEMENT = "entry"; private static final String TOKEN_ELEMENT = "token"; private static final String ATTRIBUTE_CASE_SENSITIVE = "case_sensitive"; /** * Creates {@link Entry}s from the given {@link InputStream} and * forwards these {@link Entry}s to the {@link EntryInserter}. * * After creation is finished the provided {@link InputStream} is closed. * * @param in stream to read entries from * @param inserter inserter to forward entries to * * @return isCaseSensitive attribute for Dictionary * * @throws IOException * @throws InvalidFormatException */ public static boolean create(InputStream in, EntryInserter inserter) throws IOException { DictionaryContenthandler profileContentHandler = new DictionaryContenthandler(inserter); XMLReader xmlReader; try { xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setContentHandler(profileContentHandler); xmlReader.parse(new InputSource(new UncloseableInputStream(in))); } catch (SAXException e) { throw new InvalidFormatException("The profile data stream has " + "an invalid format!", e); } return profileContentHandler.mIsCaseSensitiveDictionary; } /** * Serializes the given entries to the given {@link OutputStream}. * * After the serialization is finished the provided * {@link OutputStream} remains open. * * @param out stream to serialize to * @param entries entries to serialize * * @throws IOException If an I/O error occurs * @deprecated Use * {@link DictionaryEntryPersistor#serialize(java.io.OutputStream, java.util.Iterator, boolean)} instead */ @Deprecated public static void serialize(OutputStream out, Iterator entries) throws IOException { DictionaryEntryPersistor.serialize(out, entries, true); } /** * Serializes the given entries to the given {@link OutputStream}. * * After the serialization is finished the provided * {@link OutputStream} remains open. * * @param out stream to serialize to * @param entries entries to serialize * @param casesensitive indicates if the written dictionary * should be case sensitive or case insensitive. * * @throws IOException If an I/O error occurs */ public static void serialize(OutputStream out, Iterator entries, boolean casesensitive) throws IOException { StreamResult streamResult = new StreamResult(out); SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); TransformerHandler hd; try { hd = tf.newTransformerHandler(); } catch (TransformerConfigurationException e) { throw new AssertionError("The Transformer configuration must be valid!"); } Transformer serializer = hd.getTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, CHARSET); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); hd.setResult(streamResult); try { hd.startDocument(); AttributesImpl dictionaryAttributes = new AttributesImpl(); dictionaryAttributes.addAttribute("", "", ATTRIBUTE_CASE_SENSITIVE, "", String.valueOf(casesensitive)); hd.startElement("", "", DICTIONARY_ELEMENT, dictionaryAttributes); while (entries.hasNext()) { Entry entry = entries.next(); serializeEntry(hd, entry); } hd.endElement("", "", DICTIONARY_ELEMENT); hd.endDocument(); } catch (SAXException e) { throw new IOException("Error during serialization: " + e.getMessage(), e); } } private static void serializeEntry(TransformerHandler hd, Entry entry) throws SAXException { AttributesImpl entryAttributes = new AttributesImpl(); for (Iterator it = entry.getAttributes().iterator(); it.hasNext();) { String key = it.next(); entryAttributes.addAttribute("", "", key, "", entry.getAttributes().getValue(key)); } hd.startElement("", "", ENTRY_ELEMENT, entryAttributes); StringList tokens = entry.getTokens(); for (String token : tokens) { hd.startElement("", "", TOKEN_ELEMENT, new AttributesImpl()); hd.characters(token.toCharArray(), 0, token.length()); hd.endElement("", "", TOKEN_ELEMENT); } hd.endElement("", "", ENTRY_ELEMENT); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/dictionary/serializer/Entry.java0100664 0001750 0001750 00000003270 14135770370 034030 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.dictionary.serializer; import opennlp.tools.util.StringList; /** * An {@link Entry} is a {@link StringList} which can * optionally be mapped to attributes. * * {@link Entry}s is a read and written by the {@link DictionaryEntryPersistor}. * * @see DictionaryEntryPersistor * @see Attributes */ public class Entry { private StringList tokens; private Attributes attributes; /** * Initializes the current instance. * * @param tokens * @param attributes */ public Entry(StringList tokens, Attributes attributes) { this.tokens = tokens; this.attributes = attributes; } /** * Retrieves the tokens. * * @return the tokens */ public StringList getTokens() { return tokens; } /** * Retrieves the {@link Attributes}. * * @return the {@link Attributes} */ public Attributes getAttributes() { return attributes; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java0100664 0001750 0001750 00000005245 14135770370 032030 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.model.BaseModel; /** * A model for document categorization */ public class DoccatModel extends BaseModel { private static final String COMPONENT_NAME = "DocumentCategorizerME"; private static final String DOCCAT_MODEL_ENTRY_NAME = "doccat.model"; public DoccatModel(String languageCode, MaxentModel doccatModel, Map manifestInfoEntries, DoccatFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(DOCCAT_MODEL_ENTRY_NAME, doccatModel); checkArtifactMap(); } public DoccatModel(InputStream in) throws IOException { super(COMPONENT_NAME, in); } public DoccatModel(File modelFile) throws IOException { super(COMPONENT_NAME, modelFile); } public DoccatModel(Path modelPath) throws IOException { this(modelPath.toFile()); } public DoccatModel(URL modelURL) throws IOException { super(COMPONENT_NAME, modelURL); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(DOCCAT_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Doccat model is incomplete!"); } } public DoccatFactory getFactory() { return (DoccatFactory) this.toolFactory; } @Override protected Class getDefaultFactory() { return DoccatFactory.class; } public MaxentModel getMaxentModel() { return (MaxentModel) artifactMap.get(DOCCAT_MODEL_ENTRY_NAME); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java0100664 0001750 0001750 00000005524 14135770370 032572 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; /** * Class which holds a classified document and its category. */ public class DocumentSample implements Serializable { private final String category; private final List text; private final Map extraInformation; public DocumentSample(String category, String[] text) { this(category, text, null); } public DocumentSample(String category, String[] text, Map extraInformation) { Objects.requireNonNull(text, "text must not be null"); this.category = Objects.requireNonNull(category, "category must not be null"); this.text = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(text))); if (extraInformation == null) { this.extraInformation = Collections.emptyMap(); } else { this.extraInformation = extraInformation; } } public String getCategory() { return category; } public String[] getText() { return text.toArray(new String[text.size()]); } public Map getExtraInformation() { return extraInformation; } @Override public String toString() { StringBuilder sampleString = new StringBuilder(); sampleString.append(category).append('\t'); for (String s : text) { sampleString.append(s).append(' '); } if (sampleString.length() > 0) { // remove last space sampleString.setLength(sampleString.length() - 1); } return sampleString.toString(); } @Override public int hashCode() { return Objects.hash(getCategory(), Arrays.hashCode(getText())); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof DocumentSample) { DocumentSample a = (DocumentSample) obj; return getCategory().equals(a.getCategory()) && Arrays.equals(getText(), a.getText()); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/FeatureGenerator.java0100664 0001750 0001750 00000002516 14135770370 033112 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Collection; import java.util.Map; /** * Interface for generating features for document categorization. */ public interface FeatureGenerator { /** * Extract features from given text fragments * * @param text the text fragments to extract features from * @param extraInformation optional extra information to be used by the feature generator * @return a collection of features */ Collection extractFeatures(String[] text, Map extraInformation); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/package-info.java0100664 0001750 0001750 00000001577 14135770370 032202 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package for classifying a document into a category. */ package opennlp.tools.doccat; ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000156 14135770370 032525 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerME.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerME.java0100664 0001750 0001750 00000012076 14135770370 034051 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; /** * Maxent implementation of {@link DocumentCategorizer}. */ public class DocumentCategorizerME implements DocumentCategorizer { /** * Shared default thread safe feature generator. */ private static FeatureGenerator defaultFeatureGenerator = new BagOfWordsFeatureGenerator(); private DoccatModel model; private DocumentCategorizerContextGenerator mContextGenerator; /** * Initializes the current instance with a doccat model. Default feature * generation is used. * * @param model the doccat model */ public DocumentCategorizerME(DoccatModel model) { this.model = model; this.mContextGenerator = new DocumentCategorizerContextGenerator(this.model .getFactory().getFeatureGenerators()); } /** * Categorize the given text provided as tokens along with * the provided extra information * * @param text text tokens to categorize * @param extraInformation additional information */ @Override public double[] categorize(String[] text, Map extraInformation) { return model.getMaxentModel().eval( mContextGenerator.getContext(text, extraInformation)); } /** * Categorizes the given text. * * @param text the text to categorize */ @Override public double[] categorize(String[] text) { return this.categorize(text, Collections.emptyMap()); } /** * Returns a map in which the key is the category name and the value is the score * * @param text the input text to classify * @return the score map */ @Override public Map scoreMap(String[] text) { Map probDist = new HashMap<>(); double[] categorize = categorize(text); int catSize = getNumberOfCategories(); for (int i = 0; i < catSize; i++) { String category = getCategory(i); probDist.put(category, categorize[getIndex(category)]); } return probDist; } /** * Returns a map with the score as a key in ascending order. * The value is a Set of categories with the score. * Many categories can have the same score, hence the Set as value * * @param text the input text to classify * @return the sorted score map */ @Override public SortedMap> sortedScoreMap(String[] text) { SortedMap> descendingMap = new TreeMap<>(); double[] categorize = categorize(text); int catSize = getNumberOfCategories(); for (int i = 0; i < catSize; i++) { String category = getCategory(i); double score = categorize[getIndex(category)]; if (descendingMap.containsKey(score)) { descendingMap.get(score).add(category); } else { Set newset = new HashSet<>(); newset.add(category); descendingMap.put(score, newset); } } return descendingMap; } public String getBestCategory(double[] outcome) { return model.getMaxentModel().getBestOutcome(outcome); } public int getIndex(String category) { return model.getMaxentModel().getIndex(category); } public String getCategory(int index) { return model.getMaxentModel().getOutcome(index); } public int getNumberOfCategories() { return model.getMaxentModel().getNumOutcomes(); } public String getAllResults(double[] results) { return model.getMaxentModel().getAllOutcomes(results); } public static DoccatModel train(String languageCode, ObjectStream samples, TrainingParameters mlParams, DoccatFactory factory) throws IOException { Map manifestInfoEntries = new HashMap<>(); EventTrainer trainer = TrainerFactory.getEventTrainer( mlParams, manifestInfoEntries); MaxentModel model = trainer.train( new DocumentCategorizerEventStream(samples, factory.getFeatureGenerators())); return new DoccatModel(languageCode, model, manifestInfoEntries, factory); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000167 14135770370 032527 xustar000000000 0000000 119 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerEventStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerEventSt0100664 0001750 0001750 00000004753 14135770370 034223 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Iterator; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; /** * Iterator-like class for modeling document classification events. */ public class DocumentCategorizerEventStream extends AbstractEventStream { private DocumentCategorizerContextGenerator mContextGenerator; /** * Initializes the current instance via samples and feature generators. * * @param data {@link ObjectStream} of {@link DocumentSample}s * * @param featureGenerators the feature generators */ public DocumentCategorizerEventStream(ObjectStream data, FeatureGenerator... featureGenerators) { super(data); mContextGenerator = new DocumentCategorizerContextGenerator(featureGenerators); } /** * Initializes the current instance. * * @param samples {@link ObjectStream} of {@link DocumentSample}s */ public DocumentCategorizerEventStream(ObjectStream samples) { super(samples); mContextGenerator = new DocumentCategorizerContextGenerator(new BagOfWordsFeatureGenerator()); } @Override protected Iterator createEvents(final DocumentSample sample) { return new Iterator() { private boolean isVirgin = true; public boolean hasNext() { return isVirgin; } public Event next() { isVirgin = false; return new Event(sample.getCategory(), mContextGenerator.getContext(sample.getText(), sample.getExtraInformation())); } public void remove() { throw new UnsupportedOperationException(); } }; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatCrossValidator.java0100664 0001750 0001750 00000006172 14135770370 033727 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.Mean; /** * Cross validator for document categorization */ public class DoccatCrossValidator { private final String languageCode; private final TrainingParameters params; private Mean documentAccuracy = new Mean(); private DoccatEvaluationMonitor[] listeners; private DoccatFactory factory; /** * Creates a {@link DoccatCrossValidator} with the given * {@link FeatureGenerator}s. */ public DoccatCrossValidator(String languageCode, TrainingParameters mlParams, DoccatFactory factory, DoccatEvaluationMonitor ... listeners) { this.languageCode = languageCode; this.params = mlParams; this.listeners = listeners; this.factory = factory; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>( samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner .next(); DoccatModel model = DocumentCategorizerME.train(languageCode, trainingSampleStream, params, factory); DocumentCategorizerEvaluator evaluator = new DocumentCategorizerEvaluator( new DocumentCategorizerME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); documentAccuracy.add(evaluator.getAccuracy(), evaluator.getDocumentCount()); } } /** * Retrieves the accuracy for all iterations. * * @return the word accuracy */ public double getDocumentAccuracy() { return documentAccuracy.mean(); } /** * Retrieves the number of words which where validated over all iterations. * The result is the amount of folds multiplied by the total number of words. * * @return the word count */ public long getDocumentCount() { return documentAccuracy.count(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_DoccatEval0100644 0000000 0000000 00000000160 14135770370 032503 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatEvaluationMonitor.ja0100664 0001750 0001750 00000002001 14135770370 034103 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import opennlp.tools.util.eval.EvaluationMonitor; /** * {@link EvaluationMonitor} for doccat. */ public interface DoccatEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_BagOfWords0100644 0000000 0000000 00000000163 14135770370 032476 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/BagOfWordsFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/BagOfWordsFeatureGenerator0100664 0001750 0001750 00000003565 14135770370 034115 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.Objects; import opennlp.tools.util.featuregen.StringPattern; /** * Generates a feature for each word in a document. */ public class BagOfWordsFeatureGenerator implements FeatureGenerator { private final boolean useOnlyAllLetterTokens; public BagOfWordsFeatureGenerator() { this(false); } BagOfWordsFeatureGenerator(boolean useOnlyAllLetterTokens) { this.useOnlyAllLetterTokens = useOnlyAllLetterTokens; } @Override public Collection extractFeatures(String[] text, Map extraInformation) { Objects.requireNonNull(text, "text must not be null"); Collection bagOfWords = new ArrayList<>(text.length); for (String word : text) { if (useOnlyAllLetterTokens) { StringPattern pattern = StringPattern.recognize(word); if (pattern.isAllLetter()) bagOfWords.add("bow=" + word); } else { bagOfWords.add("bow=" + word); } } return bagOfWords; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000165 14135770370 032525 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerEvaluator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerEvaluat0100664 0001750 0001750 00000005507 14135770370 034232 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import opennlp.tools.tokenize.TokenSample; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.Mean; /** * The {@link DocumentCategorizerEvaluator} measures the performance of * the given {@link DocumentCategorizer} with the provided reference * {@link DocumentSample}s. * * @see DocumentCategorizer * @see DocumentSample */ public class DocumentCategorizerEvaluator extends Evaluator { private DocumentCategorizer categorizer; private Mean accuracy = new Mean(); /** * Initializes the current instance. * * @param categorizer the document categorizer instance */ public DocumentCategorizerEvaluator(DocumentCategorizer categorizer, DoccatEvaluationMonitor ... listeners) { super(listeners); this.categorizer = categorizer; } /** * Evaluates the given reference {@link DocumentSample} object. * * This is done by categorizing the document from the provided * {@link DocumentSample}. The detected category is then used * to calculate and update the score. * * @param sample the reference {@link TokenSample}. */ public DocumentSample processSample(DocumentSample sample) { String[] document = sample.getText(); double[] probs = categorizer.categorize(document); String cat = categorizer.getBestCategory(probs); if (sample.getCategory().equals(cat)) { accuracy.add(1); } else { accuracy.add(0); } return new DocumentSample(cat, sample.getText()); } /** * Retrieves the accuracy of provided {@link DocumentCategorizer}. * * accuracy = correctly categorized documents / total documents * * @return the accuracy */ public double getAccuracy() { return accuracy.mean(); } public long getDocumentCount() { return accuracy.count(); } /** * Represents this objects as human readable {@link String}. */ @Override public String toString() { return "Accuracy: " + accuracy.mean() + "\n" + "Number of documents: " + accuracy.count(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_DocumentCa0100644 0000000 0000000 00000000174 14135770370 032525 xustar000000000 0000000 124 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizerContext0100664 0001750 0001750 00000003126 14135770370 034250 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Collection; import java.util.LinkedList; import java.util.Map; /** * Context generator for document categorizer */ class DocumentCategorizerContextGenerator { private FeatureGenerator[] mFeatureGenerators; DocumentCategorizerContextGenerator(FeatureGenerator... featureGenerators) { mFeatureGenerators = featureGenerators; } public String[] getContext(String[] text, Map extraInformation) { Collection context = new LinkedList<>(); for (FeatureGenerator mFeatureGenerator : mFeatureGenerators) { Collection extractedFeatures = mFeatureGenerator.extractFeatures(text, extraInformation); context.addAll(extractedFeatures); } return context.toArray(new String[context.size()]); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_doccat_NGramFeatu0100644 0000000 0000000 00000000156 14135770370 032474 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/NGramFeatureGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/NGramFeatureGenerator.java0100664 0001750 0001750 00000005753 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Objects; import opennlp.tools.util.InvalidFormatException; /** * Generates ngram features for a document. * n-gram {@link FeatureGenerator} */ public class NGramFeatureGenerator implements FeatureGenerator { private final int minGram; private final int maxGram; /** * Constructor for ngrams. * * @param minGram minGram value - which means minimum words in ngram features * @param maxGram maxGram value - which means maximum words in ngram features * @throws InvalidFormatException */ public NGramFeatureGenerator(int minGram, int maxGram) throws InvalidFormatException { if (minGram > 0 && maxGram > 0) { if (minGram <= maxGram) { this.minGram = minGram; this.maxGram = maxGram; } else { throw new InvalidFormatException( "Minimum range value (minGram) should be less than or equal to maximum range value (maxGram)!"); } } else { throw new InvalidFormatException("Both minimum range value (minGram) & maximum " + "range value (maxGram) should be greater than or equal to 1!"); } } /** * Default constructor for Bi grams */ public NGramFeatureGenerator() throws InvalidFormatException { this(2, 2); } /** * Extract ngram features from given text fragments * * @param text the text fragments to extract features from * @param extraInfo optional extra information * @return a collection of n gram features */ public Collection extractFeatures(String[] text, Map extraInfo) { Objects.requireNonNull(text, "text must not be null"); List features = new ArrayList<>(); for (int i = 0; i <= text.length - minGram; i++) { final StringBuilder sb = new StringBuilder(); sb.append("ng="); for (int y = 0; y < maxGram && i + y < text.length; y++) { sb.append(":"); sb.append(text[i + y]); int gramCount = y + 1; if (maxGram >= gramCount && gramCount >= minGram) { features.add(sb.toString()); } } } return features; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentCategorizer.java0100664 0001750 0001750 00000006004 14135770370 033621 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Map; import java.util.Set; import java.util.SortedMap; /** * Interface for classes which categorize documents. */ public interface DocumentCategorizer { /** * Categorize the given text provided as tokens along with * the provided extra information * * @param text the tokens of text to categorize * @param extraInformation extra information * @return per category probabilities */ double[] categorize(String[] text, Map extraInformation); /** * Categorizes the given text, provided in separate tokens. * @param text the tokens of text to categorize * @return per category probabilities */ double[] categorize(String[] text); /** * get the best category from previously generated outcome probabilities * * @param outcome a vector of outcome probabilities * @return the best category String */ String getBestCategory(double[] outcome); /** * get the index of a certain category * * @param category the category * @return an index */ int getIndex(String category); /** * get the category at a given index * * @param index the index * @return a category */ String getCategory(int index); /** * get the number of categories * * @return the no. of categories */ int getNumberOfCategories(); /** * get the name of the category associated with the given probabilties * * @param results the probabilities of each category * @return the name of the outcome */ String getAllResults(double[] results); /** * Returns a map in which the key is the category name and the value is the score * * @param text the input text to classify * @return a map with the score as a key. The value is a Set of categories with the score. */ Map scoreMap(String[] text); /** * Get a map of the scores sorted in ascending aorder together with their associated categories. * Many categories can have the same score, hence the Set as value * * @param text the input text to classify * @return a map with the score as a key. The value is a Set of categories with the score. */ SortedMap> sortedScoreMap(String[] text); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSampleStream.java0100664 0001750 0001750 00000004364 14135770370 033747 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.io.IOException; import opennlp.tools.tokenize.WhitespaceTokenizer; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * This class reads in string encoded training samples, parses them and * outputs {@link DocumentSample} objects. *

* Format:
* Each line contains one sample document.
* The category is the first string in the line followed by a tab and whitespace * separated document tokens.
* Sample line: category-string tab-char whitespace-separated-tokens line-break-char(s)
*/ public class DocumentSampleStream extends FilterObjectStream { public DocumentSampleStream(ObjectStream samples) { super(samples); } public DocumentSample read() throws IOException { String sampleString = samples.read(); if (sampleString != null) { // Whitespace tokenize entire string String[] tokens = WhitespaceTokenizer.INSTANCE.tokenize(sampleString); DocumentSample sample; if (tokens.length > 1) { String category = tokens[0]; String[] docTokens = new String[tokens.length - 1]; System.arraycopy(tokens, 1, docTokens, 0, tokens.length - 1); sample = new DocumentSample(category, docTokens); } else { throw new IOException("Empty lines, or lines with only a category string are not allowed!"); } return sample; } return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatFactory.java0100664 0001750 0001750 00000010461 14135770370 032373 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.doccat; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.ext.ExtensionLoader; /** * The factory that provides Doccat default implementations and resources */ public class DoccatFactory extends BaseToolFactory { private static final String FEATURE_GENERATORS = "doccat.featureGenerators"; private FeatureGenerator[] featureGenerators; /** * Creates a {@link DoccatFactory} that provides the default implementation of * the resources. */ public DoccatFactory() {} public DoccatFactory(final FeatureGenerator[] featureGenerators) { this.featureGenerators = featureGenerators; } protected void init(FeatureGenerator[] featureGenerators) { this.featureGenerators = featureGenerators; } @Override public Map createManifestEntries() { Map manifestEntries = super.createManifestEntries(); if (getFeatureGenerators() != null) { manifestEntries.put(FEATURE_GENERATORS, featureGeneratorsAsString()); } return manifestEntries; } private String featureGeneratorsAsString() { List fgs = Arrays.asList(getFeatureGenerators()); Iterator iter = fgs.iterator(); StringBuilder sb = new StringBuilder(); if (iter.hasNext()) { sb.append(iter.next().getClass().getCanonicalName()); while (iter.hasNext()) { sb.append(',').append(iter.next().getClass().getCanonicalName()); } } return sb.toString(); } @Override public void validateArtifactMap() throws InvalidFormatException { // nothing to validate } public static DoccatFactory create(String subclassName, FeatureGenerator[] featureGenerators) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new DoccatFactory(featureGenerators); } try { DoccatFactory theFactory = ExtensionLoader.instantiateExtension( DoccatFactory.class, subclassName); theFactory.init(featureGenerators); return theFactory; } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } private FeatureGenerator[] loadFeatureGenerators(String classNames) { String[] classes = classNames.split(","); FeatureGenerator[] fgs = new FeatureGenerator[classes.length]; for (int i = 0; i < classes.length; i++) { fgs[i] = ExtensionLoader.instantiateExtension(FeatureGenerator.class, classes[i]); } return fgs; } public FeatureGenerator[] getFeatureGenerators() { if (featureGenerators == null) { if (artifactProvider != null) { String classNames = artifactProvider .getManifestProperty(FEATURE_GENERATORS); if (classNames != null) { this.featureGenerators = loadFeatureGenerators(classNames); } } if (featureGenerators == null) { // could not load using artifact provider // load bag of words as default this.featureGenerators = new FeatureGenerator[]{new BagOfWordsFeatureGenerator()}; } } return featureGenerators; } public void setFeatureGenerators(FeatureGenerator[] featureGenerators) { this.featureGenerators = featureGenerators; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_ChunkSamp0100644 0000000 0000000 00000000163 14135770370 032574 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleSequenceStream.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleSequenceStream0100664 0001750 0001750 00000004666 14135770370 034221 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.Sequence; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.ObjectStream; public class ChunkSampleSequenceStream implements SequenceStream { private final ObjectStream samples; private final ChunkerContextGenerator contextGenerator; public ChunkSampleSequenceStream(ObjectStream samples, ChunkerContextGenerator contextGenerator) { this.samples = samples; this.contextGenerator = contextGenerator; } @Override public Sequence read() throws IOException { ChunkSample sample = samples.read(); if (sample != null) { String[] sentence = sample.getSentence(); String[] tags = sample.getTags(); Event[] events = new Event[sentence.length]; for (int i = 0; i < sentence.length; i++) { // it is safe to pass the tags as previous tags because // the context generator does not look for non predicted tags String[] context = contextGenerator.getContext(i, sentence, tags, null); events[i] = new Event(tags[i], context); } return new Sequence<>(events,sample); } return null; } @Override public Event[] updateContext(Sequence sequence, AbstractModel model) { // TODO: Should be implemented for Perceptron sequence learning ... return null; } @Override public void reset() throws IOException, UnsupportedOperationException { samples.reset(); } @Override public void close() throws IOException { samples.close(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_DefaultCh0100644 0000000 0000000 00000000170 14135770370 032540 xustar000000000 0000000 120 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/DefaultChunkerContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/DefaultChunkerContextGene0100664 0001750 0001750 00000007446 14135770370 034211 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.TokenTag; /** Features based on chunking model described in Fei Sha and Fernando Pereira. Shallow * parsing with conditional random fields. In Proceedings of HLT-NAACL 2003. Association * for Computational Linguistics, 2003. */ public class DefaultChunkerContextGenerator implements ChunkerContextGenerator { /** * Creates the default context generator a chunker. */ public DefaultChunkerContextGenerator() { } public String[] getContext(int index, String[] tokens, String[] postags, String[] priorDecisions, Object[] additionalContext) { return getContext(index, tokens, postags, priorDecisions); } public String[] getContext(int i, String[] toks, String[] tags, String[] preds) { // Words in a 5-word window String w_2, w_1, w0, w1, w2; // Tags in a 5-word window String t_2, t_1, t0, t1, t2; // Previous predictions String p_2, p_1; if (i < 2) { w_2 = "w_2=bos"; t_2 = "t_2=bos"; p_2 = "p_2=bos"; } else { w_2 = "w_2=" + toks[i - 2]; t_2 = "t_2=" + tags[i - 2]; p_2 = "p_2" + preds[i - 2]; } if (i < 1) { w_1 = "w_1=bos"; t_1 = "t_1=bos"; p_1 = "p_1=bos"; } else { w_1 = "w_1=" + toks[i - 1]; t_1 = "t_1=" + tags[i - 1]; p_1 = "p_1=" + preds[i - 1]; } w0 = "w0=" + toks[i]; t0 = "t0=" + tags[i]; if (i + 1 >= toks.length) { w1 = "w1=eos"; t1 = "t1=eos"; } else { w1 = "w1=" + toks[i + 1]; t1 = "t1=" + tags[i + 1]; } if (i + 2 >= toks.length) { w2 = "w2=eos"; t2 = "t2=eos"; } else { w2 = "w2=" + toks[i + 2]; t2 = "t2=" + tags[i + 2]; } String[] features = new String[] { //add word features w_2, w_1, w0, w1, w2, w_1 + w0, w0 + w1, //add tag features t_2, t_1, t0, t1, t2, t_2 + t_1, t_1 + t0, t0 + t1, t1 + t2, t_2 + t_1 + t0, t_1 + t0 + t1, t0 + t1 + t2, //add pred tags p_2, p_1, p_2 + p_1, //add pred and tag p_1 + t_2, p_1 + t_1, p_1 + t0, p_1 + t1, p_1 + t2, p_1 + t_2 + t_1, p_1 + t_1 + t0, p_1 + t0 + t1, p_1 + t1 + t2, p_1 + t_2 + t_1 + t0, p_1 + t_1 + t0 + t1, p_1 + t0 + t1 + t2, //add pred and word p_1 + w_2, p_1 + w_1, p_1 + w0, p_1 + w1, p_1 + w2, p_1 + w_1 + w0, p_1 + w0 + w1 }; return features; } @Override public String[] getContext(int index, TokenTag[] sequence, String[] priorDecisions, Object[] additionalContext) { String[] token = TokenTag.extractTokens(sequence); String[] tags = TokenTag.extractTags(sequence); return getContext(index, token, tags, priorDecisions, additionalContext); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerFactory.java0100664 0001750 0001750 00000004177 14135770370 033006 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.TokenTag; import opennlp.tools.util.ext.ExtensionLoader; public class ChunkerFactory extends BaseToolFactory { /** * Creates a {@link ChunkerFactory} that provides the default implementation * of the resources. */ public ChunkerFactory() { } public static ChunkerFactory create(String subclassName) throws InvalidFormatException { if (subclassName == null) { // will create the default factory return new ChunkerFactory(); } try { return ExtensionLoader.instantiateExtension(ChunkerFactory.class, subclassName); } catch (Exception e) { String msg = "Could not instantiate the " + subclassName + ". The initialization throw an exception."; System.err.println(msg); e.printStackTrace(); throw new InvalidFormatException(msg, e); } } @Override public void validateArtifactMap() throws InvalidFormatException { // no additional artifacts } public SequenceValidator getSequenceValidator() { return new DefaultChunkerSequenceValidator(); } public ChunkerContextGenerator getContextGenerator() { return new DefaultChunkerContextGenerator(); } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerEventStream.java0100664 0001750 0001750 00000004311 14135770370 033622 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import opennlp.tools.ml.model.Event; import opennlp.tools.util.AbstractEventStream; import opennlp.tools.util.ObjectStream; /** * Class for creating an event stream out of data files for training a chunker. */ public class ChunkerEventStream extends AbstractEventStream { private ChunkerContextGenerator cg; /** * Creates a new event stream based on the specified data stream using the specified context generator. * @param d The data stream for this event stream. * @param cg The context generator which should be used in the creation of events for this event stream. */ public ChunkerEventStream(ObjectStream d, ChunkerContextGenerator cg) { super(d); this.cg = cg; } @Override protected Iterator createEvents(ChunkSample sample) { if (sample != null) { List events = new ArrayList<>(); String[] toksArray = sample.getSentence(); String[] tagsArray = sample.getTags(); String[] predsArray = sample.getPreds(); for (int ei = 0, el = sample.getSentence().length; ei < el; ei++) { events.add(new Event(predsArray[ei], cg.getContext(ei,toksArray,tagsArray,predsArray))); } return events.iterator(); } else { return Collections.emptyListIterator(); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/package-info.java0100664 0001750 0001750 00000001646 14135770370 032401 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to finding non-recursive syntactic annotation such as noun phrase chunks. */ package opennlp.tools.chunker; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSampleStream.java0100664 0001750 0001750 00000004325 14135770370 033440 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.util.ArrayList; import java.util.List; import opennlp.tools.util.FilterObjectStream; import opennlp.tools.util.ObjectStream; /** * Parses the conll 2000 shared task shallow parser training data. *

* Data format is specified on the conll page:
* * http://www.cnts.ua.ac.be/conll2000/chunking/ */ public class ChunkSampleStream extends FilterObjectStream { /** * Initializes the current instance. * * @param samples a plain text line stream */ public ChunkSampleStream(ObjectStream samples) { super(samples); } public ChunkSample read() throws IOException { List toks = new ArrayList<>(); List tags = new ArrayList<>(); List preds = new ArrayList<>(); for (String line = samples.read(); line != null && !line.equals(""); line = samples.read()) { String[] parts = line.split(" "); if (parts.length != 3) { System.err.println("Skipping corrupt line: " + line); } else { toks.add(parts[0]); tags.add(parts[1]); preds.add(parts[2]); } } if (toks.size() > 0) { return new ChunkSample(toks.toArray(new String[toks.size()]), tags.toArray(new String[tags.size()]), preds.toArray(new String[preds.size()])); } return null; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerEvaluator.java0100664 0001750 0001750 00000004716 14135770370 033340 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.eval.Evaluator; import opennlp.tools.util.eval.FMeasure; /** * The {@link ChunkerEvaluator} measures the performance * of the given {@link Chunker} with the provided * reference {@link ChunkSample}s. * * @see Evaluator * @see Chunker * @see ChunkSample */ public class ChunkerEvaluator extends Evaluator { private FMeasure fmeasure = new FMeasure(); /** * The {@link Chunker} used to create the predicted * {@link ChunkSample} objects. */ private Chunker chunker; /** * Initializes the current instance with the given * {@link Chunker}. * * @param chunker the {@link Chunker} to evaluate. * @param listeners evaluation listeners */ public ChunkerEvaluator(Chunker chunker, ChunkerEvaluationMonitor... listeners) { super(listeners); this.chunker = chunker; } /** * Evaluates the given reference {@link ChunkSample} object. * * This is done by finding the phrases with the * {@link Chunker} in the sentence from the reference * {@link ChunkSample}. The found phrases are then used to * calculate and update the scores. * * @param reference the reference {@link ChunkSample}. * * @return the predicted sample */ @Override protected ChunkSample processSample(ChunkSample reference) { String[] preds = chunker.chunk(reference.getSentence(), reference.getTags()); ChunkSample result = new ChunkSample(reference.getSentence(), reference.getTags(), preds); fmeasure.updateScores(reference.getPhrasesAsSpanList(), result.getPhrasesAsSpanList()); return result; } public FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java0100664 0001750 0001750 00000012726 14135770370 032436 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.file.Path; import java.util.Map; import java.util.Properties; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.model.AbstractModel; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; import opennlp.tools.util.TokenTag; import opennlp.tools.util.model.BaseModel; /** * The {@link ChunkerModel} is the model used * by a learnable {@link Chunker}. * * @see ChunkerME */ public class ChunkerModel extends BaseModel { private static final String COMPONENT_NAME = "ChunkerME"; private static final String CHUNKER_MODEL_ENTRY_NAME = "chunker.model"; public ChunkerModel(String languageCode, SequenceClassificationModel chunkerModel, Map manifestInfoEntries, ChunkerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(CHUNKER_MODEL_ENTRY_NAME, chunkerModel); checkArtifactMap(); } public ChunkerModel(String languageCode, MaxentModel chunkerModel, Map manifestInfoEntries, ChunkerFactory factory) { this(languageCode, chunkerModel, ChunkerME.DEFAULT_BEAM_SIZE, manifestInfoEntries, factory); } public ChunkerModel(String languageCode, MaxentModel chunkerModel, int beamSize, Map manifestInfoEntries, ChunkerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(CHUNKER_MODEL_ENTRY_NAME, chunkerModel); Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); manifest.put(BeamSearch.BEAM_SIZE_PARAMETER, Integer.toString(beamSize)); checkArtifactMap(); } public ChunkerModel(String languageCode, MaxentModel chunkerModel, ChunkerFactory factory) { this(languageCode, chunkerModel, null, factory); } public ChunkerModel(InputStream in) throws IOException, InvalidFormatException { super(COMPONENT_NAME, in); } public ChunkerModel(File modelFile) throws IOException, InvalidFormatException { super(COMPONENT_NAME, modelFile); } public ChunkerModel(Path modelPath) throws IOException, InvalidFormatException { this(modelPath.toFile()); } public ChunkerModel(URL modelURL) throws IOException, InvalidFormatException { super(COMPONENT_NAME, modelURL); } @Override protected void validateArtifactMap() throws InvalidFormatException { super.validateArtifactMap(); if (!(artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof AbstractModel)) { throw new InvalidFormatException("Chunker model is incomplete!"); } // Since 1.8.0 we changed the ChunkerFactory signature. This will check the if the model // declares a not default factory, and if yes, check if it was created before 1.8 if ( (getManifestProperty(FACTORY_NAME) != null && !getManifestProperty(FACTORY_NAME).equals("opennlp.tools.chunker.ChunkerFactory") ) && this.getVersion().getMajor() <= 1 && this.getVersion().getMinor() < 8) { throw new InvalidFormatException("The Chunker factory '" + getManifestProperty(FACTORY_NAME) + "' is no longer compatible. Please update it to match the latest ChunkerFactory."); } } /** * @deprecated use getChunkerSequenceModel instead. This method will be removed soon. */ @Deprecated public MaxentModel getChunkerModel() { if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof MaxentModel) { return (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME); } else { return null; } } public SequenceClassificationModel getChunkerSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof MaxentModel) { String beamSizeString = manifest.getProperty(BeamSearch.BEAM_SIZE_PARAMETER); int beamSize = ChunkerME.DEFAULT_BEAM_SIZE; if (beamSizeString != null) { beamSize = Integer.parseInt(beamSizeString); } return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME)); } else if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME); } else { return null; } } @Override protected Class getDefaultFactory() { return ChunkerFactory.class; } public ChunkerFactory getFactory() { return (ChunkerFactory) this.toolFactory; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_ChunkerEv0100644 0000000 0000000 00000000162 14135770370 032574 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerEvaluationMonitor.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerEvaluationMonitor.0100664 0001750 0001750 00000001713 14135770370 034205 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.eval.EvaluationMonitor; public interface ChunkerEvaluationMonitor extends EvaluationMonitor { } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_ChunkerCr0100644 0000000 0000000 00000000157 14135770370 032572 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerCrossValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerCrossValidator.jav0100664 0001750 0001750 00000005013 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.eval.CrossValidationPartitioner; import opennlp.tools.util.eval.FMeasure; public class ChunkerCrossValidator { private final String languageCode; private final TrainingParameters params; private FMeasure fmeasure = new FMeasure(); private ChunkerEvaluationMonitor[] listeners; private ChunkerFactory chunkerFactory; public ChunkerCrossValidator(String languageCode, TrainingParameters params, ChunkerFactory factory, ChunkerEvaluationMonitor... listeners) { this.chunkerFactory = factory; this.languageCode = languageCode; this.params = params; this.listeners = listeners; } /** * Starts the evaluation. * * @param samples * the data to train and test * @param nFolds * number of folds * * @throws IOException */ public void evaluate(ObjectStream samples, int nFolds) throws IOException { CrossValidationPartitioner partitioner = new CrossValidationPartitioner<>( samples, nFolds); while (partitioner.hasNext()) { CrossValidationPartitioner.TrainingSampleStream trainingSampleStream = partitioner .next(); ChunkerModel model = ChunkerME.train(languageCode, trainingSampleStream, params, chunkerFactory); // do testing ChunkerEvaluator evaluator = new ChunkerEvaluator(new ChunkerME(model), listeners); evaluator.evaluate(trainingSampleStream.getTestSampleStream()); fmeasure.mergeInto(evaluator.getFMeasure()); } } public FMeasure getFMeasure() { return fmeasure; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java0100664 0001750 0001750 00000015607 14135770370 032271 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import opennlp.tools.util.Span; /** * Class for holding chunks for a single unit of text. */ public class ChunkSample implements Serializable { private final List sentence; private final List tags; private final List preds; /** * Initializes the current instance. * * @param sentence * training sentence * @param tags * POS Tags for the sentence * @param preds * Chunk tags in B-* I-* notation */ public ChunkSample(String[] sentence, String[] tags, String[] preds) { validateArguments(sentence.length, tags.length, preds.length); this.sentence = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(sentence))); this.tags = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(tags))); this.preds = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(preds))); } /** * Initializes the current instance. * * @param sentence * training sentence * @param tags * POS Tags for the sentence * @param preds * Chunk tags in B-* I-* notation */ public ChunkSample(List sentence, List tags, List preds) { validateArguments(sentence.size(), tags.size(), preds.size()); this.sentence = Collections.unmodifiableList(new ArrayList<>(sentence)); this.tags = Collections.unmodifiableList(new ArrayList<>(tags)); this.preds = Collections.unmodifiableList(new ArrayList<>(preds)); } /** Gets the training sentence */ public String[] getSentence() { return sentence.toArray(new String[sentence.size()]); } /** Gets the POS Tags for the sentence */ public String[] getTags() { return tags.toArray(new String[tags.size()]); } /** Gets the Chunk tags in B-* I-* notation */ public String[] getPreds() { return preds.toArray(new String[preds.size()]); } /** Gets the phrases as an array of spans */ public Span[] getPhrasesAsSpanList() { return phrasesAsSpanList(getSentence(), getTags(), getPreds()); } /** * Static method to create arrays of spans of phrases * * @param aSentence * training sentence * @param aTags * POS Tags for the sentence * @param aPreds * Chunk tags in B-* I-* notation * * @return the phrases as an array of spans */ public static Span[] phrasesAsSpanList(String[] aSentence, String[] aTags, String[] aPreds) { validateArguments(aSentence.length, aTags.length, aPreds.length); // initialize with the list maximum size List phrases = new ArrayList<>(aSentence.length); String startTag = ""; int startIndex = 0; boolean foundPhrase = false; for (int ci = 0, cn = aPreds.length; ci < cn; ci++) { String pred = aPreds[ci]; if (pred.startsWith("B-") || !pred.equals("I-" + startTag) && !pred.equals("O")) { // start if (foundPhrase) { // handle the last phrases.add(new Span(startIndex, ci, startTag)); } startIndex = ci; startTag = pred.substring(2); foundPhrase = true; } else if (pred.equals("I-" + startTag)) { // middle // do nothing } else if (foundPhrase) { // end phrases.add(new Span(startIndex, ci, startTag)); foundPhrase = false; startTag = ""; } } if (foundPhrase) { // leftover phrases.add(new Span(startIndex, aPreds.length, startTag)); } return phrases.toArray(new Span[phrases.size()]); } private static void validateArguments(int sentenceSize, int tagsSize, int predsSize) throws IllegalArgumentException { if (sentenceSize != tagsSize || tagsSize != predsSize) throw new IllegalArgumentException( "All arrays must have the same length: " + "sentenceSize: " + sentenceSize + ", tagsSize: " + tagsSize + ", predsSize: " + predsSize + "!"); } /** * Creates a nice to read string for the phrases formatted as following:
* * [NP Rockwell_NNP ] [VP said_VBD ] [NP the_DT agreement_NN ] [VP calls_VBZ ] [SBAR for_IN ] * [NP it_PRP ] [VP to_TO supply_VB ] [NP 200_CD additional_JJ so-called_JJ shipsets_NNS ] * [PP for_IN ] [NP the_DT planes_NNS ] ._. * * * @return a nice to read string representation of the chunk phases */ public String nicePrint() { Span[] spans = getPhrasesAsSpanList(); StringBuilder result = new StringBuilder(" "); for (int tokenIndex = 0; tokenIndex < sentence.size(); tokenIndex++) { for (Span span : spans) { if (span.getStart() == tokenIndex) { result.append("[").append(span.getType()).append(" "); } if (span.getEnd() == tokenIndex) { result.append("]").append(' '); } } result.append(sentence.get(tokenIndex)).append("_").append(tags.get(tokenIndex)).append(' '); } if (sentence.size() > 1) result.setLength(result.length() - 1); for (Span span : spans) { if (span.getEnd() == sentence.size()) { result.append(']'); } } return result.toString(); } @Override public String toString() { StringBuilder chunkString = new StringBuilder(); for (int ci = 0; ci < preds.size(); ci++) { chunkString.append(sentence.get(ci)).append(" ").append(tags.get(ci)) .append(" ").append(preds.get(ci)).append("\n"); } return chunkString.toString(); } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(getSentence()), Arrays.hashCode(getTags()), Arrays.hashCode(getPreds())); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof ChunkSample) { ChunkSample a = (ChunkSample) obj; return Arrays.equals(getSentence(), a.getSentence()) && Arrays.equals(getTags(), a.getTags()) && Arrays.equals(getPreds(), a.getPreds()); } return false; } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/Chunker.java0100664 0001750 0001750 00000004760 14135770370 031454 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.Sequence; import opennlp.tools.util.Span; /** * The interface for chunkers which provide chunk tags for a sequence of tokens. */ public interface Chunker { /** * Generates chunk tags for the given sequence returning the result in an array. * * @param toks an array of the tokens or words of the sequence. * @param tags an array of the pos tags of the sequence. * * @return an array of chunk tags for each token in the sequence. */ String[] chunk(String[] toks, String[] tags); /** * Generates tagged chunk spans for the given sequence returning the result in a span array. * * @param toks an array of the tokens or words of the sequence. * @param tags an array of the pos tags of the sequence. * * @return an array of spans with chunk tags for each chunk in the sequence. */ Span[] chunkAsSpans(String[] toks, String[] tags); /** * Returns the top k chunk sequences for the specified sentence with the specified pos-tags * @param sentence The tokens of the sentence. * @param tags The pos-tags for the specified sentence. * * @return the top k chunk sequences for the specified sentence. */ Sequence[] topKSequences(String[] sentence, String[] tags); /** * Returns the top k chunk sequences for the specified sentence with the specified pos-tags * @param sentence The tokens of the sentence. * @param tags The pos-tags for the specified sentence. * @param minSequenceScore A lower bound on the score of a returned sequence. * * @return the top k chunk sequences for the specified sentence. */ Sequence[] topKSequences(String[] sentence, String[] tags, double minSequenceScore); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java0100664 0001750 0001750 00000016762 14135770370 031703 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import opennlp.tools.ml.BeamSearch; import opennlp.tools.ml.EventTrainer; import opennlp.tools.ml.SequenceTrainer; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.TrainerFactory.TrainerType; import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.Sequence; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.Span; import opennlp.tools.util.TokenTag; import opennlp.tools.util.TrainingParameters; /** * The class represents a maximum-entropy-based chunker. Such a chunker can be used to * find flat structures based on sequence inputs such as noun phrases or named entities. */ public class ChunkerME implements Chunker { public static final int DEFAULT_BEAM_SIZE = 10; private Sequence bestSequence; /** * The model used to assign chunk tags to a sequence of tokens. */ protected SequenceClassificationModel model; private ChunkerContextGenerator contextGenerator; private SequenceValidator sequenceValidator; /** * Initializes the current instance with the specified model and * the specified beam size. * * @param model The model for this chunker. * @param beamSize The size of the beam that should be used when decoding sequences. * @param sequenceValidator The {@link SequenceValidator} to determines whether the outcome * is valid for the preceding sequence. This can be used to implement constraints * on what sequences are valid. * @deprecated Use {@link #ChunkerME(ChunkerModel, int)} instead and use the {@link ChunkerFactory} * to configure the {@link SequenceValidator} and {@link ChunkerContextGenerator}. */ @Deprecated private ChunkerME(ChunkerModel model, int beamSize, SequenceValidator sequenceValidator, ChunkerContextGenerator contextGenerator) { this.sequenceValidator = sequenceValidator; this.contextGenerator = contextGenerator; if (model.getChunkerSequenceModel() != null) { this.model = model.getChunkerSequenceModel(); } else { this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, model.getChunkerModel(), 0); } } /** * Initializes the current instance with the specified model and * the specified beam size. * * @param model The model for this chunker. * @param beamSize The size of the beam that should be used when decoding sequences. * * @deprecated beam size is now stored inside the model */ @Deprecated private ChunkerME(ChunkerModel model, int beamSize) { contextGenerator = model.getFactory().getContextGenerator(); sequenceValidator = model.getFactory().getSequenceValidator(); if (model.getChunkerSequenceModel() != null) { this.model = model.getChunkerSequenceModel(); } else { this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, model.getChunkerModel(), 0); } } /** * Initializes the current instance with the specified model. * The default beam size is used. * * @param model */ public ChunkerME(ChunkerModel model) { this(model, DEFAULT_BEAM_SIZE); } public String[] chunk(String[] toks, String[] tags) { TokenTag[] tuples = TokenTag.create(toks, tags); bestSequence = model.bestSequence(tuples, new Object[] {}, contextGenerator, sequenceValidator); List c = bestSequence.getOutcomes(); return c.toArray(new String[c.size()]); } public Span[] chunkAsSpans(String[] toks, String[] tags) { String[] preds = chunk(toks, tags); return ChunkSample.phrasesAsSpanList(toks, tags, preds); } public Sequence[] topKSequences(String[] sentence, String[] tags) { TokenTag[] tuples = TokenTag.create(sentence, tags); return model.bestSequences(DEFAULT_BEAM_SIZE, tuples, new Object[] { }, contextGenerator, sequenceValidator); } public Sequence[] topKSequences(String[] sentence, String[] tags, double minSequenceScore) { TokenTag[] tuples = TokenTag.create(sentence, tags); return model.bestSequences(DEFAULT_BEAM_SIZE, tuples, new Object[] { }, minSequenceScore, contextGenerator, sequenceValidator); } /** * Populates the specified array with the probabilities of the last decoded sequence. The * sequence was determined based on the previous call to chunk. The * specified array should be at least as large as the numbe of tokens in the previous * call to chunk. * * @param probs An array used to hold the probabilities of the last decoded sequence. */ public void probs(double[] probs) { bestSequence.getProbs(probs); } /** * Returns an array with the probabilities of the last decoded sequence. The * sequence was determined based on the previous call to chunk. * @return An array with the same number of probabilities as tokens were sent to chunk * when it was last called. */ public double[] probs() { return bestSequence.getProbs(); } public static ChunkerModel train(String lang, ObjectStream in, TrainingParameters mlParams, ChunkerFactory factory) throws IOException { int beamSize = mlParams.getIntParameter(BeamSearch.BEAM_SIZE_PARAMETER, ChunkerME.DEFAULT_BEAM_SIZE); Map manifestInfoEntries = new HashMap<>(); TrainerType trainerType = TrainerFactory.getTrainerType(mlParams); MaxentModel chunkerModel = null; SequenceClassificationModel seqChunkerModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream es = new ChunkerEventStream(in, factory.getContextGenerator()); EventTrainer trainer = TrainerFactory.getEventTrainer(mlParams, manifestInfoEntries); chunkerModel = trainer.train(es); } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { SequenceTrainer trainer = TrainerFactory.getSequenceModelTrainer( mlParams, manifestInfoEntries); // TODO: This will probably cause issue, since the feature generator uses the outcomes array ChunkSampleSequenceStream ss = new ChunkSampleSequenceStream(in, factory.getContextGenerator()); seqChunkerModel = trainer.train(ss); } else { throw new IllegalArgumentException("Trainer type is not supported: " + trainerType); } if (chunkerModel != null) { return new ChunkerModel(lang, chunkerModel, beamSize, manifestInfoEntries, factory); } else { return new ChunkerModel(lang, seqChunkerModel, manifestInfoEntries, factory); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_DefaultCh0100644 0000000 0000000 00000000171 14135770370 032541 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/DefaultChunkerSequenceValidator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/DefaultChunkerSequenceVal0100664 0001750 0001750 00000003310 14135770370 034163 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.SequenceValidator; import opennlp.tools.util.TokenTag; public class DefaultChunkerSequenceValidator implements SequenceValidator { private boolean validOutcome(String outcome, String prevOutcome) { if (outcome.startsWith("I-")) { if (prevOutcome == null) { return false; } else { if (prevOutcome.equals("O")) { return false; } return prevOutcome.substring(2).equals(outcome.substring(2)); } } return true; } protected boolean validOutcome(String outcome, String[] sequence) { String prevOutcome = null; if (sequence.length > 0) { prevOutcome = sequence[sequence.length - 1]; } return validOutcome(outcome,prevOutcome); } public boolean validSequence(int i, TokenTag[] sequence, String[] s, String outcome) { return validOutcome(outcome, s); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_chunker_ChunkerCo0100644 0000000 0000000 00000000161 14135770370 032562 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerContextGenerator.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerContextGenerator.j0100664 0001750 0001750 00000003362 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.chunker; import opennlp.tools.util.BeamSearchContextGenerator; import opennlp.tools.util.TokenTag; /** * Interface for the context generator used in syntactic chunking. */ public interface ChunkerContextGenerator extends BeamSearchContextGenerator { /** * Returns the contexts for chunking of the specified index. * @param i The index of the token in the specified toks array for which the context should be constructed. * @param toks The tokens of the sentence. The toString methods of these objects * should return the token text. * @param tags The POS tags for the the specified tokens. * @param preds The previous decisions made in the taging of this sequence. * Only indices less than i will be examined. * @return An array of predictive contexts on which a model basis its decisions. */ String[] getContext(int i, String[] toks, String[] tags, String[] preds); } apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/languagemodel/package-info.java0100664 0001750 0001750 00000001565 14135770370 033546 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Package related to language models */ package opennlp.tools.languagemodel; apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/languagemodel/LanguageModel.java0100664 0001750 0001750 00000004502 14135770370 033720 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.languagemodel; import opennlp.tools.util.StringList; /** * A language model can calculate the probability p (between 0 and 1) of a * certain {@link opennlp.tools.util.StringList sequence of tokens}, given its underlying vocabulary. */ public interface LanguageModel { /** * Calculate the probability of a series of tokens (e.g. a sentence), given a vocabulary. * * @param tokens the text tokens to calculate the probability for * @return the probability of the given text tokens in the vocabulary * @deprecated use {@link #calculateProbability(String...)} */ @Deprecated double calculateProbability(StringList tokens); /** * Calculate the probability of a series of tokens (e.g. a sentence), given a vocabulary. * * @param tokens the text tokens to calculate the probability for * @return the probability of the given text tokens in the vocabulary */ double calculateProbability(String... tokens); /** * Predict the most probable output sequence of tokens, given an input sequence of tokens. * * @param tokens a sequence of tokens * @return the most probable subsequent token sequence * @deprecated use {@link #predictNextTokens(String...)} */ @Deprecated StringList predictNextTokens(StringList tokens); /** * Predict the most probable output sequence of tokens, given an input sequence of tokens. * * @param tokens a sequence of tokens * @return the most probable subsequent token sequence */ String[] predictNextTokens(String... tokens); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_java_opennlp_tools_languagemodel_NGr0100644 0000000 0000000 00000000162 14135770370 032535 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/languagemodel/NGramLanguageModel.java apache-opennlp-1.9.4-src/opennlp-tools/src/main/java/opennlp/tools/languagemodel/NGramLanguageModel.0100664 0001750 0001750 00000011100 14135770370 033773 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.tools.languagemodel; import java.io.IOException; import java.io.InputStream; import opennlp.tools.ngram.NGramModel; import opennlp.tools.ngram.NGramUtils; import opennlp.tools.util.StringList; /** * A {@link opennlp.tools.languagemodel.LanguageModel} based on a {@link opennlp.tools.ngram.NGramModel} * using Stupid Backoff to get the probabilities of the ngrams. */ public class NGramLanguageModel extends NGramModel implements LanguageModel { private static final int DEFAULT_N = 3; private final int n; public NGramLanguageModel() { this(DEFAULT_N); } public NGramLanguageModel(int n) { this.n = n; } public NGramLanguageModel(InputStream in) throws IOException { this(in, DEFAULT_N); } public NGramLanguageModel(InputStream in, int n) throws IOException { super(in); this.n = n; } public void add(String... tokens) { add(new StringList(tokens), 1, n); } @Override public double calculateProbability(StringList tokens) { double probability = 0d; if (size() > 0) { for (StringList ngram : NGramUtils.getNGrams(tokens, n)) { double score = stupidBackoff(ngram); probability += StrictMath.log(score); if (Double.isNaN(probability)) { probability = 0d; break; } } probability = StrictMath.exp(probability); } return probability; } @Override public double calculateProbability(String... tokens) { double probability = 0d; if (size() > 0) { for (String[] ngram : NGramUtils.getNGrams(tokens, n)) { double score = stupidBackoff(new StringList(ngram)); probability += StrictMath.log(score); if (Double.isNaN(probability)) { probability = 0d; break; } } probability = StrictMath.exp(probability); } return probability; } @Override public StringList predictNextTokens(StringList tokens) { double maxProb = Double.NEGATIVE_INFINITY; StringList token = null; for (StringList ngram : this) { String[] sequence = new String[ngram.size() + tokens.size()]; for (int i = 0; i < tokens.size(); i++) { sequence[i] = tokens.getToken(i); } for (int i = 0; i < ngram.size(); i++) { sequence[i + tokens.size()] = ngram.getToken(i); } StringList sample = new StringList(sequence); double v = calculateProbability(sample); if (v > maxProb) { maxProb = v; token = ngram; } } return token; } @Override public String[] predictNextTokens(String... tokens) { double maxProb = Double.NEGATIVE_INFINITY; String[] token = null; for (StringList ngram : this) { String[] sequence = new String[ngram.size() + tokens.length]; for (int i = 0; i < tokens.length; i++) { sequence[i] = tokens[i]; } for (int i = 0; i < ngram.size(); i++) { sequence[i + tokens.length] = ngram.getToken(i); } double v = calculateProbability(sequence); if (v > maxProb) { maxProb = v; token = new String[ngram.size()]; for (int i = 0; i < ngram.size(); i++) { token[i] = ngram.getToken(i); } } } return token; } private double stupidBackoff(StringList ngram) { int count = getCount(ngram); StringList nMinusOneToken = NGramUtils.getNMinusOneTokenFirst(ngram); if (nMinusOneToken == null || nMinusOneToken.size() == 0) { return (double) count / (double) size(); } else if (count > 0) { double countM1 = getCount(nMinusOneToken); if (countM1 == 0d) { countM1 = size(); // to avoid Infinite if n-1grams do not exist } return (double) count / countM1; } else { return 0.4 * stupidBackoff(NGramUtils.getNMinusOneTokenLast(ngram)); } } } apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/util/opennlp.version0100664 0001750 0001750 00000001576 14135770370 032705 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreemnets. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Version is injected by the maven build, fall back version is 0.0.0-SNAPSHOT OpenNLP-Version: ${project.version}./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_resources_opennlp_tools_namefind_ner0100644 0000000 0000000 00000000163 14135770370 032702 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/namefind/ner-default-features.xml apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/namefind/ner-default-feature0100664 0001750 0001750 00000003562 14135770370 034206 0ustar00jeffjeff0000000 0000000 2 2 2 2 true true false ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_resources_opennlp_tools_namefind_ner0100644 0000000 0000000 00000000173 14135770370 032703 xustar000000000 0000000 123 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/namefind/ner-default-features_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/namefind/ner-default-feature0100664 0001750 0001750 00000002277 14135770370 034210 0ustar00jeffjeff0000000 0000000 ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_resources_opennlp_tools_postag_pos-d0100644 0000000 0000000 00000000161 14135770370 032652 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/postag/pos-default-features.xml apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/postag/pos-default-features.0100664 0001750 0001750 00000003612 14135770370 034174 0ustar00jeffjeff0000000 0000000 2 2 2 2 true false ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-tools_src_main_resources_opennlp_tools_postag_pos-d0100644 0000000 0000000 00000000171 14135770370 032653 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/postag/pos-default-features_classic.xml apache-opennlp-1.9.4-src/opennlp-tools/src/main/resources/opennlp/tools/postag/pos-default-features_0100664 0001750 0001750 00000002444 14135770370 034257 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/parser/en-head_rules0100664 0001750 0001750 00000001352 14135770370 025553 0ustar00jeffjeff0000000 0000000 20 ADJP 0 NNS QP NN $ ADVP JJ VBN VBG ADJP JJR NP JJS DT FW RBR RBS SBAR RB 15 ADVP 1 RB RBR RBS FW ADVP TO CD JJR JJ IN NP JJS NN 5 CONJP 1 CC RB IN 2 FRAG 1 2 INTJ 0 4 LST 1 LS : 19 NAC 0 NN NNS NNP NNPS NP NAC EX $ CD QP PRP VBG JJ JJS JJR ADJP FW 8 PP 1 IN TO VBG VBN RP FW 2 PRN 1 3 PRT 1 RP 14 QP 0 $ IN NNS NN JJ RB DT CD NCD QP JJR JJS 7 RRC 1 VP NP ADVP ADJP PP 10 S 0 TO IN VP S SBAR ADJP UCP NP 13 SBAR 0 WHNP WHPP WHADVP WHADJP IN DT S SQ SINV SBAR FRAG 7 SBARQ 0 SQ S SINV SBARQ FRAG 12 SINV 0 VBZ VBD VBP VB MD VP S SINV ADJP NP 9 SQ 0 VBZ VBD VBP VB MD VP SQ 2 UCP 1 15 VP 1 TO VBD VBN MD VBZ VB VBG VBP VP ADJP NN NNS NP 6 WHADJP 0 CC WRB JJ ADJP 4 WHADVP 1 CC WRB 8 WHNP 0 WDT WP WP$ WHADJP WHPP WHNP 5 WHPP 1 IN TO FW 2 X 1 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/tokenizer/en-detokenizer.xml0100664 0001750 0001750 00000005161 14135770370 027302 0ustar00jeffjeff0000000 0000000 " ' . ? ! , ; : ( ) } { ] [ `` '' % n't 've 'd 'll 's 're 'm .org .com .net # apache-opennlp-1.9.4-src/opennlp-tools/lang/en/namefinder/en-namefinder.xml0100664 0001750 0001750 00000002277 14135770370 027172 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/en/postag/en-tagdict.xml0100664 0001750 0001750 00003165414 14135770370 025674 0ustar00jeffjeff0000000 0000000 brave wishful Cabrera indignation champions liquidated computer-driven jet Wrap " # Ministry ! timed & brawl ' stressing $ % answer possibly sleeve ( ) . rushing Sandra , - 3 2 H&R 1 7 6 5 4 constructive ; payments : 9 Burnham 8 ? retiring D relies plummeting clouded E A chairs B C rejection M N ignorance O H I drawing K relief elephants relied U advised inefficient times S R darkened Y Roosevelt Z grotesque f Omni termed formally e b Fed c confused ` slated a airborne n consultant o cutting Options Lehman analyze advocates s safeguard Few invaded basis Fournier consumption holster drop infant entity futility Merksamer Asahi estimated basic jar civilian composition affectionate derived jam fathers guilt dozens unrest belongs advises resist adviser timid jaw much Monte weary ENERGY column fewer wears brass update Enserch small-town grapevine Paula suspicions spectators possible ruthless shrugged conspicuously Pravda reached spends Trouble Minnesota Sagan estimates Airways injection universally Mastergate magnitude minimize shadows hospitals reaches entire which royal anyone Production suspicious Institutional consolidated Eye hasty folklore last-minute two-day haste vans visually Economics modernized tolerance discrepancy write-off Abramson interpreted job Third-quarter resign dominion asserting hamburger shoulders interpreter regular-season uniforms muse assistance joy explicitly counties thought space Harper boys rather Citicorp discriminatory construction dingy aimed responding Blockbuster helps Connecticut psychologist Swiss recall Norway warning pencils manufacturing single formulate 9.80 reluctantly proposition Phoenix Really NEWS inserted muscles fumes Tell sleepy Pretoria analyst diversifying contract Spielvogel Bonner plunging Jarrodsville GAF vain Iron gaming deployed defensive Kozinski prisoner while one-day shoreline drum reinstated disagreement jeopardize drug cyclist answering Tommy Fat repercussions instrument pervasive Automatic whipped Far adversary 9.75 fought scientific nearing 2,000 Swedish advance forbidden sugar speculate swivel its teachers strangled although Thursday FTC Era bosses throat October terribly Boulevard Coleman admirable prey Grabski loaded McBride Mexico terrible thirty-five advocate abolish machinery press minimum dimly Holland Automated iron Datapoint graduation absolute Szolds worrisome Money builds contrary Dillon armored rates emergence Mather assignment reformer disobedience invested rated Honda Upon emergency Married requiring shoved must columnist friends unwilling curious Toseland subsequently churchyard Adelia Gloucester Eve marshal mute cherished Banxquote spare spark Advisory vary rumor lightning Prebon railway desirable argued stereo unlikely maximize oldest Aska walking argues dominance deviation garment Nonetheless all-time Girl Once joyous vast accidental Scott unfriendly beneath advantages D'Arcy helped newsprint Bundesbank prohibited Sherlock executives Hubbard giant gloomy G-7 pinpoint everything zero draw yourself Asia working compelling attracted attracts leaning outset matters Armenian Interpublic Wyoming displayed visual Eugene hallway ranking dance culture Tuxapoka placement Goodyear backward operates interbank Give complexity operated evidenced bluntly straighten accelerating Stalinist resolve drag prop Confederate pros Henrietta verbal amended fixing spate brother End succeeding restrictions purse Frayne Gillett connected acceleration trumpet Remember patent bicycle stalls contrast possessed Asea FOR drew sure Only wants populist hearing Emerson batch Zeta Eli golden characters dissolve carry-forward collapsing Operations Ridley nests interfere officers finding glass making resumed judiciary lung-cancer Container certificates philosophers ultimately chains unnecessarily century packaged-goods glare addition enacted Section weights target McCarthy furious Keith brewer pillar Fleet visions thumbs Apparently jeopardy Bush Kinder-Care Afghanistan wait briefing Cross kid Mengistu Patel Whittington Louis Shell Gorky stance black seizing limits Californians confirms awoke convention demonstrated vulnerable snakes mounts Farmers impress endangered lobbied owners discovery deserve flashed disappointing Bethlehem wage midday restructuring flashes extraordinarily Frankly sunk weighed sung hottest Cherokee whatsoever boat Stubblefield shipbuilding antitrust amazing Aug. sums forever speeches stands Chevy nothing time-honored Get construct comments Opponents Jeffrey body Cheney edition Taiwan rocked straightened blacks Alberta violently rocket key Borden coup wallpaper '' Crowd eager Chandler script Agnos cheekbones Crown oral imitation buy-outs containing lightweight disclosed meetings walk wall ignored barge Mead Shere HK$ Dover U.S.A chlorofluorocarbons whipping enhance organization wake touched demonstrates artist Indianapolis stems counseling Morristown audio communication singers touches funny audit temblor cows Buzz amendments bitterly wedding suit laying disabled disposed parking halted confirmed Maxicare deliver dough premises combine Meeting rented exercising beleaguered steps stripes exceeded emotion Ga. disarray funds snatched vulnerability obligated 'd pictures DEPOSIT followed Pension chuckled insistent neighboring 'S Karen striped compelled clinical jacket usual 30,000 larger stern Cineplex snapping succeeds sued 's company-owned Fulton -RCB- within Nebraska 'm equity Warner surpluses middle results gather trials barefoot gripes appropriate such doubt controlled suck openings offering rental league relative Vermont textile whichever emerging bridge controller HBO whooping equivalent recalled erosion investor conjunction busted adverse episodes Beech sends swept immensely generator indifferent treated giants exhibition skipping Gas reception -- duration loosen Elliott revolutionary barns occupy English-language guide fight redeem Environmental 35 36 33 34 39 37 occurs 38 turning showed danced imperative staring intervened 43 Gabriel 42 Itel 41 depreciation 40 stamps opportunities erased brain dancer turn severance homogeneous dances questioned billionaire 22 turf 23 organized 24 25 26 27 28 29 upheld Buck 30 afraid 32 crime 31 FileNet shower twelve ways born figuring 19 bore 17 18 Amdura 15 16 consequently battered 13 14 11 probes 12 21 20 allegations figure 20,000 Developments Evans pinned bricks rounded proceeded erect boss predicted Lotus 4\/32 seller Schneider 10 dashed Robins plots Gillette half-hour mixture hormone relating 79 recording 78 77 both Beefeater unreal Researchers 82 83 80 81 timing 86 siphoned 87 barometer 84 Current 85 67 expedition 66 schoolhouse 69 high-quality 68 association generates labels relation white bout Honolulu properly generated bursts 70 71 72 73 74 75 pigment 76 omnibus Moody cries 59 ambulance 58 57 antibody 56 55 singer engineering insolvent cooperate republics vanished Mushkat brace sailed allocation 64 65 ballooning 62 fearful 63 severe accent 60 61 glaring Minister popularity 49 bowl 48 ethnic crucial 45 deliberations 44 Realty 47 46 descent plainly discovering beaten 51 52 53 54 Chrysler relish masters tight eyebrows 50 elders malice accept bases kidnapped Sacramento ancient typewriter GOP 12-month sales intimate expectations STORES prizes considers real-estate speaking Immunex Geneva wishes Highland mortgage prized boil Isler researcher conveniently traced ward GNP wished flattened Hoag Viacom special-interest Fla traces Patent rarely Leona latter sailing disposal Pacific length boiler 99 want Teddy 98 hence peasants steak 97 listeners steal entertained 96 95 94 crisp 93 Foster 92 Congress 91 dedication 90 restricted access Johnson wholly fluctuations pullout patrolman brand Moore Troop 88 hates based 89 steam bolt Products hated Beers shocked compliance Cousin 45-year-old supercomputer GTE incidents witnesses bold OPEC sliding linked custom excesses thrown succeed implication tailspin throws Putting campaigns property advising sense staying witnessed withheld controversial hooked Adler blades indebted loan-loss bulls Salomon bomb revolving responsibilities wave hatch feelings friend Burt warn stop warm orchestra bony wart stocks pretty wars reared bond jetliner rejecting cunning wary bone laborers wash For Fox bono marine boot mistake immoral matter locally Visitors Udall thumping Bruckner steep Children steel rules ruled Ahmanson squarely observe discoveries steer book boom boon Schroders ranchers unloading Consultants seasonal IMA bright Da EC awareness warehouse leaked E. Co Barclay systematic objects hungry these intelligence defenses Ed Lorenzo Du astonished Do F. aspect steering opening bitter De Di IMF Ernie GE Fe scandal rival refrain aviation authority G. El FM ascending dating marriages chamber Place define stir Ga Nucor slaves morning enthusiasts implicated GM H. shooting circuits ham Hold broadcast Colo. has Certainly hat Kelly A$ component tourists adjoining A. had bushels climate stampede processes Probably Home monitor spectrum Fiske Stuart Wash. Holy processed Holt AB AG hay assumptions congressman III Windsor AM B. Sweden AN Aw At As Janice tested municipals immediacy Ah controversy C$ Ad Am An stubborn tonight locate Donoghue activity C. Al music sites By His ammunition clenched CS Ca viewed tracks Europeans Gradually authorize therefore never Be there CD approaching Schaeffer D. Him eternal motionless damaged govern somehow package M. traversed diverted Mutual calculation nagging gatherings authenticity Hope assault doctors her voluntary Leonard hen hem La Electronic transfer Gould pediatric activist batteries N. canyon pointed Ernst establishing 7.875 Color Me sensible damages spawned O. Church compensate Ma Daniel Md lands Benefit Council My IFI emeritus Giles Mr P. OK subscribe unless Manville Says OF feminine mega-issues hierarchy airline Catatonia Hong stay gallery star defied pretax appearances No retains forties 25,000 On preserving Oh Hey Hez insights Sabella efficiency Of stag calculating Methodist PC Her marital interior hid I. wisdom Go conceived him type retailer motions Issues his Massachusetts hit practically primary Marcos portrayal medicine IG He II onto staffers approve J. RU-486 IN locking pleasure sovereignty printing cheerfully Afghan owned dinner Network owner translations genetically If Perspective peninsula In K. Called goods reassessment scaring bruises Is It politician effectiveness arrest IBM Mesa three-quarters Jo annual L. legislators agreement Horn Had modify noses Jr Hal M$ abortion moderately night stem step Up giveaway winked editorial-page W. countries Metropolitan Merc full-year pro-choice monstrous submarine Shakespeare Rising awfully responsibility US Gyp V. Berlin revenues To churches modifications directives demon neighborhoods cocked incest portrayed unauthorized appraisal TW TV theft god organizing contradictions Norton messages We trustees dresses substantially depending Analytical Military liberalism futures-related editions Jewish complicity dressed wedge Barber aliens optimism repeated Va grabbed weep challenge Sara lighting reckless unaware Syrian down slackened week Drabinsky proportion demons Chicken climbed S. Former Gun Palfrey scandals surfaced Guy clobbered rebel heightened imagine Pa meaningless Scorpio dividend Hospital economy Albert possibility tumble R. Agnelli Suddenly thinner bestowed outflows PS Or gon totaled 19th-century got Oy gracefully Oxford dose struck So \*\* slashed initially collector SS Somewhere Cunningham ousted feminist uncertainty formation sounds Re Plant Plans tricky Saul tricks Surely moreover regret T. mattered defects Chicago-based immediate furnished devised learned ordered sensory actual weak wear involvement architects Wharton extensions Valentine lamps initiate gum shadow Plaza fifty planetary Tomlin Saint chopping stepping Saks Rachel alcohol backed Lippens congressmen mediator pharmaceutical stemmed wildcat switch Mehl establishes transport carpenter rationale refunding reporters IRAs artery jury just recordings fifth Handley guy theme blue-collar Shayne awaited gut established tossed contribute gun notions stockholders Overseas Commissioner Bermuda Said HUD swift despite Press discomfort attorneys looming Reinvestment preserve reproduce softening hovering scheduling vacancy unpopular totally Meet swing Leventhal shifts coaster jump objected smack Orkem Plato Montedison committees Got north two-part junk orderly traded aborted Tibet tariff snack-food trades trader acceptance DISCOUNT commissioned \* grandmother gambling flashing Same God commissioner fumbled their slogans river predicting Lang Lane dogs predictions said solemn Land noted college vehemently Saab personality lore syndicate references Georgian Deere childish solely chemical Irish sail detected concealing isolated Crandall portfolio harness featuring he confess Southerners resignations Fortune Australian Index Laos summoned Feb. singled keeping disrupted artificial murky go assessing taxpayer gift Fear servant financed indicate excellent de sustained shouts loot battery profit-taking Banks runaway do finances dangling prevented Ill look Jerry safe transfers violence wreck Richter Inc operator Advanced recovered newer en Firms notes et handsome Imo Unless gravely ca player lone by long wallet dock anti-Semitic installment Glory Harold FirstSouth Charleston liberal depends dignity be predicts establishment mysterious suppressor Fujitsu decided holiday Last played maximum nicknamed eloquent makers suggestion Office lighted collect Alexander does depress instituted skiing boast icy criminals edged Late foreign-currency Uniroyal lighter expects recommend statistics sack Fees edges ice directs `` members crap termination market-makers Gintel boats at as prediction leverage ax ai MONEY am privilege an cruelty ad mindless Hills growth newly Chairman Hendrik supreme 62.875 no makeup door forgotten California of realm Profits on oh legally 1,850 emissions maybe commitment or grower done cliff ox board trooper crossed delay small warfare wisely fastest catastrophes radiation squeezed CORP. Banco gradually crew Mercer necessity carefree fairness Water Fazio conservatism me twisting backup seventeen appreciation Bronfman collected vague Salinas my masterpiece malignant Yetnikoff bankers lows na teaching specified route Poland Arizona item Vince Giuliani Private technology cousin scooted India variations love warns high-definition eminent raped perfectly underscore conservatives Arts everywhere lots Lower remembering guarding Success ink stillness Saab-Scania loud endure la lightly lost loss catastrophic dome 1,800 microscope Minpeco Messiah Exchequer conservation if Mulford celebrate puck is it doll ill crib mimesis weakest rapid know in knot lose Recruit unfolds twenty Katie blue hostile continent strains Ian smart premiums Philippines JAL hearings pounding metropolitan arbitragers viable knew winner etc. ready Illuminating rhythms deficit-reduction Huxley aluminum BankAmerica Stowey slack knee outraged Marcus Scenario how expiration wo law-enforcement cling rendered loan reads pure Environmentalism hot load Pauling we climb busiest give events Lebanon restructure Summer brought havoc shrieked Johnny downside Mansion Block puny solitary voluntarily consciousness front us Israeli weeks up field peering Ariz pistol departures high-tech impressive Thornburgh to Iran affects v. chambre Army sipping pull round pulp hub messenger poorly inspection crop Iraq amount drained Willings conservative ta knit grinned so state-owned impression mysteries pump Globe providing openness counting Ronald birthday acknowledge ceramic 29\/32 strings appears Lady liberty reach tax-exempt implement bunch react System institution ladder provides Minn. provider suitors Elsinger knocking dilemma provided flooding Hague wrapped perpetual marching Hun sucking guardian applies insist Meeker energetic First self-employed Homes whether Remic Arab course open frightening Defense margin ignoring processor brothers broad-based Redmond EURODOLLARS Peabody delta Laff Hub redeemed associations adults contractors affidavits viewpoint Nigel objectivity cast-iron tomorrow courts wastes stricken contact Arby southern engage wasted portfolios Night Mingo Xtra suggesting Arco hum spear hut walked Lingus opponents mayor speak ITT haven evenly Nimitz appeals should Mutton stones decides grimly contended outpost Area determination Ashurst discouraging spilled butler Seattle puts yielded Lake contender Landry perpetuate IRS Mines rough producing disposable Cairo waterworks importance Jersey contain sensibilities babies yard Hot creatures prevailing beneficial mural clips push girl IRA froze attempts How Peugeot IPO ye ya urgent lock strategy refers nearest Nadine Blood motors gadgets applied menace poorer guarantee pushed mainframes discontinued Edwards president Are murmured chance Ark attraction bribery ceased 52-week distinction Depression competes attracting GATT few fee fed TransCanada grinning Philips ministers secondary undercut fraudulent visited token rhetoric GASB soybeans rivals enjoy Jesus Art ankles predict guess magical guest shorts crops having novels alarmed Harlem change Giants regulations distributed Europe capital expenses Brian i.e. witch Should distributes North negotiator retained fax fat wheels luck far repurchase fan borrow rural lacking confrontation delicate soaking discounted fad restored backbone misunderstood Chemicals Command underwater occasion education creativity Budget hotels Axa gradual Salvador Packwood-Roth methodically Greenwich homeowners FEMA furriers sensual Bahamas Kyle freeze inside venture Warsaw Demand diverse glow Machinists obvious errors Against limiting pressured Currently appealed medium-sized Judith doldrums Loral publications peddling silence echoed lender indeed recovering finest concentrating makeshift build dragged benign thinly FERC built identifying concentration formidable ethical Better NATIONAL pressures sending clergyman pilots thinks club improvement clue initiatives PepsiCo Seven topiary Crude endanger retreat stunned infamous obscure Program eye punch intellect occupation damage accusations Democracy Jesse Marion locks dissatisfied penny permits drastic fulfilling INTERBANK proudly shaking requirements curtains Bay Adobe distributor Combined Bar relevant subsidized Britain whining exceedingly into cereal reconciliation luxury schedule things Noriega embarrassing CBS professionals etc everyday ours blew sentiment Affairs workstations orgasm comprehensive Doris bundle feature expanded Clayton austerity 11\/32 descended backlog deferring gingerly glasses Clean tissue deferred likelihood adventure furnace high-grade dubious bridges foresee Marina Marine Gene Act Ada learning oust alter arguments Classic restricts stays upstairs quickly defaulted shores withdrawn Royal implicit Petco exported 55,000 unwarranted Consider Add nostalgia unhappy orange ducks explains devastation awhile Jacques Aer ceiling freely recalling exporter Sununu saddled Anything Flint reopen uproar Rudolph Age Aga shrinkage surrounded Peter era bandages Beaver precious unusual Medfield question devastating ensuing rugged multiple Manila adult freedoms Marketers appointment representative Healthcare originally foods effect ferry historical People glut lodge Mikey stallion expired nothin stare specially stark obscurity sacrifice expires represented boasted whereabouts wiser charitable continuous sewage singing again Air overhaul start stars satisfaction prize saving Census Wedtech propaganda cells Haskins Benton sacrifices Quebec techniques boulder start-up Publishers dared delegate Sheraton robbery upset aggressive end Nick options containers readily observation tremendously refrigerator represents Heights Canton Weston reading ego Democrats transaction 1.375 bolted aired BNL All egg terraces Calif. organs bidder School Tonkin forests achievement Amy E-mail Hawaiian persuaded injuries serene representation Lavelle Gen. surprising Ana And Any owning state Richmond credible Ann experiencing Amendment Florence landing designs leader tradition Netherlands blow defendants negotiated 11\/16 inch paused hard-line Inflation struggled traditions tides bloc Consumer vinegar struggles consulted Cicero specialty educate investment-grade benefit accompanies paradoxically threatening outspoken Kidder over bleak protein oven accompanied But Paper sprawling spokeswoman traveler psychological number overhang dumping gin contingency Being Dollar Whatever consisting arteries typically apartheid littered fille before adamant crashes double-decker traveled stake stairs Perhaps accommodate intervention leaking Arnold arises crashed FDIC Eichmann films Juan arrested BILLS provincial bolster hydrogen hardest Trelleborg clever Minerals banks invariably breed rocking stall in-house boundary close doctor facto Consulting facts oval occasionally get postal Atlanta efficacy draining exhausting Scotland Vecchio irresponsible gem stale Indians money-market carefully Otherwise safely Bergsma indictment households Hydro-Quebec Indiana discipline fraction practitioners purchasers Eisenhower Vinson accessories persons headquarters stand stomach sorrow DAF Bryant bands moderates buy-and-hold confines inception recorders impose Eileen hurling break operation DAX bread Mich pending Peasants eroding guarantees confined import central fetch screen Cilcorp Garryowen welfare flexible guaranteed Lucille include O'Kicki gas prime traffic sitting operating gay poster Unable crusade novel unseen gap talent protect addressing posted recover Princeton\/Newport walks handed Often witnessing flooded skeptics files clock quicker Venice flight billed walls Campeau Riegle Collins opted knuckles resemblance filed DEC location remains uncover Mission nursery procedures prior DES squeeze official DDB returning Coopers redcoat Planners projecting repairing machine dusk comparison Rafale statement Calgary-based pamphlets Warren employs dust stack Palace cotton Merrill projection stage Car staff Chase Can tax-loss duty able deciding Cap mounting mixed accessible receive application standard swaps 1,200 Coates print Juet Kravis rubles divergence handle Reuben slipped determines East stockade parental lure associate pride scrub danger defaults resistance FOREIGN regretted serve sweaters defined Milan instinct Bey neighborhood available declare Haney graveyard exalted Xerox Okay price Ben staggered Easy Fourth referring explosive threats Norberg Hopkins defer cursed pence CDL Banque fur caught notice resent Transmission stadiums CDs angle familiar lung rustling CEO Bally reclaim Kirby competitor automobiles faces Greece interviews Heaven takes faced varying taken conference overnight Straszheim reports charges victim fun charged Burgess receivers Dogtown angel Notes populations explosion Big anger passive Seidman Beijing Eventually Hines cigarette dump Robert photographs CIA inclination impulse dumb bitterness sticking Public threatened refrigerators dull lush high-school demonstration misunderstanding clocks vaudeville views determined timely journalism CNW for Richards angry swelled MIPS CO. Commodities clout distinct gifts legislator journalist glad information unstable fascinating guilty Mullins pretense occasional 'll carpeting hunger evil Hartford jumping Ginnie pleasantly ensuring updating effective wanted London dual Norwood D.C cloth pockets wired crashing stolen frequently purely CMS responsible diamonds extradition galvanized visitor emphasized proportions fog afternoons terminated Brewing foe cloud e.g. emphasizes Allianz lump Scottish reinsurance Jupiter answers fried Candlestick Flight buy-out misfortune please duck pleased wounds victims wires riskier restrict Mellon Estate parliamentary Reports fly roses even apprehensions passing evolved ever clay Yesterday dancing firing 'em Arbuckle fit Mills fix Bob notify announcements deduction Strategic pulled passion profit decade turban skepticism stains Box Boy families Dynamics Byrd clad Oklahoma safety Claire Ashland 2683.20 Greene propagandists horn brushed receivables hose parade Marxist Jerome Grandma reunification video opened thunder host notion contentious animation Previously neutral stationery extract slumping ratification bite Farm herself existed Pamela Kemper Blanche dependent chiefly Cohen Thank Barbara East-West wives senators noting Judges Below historians cartridge 1,500 increasing disasters hour meaning boosts bird A.C. totaling electronically undervalued public discounting raucous treatments bailout Software Milunovich sagged Brookings Emergency supply-side dramatically immunity notified lasted seemingly hook flames Faulkner motive releases Officer code Leaseway careers inspected insulting factors items determining secrets dam ARCO Cup factory day Businessland large hope Academy deteriorate misstated Each bill driveway blaze hops creator lights released coal Kennedy offset coat calendar Listen Hawaii welcomed Aquino portions folks acid A.G. bind engineers Torrijos cup Municipals reason Commodity otherwise Earl liquidation sufficient respond rotation sixth privatization unveiled sixty hold privacy EDT EDS regarding Nutritional openly sights neutrons recorder abstraction recorded ought pledge Bakes heading Baker Meyer Travel home non-recurring Angeles-based concludes holy Hogan savings quit goddamn retinoblastoma explaining thank Del prosecutors victories Deb drug-related probability hole portion satisfying peaceful articles dozen maneuvered guinea extraordinary secede Hirey Baldwin hypoglycemia pupil concluded cut stamping Sandinista installations midyear biwa Grumman acre intense HDTV honest potentially unrealistic multimillion-dollar Actually applications difficulties death-penalty Frank functioning spurring sectors kidding fronts arrive winter Anyone Clearly defeat Dan horses focusing resolution Day so-called Robards Tharp Dad bits cooperatives Nevada reinvestment depict palladium actively buildup Township registration arranging Reebok database Sierra abilities insists Stoltzman cops equipment cope Copper Times-Stock 7.60 obligations eyes interest Cie beset procedural Sitting copy barring cool cook lying adequate June Everyone 7.75 Rector models Olin Sisulu Kizzie breasts swear anonymity blade eyed deepest sweat Olga acts low-interest drunk foreseen Tandem 7.42 DLJ Armonk Paxton suits publish healing reckoning Wisconsin tubes landlord applicants Executive renewed lifetime pronounced Eddington Cigna 7.52 come comb Sikes drums Mips 7.50 7.51 practice belched July DNA high-yield 80486 defend con DFC debates 7.20 cop cow depository 7.25 faded scrambled nevertheless floors understood strengths retaining Small-business burned dressing Fraud Kenneth Coastal identities issuance 7.37 Publications Abbie period cost sweep Including Olympics fellows sweet reductions Anderson editorials profitability cork generate Speaking Mike 7.03 hurricane corn Farouk 8.375 roommate seven-day Conchita 7.10 hefty deductions chasing 1.125 coincidence secrecy Analysts sacred cry 7.15 Westwood emotionally Johnnie increase Beckett core Oppenheimer cord renewal airing greatcoat excessive suing Diego divisions house modest hostages fascinated avoid Delphine A.M. inexpensive unused blame Through setback strategies legislatures drugs energies hours slender Gen-Probe cushion scrap operational blinked goal measurements traveling nightmare detergent screens dislike Aunt Unix cents exemption funnel remove exploded Natural low-priced gods Unit according modern mirror indirectly believed unfolding Smiling Rahn Just believes Buddha blank distracted afforded resorts bankrupt return framework Rhode Oakland folded Neither AMERICAN adds 18,000 equipped lethal reassuring remote together automotive swell hailed cold Auto Ahmad herbicide commonplace converts Parents goes genius DPC wrangling Mortgage-Backed retaliation Co. suite Fraser blast inspector Squibb protest Vermont-Slauson solution misses evaluation afterward Madame Miss Vista blocked Australia cameras abnormal coin evaluating sheets Cos chances Using revelations sighed Cox significantly A.P. missed one-half causing punitive steelmaker merchandise FAA swings Rouge half-man until Dubinsky frequencies projections regarded dealings producers twentieth-century endured universe servants borrowed ear ratio persuade Farrell eat Chancellor minorities hurtling disappearance masonry Sales imagery nude wrist successors measuring mutual-fund debate write investigated expressing lower-than-expected imports MERRILL Investor benefit-seeking chemistry Parks civilization Olympia studio expression roiling Constitution careful captured Elkhorn permitting splitting Earthmen recollection Larsen Daikin replaces umbrella Cananea superb unsecured replaced Socialist Petrie thrifts highways Paris staircase laughed impatiently Another debenture enforcement janitor tails Allied-Signal marketed railroad Sometime alcoholic SsangYong island AT&T Spiegel headed Templeton Telerate overwhelmingly lofty Radio Alaskan sketch ahead Captain Matilda indefinitely refineries plunged nationwide elbow marketer tires arbitrator fabulous underwrite FT-SE socialist sympathetic editors socialism underscored disappointments barrier Egg Conservatives Center laser strategist fully exercisable thoughts Thermo ladies soft-drink Protestant Hughes Navigation tenfold Pictures Levy Testament Agriculture series Ngoc interest-rate Secretary hardware hastily propped FHA claiming across respected remaining adjustment withdraw muttering harmony interpretation Regulatory inspired strokes Gate champagne Winnebago enjoying dollars Proceeds Indeed expressive outcome dividends grains Sally deceptive Gary highroad Georgia dismiss Kuala selective 7.90 terror 13-week sporting Nine-month investigator inflows fever fulfilled Professor bursting 7.95 Graphics 7.93 7.92 7.98 collapses pavement 7.96 conciliatory portraying Game anymore ratios positively collapsed Travelers Palestinian warming across-the-board FDA commonly virtue 7.88 gravity TREASURY frivolous highway volunteer resolutions Delicious conferences beauty demise sleeping Dolores chooses father selected withdrew illness banking profoundly FCC sailors importing Without O.K. Walters Houston blending averaged readers Sugarman FBI averages hotel rating 1,400 Provident breaking 500,000 intelligent justified minimal preferring counters dot strange assistant nature Bofors commitments bias Hispanic Panama volatile contend going Leon American Tokyo catalog Justice Tokyu consultants stopping content justifies EPA Schools dispatched corruption Task brilliant survival repairs transported Tass wildly assurance Death withdrawals nervousness sentence collection mouths spring Marwick risen skiers rises Faberge Favre payment feedlots jurors imposed EMS nuts selection relationship pattern imposes Reich dog invited infrastructure wrapping invites provide consistently Wichita selecting plantation Garratt Did stakes corporations supposedly Tana expand fallout gridlock exchanges collecting Lesk Less emerge diversified conglomerate logic exchanged duo Hunt due survived dug tax-free Ivan Pizza bayonet payroll FASB sudden Concerned landslide COMMERCIAL destroy Lorin Buffett debentures stirred instruction 6.25 dry principles disagreed instantly resting certain Until serial Sorrell Paramount risks rescue Dun risky ruptured insect Supreme Keeping Group distinctive usefulness equivalents advisory reformulated propose commanding frankly Whitbread Angels gazed piano Party Take planting did Left exit obtain nuances anyhow tired overwhelming divided Nationwide Aerospace Angelo cross crouched des Kitty Ogilvy contest Talk acquirer acquires infringement Nadeau pulling convertible morally private Kitti bike Fair possessions acquired del shifting agendas depicted trigger failures repaid retribution Jefferies paralyzed obtaining Gross mutual plates Glazer eyelids Cranston Unlike Cotton Ferguson Fall ESB Telegraph charity spectacle Taft well-being 6.79 annuities dinners cooling repair Dr. marked breathe eyebrow Webster Belli collective infantry bids properties Fame intends himself Spartan Senator market EST perhaps ESP Doc other 6.90 2638.73 crown '80s Hugo departments sandy misinterpreted dim Kayabashi dip luncheon Disabilities setup die dig Hugh crowd EPO Typically exempt origin proving punished magnified revoked technologies sway MORTGAGE Dow context swam summer Don swap clientele Sandburg mushroomed Ryusenji holding whole-wheat Margaret intensifying Eggs religion Marketing Guarantee joke Net mania heed alternate timber Francis explosions Hees heel violates Francie armies digs unwelcome quality somebody violated instruments trillion vastly bullion Magazine imaginary Jacobson jammed transform 21.5 P&G aesthetic 21.3 guard Chamber debts Exploration ropes Gran lucrative Gras 142.10 21.7 enjoyed pity pits divan lawyers gardens join situated labor farmers Smurfit downgraded red peoples Boyer accurately debut medieval easing unions observers John architecture foreclosed pretended Abrams trapped Assurance Scientists naczelnik description Calhoun reputation pharmaceuticals salvage Overall Investigation verge yielding Finance Dave barbed heir Helion Gray country shampoo necessities speech tremble override Traviata Battery recruiting Aetna raw steeped arsenals Greg jolt organize rat complaints business following bullish Grey factions supplement Days repression hinder intensified dominate Friday symbolized televised unrelated New orthodox Lyonnais Jewelers dived Margins Beretta Coach rag advantage ran female musket unborn upgraded peculiar 39.55 jobs Springs amateur 8,000 USAir help indexation element odor elect support rot preparation searching Yale identify recommendation Casey dominant row rod suppose category specializing speeds television concession small-business N.C. vehicle rumors easily Freeway Kraft sixty-five Soviet violations resilience tests perceptions Mitchell Egan foreseeable speedy held Managers marginally Hibor Yank enormous foster hell lenders reserved dire Labor Friday-the-13th surprisingly Joel reserves cliche strengthen polite dish Sverdlovsk Ground Nam disk frowning Measure venture-capital dirt joint joins hero extends easier hers here 1980s affiliates Despite herb cursing herd proceedings class-action OAS decay polish tanks bourbon Jobs Especially Either Normally Urban recourse Help prosperous Storer affiliated Stores marketplace hens Cardinal adapted Gorbachev Joan dive rig offer Hell Liberal Waddell steeple rid Vientiane Republicans preoccupation deepening delegates allowance understand declines themes production permanently declined concurrent N.H. Carla structured underneath stumbled Highway ribbons under Christopher structures Port thirty overcoat Killpath eliminate rye dreaming patrol rug dancers patron proprietor run odds Poles scenarios Bradley damned bureaucratic Post pick scrutiny orthodontic N.J. Osaka consulting Volume perverse remain skidded strategists Challenge insult Revco McClellan Petersburg scientist cheeks removal Nye chic proclaim province seven-year Value Media newsletter Confederation saved Ferranti Carol recognizing upgrade Jacob mingled rub Verdi high-priced saves loathsome soliciting Electronics teacher teaches deputies Pons Pont insure coffers confirming Finkelstein prematurely Pope Flom swimming acute Daimler-Benz firmer Ruder pigs Networks Coast Poor firmed chip Over chin counter ripped alarm charge Government Shares counted democratic Pops universities Guaranteed lacks Ellis instructed amazed sad Lauder pint stock inadequate guards restoring yeast slept pink pine Centers Young productive receiving Schlesinger opposes 142.75 lifts pimp happened sat Egon say bearing closure saw years No. uncomfortable voiced fortunate precaution pill museums Courtaulds buying pile McLennan opposed fighter robust understated corner Orleans crying domination broken suburbs Liberty bowling broker anecdote proceeds casinos remark Lexus Developers overcome Manufacturing allocated structural heat Cockburn heap hear Campbell toward Thomas police 47-year-old Istat head N.M. OTC intellectual swollen signals Hedges Sharon voices cabins assassination policy Nicholas media Meanwhile payable Suzuki Roderick pipe Ambassador chilling collateral corps Donna Agricole infringed Jose one-hour jeans Now noncallable Nor Not Zurich vividly formula Unfortunately advertisers Pfeiffer Newmark becoming she partner 500-Stock defiance Searle nineteenth monitoring patterns death Mississippi Murata unwillingness molecular prosecution view Morishita decent midsized Discovery six execution 22.8 Mazda weaker slightly smoking weaken specialists acted centuries 22.5 40-year-old Southwest jumps Off Olgivanna Geographic N.Y. tightened glimpse shy backing accumulation brilliantly College sit history charts sir conform deeper sin fuels Additional extracted scenery conceive conception aged striking Oil packaged brisk reaching accumulated everybody light clerks Redford Space ages documented Reserve packages wagon measurement Forest Fla. executive Egyptian Mining secretaries Genentech sex Airline N.V. advertise vice department set shrill Kume life-insurance Avondale Services prefers individuals PLC slaughter suspension sea amused unleashed Theatre sandwich see Going PLO passport fringe manages manager abused yield spy criminality peril Cathy betrayed actor chew Claiborne rejected buyer embrace courting auditorium chef Deaver suitable church vine Buying submitted channels son Nynex managed one-man Pole abuses Convention swooped confident experienced Ryan Kurt bringing records winds satellite experiences raised clinging subject Sante Dakota occurred breathtaking looking Santa democracy counsel countenance swayed Stanza simultaneous inspectors scholarship Doman inaccurate persisted beings Crossland dazzling interview attached 20th tobacco pointing stunning design adhesive deeply Oak Oscar firmly computing hunted wages PBS squares sky level reiterated wings someone underlying Danny competence ski 1990s disgruntled Other Thanks Ernest targeted pieces executing roadways Spain illustrated Cleveland Toledo Members cheese confronted squinting awful wines radically advocating PCs poverty Anthony Authority purchasing cheers seats Gorboduc ourselves premium Poet twenty-five prosecuting taught Iranian illustrates fossil unconscious Denver eating wrong Tyler compound specialist wrote signaled jumbo conscientious Burger lingering scheme Harry reduced PWA Unisys dromozoa Finally Dale bandwagon Out Daly Our Asia-Pacific monster checkbook roots Lloyds climbing memorandum Furukawa Damn dropped unusually guarded September differences resigning imported Cities\/ABC laden document importer assess seeds accepts mostly improper reduces dolls poured implemented Montgomery Helmsley lucky assert runs exceeding relate Giovanni raises narrows terms album unanimously disruption encounter taped seeks after Convertible fundamentally Wyss glamorous tapes Edgar bribe fruit Virginia austere 600,000 Deloitte horizon Corning assets deference encourage efforts specialize sue McDonald physicians minority brick Report Musmanno about sum sun Daer bonuses Herr halls poorest Here above rebuild bride painfully Accord rush recycling 300,000 negotiate Winston promise punish accompanying Owen variety cancers Hoechst Knudson Year-earlier blink Hess listing casually blind brief costly Advertisers Behind tag dial Comprehensive tab bring brink merchandising glamour Data farmer Everybody Old Sands Guard headlines rooms wine rude wind wing others national wink incentives Verwoerd Lortie Ironically milestones parliament tax shrink tap tan wins 90,000 oily Street doorway Chancery oils stock-market Dark mentioned sphere title seems Tower Hilton Experts lubricants One sell-off mathematical wipe Friend unsafe Rabbi dies diet wish ruin wise anyway compromise died H.H. budgets murder Calgary wire expressed bearings 23.5 -LRB- marginal dissent environment jokes window shipyard PSE Ambrosiano beating Dingell wiry claimants rebellion bidding best-known leaped Vitro supermarkets dice reinforcements satisfactory breeding isolation sunny rule melted Orr H.F. with dealt desire circumstances Turning flowing prominently deals casualty glasnost assassin roofs premier Oso manhood Supply blazing Welch Teamsters French staffs 5\/32 levels Rogers verdict Noranda Point else barrels patted ritual deserves conditions shorter senses nail knowledge unique communications Revolution Battle training stabilized appointments toilet stumble Sotheby Throat crawled Wertheim leased solicit razor charities Advertising manners Harrington specifications leases sneaked yelling statutes testing informal Leaving breakers hammered wastewater precisely tractors drinking envelope rusty Siberia fireplace Rican contributions fibers Commerzbank Goya scared escaping 2653.28 comrades virtually deficiency crude delivering distinguish talks streams Fogg wide-ranging sensed steered resemble wondered legitimate pulse analysis landscape twins unsettled par cautious Detroit findings 5\/16 name altogether pay drifted Blackstone Tiananmen pad depend broker-dealer surveyed Years Telecommunications theoretical informed scarce pan neither Means euphoria categories sketches loath prostitutes terrorism strangers knowing harbor lobby deeds involve highlight stretching shortly languages retirement blend terrorist smile itself Global EG&G secretly flagship Supper inclined dictator homosexual supermarket pushers Sarah subordinates Wakeman cruel plea gained Growth consumer-products products far-reaching deemed Newark Powers Pay creature Pat Par tales pen per subordinated Wells pet cables twist translate 10.77 Cocom Sibylla year-before Voyager investors innocent bets pulls changed remainder Gardens affluent Francois statewide Pan fusion Pam flowers cycle Standard restriction kinds means meant efficiently Salter Ontario quotations whole hybrid Conservative Colorado hot-dipped Short-term dunes preacher deserved appoint grease gripped restricting Monsanto tribute ancestral nonrecurring ideology grasped Pa. Naval innovation Securities despair executions drizzle positioned play pie Dutch pig ongoing meals Zenith football plan pin Museum navy pit Almost challenging presidency changes kicking heroes restructured grandfather glorious pop pot tenant Gold stinging quantity Carnival Golf Recently consistency became titled weakened titles Pastern Good Lizzie chronic guideline beta useless 've influential January Entertainment best crawling royalty historically divide financial-services Korea Force Paribas Acadia gave Sperry behaved intrusion bend Laboratory absent whereby preserved sooner Denmark groped schedules Bridget mainstream belief preserves sensitivity whose willingness behind moments workstation whereas bell scheduled heroic Writing belt innovative posture succeeded circulated crush breathing large-scale corpse Dandy Company retrofit orchard legitimacy Individual reminds Manhattan Montreal anything Erbamont couch examining grandeur coverage genetic gaze pro Kaiser clause bent curve ruined Gov. Life distances beyond remembers silently sustain inexplicable modestly buildings Lonrho spending aisle jealous Put hobby Tucker gapt guilders Doolin environmentalists countered put Clifford anxiously Caribbean mapping tsunami twice Foundation resigned Rubin extreme loans testify superiority Forks Leslie curse gang staggering costing Nippon ranked managers Trinity beef roared Semiconductor Above stimulators jurisdiction beep Cappy been bees beer logically Medical survey bureaucrat Rifenburgh About Cynthia divine guessed majority long-awaited Review Like gate beds floating pitch diving whopping wells presidents Likewise statutory dictates Quarterly pegged upper Advisers Islands computerizing 're resort Francesca incredible sweeping bacterium Prudential jointly incredibly MiniScribe clients 2008 solidly 2009 2006 2007 2004 store 2005 2003 columns upheaval jewelry storm rescind story Partners pumps 2010 instant 2018 wiped 2019 Carat forgive engine S.p taxable 2016 image transmission Nicaraguan butter reservation bearish Litigation Simpson immense Robertson barely satisfy revamped Politics 20.5 plummeted founding 20.9 instances burial Macmillan Ridge stops faster consider Lion current domain postwar weekly stood bear install coating beat unsolicited stool Consolidated gain Sullivan demonstrators boxcar Trial Airport beam Line courtyard gathered 2001 2000 amendment waive normal driving high-speed stone tragedy transportation Pattison autumn assorted competitiveness respectable aims ailment victory RJR likely Lexington Bombay drain interim Benson thrive holdings Applied respondents Lisa waist husband stole laughing contributed hands S.C attractive S.A buried handy pianist archrival Thurmond Achenbaum game stages draft slips spreads pregnancy approach heating manner staged Joyce basketball enclosed after-tax Gogh ultimate Intelogic marketable consultation twisted asserted correct button Clearing workbench connects frustration wonderful reins BART missions threaten mouthpiece Phelan uneasiness tightening bodies expert Lighting thrill Italian acres Cafe sharper wrinkled stepped Werner Verne catastrophe squinted Throughout Nasdaq product overseeing Cady cropped account Alaska Critics produce attendant skilled intellectuals carved Packard undesirable accomplished accusing stove scornful Stephens pollutants sweetened sharply O'Connor miserable Ackerman sedan 35,000 quacks targeting sucked Donovan Bozell theory listened Walker S&P Chapter S&L capital-gains Russians Unilever Solar governed Eagle economists hotel-casino bartender inclusion aide aids Hesse electrical removes removed frustrating necessary local bench decks Harmony Whoever drastically westward composer constructions yanked furiously Project composed bolstered Cape SAC Heller Federation international high-performance journey Creek grace Investors ownership trademark nearby Iceland Hyman analysts conversion harm killed hymen prescription plow hardly gravel running plot Garrison tempted SAS yuppies tucked fierce complained outskirts disregarded grade Powell Mose accounted kills slide hard Cane attractions coveted humming suggested SCI Most Moss engendered slick artists transferred Camp plumb slice cancer conspiracy hall Bishop half Whenever cancel Bureau restrictive clicked contraceptives Enfield Gerald flat-rolled nearer Kruger Gramm-Rudman verse shallow Call nation helpful Release More Cetus continually thrift phoned shopping Compared killer Industry Majdanek gamble repeal interpret signal repeat optimistic hang phones hand quo journal redhead draws drawn separate cleaning Moon severity medicines Mercedes halt Similar excuse indexing diagnosis governor Lufkin drama city expect Merkur Dentsu evolutionary describe Moll Palestine footsteps plus problems computerized Companies Ruvolo hawk cite Phelps present plug highest-quality impatient August harder haze conducting neglect hangs delight costs Vivian third-largest partnerships tendered hazy Reagan sequester viewers restated ballot signed mid-October free-market Rothschilds Edna Argentina Wendy hate Indian Sunnyvale hats conserve Case combat rings winking Excluding concerning systems asset-backed faithful technically Stewart depended vigor vowed identical images Dulcey Small multibillion-dollar reject courses have specific Eastern Order outsider RTC treating deadlines scarcely intuition operators kittens aerospace warehouses Plus attempting surging nearly factories Continental Carr Cars conclusions drank mental Carl Reuveni Robin gauge Ovcharenko Leyte haul Care placing loopholes defended passengers Kahler thanks roll knock squall 8.10 role right shutters Cabinet preparations eighth rigid partial hits native Acting Traub Again smells arranged 8.25 defender towels reinforcement subsidizing sweetly enemies relying retreated behavior warned net commerce 8.35 daring inquiry Action mention Sasser longing 8.30 Investment 8.32 8.33 Baby markets drainage prevents Krenz Little veranda spokesmen essentially broke journalists L.A. triple-A new Halloween 8.47 NatWest JSP 8.40 ballet fastest-growing 8.45 8.42 treasures prepayments root treasurer Goulding Russ Ivy compact Loan march medical height Into rope Chivas births delighted partnership Ruth notable regiment Lalaurie Economic ghetto roof particularly Needham year-earlier agrarian non-violent room distant scientists remarks notably Its Bausch cottage rational raiders universal trained garments keeps ventures attributed obsolete congressional laboratory Ashton-Tate helping 8.05 reimburse 8.04 re-examine 8.03 attributes 8.02 prominent 8.09 albeit assessment Federated 8.06 Mountain libel impressed deposit Eddie influences influenced donating eighteenth rosy hill manufacturers dairy slapped Manufacturers Hino belts creators breathed rose Mancuso session Cruise single-A Turner disclosure trimmed voted catalyst courthouse Felice humanitarian weighing Keene oxygen broad Helmut votes voter 3.35 freezing Tribune anonymous Accordingly acquisition promotional helpless Felix pollution 3.25 seizure Nathan organized-crime cigar Roebuck 3.16 omit 3.18 rooted guitar square freeway Bake Occasionally Authorities marks envy reflects Mollie Back Eurodollar four-game scanned Korean gentle flexibility co-author hire Mitsui imminent opposition hips rows Security Sciences crushed Jan gently restless mounted Peace fast-food oversubscribed puzzling recounts Johnston investment sprung Dalton distribute allows Khmer below Somalia Hill conveyed Noting spokesman hint problem tended bottle daily rout deserted superstition Trans remedy tender velvet computer-guided estate Jen Trade Eastman treatment groundwork Inc. companions Jew Haven candle prosecutorial hide KGB Kafka Jed entirely Enviropact Lowe Memphis relatively hysterical Across mass-market FEDERAL roles bottom Singer Love new-issue Base accordance wandering restrain elimination Inco Bass exposed fingerprint upstream procedure citizen Bari Northeast delayed spotty admit Barr Ind. mortgage-backed Jay Kasparov basket L.P. grants High reflect progress 37.5 Further KKR Ore. comprises parting lantern Jim ignorant nonprofit stubbornly eliminating Ball Quasimodo Republican veto agriculture preliminary constituted 1.5765 irregularities L.J. Lord 3.52 constitutes several communism oversees mid-1970s communist governing Wayne rained turbulence romance leaving Year 3.69 shivering Femina dirty introducing transparent Sassy Drugs Yeah lending Bank community assassinations general Banc entrepreneur myth p53 airy whisky pretend high admits daylight very Look doors Catholic shocking contingent Schroder rolls kissed canvases 0.5 0.4 0.3 certificate 0.2 0.1 replenished case-by-case Hooker 0.9 endorsement exchange lineup 0.7 0.6 Long nod unpublished Lone elite random slammed Typical overseas clamped dusty stimulation not nor Microsystems Kansas now anchored qualities myself coordinator shield plowed purposes Disney launches computers towers soothing Szold Andrus launched dizzying slash British legislation hauled SmithKline roulette lowest belong misdeeds quantities p.m decline stabbed slate Elec transit grunted semiconductor coupons Trinova vaguely parties commute splendid counterpart throughout Coughlin permission Jr. knows Symbol regulation Copernicus known generic decide slave absurdity Long-term increased Jon Lomb veil restaurant inept vein Joe because southeast increases dialysis believing shrinking premiere apparently quickest minutes ballads greatest painful tasks gates bushel Personal HOME bushes 5,000 mountain higher 157 northward 155 gasps 154 2.25 150 Board hypocrisy trifle Hart-Scott-Rodino exports once Apple comparable 165 apart 168 Berry Batman 160 prodding Dell letters akin consummated warmed beatnik 179 principals oil 170 could 175 rebates rendezvous Exxon honored lieutenant living ones negotiations 9\/16 180 recessions Seagram 185 Maguire Del. 114 lecture 115 auctions 112 113 throttle 110 111 bottling taste 119 cabinets 2.60 slight Records poll begged passage broadcasting troublesome 125 121 Filipinos 122 9\/32 Shack stint strained environments embryo portrait cough Assurances 2.50 Corsica 120 example tentative 2.58 odd Capel good-looking pound 135 Harvey protective 136 telephones employer Rousseau today retire telephoned Iowa Muller bankruptcies Saturday vines contemplating experience types 2.46 employee coupon 130 employed Deep Morgan 145 enters Zealand 149 still Siemens improperly newborn vaccine advertisements assumption off 140 Lumpur Midland thoroughly Funds traders Taking court joint-venture defunct roughly integral slipping only understandable Purnick Moreover happiness buckle museum vitality responses understandably destination roadway upright preceded Tuesday negotiation pension Guess abundance Rochester humanity sunburn severed herds legends Deal Dec. moment Dean waking Dead Deposit Figure federally juries dishonesty Falcon irritation oak Dear cheaper sessions negotiating oat Engelken Sure plumbing Bulgaria masses bellowed standing count fragile masks underwriter 190 niece Projects speeding 198 home-equity nondescript LBO Maryland protection republic Letch musical Factory Libya professional copies coupe shadowing pizza Brazilian embodiment Connolly Mercury stiff plummet coups stick earnest Kay protecting network 3,000 poet contracting trusts actors balked poem squeezing LDP Korotich similarly Mobil growing oath aroused organizational contraction Foley oats undisclosed prompting deductibility fantasies fervor Key PRIME Ken hopefully fences shattering 150,000 installation anticipate presidential juice paints imposition Embarcadero Copernican chunks ends stimulated admitted kitchen Shann voluptuous supper bearded owl warmth own excitement 3\/4 pounds 50,000 bucket bells stop-loss LIN contraceptive penalties belly cheaply predecessor happy festival Westmoreland 3\/8 grossly plausible theatrical tumor adaptation produced supervised intervene Shall preference producer produces abortion-rights Shale checked machinist grocery frowned exchange-rate single-A-3 single-A-2 seize single-A-1 Express surrender earthquake Infiniti livelihood Kid validity fallen Kia arising Kim Batibot marry upscale demonstrate index Thousands listening Laurence spreadsheet propulsion inform Hutchinson flicked require foreign Sharp classics disciplinary royalties mid-1980s well Share instrumentation compass Treatment owe realistic neatly surrendered betting supply individualism drifting disliked trucking buckskin would-be Lesko suppliers units Ingersoll Michael positions Penney Minella Jelke tracking unity farther invoke tension our out 2,500 absently hundred Getting awarded falling Bartlett went 1.8 1.7 unfortunate 1.6 followers cover 1.5 38.5 marketers 1.9 revulsion 1.4 1.3 groups 1.2 1.1 Mich. airplane concealed compare insisting disks carriers Snelling 141.70 boiling supervisor collateralized locked examination Moscow 2.75 Cornell pachinko ground advertised 2.625 wept pollen 109 108 union 107 highly 106 105 weapons velocity 104 103 Dinkins 102 101 simplify 100 covered united miracle 2.85 progressive polled 141.45 Rianta crystal Reform livestock budgeted Glendora 141.52 grudgingly Utah advertiser old allegedly township LSI lasting workers audition were Anyway terrific DaPuzzo doorstep bellwether curiosity global symbolic government-owned affordable Design Ptolemy adjusters company Andrews management nowadays west Elizabeth Bickwit dipped caution one Teagan licenses minute Shearson state-controlled Lincoln Ekco Berbera licensed backers year-to-year non-U.S. clearance LTV publication gases benefiting wreckage savage 141.90 Singapore channel Deng robots occupied freeways external particular managing academic married barn refer theological bark duties bare missiles Intergroup defending plastics 10-year ... shown wide Caltrans tail reorganization clung ratified shows surge Northwest Mother wealth underground faculty audits epicycles partly patient BroadBeach bath emphasis Noel Fossett discouraged stacked salvation bars buttons screening incur bass comfort base strikes Levine O'Brien client ditch conviction Guber anywhere Eromonga tritium Brown-Forman cheered full-time long-range software band friendship Commerce bank widespread tank concessions bang primarily gentleman Idaho 45,000 Keating Ky. mandatory fulfillment States tame sporadic fictional economics seismic softness extending sidewalk deliberately remarked Financing stimulus sentences drinks lab feeble meets lad honeymoon ally lag tale discounts sentenced lap Otto tall Prentice talk law Nazis benefited precision bans obviously lay cable departure appropriated PAPER Violet source take retrieve economies Prague gentlemen clues appearance improves chapters shuttle tweed Miranda deliberate historic improved haunting Declining O'Connell Estee shops J.P. intolerable gamblers thrusting accrued wild substituting mothers Already Let numerous Greenspan Warburg Leo MGM quackery eagerly accomplishment Lee reconsider volunteered shoot Led will Cupertino inflation shook incident shore Financial anti-Semitism virtual Silicon Legent segments announce empire preceding tape Bowes fiber short achievements concedes CACI None Law liberals Lockheed conceded dumped Modern Violin sciences dangerous master barrage proclaimed Honecker Lewis okay metals capabilities follows 60,000 segment Dickens ranges sweaty revoke Freres provisions shots ranged GMAC revolt MCI high-profile Las Herald taut Lao Bates presents clubs Upjohn amounts streets MCA intricate graying trailer wondering virtues intraday spiked trailed vigorously muttered Nora vocabulary task Pearce boxes Daily Nestle wife crossroads Speaker characteristic subscriber also shout 1.20 1.22 newsletters 1.24 1.23 overpriced garbage evident Mrs. adopt 1.15 sunshine 1.16 1.18 cheerful 1.19 bureau supplier supplies 1.30 1.35 wasting 1.32 Andreas always log convince restraining magnificent wandered Clinton athletes neglected airports comforting leaping Irving 1.27 lot 1.25 magnetic 1.26 low 1.29 Irvine 1.44 ugly exaggerate 1.43 taxi Patterson 1.40 Mitterrand N.J 1.42 advertising Prince reveals Barney resurgent letting N.C designed N.Y Honeywell baby N.V 1.36 1.37 MacDonald offspring Right moderation 1.55 nineteen 1.54 1.52 1.50 designer Older cosmic back supplied piling talking either Hanson presence CALL MLX original south 1.48 rotting gestures trespass sports sketchy ended 1.65 undertaken jailed discretion Cathay values intentionally Dunkin divorce formulation Liz drunken conclude valued lacked condition 1.71 wrongdoing Harris Holmes 1.75 hundreds numbered Fujisawa uphill battle post-crash sound Unilab whom 1.80 1.82 Human dental 1.85 federal Davis underwear Calif replied MIT mid-1990s gushed ontological David Basir resulted headaches manipulation downstairs Dick threshold registered Fashion usage forbidding Service announcer announces Merchant gasping corporation Daiwa backdrop Stock-index pour entrenched focus Consumers downright Know Demler extra greedy U.S.-Soviet concentrated distinguished Mousie wretched announced replies participant bail drivers port prayer Mikhail inviting decisively Ltd souls cultural apartment minicomputers Bay-area pose telecommunications franchisee J.C. millions ball penetrate balk post Illinois bale n't let chaotic bald oppose stored screeched Traffic recommending leg bleeding Ill. led Lt. MTM prayed stores Total annoyed growers concentrate unemployment Organization Communist priced health-care nurse remedies rebound niche effectively parochial repayment regards Humana Taliesin uninsured stable Communism facade fearing Prairie pork straining match output Theater anti-government athletic bookkeeping Sutton pony Lou Lilian cultures Los purpose Israel pool implications Steppenwolf Arlene 1.02 couple participate shoving unspeakable availability lit Community 1.07 lip 1.04 pressure 1.03 800,000 Brooklyn 1.06 1.05 videocassette poor around lid enjoyment Judge 2659.22 instead 1.10 1.11 architectural prices 1.12 bags lie gouging communities threat quieted triumph Fire airlines thread boring Edisto guaranteeing frantic shoppers Miami Universal sleek effects capitalize sleep emigration amid well-known struggle suitor Pasadena senator Saudi Kohl Spring petroleum imagination honesty mad uprising map man may permissible organizations Calderone Crombie Mister accepting Leval Polly what unscrupulous ponies volume landfill dining soaked distressed greenhouse centennial Commerciale reforming balance hostess Poodle enactment gloom sells Five cement smiling begins burst breakdown 500-stock ammo McGraw-Hill Hambrecht Cela educational High-grade acceptable glistening Koenig Zipper funded Madison chosen Charlotte met capitalism legislative Machinery men earnings parallel Financiere Betty Canadian glory capitalist Always hardy readiness According proposals nobody Calloway NFL aligned intriguing glancing NEW abuse whites burns unsuccessful Based Except decorated Kobe whip Oedipus animals gene forcing Men Mel Turkey toast heartily powerful composite Met county Koch counts weird Donnelley evaluate fashion Ellen credits Bernard Investment-grade Eight sprawled Toronto screamed officially Malaysia warriors forfeiture extortion Andrew savvy Bare-Faced shaping boosted substituted marriage struggling capita substitutes NIH thoughtfully Williams individual being erupted actually NBI 9000 NBC when BanPonce Man Wilfred Square Andrei talents constituency Mad Mae Judiciary Natick exodus Mac permanent Justin focal tumor-suppressor fitness reactions elephant Sherman Md. eccentric disappointment Looking May Max muffled re-election lining facsimile besides labor-management Siddo gets shelves silver old-fashioned urging transition productions suites NEC opportunity April briefcase suited Shamir discussed influx mph eighteen syndicated Mo. appetite disappeared bribed Dataproducts Workers delegation CBOE vowing syndicates amass mob Instruments cell severely realizes mom disaster precipitated Fiat Artie simply contrasts rhythmic chorus conflict realized sideways policyholders Estimated notices simple Shattuck alleged pioneers noticed Victor numbers alleges denying Nov. Farmington Enterprises inexperienced eventually Estimates robberies institute Foods echoing careless rancher 6\/32 symbolism civilized discovered confirm spotlight cornered buses essence oversee corrected experimented pushing substitute harsh questionnaire mud dragging busily Brannon Qintex Jenny losses follow Pathet capitalization cocaine Deutsche weigh DRAMs weight Together weighs longest thriving businesses emerges teen-age fifteen Peterson disapproval compatible blessing Insurers ivory Arlington globe cent Japanese emerged hugging Mackenzie muscle swallowed Assembly Depending Icahn couples desecration mature coupled HealthVest Jenks Schaffner leaned cycles Channel Crime guests promotions flowed solicitation Thrift startling technical physician filthy burden initial undergo unpaid Currency 8.85 flower 8.70 confiscated experimental dulled NWA without Senior quietly largest imaginative fundamentals bankruptcy-court culmination 8.75 smell cabin junk-holders Louisville two-story INC. Social possibilities identity epic Kroger holders scaled tendency 8.60 downtown regardless surviving expire Direct shells reconcile Opera tainted Tele-Communications mix fullest valuable trotted Beghin-Say offsetting 8.50 8.55 Rupert belonged canceled constituents Edison Final gear Ms. Hathaway power Bullock tack reduction Fink Equity stock-index Theresa shoes NSC symbol Fine Find posing denominations Brady Mr. NRM conspired Wellcome doctrine Technology privately Barre McCaw Kong Negro Avery biotechnology chambers Tolley Barry Film enemy participated price-earnings terrified processors degrees Symphony shock governments consents streamed largely remembered daughters maturing analyzing attended clutter bothering profession pitcher advances fertilizer pitches compete materials slope declared event finishes advanced Filipino cage Cambridge James gasoline theater regard meet washing evolution 540 median dawn stadium commissioners cafe pitched components YOU Angie 1818 steady resignation sped sidewalks homosexuals sweetheart biggest parted index-arbitrage spectator Jolla guidelines Commons baseline Fluor 1845 experts happier non-food declares censorship invisible crouch fruits erupt misplaced outnumbered multiples revolver 1\/2-year ports days averaging zone suspend Milken banning grandiose 18.7 echo strengthening 18.5 updated Jamie 0.19 Kingdom CFTC gourmet gleaming assessed alongside rationalize spat Embassy Adam automatic Gorham double preferred all-out Anacomp Harvard areas orders Schering-Plough 0.03 589 span 0.05 smelled indicator African Sheldon deduct planted Upper generous completely hillside wicker especially fuel planter alike 550 concerts Survey Digest conductor assigned finished inflated Hells commodities evacuation Hello confront wicked aftershocks ludicrous wooden flush headache Division plagued 0.25 brown lowered adding Whether issuers attacking Building Morgenzon Nobody Tenneco rock Jaguar Northern rode Buddy 0.60 border capability sterling consequences patched someday Investments menu assured Hispanics scent subsidy sandwiches patches regain scene unraveled western pupils publicly Woolworth maturity Bear commenting memo mandate roar Women Drilling road Lester simpler Calif.-based Beam Westamerica publicity trading commotion marketing Never Running focuses officials loosely marijuana Per-share Steichen worried Star worries publicist alien Stay laughter telephone Bebear diluted Federal flung mess every posed eight poisonous Helva conspiring Douglas focused 5.9 Neptune seniority progressed wrap reviews 504 authentic designated richest unwanted 500 exciting economist salespeople low-income Limited theatre interference mere violent beers celestial Black chess chest 1888 security McCall Spokesmen alibi gorgeous errand Persians corresponding Zoete gifted Lucy 5.7 puzzle 5.8 5.5 5.6 5.3 5.4 5.1 5.2 dodge Woman shifted commodity brightest alliances Bancroft sponsored angels callous Hamrick practiced feeds Poughkeepsie discussion appear clinic conducted Property unhappiness cave U.S.S.R. omitted stretches practices fury valuation furs shelter Politburo fluid practicing arena drink appeal stretched sour charter Equipment acknowledging soul suggest discussing indicated soup calls favor indicates cheap mailed sort Kabul lively corpses expensive Marathon laundry scrapped sore Columbus negligible LOAN sensitive dismissed candidates ounces pinch 700,000 documents Ebensburg printer medium Nuclear Princeton printed overly elementary Pace wounded Treasurys procurement recreation bowed thicker appropriations Wolfe Carmer Exports practical cars pouring care card Internal Continent moist Light CFCs morality envisioned routinely literary assuming agreed Pakistan declaration Wright cart rabbi filmed cast Communists cash elusive settlers speculators case Prohibition thumb Broadway Pretty song cheapest Thomson publicized undoubtedly mythological dismissal regions worsen pickers cats breach continuously pursue commentary subscription strenuous interrupted drill agrees stirring Resource Earth recycled strength soon Pact sons pipeline foreigners Hitachi brushing Richert automated cane misleading feels equaling conscience ridge camp Fujis transmitted solo drive credentials sole thousands sold confusion insisted autos personal-care jets Institutions topple Rubicam cans Graham Books combination slowest proposing some atoms stream mundane assembly losers centers circumstance Occidental Brandon pastor annually Jonathan coordinate Generale soloist Papa boards arrange magazines injury pursuits Thayer McDonough explanations Rhone-Poulenc subjects chefs posts Much Orders finishing Amsterdam concerns sources restitution Jordan Billy fund Markets meddling rollers cake cheer nasty visitors cheek adjacent streak frustrated fingers hemorrhaging repetition soil calm call demands paper breaks Columbia calf temporary virus ruling currently Mahzeer hanging another sofa rider rides equality full dramatic check Briggs Chambers paramount Renaissance petrochemical came 14-year-old searches soft Palo Moreland HomeFed swamped Donald Palm develops facing benefits searched average minerals Monetary watering Pretax confesses recruited covering confessed Lublin visit reformers Nicaragua diversify lesser Senate Wade Who runway began coldly something takeover-stock asked Attorneys Why entrepreneurs PaineWebber buy-back repayments Pittston Joshua preferential continental Waco new-home salaries further junk-bond soak towns separately 400 soap soar tunnel derision Takeover foyer Inland pursuing seeking abortions widening lawsuit Courter plains joining laboratories portraits customs skirt flatly girlfriend Transit traditional Margalo Intel francs soda a.m. yards represent solving jolted background smashed returned atmospheric Maybe Emhart bound Detrex astronauts Everything Michelangelo confusing Mayer enough capitalized dispelled 17.6 17.5 17.2 sidewise insulin topped Millie fleet Steelworkers saddle three-dimensional conservatorship better against Industries deprived constitution invention shareholders saying Rockefeller terminate consensus Boston 450 Inouye Study flying Aircraft Capcom cheating voting Atlantic correspondence society Sung windshield landed Atlantis relocation shaved Wall they Gatward fell unprepared nine Sohmer Commonwealth renaissance convenience Martin apparatus Walt anybody approximate educated programs Pryor lesson structure calculations Industrial delivers charging murdered Such Chan excluding Cellular ordinarily enabling earlier flashlight skill them then right-hand murderer delivery Hammond birth-control Telephone sabotage plenty irritated writhing Way melting Was War prospectus Godot Bologna two-thirds Slowly ashore belonging Berkeley darted Reitman unified Poitrine Durkin Wait accuracy imitated custody expenditure acquainted Initiative second study displaying Crusaders looks camps childhood Doctor examinations Eaton escort forthright Chez theology Tucson Mercantile Chiron stuff Agreement thin Ltd. Pennsylvania included this appreciate firsthand recognized fend Colgate-Palmolive Nixon Mayor includes affect stabilize smaller looms denounced affiliate Gutfreund Norfolk various stuck declining 4.1 thieves Fleming 4.4 4.5 4.2 4.3 4.8 4.9 Martha 4.6 adequately 4.7 Pilson maneuvering recognizes felt Suez administrators burdens wrecking constitute passed passes merchants packaging snow points invitation deficiencies donated recommends revived cautioned ants intervals favorite conditioning Saatchi civic 17.50 data-processing habit civil crisis tailored surplus luxurious Wash Dictaphone Champs fault fastened breakthrough combined Wars worrying quake 10\/32 President feat actions loathed prohibition combines publishing fear detail Nellie loose exploration contacts affected Sound 2003\/2007 deterioration tennis Witter evidently networks showers unable Minneapolis worthy that Leave surgical deteriorating than Representatives rebuffed previously races revival memories Tokyo-based model cutbacks weaknesses shining raced skiff abundant Downey weighted dialing elaborate monopolies consolidating crises traditionally affirmed feed modes forefinger confidential Taylor feel girls Local cease investigators feet fees climax subpoena infinite organic Wang directed whoever circuit consolidation suffering standpoint motivation 486 Goodson prototype simultaneously X-rays whisper looting toxic criminal one-year choose artillery Tomorrow Madrid Protection Izaak 475 WPP director putting impelled Guterman symbols coins flesh Hence Miller episode comedy knights failed rebuilding ushered ballroom Ways Stop accurate respective WSJ enjoined beautifully depletion edge toxin heaven harbors nuisance Kerr-McGee developers heaved fruitless Meredith integrated Sawyer Burnside House-passed users C.D.s solutions Though Recent ponder translated Weyerhaeuser requests nationally turned subsidiaries dealership Precious directly accuse S.C. manufactured bracing stalled 6\/2 Secret Jerell manufactures Railway manufacturer popular Bavaria coincides privatized voice interests booming -RRB- pumping South merely employing Armstrong displays regulatory doubts during Eric meat notification mean rhythm graphics offense reinvested distress regulators Abel meal Subcommittee office Operating terminals naturally S.A. domestic Jennifer alternatives regains creeping Unocal shedding substantive alliance Solidarity framed deductible praised uneven tend bacon 330 parts party spoke promoting prevails tent tens substantial alcoves recession Drive offers pencil Masson project enthusiastic air-freight frames masculine Fletcher discuss 340 skeptical Ramada pre-trial Walton pills each myriad bills Custer Belgian mistakes mistaken sidelines Faith inhumane bathing 1930s tell interesting choppy Skase DeVoe choices 325 RICO semiannually 320 electronic sequence Bloomingdale pro-life hurled collects pillars physical congress softened Recognition outlays 16.1 Eidsmo 16.2 cruise backs aboard While wanting trimming 300 seriousness Stamford seventh Guaranty WCRS earning refuse single-family patriotic Bankers religious membership promotion granted enact response timidity chapter ozone pilot incorrectly infection showing onion quarrel acquitted 3.2 3.1 3.8 3.7 3.9 3.4 Province 3.3 3.6 transformation 3.5 Enterprise Espectador Ethan blows paneling Stick retailing Graduate backwoods newcomers Those gainers crumble among blown Still everyone listed spots teen phased Independence write-down imagined decisions routes ever-changing performed perfume performer pays Wellington unanticipated vegetable Breeden newspaper spouses flaws Woods tracked Falconbridge listen Voting greatly Walter Persian editorial modernization criteria recipients Independent Automobile void Seventh studying write-downs reasoning judging begun lotion finance pawn high-end avoidance Jones elections authorization since Yankee accountants cooled cooler motivated ashes Dennis tear Asset Something creaked bank-holding prepaid workshop solved quack fatal team employers Bancorp conceptual ease eagerness Katharine considered judicial whistled reconstruct path Toyota east subordinate zip investments political Minority your Cie. sport past concepts Nations troops environmental pass election Presidential ears earn matched residential blond nice customer matches Newport formerly prostitute 13th devotion crushing awaken Rubbermaid pesticide cost-cutting Chevron curled Maynard vote Employees absurd Seems sanctions intermediate blood pricing F-16 go-ahead ridges Hamilton fashionable spinoff F-14 referred devices surprise critic offered annoyance coordination wildlife irrelevant Which Naturally Broadcasting reoffered Nielsen textiles A[fj] definitely metaphysical depositary whatever RISC Title exhibit Hanover pleaded presenting sorry lumber rampant Americans NYSE Marshal arbitrary hills percent coolly straw Output Westridge stray identified Cathcart discussions grief mankind Kuwait second-largest fields pork-barrel control Mideast Burlington cholesterol Roberts year-end benchmark Roberti sorts identifies Motorola canoe stability acquiring cockpit prisoners attention argue accounts run-up Democrat extended Timothy you tables underestimated diesel Belgium AGIP latest dealers Volokh people candy parks laptop bottles seasonally games pairs mainly piled waving Hundreds Died exile bottled touting starving stalked Similarly syndrome beneficiaries Diet Additionally Turnpike inspect lemon suddenly nodded Assets Rumors Concerto block Freddy Colombia child-care farewell Vanguard flawed Roberta deflator Spanish excited Strip anguish Jessica taxed undergoing degree taxes streetcar mystery hurting travel nominal 380 disguise Unification Holdings hurry slumped 386 Catholics Middle fleeing 370 pertussis scraping pains enterprise paint strip BANKERS Storage broadened 375 Brassnose cafeteria Dill Beebes footing ashamed complicated Portfolio turns 360 Vietnam complement erotic sharing hopeful cosmetics lately piles exist hurts university Munich leadership unsuccessfully potential worsening radish swaying Chris 350 arbitrage begin jobless Attorney tower orthodontist organ towel rifle Separately storage reliable auction arrogant ghost continued impatience Professional politics Vatican blackened endorsed virgin deep Hammarskjold Director breath favorable Paul affection orchestras Acceptance Profit 200 favorably plate Montagu papers miles Country Dodge breast illegally magic voyage fixed-income continues Beta idea 210 superior Park 216 Beth Elsewhere riders extensive Integrated management-led Boren asserts Best cracked affecting intruder deck Part 1920s Delmed gerrymandering setbacks 220 Paso quotas debt 225 defenders needs 229 Victorian exceptional yes independent barley yen equities Dutch\/Shell yet 15.6 plays dear obligation describes phenomena Rubens deal expose dean capture eyeing dead deaf priest staging passwords engines flavor vault Earnings classical contemporary platinum trash seeming securities therapy eliminated enforce prolonged garage destruction colon frequency routine 7:30 accused treats treaty restraint paintings restaurants projected sample 2.5 2.4 requirement export 2.7 You 2.6 2.9 2.8 National sponsor 2.1 promising 2.3 memory 2.2 Montana adjustments urban quarry color cooperative decency badly accompany forget Emile refinery Founders Communication Marvin ardent fixed bother Geronimo banished mills dried favored tuition Cromwell refiners Master commercial Thompson Bumiputra questions pursuit attending soaring priorities slowdown fears Revenue geared comment varied plant settling plans Sidhpur Second strain settles arbitration plank Bruno Table aside publishes publisher Venture shipped unbelievable Paramount-MCA rebate published situation porch completed Early requesting 2662.91 Angeles delicious Murdoch Electric Allday representatives Showtime extension idle plane traps Boesky described Burnsides reveal recognition Maurice Ethyl bracket tours inquest deja bikes trail train leveled hopelessly noble Barron combining stature challenges trailing glance Civil Hasbro pursued challenged Prevot enjoys settled precarious Guber-Peters Koreans parents Yet futuristic commands outfit limitations insight confided Yes drift applicable enhanced agony amounted resolved rubble partners ample diamond Esselte cooperation agenda statute potent afternoon importantly definitively inner-city destructive agency quoted circumspect filling apparel quotes Fudo cooperating ASSOCIATION Smith greater withdrawal Working Development deposits adjustable encouraging face-to-face spot touchy House-Senate Tennessee LONDON Fuji forgot place serious suicide attain Beer rubber Rosenthal Seaman builders Peladeau rubbed summers Tilghman present-day District headlights chores Because abandoned Society reasonably Partnership vaginal Baltic theaters Kirk desk Mortgage executed critical easy anti-takeover downgrade entitlement Somers initiative scratch entitled facilitate previous park trips Electron speaks ambiguous reasonable enterprises rivalry Brouwer Prosecutor weapon reinforce part incumbent lapses happens December optical haunts bathroom eligible handled Gilmore jerked Fund welcome Conference tickets comptroller suggests text submit reinforcing narrator Burton pale effort Texas layoffs intended reduce palm spun Societe input pall consciously coughed Parenthood handwriting spur natural Composite caresses trade cites outlined Alliance Income consume tracing competing meters outlines CERTIFICATES deny cited Bruce demonstrations plaid Peters jackets plain Petroleos Institutes consult trace shareholder Tenders track Grimm avoided 99.75 school appliances fucken Chugai tract rifles During handles spotted examine test 280 lurched shrank unlawful urbanization IAFP addressed Aricaras conferees airport hazards Jacobs Under midnight refuses page Petroleum deaths clarify essay refused bathed Guinness Jacoby brutal when-issued 270 prepare Provigo strategic 275 Systems addresses McNamee Reliance outlawed pair Bell Missouri institutions pain finally European Oregon 1.8667 paid fueled spit emptied removing overdue 7\/8 trunks spin Sansui apiece profound gangs Angel Helen Individuals City Cuban Heidenstam attach bacteria Elders attack pace 240 Corporations arrests one-time bosom little pack alive Bert dreadful though Cambria mountain-bike signing Journal priceless 300-a-share proper 247 refusal nervous consideration 230 pact Bern Miami-based Gilbert Games 235 prepared Lazard 260 provisional aggressively agents greenmail tearing Abraham object prepares salmonella festivities Weirton accidents protected Quickview 250 252 error pegboard private-sector versions White term Citibank embodied secret Ultimately disappear Digital Forsythe shakeout Brenner Abortion incentive Stoll developed competitors King price\/earnings beans thoroughbred upbeat comin Mitsubishi Forbes trick Arctic screaming pacing purchases impressions comic Hart Associates clearer sensations Gates Skeptics theirs distributors turnaround purchased cleared Weisfield biological slightest washed Soup Associated superiors subcommittee judgment Sometimes vivid Stone made needing experiments suburb usually conversation foundation trial sophisticated preferences ridiculous purple Construction forecasting jazz solar Weiss including strongest developer irrational bullet reluctant lead spoken leaf jaws insects surgery Bids industrials 7th personnel pessimistic Gunny technological processing Hawk Between coughing 14.3 14.5 14.6 label display indicating enthusiastically arbitrarily Mateo 14.2 lean revised elected O'Donnell active opinions blue-chip Have make deliveries Wastewater leap hunters credited therapeutic Store indication tried TVs perceived lavish palms atomic Your pretending due-process fuzzy Sun tries Howard dictators mail 80,000 malaise 950 TVS fared heavier candidacy Dealers securely Nissan main tremendous surgeon expected maid castle franchisees brewing Portugal mentality puzzled carried Dartmouth peered reporter disgusted scant asks Ted Ten report carries mechanical carrier 1.8340 reported liquidity Knight-Ridder forehead suspense prisons invests Vernon 1.8355 vacation FK-506 Ramirez needle UFO 1.8353 Prudential-Bache objections bored Ireland forest-products chairmen banker mountains adjust protests crowded medication Tan smallest Brothers deficits Tax prosperity rookie farming fourth Salinger dilutive Hall 1950s unclear Half coatings Bias three-month midst literally minimills tends Ogden synthetic contains Feathertop 9:30 beast penetrated almost foundations Transportation surveillance analyzed experiment action Faced seriously Committee consumers momentum clarification filing UAL Hank free-lance corporate forming Askington Hang dress Hans glued acting societies chairman scale interstate exclusivity females Upton Cablevision lonely major Wilson scalp Reverend contention Leader Galileo sexually morale anxious bears Gandhi beard totals overtime scams Kellogg Statistics Matra blunt sitter pipelines Six liquidate tenor communicate Beginning appealing governmental Peoples Ski mileage styles tabloid psychologists cyclical admitting drafted Christians contemplated Moriarty pregnant specify behave tacked broader She corridor broaden Wedd Fannie unlimited Steinhardt Down placid strike absorbed written comparatively Court From chips Craig species buyers liable Sit Sir jail young picking Myra narrow Arkla Family equally mate Constable arise reflected cemetery THE repeatedly perform loses loser Sihanouk derivative 70,000 grandchildren misery Sex presented china scary prohibits shared enabled sniffed scars youth places leveraged pools defective shares enables eggs islands scare legal powers famous Skinner reinvest Health maze revive child Crane performers hectic grateful administrative placed yours resisted Sen Estimate Quarter forecast Doug Convex enlisted chill See crackdown Sea seasons device Chevrolet paced spurt strife graceful 5\/8 Some Wohlstetter Shylock 75,000 likewise Sri Fred arrives leaves Richard Free St. spoiled sheriff Rock arrived industry fares Song four-day cubic Valley approached stride packs many solid Activity covert covers takeover one-third Pierre subscribers strict approaches creditor Rudman TVA residents athletics physics translation Sr. Soon valley watched Sons capped reopened blanket Lynch franchisers February TRO Sony casual mainstay hypothetical reversed district watches TRW negotiators second-quarter shudder male Amgen humorous prestigious Roger already tackle Allied broadly unidentified bloody revise standstill perestroika mall Hettie Artists Uncle 11.25 beliefs weakening arched Could mask beach Father TPA skin mass mast parody Fran presently chief mare dream hints agencies mark temptation Exterior comes mart fountain Son Soo administration senior trough issue Milwaukee attribute carpets achieve coroner disadvantage magazine Griffith controls TNT details borrowings farms temporarily woo won 42.5 judgments Road reversal brains Delaware vision Finland tense replacing jams America Antonio maps address big-time special Matthews fundamental Boesel battlefield need Knife using 800 fish amazement brethren West Giant outflow missing Room Orchestra Productions Lucien Forces ordinary laughs heaviest creative Emma carving worthless attract smoke Hewlett-Packard doubted blocking Richfield sociologist Doaty smothered salmon fist 8.7 8.9 8.8 pretrial civilizational examiner horrible cereals trouble division missile Barton examined Rome wet Tariff INDUSTRIES thorough streaming firm dictatorship o'clock web guerrillas Institution fire louder Were Student Employers wealthy Carbide Panamanian vendors accords methods behalf proves considerable proven losing Nevertheless Maude trembling who stained volatility Armco theories opinion proved 13.1 13.2 populated 13.8 grave 13.4 13.5 switching 13.6 investigations Trotter considerably Pharmaceutical general-purpose near circulating Frederick neat Iran-Contra abolished murders anticipated Hesperus combinations reflection Instead neck anticipates understanding purchase former Concord fits throw area style wonderfully circulation wit formed Freedom taxpayers fragment Armed 850 five desolate program-trading capable win Popular reflecting message 15,000 mission arrival handkerchief visits why natural-gas Tisch Kageyama paragraph mystique Dalkon Rowe Miriam TCI Sam overstate youngest Ages woes 880 knife ring creating services tying Outside regulator loving provinces Hastings Well Cologne flurry thwart Prieur crumpled caller different Panisse creation Brodie pertinent recipes manifest influence allegiance voice-activated closet closes closer Weil bewildered neon boomers detailed closed decliners radical similar Germans Say Glass Roth floated San 24-hour bluff 1.8470 musicians plowing residence persistent Birmingham ripe furnishings choked Germany defeated bombers Khan Enron nomination subtle Ross Veterans Rosa programmers 1.8485 Research Rose divisive champion wiping liked issued Peruvian detectors issuer manufacture issues likes called procreation Agency clear-cut Week accomplish wax way profitably 20.125 estimating believe war snoring was ESPN abandoning risk army naval driven rise arms driver drives hopeless Aichi 24.9 Clay audience 18.95 profitable communists Generally mains threatens Waxman wad opposing spurred reeling wood arts Technical McKinley Rourke vs. intercourse forward Eugenia lifted Rex Rey wool Slater READY bullets Rev Providence Omaha flair Papa-san 4,000 constraints copyright vessels moonlight brunt proceeding coming Cavalry SHV professors rigs chanted breakfast stayed next whirling Three digital abruptly twenty-four voters utilization Haas Given enforced Senators Samuel convictions hair appliance surprises incinerator hail irons flags steadied news rift surprised passenger Foothills SKF McDuffie irony Gibby agree breadth Hahn squat dreams scrawled inner candidate SDI muddy vue woke scores gender electricity Congressmen Ray reactors redemptions Afrika scored coffee SEC 9,000 size salesman reforms United roads Sanford result opposite credit-card nets cocktail definite overwhelmed stagnant animal misrepresentations functions reluctance Red nest Cancer liabilities resume notebook squad Nancy grain operations raged harvest middlemen employees quarterly flash via doubling Beecham clutching avoiding Hiroshima planners authors anatomy excluded comparisons watching file 17\/32 McGill York grasp tilted exhausted Roe grass contempt Roh shocks teen-agers atmosphere Rob Rod Manitoba doubled salesmen underwritten Roy violate Brawer non-financial container Ron Aeronautics decidedly rapidly peaked trying appreciated Ends judge Dallas steadily giving gigantic desert establish quest utterly symptoms loosened clearly sector incorporates wander grant swells Devil justification fortune Agents silly ASSETS grand incorporated three regained returns characterize work worm celebrated earthy letter worn dialect videos bidders cattle heavily landmark recreational threw promote program fund-raising Africa word brush wore regulated Cawthorn 9.2 9.1 dollar-denominated 9.4 Elaine campus ride 9.9 Paterson 9.7 feared 9.8 9.5 9.6 Credit Julia Bridge contained Dixon fiercely Nobel Julie Reuter flame Winter Pentagon Genetics von 26.23 reinforced issuing defraud fine find film rice rich fill glanced engages Raymond Conway ribs outer engaged confuse 900 periods pants rattling Domestic Banking float Champion 747 time Imagine psychology speculation thereby Steel microphone mansion anatomical Sources outlets worship pocket contends lined smug protested lines malls uncle linen queer queen break-even Fitzwater prospect perceive Georgia-Pacific 27.9 namely currency Station 250,000 Whittle 27.1 coherent year-on-year Usually trousers impaired Torrio tilt Iverson indicators till Four veterans elegant tile unduly aunt majors Wheat thanked triumphantly transactions Voltaire competent booze qualify distaste crumbled bounce diminished appointed 30-day strengthened 700 reckons scramble Wednesday Whitehead Sears materialize 7.8 7.7 vital 7.9 definitive fulfill Va. Microsoft entrepreneurial orbit damaging 12.4 frantically 12.3 12.6 87.5 12.5 12.7 prefer 12.9 guidance Skolman crunch Ariz. cooks van Field Seats negotiable songs refinancing powder insider embargo flock author Dumont alleging uncommon 7.5 7.6 7.3 7.4 7.1 7.2 complaint complains males disrupt photo planned burdened photos wider great widen money-losing planner meager genes poetry D.C. hatred Henry Winslow Whitten given unwise Keenan Lines screeching secured Rather calmed raining amusing tangled auto survivors credibility costumes debacle accident bigger Food Bryan Hernandez Medicare emphasizing polls susceptible statistical Linda visiting Aikman primitive productivity inhabitants green vendor receipts advertisement robot links Sandinistas frequent outcry hollow dishes Van method partially settle stockholder Jennie narrative snap human-rights preferably Oakes related ambivalent request useful Via monumental Relations decreased assist hunch tire Mattel panic flood unscathed Results scrambling panel tiny Athletics explore personalities nonsense erode flashy 30-year speculative Fort lunged building borrowing 750 Texaco gives Ford Location impending scraped inherited Daffynition provision WHO profits dentist fitted mentally Heiser weeklong tips Congressional satisfied exposing checks yellow electoral downturn Contel hairy Comsat approved drilled hairs high-interest lovely Supervision fourteen elements Juanita offerings assembled politicians Prosecutors Lawyers propane contents Steve attendance drafting colleagues entities variables Dorrance hamper individually conscious professor Susie packet Quotron delightful 13\/16 use difficult sinking agreements 1970s Marshall Matsuo Steinberg Colgate goodness approves LIBOR Yellow backlogs plentiful Accounting handful fights feeling pennies B.A.T Jess prime-time nerves supposed Garry auditors hindered science GRAINS preoccupied Noxell vessel tells prudent 18.65 submitting triggering liking Atlas Bogart shapes modified percentages failure Debate third-quarter True tapping Wilder concluding shaped lobbyists packed taping contested setting ranging seizures Marks Stern inspire profile thus Computers approval cabinet gasped exploit Motors English natives expecting unit fishermen changing CenTrust potato reacted Marin Mario Guzman ties brokerage milling 1105 understands Engineering Matson income briefly Grafin gathering downward loyalty nights therein 8.3 8.2 platform 8.5 million 8.4 8.1 Berlitz relaxing Trig Bottom warrants mainframe Maria stopped Susan warranty tied Use Cubans convent Garth Seabrook criticized secure Club Dallas-based furrow Taxation remarkable tide takeovers advancing phony overheard remarkably characteristics promoters Cemetery tick Gibson compiled Theodore radio income-tax roaring Japan phone Westinghouse bothered asbestos undo barred enable frightened radar Partlow discernible attitudes specialized explode Lieutenant IFAR specializes year-ago loudly carriage Stein Power literature chose angered middle-aged barren injured formal hiding Arias Brazil Waertsilae Rothschild equity-purchase Following 200,000 Conasupo barrel highest convert insiders descending Philippine March affair receptor Television beginnings choking invite Lodge Nashua definition Machine Yamaichi Mexican Gansevoort pipes Jews myths municipal started hesitation lawn Nelson Prices budding Mitsukoshi supports accounting explained contemplate Dodd Utilities Two 600 principal laws sealed slow Contra Aviation violating 6.8 Nothing choke Chuck 6.9 Jean converting Parker withstand stringent requested colleges bond-equivalent review maneuvers Gamble peak Argiento Wilbur limbo Chestman sufficiently Violetta investigating unveil evening logistics checking targets clouds allies Scientific limbs perjury gains lazy peas Anheuser anti-abortionists award abroad aware Amira Fernandez comfortable Nikkei comfortably would future consisted approximately soared Stearns critics stress Wathen bedroom Source 11.7 differently 11.8 Dogs doing polished slug 11.5 bonus 11.4 Finding dread disk-drive straight Resources taxation slacks clothing Treasury intentions dealing adapt financially sister 6.2 6.3 6.1 stationed 6.6 6.7 knocked 6.4 6.5 defendant disciplined Oliver uniform makes maker swung stimulate Insurance Does meeting aiming dripped aborigine street rights Giorgio vested blaming rested Dole ticket pleasant Backer limit helicopter sentencing Hoelzer Dearborn flew yelled Sharpshooter fled Monica Ekstrohm Pfizer rumored attorney VAX O'Banion diplomats breeze punishment interval eleven flared capitalists wound Montero chicken principle massage solve anytime flights FUNDS wakeful banner parlor immune absolutely pages Octel mourning appearing banned lard telling German cease-fire revisions prowess last Bonds atop sometimes respects carpet resembles Marsh Pierce regularly Russian participation phrase lash investigation 6,000 mandated Bakker flaw Grosse flat unchanged Pitney Jeff Jeep flag late tub attendants eastern citizens Klein lawyer brakes Sunday Marty colorful copper farmhouse participating 57-year-old Fifth Cities inability extent seemed bargaining Leipzig sexual bondholders Shopping extend violation fabrication buoyed 650 nigger human two absorb Carlos interviewed resembled summary Freind Stockholm chatter Stock urgency Where Holden baseball humor McKinney Philip homeland option urges books Aeroflot shied trend Eurocom Superfund Mass. Adm. windows devaluation When investigate urged lobbying Canada forestall floor leading sponsors undertaking recommendations scuttled shaving try assumed shrewd rebels sensational Atlanta-based Canaan Wilmington assumes data Medicaid calmly Posner date Warner-Lambert arms-control entrance witness The hired earthquake-related Thi widow 1960s older hires Wisman confinement intersection League over-all Information replace expense dash showroom inventory Goodman laid Tim Kohlberg respect hurdles instructions attend lobbyist Vogelstein destined Arthur attacked happily dark beeper swallow Milpitas gripping dare collapse Beauclerk four-year-old alternative listings architect unpleasant reader Prospect Chung toe co-chief spree rocky land turtle observations Merchants pedestrian toy Technologies undefined ton rocks too top Adds lenses Macneff illusion agricultural Mason needed months flour Lung lamp slew blankets shift sergeant investing sinister engineered tie Grigorss saloon strewn shine tin Lloyd maintaining tip UPS championship filled center chancellor slim vacant patrols damp lugged slid vehicles toothpaste armed insurer Too Coca-Cola Top Tom alert awkward rewards damn Declaration Toy disagree concrete booth flows adjuster record insured promptly trees reserve boost buddies unfairly adjusted boasts ratings Shafer 10.5 budget 10.6 might 10.3 10.4 10.1 10.2 Olivetti 10.8 UV-B reviewed dwelling Austin US$ presumably 30-share campaign Luis boots diplomacy spray Snow speaker slip USX endowed awake slit 7\/16 darling Bill USA Aluminum spirit soybean USI Cadillac ten Try meanwhile pioneer five-cent What rounds haunted tea impact Kent dedicated candles civilians Mobile Founding closed-end shirt Walnut Lilly antiseptic 7\/32 Metall Deputy lack labs default await hunting subjective monetary treat Suppose draped Kemp prompted mornings Florio order Innopac recoup appellate Holding Hollander ships slot lagged Aristotle backgrounds the flamboyant grounded ending Gerry bronze classroom Runkel scratched helplessly blonde fortunes administrator cluster lady inhabited Andersson plastic institutional Volkswagen incurred U.K. answered pleading celebrity deputy ribbon Ala. generation B.V. asset troubled told Utility Plymouth toll authorities troubles wherever Buffalo dynamic promoter tomb truce moral horns truck Quick renamed piers promoted grew smiled Norman whack ignore muster tone injunction illegal suffer smiles taking bureaus hard-disk licensing expertise short-lived legend library advice resources fancy Bang-Jensen exception tool took self-conscious infected first-quarter policies marrying Blue Reynolds hesitated internationally priority tony plaster stating motion tons streamlining tensions involves U.N. tops station leisure narrowing criticism overalls Dorfman massacre mistress Russell involved polyps Ratners refunds treasury Democratic grab connect horse UBS-Phillips Goldsmith Carolina hacker disturb Nuovo knelt Alar Alan peasant dismayed cellar disruptions Simmons Nogol gray torn amusement shelters tore peace nursing lower Shareholders liability distributions Fleischmann village wholesale bones preamble tanned BRIEFS bonds health astonishing Wild Marlin Worldwide Will doubtful branch incompetence upon turmoil scattered uncovered Economists disclosing trivial Lufthansa Village MeraBank express decision brandy 10,000 425,000 brands destroyed Interest eventual endless painter Rainbow Picop boosting toes suggestions kronor 300-day clears freed Empire shortages swiftly truly Herman Christ Akzo Schwartz entered timetable shave sisters exceeds petrochemicals aimless writes writer penalty younger darkness motion-picture characterized painted clothes hand-held philosophy Odeon finger trunk diminishing Cobb involving surveys elevated greeted Citizens manipulate Coal disease grip enduring grin grim recital sight airwaves grid develop upside poker generating paradise regrets tears poked looked Conrad naked swinging succession writings maintain flow coated exactly Appropriations designers movements signs Laura nowhere laugh MGM\/UA part-time reasoned pricings Taipei mergers teams system innocence documentary deadline buddy day-to-day lies earns armor advise Coda Finnish intensify Code Control Foreign lackluster life significant graduate truth worked worker Alma Quist Murray Cody trust guerrilla Garden Mahfouz 4.25 works Quite reliance lied Fidelity subsidies Would artificially historian Bronner fabled world Bradstreet Quint Col. Sergeant Stephen become 4.75 Golden 13,000 Goupil necessarily Reflecting Buckley drawings decades Brussels considering Barclays demand exclusively indexes Coke Also tourism battled Penny tourist Daewoo Quina Hyde Furthermore Maxwell Giffen battles early discretionary ailing softly attempt fleets spared indirect performance tapped successive mercy Rate monitored delivered nervously Cable Erich bending vacated personally seven high-risk disdain artistic cable-TV Soviets birth Savings Bankruptcy imply After sadly reform carbon performing Conn industrialized grove Sept. topic aborigines like relieve U.S. Hitler grown unexpectedly Rosen Cook travelers outside reminder Fernando link constantly grows line Edythe Apogee 4.92 words Cold reminded Cole citing maintains glowed limp flip write-offs applying dissident donations Alex inventories signaling Come CORP jumped Alec Keep tour horror afterwards Rank plight pungent honestly Rand habits anchor delaying function contributing Corr Corp budge Merck outperformed yearly Ohio expenditures Pioneer soften dwarf lowering softer dogged lift town Pinnacle gross desperation parked Spencer Yield amassed noisy Geely drilling chimney healed Eyes students sixteen Upham indignant desperately grievance fools York-based teach noise richer Kean toys group Cos. freedom featured University racked located ingenious contribution features Commodore intact Victoria moving cleaned companies SOYBEANS two-tier fighters cities cleaner Transport bankruptcy explain acquisitions microprocessor Details ocean handling plucked naive Twenty lasts debris programming Accepted Planning cookies warnings materially minicomputer Duke shortage keyboard Allstates announcement compliment postponed Baird blocks talked wilderness hedging elderly mushrooms warrant Contras stupid impossible Duff turnover Beyond hosts deceased paying Vienna tenants longtime subdued agent refugees bastard tooth recalls Glenn coarse Equitec carrying arguing catching Resolution consolidate D.T. Aside protesters dimension Edwin Malcolm doubtless concert scorn stations Movieline collar concern marines score persist bizarre stealing birds council sexy curtailed Perlman weekend selections cradle inhibit sexes worth branches unavailable ecological Studies wagons sculpture Asian Texans semiconductors launching Virgin Blumenfeld sworn Hoffman pumped spectacular clippings merge Common capitalistic hammer mired apparent allowing CNBC unpredictable cooking Earthquake scout bombs Their Sloan LYNCH kindly 39,000 Polish supporters qualified Cypress replacement cause testament Fitzgerald industrywide Devices permit Vickers beloved shipping Music sets chattering faults undemocratic mentioning favorites academy describing mother Corp. conventional half-breed Milton Market release overcapacity William mining parity concept Pearson scope becomes suffered real mutually considerations Southwestern read apples colored insider-trading Orange rehabilitation abstract Rights swelling worst coach rear reap Benjamin merit worse away Scowcroft sprang sophistication remained Corps worry heavens cleanup Vietnamese These Corry receiver Seventeen received playwright ACCOUNT Fighting France admission receives Fruit Messrs. happen white-collar piece granting disturbance differed shattered Annualized There Components Isaac Wis. centerpiece Posted fellow Imperial pesticides invitations common offensive daughter desks Ciba-Geigy worlds estimate resulting Circus Summers whenever With direct impersonal arriving Okla. absence later hampered vegetables aftermath Franco falls decrease caffeine-free questionable abrupt drought commit hovered instance Wine hitting TRUST household associates willing traffickers charming Rankin associated Ehrlich Weekes Selkirk Michigan Video clutched crossing humble Thornburg memorable activists circles Vesole complete companion clutch Specter tractor Shortly outstanding watchers endlessly ominous rein circled expanding recovery benches outdoor grow service Melloan claim swore ledger selfish wrists venerable corrupt conceal colonial false weather rubbing Bloc prevent Hudson ceremony applause superpower soldier bicycles criticize Latin Policy nails language Carpenter unconsolidated long-term dreamed Rates separated Along probe Ventures Rated agreeing rent knees contracts Lawrence Police Please high-pitched Advancing concede rely ankle fella Alfred Hungary Broad distinctions directory Earlier summit directors Diana spontaneous filings renew transformed Majority tools Postal halfway Diane ACCEPTANCES complicate Dunn class northern winning urgently ambassador Later Phil unravel Venezuela rest machinists clash scratching C.J. Stanford Albany outweigh baked coast Brody high-technology triple coalition Grenfell Christie Hancock tortured gesture coats Genetic Highlands a.m T-bills skipped Stevenson Nashville entry renewing tentatively Consequently crumbling desktop resale creates smoked Rapid Cincinnati ironic subway compared Mercedes-Benz created sympathy salary Kurzweil compares Staff nickname immigrants Legal respectively overcast SciMed developing-country Bristol-Myers borrowers Deltec bit foil sloppy Wheeler urge nephew Gilborn sick Boies bin big muzzle counterparts drove installed 12-year interested 2\/32 concerned side reassured Cooper bastards 4.875 Alley keys graduates burning Shannon invest picks mortality Allen strongly precise melancholy Laband Polaroid deregulation visible Wally hinted Hungarian Florida Utsumi Drew planet graduated Side perspective Quayle planes Stacy Perrin Burmah Visa colors crack Wildlife foes utter bleached destroying sign gotten Jane serving sigh obtained salami Kodyke measure near-term exercise annuity balls invent statements built-in packing Average nation-state facilities Macklin double-digit recognizable Tenn. taller undermined starvation Jan. forge saloons Allan nuclear motives patience tenure Stocks box youthful bow boy Aaron refined vibrant Jake overhead awesome desperate bookings nullify raider Rebel aided 1,000 diagnostic Having ban final bag career Herbert hopes Cambodian bad Dominion Nature aides prone mistakenly Jastrow bay siege hoped colony Pemex bat Lauderdale bar foam Plan Manic unbroken tropical proof holidays cartoons Toronto-based normally gossip supported dimensions butt hiring denies kept enthusiasm 156.7 beautiful exceed denied exclude brings scuttle complied fantastic dioxide force fishing closely finds slopes tougher indefinite Within Pendleton difficulty Denny neighbor Jackson Manuel disturbing buzz exact House required beg bed fines incomes enter Wales maternal requires depressed roller-coaster notorious fined on-site bet peeled Greenberg enchanted prose husbands Football surely Realist meaningful Educational quick 40.1 Chicago Fargo roller contracted prosecutions vacuum bid revenue denial businessmen Shevardnadze added rolled embarrassed propelled condemned Jamaica Carroll four-year buys Education cracks objectives competitive proud consistent energy Spelman R.J. Funding Sens. snapped yourselves interruption tumbled impeccable integrate prove heads Heavy Computer Procter bunk quiet Mamma registering Charles temple goin colonel Donaldson Toubro smoothly Class Todman crane Vincent Shapiro complex priests Sherwin financiers R.H. plants sought bump modernize 62.5 Clara businessman Metal moons proxy Clark Airlines golf gold OFFERED site unfortunately deter R.I. bull bulk indications Kleinwort sits bulb writers unload waiters bouncing bust busy good coaches metal vagina Drug Navy bush closest modeled incorrect irresistible leather crash Automotive contractor electric incompetent bury diplomatic gone humans narrowly refugee five-year leaders economic difference Bong syrup tremors Lybrand Bond Bonn burn coffin immediately car cat overbuilt tangible can cap Beatrice children Nate cab Ching advancers arose petition celebrating Imports homely China triggered naming Costa killings budgetary Completion pullback lured reference wrecked Century freight Trecker celebration Treaty pistols somewhat competition electronics underwriters craft Mixte predictable imperial Municipal mechanism Strange Peltz Child baskets Chile insane Jazz bugs Jason perilous enrollment thereafter quivering disclose obstacles Born Carolinas Bork Avenue heights vodka planning Arabia Book annualized reeled London-based outline Fathers buds Auvil non-profit smoothed Quantum eaten shouted opera silk prelude Lyford mail-order romantic Jayark Comair friendly vaults Kentucky bug improving Drexel but Charlie bus buy introduce Duclos raising existential used resident longer gown admired Lipton situations sins connection tongue stronger longed narrowed sink Skyros picture stabilizing nutrition stories sing stretch hourly relatives exposure Bible appalled connecting quirt auctioned movies boredom calling ruining Gavin Chien tones Chief narrower Both funding beginning demanding Sinyard excitedly foremost oxen opens inheritance quite Energy uses kidney user fledgling fragrance courtroom intensity entertain failing panting Washington-based departed government Louisiana exporters Lolotte promised mood causal supplying pragmatic sagging projects blowing independently aim explicit promises Reserves retain air embraced Threlkeld retail mold raise exclusive marched exercises Morris aid embraces Hutton zing rewarding attempted repeating oddly Compaq left sheep sheer painting sheet shutdown exercised intensive Tesoro prescribed shah dapper chocolate Reno cocoa Rep. Newman legs casino ago discrepancies tightly illuminated Satellite dwell rails tactical disturbed chilly Lynn Alabama 50.3 exploring spinning Hurricane choosing any dubbed cost-of-living Figures Presidents seeing bundled willful strictly public-relations lent lens samples and Besides Wachter Fiscal diversification phase Institute lend Nomura sensation existing integration generally nicely prints appeared Nekoosa all quaint houses studios yields speed Brokerage Orthodox shed reckon topics housed racial declaring margins workout Reed Montpelier gallons legislature cured hurdle activities hospitable regime Lyondell move Deseret proponents Frankfurt Temple prostitution ruble committee committed spreading bites reputable month oversight Dreyfus Corporate Canelo region Others reportedly dominated emancipation most Shelley workplace utmost commuters patients Troubled quarters southwest widened curbs CPAs Kan. assurances Sydney entitle drying Times crawl prevailed illustrate aggravated violin additional ambiguities bitch sometime earth scholar Kane accountability studies Ready caused more relaxed age crimes value Tony affidavit spell lover loves scream attributable loophole Facilities chloride backlash Cray ceramics Gulf Lionel Robinson expressions studied approvals matching representing unexplained dominates thoughtful causes levy Touche moon Convenience ethics Gargan add masseur Napoleon playing resentment materialized achieved expelled crazy panels Schwarz Asked Purdew spent ads lest less double-A those dependents dispose loved ace customers devil mahogany spend felony tighter meadow tighten Grace suspected act lets cosmetic billings Christies normalcy Lauren polyethylene Laurel Rorer elevator lingerie veteran Obviously suburban redcoats upgrading buggy rushed Lambert toad strips owns choice robbed reasons Seeing personal racing blamed Goldman axe ability bipartisan Katz vocal RATE Jack induce blames settlement Gruberova reassurance Acala seconds string stripped Freud keen Kate frighten Russia Harbors brokers keep afford Seoul proliferation Kerry Prof. bloated outright Christian General anti-abortion Bennett Deacon Presidency dessert leery establishments finish Real homeless Town Stark militia Read Azoff 17,000 impeachment faintly Managua Byron Lawson forthcoming Seward shut Midler StatesWest four first-half confession defense sincere bankruptcy-law accord Rebs leftist tankers Byrne forty protects insistence Cambodia State restrained mighty praise increasingly grades momentary forth countryside shell Thanksgiving Trading relax Indonesia Publishing restraints dealer circular are billion-dollar Somehow initiated Failure shelf arm occasions fork form eased exclusion Waiting art Assistant revamping sturdy fort surged Randolph Brooks disproportionate ask Luzon ship 1-2-3 personal-injury stranger mode typical sections outrage money fore Fremont acquire centered mock apt Hotel insurers Mickey owes point doomed bank-backed devise shaken exceptionally owed luxury-car outsiders shop supervisors foot gyrations show three-year shot fool dismal aggressiveness shoe except Kremlin Leading sunlight food left-hand Gladdy Hohlbein Palmer favors philosophical lousy informing testimony excess ass fixed-price racketeering fond actuality Ethiopia fresh ate forms Marriott Connaught folk Ortiz Yields Boise fold Western Nicolas enforcers Cruz realization shortcomings negative occur bureaucrats That Tampa refining angrily Short lukewarm ingredients Stevens dripping movement bought borders B'dikkat Among LBOs essential texture deadly Safeco Intelligence paradox touch codes psyllium attacks array justify Jenrette Shops fantasy Jenkins epicenter tragic demanded classes AIDS hazard Delhi prospects tasted Communications bivouac refinance tastes Pete appalling designing moves precedent stemming consumer Acquisition consumed kicked Fireman George Someone taboo Inspector execute Fried Monmouth pickup watch beverages yesterday canvas fanfare Comex sluggish rattle rays frenzy tumbling often linking tough constitutional ideological hepatitis cumulative sweater justice Pinkerton through frozen Hyundai Peru classic population testified bubbles layer Merieux equal destiny Fairfield Della moved relations peers fixed-rate dense 1\/4 1\/8 Barrett workings novelist honey Madden permitted rank social rang recently empty reset rand 1\/2 nations Nikko accelerate differentials Register apprehension Republic assortment hoarse burglary bounced AZT Mahler McFeeley antique waiver retired Penn Euro distance rolling awaiting riding fiction rape note Quebecor water vintage faith movie incapable Maggie Nugget unknown Claudio sympathies nose patch Packwood apply disappears Newton newest furniture where chemicals correspondent indicted postpone rare announcing proceed wonder none litigation Pedersen Eduard administered patents nonperforming Gardner shipments detectives countless humiliation clambered arrangement Apart Shield Randy Fisher apple restore speculated turbines investment-banking expansion noon Delta Pulley subjected circle northeast unfair guided rate paths November Tobacco Colonel Competition premature economically Commercial fourth-quarter slowing entertainment balanced rash identification spread 16,000 technique faint leasing limited Boveri scar Gratt temperature basically yeah Capone year chaos selling Safety Richardson observes Seagate observed furor travels unspecified dangers attic bureaucracy plaintiffs fails HyperCard chase exclaimed slower substance viability Bobby chickens blindly slowed emergencies sentimental picket franchise mound Flying borough teens charm ABC ABB sticky picked hikers controllers mount transplants Vancouver sticks towering gardening chart newspapers garden ABM begging escaped Tandy adopted Monday Thor Thom ordinance ranch Therefore successes mouth Adams forest tactics stared binge subsidiary engagement regulate quarter advent valid Interior currencies mouse socks addicts Includes overlook whispered Peck granite Refcorp Rev. engineer Paxus Peat Southam fragments Northrop clarity performances surface articulate revolution vigorous towards guys elsewhere mill revision significance ringing accepted 190.58-point know-how milk mile mild alleviate Perry tissues sideline Joseph Students teeth Rural Antar protesting bubble collectors soldiers probable jungle conclusion massages Odds Management range B-2 Grand plead This escape foolish mink attitude Criminal Grant genuine starting probably mine mind billions engaging authorized slowly embarrassment divestiture mildly rests mint Linden confidence Science process chair really jitters chain successfully Francisco Gramm indifference jittery Queen goodwill offshore Coniston obstacle AMR courage AFL-CIO ghastly accelerated scripts tribunal AND ANC Southeast Sells charcoal contradiction Laboratories coward commented ranks Gonzalez faltered yell crimson They presentation thick Hampshire afflicted Then Amoco apartments Island opponent quota rattled Caterpillar Ferdinand quote suitcase volunteers terrifying inflation-adjusted goals beside County enlarge dropping shoulder costume thief maneuver miss assisting mist total photograph fret vetoed shipment privileges pesetas free search Stanley Walitzee Mack discharge repaired discrimination comeback whispering basement unnecessary parent Capital Savaiko Macy Alicia Made editor Third scenario Mirage instrumental adventures seating privileged burgeoning divorced computer Vegas poised Isabella thigh Quinlan discarded disguised locations blasted refund converter statesmen convincing desires Goldberg monopoly sand sang Nguyen Marlowe anxiety converted reminiscent desired sank cautiously highs insufficient 100-share altered possession Segundo fray Morse publishers constructed curiously same completion sleeves Italy profited pause suspicion affairs half-dozen Darman dealerships claims think winding Johns handicap sale similarity merits Altman flies thing salt Menlo mumbled sake intangible Nazi lawmakers unprecedented longstanding Main monitors Horse Chiefs questioning Superior Watson Mail overruns sides two-year completing restoration objection happening proposes reservations proposed technicians redemption cavalry Sachs tanker evasion curb Chemical relieved cure delinquent says tumultuous Customs mayoral forgetting hears Calenda heart measured third discount anti-drug Bicycle measures abandon Oct. glossy Housing unexpected Hardly heard buck Machines unconstitutional dollar cuts Reproductive Pennzoil Philadelphia consecutive hoofs socially machines chemists Boeing differ Shaw proposal healthy Letter negligence miners personal-computer save integrity illustration NCAA chromosome pitching refuge barriers mice buffer buffet Marous developing certainly objective Thus toppled heavy operate Western-style Thelma Think proteins Boyd stumbling Hebrew Shea Boys from anthrax longer-term durable hurried prestige Protestants Honduras alligator supportive prevail Metromedia dwellings between Gallery commanded twists disclosures governors important conversations intent ambition departing commander hidden Langford merging themselves intend found shippers rage floating-rate assure phenomenon unlocked Matt dying preparing shortfall Tire multinational honor undermine Hawkins conditioner astronomy Combustion Mass 5.25 complain split face wheel Nearly prohibit surrounding gunmen survive motor Monsieur possess drowned zero-coupon cult Washington factor snack Renault Docherty Ship Egypt billing exaggerated fact subsided prompt 100,000 minor rake Vila served Interstate Sports platoon Craven alley dissolved remodeling Airbus slavery Semel cellular Connie inherent certainty dispute billion poison lavender steelmakers medium-term vicious commercials Arkansas killing devoted raid Containers Doyle onerous tube prosecutor classified supervising bucking compulsion over-the-counter exotic knight facility emotions rail Heinz rain disposition Gordon consent powerhouse cups Freeman Franklin muscular misconduct waters Suisse supporting touching drops serves specifically skills waste chunk marble Lawmakers LATE whiskey 19th sober supervision disorders Ever uneasy fail directories Even youngsters prevention NCNB shuddered satire preventing housing hideous Show minister Conner table Shop create fair Roper titanium experimentation Series Pharmaceuticals snail cried earthquakes Make position Mann qualifications pressed encouraged settlements Aoun Many Intermediate cargo Manu diseases Switzerland character minds daytime Time dates presses long-distance fake aging Southern policeman cowboy briskly delays Conn. acknowledges Owners Vice saint suspended Brands secretary cares snake industrial article acknowledged fall strapped Styka Burke diplomat Mama Litvack preclude 5.75 separating rack race Retirement cared fame internally prosecuted undeveloped positive Initial cards mines Fritzie Capitol discover dated tune A-Z Serial clerk conditional encourages fighting Sioux efficient overboard 5.94 intention allow Mary Marx fans Mars recent View Mark officer offices Producers readings Bobbie Marc perfect lists wheat photographic Ocean separation moderate Payne woods Bunker nonetheless continue industries assume Burns buckled portray Remics participants joined Neal chewed spacecraft Memories Union neighbors Jerusalem Midwest smooth realities Cutler affirmative Work Piepsam callers Somebody diabetics scenes recognize lived ensure member scholars waves court-appointed low-sulfur nerve Sterling Houston-based standards register compensation utility Neb. waved introduced Colombian Castro formulated dialogue firms Larry fate kiss founded terminal diversion Bros. invasion overall devote deteriorated Hammack trains founder Very yearning Seita convicted detached cream weakness rally rising disorder accustomed names fast Joint insurance named 400,000 Bronx slashing evidence implies S&Ls fare volumes afloat pro-democracy fast-growing farm Baltimore creek buzzing implied Pittsburgh trails Enforcement BellSouth winners anniversary constant lessons indictments worthwhile Christmas thousand obliged sparked RATES caring scented presentations politely Sadie aggregates stroke convey Wilmer Trust shirts provoked Worse consists Wolf mentions carry holes thwarted entering dispel distribution Every unofficial creep Price Worth Gelbart uncanny huddled flopped 19.95 holds apron pardon getting ministry aspects England clear carts accomplishments clean guiding 26-week Holiday John-and-Linda waiter reactionary diversity unfavorable waited distinctly Lipper stroll Andy Neil closing stated Cuba Rootbeer fired Although gunfire fires Carson schools family anticipation copying loyal argument asking minus consist paved Yorker besieged Wood depth condemn discourage strong aircraft Trustcorp engulfed lives liver invade encouragement startled page-one feeding writing McDonnell Ptolemaic Brown Ivory ferroelectric six-month seal Administration automatically 40,000 Freddie Appeals Southmark Toshiba Sidley Comptroller Hollywood notwithstanding rendering Maidenform Fresenius motel anticipating punishable convenient generations licked Terry responsive BPCA blueprint distributing forecasts hearts complaining inevitable uncertainties less-developed lungs manage hung seas seat bomber hunt tarnished Murphy along commission alone bread-and-butter reviewing Brokers static Signal waiting short-term Anne unnamed U.S.A. sizable tangle inevitably inward Beach Maine examples fertilizers territory Association strode states captain consortium lengthy license Dassault International crept Willis holder recapitalization Trump plaintiff seed feathers seen seem material fitting seek Prime continuity Governor 66.7 Decker cousins actress harmful turbine Prior News meantime frontier trucks unbearable curbing sees comply lunch arrangements select Shanghai explanation Terms planets world-wide twirling Fortunately crest lifting grenades expectation -LCB- suspects troop Harbor Asarco federation marking nationalism fabric opium thrust regular percentage camera maturities WHEN regional Nev. Rockwell person reducing deficit 50-50 Gaubert detailing Carter calculated Wachovia existence ever-present Institut pledged tree Pepsi casting aspirations musician heels low-cost Things Maier crews Bernstein flushed Planned curtail inappropriate forefront curtain huge specter Ryder logical Nadir Dozen funeral Arabs trembled overtures countrymen improvements Coors mailing anarchy Seng chartered recommended self mortgages impulses fairly switches exceptions sell capacity stranded aloud prospective uncertain switched cases Ralph bogus resuming periodic Specialized Edward Next Feeling freeing prison nickel calculates glowing 1.875 allowed one-fourth casserole send Tiger ghosts Unice drawer Anta beaches sent timbers painters line-item Rally Sen. Roman utilities Curt penetration Business status 3\/32 plunge Negotiable trap seized biography disappointed junior sullen statue season tray Today proprietorship wearily Prize stiffened passionate inflict penetrating Balzac Inside devoid safer temperatures troubling Lowell detect advisers merchant merger metaphor inquiries gaining cigarettes aching Petrochemical first merged controlling retreating revelation heated adopting savings-and-loan parcel invented heater brow tremor Thatcher achieving Norwegian Bradford stress-related entertaining Patrick sympathize Nabisco Silver hospital introduction Central seated laundering guns leave Arafat disastrous River relationships ministries spirits adoption wearing Cowboys Commission retailers sounded starts lagging exists Blatz successful maintained Hawthorne guts Coffee successor housewives fiscal However least closings Strong Alto revealed spite disposing Henderson Mountains distressing committing conduct pasture unlike legendary Ramey realty cheated seldom consequence forced depths financial imprisoned bishop reward outlook unfamiliar learn Quest forces posting lease Shaefer Finnair mobile remember compounded trusted airplanes inferior correction 19.6 Gregory 19.7 gubernatorial trustee bargains lounge trip trim refusing treacherous Telesis eroded ounce upward Anheuser-Busch Mosbacher emotional bottoms Seth sovereign Addison employment automobile determine depressing Before lire Since heritage Parsow espionage futures spiritual repay confirmation 13.50 convinced monthly reality depression intensely pressing Blair Great biting simplicity thinking rebounded lips financier commercially revealing reporting sellers Twelve development politically Blake Morrison streamline spire department-store semiannual internal realism ideas lion partisan schemes blooming distorted Amen subsequent ideal developments harshly true Amex Antarctica players Ludie detective realize Ortega fraud military directions middle-class poems earliest 190-point imbalances Taiwanese Traders Futures homer homes credit grounds Kevin live fleeting amortization spill balloon Dayton liquid huts Greek Green apologized adjusting potatoes improve Broderick throwing Phillips Blinder continuing mineral 20-year suspect underwriting customary Edelman Circuit envelopes Motor list p.m. section hurt Donuts Camden slump Medicine Stadium corners earmarked villages Underwriters ragged 1970 1971 financing nine-month 1972 Krasnoyarsk subsidize 1973 1974 1975 brutality 1976 1977 1978 occurring 1979 signature stiffly compost 1990 originated 7,000 1982 1983 1980 1981 1986 1987 metric 1984 1985 independence virulence 1988 1989 shade chewing Hanford trends silent frank Major 550,000 Deukmejian trendy Works 1995 1996 1997 leads ambitions 1998 1991 1992 equation shady Broker 1993 1994 Kodak reply rallies earned franc World 1999 extremely reverse territorial judges employ shaft Discovision Karipo judged Mount pillows bran Puerto asleep unprofitable kick portable unconcerned somewhere payout student ordering connections UNESCO Alice however Falls rallied maintenance respectability kids physically frame 2-for-1 bucks widely Several Simms aftershock enormously repel cracking inquired clumsy liquor foreign-exchange existent Rice Rick Rich perception catch breakup widens Amid Rica incomplete brooding commissions Garcia hoping cross-border NATO Department conflicts Hunter bred inched responded wonders bikers NASA inches Simon success Zion tariffs Linear poultry Harrison imposing shake audiences Meridian brew Knight Leigh-Pemberton shaky Rico 1900 topping bargain Dresdner 1906 shall ambitious 1908 fence Steven creditors greatness frail reaction shame hesitate collaboration Ohbayashi reviving hospitality Parliament launch encountered tumors momentarily king quarreling kind version disputes Exchange command disputed labeled 1920 Bros figured brim jealousy Large cater reacting 1927 gloves figures research shouting Beverly Executives 1935 1939 Jefferson clearing kill fists 1930 glared Valdez woman hazardous per-share 1947 1946 1949 researchers leaks outperform languishing tripled criticisms shape 1943 1942 Stevie Flannagan Officials fingerprints headline 1959 1958 1957 direction lawsuits 1953 undertake presumed 1952 1951 Chinese 1950 miniature share knowledgeable elbows printers Casualty stresses skinny Negroes directing environmentally 1967 sharp 1966 1969 1963 1962 1965 flapping stressed inventor women 1961 1960 Czechoslovakia hedge massive popping decisive districts fiduciary claimed apache-opennlp-1.9.4-src/opennlp-tools/lang/fr/tokenizer/fr-detokenizer.xml0100664 0001750 0001750 00000011637 14135770370 027321 0ustar00jeffjeff0000000 0000000 " ' . ? ! , ; : ( ) } { ] [ `` '' % L' l' D' d' S' s' N' n' C' c' m' J' j' T' t' Z' z' Qu' qu' Ma' ma' Jusqu' jusqu' AUJOURD' Aujourd' aujourd' Lorsqu' lorsqu' Puisqu' puisqu' Presqu' presqu' Prud' prud' Quelqu' quelqu' Quoiqu' quoiqu' dizaï' Optim' Demak' Automobil' s ex- # apache-opennlp-1.9.4-src/opennlp-tools/lang/ga/tokenizer/ga-detokenizer.xml0100664 0001750 0001750 00000005371 14135770370 027257 0ustar00jeffjeff0000000 0000000 " ' . ? ! , ; : ( ) } { ] [ » « `` '' % .org .com .net # - m' d' b' mb' dh' lem' apache-opennlp-1.9.4-src/opennlp-tools/lang/ga/sentdetect/abb.xml0100664 0001750 0001750 00000005130 14135770370 025214 0ustar00jeffjeff0000000 0000000 tel. Mr. Mrs. .i. Uacht. m.sh. lch. lgh. Dr. uimh. Co. gCo. tUacht. Uas. tUas. Msc. Ms. Sr. Jr. Bros. fig. Jan. Feb. Mar. Apr. Jun. Jul. Aug. Sep. Sept. Oct. Nov. Dec. Ean. Fea. Már. Aib. Bea. Mei. Iúl. Lún. M.Fr. D.Fr. Sam. Nol. Ltd. Teo. apache-opennlp-1.9.4-src/opennlp-tools/lang/general/tokenizer/special_char_dict.xml0100664 0001750 0001750 00000004442 14135770370 031013 0ustar00jeffjeff0000000 0000000 » « " ' . ? ! , ; : ( ) } { ] [ `` '' % # apache-opennlp-1.9.4-src/opennlp-tools/lang/pt/tokenizer/pt-detokenizer.xml0100664 0001750 0001750 00000004551 14135770370 027346 0ustar00jeffjeff0000000 0000000 " ' . ? ! , ; : ( ) } { ] [ » « `` '' % .org .com .net # - apache-opennlp-1.9.4-src/opennlp-tools/lang/es/parser/es-head-rules0100664 0001750 0001750 00000002722 14135770370 025505 0ustar00jeffjeff0000000 0000000 13 SENTENCE 0 PREP SP[CS].* CS.* GRUP\\.VERB S SA COORD CONJ GRUP\\.NOM SN S 12 S 0 PREP SP[CS].* COORD CONJ CS.* GRUP\\.VERB S SA GRUP\\.NOM SN 22 SA 0 NC.*P.* GRUP\\.NOM \\$ NC.*S.* SADV GRUP\\.ADV AQA.* AQC.* V[MAS]P.* V[MAS]G.* SA S\\.A GRUP\\.A AQS.* SN GRUP\\.NOM D.* S RG RN 21 S.A 0 NC.*P.* GRUP\\.NOM \\$ NC.*S.* SADV GRUP\\.ADV AQA.* AQC.* V[MAS]P.* V[MAS]G.* S\\.A GRUP\\.A AQS.* SN GRUP\\.NOM D.* S RG RN 20 SADV 1 S RG RN SADV GRUP\\.ADV SP[CS].* PREP Z.* AQA.* AQC.* S\\.A GRUP\\.A CONJ CS.* SN GRUP\\.NOM AQS.* NC.*S.* 8 SP 0 SP[CS].* PREP CS.* CONJ V[MAS]G.* V[MAS]P.* 20 GRUP.A 1 NC.*P.* GRUP\\.NOM \\$ NC.*S.* SADV GRUP\\.ADV AQA.* AQC.* V[MAS]P.* V[MAS]G.* GRUP\\.A AQS.* SN GRUP\\.NOM D.* S RG RN 18 GRUP.ADV 0 RG RN GRUP\\.ADV PREP SP.* Z.* AQA.* AQC.* GRUP\\.A S\\.A CS.* CONJ SN GRUP\\.NOM AQS.* NC.*S.* 23 GRUP.VERB 0 INFINITIU GERUNDI PARTICIPI PREP SP[CS].* V[MAS].*[IS].* V[MAS]P.* V.*C.* V[MAS]IP3S.* V.* V[MAS]G.* V[MAS]IP[12]S.* GRUP\\.VERB SA S\\.A GRUP\\.A NC.*S.* NC.*P.* GRUP\\.NOM SN S 5 INFINITIU 0 VMN.* V[MAS]N.* V.* 5 GERUNDI 0 VMG.* V[MAS]G.* V.* 5 PARTICIPI 0 VMP.* V[MAS]P.* V.* 6 MORFEMA.PRONOMINAL 0 P.* SN.* GRUP\\.NOM.* GRUP\\.VERB 7 MORFEMA.VERBAL 0 GRUP\\.VERB P.* SN.* GRUP\\.NOM.* S 9 COORD 1 CONJ CC.* RB RN SP[CS].* PREP CS 16 INC 0 S SN GRUP\\.NOM GRUP\\.VERB SADV GRUP.ADV SA S\\.A GRUP\\.A PREP SP[CS].* CONJ CS D.* 3 INTERJECCIO 0 I 3 NEG 0 RN 6 PREP 0 PREP SP[CS].* CONJ CS 7 RELATIU 0 P.* SN GRUP\\.NOM S GRUP\\.VERB 2 SPEC 0 2 X 1 apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/PerceptronSequenceTrainerParams.txt0100664 0001750 0001750 00000001556 14135770370 030701 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Sample machine learning properties file Algorithm=PERCEPTRON_SEQUENCE Iterations=300 Cutoff=0 apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/PerceptronTrainerParams.txt0100664 0001750 0001750 00000001545 14135770370 027206 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Sample machine learning properties file Algorithm=PERCEPTRON Iterations=300 Cutoff=0 apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/MaxentQNTrainerParams.txt0100664 0001750 0001750 00000003051 14135770370 026552 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Sample machine learning properties file Algorithm=MAXENT_QN Iterations=100 Cutoff=0 # Number of threads Threads=1 # Costs for L1- and L2-regularization. These parameters must be larger or # equal to zero. The higher they are, the more penalty will be imposed to # avoid overfitting. The parameters can be set as follows: # if L1Cost = 0 and L2Cost = 0, no regularization will be used, # if L1Cost > 0 and L2Cost = 0, L1 will be used, # if L1Cost = 0 and L2Cost > 0, L2 will be used, # if both paramters are set to be larger than 0, Elastic Net # (i.e. L1 and L2 combined) will be used. L1Cost=0.1 L2Cost=0.1 # Number of Hessian updates to store NumOfUpdates=15 # Maximum number of objective function's evaluations MaxFctEval=30000apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/NaiveBayesTrainerParams.txt0100664 0001750 0001750 00000001526 14135770370 027112 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Sample machine learning properties file Algorithm=NAIVEBAYES Cutoff=5 apache-opennlp-1.9.4-src/opennlp-tools/lang/ml/MaxentTrainerParams.txt0100664 0001750 0001750 00000001541 14135770370 026315 0ustar00jeffjeff0000000 0000000 # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Sample machine learning properties file Algorithm=MAXENT Iterations=100 Cutoff=5 apache-opennlp-1.9.4-src/opennlp-tools/lang/de/namefinder/fg-conll03-deu.xml0100664 0001750 0001750 00000002623 14135770370 027062 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/lang/de/namefinder/de-namefinder.xml0100664 0001750 0001750 00000002474 14135770370 027145 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-tools/pom.xml0100664 0001750 0001750 00000010223 14136044070 021600 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-tools bundle Apache OpenNLP Tools org.osgi org.osgi.core ${osgi.version} provided true org.osgi org.osgi.compendium ${osgi.version} provided true junit junit test commons-io commons-io ${commons.io.version} test org.mockito mockito-core ${mockito.version} test src/main/resources true org.apache.maven.plugins maven-jar-plugin true opennlp.tools.cmdline.CLI org.apache.opennlp.tools test-jar maven-javadoc-plugin opennlp.tools.cmdline create-javadoc-jar org.apache.felix maven-bundle-plugin true opennlp.tools.util.ext.OSGiExtensionLoader JavaSE-1.8 !opennlp.tools.cmdline.*, opennlp.tools.* * apache-opennlp-1.9.4-src/opennlp-tools/bin/opennlp.bat0100664 0001750 0001750 00000001722 14135770370 023212 0ustar00jeffjeff0000000 0000000 @ECHO OFF REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # REM # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. mvn -e -q exec:java "-Dexec.mainClass=opennlp.tools.cmdline.CLI" "-Dexec.args=%*" apache-opennlp-1.9.4-src/opennlp-tools/bin/opennlp0100775 0001750 0001750 00000001615 14135770370 022451 0ustar00jeffjeff0000000 0000000 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. mvn -e -q exec:java "-Dexec.mainClass=opennlp.tools.cmdline.CLI" "-Dexec.args=$*" apache-opennlp-1.9.4-src/opennlp-docs/src/main/resources/xsl/html.xsl0100664 0001750 0001750 00000002213 14135770370 026112 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/parser.xml0100664 0001750 0001750 00000036644 14135770370 024161 0ustar00jeffjeff0000000 0000000 Parser

Parsing A parser returns a parse tree from a sentence according to a phrase structure grammar. A parse tree specifies the internal structure of a sentence. For example, the following image represents a parse tree for the sentence 'The cellphone was broken in two days': A parse tree can be used to determine the role of subtrees or constituents in the sentence. For example, it is possible to know that 'The cellphone' is the subject of the sentence and the verb (action) is 'was broken.'
Parser Tool The easiest way to try out the Parser is the command line tool. The tool is only intended for demonstration and testing. Download the English chunking parser model from the our website and start the Parse Tool with the following command. Loading the big parser model can take several seconds, be patient. Copy this sample sentence to the console. The parser should now print the following to the console. With the following command the input can be read from a file and be written to an output file. article-parsed.txt.]]> The article-tokenized.txt file must contain one sentence per line which is tokenized with the English tokenizer model from our website. See the Tokenizer documentation for further details.
Parsing API The Parser can be easily integrated into an application via its API. To instantiate a Parser the parser model must be loaded first. Unlike the other components to instantiate the Parser a factory method should be used instead of creating the Parser via the new operator. The parser model is either trained for the chunking parser or the tree insert parser the parser implementation must be chosen correctly. The factory method will read a type parameter from the model and create an instance of the corresponding parser implementation. Right now the tree insert parser is still experimental and there is no pre-trained model for it. The parser expect a whitespace tokenized sentence. A utility method from the command line tool can parse the sentence String. The following code shows how the parser can be called. The topParses array only contains one parse because the number of parses is set to 1. The Parse object contains the parse tree. To display the parse tree call the show method. It either prints the parse to the console or into a provided StringBuffer. Similar to Exception.printStackTrace. TODO: Extend this section with more information about the Parse object.
Parser Training The OpenNLP offers two different parser implementations, the chunking parser and the treeinsert parser. The later one is still experimental and not recommended for production use. (TODO: Add a section which explains the two different approaches) The training can either be done with the command line tool or the training API. In the first case the training data must be available in the OpenNLP format. Which is the Penn Treebank format, but with the limitation of a sentence per line. Penn Treebank annotation guidelines can be found on the Penn Treebank home page. A parser model also contains a pos tagger model, depending on the amount of available training data it is recommend to switch the tagger model against a tagger model which was trained on a larger corpus. The pre-trained parser model provided on the website is doing this to achieve a better performance. (TODO: On which data is the model on the website trained, and say on which data the tagger model is trained)
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. The data must be converted to the OpenNLP parser training format, which is shortly explained above. To train the parser a head rules file is also needed. (TODO: Add documentation about the head rules file) Usage of the tool: The model on the website was trained with the following command: Its also possible to specify the cutoff and the number of iterations, these parameters are used for all trained models. The -parserType parameter is an optional parameter, to use the tree insertion parser, specify TREEINSERT as type. The TaggerModelReplacer tool replaces the tagger model inside the parser model with a new one. Note: The original parser model will be overwritten with the new parser model which contains the replaced tagger model. Additionally there are tools to just retrain the build or the check model.
Training API The Parser training API supports the training of a new parser model. Four steps are necessary to train it: A HeadRules class needs to be instantiated: currently EnglishHeadRules and AncoraSpanishHeadRules are available. The application must open a sample data stream. Call a Parser train method: This can be either the CHUNKING or the TREEINSERT parser. Save the ParseModel to a file The following code snippet shows how to instantiate the HeadRules: The following code illustrates the three other steps, namely, opening the data, training the model and saving the ParserModel into an output file. stringStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8); ObjectStream sampleStream = new ParseSample(stringStream); ParserType type = parseParserType(params.getParserType()); if (ParserType.CHUNKING.equals(type)) { model = opennlp.tools.parser.chunking.Parser.train( params.getLang(), sampleStream, rules, mlParams); } else if (ParserType.TREEINSERT.equals(type)) { model = opennlp.tools.parser.treeinsert.Parser.train(params.getLang(), sampleStream, rules, mlParams); } } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { // sorry that this can fail } } CmdLineUtil.writeModel("parser", modelOutFile, model); ]]>
Parser Evaluation The built in evaluation can measure the parser performance. The performance is measured on a test dataset.
Parser Evaluation Tool The following command shows how the tool can be run: A sample of the command considering you have a data sample named en-parser-chunking.eval and you trained a model called en-parser-chunking.bin: and here is a sample output: The Parser Evaluation tool reimplements the PARSEVAL scoring method as implemented by the EVALB script, which is the most widely used evaluation tool for constituent parsing. Note however that currently the Parser Evaluation tool does not allow to make exceptions in the constituents to be evaluated, in the way Collins or Bikel usually do. Any contributions are very welcome. If you want to contribute please contact us on the mailing list or comment on the jira issue OPENNLP-688.
Evaluation API The evaluation can be performed on a pre-trained model and a test dataset or via cross validation. In the first case the model must be loaded and a Parse ObjectStream must be created (see code samples above), assuming these two objects exist the following code shows how to perform the evaluation: In the cross validation case all the training arguments must be provided (see the Training API section above). To perform cross validation the ObjectStream must be resettable. stringStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8); ObjectStream sampleStream = new ParseSample(stringStream); ParserCrossValidator evaluator = new ParserCrossValidator("en", trainParameters, headRules, \ parserType, listeners.toArray(new ParserEvaluationMonitor[listeners.size()]))); evaluator.evaluate(sampleStream, 10); FMeasure result = evaluator.getFMeasure(); System.out.println(result.toString());]]>
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/lemmatizer.xml0100664 0001750 0001750 00000030173 14135770370 025025 0ustar00jeffjeff0000000 0000000 Lemmatizer The lemmatizer returns, for a given word form (token) and Part of Speech tag, the dictionary form of a word, which is usually referred to as its lemma. A token could ambiguously be derived from several basic forms or dictionary words which is why the postag of the word is required to find the lemma. For example, the form `show' may refer to either the verb "to show" or to the noun "show". Currently OpenNLP implement statistical and dictionary-based lemmatizers.
Lemmatizer Tool The easiest way to try out the Lemmatizer is the command line tool, which provides access to the statistical lemmatizer. Note that the tool is only intended for demonstration and testing. Once you have trained a lemmatizer model (see below for instructions), you can start the Lemmatizer Tool with this command: The Lemmatizer now reads a pos tagged sentence(s) per line from standard input. For example, you can copy this sentence to the console: The Lemmatizer will now echo the lemmas for each word postag pair to the console:
Lemmatizer API The Lemmatizer can be embedded into an application via its API. Currently a statistical and DictionaryLemmatizer are available. Note that these two methods are complementary and the DictionaryLemmatizer can also be used as a way of post-processing the output of the statistical lemmatizer. The statistical lemmatizer requires that a trained model is loaded into memory from disk or from another source. In the example below it is loaded from disk: After the model is loaded a LemmatizerME can be instantiated. The Lemmatizer instance is now ready to lemmatize data. It expects a tokenized sentence as input, which is represented as a String array, each String object in the array is one token, and the POS tags associated with each token. The following code shows how to determine the most likely lemma for a sentence. The lemmas array contains one lemma for each token in the input array. The corresponding tag and lemma can be found at the same index as the token has in the input array. The DictionaryLemmatizer is constructed by passing the InputStream of a lemmatizer dictionary. Such dictionary consists of a text file containing, for each row, a word, its postag and the corresponding lemma, each column separated by a tab character. Alternatively, if a (word,postag) pair can output multiple lemmas, the the lemmatizer dictionary would consists of a text file containing, for each row, a word, its postag and the corresponding lemmas separated by "#": First the dictionary must be loaded into memory from disk or another source. In the sample below it is loaded from disk. After the dictionary is loaded the DictionaryLemmatizer can be instantiated. The DictionaryLemmatizer instance is now ready. It expects two String arrays as input, a containing the tokens and another one their respective postags. The following code shows how to find a lemma using a DictionaryLemmatizer. The tags array contains one part-of-speech tag for each token in the input array. The corresponding tag and lemmas can be found at the same index as the token has in the input array.
Lemmatizer Training The training data consist of three columns separated by spaces. Each word has been put on a separate line and there is an empty line after each sentence. The first column contains the current word, the second its part-of-speech tag and the third its lemma. Here is an example of the file format: Sample sentence of the training data: The Universal Dependencies Treebank and the CoNLL 2009 datasets distribute training data for many languages.
Training Tool OpenNLP has a command line tool which is used to train the models on various corpora. Usage of the tool: Its now assumed that the english lemmatizer model should be trained from a file called en-lemmatizer.train which is encoded as UTF-8. The following command will train the lemmatizer and write the model to en-lemmatizer.bin:
Training API The Lemmatizer offers an API to train a new lemmatizer model. First a training parameters file needs to be instantiated: Then we read the training data: lineStream = null; LemmaSampleStream lemmaStream = null; try { lineStream = new PlainTextByLineStream( (inputStreamFactory), StandardCharsets.UTF_8); lemmaStream = new LemmaSampleStream(lineStream); } catch (IOException e) { CmdLineUtil.handleCreateObjectStreamError(e); } ]]> The following step proceeds to train the model: LemmatizerModel model; try { LemmatizerFactory lemmatizerFactory = LemmatizerFactory .create(params.getFactory()); model = LemmatizerME.train(params.getLang(), lemmaStream, mlParams, lemmatizerFactory); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.getMessage(), e); } finally { try { sampleStream.close(); } catch (IOException e) { } }
Lemmatizer Evaluation The built in evaluation can measure the accuracy of the statistical lemmatizer. The accuracy can be measured on a test data set. There is a command line tool to evaluate a given model on a test data set. The following command shows how the tool can be run: This will display the resulting accuracy score, e.g.:
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/doccat.xml0100664 0001750 0001750 00000015161 14135770370 024111 0ustar00jeffjeff0000000 0000000 Document Categorizer
Classifying The OpenNLP Document Categorizer can classify text into pre-defined categories. It is based on maximum entropy framework. For someone interested in Gross Margin, the sample text given below could be classified as GMDecrease and the text below could be classified as GMIncrease To be able to classify a text, the document categorizer needs a model. The classifications are requirements-specific and hence there is no pre-built model for document categorizer under OpenNLP project.
Document Categorizer Tool The easiest way to try out the document categorizer is the command line tool. The tool is only intended for demonstration and testing. The following command shows how to use the document categorizer tool. The input is read from standard input and output is written to standard output, unless they are redirected or piped. As with most components in OpenNLP, document categorizer expects input which is segmented into sentences.
Document Categorizer API To perform classification you will need a maxent model - these are encapsulated in the DoccatModel class of OpenNLP tools. First you need to grab the bytes from the serialized model on an InputStream - we'll leave it you to do that, since you were the one who serialized it to begin with. Now for the easy part: With the DoccatModel in hand we are just about there:
Training The Document Categorizer can be trained on annotated training material. The data can be in OpenNLP Document Categorizer training format. This is one document per line, containing category and text separated by a whitespace. Other formats can also be available. The following sample shows the sample from above in the required format. Here GMDecrease and GMIncrease are the categories. Note: The line breaks marked with a backslash are just inserted for formatting purposes and must not be included in the training data.
Training Tool The following command will train the document categorizer and write the model to en-doccat.bin: Additionally it is possible to specify the number of iterations, and the cutoff.
Training API So, naturally you will need some access to many pre-classified events to train your model. The class opennlp.tools.doccat.DocumentSample encapsulates a text document and its classification. DocumentSample has two constructors. Each take the text's category as one argument. The other argument can either be raw text, or an array of tokens. By default, the raw text will be split into tokens by whitespace. So, let's say your training data was contained in a text file, where the format is as described above. Then you might want to write something like this to create a collection of DocumentSamples: lineStream = new PlainTextByLineStream(dataIn, StandardCharsets.UTF_8); ObjectStream sampleStream = new DocumentSampleStream(lineStream); model = DocumentCategorizerME.train("en", sampleStream); } ]]> Now might be a good time to cruise over to Hulu or something, because this could take a while if you've got a large training set. You may see a lot of output as well. Once you're done, you can pretty quickly step to classification directly, but first we'll cover serialization. Feel free to skim.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/chunker.xml0100664 0001750 0001750 00000031651 14135770370 024315 0ustar00jeffjeff0000000 0000000 Chunker
Chunking Text chunking consists of dividing a text in syntactically correlated parts of words, like noun groups, verb groups, but does not specify their internal structure, nor their role in the main sentence.
Chunker Tool The easiest way to try out the Chunker is the command line tool. The tool is only intended for demonstration and testing. Download the English maxent chunker model from the website and start the Chunker Tool with this command: The Chunker now reads a pos tagged sentence per line from stdin. Copy these two sentences to the console: The Chunker will now echo the sentences grouped tokens to the console: The tag set used by the English pos model is the Penn Treebank tag set.
Chunking API The Chunker can be embedded into an application via its API. First the chunker model must be loaded into memory from disk or another source. In the sample below it is loaded from disk. After the model is loaded a Chunker can be instantiated. The Chunker instance is now ready to tag data. It expects a tokenized sentence as input, which is represented as a String array, each String object in the array is one token, and the POS tags associated with each token. The following code shows how to determine the most likely chunk tag sequence for a sentence. The tags array contains one chunk tag for each token in the input array. The corresponding tag can be found at the same index as the token has in the input array. The confidence scores for the returned tags can be easily retrieved from a ChunkerME with the following method call: The call to probs is stateful and will always return the probabilities of the last tagged sentence. The probs method should only be called when the tag method was called before, otherwise the behavior is undefined. Some applications need to retrieve the n-best chunk tag sequences and not only the best sequence. The topKSequences method is capable of returning the top sequences. It can be called in a similar way as chunk. Each Sequence object contains one sequence. The sequence can be retrieved via Sequence.getOutcomes() which returns a tags array and Sequence.getProbs() returns the probability array for this sequence.
Chunker Training The pre-trained models might not be available for a desired language, can not detect important entities or the performance is not good enough outside the news domain. These are the typical reason to do custom training of the chunker on a new corpus or on a corpus which is extended by private training data taken from the data which should be analyzed. The training data can be converted to the OpenNLP chunker training format, which is based on CoNLL2000. Other formats may also be available. The training data consist of three columns separated one single space. Each word has been put on a separate line and there is an empty line after each sentence. The first column contains the current word, the second its part-of-speech tag and the third its chunk tag. The chunk tags contain the name of the chunk type, for example I-NP for noun phrase words and I-VP for verb phrase words. Most chunk types have two types of chunk tags, B-CHUNK for the first word of the chunk and I-CHUNK for each other word in the chunk. Here is an example of the file format: Sample sentence of the training data: Note that for improved visualization the example above uses tabs instead of a single space as column separator.
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. Usage of the tool: Its now assumed that the English chunker model should be trained from a file called en-chunker.train which is encoded as UTF-8. The following command will train the name finder and write the model to en-chunker.bin: Additionally its possible to specify the number of iterations, the cutoff and to overwrite all types in the training data with a single type.
Training API The Chunker offers an API to train a new chunker model. The following sample code illustrates how to do it: lineStream = new PlainTextByLineStream(new FileInputStream("en-chunker.train"), StandardCharsets.UTF_8); ChunkerModel model; try(ObjectStream sampleStream = new ChunkSampleStream(lineStream)) { model = ChunkerME.train("en", sampleStream, new DefaultChunkerContextGenerator(), TrainingParameters.defaultParams()); } try (OutputStream modelOut = new BufferedOutputStream(new FileOutputStream(modelFile))) { model.serialize(modelOut); }]]>
Chunker Evaluation The built-in evaluation can measure the chunker performance. The performance is either measured on a test dataset or via cross validation.
Chunker Evaluation Tool The following command shows how the tool can be run: A sample of the command considering you have a data sample named en-chunker.eval and you trained a model called en-chunker.bin: and here is a sample output: You can also use the tool to perform 10-fold cross validation of the Chunker. The following command shows how the tool can be run: It is not necessary to pass a model. The tool will automatically split the data to train and evaluate:
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/morfologik-addon.xml0100664 0001750 0001750 00000013776 14135770370 026121 0ustar00jeffjeff0000000 0000000 Morfologik Addon Morfologik provides tools for finite state automata (FSA) construction and dictionary-based morphological dictionaries. The Morfologik Addon implements OpenNLP interfaces and extensions to allow the use of FSA Morfologik dictionary tools.
Morfologik Integration To allow for an easy integration with OpenNLP, the following implementations are provided: The MorfologikPOSTaggerFactory extends POSTaggerFactory, which helps creating a POSTagger model with an embedded FSA TagDictionary. The MorfologikTagDictionary implements a FSA based TagDictionary, allowing for much smaller files than the default XML based with improved memory consumption. The MorfologikLemmatizer implements a FSA based Lemmatizer dictionaries. The first two implementations can be used directly from command line, as in the example bellow. Having a FSA Morfologik dictionary (see next section how to build one), you can train a POS Tagger model with an embedded FSA dictionary. The example trains a POSTagger with a CONLL corpus named portuguese_bosque_train.conll and a FSA dictionary named pt-morfologik.dict. It will output a model named pos-pt_fsadic.model. Another example follows. It shows how to use the MorfologikLemmatizer. You will need a lemma dictionary and info file, in this example, we will use a very small Portuguese dictionary. Its syntax is lemma,lexeme,postag. File lemmaDictionary.txt: Mandatory metadata file, which must have the same name but .info extension lemmaDictionary.info: The following code creates a binary FSA Morfologik dictionary, loads it in MorfologikLemmatizer and uses it to find the lemma the word "casa" noun and verb.
Morfologik CLI Tools The Morfologik addon provides a command line tool. XMLDictionaryToTable makes easy to convert from an OpenNLP XML based dictionary to a tabular format. MorfologikDictionaryBuilder can take a tabular dictionary and output a binary Morfologik FSA dictionary.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/corpora.xml0100664 0001750 0001750 00000074057 14135770370 024332 0ustar00jeffjeff0000000 0000000 Corpora OpenNLP has built-in support to convert into the native training format or directly use various corpora needed by the different trainable components.
CONLL CoNLL stands for the Conference on Computational Natural Language Learning and is not a single project but a consortium of developers attempting to broaden the computing environment. More information about the entire conference series can be obtained here for CoNLL.
CONLL 2000 The shared task of CoNLL-2000 is Chunking.
Getting the data CoNLL-2000 made available training and test data for the Chunk task in English. The data consists of the same partitions of the Wall Street Journal corpus (WSJ) as the widely used data for noun phrase chunking: sections 15-18 as training data (211727 tokens) and section 20 as test data (47377 tokens). The annotation of the data has been derived from the WSJ corpus by a program written by Sabine Buchholz from Tilburg University, The Netherlands. Both training and test data can be obtained from https://www.clips.uantwerpen.be/conll2000/chunking/.
Converting the data The data don't need to be transformed because Apache OpenNLP Chunker follows the CONLL 2000 format for training. Check Chunker Training section to learn more.
Training We can train the model for the Chunker using the train.txt available at CONLL 2000:
Evaluating We evaluate the model using the file test.txt available at CONLL 2000:
CONLL 2002 The shared task of CoNLL-2002 is language independent named entity recognition for Spanish and Dutch.
Getting the data The data consists of three files per language: one training file and two test files testa and testb. The first test file will be used in the development phase for finding good parameters for the learning system. The second test file will be used for the final evaluation. Currently there are data files available for two languages: Spanish and Dutch. The Spanish data is a collection of news wire articles made available by the Spanish EFE News Agency. The articles are from May 2000. The annotation was carried out by the TALP Research Center of the Technical University of Catalonia (UPC) and the Center of Language and Computation (CLiC)of the University of Barcelona (UB), and funded by the European Commission through the NAMIC project (IST-1999-12392). The Dutch data consist of four editions of the Belgian newspaper "De Morgen" of 2000 (June 2, July 1, August 1 and September 1). The data was annotated as a part of the Atranos project at the University of Antwerp. You can find the Spanish files here: http://www.lsi.upc.edu/~nlp/tools/nerc/nerc.html You must download esp.train.gz, unzip it and you will see the file esp.train. You can find the Dutch files here: http://www.cnts.ua.ac.be/conll2002/ner.tgz You must unzip it and go to /ner/data/ned.train.gz, so you unzip it too, and you will see the file ned.train.
Converting the data I will use Spanish data as reference, but it would be the same operations to Dutch. You just must remember change “-lang es” to “-lang nl” and use the correct training files. So to convert the information to the OpenNLP format: es_corpus_train_persons.txt]]> Optionally, you can convert the training test samples as well. corpus_testa.txt $ opennlp TokenNameFinderConverter conll02 -data esp.testb -lang es -types per > corpus_testb.txt]]>
Training with Spanish data To train the model for the name finder:
CONLL 2003 The shared task of CoNLL-2003 is language independent named entity recognition for English and German.
Getting the data The English data is the Reuters Corpus, which is a collection of news wire articles. The Reuters Corpus can be obtained free of charges from the NIST for research purposes: http://trec.nist.gov/data/reuters/reuters.html The German data is a collection of articles from the German newspaper Frankfurter Rundschau. The articles are part of the ECI Multilingual Text Corpus which can be obtained for 75$ (2010) from the Linguistic Data Consortium: http://www.ldc.upenn.edu/Catalog/CatalogEntry.jsp?catalogId=LDC94T5 After one of the corpora is available the data must be transformed as explained in the README file to the CONLL format. The transformed data can be read by the OpenNLP CONLL03 converter. Note that for CoNLL-2003 corpora, the -lang argument should either be "eng" or "deu", instead of "en" or "de".
Converting the data (optional) To convert the information to the OpenNLP format: corpus_train.txt]]> Optionally, you can convert the training test samples as well. corpus_testa.txt $ opennlp TokenNameFinderConverter conll03 -lang eng -types per -data eng.testb > corpus_testb.txt]]>
Training with English data You can train the model for the name finder this way: If you have converted the data, then you can train the model for the name finder this way: Either way you should see the following output during the training process:
Evaluating with English data You can evaluate the model for the name finder this way: If you converted the test A and B files above, you can use them to evaluate the model. Either way you should see the following output:
Arvores Deitadas The Portuguese corpora available at Floresta Sintá(c)tica project follow the Arvores Deitadas (AD) format. Apache OpenNLP includes tools to convert from AD format to native format.
Getting the data The Corpus can be downloaded from here: http://www.linguateca.pt/floresta/corpus.html The Name Finder models were trained using the Amazonia corpus: amazonia.ad. The Chunker models were trained using the Bosque_CF_8.0.ad.
Converting the data (optional) To extract NameFinder training data from Amazonia corpus: corpus.txt]]> To extract Chunker training data from Bosque_CF_8.0.ad corpus: bosque-chunk]]>
Training and Evaluation To perform the evaluation the corpus was split into a training and a test part. corpus_train.txt $ sed '55172,100000000d' corpus.txt > corpus_test.txt]]>
OntoNotes Release 4.0 "OntoNotes Release 4.0, Linguistic Data Consortium (LDC) catalog number LDC2011T03 and isbn 1-58563-574-X, was developed as part of the OntoNotes project, a collaborative effort between BBN Technologies, the University of Colorado, the University of Pennsylvania and the University of Southern Californias Information Sciences Institute. The goal of the project is to annotate a large corpus comprising various genres of text (news, conversational telephone speech, weblogs, usenet newsgroups, broadcast, talk shows) in three languages (English, Chinese, and Arabic) with structural information (syntax and predicate argument structure) and shallow semantics (word sense linked to an ontology and coreference). OntoNotes Release 4.0 is supported by the Defense Advance Research Project Agency, GALE Program Contract No. HR0011-06-C-0022. OntoNotes Release 4.0 contains the content of earlier releases -- OntoNotes Release 1.0 LDC2007T21, OntoNotes Release 2.0 LDC2008T04 and OntoNotes Release 3.0 LDC2009T24 -- and adds newswire, broadcast news, broadcast conversation and web data in English and Chinese and newswire data in Arabic. This cumulative publication consists of 2.4 million words as follows: 300k words of Arabic newswire 250k words of Chinese newswire, 250k words of Chinese broadcast news, 150k words of Chinese broadcast conversation and 150k words of Chinese web text and 600k words of English newswire, 200k word of English broadcast news, 200k words of English broadcast conversation and 300k words of English web text. The OntoNotes project builds on two time-tested resources, following the Penn Treebank for syntax and the Penn PropBank for predicate-argument structure. Its semantic representation will include word sense disambiguation for nouns and verbs, with each word sense connected to an ontology, and coreference. The current goals call for annotation of over a million words each of English and Chinese, and half a million words of Arabic over five years." (http://catalog.ldc.upenn.edu/LDC2011T03)
Name Finder Training The OntoNotes corpus can be used to train the Name Finder. The corpus contains many different name types to train a model for a specific type only the built-in type filter option should be used. The sample shows how to train a model to detect person names.
Brat Format Support The brat annotation tool is an online environment for collaborative text annotation and supports labeling documents with named entities. The best performance of a name finder can only be achieved if it was trained on documents similar to the the documents it will process. For that reason it is often necessary to manually label a large number of documents and build a custom corpus. This is where brat comes in handy. OpenNLP can directly be trained and evaluated on labeled data in the brat format. Instructions on how to use, download and install brat can be found on the project website: http://brat.nlplab.org Configuration of brat, including setting up the different entities and relations can be found at: http://brat.nlplab.org/configuration.html
Sentences and Tokens The brat annotation tool only adds named entity spans to the data and doesn't provide information about tokens and sentences. To train the name finder this information is required. By default it is assumed that each line is a sentence and that tokens are whitespace separated. This can be adjusted by providing a custom sentence detector and optional also a tokenizer. The opennlp brat command supports the following arguments for providing custom sentence detector and tokenizer. -sentenceDetectorModel - your sentence model -tokenizerModel - your tokenizer model -ruleBasedTokenizer - simple | whitespace
Training To train your namefinder model using your brat annotated files you can either use the opennlp command line tool or call opennlp.tools.cmdline.CLI main class from your preferred IDE. Calling opennlp TokenNameFinder.brat without arguments gives you a list of all the arguments you can use. Obviously some combinations are not valid. E.g. you should not provide a token model and also define a rule based tokenizer. The following command will train a danish organization name finder model.
Evaluation To evaluate you name finder model opennlp provides an evaluator that works with your brat annotated data. Normally you would partition your data in a training set and a test set e.g. 70% training and 30% test. The training set is of cause only used for training the model and should never be used for evaluation. The test set is only used for evaluation. In order to avoid overfitting, it is preferable if the training set and test set is somewhat balanced so that both sets represents a broad variety of the entities it should be able to identify. Shuffling the data before splitting is most likely sufficient in many cases.
Cross Validation You can also use the cross validation to evaluate you model. This can come in handy when you do not have enough data to divide it into a proper training and test set. Running cross validation with the misclassified attribute set to true can also be helpful because it will identify missed annotations as they will pop up as false positives in the text output.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/images/parsetree1.png0100664 0001750 0001750 00000025426 14135770370 026165 0ustar00jeffjeff0000000 0000000 PNG  IHDRV,_ IDATx^ytTǿaKzD-Hl)T%b]Xi6U- Vj⡂I[OKE!,j,Fb `ΜaÀ[CE$\kry6…U@vvx絵@Yn3$y0Db94pEE]|OeL(V \POg 9Lbuxټ&Mjnq/ X#X3 c'=Gbܔ%rb` gMMB(V䄟aUÍu˧H8,H5mߐ 1;|8sgY}yH's$@~#@mF9  PO;@$7f!p$@~#@mFĐ!CpԩyyyPUC  8Fbu }ip̙u9݋={4W?! eeT|G㏣1n'qر(\x D%@hq*''G[(ܖA$@:0v6n܈ .m¿]M7q%k gkĈغu%~{wޤj 7=ي PIGܚ2220tPMA(ܠxKژ|+8p@;ZjQF_[6(ܠb5\߆snSLAyyyMM`,*k|^]vx衇 Ǟx9Ku?[F b֭С/_ɓ'-"@k>ߋU6WN}v|k_ ~f0a͛sXC˖IJb s$@)#@ -+&*53q Ś2H (֠W3XqpdbGƲL[Mhs)Ѭ3Xc.}d' ׼)߬2n^XUލXXfR4@i`Л5sXNbSZĪR)+5=*P+?ėbU/2%}L>Ak-{kA= JbJHH""(# (VXH,X-b1 Jbc pU.,3:t@CCCӨ.\wu8q"~l|%>}СCaL/^d{nٳܹ3N:B֭q9,Z6l￯KQPP)SnKaXuBFqvy}_ѣG#%5VZ3F'|ŋW^qY1uT 28$X%0>Ktj2ʸM6 7\ve!/'x?ODoohO@"竮 #GČ3 OFH OZxE%K{ {xYGs]wahV7~;[k%tc̙/Xe۶mؘر#NW#.;Qp; o]K"W_}1:Xjvء0p@L0 xkv")9333_~ wlڴɴA{nqK.ڵk7z(..F)X^#*N>6 r +ƌ믧~Z˵JiϚVлwo(+23CS}׮  JoNر9㐺jk85j`0`JؼjV}=X]Yד&[}Yhz20{uj^?bɉD^D)ݛme,s7 ƒ% E&*i8ozj< cƄHmV Gթ!x6ꏕq7:Y7ݻ=.j]ﵕ>R.Vb3t׋b~hDfĪAh1VT ;v4GƦHfѢ~mD1E~INXkb,ãhb\HO6Ɗf)iU6!/i}oLIS8ۈ$Z^/~Lcl4#%JmEUke9Fk/hoߛ+!-bEJRr~"XkތP9L7,2hJc$X7_F{mŌ4~D7n';(V󩗡&8>v,<f|Aw(VGsvTjNјmX,BiR*0!Xq5ksJdL,^:R&o[%VcOAMmɛ\S "X{^Msjw|`޼c1T-XGeM6WLZ=u8|8pohj )ߎ[eh7J^*% 3G9#'<yيX[ ۠AQZ9bb80(^>he0tT? {FUD^b }Hjj#.z=ƣd/bŒ-Xd}9i5cmf*tGR/$@$4`$@#@nJ9   PN'wS 8M b=Eǜ2N= 9 iӦM5jTC6l?GhuŚ yXx{1?UV80kUa2!)yRJbM J&cҥ N<{U?rpvtkx'[V16%@`aQ2A+mhh[5+yTa-jݻwvK.qX1HF?h?m۶8w\c|/90k,ڵKcVVnV '@&.~LAmrIDyȟVo>-o:uM7݄^x#Nݰ(d Әe,r7n܈#GZA2rtK>uV\z|5T&bM`X? Y`H|Ebtr0$@n @a _X}5 PnHWk}C=FcX7aYUdrxނ װx#N4(-,ثZYa ~qyO$+V> ,[Yvt n~;3'…@mm=UjjQ.-n }׮Ⱦղ٩kMHƁ֞S2sG })V/ YB~8J<lNN,Q\Qu{UƱx%ͲՏ[Sͫb5#VZ6J8@EEH;UEdY'e'@e%з/M" cQ"EQsfo*F."X:_~+E' r-j5bmMQmLVƣ)Cv]"D(gZ.\#w%Zld6_E/b)gڟD˙EQf _Pt֫Ws.O1MԜK&OF sͫ5-b5 Ћ,QSX/x2{mUSU*C/V(xE=n(>㩈v) C=wkힵMe%ZED#Dkb뛣R^٩£q}~8̕qX2꬈5(cXqCfGpUՏ,lu`cDT[%Vck&f|׬q+T/8D$۱+VcfXFWkr'VF]ff㿤*D:On{)k̟m(^ToV;۲dsR7d<~ɱR-{%9Jc4>^[fk7cTnUg'Vk,~uӔBK?84<JH[n}G^52,eC&MDZ'<yҊX1hQJ HXkk"ET@XOuɁx٩wu鏅O!S$Y.%lvƤߜ24V>wH~\+"VRX[#ԟc57Yg*U$,R{ڈulJeSoD̈́?j'kvlK[yܽG3%kwLQϣu* GZr*{#̱]Q'EOtEZ!Ƒ@P6b I (VN$@k'C&H-5|Y; @ Pt96 \x1ƌ 6h233SOaڴibj@ڽ{w|&)%o2_~9>cj "ܵk?"P`)VX,8*6mDk >x`={ga)j@*W^Nwߍg}V%l۶ }nxi(V.0X į~+kaӦM?~eofZ{W^y%:Z1֙a#g?O<Ν;ux؈Ν;k' Flbu>v%Uw==zcߏC/Zn ȗX}<Zb*kѡ\"s% wa޽Z 鎠S8)tf[ 5JՕcǎ$HZ6.2|GﳝRvhl xIJ/ڵ|rh^~RJH-(VA$o!p -3~ ꛩ@HBbuL$@!@f*3Z>%K0wܤm0Rs3(( wB`z0~[@QdIsCXر/Gm-PV& 4Qt/\f} #@6 hf))Hn]֭7^1=7JRZ#@GvHέb-,VUr-o$n\g}I@O!VF+?[R jskú 0Y*7"}oc*@43QWVkqd?6m4GKHd~({.]VTD*tXIm%(YCfirUrnTMZǸ5$\bwl&Wl-UW.B?; bN =b*^­Evj,kaR&ZL@uH&I 6/@{V ]u䖛I&)QQEJ,F c;f[:n}sDfU*>&50*~B^7Wf9j`0+Xr!ZZXP]"kc턵՚nsKSz ZnVEJ"mnӢ^㿴i#NX3C!˭v*@P0 Ω/,JCG(V @KjX+T⊬+4G~XU^I[rLIiUx鏊Yy,bˁbڌMQQ?-yD˩&VԎP)OkD>ZNe*bKUaΟJu9V}_TjCɵ ڲX6coq^nTB *cU6N4>G*ǚn>J ,[{UJ@? X/E;r{*@`{b\j#b6ȢOdHSX=+lL(JSUSOn8.uL?Ntɉy֩TBU&W_X:s7 k PvH(VM$Zk#*ի3~ کaH > \x1~AhӦ Ο?nݺ.QY$ ڹsg:uJc*o` IDAT[ƅ pcΝcmCZ,K.#E|Fc=D?1~i3fP8 :zh kNT}ſ/mdS禌&f^+~ZwGZŽ;ӸK[3I.V7m׮-[0b-{_LtD6"$pX۷o=KdC*w܁^zIs>|x2MIkJRHG8&'zIqeO>Aff&⋤ן )dPd$7wމ 6Ξ=~/O袋bud+$`b}kݾ+q!ChQ%K{7iQ}ɺbMICpRҶ\:uɓ'}soVZirXO- Xe_>w\ z[/9sF;E:Im iH$@:Im iH$@:Im iH$@:Im  6/k_jeNE? (.]23uɇ]"7Uر9w.\ee@f&P] )frrRk_=;}We)D1UI[@h{j%e^31Chb0mnL2E˪rrv~=z|F ,ew<\5J .X avv*%OQX[?DljeY\@@ 8xCˇb֐Y(^EyEX=nu½5JK_HIo~KXu꠪{K%X)/bGF{H& F54Y Xԡjr }1n8ck'9U"͊Ȉ3^>nX% fM(窢\T?wndt_v~OڡŲ$ 3 ,s^7cԪQM(jN$f|P_o~Rۍ%V-j/W+%W}_kx XK KS?U6*WͷAO3~0&2k"x 8@ buc*@J_o":PJ*ԗbӤM,D"YU"eWRU?W c~Ud*ѵ>jVVQwHXMoI9A!FevZ|-w)ySg*E,YmՈLfW"~cUn(+jڌͬ Ś(9G>#`&+3jJtiEM~~sʝFLScZԦhRs#?ݭc ,w4SP=$CJ`.GG]gx 1z NJjN;jˑ )K$c5;{ {vX1ib;,O$)ŚJHqOCk:(  Pid3-%  (V XHXbY @bEHH-%  (V XHXbY @bEHH-%  (V XHXbY @9IENDB`apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/images/brat.png0100664 0001750 0001750 00002175546 14135770370 025055 0ustar00jeffjeff0000000 0000000 PNG  IHDR |Zbv9* iCCPICC ProfileHWXS[R$RBoRCFH0!ؑEׂUEZ¢`Du*oR@׾wͽΜs?7 +77 U ' a$$&1H=*- Pw%VX_E@"!N` Cܼ\1XU @8M58E'Ilb{@V`iļ4&hWCNgq ~|'o1ScXiXDȾ/.bׅ!21(Jⷩ( - f$cyJ}0!t'qX7 .(oqnV ;,̏ʃLZI+8R6ֻܼ)7 |`K9 :?i?`H\`%ӌyKz qpGPe\+}ZTIo#<8=p7<>`Ýq1?بD?/1O4`޿х7f'[<3B' pā(2ټB thR`́1v}pwrq-`Ox07h۷Z84 Ea[]8%;aI03X֎T2Fp˄qxc66u66%_\/aw^x10sr xiy osA|$]u ]و7ҭLu=Mvc3[ǩ\ :v |#p^,Xt 9 2P J: T`#Ep\8/K0ށAH#bX"v3!H$#i! H)RT";ZWrt"dy|B1TUEuPt2z!h :MCh@khzBї00yLǬ0gE`IX*&c%X9Vc;A#N8s3|1 x+~*A`Ip%ibB9a8\7}wD"QhJt2A\@\MJ\NO>M"?')˹Eq˭-,wMOnL1Sb(e J=!/yyyyi</TPQP`*P)QثpV_T*ՄEMQPk穏ht5-ơ-Uh]WrƊފ *^STS2Qb*+U)P4LWUPV^_r IDORKJ/ҙt6}9}7OjZzPCuHMEmZ<*Sj꘺zzZ#?MЙ=;aՄ ]kLjhҸI駙^Qe5Mk6 ZU'MdO,xd}mTB;J{.va]\-:uuut3t7Уy6{Pcx3VƐ~H~AA!GCgTÍ-CFzFaF ;o6n3~objo¤ѤT4ȴlYMsyVEE5Kђgղsa$IwzխC _M64y_mllv3"sohV|֡lrvr ?ߚ3/328{Ms!=BD8Sؔ 9"3O|sV}~i0Ԙݔy"DK[߬{Rd)SkOSN=Spflsiz[f<8pf֎ !.]xͻ%K'/^>qJUǫ wxcG5kM]7wNh~cۧOG~&}bkׇ٣,Kr`CSSxj"@޽$H$@=|̳"x0NVItMr}~MNK|b![1; ~w%lkc pHYs%%IR$iTXtXML:com.adobe.xmp 2428 1626 AۏiDOT-(-- \@IDATx \U?~z; I' $4 Bf\˨Œ>#.3*F(*"$ vw޻z{nNtW;9/Wo~}{Yٛ9ry-!`!`!`!`!`!`!`!`!`YC  E).(&D$}3t e`` k7g!`!`!`!`!`!`!`!`!`%999#ɋO>+UӤ _r$$᫧g^ m1 C0 C0 C0 C0 C0 C0 C0 C0 C`" +Ɵ\r9n&m!`!`!`!`!`!`!`!`!`$A`WN+yRԎ3$i C0 C0 C0 C0 C0 C0 C0 C0 C0+BR)-W2Dn!`!`!`!`!`!`!`!`@`SO/u՛2h C0 C0 C0 C0 C0 C0 C0 C0 C0CGl"GyJ$b~!`!`!`!`!`!`!`!`!0Y~Z>h%|1E,ca!`!`!`!`!`!`!`!`}Q7o[OC0 C0 C0 C0 C0 C0 C0 C0 C0&7n&|YI4v3!`!`!`!`!`!`!`!`!`#<1/C0 C0 C0 C0 C0 C0 C0 C0 C0&)5оI@$ ^&CªK("2u&cݫ3 C߂#eW0 C0 C0 C8CխΆ!`L<ʼDY9;}pΓ~"|MF:([d`_eH"Q|n XX;$C(!Ext"|sq G. JbeݱC箜IQQ(:uwwK_/48@9t罆UA9M. ]&l~&xYŸ|)*,L]0 C o}}28O+&q0??7Q?oob?YKo_Ú*hnbK> C0D yv23mDϓ|~߇#Cn< CJ/rsa7撫av>,HdwV꒶VRLBpX\-Q. R[Iܧ?)@@9zzR}Q)$)QW***4}SKkH~OW|27G@jTt__Q} LZ0PrsA:E;G/|Ia?^C*ҲPj!0~S;:?(IjhCHkY(?g'??5koSE h<5K++0^> C0 L/CX_;Ien /?_A˅p"CbTn}=R^Fٍ|vz!Wyhkkx,&%e_d/slErc̉BG⢒⢼-~H-dw2>U^E.GCqXKGo^-QFB8RHoo XA*冗6F"Bu$8+yéF# dHgWmP$eRWZ1X/|Dc46pT ycf' !YV.}I0 C`!@Wo.![0ȊBn b &:]iO± L&j?< p g4ecs]h!`T?gBAzWb˦_D0b) _s\+@P"\=?UE8㱏AmgnD:X9ԗd#Eb>ԑg2Q;;,|%qG6"-bNc/O7%BxvAx&' S %H~v)s !ex iypr-U>AD(!!4Qv30a$KSg?i0쓞xwtJYyp s!`@t> a^F(Ϥ bX_eX[keo{珶-]#%&;_gϟ{ˎ#/'ssޜ ?0 C0RD`*3i ·Mp#KX;Kk;l/]YFT%SLT?6=jQZZ8˃>h0ugĆFlsI`fh CxrѱcDlF=Lǚ8?}M(l(_yWf-t[AĻc.g{oGJ),)&,*_R@`Aɷ˜ي|s#0)CbeXpt?Z<69tC0 qpvLF,@\ܲc?V>:GHDڋ}O91o{Ϟ??&'bOOđ/U̮R[ C0RF`?g`*nas;?,/qJp/ LGԺv$>0e&qCL(rf) AB0!a"S) E"+H"ӈ\xث( .}q,) z{zaA@\Ѝ1JVeNY(?ĥIxa,cJcD˄׍í-Wȏan0 C,o|SOk5g=&ˋٞ2kl^ιhهm1 C88Xϙf po,!8X0mWT5C&FnCpf_; 6X_M677K4py9yp82Vb?H?TC,`ub!qدlo\f_{A~M80؏{`F0E\DB HpكRU]LrfcD< 077 ]ͮ*6n!0ΎɁS id8_7Qa?~L7O(:1Oh_6_ a!"9G Rv luum"| +@S>p5G!gO&|Y;wp*bDš#8|ߐZJr^TPiA c/F"?i ;\ +ey%Jb9`A4:+*))REq#(?BwB vcr̙$ \6.)A;##'?OTcFb=p C0D`.7趲b䅏@e8_?oO?7aϟ=7Q&=344/™so; C0s&AYd`*>;?(/!%{ԇa8A_=L5AWLbC^WWgM6E*(H}|g[J 'qe/BG>X^J NHTXV.?F2`ꮩE@/ RpSaADN(jf{ !` )y&I0Oʧ.2Ao[t&M5k_|i̞UÎg!`!9O ,}ŗe]1ZN< mh|R8!/lSDСе _+%uaAĨF**Xi)k}*DY^Y</@g+[Jb0b 0trY50=H.imm+++-ja?Fw+C9pvlz*6@ԖbNiiigh!ԎO15Q_V "_Y{Ϟ?Lds1?7O_ F*S|w_&?!4O6Qxcӓ0_sN, 874Kմ*)R>EdgxK?)ͭsr$|s1d *b}(rpX3PT ErB0.Dݢ"V>2qp$ mw0Bq;wJlwQ}ܯ+?-ZiՉvaXڜ9 `v᫪j+\ìD?slkf=@٩!`) ioxf쏃ApԳ ωg)86k7fMG&&[03:SN?4F!"|q4} \*L ʌi?-0lCC0&1MzR;e3`ƓZ ?Vo/1&eBh$'^U & %||bdަf_|Oo \"zsaNx눺Y{db+@o0O4"~C 9쯿:o}.;vy)9p"|Ԥd/HqвS (+8(@Gblz(j dY@`[(خ.2N2CCyAq ;HB 5kJ<ޭΓN:x;k-o@𞙾N M|[orɕc# _Q~^K|*Dz%}h;#pe#|[mqJ "]]bAc?[pةG$nX兰A6uؕZK2[+ݝڧ!`@~k5Ӡ8rʆbϔcgfH4 { 1cL1dNS喯*:{҉'ʲeT2A߻bxAGyuX4 C8Pd ĩ_x~8vE,Oq)9gGk|ȴ7WyFy#/<^^&Xr44W^yE&.]"%2~dҚLZSLa#/|9ly̿9l` |MhJf00ݫ3F"Ï ;r򒼝ѿHNpUUUɇn.lzf/:JAymo@nV8QU@lr_w;*{w5w(-NʕW}T** ʏ#r+, l’"+T-6pЯ F :Q~OOIj"cBT|et#gs[e'{ @n}r ~Hg]:C]ڽà89Ss#_ Hw6ǎ~Q*z4Ckk>|?D~<L_$zuvvj.Frp|)J$+_+?t&UY<" i਋2SԄ̻{.R"cYVI~C\}e28GK+$)m{@bGe/TSac+n%c=ݲۤ@y99r1H!XW2;@א!DREPhRtLCcm_KbXbe'n{\|\~*Oj+v5{-!`G@DdgYC-m/WPʇu1]l/Þ?{ kcJTΜ!ʼnT{dwKUʂa{$/UW kCnfG{M >'xB cA9 61ۆd}";=fhG X !`l=o_z)wǡ"\Had gC3" 4EEr?8]/C/@Ij̠pQtP$%Ų8j++A.RWغutuvKzٞ s%*Akm#r2_Op|lLllMS:NeׄDjAhV\#o+y? Çiɻp bHMDf+0V ɤP|P9r0Ak;( 5Dn:ό U(^z)^p/ Uw-4X%*#"!; Q~ $,H8yZ/V$_.\P%_Y7*_D.lUֶl~mpq(^E}h5Ў+7!௑Z>݅}!`d oU7Z*&L bhe?.pʷgϟ a?LQ&E[KnmOT X/]MǤ /E"q*]X?m/?[5_!mgKɺu됝eC?9EroG@8oX9Qyg&yy:^V!'w-Sه!`A@^vSl]sf[9_}"yurtuJx̚EBtf9>9߄Ivol?jnJmo!( XV /.p5-}GzG5W 8PE@#ѥ[|M)//ޒmKN&qoˑGJɇ^ ݸ'zj#!*D$+<|Q'?\$<6x=ٳW֮] Fu #R2s"{,Dl`IJNbze-5H,cvo<77Od6,?:!3`y\jI Rڟb(7[Ts%p_G1X|%>~#aQK}1DkaUSc/g!`7 L;F֧W-P}~+R=_LARFxj|bQO?;/) {{;Hܱz+.*)m/G"]OKCW>\9pM5g%OoZZZ'?t^x=-|E4U'Q/a9zr~_iqڞp;Gx[ C0=2N smr9 W.o2y_ل<4Y)HDFw;r~tI3̙:q`LmQW!af(⿜; $lyHG(@³?¶=lt,Oqrf>߅ll $@zAM=t6wbG򾹃$hhdoSٶtj*$ uXACjDUVlW\@ >:{4xd_'/Ljf%m+QDq~|FknmV6YB躻[P0ʏmvdl<9"U-oN);_R(t9ǨZ2(xg/?pC0&?cߠJBѿ:# sʧyae/{R_xfo{b\Ryg_TKkA:WJ`e3_|7`93/'Iί>Gmx0#l084*˜Luֶ✞?>=}ӟDvܥѼV^-x>I~[_R9/w5Ypν%`H[ C0!2Ny礩aҋٮ\_@>lZ2Y]Ԏy nĴ5)1/օ@-RL3il)[lO^ 30u ߌ&EI6RL}pmI˅r< ?q >E_S+?c/o"}=vZ=9[/92j:NRX#1qdlik@Nڸqp/fVxٱceUu ;.{xLj}{Νl) XBPxB}@sc]IUb'gSSKF¢ϗK/v p]Ȭ6h*_lӷT+?(x ydCiO&$AA=k޼c@,rj“"̅>U:.#| CԟbaA_`'OyiA0i!-CBcRAퟠwv'm6ڟ/$ڿ៩o|RḦ|]EX?̖锵 |]Cb׹ߗ=\)L 4#"s9p27}d/oIg[.0 /`JR/G=[ nGDґc >4uR;џEmr0kϞ=t~\F~'ol{5g̘/~TQURѩt6Ս*!J'4T0CE575k@[?< @VDfIA3<''ָB嫰FDʾiRBL%dp %c`t{I^vFb_a)Du[丑2#+W'P3|?O8d*9> dm0 C 8_PPA/bP@ aP+F?a|Z?:2;oC/A_z7 ^zUeˬ1ߑV+[wLN-7_L$y}mso>KPcIHS] AB.YŽyk듾b9*8{?2":1H+:L^8_jJsǜhj"xkޠ{>^_GS5?!!yyO~׍YՂYl݇381Z|?S_f?i5]lEUoQu ?}Oz{#qPO~c˞g {=މH $|ՠ|;[ C0 aGFWx/4Ngl-㠯iϮ@ U݉:DrGZꝿf?@tdq/}=)7S53N?ptzhRwvtO=kDp \@LͿz8W"HI2$:ʁ G?i,YDSy?>VDڴ9ݳ&_[YxJD=2pcN00T6Fr-[oLwQeOr᷷#>{{Mv'I0Y7JSEzag FJ(MƍAMͲv:dW*ę-~Z2@GFc:>_]YHȺ,F3P>C@n:ޢBaC.O2cqR'j׺ timg$ `B>m B3#Y˕ƒ|z ;r߅jmH Z $m!`@~klJb0OXg?7_7"|Urn{/tƿzNY} (3?|H>iR8GoOIMYy?zH>sHHݠnyo  %1/^7HW3#ԍy'_"K;Ew+kFGk=;d7( %p8UIYzۉȿp|!ڲμSo|_/# +Kq'#u]Oo<[>lL?=5o?sB{{O5_@_~{\o.s:*Љd/>8 Wd xس} IB7J!0tm ]٫ d/DًDbaAM>Ed-pz Z-*fNپ}r!vnN̛?O }VD œ/? hdnaMX.$rqY ,xפڟ)+߳,P"(JbX]jP1F5Jݔ}!`d 귆z7Y?,?TK` SY$uӱ /K_t#WՒOOX]!uD^9ƵC #B9%C7-M_H&9#t(V^JvrHWVJ.{o>C=m:Q_l~m]Oګ |t\͔ |U q| }Q1s"e= b}9Mȟ_+ްV##d{G^Kη^,|Mri b,Upū}ܸ]_.=/UUksMr?2'ӿڛyQJX/f+c?w?uy{'8$v yH }!`@Xݤ(>#ߢCJU.Dl[} m&HAq;cH5xq+PԥZDcWwWd2m DR`E,W,_PE :!wUI`D?qkc_o7Sp }"+}o8.CԵL;\ z/^JaNmo^a~0ߋ_0^T}=B""c6[A<|AH(UzA~XP9rRs<Ƌ:kx ݠ{!o*&iI_BزS~FڎvZ~aI7X建qKdy\' (ņ%':y? _lrpߠ!FgO!,&xi:[Zƚ-!`LniT!WqO*9`.6K0O 1oC|]ѥvN*Podu|&J}k]Vn^IӪpA} s*]1޳u3λKo'ʽ;0mՕK>\a(rܷOS2XOXr(Wȳ- H^Δ u!l2#_ Q n7Yɋe[ɢ?ςp/ r}wɕ|ܼՙw C9q׵rup y?'~qrdk\rd >),S ϹaMK%/Ѽ1ga?Ǹχ;w'>~TUW:_߮N8ZmTV0 CH c'z\8:5Aۈ݇·v`cɣHIY7qS*gqZF;W͜Qd; HH<9e(Sc9k4Yh _C4#4)J3:[W(A1}7}h":VX~qi|"|4VC=l `-"#k,X@ۺ.Arm" Kq ~#JЇZY-} b!`@PVߨED??V>tOnXgW0~?t^r$"|8YCϒ~1ЭXp'+Krd=I@<䝇_ݛٳ?Rru:8F9B+%'+g,i[}W\%-K 裝/]("|lێ]?xM>| HVI/`aYZ:ygN'XHmZY s?"]|;|b{?)>#{S~č3W  .% a{D:C⫾eG O7o37UWn ۀg>#yS- Q1bf̹C0 Ccz):u,8LԢ ~>R?-ٲUm$8>T#g+#g ~ƧLG_Q\Z7\/eJn#| 0NFFd3+ ?TZV :3BeʕĿ}ˁ~u -,z8_Ye)LyƁD CmMu&΍VUvb^ioܽnt"'#E"̝;ץz! W^[/ M|^gTV9(UURt; qOnA?fc |lB95 h;33E2.gcdz_ ]qKÊGZPAڿ rd7}g!yN@. &ԋ\w;0 C 8;E*)BJ_.uZ:XFgϑOW qS:2;EeP\re 09V37KR w?Sߙby|=rJIya 6\d6T}>۰Wp52-{ut|  |EHFJ8u-"swHbyrrR p;@n77,q:C-sd.fUH?{tp7vfy,?IeCgp5^2?~5{R_(@IDAT1w_A?~ZM2H핯$Q>ϧc |5a^԰0 C ?e>ܳڦFw4rN]T+pM20q35V5tG 2 VKf;Wr 얓5 :y$Lv%#/qnċ~Xg6 e+?_EWa콮{%'R l,o%GALdG`᷷#>\~A#8bY xhJArQ0r"B?)gD#G暵$}uˁ2]ȼ窐D i_aoi(KYHg[i 71vggV]0N3 ??OCTw1'ҢatyscCTL"*&!<5+\'#뿞J {3Hዖ297VtdbGz*T^?a+փ៮mٛA?{'W)HSJSΣ u7|Q߯y,~ D*yw[O=NrDι1ݜdS:oͯ&7ISS+8B_d"y$wiVϒ~~_vt^6SvׁsXOuzH[ȉUFk#_DF;X*;Sn\}'+'`r_"6=<7Y!5(#y#\SNy7@ z/1rkGfw|@œ Yad~\fV5,={:oiS:IjBx1Y}!`응o˖R__5JsaQӥ 'gLsoo< gk\8Rx n0]҆H5ȴwYXA"X'u2 |W"U?=*4A̘6Ml7nHՙq$$ۡ/Gd,utlCĺ#iך5|O/?ztܳgYNަ[o3fm @WU UR rNdB$0Tf̟K᢬Z&cdRX'D r [wt)5'+d] M9\8u"1h] |͍+II![DھMc.HXҗV- e "M*\ETPPDa_"1^ )A#՟>ٓ4\dR—ȼTڟ"|ql1 C` @ֈ$4} CX?礣Iga_pԔ?= gE䶧ұ 8[~m}i9Ʋ>+ /v] byZ>4k8>e]~_}kYZl {~L*v]&v :ĮrH'"_C|3zA7нQ߄]tKNydY+y<#k"?>']Ľ??)}__ \M:|ޗ.?<}Y:-M~ +5pۜ(w巷Ca oaAz~ˏ7g3!yv; Cǿv}|1udjcr(Nm 3 ~oSi8 fU2n!yTaŔ%oT5 |a L`f(ꏥj1]A}N,EVsS 9_>w&__C .yĩ%MgGF»qUq-*%LΑ/&yGJEaVIk% Vr*yj:-b!k`W"( tl<4F5cKA0*.Zguɟ\ -)kzQ^ۺE{1Yk˗X=D~M>t^¦})> 8A?L)2:TΉJ 1?ô{Αvԑ7W\YKg?7|S.Y|_n̗"tT0 C 2iŻ{G7€No(fC:9z\9[o<ؾ}l߶M Q=d^ygu"[Z]1DRu L=R0r`dHNƚHz.D_aj)oQOmm"?WٗW؅A['))8֭]"}O "v1F\$]iCVD3b IBaߎ^;؁gnj;//_{hY>k|OZKBx3šV_aOöT"J%)<5Be.u$$_0#>4SFzG @D=/F0Luq7鿽{ԯ89tD/qx'7L;2~+ߛő *\I74[lE"mWRA%΍T(~vhmSX FJ봍Ec` M .@XׂF#|9' Z|\rssy`kIGdv9#@6ֹKSEUY$GkHo0=;ӨL8Lװp@U0#_s{]zG O0QЯxii*#fz{oE7xq1 !u$@jJG1h0/4{#o[2;1Gvdeemy PU_ʼn"r{/`;֩Tr%%?65 =GW9sM:jL\a_<LL^öM6rꅚ./?Mx%bR+)s#GnxHRi!06:oAs}ͲsNo8^O| :{dNхJ/dgͪE'Q'`& |K@ @y?) '9)ym͂۱/WL譥Y>;pnHKs*grFM w*@lmf3~Nڀg”f'*tV{Jggtk`Gdd/.--u:>?q9KG) _m6.  uLYc:>Sq$C!zk"}D=U$!^:vhc`4EE7{ԛoaV7}ǎzdc%Qƪ?S~7"|5!Tޜ41wlcGrUIW W'z D Z3p_va$F@&}v?YԤbX@W%iÞ?{Ru*g_ןTo=╼$ڟ q~s9:SP\nDhkrS#wW#MwҢuj$;KWjD_w'ř.,߀-@vRɜwe}x!^qG7ux֛˫?ݷPJ0%'din)a؟—dnˊ>˖-_?.:6O< AڟAhx%iӗN,H*_.B$^hND g7—I")$??=\ڛ/W#{1gUU1X U z8JodCqeqoQ$']ំbPGDukB62e]*?BePxIjF\eH_QƆ'ʛN \}p<앃O8B)FJ .N0b/Ru!^I>o¦Mj[b0VOWA 0nC0 , )IbgO*(O:4idz#NG _fȪ1{ |o}SED^8>Z/ȅ !#676; Ϲ{Z23=?zGaѵ\Z'^`u\ڕ/'+~&~~))=QlᇤGz^ovB!~0lI[/G9ϗ F34VD8p9rorbm[?m5ǁcc< 1ґHb! ?{G+.pxEC/89n r[b-7/WN]zݶnF$9sҏiB׭_2` cPƵ B7E=WscTUTUK_m|tR(Nc6g9ۈ ՘ 2B2+f5ۜ #u555idBe/WI^d2Www7eR]]2iÎ*x9'o02y;oaX 8OO}]xh5;uΙr;j[r&R/)EY*GbS}eG Y㕿sNmsLsC*|p tLc>&n\717 ~ɤܩymI}}[(_>D{&ŕR?͈юն0 C s 1L鈔ţU=TIKO |`h>g5W$pa[Og*`&kw<-{?_Jұ\f@*5m+~=.LfTqg ?Zv<드H!|VR2^6nasrKeڌRh#Pٹ m6YߵW_nWmoߞ2qӦMOH7?RVml3!st9u񩒓4nX?!]]—TS۳/C0 C y,=^" ?)'9ndj關#H#_Sظ| btS[^ |90 _\(̤U W&>0ؒn4p;7.m//>˝̭xϟ76A`_!|7G͎E=_p=[ Gi ^w[Jrj s9D) .N):/ªpuq??w2I /PYx\@bT,[%"M&&Ab,/XɟVmGg W) =;@CPDVEnXԴWn*4$Wguv}HۮmMvtx^\ɂ c]R:58j!`@~kDRcJ-TSjxU KdJEY 5B?3cZ `?:֦]Π=&otdᱳOoOo\l*o.wiΛ#3yȂ/TTa.d ^>0 C }[e1a$Dע.gΪQ#F)_\`\ĒKddgV k _C4 A̠a/|[nM?Ξo~3WgBc {qV$0`6 _uuu)nB#|ioCUT]) G)F*e8FX8#@*NYy;z6ŋ6Wh'sWKlq\B8h^xi j0;U-X:A^kBn. .ڼf'<C0 !HM"RMq0?7J?oSʛ5c7ƿ9Ko7i_ٶ,0 C &";!M{ݤ}SӎR5;4}FuRLI\!ww t?ݸq#Od+oa:ܖvN_W g{, Ws{tJ ؟gf͚:_ieEP (, JHpƾABPk%lF%Qc ܠpe2%}F札,Rt:(Yb'{ ?}#tX'Nǥp-fXď8o,0*?7(]B/#eeJFaֿWF*jxiBM:yf/m0ʧ"@U1 !`dhnT~˲ bXkDY7qgϟ=5iO@# 橫CL`!08XϙgJGNe~~$l2Hc ;_A=L)6TO Jo)^*)"&O9Fu UBG> Q@c4)탠q)A̝#9IfvHkk Z:[X f{z{mR*ELvD~ /fvwK[{HqeB% C0@@b#=uAA~0KwJ|کnOgϟ*M5k_?ѿ=֎Ûf0 CG`?grWb5u܂aa7++$/~,2tu' )N! C cUXA[9IcFVĕDnT!F sAr.X'sk☞] )-O|vɜsxwœe`K^~.B fz6e6RNA>27maOQ@_?ҁVS3'4܃k!0>g;$OwWNӓ33L*AEAQ7ʚ kXWE߄ EPČqW C3099Vu}u^wJ]=|W{'{*WyTܰ `y?< = ?C1eyܫ>,@3߶ É(foەRj+8ڵ$ oxWM?$+!0vvЬ1\L!|R |=>&z{{ RMTLfKqE~xQo;}F~d@af3| _?^:Ax_?)\.t?ɯuwy,LA~0y)gR@ @)?O{0؎=+W,e9218CpxSlYMqD~gg] qR |Uf 7 tKWG% *ΤZ.T˥ϕ#oc&oP;4wrD^nY"<0FCn^dz5lKa5)44omlQ3m{Qj_;84&M܋@S&HPC,(BaLÿ7y1qxd P&mve@[g'Rxjc71__? ?pu(Dn'^x/ x{ߡrFyx/ Wh]|?@ p!p$†5ed.SQX3UgaF$E>;aL5#4\1yx >XB?I%C_d1~Ìq.Ʉ%buuO43M=]ܿ`%:ɨV(e/HUb"Zط}=`yZ8m|(qC D|ws,7,Tg"|8?/?.7^hƇCq??_|?Sl?TşGޘC@ w x>d<3I>w\ $a!㓣p>egA yyӚ(uN=Uk/DhWcO-o@@ @  @ @ @ @ 0k , @ @ @ @ P @ @ @ @ @`!#|XbtQȿ5yMZ#cdGְg[6X Vl*2oQa~CO/Ppoc<'<G<g<?77$_E O9:GOXAK,T*EŪY$|%.kFHw`A-C_:,Cc) LrlTR|Ap3.^A+-0x|x| O|䳑9B1 7x}q<Nr7xxwG$?z <G< G<G<F<Z|y/W-7AQ(@ @ @ @ @L^9X @ @ @ @ @y+t^Z.ђScc(T eFw0C78L]}i\eieBs @ @ @ @ PUF}~OGm{9LGswsl(᫭1ALKQ2^wD5-wuM{- @ @ @ @*#`xtD_g `Lį!&V k0! uziE@ @ @ @ '5::b^##-WMM-RmmKdGk+J?5EHMiIѤFu;@G\ѴH@ @ @ @ ы]#ox8= ѫ.FuuT6%}1 (-h/^L JsZ xsPC"f2@Y]ձWs{]{U){ftͶ7y4' ŵW9hWϠJu7qPv9p}ny˕uV3j^Q(Wm58/JۗZ}p]D*^O3rZ}pV~]m7wuS;틯'j<8F,ܺJ݇RiK򴹸Qn`;8:[ί^=쪻.-/v܍.(W(}i!*Fpsrը$ߧZWI^g(q׫F('Wnܜ\5*q`\r5޹}&O9>J~ڻFv\mԼ8]?Γ|#>hWϠJitxQEuT\WNʃRUZ59|J~+(A+ُJs9Fu4k]?NQTWi}._A;nt]Dr:+y}˓nD!ͭ]gԼ)Q0joq_|$t:MÙ!ʤ?!~ K]L)HP,q4W{S4Vz]Mp4ΚP%jVGtqyINZ`R)uMFwL)8@h/s/)ĖvN>Ѳܮq@ @ @ @ /Cihp9Dw뤡0MMmNѲW8@ @ @ @ .`/q͟F|hZ[ Stۣ>HœLMǚòze9' T]LH^CʎZ%|e9IIGe_7?}tRc6RK*Y0#4Qb1ZJU.ovRGxgx]wp(s̞Ơ{ګ@ @ @ @ B}? PO7uӱG:ni&}7H%SMLjȖvVd.;9D/cUS[k^c +uݣqfb->Ie PR:vJRމ (,{;(Ӝrddi!&jijS1.Q{u׃1@ @ @ @ 8\ؽ{% %q9=}t w>76O—Gaac%֙ du1җU-o~,Yb2|rY}z 8W{0mk1L]#4N@Zbc]u}SL5ܫ9ՕǷAƠ5Ѽ6&1UWg9 @ @ @ @Æm^}ΝeݖtwũIgd*/W^wBSnվQ&y +C4e2i6KbqLdX_&Vu|RW/gםiYfLIٓtL|ʱrU(u( _t^ّ6%4hg7i1jb̕ #ګr{EWW?/*n<4/i_xW{JqQuW:-b~QxQvߵWyT_,Wn|_՞7*^_unڹc[8:vޕuebcջ׾ڕb4NvݾRsEC5^:ES(5mSn<\czkԾԾܸ:*Sj7^qu:ib].xc_)/5ڕۗ:R8*w_.>ګT/ʾRw{7֭^㍗Xv*k_lίqWOT|7^˵WyT_,Wn|_՞7*^_unڹc[8:vޕuebcջ׾ڕb4NvݾRsEC5^:ES(5mSn<\czkԾԾܸ:*Sj7^qu:ib].xc_)/5ڕۗ:R8*w_.>ګT/ʾRw{7֭^㍗Xv*k_lo4tϦ5զmsWS-ƄI|DD!T 'J7 uhH^Y<5Y_)Ȏ; W#LbWfh(1̈!I')OPkpa޷%c+LrV m^upp9`K&>w eDv&%D7sY54^9d&%53;džF`J/^̆7oJ}A(`$z;nh$BR{w+Xe 8Ԧ$GF` ,{C$)W;Wn(y" ~\ҘL}<=^~)y1bYAF>n\wӫ=W+`{ޑuqQ/H?7ny yu:Xq}udוe:#kסSߴE6ZO^_;v*~TK^T*Rw>uvQt|Q֩Q5kǽsH8jƭ4KRyo?ʍ8UٸQtsqsuki٫i`U_Y(˲fR1./byqNM)p/s7OLZv+2Ӣ,=O:Ualyq/ اQL|q6kY8X ssRq 1f1|>:Qߝ/u1Oϡ<^;3T0?7N?Y.;*9Xl׾)w鸌yեPu Q8:pZ+iBF+1ߟ_ڹccN Su:Xxq]qjXX?GiOd^S7 իZޱSW."'gMȈ8۷Szk^$,{Wxaq\{[iHs=i_G׍%q ˲\]3.eRϼ8'ޯۊاaSEai81Β3H~\>ly."d~ #{ӫe'"Fϕl\ײp#c|ku~\]G8 uȨu@~-؊C]]측,ޒ| urTaHOBR{w+Xe 7]OW|#Dި8QrgqW;gڼ}]qp bz7o' j迿q myZڨu250+ِTÉW9;b%#w̴h׈'\ k2J61{1+=䮁~3A/MvwkvPכoHjLo7@SCA^i1DRh 55飩Lx:si3gJ2%A-[+x!$|m>0Hw4mz6:OQ:vjLJp/NCD6ٽ'M2=v{V?NXL;ڋ̍>PKsmT=p D~jQ\;R8_ej+cWVz'fͶ?į_޳ZZ:ŗ l\@ [C1?ї+?v Ko8:tE2oTju3cRYxaaq5SYXtj!*5ocYkVY)y˙Sv{%R>ʣD];v\XbиzGվbqԯ^t(ړ_u\Gml\u+(H)f/qͥ~b+͵Wʋ( ӻsu,}ضQt,rc} Txa8Qas:^j6-S?{7s8p鸒kas2]5U];۽=-cr7=cu{7wKYWWǮuM+4m/#Ң|9*k'cw"SXtQMmE*ӱ:>Jec:PGuTqX[uerXuoܕ8aq5SUy5ī4X֢a،e== [eRF-gN5Kg~*w]s)cC㪿U5VRbQJz]ӡWlN[_hOq! q֕tj#_)64^*/6D++*LΩ~*ױbvrGv⫶ӱʍ)/Su&DfP{mLX=vkÍJ⪯݇etw*XW;vtl\5XX/e]a>n\"5МKuUsj_lNsx5LUcE5ګLǶl(}m_X [C!ՕrS-wc[l%nX0 v՟8 e.^}2R +e mߌ卭3Qk^ת3(Vk[<.L$ag|2iIcpIF#DL3{ `/ v0gy`:mRCc3lbW*[1ƫ˒ЌO+58ׁ%TYzNKq ھ&s%ǗJ 4MIPń;t4ќ-c}}4:)L|%pV&U;L_a{E3iޔq_4EԒ.*Y~qFc-W$Y{j<N !|7—vg1As4)Se_/ݺ|g@ @ @ G=kO\cqO~C7 Z%ژ%MD!^ aK^tZi.~d@5lW1?'n@ƸbKyE!p'fWƐ2R\#K2y Ib8į2CiKL%s'._hŦfͩ&}5,_&I+;WW0br m7@}#52k Ö];:ij^~$&|;˫0uH3|?A|Q6%a uQdVD$MoIp/X a{$ h6΁JCox)tq,X}L(\3)k/D.~AN9s/)iU;A1@ @ @ @ӏc]>bF!koFUjX2ə8SV S:=H&~1KZ,`RdB?/[54O.8`ƒ=!IC#'Ƥ:&}ɼB .&|uI}fBBӗLf2! +p&d3aM8Wfx{~&tma!:ӖMHqk:f&%W蠖OB X 1S #AUBbLwxi\(%\-=\K3frQN3W[CCtp/դ345UK[t 2dZn rEg/1* C6ʥׄ\qF%MLXO{'Y _ _O/o YU@ @ @ @+lO|oN^B]MRLLv/I'v.=:_!&crmw3{~u2CK64z%d/)8TW3BxY'-{[M,[Au`& 'wv꠫/8͚1ͬ @MP3I/dDyBq̔Gm\2|t6.aorf֩M x2>th1&k Ҟ]4<Ƙ!pAlYtV#Mi.(&HPt]3s~VJX{oq΄T/>!P](̷hz45Ir[^ˍ!'ΛD|,bkԮJ 0)wlQ`&)l tb2[II??]vIG\ۅOd h_ @ @ @ x; 뒋s.|y}K )ĩ!^B2m+N}{t?.O}]4'כaI7/))1ϥDIMwfϘj|k+=j)')!ńjcƏy/]LJ-җdjhGVҐBU%ô8nG;9ՁhSU˩к3k\Pjhv2I[M5!/ɥLIҋ)^0{WF@?=p4Ւ _sd}ZB~T1PtqSu4-A h*wq=P|-l%^w\Z4nxdmc0q83 Zxjw@vMµ]JכO[@86&n?kއy#_80@ @ @ @2Xv:vf }o::;iRk?'VoNeIS+}o2jO>/+ sů\[ڶTO5u'eC}ݝtE:S RInWl40}5 __ 2;ygp`@ @ @ e bmLj ݏaV [LJӫN;3\|m!|Ba p`?ugO{oo|g\k_',Go4{$?.%8L:AM _iն.ٯehiShk@YrlVuJz!pQͨo/!s9!jAtfpZK.2Pkӗz)ϚˊlC֜$gtlu.4Si13^OYWnuӅ2+]%U^D^n˞WQWqT.obg~ZwyOo2Lڄ㧫[p s_kFښ,+Gxe77쩖_m]|}2)Ve,ײ\?SO{\?R> 2kc {qY;z7į!k_Kc:^^ |bö Ӌ_-1Ua65FױƳTgΖvL^m]yظx?W_e}؜թ\hvjEz\l\?q28>*vvWmXa2V+?Lu>޵U(+ԻjeeS{]Xצ]X wrՎ/j.ջaQm0?ѻr',\?GWBN[MNܾO1S\Ǫ/crubc'NuQ>"WX]}%}\|}c]EVW9\[m[.1l޵Ugۄ\[cq*+ώegHLs:jގ:wmT.};xҫ^VYl\:aq5NƑ^joXav/U&5^ݖ]!mo۩0f:Q]T1|]5:[vvvLm_ejjƥ?7*XNG{+W{/*X*d+qQKjk mZa:o[QE5^U[-(׶ڻ=6b3vu|Qs u}elޕ>a1U<_]muu_jGmt|%hl_:V}9P;[>avTFǪw}U+R.*ڸzڪMmora4ʥW?&Lڪ+؎WYxv(;Fb+W;Gv֩krm}ر+շ}^:U6tbT}Xiql5W{[&"WץV/IyC}JsYGzΦs_vZ*O5[JBrB&'|y|;?-τ/~^mvo'qIGg.U>+ +:kIŋSc#WŨu{ 吠륻W5Y&Mk׻^C&r&t.!> p-a.$L_%AaD I&m_g/oKҹ' X^A]IPjW kn]wfΝJz(q"U݋MR ً={16&}2٤v`r1+{O[fT:i&=w~Q.Z5GrLH&4~ЋO5T/eL{xl7[g8n!Le2T&įG6'2#w792v!BB:mIZˑ %xl6LK. ݾb XdͫMw.^WԴm'L7D)[.B,ɝLl%|=TƓ{m?e]ۺ8ިZ;葷bLH=Ͳ*Zt6΄dNkIiq}zx3Ĺozb22{.FeΒ]#juuQkW(};%SR}ʱUnllvhjXlՋ]!JW|,k+eںX+w{6&Ugqr uG]mŎ5Vb_k(>Vz5z9>c,#/[_hjWȦ5D*JC㻶.j]u,۶BbQ ~k%wpr7ʥW[FbD6m<ԘQ{(}1%sDٝXٱT6lBхsmu}:O.]1{kGͣګ_'}ԮԸ]cS_݃m؎SƑ^c}1=wjҹ4KݳV kѬIp_f}kWe.뮻ot=y3ٹ16rC7~7 zԚdLJsfxɢ0{=~C?eog->^`3?N|@7R\2Υ(bB*9'˶x/S8n{{r3قlKc_S=P ዳXlVL\Ra"GbҗO~,t/C13 53K 'ӹ)iA _a5o:zJyFY9#$ kF)d/ deφ:٫äyY̘Ƅ: KNAL/W3I\xbҋޱlgE : M')L>²QIis\{d~r)No:)ȩ[M&1!i=Ȟ65`Úd:b/\45@* ҝL8^.x/Yr^%dD;ę$( 5yf5$W%R||:fjuw꽆X3aJ ]?{cA$$7!2]J,sqs)qme![LE&t*!|10@ @ @ @ Xv;-a%UEt]1;4%;l۽}KW31w!̈́x ۬߸>oҁn?OKot}tw]4I>7NX>it/ _˞\Cq&rMB^|n>޷ѹgn޺.y6Z&s9fJԧ(du}bXJ:*9jjlx2N"|͝ewwP`_=ͥ$>)챩3&S-]iC<]X呟Y -ƥAFNZ9e.-cXQme} #| &㒎sk)#RdݒglnBbU`RF9Gp#JHIGHO/5֎2L'0!fZkD\%{-cqixs60b}kҋN}2o+_g`򋔣24r<ӹu ?=lXMT/-pӖL2;w˶c@^n )aO_##&˘_aJKڲ=m! Ҁv -c)ǜ3|aKy/=aF^JK KxN7=.*!|sm/yxӻ60obVf (g貛$z}Kcz%Emyo: kB@"bXD$X3I+ -Ȁ@ @ @ @P w0.ytȥ$-!50/^B;x_vTzhu}k{dC#ϥ~t+>0U?W>[^rwд?]cVyG{~ӍAML4&W#% ݋.~%+mJ:1:!ZՑs/(k _=Ld{iNW:uriǞt-1: U;:Lu!᲎BL^XY1eͤMi?,sGw>/0=N9{ݴnlIr./L0d,K4Iَi%(C&H8R|Q$5R.6z3lK1#h/p{mTRz6+M ˞:c|&jo&!_M_ęnNOۀP&%#vת=g k:'mMOsD9_2Bm+$Rtn2[渕k(ƬMmRP4?h>䒏$آ@/KB:wxqeCT"%&Y$6Y9ϙML*!|smK$/[L[v|V~xz2F&EݜQ~}hkuLjLa*z~Vc*z3M_l`kζF@ anw|$+Sр@cx~.Ter{ @  "@y"#a@`X S}?>ymزCW gxr-0`[گ|Rt?|[bΞMz dyGCwR#$/2صF9A~=FS|agRK ĒT?}* p`R-7z`? -P?~-'b5̙j3NE UjS].g>R@؛iTa !H>dЭs![Nxj7-gb6Y3Lo7 AW䓃u- r0K-d݄$➍_[n{1!dp7[Х&θ=isgw//_?J7!Pr]o7tcOs)E&|54QBVuu4ehKTMO n.'&{C6џsM)F;S7.Ifle7;7"s5^$:EP=^}l:9re ]™1Ȥ{rV.K0)O\?}.xR [T qV/NIѿz醇&)?į M238{ q[V/!k}M 1Z j!8@ PޗG+diY+gYcYO^HkU7Q^e>Ќڍi قُ,{?-Ti"5 Lϒfvqp FfE|5F }ӘrG%L @Cw5[-jza-q&*C ѵ ܪlj΁.p^5x6ѬNqv";5>a>o[-sMF?ä)q.&qX?L\_OWzZ% I+n\ohz!6J߹7q#ܢdJ?g}Y[\1N#L2W?.WN=n۵.<[j`#řp&DjdkC3C\\9et4+/e_/mXΘ$&!蠑miNrN;q6͝VZ.)cL7%RێlIG"M)٫dkW?2LViܰ~nZr'mmPM$Ϭh.je$g~jshql(3Ϋ{"`Uq.(JmB576[&ǧ.F/?qF@|=І|U(;,)(m _ZN?CNm6᫝ W?s包~3f8m5Lҋ!K4/{^kX |IFi5-쯏3A?^}ٟΙ3yYjfe&W9LJdz6rܶz5,ʥR,Spc'^$I+ZI{HX_#|vHL97rLnY#0⟷X_as7' ;RnR[ka׋GVM{ljhZ"@'~d4Q|ԿdCfbqв3uYbY۸<fMƹeʏ2<`}|cV`5.A)SdV+3[_6? %j@ %k콯a`&8w}&*^Ps{E< ʹ,syzY[1s b(A*C`wђAǾxm޾\5/yjnLIeZ&Q A9ń>/HD͓() ۹rDLs6[}|jZnO~ hkm__nB\,o<|v&|}_PS&M2Bŕ^b*/CT{1tELu6՜ kP OJVh27yw"h5Y]ǭW_ r_.p6:w?jcwQ:-ʙLT:^mr+ufh}hO G"4&|ALdz`]4gv[p `⌔qlL2yN;Hf-KCX!,bdWRa97 N߹IQo z,z`k8ĹHO%lQIݦj\nBZ.(d291_W0,!|=b$MJ^U \X{쥇Bqc)Gg!@IDATIKho񋱄e>I8.]B\wu0\U2mo]wF[8d}E0˛\yj k\Ӂ`c y%;c@ P ]ɳO`Ϩ$S'Dx+%1ydIZJ,rUYH,fj_9 7}^\z]OtܑZC0h}1#@ (@c Cdx>0b` >_ٶ<p^gi&|-G/:U˚|/o·g0'J#|)A3l I+/Sαz>k.ް[گ\w!|mgq,n7Egv}o'yR _RRZձ _niAJ9L_go{/Ҏ|})5F\rZB/k'5ڭOu̟[8UA-}t griKF,V'lemGv}#~VQfB:wǽ@\_NW9h P!&X3="U~=Id[+wT~GUj^[h 00DjIŋ[c4wTlqƲs;޺bPGGr&r' 8g󟻙5Z ܟb @ap7{СwɿVl( 3oF%wxzΜFW]_?}O1$*!'ze9WK*g\α _yKۨorK+]5LJ1+z:]c{8_\qEW^r%V%vp)M;;Mi` M4uLAK&,㎙5^ b^xZZ{ mHoq-Z߱fՏ ٓhKf/]C^UW_2|4)3\gTB>fJg7yW^O nLARn /_((zɈB&xDduwgNr׹ _RP,g~p繅pMJz~ƕfhk?$ݤD~꒩yd/}vyD7P͖;+i3y8YRiof.S` LK/YY'3f7k&z m$+UN{)si5ئt&d,kUl sKK^V[8r沞n]_^RFs^nc5& By+6 8򬱀{|"( 5gϣBWYY_e.@ݟ6ms,yq֙g٘Qb_euXN_ă-@Á@ȺFsOZYY>/fPT @ܟ>˸?/OZC⒎|ϛ}^5ڴ}08 o:lz??ki&|2kctKZ%%븤(5Ln _o_I2|+߻z _ +1i2|~,h@_v3|*4n.($͖=@\8.3RS}`[W5ZlݫZCwRMC5ӂz:vfp686pd5Uu"i7rv _!?չDל@Mqdc驭c_xWU +!|³AחT:Rd:Ҿh1﷾#թP9kY|hd-,))adr_#iń>.8لpIU7{%Ddg}?#PCS+gLte[?V.FV7%%ǵ4o6kz%]gz]Mwʍ{I`C)i6z틗2)Hq1޶7*5jkܻ6loguXpLodk򰽖?;ZS\㔍e %T9ڄ/!HIEEѪKxYK__Êut>n\72@jM%?{E_|r!y3 |)$vת=t{r"voy(q.kzS 3 .)?_UK=kF@w' }ٌAJr-khٷnJf4 g7!=>?"> q&i dlǂEg-ea,`+\jT3Ip8)6!eb5Pd8k[8{ݤTd Hp<g @ x" 1崒KZJBa_^Qv2VN,[`%b 8B?=MnO݊>{}m-ޘ'o]Y?҃h{O% @{[FܮzsPBR cGIQ– =ln_KZ/VjKp%]B:ˍhOR닿wHo$~-FpJKJFFc#䱏6Hzn]2noo:mAܳzڛd˜ZR{:.U_|t?ʶi$mg7b$[Zg9?=$#]X{ 3QqN?-` CX%-{+F#`Ixdz9mwE -Q~vhы ""l[lPƻx~g{5837[?+>?$@ z< OD[d2 "y?_i1s.y|>I6l557yU9K]u( _{u{g/Nojf//l_LRD!! \" 'N#FIw; uJ—l4kxovP{lqޱ|hP,/))iBR&ߓv^THQzN_/׳|)$CID>M^F:!-a8g0 M%>&޷&G^t}[S$[{7Or4sm~ls >B)ť^7d?,hv􇇶.ZW5PD#~ {-wc}[qqXW3ad{ڛ7"nIޠ@ 3/@lxcD-3GkmߟGs]qQ~(sGm,h ѕ#*cr=Ʊow?O}(p@P(6aՃwY7~>F]]=+L3~o} Ta 68K)rg? _\134%{@IǏ}|ZiFi_ǻ7ӟ~K5kkk)zg^\cO}[e| ᫩&IE2y#/&|up]\-VcfT?fʘZj5qr7S=^I??je:#݌^5ɞ;L7)XQCtΰ.+\&HֵLZ JldKbIDB eIB)h!vWMiNr))t:z039Ue)uWDFz'Uv&nR/XS*qMXj/Y`df:Y̤,`I?RROKg5,.x_VRy{c+"Wy}Een4 sZ_O_`d?}:YtVO VF2UX׋~'Ѯ0B;{'wpQz&{ָqn^wgN(s߄prAb'jzVZOhY{I[[VDo %7!Bȝgfl=mgyfxY[O"v}D\#.gӥMg@hq@yej`/U1swt`e۞Z=K%߿uL͝qPUsOHJ9+9HFw]ε5*Y甎 lPw*sMv6]$xݬE@ړIJ>Y2c[|_7t9ҧWO3b2W5p=f ]h說\;ircϿC0qV- iEUL_E9r%gz_~_녋5x@_ K=}bj૫dfu5N~"' O]|ԥf걻hur9=#S;L[Fg|_2k5k2ۭk =Lz~ܺ]L/J~z;pM }X 4`Itg Ƥ XWm3dx2ң0[.Ґ]kj.N4 }W9DK$jNؼ]:vh`%r>l YiymjcնM0`_]=ϗ=Shz;^ȝשm5ؖ` )@@ Y߸aޣns]iK]?\As ssv RUw]W-c=slS.+һL[7kGx6Y3%{ξFx APX  <w2{jwel/j ](\V{JOnӲU?_~YR35쥽{eoښ*)i/Q |]5bn됊 Wun^y_a|ŗc&W\xd:qy]sonW2s;i@R3uR=T?Ǵw/:a/3cN~'1@gdIgbx0zg sdai8YR^|ߵSdPue*)ٱK6UK<'8vHW'XsAdϮ1˼%2c ¯ R J4d;f=BNޜ @rЎcx|11^jOVN%e2u!PoMe-GH_Q? -y݉ōx&hzsUUR_McwG7S5m.T^+^$A:i` 8z _]6!puo۝Pof&&}T6^qֹ=c4#v8gU9p<~J#xx\o!J)  @K 8[5>}j6.whӥ[c=Ө\D+R1-sr'TeDWbL4.a6>o_Z{._If_לm~ y  @۾ukhz+ϖa}䶋ӊ5Gӳ%dfJZzU/5RCWiu-=?[5N,ȖBv!u;?\EKek69PoO]>Yڸ)׉>!yL[ x{!}<92' ew[3/&53L_<ڜ۵$r:h̿Ldߺp wg  iB}\CF:zGp&TaCS3aɼ6^t-;MogL\x6k iP6ֿ4>KW s-6;5nG<tD_;׌)Qkjc=+Kcqql>ilJڇdwr;o(%Ż9!@s"lQ/Qx#Jhk#{>aKF6_ ѧHn藍v?KJfwl- :K_UwJ^7gG^|O>nӻ eh J_R[]0^J$6TV+dʰd΂+ݽuUW9T//**? eҀh\|-+*]tѺ3g萎up5] r0/h6!02:A/ g]L-Wu.'0ֳ(_9X>|l+55MCDt[iG ?_ZA^YylLs.'t9>;ˠWfzggJVv9&f40U5uS+:Nfjrs,Z:ҵ޳N,N=3$dBn7K@@@@@@@h۷:ZnLez2a4 Kgr'42彤;e 5Bϳ=sh:BGV2=|ŀ.         @"|%Bc"        1 |,c vVΧM_ {|ޖg޴m%^Whˇ'y#L~ f::2^WmZ|ZޖyſV{<-n/7uD[>T=->Yγ`mO03!=πjkRR̳-5=e7-`l@Φ CJnnJʍ-}%yx\ ,l 7_/r=O{\y`ͭo[ohǖlke[."-ou?|ݮ,벭?iqB =pp˶>[nWovlceݮˁH綾pDZזˡey`e_e[=^#z"/rͭ7<{PE;u>c'#-o78X.p9|ÝW=z_y/GrGz>n{`9j?7\r_7r=O{\y`ͭo[ohǖlke[."-ou?|ݮ,벭?iqB =pp˶>[nWovlceݮˁH綾pDZזˡey`e_e[=^#z"/rͭ7<{PE;u>c'#-o78X.p9|ÝW=z_y/GrGz>n{`9j?7\r_7r=O{\y`ͭo[ohǖlke[."-ou?|ݮ,벭?iqB_+`@@@@@@@@@ow5v;2`ɕW         4% |Uhk@ |_|[XS @@@@@@@@@NX &yyy*)Zp8@@@@@@@@@ BFʆ:1?555OUUzs,2f^__ ǜȳ         @JJz2/ܪu~L {ǻwS r޾lˬ6;.߹}ܱɹz@@@@@@@@@ v2?//沽x6ݖ7 \@@@@@@@@X=|}׍_Ä̏72M9;wV         @̙Vox<6?6e}pDf%         XL.k֬Y_0.6eP;u]m@@@@@@@@@0> xTg\ssݖw}@@@@@@@@@ z[o:e 0݆wyl&;ģk@@@@@@@@@"^/ nɯ.2+}>]<_,         D%`2YJ7e֙`낅L9 @@@@@@@@@&5}tteZ^?Mj@@@@@@@@@0ӦM|i` |,W@Wv?         x饗| 2ezJ@@@@@@@@h9_-wxjF@@@@@@@@Tફ>[$55UR.gHH+         @|jn        .0h 6mW        @߾}'Cjyn        .`_7tuQbgdO@@@@@@@@@LOs=WyIiЩ@@@@@@@@@0ϗR_R@@@@@@@@h-ts4Ǥ֒8         @8         (_         @'t,\PRRR=1J@#        %/ʚ5k!Z@@@@@@@@R &f͒Sҏ         @ W^^L2Ws @@@@@@@@@ JעE|EGq@@@@@@@@@|_ZM!        Q          @|_ 阨q@@@@@@@@@|_SLaH(        $Df͚%SN%𕐻A@@@@@@@@@Lk͚5KCC(        $DओN JJJsM}5$L8(         @}LIMMuj         @_U         $ͿΊ |EEa@@@@@@@@@ ~rrr$==]jjj$!m_ў@.=q5='O         4L_'N:KE}@@@@@@@@ |p \RSS |"         qzdb}U@@@@@@@@ $ӦM_>u|*~        tLX_ƍW^^X:bc?@@@@@@@@:@.L;<_yj"        b |2l0_yj"        |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@(:@IDAT@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%J >F@@@@@@@@ |%Vdղ4W=tzjW dP^ލXƜxΐqScb$Mke#d?㵰nd]m|۲~JyἛw.pT   -%`zJ?[% 'JVN"K]o[w_Ȣ/-LG E ּ8Ge]Cv)3"7TI~GÙ56ȇ^N,k~Ԁ@VΚ!3DVwN~\Q6ʪj=L)Y){ɨ~ 8rN~׍2;d$D82]`Erk+ܭ_[߈t[8edmMޅo'#c9Rrp)֮3^O3cNC"   @v0~ o@msz-/M{QчG}  eX_> :Trss%E_v#f uO T_IrЧTDFLWo)ngMr\A&ɵʺ5"kGߕau$.9v|s/dkQ7Qr]铒G#/#G6ǫ^ ^?Y\F   $@W['狀ſۨоB+]d; $޽jwIꍲc[naMelZ֑2]>~ Q Dpҩ>^X-ʬ7XJlUwHMFJ](+-NLIjYvTԥK.]wLW٪rYri,#'Su,|R6*wUHdiٮgF]莾ݱMV# W%> B=5+d:zndI=%??VJˤbgkcZF0Y[_LfyA4G9T։JZ)P"E=%w{O#Z,=S}&ٲj~*@ Yc]s_,!   q|E6U[VYM,_CnVym1Z[wX-;O? ;;/ ?_ |mzqw\U2}#-S<:Cny A(/X ׵KKsuc3 |2;o+k.^:ʗ#N{Ln6~r$LCΗ/N3Wӽw6V^qL馥N3Ooc2I27e{ߔc-k7k |P@;g+!K+-i$zSo˯e֍eJic/-'d;gy tP)2wOU3ȔgNըwl='_OzU%O% |yy   @ 3Mۄ%/U# qK}c."AW|%A|zjL8gO!/Kn!F#}OɅ>ү !" +_ *}G t>k5Oqώ<m9i7r@ڡV |ˤ;U?䶣]_1.Ϣ 2,i`7*Xyl$s~d"UI'Q+pHǪֳ. g7Jk;M7]׋˄!?:7Lͦ3Тo4lpޒC89wzؘ|`wXbYSST֐I2oiR.v2BW!^so|+ϗop dc;POe^|`v&W C?qutG5A{Jut8_,./C揑}~:3cb7fʗS\C:N fQRosS _H{s'x5d}4Sr,|Κk[?z{GeԡkϿO*/d=`yC_"zwxx0dkoɒ9krgt#'> t |+ii|9a6|)^IZIuσb   @ #}DK{ީMssӨ |>R9O/fzwkO|y(x PWojk(w\=o}Z;*E=ķ3|voW#V$@ Ǎ/햂n=eCFʨ^@Tr!'i'{?ٍ: )ֵvdtٲz 3=ѳ.q |Yet8x~"剢ej C݄A?s ,7 z Cy_`59-_     mEW´{ .RZ^/ɓїr!]n&X+X[ok|j$C@hwxK[3U=|hzRh)?o_j`Ǜ}}lOSta[Dpҩ[P6O{I{g媑=c۫;ɷ 2ukäۧ?N+[~/?}յc2@ ߇x:e!o'.w+|$&,tHuC&>YojQ{ʘ?|ъ)::ƹ\,}tqߑΧ!Eՠ%AOU~!l|7ײf#<.=|9@G8D8ƣt"r_@xxzrRU6=-GK^]M>.>.g\],_)MpS5ŮukoQ>gq_nfI-ҷn~ױ8?ʟO)E2Sr?˹7섮̺&WɝZ+`Fj6SGK˗ |IFvoeٮx:R9wN~Og.5y\_ " |sf.D!eH!zއچ^wqPZ%>z[6w?LF{ /޽\uϒ Ki-qvy;<~XLvgKa;Ġ :4rcK_!e%#   " |sk_ t2Wo_iSU2j)}r)wȻ__|d FCˡ@@F$"ށμ]q_ȍ]lGI^{tL-;o>=}J鶀vQ4NFv. f[ׂG+IPQ&{ _2a|Oٱ C=i?U=azsYo֍oT4{xȯ~5ؽPgEP!S|5Td!T=q}iZ9y> @@@Q WS<-־"R%j5S!C87v"::[d<,6;j˱urfvrUA뤠V=\tr}w1  x [3e{(3C^rY͇8C/~Ϲ?ájez᪏3nS8_9} l/? V ׵{BQ{zi|s/}Zd?l˂Yry,O_&? Z?/evC'/S }n"[&޼G&r`@h~d~1 F>~|y\As89SFHTɊg~fS(9FB—QAUk}_sk}^v챣OfzDۣ7+f@8s@@@_ X?imy.DʷK]Fdty~wy{Z}n YKtwdE^(b. KD@@@FWlmDhkJ$K)]ظͦ˫,͕Mխ|b3 $޾DZ |0@KZq _P@KZ̓(q    D˷~ ܅  >|%>[3ΔTߎix!Awߑ'^$ RU}UߐPKא ' [#PeW!J@@@Aj2d .q|-;D9C5q   e%0%+-=#{=k7-7gTo"WA]{ʣ]*Qj;khs5;ˏgRԫt!)m8lٚ R^Uo\'_$rw%kkB +&ݺIA"^ [NvlsZZF'S[IO0-pT   asҳ_?)C?*i|~F- kG~VU"V4WI+c@@ J͉%eN1O5ˤ6Wн51~H#Sv?S"^b&YdgoˮKu~.#y;6 {2Kvv+N%QM9pIpt@@@@M]8|ײbzi1@an>2'ImfB@ڛX_keҮJ<]{=׉WBoIdҠ{L"))b^N^)) @QYoK2W26%_WjC@@@ 쮩;K+`ZhEycB@ګq}Se"Q@23VI*]~8@dؤ|ew34b2H@@@*pC/}  ._ |&ס\̺bJ%84D"PC-}+OIEF)O  ~EHpfGuY(?Qг#   @kJf*k;Kr':T"  @b|%?/]𓟾-74mp2I^VvE84X3tdُe容U[wѲ/..fʢWeJGK~C)?83Vh͊d|:fJGٷ'yOK>eX=dH>2kOzj.@@@"ohouLWϐ&09yeY?6MQ˰}ADK@@ ]e |:uٙrye7ǼY_i9s/hpPoQ7٣M s$#-M]?i,<5]2zt҉?Tꥡ5r>6wFw^kkuuoYכ25m2fY˶Ǯs382,*Kd~V8ag0)HЄöZ,|/WϚ)ӹds>gv NqӴw Imgeg^ngSޔy7KMIIkXe G@_15AL#`yk]yoK{veW:z<2Zg^^[Jv퐭|Tk Nc%=H& tt|Mf)Γ-t+,}]L&'M=w}n36grnKlc^͹Z{@@@@ 4j_q]5T NπL[ihn+;)~3YbQҳH+#z=0}m%v2~|d:0ھ9'i_1m,];SU|VlI`;bMs'cg^RMٷm,v{@@,@+w7 i}bdvꏝWU:˼)Nuzv9Z#} ezrrUb>HU]c `Ѡ~9YR#su:o;XF|h@fVB'}rڭBWЅL]Mu6]Wx]sFБ.MHRRLha(ײ LiY2e̲,}'W]Yg.W2,*Y9;sջvdX'<6\A6WMs/vmP< A_/Bv&|gZS2KT[3W's?emxt-2թȩT@߳Ҋr٢ v4ܙ.ow }?WXw+DnZoQ6C}(]gzOc\Yr5ixyw huιy1Mc6}46&@f~Lx 6oH>vLmHuZؙuN#4˞@[mു10j3~sNF{>&=Pnl,YmY!   6۵esvټӴlwZ*iпMӮm5ڮZ_ |A_7jsL~+Äic4FOn&%7_L;gjli)qW;m,Ŷ#sXs:1eoۋ~u˶xYE>s}}ŶuN[ӞjGq֙eI-+ YDŽ %_ ̇~*(c~V0=o^Y0%z2۴Q{+Ze͎sr܏M ^~a2e\Yt+G>=t֯3!2_OGV_4Lh5\XYUwI>hϽ O%M#L$ t~v|avZ_|; vaJqMӰnȲ ZAӲf69+w`2[swBmu榱X24umnޢ5}z}z }|K[p~   $BR$QmX?^³^rrm,QvW['-uLZE<*3=tx0{E@" S 2KL~Až?_wPRL`oK3u,Ԋ_/=ꄮzs KX4p3TaFnAjۄy^].:ܾzlZ4WvAuybB *'cOKa5$˄0wl94Ru=l   thS[͕/! uXCᄾ,Mp2k/TUٙ@@DJ_.R>x?:Y/O5RC2޿gιA 9vP?O6w㮝ݩKಓM4B^)W~Ik|#`ڂ9'o}\H+1"  1'?}K>Q*n8WM[:3_Δ)Oq%mrmp. t _ _[f2C$ʷq{idz5e/Ɉ Q $XA{9C>&sP92qC:svJIKMm7A   [d҅):!«twGaWХg{P @YF]SW        k_ vKTM5RkH7uIП4qSցtdžj1C=aB )&))i>@\j:} 汴 q\*R@_=Zd_Ι@@@@ B?L;SHiWɢ]>r@ڐތH_揊 RX$)%]rELZJwwh.m WVn>I0 ߡD S&;4cB@@@y\~|Yj]E  8_H_j2ei;ގ܋D%2wȐcIl+f^^>B{i>bamN^U|Զ{ʭ˼K3dFG|hK%sV}ejGNR2$%3'Ө5_}&wQ2ndHc}}>WZ[v8Pt!1T+뾚#?:k{#{kbB_]}Zۙ:kmlj2`8韟軑$͉fjǏwC^_ZTnѿqی׏P>0eW왋O1r&\x՜ٲr{~v]1J> Ֆ/ɪ7JJ--]da2x?gd? k*sD='pCeۃl,}$EW.?cl\7.s]kWIO.wF|{8׆dW ߽FR6verۮO82h!2(ѯ}-ծR* >p_pD5Y.5fsaGfЕ-t uL@{QkI>H2k=)#9tx_qz lX4SdF\S#弟dJ_Mکkgɇ׎m^}T7v+DWɿI9$Ͻ+_[O|Kq }VY K>#6U2 {#.9,ld- e_tN+?{o]GqnMlb !@8@2 ~NYCxps +>~59; bq w!{, cd@!-Arl!˲e#Kd$\oW]眮>Dz}֒N]_Uڵ]$|?! O槏[ 4|G\d<?7an(lk!X~tyV~r\aTZK~—.6^mdf:Ó?\r.!skA l??,lv?w>`&'۾o )٣&_W6?Xw 1NIE}1c<_OǨ .'$p;m!ǍpS%''Qu* -WoibQG_X1ehyE|5!c 26/-ZN=_8ڰ-NT.l0"2|]U}_r}.1#W\;}' ջ Z.=_Sѯ"vO2md(.d~pSYG0@<'h?6^nӾr/̽.q6,/}mUKZ`Ͼ3_Iµ U co\/ʿ_>| aFr Xe֩S9bzm7dcI%i$|Ƅ@*'n岹>?}&:{IRb[!FӃb `DR9 /űg)HR'L _Gxs_/T6ݍpU9Z-㑅 z$;+1>iH@Y͑U}1k|_OǨtݮt3V;' l$+i(.c~p{T܏M#?0F&|">.=& _tPRF4ԿX뗼#-῝}ً^U 3'#딘~{ Ӹtcgx_ ?[-u g#i&yQ<^}C35¢CA Y>;q@ҨccCл  ^nu{!yW&wi_{WWwV]7̅>h{u)uSukNB1q;Gg[ǜyE u\acѥ:/ͥ 3^>XKtNڌbm騜&'l@ӏR_ᇡWvvwRh_T u|-D2t<*־%)U݇ʠmiXFש"n(eVs~P|f4\ɘ: _G)Jqtta[2OٗHw|>1<}*ezAoٚd/YC&|e9W.1QHci>:^܏s7F93qro7͌,^c[~gd>s8Bm_mB 690.+[pͰ(3`UIg57|Nl#aflڈi>BNg .sl[86:ىIφ3iDP[k~S0Ͻ۳`0y-Nţ#=lM?iL8+gcnfn{zvG28!صmykqatd8+c[oW[;WL͏ ཭0$+i3A&CG-T8s`g=. `ӿpsp[}a]P.eKʋP0˧1gǫp?>kO$c=M?KmupP5Áރ?mȡCpSoƒ?lk'y~N`&޿sx Ny67`o[9κ[-zx{I3܋ףC 0& -o)XdwQ-/xipÜ[dӽ0 9<\~r@IDATty.:mFiݩ}Ӽnܹk΃ª7qu5ԩX|x vlP_>1W|::/:t7Wz(^PH7gWR_=#Lq?@N3f"K?|/CM>%پ#{a[o?l`S%wN 3TRt nC'zV[R [xo>MdN۠vךG+]P+A*~ч $xC iCO:i&vehEU98K4+4Cg~{)ÍJwz5"o^ckH8PrF,\ΠTֽ skw_p>Ʊm۽],ywo^_ Uϔ)rֹGAĩDXvs\u)_]4>k JLh&#ou~ll!gmxE1}+l.n1XK{w;~80ɟuȮT8: <m톶VtcjBȯ4cA9߰6m;p% *ۻ#O$KfHyQrf58甩N?3 nb6y,ޙ;nw. _.OYyh ﴿p o] rVfg(?qR\򍿃YgL±<nqG~ 1caj^O/VgQM݅}x1|)jpn+_e_6}90u|!Jз 4W߼\S({n!6^-xn?3h#ƜWێ4Uau,MF=Gk`>8H:_,Q+:v]&1,kv0?)pmm$ s{ !|ퟞ I잼/=(V{QYWxi-cG_ ,?3ܳF$BG,ɸ\+^ޟ~zW*x.ODVѲGlh(Ͻ#ã_k)!`ڿ7]2.2Y nNA`G(K3",h*˥{Ǚ:ѯmi*NâZK~JqH"9PVɈ6͢җK/DUSwAQreރ4! π#{Vys:">Z3xn䝑2K-~.ꫳi+_x\KZJVztg+#ռ+4U[Xl%yh֌[xfޓo ڃWe{IJJ^ =m{E,uԓrm ݞ7q{C eټt}rq`O<ϗ_yo8[9ԕEcjDscQK*Q& aT&:&@U9e~QB*3hTVD/PV(Ҵdi2VK۾ ]<&^Sbƺ GHMzB/:E$2i' exW[9|^g{Xm\{[ v뿩fiߴ> 8&̼"NCvZUs[-u_޿F{6X6[bK}9$n=*%g#i-]dd;<$^^vo0Uϋ.bOz})hw*gac(p<@쌌hN_G*[3;1vbǰYT{KpeEwȜ{n&WK3 W5ܗdtUA:4]McXHc$]aZėSA+*y3&QSQQGc|=Ү_CóWskp˷ƿP,~u8*s<'ëBmVo&ZZZņ qIalL 6q _}bIko޸KAoRbu>8:/S 4HOba2b\^OGNJDyy+UrdFmT\TT,@^N?y@zd7Gv$dSezNAQP-|Q4:R EG_{Ĵoi `Z_[ {]pb5_2SZ#!Q'}Cy<#Hʫ憐LA˗ʣ'h^<"vFaEXK7=fvxWFEHd~7? ېmH{.&Wfl|U}wvm )8 YFd6I"mR% |TAqHY#N: uO2$LC0AwCJ;:,9v}ׂ8 x_L .GEBUn%}*@j߬hi1_{]L2R|6d8% _Ś7+EwI)Ru0 NM$䭌 ܶbN`40&,Z@l549[W^؆7&\WWը]*n*G2hJ»CU|1J(ݶU|}8O= nom];^.;}U\3ʟϽ_,B2mUw*LN37{7-"#ٷ;U;*Sb;źnuh6c5Jbvxrx@ h}{/ɒdV!|Xj#ci00GDKUNh/y m58JߔMW418گYV?t^'6VPER*G'~òJb0*ZOC2}$z'aquD~[=èZS9*p+h/ q/iz=ֽN#(^ξi\h$@M$}xN N_@! =DXfѥ@ B o> Y&xP\ݝ͞Yߨ@5۵ aMe~o="v@zv䲻=#o!}8NꏶDSBRKyE"K`U=HMU4j{x/%5& j-QiBkt#$T޿cֶe ڙ鐪 ASc$#0 rwRF^k"|m|>FQ>k/,\KzAFk\/6߃^WRsXF_2[P3Ϲ_rPU\6N*uX棭ڮq}.J6m$j]\kA`Dtm_yE.QnѦB5$^T?:Bb;Tg7_:W9%ZeǥҹhߣMG&v)Uu,xT#(pTt?NоEvA[[$c&ФO&|5'>kDl)9B~V̿aq?1tHo_59 [.uG A&U=Jgq~M5V74LNskwmǗdKƧoӇd:ޢ e%,~!{\$!HqXmntH2IJkopxhygHDek=u""{m$r2^g|rX<ҋm!ÏE`‹wJLw $M{(1ˉGlEBL;!ɼ;WwiVO2%j1P%2ڔ.jQ@5탌*Q[W/;Lz0LqaV%h^4QܻvC RypQO`/$R~]l|(X{Ϸl!!z^{EtᖩD蒄p _mI+%]I[*6>!FJErFm{։ʻa<w$Xio&KReO⽯""+{۳vy7d4-Ww(i7*ujK{EV1W{= 䩇 j;O֘e̺.=y )H7aJ~%mUjvV05r~EIM6 hFfǛ7ɺ'9??[۹n6$⩇<*ʁh!yvxP94}n v\ 6r&pO+CҾMSD* #2kQ$?I2%k;<;mQ4ϩޑF~Ӿڊأֵ6@: )#:Z~&$&/6* }-ږE9KËtm]D_ Kliu-**f'&ضLz/ln9\=D/,!/q5 mozYM'(-䑹0YDCjU4]b" ݥۃ2үmood|E/~OZ'"DqP܎kks\ ^;;ȱVdzsky%xrَu,]J?|WfvLA=B\$vp@N_k],])2m>@[ms]]ݢ_FtBd氻{);jxunJ+ѣҶv8ž w"fԞPNO{l uyqB9kd|hD!ˤi($P)SOG۬if[Me]*M&+};Y% 3Y9`A>Dq1.h"#use `i uxݽb`@nF/mAwg yioE^ !_ }IG0FL67ӾoziH&J~OMD$C%({U /*L|&cz'i[{G|SbF5jl": Axg|bۗ5yOy8mm=kuԣD7ڎ{h-߫G.__B󋀠/ietb+h]g#GK|bޣkEx/aV,z~})LRU֐i ^5D'e ƗWwlO{Wƿ=B !b/Q$?#. 7:֎.DϚ$s=-?t\*IurU ?AYsk} ôųˈsA$TN*31GsvYe$RTwc0"GE[4coc _Elc5/%KH>E'TDʨ!|Et:D-zDee*+#BlHe&`򼉓i_JWȚ**CWTVrRoh :CԪXcx9Ji> .W?.~D=tXM.WW[ RΡk'n#I].{H]Ukhףm E72ޘqaڪ˛~+F3!kir'-QRSc mIHPp#fzDv^[!N1G(uTf>u=_I)b%wb$$)/h_鴐?Ghp7!Z44D>5R}tjQQ^ѾҚocos8VMHTzZӪFӼ=/;00`$*rFGfzs,^:I#—@ <&\:S=G.Ey*lLp[hXQD-oˆ\/O,Xtw}&2_UӢz>$/{X,( LBI_!f.tԸV`s*,ׄL8& [=4'y#$Y?k(B_v̇"6!['os$%+bHU.@~ZZ/l3SŻ^T2\m9u"/Sd"׵|mK9\Ux}vdɭl)3&Z:Hjwcu ^j ]95i8~`Q ^ A .+kEVac!ٓFW`N.d13iK=n KKlLUQu" pX)#nwඖ8zyq2Rǩun}A#6m qC94sBuzWUi|.[ϨŞI Wt<ØڎOEo'Z7#1Pp[;☉KSzYcҟhXSa+$l-xu]uC-#Gy.T'R_fpx9M,˥ueaz v>uF1Ɛ4 *{.v !vmit4e)yGw0o/"qPy;QLmpD,P0BxkEY}ȟ23-I"ژʫOrs8jr x6.4<׃<"?h5GѲ#Z~mu#|PD9UMγz#|װںR"b\UhpNygkˍ:oHUޖ2ƶWlW!=u:X4enj=B# <~_yҲrgHiT,2/sfkc)%ӳmeԤ8sA& (ܫ.46FA9BV#&YnSPL%Sqe;#cYZ^oT,x&k~WDJ(}ƴvôӒFlM3Q ;3᫈mx$_a{}p (ds۶UvoKm_U-.jttTпMFC 2FDU4- 0:-ZDe OTa6H 8P1'oReW攽'?6TebC?C/G#1u}*Pr!qN ukul=:jx/ ȸ͠V/ECN.*ׇo%-y SO}\^a]hb=dy>kKn&I.鏖s0=v=[m[' UUՂqɷj;H] =,/Ƅ|@ZL11mVx/휿\$su:`4Z}XHhshy7Gq?At:ԃf)Y=iT c iI0:' } D⎾SRɦ U*M8J7mX65PSQmvO">luYIad[<#ژʫOѥUluQмMu%i=ڿ&3}yItRKl-mq/Y{>D&tې>և*w~Z~驏#0Q8G^ѯK<\ȳRUhސK,Yç5ωI_>\^(N*tnzĺM /RO2#rrl#繄 I s4v^#wosekTR=g>iŞPsXf}`+樿R.L$qʣ? 4}ʷs"7VŶ7˯u{:׭2߫0_PS/u%ÇŚC)^&XDiitj:Ib<ʝβz($9V9QrsX1@imc]MKM Кr;Go5ͽgr*s r6{$y_èdz[hzl? 1Ɓ#{a^QK0U.ܨȶ$yjAC-XW`H TWr֓i%yi=kũ 6 &ՎƈAᣂ_n]׃E5?_kknj/ɵ:n4_zNHU(+ylX+wQyRU^^B[ zNh |}FR6L\^Je<u=&FHy#87'n-꼢BX\s`l$ui6BV#&9 z$xcf(h6S1\Ʋh^ |\E ȣbyu*q}%4mDq^!v%ôLT<؆$|hK6 MbxjoQ.r-dz$wM gcOiG2bPV HƇQAibX λP&3jд VjNtȻ5oS pxUƛ9—ux=!%I=H0┷ 薇&2u޸] %yRbՇk~m=9e'`>rg,[V)ۧ"Qynʽ$5dQT{[:9;}f Fsa@f*Fsݏf+O _>FhĚVnqtHJ{]?T7մne^-TW5"tCFU luq<|F^:yRlUeoWʫ4ZrIE>CJ42>xIӜGK-mܤ+5Ob1:W~p.>uPw\`5{#eտ F> .Zy?"Gƈ(9v̍ JW4Do$ys,=%uF]Aط;WE|)oZTR?꽊&G2藤 d(ďTG->q1SijP6F)Z'_wEX::WCU_k*jk}9U9"͡k\Nqy;mz0tO4( Bn H$CƇ_i:;.t?MN#ΪN&/)9WWCnV=}}BtI?Dv3t[o6>u|YږEZ&EY"1_v"J!+4 `~_kG}pPg %|CQ"j5>8 ߾XB>h' (W'gw'~֕wXzmmۿGɎRj|{Ͳiu|E+="{`{_\dJ2e>2X[zVcz3WX͒%r<Yx́EUSUQ2}4ɴsѲ]i?i~ŷ{vGEXT&sFwcaUSt'c{l3᫈9Et\JC+tDj+VRIA3Z:i$n9xsD]́F^0o|uڰh[sŲN^F~}%rmՆ'ƶz#.ez :-LTKPg[9|KdnW5fO篯[ҮRoWSSbU#׌D X/Wfo* 8^ o>XJ"%*?kDPGosҳ {@dq6aړʁ,D~&𯫷-<1jT$4jLj(d\ڎ:B_tէdk__YTdvJonľ\沩j[RP ˀ{\gt6<}˜Ab\m&:DyUb{y eoL~2-%Y=[W]o" ze![LhDUI7~:n(uIf&Qb?[3Xj!&a=VDgȶr΂2Fs:lj_.4&DՃ? 48߆HFECeu!y֢lyoS1=T:yy[FqN\ykLHcڒD[oKCm`LyJ#X/a֧͋h$WB:GCR $Oʋ["^2Mu [WrSӂz;d=B15:_l^ȜiecicĻ]8 qE|Rd/iP_Cj-kT$>^BE_GȯB#aEk>зyKM)*eE$)< ۟zM@IDAT/hlCd[/Abü:ϿƓ"y WfN湘sfis$S;*_,ŚR#2M*LX/EYކz~Ŷ{T>*V&оcS Zq,٘nՉ~ _ Zp{ş֯k~ B$6@Y uh\/^xwrpphp{ѽgct+0U1:]ĭu۷u6U-/[ n9]rwzHaG cèmʤ[&ں n0:< :ȃ^\4bxi Cjb\}>xYJVb*נjkʗ"̗ʪD71vJ KY7|3(͘?UȐmݽK y:wg= 3RCyd[CYyOP>I` [[Ł=}bg+[Ղe*m_I>Ծ<-{~sbgZrn{hVGRb~H M[P<>"^|yx}xWij(7b\ _yE`I?k^42-E0 сjidu;=RZ _oY˱Fz1cx_5Pᶍ|D"!vZՋQdA&UD@` %uKAâEm/ԅu3 y}ˊI Wg%pE D$[Hy ׋8 BYbKurBnX9|H,awmm{ u Im*^bI&>vmKn_']"6n-%Y)cM?Ah[+{uNzeoQ0zpo뫞֝׋'%Z$5}~}Nmluw~6N6hTVࡶHuXBuꗪ+^2Xrtէޢ3oS#7Ś\%%T Onv/|Sn-k ͢" =ʃE=R Ec;0rWK(\8V{vңͤEmKޏՑem1Mʕ Ed"NӾJ}Uk|R#h4IKǗ KC{1ڞ:0=5 mnRv^R0bkoK$YuZ#NZ{!j`;V7wh$W/8/Et߳w]Ylޏll Y/Ӗ?GNH2vD*jK<[)*@Q,o]S9'ּ[BCN9NY+&/Iz@?$ƕ%Ԇa{#nmWf_HqE=/:öc:.M2כΖlh9) [WBpbRL~L8_|9dsRG^Qq<:5]is_ak'{=LDžyEoks3m:ѯ0˺߸Ѽ.Q_-6=(j+$nm6ԇM*H~墶Iwv/X:Jեu4Q1$*2ˑ.·fP۶҇?ppA1FZ?tU\y bǝ]>t4;i~ѺMF*ݪoے_'y{ybA6{xNw AlAk>UbKE5~ ^|#ypK1b_&׾>LnS"c ["LB+շxv\gdw5io~^jUŪbJJUuN+,m/q-O, D=QWjH5ށ c$_RaQ翭ކ0~}MRs9ts)!8b{}Qֶv>H䎚6QE͎TkQ2xGN=eWS(3KC;j ݶ^N On\sš&DcN`p-$E:#5bv RZjb[Ҕ8>&ٴ%ZÕ}3#h$gk;oocX-e[mҢ9 ̭O94uʏSqѺ!yz0εAXAٿzkrmY!Yh tT^92^hHe#)V`3|;95RuA{h!۩FaD2ϴ.~(û 2Wx}mzFT]+akDH= Lm|].deƈٶn]:NFbũ sNKt+ښ3Ƴuϸ{OȲκ_/}"]깋~koMiO>}_8/:_#a/ Fk%$9\#%2DBS FZ 0Mg~/Fڌm=}X&޳ȱ%wG(/ǟWt,̿m FJgK0Ug>_IsI>;DO_کBy9.">{G0 Li3gL h}f ļG`ll N̘Y)'L֒41ϤI0u)0c4m ÈͤISa)aƴ){ɘ$8e';``,şg`|rd/ÂFGay@|}ax4<:1:62#Ǥ) . Iڷx3ug528a)u\rԱ^LTLa}0c_p^ʎÌϟ_8IVN>>;q>D;`lt2|yXxĪP}\? =0$9_r*|0_n3etQ _zൟ]RxG}vzXڎnu[ISDqMp8EU .A}v=i8Xy@!\۱g©cv]h+@ޑ0_/rΚ3uOҀ~Tc$LI^[L0޽03x[$s<w^K&]2vt]2p 2Ey> V0Q:tCr`%ݯ=3O;5zr ܀67 z[;/8pWVW+8nz)83|_ n2}&q,2-mtA`/ &O>SiK.F_Wbһ`[2]dQX˟d F#ڛdwN ȕ|#˔s}>[3g |B_EǃBk^k\}`ߑRBoLC_?Z+-ߞ9dq>39>襘W d Z& j|Uʺh+Gq懂׏e$LGbb?K=\6:ZZ;i=|6|qr[=p' 'x"0ˢ= !| CܡC\1 X'MQ .z\R4 p”O 8J64%V14E`91xK_nʦ^wϠ1#0 _H1`B`V49  7KZ.(&#ٷYfj8qC*fxh+`&4YXW?w=U[eCZJ ׋ZG3HO0GZ4@ xu+Ʊ !|ɇrq~$#\! >EIpF#08.'9$KJؖ0K(m 8`ױԚ\F`+?jW2~ppcc0y:[oܞ~2dG~hq\B,#`B/^${ ;ukξڍw,Gp)й0 ?@dGKtr%FxDT%ANHC0&GL!/)(BFhf|Á?7c@>{Q^?'J F`b"m*Huuo ;w|Luv!;R =0i hQ `sFC@hɗlnv48|Ӈn6Rr#PRvC}~4-))xY?U 8k'+%8\SVe:0ш@懣,#^;hqlB _RDI;r'k2-88vh1ۍQ&s\#pR&ctɟDxq~\cu,F$zIl Htegw;V;jcZ@IZ+~$ 4tAf$1^E3šT6@/2㻕ZKݨcjhYA[y`Fއ %+TVUU`і2;#IIc:O(J8?L(XXF@"kc0k6ዊ) _Gkiʇlc $d q@-%yqD# s|yGXƜv {زv gz4G`u%FE`lh7toGOG>p8r+ZsP48r~8(>qlY[8E3#0#0#0#0#0#0#0#08"P —`='? #fE+ _E3bF`F`F`F`F`F`F`F` lVO?4O~>c&|&|٠iF`F`F`F`F`F`F`F`&|c3kF`F`F`F`F`F`F`F` @R' e38N0#0#0#0#0#0#0#0#u'6 _6qF`F`F`F`F`F`F`F`FE _LGhF`F`F`F`F`F`F`F`F`"ugÔ)S˦eaF`F`F`F`F`F`F`F`_>O'> f—Mb— j`F`F`F`F`F`F`F`F8~HBO<<Ȅ/.Ą/8 #0#0#0#0#0#0#0#0#p" 'O? _6] _6qF`F`F`F`F`F`F`F`FE C:eӅeaF`F`F`F`F`F`F`F`_5mτqfF`F`F`F`F`F`F`F`& I_aҤIpaeLA0#0#0#0#0#0#0#0#0/I_СCLBƆv@`NSk߁̈́} Rg ;w_ hKNٽz}-g?L2N|:`$V-Nۻk3̯\ H `l脃0>{ΗiL56lNH/{|oyNq~kH V kހ [vL=Y0o,Tc{am^? f}.|c^7d 0tw;'bt`F`F`F`F`F`F`F`F(-I_'|24O O^STMc`Ɇpz<ڗJ }?Qv^xu?ƿ}<4^Z<ϕM_ tuKKo-QV5wI]NCS{%%T5 _!zh=|lڻyXtukn Եu#3#0#0#0#0#0#0#0#0@ 3tAI9NV4nBWL?RU.kÓt. 4ɜ鲅pY-ʦ^wa\DKP_ `$|5r=+˾ w3™'.L fs*կ Vc45l^RPV~|pg 2h~R'dF`F`F`F`F`F`F`F`b!`˷zOd—MH^+wE8VhlK0않vJ*g&8M>Uݗ wVc?nuztlkd-.IP @f{fXf}ݟNR䵰\ᡋNglRVc͓+aeІ$K$ f״?5piW2h#Wl/_KpNW4`E vs?jzY]<`$4cF`F`F`F`F`F`F`F`#g`GZG]ҕ_,i:ܒ AU2w{ }J1j!t> $17i ]3me~pjwm0 ?Ii m'0sKx[G`0#0#0#0#0#0#0#0#PlN r3GѢel_8EܲKH\=CH~%?pǻݭt:ntHw7?'nF+iȦlR"/0]Lri|TU6 J Rz]x)*(+E"eEZP,_XTtuAl,!$tBI :!Ν>IfI&<'̭~{(@ P(@ P(@ P(@ P_t{I | }y+6<ѿĺֆܥfv1u_ À'7j˞)̻:Z_M.$K;E)q'|ܛ`%ЮX[$_IY;/]N&Q\15ب3d/pl(@ P(@ P(@ P(@ P`˳n-(@ P(@ P(@ P(@ Pk |T)S/%E.7 O)ol4QWW ᫲Ojluq^`'[Om¿9[5m 1vWu[&-nFzY.1߼LׁwC Ce[5X`zOuh=n, (kt,ʦOY{FC}V̽\&r~S|H+W̶Al# P(@ P(@ P(@ P(@ -WF6E_蝝poHmO$}:]x},e*L4li~I I)w_VJbƌb4Zcڮٸcz6@+J1Ul fB^]jm?13łt/-KќF P(@ P(@ P(@ P(@WrE)OM;xB2l {/cbKNJ9IK%4Eٸ:exO1wxo$w{!Ff;>M{~K2ġT#[nØ9Bߡ0X~Wؕr鎯ǬpqCzFeb0Ūj'ay?wm u2T@826Ko>?Ol0G̻jq:5Ohl2y(@ P(@ P(@ P(@ P 0底ǧ,OklPMHr~! ҭ`@h=44vXbr2q!+zY.d .;ut2yfȔ[++pliǑXvыNj-3:dg#+_ 44"#fݞ.(@ P(@ P(@ P(@ P+_U?C[5k~Z5Q6Ea靡blQ6 (@ P(@ P(@ P(@ P(P_eU>q̬ oy&-OQ̖^{#2u;0R  -U6L P(@ P(@ P(@ P(@`ˋз_@96 HJJO6(@ P(@ P(@ P(@ Pp_/<6^m x5ѨpK)XH%aX:ni٣I9(@ P(@ P(@ P(@ P([*m W_T.B=J+R9Gc8q q1-uۡS(rr6 P(@ P(@ P(@ P(@ 8`JU r5UUz(@ P(@ P(@ P(@ P(@-_^)@ P(@ P(@ P(@ P( |yq1E|(@ P(@ P(@ P(@ P>(w_^)@ P(@ P(@ P(@ P( |yq1E|(@ P(@ P(@ P(@ P>(Pm_3^AyŊ&LPqn P(@ P(@ P(@ P(@ PV*HΧ'˗/Gll,:WgߐW}z/B+-S(@ P(@ P(@ P(@ PU#7aڊo0e'(@ P(@ P(@ P(@ P@ |TL].(@ P(@ P(@ P(@ P5O//SUS(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4US(@ P(@ P(@ P(@ PNcˋ\5(@ P(@ P(@ P(@ P|P//4U@e='q@2s6ChtjMcм^d(WM) Iʺ+7 &-йUedctUi[Ps[[Ni\-ХE#E7 5Er2SC򗜈s'jʦUx;Cٮ+"cQǞc(@ PU-“s}u.RUV/24\Zy\hr(@ P(@ P#_^}ZȅSd#^}ԍ@Pppئ"^KQ}G`T>բl^<BCa#x󬀾2r.^DNVշ[֞]I \ږSx[P| ׯs[zEʟKRu8A>-,0 .//ME֏@FQ g?Y}^TX 9b"bp Pz,<+i]7< Ԃ5^.!Weg_>"Ԃ-&R(@ Pj_^܏ |yig~ɗFFdy1R2|-Ν8>|ڼ:ˤ_|F: mtEeͺMV#xjVdU;s7.Cb?nݚ*ڮcx~kۊq^ T =#VOLFLբLձy_4_X=ъe(@ o 9[¹4Ν_#a3W]4i]g=N|_;]nע{bN }9vZEDU2r!m-NةSKlFql*h=oSc[}1!$5F&&b'~_YiaQ1/}E^=슭CbL@GGHC4h6⪸vղv}됮'-v,>Éa6g×'!5Glw,yGJl׳-jY#w)۷`'(Py/9f[n- ؀_u2.r7 P(@ P|C//'U@W.6_ _Wc˳WXehghuWrRwOzX4+sqx(~êGWs3Ѿ __9|{>e݁?vvY+H_DF`_S;GS5/88 |X?,e Za15;R Vi4Z.J(-R*8 rv P(@ Pi |$xO $d=QߘמOXZp<>b*\l_k{؅2& I 54k\ e~g`u ե%"7lפcP|YGGb2?N_)?oB,dI{|~|̼a+V}q1A5_5yr(@ T_R_<﫴Wr(@ P(@J`h^0_eq 8HKK ++ EExh.pc8wZx DPh$lpp|c _];Ӂx6KCDV )tK80/A:@ꌟ,ź\e^.0l@IDATO 04 NqͷTa6\? uE@@MǥD:.cl`řg~T]Em{*3e=s50L:O§7.Ipt.ڭ y/HWsRG=Hu6X,*/i1_/aPH'qRw>)G+?F6EDȒ]: >u_CcÈ_j>װvB[38zFahP7 M4Dddj}eẬt;W0DG5DiRy0V}z4~q֨crR8ܟ? &(zIz 4FLĬyXήoËƯ7prcr,dPR7CkN*T lҮos ?vjϿǴJwP%d~r1}JّdΗ-ak?,zIa Z0{0>~{p̒ēo=F@儔}VW_l< =l[ģ;QZi |[^ţZZ3<852 i &`3_ڧ@\8:[ 7OXQjU/_Ꮏ @xl;}, ce󖼁)W΃xYӲgDcp6T伏*\ (@ P(@ P |yӽ1I"̯`Mo>3_\蹅hsd2|Vzl11dvNm Ml-Lcmǰ:t֙Jg7Л_/ %݂Z9g?i H*u>3*u7^(U]2~A1RiD8m,Zg `}vwց/SWǡV]>[MW;zPCR @՜?h ۰@ YA.M;5pk$߲>Ǜ ǣ(utR@KCʗ>wCЉ زNu*7 % N__sק݅ցx`H{uƆOךX-# PϜ%rشE >)} mY0a|We$ ?ĈHC#v15d7VMF` |œkˏ} x8WQ7[#'UZh%ЦgKc|Y#SNaāRk`?>کW+rY_<"t[?Ϟk-9=hw0}o^{@@csI/C7~ M rc g>ME3བྷUxm8|1*28_LM3r`;nԟѢE^} ^պ|O(Seұ>{aZ:%².}thz˫3)m3'}!ucKc5HW]:V {VTKZ^VGը!"c|ONfAhd荭pAZih kұmo6ikaÆY ꭈ7N{bN77kv֊crUxL5TQf_!(@*D& *rWWt(@ P(TZ6^{K[e7K]jw 8 ̽?l=+-5 |iF jy &232xec_i=k%]4J]J+c4iu9'Jrur%5gRc ݄j2^Ko-[Ngq;*5FGmgtUmWYI1t6glb^z P@ T%_'k@y_9,{lή Q-|%=MsK/ʜ/ŏ*.Ͽ؟b* :~:c.t%;Up4 C<3lИ@yNZrW?[U4U<1)m> n'mÒ.icаQ=CEWj᫿m bmWqQ1>x}uHWLS&8 @فغuzX7Wb.uik5or<`Ĕ.L3.`=bB,a:hLKK _1/uVѮp2@_5sW[4C ţ(@ P(@ 8`JU b૪&Pj૔`VOHeص9Cvxc~= 40i s_N`9`%`˲?M]iE܎7܂dy2?[0~t s6VZD`1_Xw vƤe-m^iQaa-[sW?_Rꃊnk.y_>"aQ)@ P(@ PFX">WJ۰_a^x2uϯCjCݍg砩G K?M>vt~!l1U6&e${_+N\ːrt(_nqH$ٟ? 5{3LHhtI?ІiseX,>Ym[V.m8`,3~.^u)'/8gqBm62c݋Ξr6>l?V>_ bw2r+L]cx"-y%!Yk14>>8^FB,$3(ٔw_*> |نM+Y~&Q&}l&J| _[apD=la>0Uc\L]=`߻/^SHz7:J |̓Y Z-ؾjzDDi(@p-UZ)jytx{9c૴:q(@ P(@) _^}Z/S+J>$wGԿSԮ]X3}}mXcgh~#*'2"&,v<lJ㿙#,a/C8XqۆN߸ё(<M.a\4F?o9Q„,aBg%hYk]n >Vn-zض$N=6_/ʘZ)|c ip1%`,_6铲_og\r1)hG*< V&6nzr"_'- |55L}5~dµC -wJ aR[}7DZ3`FOj@ف!غ2[(._P Sţ!>R,Tғ6 b=p<8S{؆Nk2\߃3GUdא{:1ix!V~Be1e=(@ T@_5O޹kEZuQ(@ P<#g˵ƙ(䥟E!B45BxI'+< 9( @`hEu2I3ʵ}90׼Ag@X"!8d)ɅꏫX貌ףXKs]瑙`[/9_e Ɨ @"zjP5/W_cW!6U$gJSB^HKWi( h(Y(ikef>1_@}ANg^Fd d!aD]%g!$_>kլ8ef^(YBQ2'o |yRˢ(@WJ | jy`\sT(@ P(@$_^}ZSF`˳|yx5vi |k |7[~%@e*V;7_w߰dj_5˃1( P(@ P@ 7dkaaaS\[y<mo+>=_>Xx/ m{ ob)^?v͛֍eFe)JpN0.:-GzN׵?ܑ|[h \R]go1[x%|gwXw޿S.nHSH܄я< s_-߽k\&׏,eJ(@ xN`/i\?N{Jϕf-I]]r%c5k5(@ P(@,w._^}Z_CdTGG#QcQmnqQ.]8s6k箽]KV])j暎]Lc|`4muի*|Ο3gq: RU/aV-ѤiMK /Q+ƅ8q8q}=+1%P1ĖwnD$눈f-Z?6[T(gOBqI9#W+m}\0(@ P^`Wa4 4#ZF~<1F@/ҵEf0"fp)@ P(@ PGcˋ\u!#7 "Eu#DUP]N\Au\ƅqu p.+W*SaȺ!_+= LH`\ys.>S RB6E@[RỚG P'|n6rcJ_ufs(@ P(@J`૒K[<_pN`ZKF7rMNໃ;á]xc_kݶs+G`ܢ }1}YJ T@)}ha+(@ Pu9xl8/K(@ P(@ PV |YaTCZ@I2n ۺDRA ݷvbΟGnwa*d^[eaqDH\;Vn7|^@/U~7} k (@ 6z򫽿bM9O HɼQ(@ P(@`2T]\&_.Bq2 TpۉC2gs.|^6n=[1Zȋ8"]pG.Ǵ&vϞ/7n iMEՒ:ffd 8$׫n}kᯢ+~UtlPkըN5@U ;S[ʼn-kj8E"uh9pl_(@ PpC:;|4OE趘c?~Ǝ)ּ57FFNƒBX '(@ P(@ PrnSctb K`EW{z,-){բ_)FvA>fkyYȐ`(۩IKMc`>%s(# #0, C u/! \u'c?XƩau0lQU@;kUPBK0C]'zc7 Hco:%/ԫ y9.䫋$^]QuP].@|)">42e/S e^XꠡpUu4iΚS~RWU=U~?Dj{5-2/C]SKiAUԋ"U7d:YQyiezӽ^=.,3KwҊWzvT+,(@B\)!Fli)@H%- adf6 AT0DJQG{X{ߒ{:Z} 4Z1kF=7?*h0~~> \ρ+ZRT$Ve.8y\qҊLde/rȰ9-mzmkqjȗ6n"~C_pHՋ_@焟בϞ:ڽuޯԏx7jrgߊ:;~ ,|O#sFrqs:u]w xg<7>7\g>NsFW굼Nq)@ P(@ P. _^窫Xir4/ᘼ|//Pմ"g B,_~.B䢩v/հPӽL[H"ءZ{9 },X S2\IK^)!R]VeurHBHu_?$ ra8NgR bZ]d/Ⴛ\սinzl7 /%JbvZmPid:KXtq4t\Ktt_/82իW*8f!tPF g/% _>8 ;G//d:өב24}iXs@͡O=/MRu a*q*xM'!HꙪkBO*0eSj<7?S?l$qu$7 P(@ P }-߹A:`V1rqwG Ţzb[Ƽ8_[UMtY5$HF:`RZ0YyT퇤#Dn[7CѡYC-l>y.82x"$ m0yPMW5o˹E8nm-_/yQ;y.ً?}!{#Ժ(PTn_uO~d:sOoA_=0\^Wc`B~n!(@ P(@ T_U n:5 |s`SCVv_;uвA#p_xZmC\Ӯ+n6VMʨXF'+G>|ѝq+\(@ P(@ P 0ŝj#x֑MMYzPf9]wtZmUGwg~>Zt~1 ?m#op$0{;h싈.yK8#!ݫ PIZ/Ay@Yg3Z*I9(@ P(@7rӓ2iQ.؛IVGS:'+~ud?ʎ2O}[WUN9-pX{ޅd骫|4cŝSj\-oV: xQk+7(@ PL*."JpHP!/}h kQ,r BF\>$EAFvKzz_c@"Z^a*a[P(PA3eQ_$:O_\bP䘼B/0 ɁCt^f>(@ P(@ xX/85]@ Âkm@H60G-~*_u׬O}SrkMEeRV" ր-&TP7T苷 __(@&py AHHk%!{i1޿/*HZˆA=cOsPzDN:5jʗ^>CrO&bˑ\\Ɲ"!6=/MR_ˁ 6Y2z$oI qu?D8I\,w߂V{`q}-ɣ;_.olWLc#S./W[:Y&L洅Aa`9-evl+a cX;'_rcyhmZ&**r~VZ8Qwsº}ckދhl.H|KǷK'=ap敫Ot /޹^9pS?AQEu_!ޱK9YvX@r.|_·yri(f4y>^tt·@VW:f*qMe<^|f,_Y;x$f.iSb¤Cֆ/|3W P#"2_'a<4GѽayKw|njz+˺.gUUCusP9xe,߶ѥg[&kO )_>wǃ݇cږA>7>R8n˿ky^~;Y]VSD5k;1)mZq(@ P_mux ~ؙf5?"#Xl_5[hM/=~=5Se\ j nlUJ~HdJYwhYvUd |޺9Pa-[`tJ oԚDZ ڛG z_+䓗dف j}9Pu~uּrs%LTVi ~8ó=qݴaB.g" f?ϮE(Y? ]N/oZuj!%voaa'֝ uxvHYaiߠYƕ>h1,f%l8ch͗:. ?ex:rQ2\guMnu7z W1Ւd!d.G#$?+{SL=F~ :6Ċ0R{?w0ݚ&J|56?/׺uMpǻҰskyFoWfrn`}\Y{q^Ziz.eɶ9UXs.gUCӇp9M')&1Z/:rvT 5iy,y0ZV?%Sp}+q$;Y rwɘy3JE֭#_%<V[gD5m;uq6=ٜp8(@ P(]}J{X a1=pu0VPp>?߅<=mW>qt]gYUkk5jny!z}yY{*c|y|Yŭؐ.QV}I૾zȅ;eO, =_m=w@suLĦ_Bi~h۠I?n6 U[BhLKB܀G#ny7g׿6O %Nl/  ܲis 5["o?8z伸I _m!q.Oph2g.8zSAEncםD/GNgb0`4-Cf67]F2~% -ZšS6V4H2˶6l6͊i̔fKq0ےYfGZ+k+7E^֧~e܃yo9萲W$iɰ:&t}aՆgBe_P=ѥ#%@4FrtxrdCI _ah#,*~NルٍhՒLݱy m? EiI1,5N؏C{\:6O6_bw FclC@kx8ӊR1$aah^c %`Y\c]~$;sϧҥZL\{e 8$1H$Ua:6h\Ǥ]RƠKhieqh. oV 9~5֍Dt{yhm^ba?!I9hѦzCehnmR]:ח"ӶM& ѧG;r9|o(ije])g!፯.Gukk8WJӌ+Mtoc%"YᓐDu͖bd9}R]v@6j3G;lBnGXcrr$qK9v]ϽtkJsC$OKѷLAy{=/ ?.caѯq7Ncz=l}X [U4g(| $9;tد{hXgx~ن=›u!)][LاaLxB@IDATk'U*7SV _OAxt4CWm3P/ʱZ!1)U>烵Ȧ-ץ;8e~y`rx xʨz<,GyoSCM@_'ݪ[#Zv+!v%&iXU$#֟Kwy]x y@Cٜtk:gգYOCȱVs$cgʫRZtF>g3`/%ɱLq[3ږ,_<4i20 bX-uZ}O^O ]tG`;z/1Mew>GWlT򙾼n&rs7KWr-ݵ ~r\φhS@h0ek,@uo{n8hY=>/m ωZҁM[5y[wxMmص$r ]9X㻡WBc-4=.Cf&Ń_$bMpFۇ Mgu\r;둴~#s\{P4Q?;g?RNqe ]dj8'E(+u+tru}[JϖRא r="Yfh8NVzg>Mkur_.;Yɼ Kݩ+;SsY}~byB+ riyB/[ځw#,սc?/qL$z;1P}Z`ceuֶpx*{Xl6̅uR'\\0H.ʡcrFmdx3Gv[Eb>J>*TTTֺeWm%Bm+Vm+fmѴQY0b 4D?)*OC۔ jjL7tIH$O!hΝ3s@@O<ޙ93sϙ{ $9NR +IM3Pv 0&)@@œBۿ)s_syFwVLrc܃[ūP7?YۯYn4(nth?zm#I}T. ,7MN7.-fZ%2/-sunolR=+ts6o.Q]W+["b~wmSy](ޫc .Sǭղ;1hQ?NۑPb+oD,S:lgxӽN=iVKNvj(~qn7,tnOCvh/du#=>zƽ΃˵׊D;3\}Wyii.^$H>{tۨk礅ψ]z%C-,Y+Lȟ)t:wmcLMtI,x9bݒ4_umgT]Xi{g{AeY2ŀ/#mK51{ ;[;覩,i'/[~a{]bb~Vj"0ktUtQ茍 Q\m5`kceX]ѨY`ҕ.-5lTam mU8:Gm}^WOn;c5h&M!uMV|=7Q#jme/N!eo-5ω9}6S_,&ϽfKFitRq{,?Wcq*!=2:ktsDgmA~q(R:3̽[?#ħl1Qboioe@u|q~}=uڇ]Vt} P'KNu-]jg.O:&鼼0Z,~Ø(V!+edNˮk Ĕe+:򹧩Aו̴߆G=~%a1yYs ۇB buUPb,ϣRL-N&4a]~+G(*Q}֙mXbeV>|]<':Oh?aѮ<\&H.b? &V"s Nϥbla1kD>;wQ}>11vMğg?Oƕp֙$%羑f0OQɟzhu +*cjCiY"''GdxdUE4N$,d|=>җV֬Ư`b<:Շa|GG "K9yodmN:#CFVV:J]_ynKV JB~2yO٧]]cCغONDGw_q3'K4Aא d:y1q\lVD ѓ,Y_QUXBlG,*~=]L9 ufP|ɶmuM~O3iyrE'3=+WFd~Y vYfkO){{+rڈ9צX';f1o1ӆc*O2ic2ߚtk@?uDL8 S~usQy݇mlھKTT]g(V껪`nytm2ǧ0o-'ՎQ:0S)'ꭺlMuXO Ъ0ǽvVSq1e<1szy|VxYKdb:p "_c4~m~u; GeO=rZzi&z_JƼ|[GFj꾒-"G2#"x\)ǿ G|NAry>߱qH:4]`P{?p;@8ot`_։]$x ` "k5qfeg(٣3s4Q?t|_Ukh36}H)^"7n,/L/s}Tz a w2Ou>LrnӺ]ˎKҕ~2c w]| 3pu'yA|N#>DwǾt_+J?'e!D ʡ}e_v"WcښɏaTNWؾ!_%׃ڿ/ +K'gtK74 eyaITgKXf(-~x< =H8ɤ1q?^K䵥uUɯewmQ:%iT0\|ݓ#j|VR2OjKO`Hn+!o%Mo`VjHu`;؜HÇe[z( |+M#bo$qsյb$qp6m4WVDr(&6;۾T:KG'դ<<;iÔ:N\#" w:A>  '$+^˞5Pvn&5r" =7Np)%PWU4Flh;,^]& jN դmxΨ3nQCONފZ6ag "YY q Ҳ^!+a0؆-O{A5~[Rڸejesuڔuv`;lEEJV-=OTb۸tuG*0NjI+;86B/cϘtB3 _ƪCRs ߦަl:9F^2 HoϦuhyjgǀ:bGHH%`Ƽy۷X{zc Z!^kz&],ўQxõb}$ lSfYW!)Mw@حqXn{.j1wϛ&2DSceG+Y X=mCW,` -W^KupzXA(Ձ&\[ˉAUMNЧ:@Bbc&\EWCsEׇ¯GT۔FSKG=mTeL=t%pOh]S$)iPAr+ ~|`,7 *(G=:?DE y\C_,Zn]Gu,*򣺍 qd`W u\h 6OuꚶbN6VtuGc??&v_ zwt@k,%6s.TQՋa~|YH?349'2'&+>mSٰ̆:_ߍ!ˊսVYtWcqVhtbh!dFvLe"i(.)7buTj? l4't |ߢo*mZ~[-<҈A[N]Md@qo \S~nA2keFQLx l'biw2:oL~ISC'du0Poo-)_u1)sF~AF|iNj:} tj!r qV~XY~䡆,o_iKNPYvL5y7+'uLnN~Z­ ՞-ߪ]^;(K3U aA[UdѮzşQs8b+jZjToenfk7h&gcOh;tFZ|uqfN|h([a< 7mr81IB0tka~(Z],k|}'irUZ̎k`އC,r *IWÀ/ΧM%-l:k}?r5k r?1d=5$_Emb`0+wsw` RD 2V';"t0w6U|yyQ|m%hgXb >KPi.|-еL@^~ CgbCx=2W[H3WVacJŻgYWgP|>q2r҇QPﹿuԐ I򲊺|Y%=qHq 4?_% jׇӲTqLR{ldTt` SpW R|;DO.6JI]γrH3Y&32vӶH_2|ll/=S)̇ WirOH4RS4?PiOݰ u#p…---|'}4υ֋-몆Ko*w.lXevª > e0;k\x{%ϞaDV`Mxpfy8*#%p9Uw+k{ɟp] ɯKi0L~S#8C 'a/^sdjxn]pJ"JypLAD%:o-O/Mz_pOqip୧ W6P<5膧oIyQ;>役6G0kwt2ξ~רzvCRYnC w\C~On-/g[= qWERu}`pmD]><%p+gU>͝ Ue}z2]i1'_m_r8)p E;g[GQ+`<NǛK^Y3:⌥ wQ:XVAZ>4V?Keӷ4fw]åBa c:BdmpN vJM *FqL}PvPXk 7+Ryz&;f5tgK7_;[KpEhooٽpٿ?j̼q5~E3}=|7d;7wwfO |S(sOzLpCzUw^۷lmf`IY+>>@lj7D7Õڶ9N`CUHӦHt!}d@9j:Gg]Yn~LBV׉hLlۙSFڔFҾݐ15^wuOoSк>+4_#s8$6Xr6oBK+ЧJU }oo܋|*/)8T}aKSy}wPCپnD}={;8}0e+0v"v`۪ķ">kL~2Tѱm_4z}?ӻy)9mI68_`s6!mS;FUTPn\%7_N챶/1f!쬻ח툫̢?u5ݽpz_lt}&6>`L#g̤d{'aȑpg駟%~by.sƿ?'q3Xw_VRLLqyuaiVl>~Rg 㯇_U8 U"I ªܖZA&H FH˂{<arF%G%F:d[=s8ϘtDpj^]uuk$u5Ö*v k]Р&kY ^=Fʛ|P>O+ϗ/,&(}.NĠA?tRZOJ`Ŋhl|=8ݾ;UJK7$zh%R:Vo7v3*;òNc\oM`O>+d2 -+Im$AO0'wDnЬDlMӼaTc>=o_'`υNZp7f]ߐ ǩh^o/р% |oz<ޅT=ލ9>{"|M^iJK@*# `E#Yg tTk q9g?<&7·y |eP3ꌲ ptq+P^|u ^'#T2Ҁ/LKjFw?o%7Zf=[gw+|/eEh0~ִߨLUr> h'0F~*)oL-޿l"Oz'F73t >{>SgO/ûfXIԼQgsЗ<Lļp/ѵ𤚳x_λC}`7ö}7xmjWXd gSCI ݗUmJql#u%:yRȔXj$~kw7t/1Dy}߀O)gB횀C0~l˺y2=}ySSޮr Ea6?IzȇsBm[̳qap d^vD }Qfܓye}^(B>^_,~rUT{+`L 0S@|\+̟ZbT_V_Jo2{ dtKf,ܮ'??_+-Er'JzPo(0e%U=RQ@lY\P~y'6V9BQnX"՟i-7V7mk;ƈX'euՊ)>utLŕRIlMnyh?x0nkvo"N7irQ٦{lfn>S\n-\׭\&ݶ㗋]5Z0ͪWoLK9y|}?XJi}JZ_&r҂9f.UMd;,Z/c'f od=~&ޖQowX~bBsy]-_gŽ85cm#^\FwUy}ɖ~eƓI7 #O[:R[4v[QՊ65[ ݴLkltnmS [WaG +noӇhymm].~ۅ/LG((Pe֤F甥/N߈ωAuTfv-ֳ gZD+j9hd42(?~lz52L^&xٷVm__W$>k9ޒ1_/򟼟NSrE=$ct|*/Vrv嬷n$>l ҼUBs'e됺h)m阐cw~Kd8R c/f}280Os1 %ek(O4=?~Tt,^Ӽ/<{N.18v)q6ߩ4Fr:ym 5[=)Ϸ'3D/ƭ#m$0?^7? f ])Rsjk&4ݾ7>_4G NJq2PwwϥŔ axi{wցATUZO<񄨮uuubǎcur. &]wl{?_6^3N҆*|}umC峿ԛ}($2C#!#pKhF֏#Ĕi *o6U~@L>h= JG_&ouJʇ{n,\,\ ˷[V+,{Y7)}d$r _&mcl}}Ki X|6ޖI /[}da֣O#< C505ͮ_W2ҧP|tx.FZ3'w/}:;.tW[D܉[D7xq=1vz7y[:&^=۞|w.^l/*Sl~\E&yC\x3V;}2|rP8O|/|t*nxȅ\ A1mbk^l bBh }} d\1m{;R%|)lV np)y$d~!L=6U 'x dXV 'YsAD%Wjմ|zUp~<+gc_p[cc~p/,v-\68kl[1n,mʌ'>W +Od;rvxp۸ct$)]vi/~64TvT_w$6]jAbHþ|d| pyhK;ʶCdw}MKm@:)_ ϧۄLSI ہ/LGrL |LAw hw~8s"mkt\KPAe]rmUCL\aX^)nP}>c$O[;ϖ뫗 _+Ll ; g xaA4&]E}AOzSFˬn5ǟ;gm3Ǿ/u)8JOmEd&t4o<85}G3Y0kxը۾pil_>i;vBگ߅D[TB{q$䪹5]C}$L[\uSnwuq4o)?/Tg+p;y2B]cp$ve>@Mz?:ymha<:v2Nk5idy#\tL`^Y#,r7dZKLhzܽkj]ie?WBXU?{n"}3 0&AV|~gl.q%Ld[TԗڷBz΃4gEfؿx~杰-௴IFG 5:Ktm#qƿ?+n[cZ#L!4ZO:p]hRxf7tg -_g>)ռ2mp'I8)JfS[ztLϹ>Ard&^A'tUМm Yg4(?cu<­u/s`?@D!;p0:¡>;/|鳘g?A j>5&GC-5d=ލAN"'/-|2ٶ3X' ꀝ8TGgs 7`p2]/D%7C-_fhx<E|%\x%& ec^;ۑFIY*_SEuߟs;C2x/v5ODY&)dno+XYU]a}̓)Y?cL 0&p*TZ냷?!' .|늋1р/jتJ闩\ֱ.^셡ÇN@&ܸʶ&~[&5\޸jQkټܺ2 M6R==0s|U ᾖ͸VL;D ࠇEtBt74& Z6 RȽ(ǓNp_.tЬ093eۦ0m㖼 I:+Ȇʮ'`)E+AJE0m/. =+ V>}>saPP;/F|_SO[] M@GH^;rA B}6 10- L󎅻̅kf ³s^nO^k9 1{"XTzNKv=]nPvOuh5 Y!MpTuJڎ_SbSRZAei1_e9O~u%AIm[ẑ7iZF->kpKGx,2ce5mp垁mءYP+}չQYT _4M2ռ^V'ai|K7!-…)8^_Z>i|y"|zZ1*kKxoņ@IDATMOkyp]`UPr\[L}V}>R 7C/%anTߌ^ȱzXcHur9 ot7 : CCꩇ/էXr*͛p|M^Q,8- W%T'^aSy)7<ލ!u=k}*ܻ_|5,'h;սt<c$ 0~_Fʰ_Fg_s\+,`[ӻz'ͽ~j^̸QgY'` HPnE¾ ZV?˟ҿޝpcy\ƍ >WF}RF9 ݇=!{ *x0ӟ? tl#lmsws\;qђ#eJa,5)㞩 1,e'^Ɠhإ/)\v5cS ){iӱg/_`L"__자zɰer2tׯVlՎړ:xR6f56/M4t)wiY뤗;{*pq\wv# %CTFM;eFF 5颠d[:<CTthmLtorQժQ"/MDVK..]ZEiDQNCrLBOnah{ZLrB*n_ZqD7 Qt3sW=$cO W0G192?ZQrDmh}׉}(kCQz{?MF縅q+R)ܲI$m^("1Obb/^!Gi FrXfTQNڐըEQNtIRm+ x :{J~坢mb k.oXV3eVEֲib~Y-}'ZWv|Os>:4Z9n}}ۺ:׾eRL1W{sN'y&1i+a DLSMҎ_):{kWi1ͻ|*0wv]Xfv1Ӫ?P^{Wֻk- 0zʉ\I<~-ˌt0)7o]^2mhw:Umkw.X+Cv^Ҋ}w_/KꜞU IۢJ*{"H6?C+E8['"#^lbz2Nm{8}@X3:4? |"Sq7<"k?E1Kvu.c3ocO`FǺsw2K{_eb@{\m|m5$.]-ǝ5;:XQI[R;=am>pV$7ůU_ܾ4f/!3khuG9/j[.lCtqeR}2ȩ9c1k>eb2'ÜK2H Q=5ߡˏv P),ߥ[3.ۖ@ӯs8!ӯ'f}o!'1,s!y6.{v4:_is=`uD^~ѺkOVx?QIy '3:ZՉ;v]W__vd,DᅲEUm|zpǫ@F|\SD QXZ)"UDEUR%]T$YԠC>!Js퇘%J*ECt6$@ F} }h& jDg6QR@I:e2 `7#_T7Y|[\._48WSDIiU9a_a+EcC<|] n77 'wV]7sXyxNTT?/-u:bNIis2ŀCdĬWĮC]b{QQVHT;//_)jdrGɜAT VS@k7Yl ^k V=Q-g*.9q(~%sL2wgowbNam0CʶV PTk b^&cLk43f{MXV |}m9U{tȡ6 3vR j|M%9'0L \n'@0-U7݇EKWxuSFgnlv8qo]]=boQ[M'૥wʒ2QvP+rZ+!qs׊-e}xcwt`ܒל:63~R):(^.3HvnP f{VgزqX8GTvv5fn\4c-m0?`)*M]F쟀<:J\Ye JD=fh 55ԈF]sXFQW#^+/n'Y$bt@);{ko66ӲCD~◩ GT> i󋵝]_QDj WToTR*]Ul?. KD+?jPZAbwc^9ryKKpn 2?%39h{7-=/yEc@ט~=bgnQb" oW/moQm`،ּNIxbDοHd68ہdόli1)&zSDR'V./jӢyյ8y^gbLZOL6;NG]ؔKLyZOl_uSl;0ցuÛ|강7J:@&8ܾ 6ڔg\ OpIK.xn#q/H U6YW⯑UMޜkpf8;gLt2#6XFܼ%%@vvqRnoGw[eniK |]!/jKGu_[&}i(~oK3|rV~[%c2Xu\g=m ػ'ny"EDNe  }= xӺ9MnK9w3N}7)T« _;At{ko(O{߰>c3m݃_;q WW o) HFHV_iDzM+-L/$+ M_?Z%/{ zr׎x ;UVYqxab?>r__?;Xlm;ol^Uep?'C\p-ziK\JR8de2^~ʨYmg t㠝WbciF~?4[+z7÷v>[AGp+h FR#R}ϭk_-OsúLƷ aS[+s=HڪfAw|‰@op+=} }OK-uZ&wr x}=\%uHys;:8h_"T4ȣF; 5d4qDM0H/ r RQ'9%!j}qOLh_ga/s ܒ>48EuQm KH= ^V9 #x)1mpm=%f&^fp6zJmSN=|(9.#x<;Sޟ9Hޝ͖~|QQmN}kϥOeuqkD:o>v vW[NE?nี{cS[\WwQNonous\xO4-|XQum1]mo+t(.6]iͣ l(z@oTpZ./߼ ^_ xE\Vh"F/ɏCȳVjŷ D #:юƌTl݈~#(x ; 7Rq+G|S>-, bu+,Q\UK2 j6[TxVSf{p+M,"{e jWš)?Jm՞5n~v==9\,=^;xZcPq~B'w-OojM߂YkK!]*[[*Aq<:ƭq*ۻ#b\sAlfq:7O$qŭNjoVRo=Ք5ۍU5{ٓ\MO>ĂJX;FL[VW^Y xB\]Ao8sRrE+h[{]kMV[stl{儓d"#}[9_<K#D^FN -PQ=6Te(3MmDtVl3ŷ_b؎qQgKGl賒bbS5lH7>#Gײ˻wg&+w)bϛs+a /Jbb&"Xq JgKG.<~i[I+ W+T6H5ϴdmպ?$iAWՅJs'?F֬vml-yce&W/3{r.ߨU(*>uVjg2'vEoXW׫ljyΘFiKN_IN "嚞VO!Z{ yƱ jM>9zne˘|_֍n?ڧ5c6K3}dRf~QYkzԖ~?Z7[UqG{5Ĵ--f*{Ŭ蕹{%Qyy1Gy}:l֎- ƉQr'\TkC&`˽HdZ|0L!Me^:+|:PW:>@Co_ 4;C9>O^0h r. v L؉ޮvh;AD@MB&mt@gxP>|Xt@0;ì}w{tuv`\Z0ԏkuėfߏwȕwzWԏ. X[G/ =wAO]ч>Q_cR{{}!\x!xT,.;pLb`_.Gtvui`ƽpGXԁ|*+ؗ8s>ö:7Xv\8'Tw4D놷[X|οǭX 88Y=>eKYC΋_gV3?1M\}'{xT΂0LݽQb?{ߐ`,gs@%PZ ㌅ f/ 9+~0LajߠÇk!ߊfq<.AE6,{*!x`&{zH;"Og: 9~"Py:opj:go7¶!#ࣶw>̯v䉸%#Q!Cf_/ `Ѕ-+,^~lU:tm(hm\3"f)'}ȷࠃ't<pk/Y4p;;җcȰ:mm穯8`G?|őe3LeN t,ψmoB)Ϻ2 !9z|vaԉ\fxEp9Y~G :#.P`_y}8?rN<_&7A]~{A~'mK{t%FAҞ9S8WcQҞ9,U̡pޡCD%o8l0}딊Ѓc'~/}]j20Fu$'s cQuIZWtHyR=rggg9ǬuaaFo̊ 0}1q2qllo1IgP`L>v[:G TWyh췵8v`; g>Y$!s:H|8}8 *}"9O_?^q]kaiCغx"܌[X' k :ӗhWɹ0& o>0AWm}C>Z?|[&I l6['G9?>AmQT\@dKO@&@RBKI3&`Ed|8+0 (2PH }> 2pOHO*_}b俏 >xKGW;Tڃ*{|ʙxUTFJ@.L@8 >61EdW$VR9&BoAri~5n]^e(n1˯-/g?= Jk~FVܽ_u38r[ d^r9ɀ/L |GB(18 \X&"_R'`L 0&pB p m_&SrV ,Kq| > ^vTg 61r4/_π3ƠX |n-^Gv0p1v7uw03!࠯T@.xW:jSɩO 7kqUU\ӡ +MQAAcAGj.\Hѳ9=3m|W?c)ǐfLL QucL 0&pl@XtݪL6~ f̩o8H`*>}}GrПl?ٖr6q:|_"'3PmazC `_r5iS >ioX+}!;( $B@ж )>1%pEc3+N :q-X_RhK{VkIFPR2FRSUP ?΄+xxI|pp#WqNұ`B0&'_ؓcL 0&| wT@Xtog3.8.} ҏsVL 0&>:`߻:./ߏ*p`J u;]\Tr\B6 `HལgGA8.e0^-|| `L"c)+`L @x):/>`L u_h`L 0&`L 0&`L 0&`L 0&`>8ʉ:_'4`L 0&`L 0&`L 0&`L 0&>8kۑ>`L 0&`L 0&`L 0&`L 0&NA5_fL 0&`L 0&`L 0&`L 0&` &k9&  NZF 0&`L 0&`L 0&`L 0&`L 0 g&U'|F g}6~prp.SC -ի-fΜy0&`L 0&`L 0&`L 0&`L 0&po_И9 &`L 0&`L 0&`L 0&`L 0&1"_5h&`L 0&`L 0&`L 0&`L 0&p l4@\4`L 0&`L 0&`L 0&`L 0&8 p6| |. 0&`L 0&`L 0&`L 0&`L 8k>`L 0&`L 0&`L 0&`L 0&NA5_fL 0&`L 0&`L 0&`L 0&` F〯E3&`L 0&`L 0&`L 0&`L 0S| `q碙`L 0&`L 0&`L 0&`L 0&)H8ksL 0&`L 0&`L 0&`L 0&`L$_h5h&`L 0&`L 0&`L 0&`L 0&p l4@\4`L 0&`L 0&`L 0&`L 0&8 p6| |. 0&`L 0&`L 0&`L 0&`L 8k>`L 0&`L 0&`L 0&`L 0&NA5_fL 0&`L 0&`L 0&`L 0&` F〯E3&`L 0&`L 0&`L 0&`L 0S| `q碙`L 0&`L 0&`L 0&`L 0&)H8ksL 0&`L 0&`L 0&`L 0&`L$_h5h&`L 0&`L 0&`L 0&`L 0&p l4@\4`L 0&`L 0&`L 0&`L 0&8 p6| |. 0&`L 0&`L 0&`L 0&`L 8kT :t0l{2oX(N/3bx}!\?q1wF3:.0DF#2QlcPBth*MKZIiR6i}Y{_9'I|ڳZ]z^km޽6 RI3)Қ.B3+pV@3k{ia:}:ԅJ(txl9 ?K)@@@@@@@@@@@@@@@@& Lpjq+u7t|ν :y޿g7~DW^p }C>y                𕈨|[Lb>)h`Zk-ouMk/~z'ʭ>sZS'ԣҙG}%|                '18|U0ga5oh]??3$=qvt Et?_??ҩ5RD_̭(Q?ڛfבg[soњg?M}܏&yʯz+A8p᫂vp29|ٷG㇉zEt/޾Q ^CgL r|02r&^"?/:\vqy땞UOKK1K=>v^GKe::L䄌}ᩮGҾRw9\D"8|i"UA8)ƶӺ jxk{?,ĵ{鮏yST?%Z.ƞɝߢ'}:܇>KL˗Mn}63_O]ȭ*eߕ+<z4Q#[s-}ӊߢ}Pkv[=UAC_SEzz3|v}-e_ ԕ7 K[ױOa~\4ho­U腟ҶͅK5=tlktŏ_=P*FʗOkՇ>"~ ߻֒4[K1G_ v/?:Oyb#r5-T7LZz-=\~ןS}g*]v{z9]Vz7n:9U¦h}wWqsU^_tVw9VSrG7ga9|eAƩ8|}nWzMktV%{/&W]]̑D×g                yp%n`DQ?PnKkܕ~?O|"Qꏷ[WzX2i|./?tj$JWvhHRF~I)&$\_ I_4~|1}ݯr_q {}hg *Gv>KSo_/%ˈF7ʇ __:|ew?J?T&*fK)[GjGp )K_4Y55@?\.Y؊9|ڍU/>B(4;aeq#6-8|s                +R?:h/+|jW+|+|\r/:mӅ CAӱg龥M|H{e\y>t8:ah[upM _.m                `G_vJj;|IGڈ#&pw=54r~G{mUt݇U dUǰt+Vt,_:(dp××_>5tl|2c9҂_;>M^s;}mu{s#kñrkݕg:eM~+}iHowͭ֍?OSiF} ۹w_v)+{לCݘK=ڐM\@@@@@@@@@@@@@@@@tU:c_q /TϽ'WSCgѦG.~>iZʝs6|{޹z?=]dST?%Z^rr賹[MlmrKE֔uubNmAQzQ:1Do IK_uDThj/jdN\.tc_^U_ϪOZtMy~xIߙ(w_oH߸SttzueZ;]M~}H :_Uҏ/]zljN#8|18 G13˒?{!M-y͙4'.#4o?M2EsO[H-=N]8/br0|Ne<y|v9ieUp p ID_᫂gbpA@@@@@@@@@@@@@@@U~fg^z>zߧ9sb2!tex@@@@@@@@@@@@@@@@`VWw&8|=}3Ctҥs^E O;foGpP;>p=]٫04L_.Lpr~Kٹ&Mb?w]v%Tf-]}ɚ}\8 ᫂?S1                L_ '/N+m =?4HEٵtUF/BO+.\Ee=\t]                $ Ÿ_Dž !SǏ1=.ϏMs~O=aL¸d!#e_Gߑ\_}PrC奝CֽȾlgKN=͝K8syM9.wUsqgO9#sk88|Lr;|O}sA;zIL8W9G*y_\59U8w 9γΟDt\s ͕Ӕ%]4_>3u;s=aj{&&; NmwlǞs/xVqK5>\& RoC{~<:umeY.O["@@@@@@@@@@@@@@@@N\p`ޔkҰ~g6AґqZVprϒ[r"ǹjt"r]#y=hRp3wsv7[W@IDATyGбlyQymH:~Cqb[l9ykiNsU+×s/dVαZHt OngA:I5W}W+0)D                0M5MuɔkT' ]rsWҥk .]tt5H_̴R8|thXഋ7WP$=S>:A>K~;fȐ@@@@@@@@@@@@@@@@1݇pn@r_B3I?ADŽs)RyBi#                 3*v:*^StL:{8SŹ@@@@@@@@@@@@@@@f8|U0JuD:{ jS|S#gN|ಷ1JgsNY FvR|貵y -)ڹKg!`> UYԈd#;us|b7=vB'ѲWe O6C苶($rf45F}-X@/|mv}2&vog+rTk9O]|zq*1)&Cg&]+c?7=MW҉\uOV3& gB7SrW^֩G75*Ӄ'B9,Sc;)܊e7볥'Pj/u|ii d!03,gfvOp*!ھ4OL}駟MbZyѹ/mx4${gz;]FRׯvNz;CJg}b/m|״yS|w.]6Op'}G#%m*wx钷+{/޾DЦ'q_v) ~4dzyӬ"Kgʕ6CK}{n[[HJy6{޴n$u5pTvcOӻtNWNZ%hAa\z{./?ʏ ;M2^af "}nv?Aם{C&lAG}Vy7]q˓nXym';bq*0)*ge+b?UQh 3!_g3 fgJ}ϫnVf\'|(3%{Bp 9cW:K_ i+}-(2"}"~DY:k9xkiAh"P*/ GO="^;MiiozGE{4 9^jpltɗ'bLL=Ukꯉb~qg."^?{*oם(zFΐnݯš 1qܳ.hoM=p# QR](sb4KPgG{C:|ɫJt􊮮n?4nK ᦉ1f׻M=G8cbݢ_K1grEsb2mjZzgU& :3u4QqOpOSߟt,F]xPf\ǠL8X1~41e*doՊdt Uִ -RǗFJF.<@l}h*{4C\=_PWF白{UMDr͟‰?*-)$+[o}[[۸qشi8)vu@h1H{"F49My;ZǏ=t ~on$9NOc[]|esblqT"!R'qqLcꥰwqfGx&/1)zEoo8{=&[äh'C)\4 vZ<_^z}1L&4p>.dp9q^tfI9;tbf gf;ʬ> W'>Hoodp/'S ̬>Yqfy 2&I> iE^W|qwr*̽g?TLa{&2O/(O?=^.物,>1~42^|xu֏-_NK_+fL\,zsW<_󜺒E =lΟ-\nK$_=xnnV7G},Y8*×[K׊Wt:| n+8Vy;|t=MVQHYSff;*c\.&^]y?[ʁYqY$+IRe'ec{k`_˩8:^%lDg"vOrR\DaZ<{7ql VR|Kn%L#) sY,M[+ަggQUp&''ÃQg緶mVAs\hnK%BNT_8JG{JfNo{Z#ykMy%y?ѻ.RZZ7> rvo63-yӟ!Zϥ= sh?]Ki_EuNU_'n#_LsS҂%Ki@t1tboKt]v>KtѹW|.?syLtҪm49)_}!Mm.yMwnKl"=Yx8w+=;钘m31_4$-:z)ēeѩ5s##}^:*9/zRS=}tc7r9i;.S9y2bqke^M޴ƎʼXp6]{ #œRM7%7We︒VdS.pdّ{1WV_v)-_`@So{m_Kcty~bZ2J,dmyEzixte.=%i5_v2I=ϻwЊf='m_|=/…L.yqi͛VR4O?ZbiHvܳ[ŗ|+ e*H+ſzXFē7v|1wq==mֺɪYHNB-ǭ^rIXL}3 eKkcӿ =O=IroZC+Gey/طy6ֆ`d|[OrFqϧV&]T.;4u<L emkW­K?aӖ2|ۛo^|.֭S#EzE>qNMޫ&d{>vד͖>oˤԯ~*Hέ[d%mw̩XWo>M/p*e=6,urmoP$)'gKf8H_O.:O%em@qb_JQyyR]?%mui miY*i㿜{z*7+9]n,y V@WF[ ZuKY%em/&;_S&cJdD^ƳC+^o!osLVr8.cg%aT1*ǏrȾ:cʳWo}^>OB+)E6 ?s |@7_񱙓 Q(t6NqLd-V9m /zFwerN(oglb7G%9ncr0as8g$gIJ&^/u&m¨g}9۾Yt-FH:$]j]YP>Tq,FFc_ЦrRfVU\+=3[ysVbcv=/O-rn`g%ӈ?7<jAݔC۽~M92~dWZ)7}|?Uw@_yܾz|+®e9s/<)sN46/e0W㓎)9^5mNfBHg[{imL2'fvg3X4#Wg@2TEqc2hvָ9 St)m?箌3.zǿ'TUCOnB4`L8O5 DCK^ݠ{f[ՙWc6\Dl9K؆ԇqeqUZ{t}dp `5hsn+W&s~cMz37]~niSْ7 Q[}[bƍbӦMsJa{{vEsN0uNg ZQ[(X$on[7~ͯn8#IC{wz vݝ[f2+K:ZqCF\W~·n?ݼ[kz!p~oOtcG:|V*6#m,W֋iϞysT'^='WYNe\`u Ijl8(E^Ԛ!>O WqQg=͡:P~Bs3KZg/ԣ]|s0#W?9Q>}]`.U); v}(zV oZ30խ܀mۥ|^=gecb\iצ k6 'Gi1ʶcnUUFw_Kh ?w2Yfu |a".xu]-DWD|[pz@l+,r!:C)NDW5v)Bq+|m^wG0Km;јx웟ao G+|;E~E%]L:r˖flTlFX\LW[:; ,8920s+Z33Ue@OF״j5WUWY`TC0'E佒xD3ZGy>9F 㕶h 'B_w(/;,_Q=<(rWbMK$ɾ+?"`YO82>Sʝ,OSOJeĕӾN12*ã_qvd_/ü/m˺]YwԾ|ZTD_¹{u'멲ٮ|+0`Rod#AfV2.7Ĕc^7kSDsGLqL9jW/ӧ)תvՙ>4>i ʬ Ǿ>@jTV1X8w}ZU^-_WII5'a&_d8b1߆8G)ϵO?~v&m$*uBOWye/0L5x00Lяr-1&lޒ%?7S2&̮ooT+?zC]si]Y+4ir2|}`/veHOggecr eʾ)jM9^!DŽNZ=w '҉ʰEϥnKN=vToYmoY!-;oґ)*\9ʘ˩mfPwLGJ=vmYK}/Q[.K퉵':mLTZZu7lm}b57Tܠ6ɍ.opm D?;>h}U}lnm*uKF^]ʴ—Vm;Y'-yǥHŜ<,U%\ġq㭎evtVٺNvȪow~z2glɷu┵G:}C+tߑmFUNռVbɧ``J΀\6Ew)ga{++_4ODR.cj/GلAMa)u0w &xό\dAH+F=U`aQY gPiNt+gl97fk2*1xK*m[mr eJRlhj8_NQoҾ۷ ïr)#&oHvڂC«:4+KzۊM]"DYA>wq\y}@8L\ //wbi_32U-EKkcLODL8d! wP<ߡ#ڧ+#Ʉ.oglx/I؄ 9SmƓ~Wq]x羲ҖK> ɶWmY&x3^V0Nu2l&L ͸^C8s2a.cɤ~CK5C%f,*Ъn6]oRtys*Km,1gGG*CεeϗAvSMrao g6j`po_PȎ6Xvf[cWD09r}ˮ5{!}ī٭5$oYjΫ6hNCa213qyAU\"(A3T7V5[F0ر9 x>ei*x/ *%٤{CTC8>~/ #ؾ(4]w =ih#z7[#*A+\mE6$l4,,bc3!۸ƹϯ1WRm 8TU_ O5۱VF|s+{M֑ebeՇI6|~h]^jQ~CEDVen&'s-glA˚?^ξ/^ӯt!}Ű`&s6Ƅ6r]ע I[`_fC-lyeax{Tb\ӱ Q_8=+ /&-Oy9@A׫D-ٜ~9aܔ "0}یYO6z #&[zv(E5]w6i(L&fsyAU< s.ώb`h+<>[NW䖲sxj*^;) o' ! pޔ Y K,+XM[AcPlF!B[F<_EOm? 'enLp}:}jxZHQvӍ욕-?)62s[ Q^6USyu-/׎4z:E4<+D_O1~%qVB\b_*zdleˁM"*XG3g\Q{-1Wލ +6hJ7RO~n{rֵ3Dl$l˜gq gS,+>O\8\<Xeq3Lq,'vOk?"$yٖ4×IFĵ PR#۵:$A:"I\r}tyT6s<]nN/[L?k| pT>51[I޻cl&]ZL}b3:elM[lIG[Fle'X]'MBM̼eE/琩]ɭ;qeJQ&Jn .7zϴuʻnRL^967Ņc<&.Rǔ+OX{\ ye0Щ|5J}uMw8*)'c׵݋pػ9]G6s6a4a8J=KQ':'e 1X>tecIRP1ke\2'3+MBZBAպ>#MvM?ieC\(mǞ9v{iLEB΋ ;_Pg:<S'n7fqg@'[5cwdH*C 4sOL}zi?ubq'k'K7‰$Oɒ;aiw^|dDڰ\V Zιm[ku`iƱE($Rtafyq[SꬂIlAbj9 SAXV~xbeqecZq]9f՟Q@Mqիi`$؟7=;#&c\omcEj\U.N#C#bQ5rrZ%]/ұ頸0Ýr_?>o)̥wؚ8|tzNe-Ŋ`8|vx2_3+\4Ցĥ!_%زQt&x*_59Ц4n'Cݟc V4&DwGhV,hp\rMt~100$ n9 S`:7~QqCLhօUijG0N[Dss_]T?ƍwbeZ^)b˪<(q*eqR[Uy/jDXYlXmS y9|I?nvΙqs-r{5VKu9IP%|4)rRwic09x~,^y~>)sT]/ZZb+Y55_yzQ#֖QsFO}=!#Kidp6teُ!,竰WdKxcTJ-QYWCMّZwkԶD_b|fs.ל2YlW ʗGO4_0qWc+)rEHG:e}ڕiA)잮^ /SP.TB^OI1-ZDߗί\AU7)'S?Ǘ3 .b\9\1N%|_ćEn3'a%=L'یExKF }f6ST~,WW=˹zp.%u{M\9`iW}eV~x2ix/G[́K䤘T%%J$_)~+!Ƿ]_Fl^)kƔ(88|Y?4"-vl%ƦLVo:|9E$ 4sgFq  _q못[ k'WDϵмm$oLBu*cO0g_,÷Lo:䫓_GeFar\:euzr~ѫiXFE\iI=)D]'C[_< [xiؗ%F/P1) )a1G7x0w#_Wv.ՏX^x۰|t PL qQ;hvLqvmN) p]c/@{]!Ntm/: u7mδ97T^~>)娛J[cmK.k9Qea`Ԝ}ʾQzBF jΖjf?xzfmm8Ŏx~QUS{YmqT[G}68rS>.bxY)i%ÏLeyq;u@֗bֶL[xSk$r%#96Bru ׿g'Jȫd|xPt7۝v5Wr-Ώُu?glD@b͘{7]ޓΚ! a3'aƔw=.N^eی'Ay-y+38mT.ImOniʘ$wjxP_=lO_tX=}㵭*{'jR&аљ jwvd#W*<l!Yݜ~wd'FT֊ZuG8kYs~s|`"_Gy}gaF]GBYIƍK!VEz7˛r߷%}| btylyy,cf&'>@{VDŽx+$s.% s:x/lp,|fڅ@l'K=Ete(͋;Vi]A}6!mŦ.e,PWX&1()Ϭll#$__W6bxTcO">[2Z@IDATjށ~9|R[uݑɁY0I~Pb%=W[qS U]8O n[i0ËT_8oi51m-Pg{͛dsG0sJڇr[6a.u miv gzs4rXSlfCߗ?h$ymk?6뚱(߯\}BrW3ŻeL?uJГ[tC}C!7%ơv=V}d?-IŜ6_KTm(żV ͸.vciIuv~ІrcR\n"M_PY>بKz~HyoI{3*}m+eMSz|$/K}I1gdOgX'‡.g>=pö o4&|g/grjBmđ_*p$Z;evj^8)%lC)?Ĝ|-5&ׁ.~o^e5!U O [3^uDwq;|ݹ>A|tޒw .㢣>ppdj{B h|K mAÙZ<:0%NO--P-= k C߮ѓz$'{  ޡMunAC%w(39PtU4 eq!#zԔt/m"oآ$oߑ ϮYp#2L0?\iSF7)g ҖjEd'p_](;g>亐@ǞP꣒7AѠ84˺.Tg w7NՇ_=Rsռx2wXu"@2ϗ*:c^6HWe02Ji<\1GX32c]O2sߦ}n#Ìr̮ VBfn+_bjʰj=̊-C:!T9ÍbywKv!A RO)jmדO}\dKULaq)e9P?RYY7ǔgNiwWymnOLDXsmo'{3Ya߅vƒ͜M S812ysܞ3x]Աh ߐqޖ^,o'ѡ^w~?2W==&l&L>=WZbY(hL[ݱgxP^~qe.gS4(\P^V\R}y:T}*ym!$1Yuٖ!'2AY1=Po+H?>񅷖LGV7(lSB&^tK5ٴbn|Q)gaR!w>*%4XpJ#ۼ6ZOfwˈl$V ҳ@v|j) s[,mCrW m=bhp@60)jD{e}59>,Zuzfq2I'H~]uVTG3ҹg[OȠ2M4iH>QN1XEmEbKe-C,>gOKU>d.sY)eRP&m7o'ҺSΑd5n)^r'Wjʖ6\~?\\UCќM,=iU-P|=G@26}Q$~l9vN(';1;9>{.|!~=JwAl !|n8foۮ$y`ێ?j[l:cJ,ɡ(!n#Â~_o~1B_^x6lH0i:o[燇DWhܩ{LZ m1{6>< Z#St0/gw%0[U <ŷ#@xiʬLO_ԇN(pl%!rq2oQ'A;iْ 8Vp*H:ũs>N\"A+|WZ[AaRYUϨ8υnOUdr-ON{R9|5K&YJX_tn+w_ߡ$e$eJwDy7 V;gpx_{oDK8 ԛ _qkwloWpm'٪RQiI{@B].|*v V#YOа΀d辕yѧ;b4 zi/y~L_}';nUӋIk84ؚ(_KLvuH!ɹ&M-S nf &ԫ/c] ۍnezӚg߰srL'w$ W.t[MU_6EO&,xh(ՠm}YxVr;>o?꺢[20וi/ڤ_)M IF[RvbuL./N.sL=\L) _1K]3Uw3c,Fb5= S)ʄz9ޖq e-m%[rm+\ZVyXM\qx}Y&/vR\A/:?~Πh ~s=i*q9 0Q=+qZc2a?ug o3<0n`\mk~uAuetΞ6ynF }X'e®.^IĪIn{㤘~:gEԬhПEirV˗?_,%)W7I l%%?uipg.|eWDl&er[a}m6Xs&c>>tmoSv;A&'YVfogMׇ|eY6ke;n)Ѽc*Yz҄v7[9KcUV&×:!m?7UGWrj$W2ݱFM9?n)V4_[EVN#SUmq?-U8+ 5jKKrU3NQKשSmlh)#ڔ ubFva o*?33f'd<}5:{2.۴OHvcr*LdGnY/Ŕ>ޢxKa,ln[>v}=UNR Je[?[؊4[]RĸT }OtPyE#{;xEgx$ُm?grPֳK\W>^2f׍SxRQc+>6s6a54'qZc2'[\H1$־Jt69 N~12ɞ6yn)9>M'; udK&=N;83=yCWTpfSߗ+1VS qp_SX]\!Ym g tW+eK%,C1eʕ,g?P'EeHfNd|ӓKkldq%#^t߽{QdYHm>2I蒻 i='#-tRdwqqbǤl\TdjCW6AqˢI} ^.;{alc37U~n~f)m4()r(s 5f{Bt1:6w.-0VϽ_[+{EI:BNj!>葱:xh寡ŇI;1B/O'y 01Œ>P& 졃Ò3oBZ|D>/Ewu{222ّg_* Wȶ)S%IqB8RS8MjEJ/Eg8+5N{ʈҡqg;ɾ-9r<7(sϓs2g~(I٦obNR!81YǓ2?oi,bM!]~чiOm;M[[=>nyGim6`6atԕ6iu-.uo5mMrݮuS$FγȵXkƤ@iPXXXf'23F"-Rv6Eʿ'r^.,ytNlʐw=,5ݩEt )FD%M't} В+n͗׭77h%UN%ْUTViժUtiќ9s_Q*WkL )d"pTv) s?,kix@NT#=|>}ɕj^NNaK\ -?a^fSb6YiѥΟVhl^LPLg~}:oe Ӆ= tSu9]s=A|*rrV/J/E*HIO7i.-9[f  ' Da 9@JCTi8"E`jl7Kz2/!f'_~LjZ\M}٤\:vo7`dL1  0 줿:"dMS}Z&WG,-o/x6M.}cj4%j+:^@! E-U =/W:[Nx  ', @ zx   0(+WQOocGvn_&:oj2ț>E]3\C'mh*/@V;`\6moF l} uKDg^@W`Nj~6Ws_SetpVcF`=+ny =L7A<  PnMH6CKTM}T0(gSbv2BlT7SUc+T@@ O=H7]i.X*fGq N|cy A 8|eUҧK 8~yk~yXNSZ^?ge9X(   PzsɈʷ\J1IT@@`f lڲ=W3eΦ>leM}ai hhi ) LѾitteXY1%A<6313 R@ZpJK ϕ "J* p |$                 3*ip |$                 3*ip |$                 3*ip |$                 3*ip |$                 3*ip |$                 3*ip |$  w/RTgnr0%*QDE7N4h6:nHjHH?b4DJVI( fAAp@d~OUwu=U]]]C3[]K~        *aUB|v        @ ૄFW 5        P_%g        t@JXh|]#        |͘1C:(ӧtE$_M@}k𵯕A@@@@@@@@`oEWʕ" @@@@@@@@#_s̑#FH߾}k׮Gu@@@@@@@@*aUB|v        @ ૄFW 5        P_%g        t@JXh|]#        *aUB|v        @ ૄFW 5        P_%g        t@JXh|]#        *aUB|v        @ ૄFW 5        P_%g        t@JXhqvmo o, KeKeۦb}Ǟ"7F;4sg@@@@@@@@  BWu{ɕҲ}{С3g~&Ӭ߶slhl$]tn)GzvA@@@@@@@ؿ*a zkqK^)>߷wǛ#;w/߷K@@@@@@@@(@WDX,NןnHl}'ImߕiݲEODzO}n z=e Yӿx}SRwK,t          Ur/fW˪?ʀKϒHyPe:G|u$7        "|5?ˀLnʍYFD>]Rrs׆~ݙՙK!       _%, 'K_`_Q3o& 1Yvl&=z,OKvnҫg7sȍң_iz9d ޅ{        Y^|&k'}tZW~SnX*r z<K_^׋Z|]r!N$Uoȵ iP5=-򋛮ϧN?9odySΧ2Iw1L~8a'ج%5s3~);:OǟYCs337ڧȷ+u>]# 4Kg˼d3 Jf1K'        |h'k,nRy^(z'04|ꑇcSY+nozО˳3/1]eS 2mU{YkgW-'Q{6n+eݚ֔        @ ૄX̀-76KkҫSiO ;esҽڱ]$˶s6^fm"v}!fnŒ        CӾUBv5_ @@@@@@@@_{a7Ck\;Yvng/~YD+ҥK缁        @G ૄ%'gr8a#AWK}km;vȖߗֽ+֮:QV߶o%         SpX-Nu<#o.oizVvQtmټ3J:KWfB\Ln@@@@@@@@W}܀/'{ӏ>>qK,{-@@@@@@@@||L *a3v[}b o         P4F:KW\2Gׁ         SD@Gqyn} y5سG^=2&~xl@@@@@@@@P J$HboOٽ<6m=}~,0޹CٻZ?nN=nJ>nH>~mɑ_:Ow`[e:y0QZ?i. h=7uCv.]uݬ[kytҵYH.%,5v        @*ei}i^[/[}Sv|YZ?ӏשvl/Rnn=zIs뿞z^0G~!=V?ގe;d{eٽU4Y2y^0Ho>!{= ;H \DiѫtLѧ=ءÏC(@W k@@@@@@@@:_%,|m;Ev"D SAvEK"ݺI=         t`JXx{dO"{Jkյg_eC@@@@@@@@ U‚𵧵U`M #212W 殭i^#UVleJ#\iKbr)GRX@@@@@@@d|@|YqL0{676:Y^lnއ ?FN:iqDh{*c_koʍz}٥{b/$g?C4.iNrJkx"9_Y@@@@@@@@ U‚gVs+TnnxFnBBT= ~"WcgZ't>Yd썖WMX_/[) ˶>!Ubd         ko(#R׶-^pkɸs+nSbO|`Mg{fznݕR{ސ[:th{_.;       ]go|m~e 8&w/y3!+O0G@@@@@@@:_%,_~#NZ_e:M_oy*I</u=K>oU*׮;wHaZ!c捖MziXAZvw09irԀ^knUoo][?L٩VD^_Xk4B8} vnIضEmjl>?@rk>ش<ғOW[FycJyq]|v{q&H;_~Moo-v~cO8(lkۤOwնY^3;W^rSƜ&nf-}D@@@@@@@:_%,ݨ_Crymӝ22,)-rw0kq<{ 7L~t߿ICdvz=s;ȇ 'meLgS]oI[h&ldد]s>s/3>'x@i|Y33R1al/mKrk29eʄcjrVb2.iN:Lze m$;B)qf"K|%l{,Yq%k#ߔ.uìFLG/)eCLXmoG+])#|*g>,j,Mem½d]y}{k#IIˇsb~o#q_,|2|/tV'OםX`F璋~k\D{%ߒϚSf1        й*aF yڠ#',4 jڋɼ7k]ϙ[D&ˈߟsw2Xɼ-&TM{guw=39v"O ow}FnL/5[W"r|3$o]l|s+H;0"        @ ૄe)_|1uCY=@IDAT"3 _6U'Gl{ʿڶP^zy|Hssʿ[pYnJ|ݳx>,;Mܻ]k'wKf3ORY_v|sKcģg\M~IYKKúO䣏>J~$+eӜ_*8̚el{fDKnz|sI;1        Щ*aF ڶ&qH6K?"'{c`]1Ljj-JSVp]Iٴ7x 8v\r-.sܻ8eݞ r)ߙ0 j{[~G YEWgZkY&k"_J        @ ૄ5˝KG ސ7(Z7=#'yW6͐mZ^!d y{?#eͳd>Heٯ.LffGWD Jfm{tI<֙%&ܵXtU_[OLJI*N|P@bǝoG^_#dԿ|) "       _%,h_[dWs)/dS23Ίe>;7 {~?֖tsKG޸x\l{{ߟEʯNW~lk^=U'U&Z'=Z/OLˉpcu-ߓ'vDtT擞>(ҥk-੖'t[z2uaì]xx ڤt~lGmus&=zt7|  SK@@@@@@@@ U0U&8t] 4@@@@@@@@|Ԣ|$d=מk"]u @@@@@@@@Jw/@sK=LA_W}K "        PRJ9Jc"!vOu"m{bf|X@@@@@@@@` ૄŒWN n_.]#,"        t JXNJfv         tBW 5        P_%g        t@JXh|]#        *aUB|v        @gjk+,ɏ=/ 6        ͗+s̑#FH߾}k׮%aBja';~gܹs_tE:$@@@@@@@@= ;"kx{B         C@1_˶@@@@@@@@||L;{Wղ|&#Ci 'a臨ݶM6%}jTAA"esͤmv*3~P!,ocнCp?ԂQwGIg0˴װss/Mt|5eyj2"Yo!2|gk~|m/d4|vv= ٲnԭ\!|yl7i} 9b12rH9xkŌ r֤Z) ucX7 l[1C5 d]rR0[@TYS{J[$6y*`Sj7eV CW7~Sgsǜlx{l;Cڣl;6{,$7v?[MfI&x5,!z|BG^v{wTzg]LY(׍ b">V/fB uym:C{(Abǐ^`ߛ%'Gc7:]^Ъ!}\Т@ ďh4e|CMh|iԸ#nGy|O/u s^!#Νjo1(jg7\$%cU!Lbn+wJчgU-E>⦵B= 짢RHZۣ~GIN2amc_KgX;|b"}ը+85bŨE.>{asd}|@*W6Hn"wz FKπD R2gc >u4 wY^Q!?X?ʜ.zuO̮zݓ{m[VvyQnf{yr_HKRTەr5Bp__Wϲ;.Lyqxzs?)evc^ێnO;8X9Am6yr~͖mny?lͰs3MlbYώWCO6B׮w6g}VBj%x|M47{yraـv@a<`-+[m6f$8au0cos[v)M.M>⦶= "RHZ_#%to34}>|-FK۾uey/l:KPgO;_,=ɢ=+6bז3d9[I(ٿN:̢ .(nZ<e7b5_g0^03]`UʢdTos^G+IS+k *FxB|lOՏ+?V$NxW$T`S {㘳^(/f8T1֌s _]/;y^}mqWva笿F? P͐v8~j?o4lBkhVKac>.M/)ml|efݷ۬8%vY}gGo;9R>logJȎ>D: ZqjP}\'g)U~S|QSJ)@Wm,kJn_fK-lVeMr0+bjvriRDxl ?5˼rMzenF9l^B^xygO:GΎҶme6&ml ߙK jf{Mi<@r쨓ܒ vk5oɆ[dE~r1#崐[KnZZ6l7 aJ릵|Jy^?ϑO5iOGeHz#j>tO5%Wuuȫ8D/)!aiݴZ^~qVٳɾYgr ̞VYeYmj3k&?θ1m$ u]K]'"ÜuoPt,9E9/dZӖ1?×.E9VoYV6_&7se6Ueuʮ639{_cnY u93>?Nu=s|_`2LF9ʝp[gejg@!1nyNÌ^7m7Uf>s|f}dKR֌w291fJ;xq69cɧ} {xܶe$7xeji2}3=MZ98w0ՌGi{K?i^fBl[Vm6]] mf+̱u.${l j2?Pmҫwd?E6YNVѪ]ң`9$|/YƦ{*Æ9Yy2FS΅|=92~])Na9o\&+Ygv9㑑g1ZWx[>{|n|3THH}~vސKڤ`ӷxNܣew" H z+He:[elK^r`<|n~r=}ÙmoۤŬdeYo)1Ӫ&]o5mmօ;sRWٰ/$!XgV. HM-arV&5Wz۩z{pXoβqG8n*ٸ>:`s$___dlz?+N[iggVkݞ7N哏|ۚv<<,籣{11w+K u<>|[5~e]%G V{ %4:~G<5}ru]*YR̷A|?sđdcG䰱ity+qj>u 0>2'Z/M<_ai?0eZ\HR#UWu 6S~ ٻ|us.\jj_>.ع<)SG(}zx g<"%PkCO'f̘a7kӉ?YO'>ɛ|7$ITxFf>Ģ[üIeo{Mbjyr'-HA>fϛ- sۣrٶhjyz)$MM3kycmrD|CDʫwyebFojtO]X2W{;e^w]ˇ[:oAbj7 1]zWevnS5l:=ԉ,1eؖD-'͉Xnzװp[>;0F4Eyb^DuzHbֲDӲY!iH̭krBTy|QuK<ɯ3a5eO5/1ҩӧ_uU[1?Ru8Wj?/g]yeIӧ?v4M{eM|X|qQ~L͹[#!5~gˣZL|ear\3`\Ku' ܲ\cBsVH\ݺ鉹CoM{ &&6Ĵ!5f͚J9f!٦QtYXhKij/1;,K&˭k۲U}~s''%s뺩agCEXOj+Xվ|qڋw@Xe51ښ'=qyXcGX{Hy KqwM:~*ϱN_Wā;Uƾ+sllnf՗ko{q;-O,XVVŔז=f{1tVqj벏㎁xtA2jIGTc2y]G˒vn^W7J_c̦%kX;"]usvVC).Tދ< i (۬:QSSmҼz[?L^55_6%Qdd6_t}/ҬtUT%)2tߋVy B}y? Z\Uss Ӷѭ }Vu |z &n9 Jsr즹,Q^nĒKEpnS6.x^PzۭbJŭw:<6xl3veMOWXK7_Q91DP9ekW&0jL̪vqWf*1ɤ>RcXiN_l_9.W~?2N#5̶LJeqi|FSk'*+cD|⎏qeMy3_H}*xӪMF &培l]׺?h\~ *&=(͓OW?m5scf+x'} ^8?Y=_N?dyru}*ԿlĎYi[_j({:nvڒr:pu:mH̭vy' ]3Mv:#ΨǾcaT{e-1\v%I|&H=]OT}ͬߍU0{뜣zVI|cQƆ}HPrN}uh4/A2O_-3ʀ?9%N%*E=NOkuGk~;iqfCl<\G_Xu&<`[vs1+A-J 7h5Ա+=.!(m%ݛj,J>b5S<9yXcGX{[$UbϮ7:i+:n}1UHZ<=qe\Fp=H?1vɨǀEֺ,̿n:ݞmZܺoPߋts+H˜ucLYg1Ҥg::aKe5[ N1,iKo] 7SUOJ,_;T59̚55"ffԙ(c]@=-n%^#FX֩<^*qmJ4t_~NZ_Ú(G;]KOͧ{9mQK+_Q9Dm).,􌩙b#*iĚF_f$jfDb"-u(2v!M:Yw};AEv oq!y2 z=)XfYϳl'uόދ/' ??~xN6'#~>gaqAb,u+}ʙ3gXt83V1_s3\fRׇj=3p}nNcY[5H{ӘӬQ׵39m3HofuN_{K{m%yW5FHXyQ<ۊl/^E2q,<03;#c}u]u(ʤ;ԃw}?tlXM=5zYr{]BGb?bS}97Sǭk2@L?1}R3sKr㏁uʯ7p']cBl@1IѼﶁDk!}\j}Y 2/H/V~\jxK17,W=s|GE~`g:Y|I_POo_^NlAb^ S9/rW,=;ńb~E.fQ>hfѶ*KMqH*'/,=%QQQaAoV30~e/eO|x*Ψܟ:'&jF) WǵIxa~%Z!25ۄsTLwTmL9?iĬ RAk^) M.`ȭu.O~|iЃPcTEL'H/w=u:3G!׮ |W&3@KL_JI/iרjl~+iά>Vim+'r#lO}sH;vWH+xYH; '~u_uFV*x(1:OuhX!azrHͪY8i4)֬ ֬eo)-M*^̟GѴL(c2 >V5nٮs:3H6Pc3gҳ9<+^bCkitLO>}_ĒY#>7X!{e}&yfz`EE+MMC{?A/y0:7z-Ku]2րL=CЗ}% `s1~{>9ͳmx=񈾕c:(j/|sDS;t/) UTvtЁzЀ˄IJJSSCbٲ:sQ3YSwp$f7=g|2 No-˄̴v/dUn //^2 6_@i9BOoVܜ/ rw.N> ɹ_U_{.㗺"N*(J-E[K#v/jBnܬD ڶS>44,kWm3IݶQ6#l/8P^q].kǚE"b+u4iO[eXOlc_2<|E?標ۊݗU ;Veܙj+|ӿԗuͧθ_Sfg} "φY[?h`_}h|I{X*V~_OWfs{ 2:@!ϗSS-㭧Yjա\7ݿ/w3 {[᜶X='M]?+>uv1[4.և4d+K%.Yƾ~z:@v Sxڞӏ贚fcd륏x\Y#u0UƗv<*@R#xjf+=Ko_ݰ,|ڊgnuBڋG` <Ǵ(L}3cGz!U◥WqϣCCP=ϣm3yc]7B[vm#O2ŭ/1׈`GsUtfP#Z[N 5+_}נv1ph$G?V@뛧m+ͣ>ƫm>4ֵ F}\AUneAu5=ޝŸL155ik*/uSۺm7G}y5݊%aLi?yxw4uKBhmm'ϓSN%iX0_,.&;wE]ioKrcR! g˘Q&^:DnxZ\59lP`oUcrVK T\56y{ȤuTԴK%UKK$"mvӲpRY*yi%zO>5.}ը*&fO;yMm"!f>62Uz%emg%FH$~DN]~76i[θTΙdM*9s3N O̓mlּ$K^BW/i~b)i&:e]*š3eǻW'1-!Hi Trm[}9KQ;)I盚 ,Sm =~$V_Pt,iNFq~~D%-RbWAcTlw}ǫ|c/#9zی?9f8}YK+~+J_}-js~L>C}-oζf yN@eنe=lg&e29}ګN%r !7 S5ȗ^ޜq1AΝZkv玗ꃧ-6L-to/(+hk{:o:Q֎"8]'Qo+ފl')V1F(aLj49Azٯ>2u#L,h\M?rmSL5oY:,dk_?i-dt^M ɇe]ǭt:CHpY/޶2Ve\:T\jΕsƝ.'>^ͳͣ1  iuctٞO\Wkf[::-kK35ɅÒ=פzl"y+t[}ԯ:VG6-[F;n~iAzi ς*E1$/VZϞAg:aqZ3,avWQcL'3 vءί,K?]U1~9V괤WH] g\663lFfy'6͂ۋʧj3x $G5( u^zy#}?|nFCڞvH׵yzlx:4ͣޓڶ+&Uo<ζ0-/ T.2IoseI}97U>ӿ>ֶa{QXӒwmi?A3۝gֻ .CO[i=_=L*瘡ɝu^6*=e=;*=:j<\7wxꯛkwLg}h^4rs^:nY<39tہn?scuۜqG:Ad\oF}Gsdan:ɲ119Mh旞N5n/k]֌L3f3d"痘 6*-:_A1*3=~QgW_NY)<#vv (SO$_ߚKOcӷ@qnCfA]c^i^>A+ggzۈ._}l|d/O>'K{o/d1V6%micED3G)#GAf,U"ʺA.N#?zۺr?/1>g}i3t>ŽiMqؙą<ƌ[/U]BzkҗN~1xо{ɿGXzԏۚJO;gZ-ycG?ae tP&^SOw|}wqeh0یΰes㼾PuP-1ۘ6 +|6=Zo;GX]ްn޶3:(})YǞuUyyb@IDATvJ`1m"_2}\-N_^/2 I[36 S˓2qvﵙ};3r5Lm=8Iyu")[FA0qIvӣ,:n >>˟IH1[)O>ls|:m>x|!h\v?;\w_g ۧvitT[VLJLJ[l zT}M坻'9ִO֯0ͬ~Ԍ$S6uG/ӗ}c@+>?xfdUfzlg>,s 죬Gpv HyȶKsn{MDԩkOїgo^En8"N~oJ 9~]wбB_b3,~k]h!)EHc-N6ڷHːmg+Kw#mnkҳ Sy5Z̀9ݪ^(<$uY׫}Q *tMD;gd>̿nV;*Ԙ;*${ mkea%ՓǬ,myI/Y!zE_vHCw\oAσ rZ2~'A1,a{Y?;=uW-m2A} ɃNiy߿)_cBƕ 4NS׈JȳuPTPׁgع>!I\~km"}{Ԡu:h ;6\wϠ4%uUy1k:Vw#Vޅ^LRp. z+z3 s\-V_^/2ry>85#xͼej0\{) 3xfj4ךn33iT﴿זyh1]o!}(y># _q,?x=Pjv.g(Ox;(?@K[D hU+i=ϫֿjil-[TbXhE "G&d3Lg5~?=g׼&*/"X )>x\8t$F˖Dңm S]zԌlGiG۲~6$έr\IXd6ӋSƣd=Q!b<:YcMu溓-֯X͚26< ,_/o9ǚ)9p1ð63hj^w\ǦL<3) u$Öv'ٯWN ?fHl3OݶJ|D6ɺ "opjv SÉCڂⅫU#iHNu{yUT.~lԴ9ɬ4*v9\o%YǯJ:|[X7ڤ[MQSl*͙e~cyl=^*'{,͑A&[0ωܦ?RV{35cW7xljRe*8qo[*75&7=-KO4h3+LkOee޺)oN}["]Nm+̾F%Զ΋?eNgֹ*f~7?R]e'޻B~kX)굑 7. gbZ7_2{1([ѿU%ۯt̟Pݠle&Gqb=pܯNUfa.fVS)*Y.} ۷d7_?ߏg>?iƌauz>恕wJ~)*p`Y/o= alT} Oc*Hn=nw_2Mm}L,pkkM$Xug}A[~5:V/qfjZK:] 7orL9w9yNd4 nMo1 Q@8 uc8.WN M(\oFW E+jcGM&N(K d SЦƷbYn;;jQ߽!牒^mă-n `MY\>hXpWnTebpca@0By]M s(֊9p1}6>6EV;.ja# /~ Wmrշqo^5QٍտI.P|^Q\EpPqR2ַa㪤I#_pV~yU#%QRusIF&&X fO|O'pR|P8mI_I /wIZ'ZfFe]YB 兗YekD=e9%1O$=\#_}QSڜ"m XWNvZfGj}o桚DZ+b!JYՋqCMf">4q4mRXyP+,rexkĖUBʸx^*޿ jlB-WezHi=:˗W$T_6~5m}-~9abyk"|5,=pCBٻ+jcRe%N]7bux}u`ܩ>_m#c+{ ٧b ndnȽ~ fѿS%ۯtWO 7>/Fz}~KUfa.!fASTʠ=2*/I_Lp5==~<[=STqimK 6V!zNK15 {jO1VriX[eSq#u"{s')<<\P/dNI R8wi 潣rV_ǛhGӦ[1lB?Bhҁ˔8*p[4Ŝy"R;CXE5@ Z0%IvvْyW*Y1QMPV6D}#]p1~s Vo:Π*:s, ӵ}GsDR_ 7W4h=‹_y_T>TWoJUqMVĪYFiפTXugT>ҥγD)gCh굎ar}OO~yոTGٯm .~C{=Zphۥ^o=q8ykSt[᩶bQG{#~z][fn{op% k^uw})Ӯa>9Qf{5YE GzN՞NUS<6q|XqI]Q}Y["L5NrE!z^Yj9`c2-//O[u_#ԌOyK571 bvZPʒҷw+ogG.&s[;\U|WA7?S*khS_fFYyT"}>Y=-Lk?,԰#ke^)aqD-"\EK>C ׹: sd/v8at߬CT涼dӧm =VX*{{e"yW)\B;z{IV8y=y4АM'bfM}scX畅noN7q[7/:SyAyHp4?oV$~P[\EfhfTTkϹӯߨszy(ϳ٢*t 3W'ۍ}/w 2q($r{9{fd{.ŧ6']u:EImej/~YYJ6N<9j4ۗ*mra-_͘h MߟPyTx6/o#=~5׎3A;|g3Y,)/'}y>p-1N>Za>ӵ:"mF8OҶ/m6&i[[ԳneV_.0y_eb N{7?^k J=lr#3YH^^+R]OH CعJVoH{jOŅk1LFXRPu#Dvdy]Tl>o_?ʸ^+>O7(}kl"CiQB/>œ]gzSD=Q*{]Ne6`W\q_#}^K#8j,,k/Pҭ/-2aϛcrq:+ܨ4칯Jܯ2{ m)<#^LS+bK׼@pyH>W16&ѾKZ[1za;o*J5"ˆ[:?n?Tbz"YڊG͏v鷋H8_zѪSTjx u4yKxp;jmeRøQaG<ˏ{,)KmMU{Su:~(ϰ&Cq.O1۩>)2̄8e p/&8<3nB7"Y̟ڱh9wjFJOאZayl* l,D N3gfzzi퍈STNj,>Y;ԸD%/(6-&:MľKs.+3#Oq,Tc`5sx>O,5,:aۄ9QE"CϳD8ô_*?SMUnʞ >Y>,#wK}͑O/jcR<]9x/65b#q|o>QuJ_2bod faRR;|) <߇\c-Oy[9l_,TD=F:M[%iKS$,(qk?g\#V] V=ط>bXTka=ζݞ]/qi2JRy(AE Ԯ%Y%qؚmܨpq:\xR 6:ݽn u 属# Rj^f,\^-5y f 蝻QhsP/;\2k&s=5DP:s)3x%7NʯEs Nl^5SR0EڢY[+&YNf)̳϶Lt&Ε W w);I67Dl(uLE`w\jTn6͙RӤ{~jZTfX~7~c˂E^K~GrIWaތ=>5{c%DpTՖV?d=ϱ.%Nu,_^䁛߻šjGdEfˆ%X^6k6q-?6f`>m0Kgcv)M2׹_ a{.CYoil38 ]l_6^7)ߟ7ϋu߭l*,̴5aI|װRkoyq_;Y'/C˘Y﩯W e%\l[{(/ӏ9l]a{ge-~zR4cOcAwl;\C7 ħ̤mTx[vPxүt+1)q&H_?po`Agt.LOFi?^0UVVɷu4ke((z <2~/BnIGHA˥n6f^wW:!13-^4OZ#a 奴Õ8(6 ^떮ą^bj>$v 4h..MvWsX__*tv`C`喕XyR,3"Z',? d B++)$Ј ۈ3Eh lhlT7z||Q 4xxICK;Gf_a*.E$EG7<4r_C,&`?`.^6_?r,yǟ@n$@@{pT_U[v`ZSnf,&F+PK5?5d''U Ԏ }_"w 9# *ئC//3j     Kj̸tvhƥpO;wlBai"~!!ƚ&!"wqv8$Ш.hT5v6>K!ߛaK!:Nh=<.m`e?H*0h lh4 d_i3lp(1(>&    h*?ϟ,毘* P%Kgw7~׷/0}:.zBkH{c!3PzlOS3[N_\ۇ7%ˍݗӐ 0TbjW++h9"G}Ɨȝ@c`{HC!`C) GHHHHHq^86\r*x'TA؏6w ti&}_O`9fCۜhڷ;VPQGqȋ?~'      Ow7Cjݱ u-_D8RY_CRϾ=EdwD[3㦹@%ڷFXTV&b:|QQQ]sIѭł @"@E5 o}hۗƥkϞ#V555Xرe O;vu: DxRf󣟠MiسKoS}XG";潅[vK/Ab}vw0A1%1 F/|Q F֗栤E F{4PEضO]?Qܻs'>x_}-8x1b      hh4A aKlm+Y-8,Ug 퇳菮-l4==u%3^ja5Yd؈諰9 :jl  g@P_M\_8s̹HHHHH)\GH7тJ,p(^\ n0ҦFLJIHHHHHH q_o˵O/}w)Cs! қ ,:\+p{!w@&)b_ ?v^,+V 4~||Q FI⊡x@o`m|9HHHHHHj@L˄J,}q+0J?Yl k/-ÿ қ_o=.}TdHR?>MJ~uT$ȺGqS܆6]x6_XHHHH  |j |ϨI|#P+@%oۍxt9>o]NDLl{uCv> _\HHHHHHHL5)7~8Wϻs_ߊ_ždn.rp|lCcj"hV-dl{mУk'd*۽[KhӶ;:NRe6ڠ3x!vawG+t fE_C+Z9+ԗ+ex螧Bim#:Eؑ */IeA sҗl X8Qr]'_]MxIGT %Qhm;vCNh/(E$@$@$@$@M_>f6_>g$@HUg3Pi[~~G ݟ -(pQ|9bN      K 1|l*NMuT&'C/?ziyx58)֪Sm_Sbւnô%/no; aY֡x`[֬cwNߎB>O\q"u࿳G;ttL˯CM,|F./xY(8%zkݸߡwg_DHHHH |m |ϨI|#+ |Vs]_} vCїc `ǯbׇQۖ/       x|ǃ~i˷,\{ \c-x(zigT)( 0,]{txa:=xp8/Kt\|}-7On[PsoK¢qwA4>8 ޲dj?~-m*/TCS?72Yq{$\ Pol QG5[^BEn,מn0gY?>-;z $KACW %    J/s/3j x|?ԅGHU wM/e|/;3~qW M@Ŗm@kGB @|^qܴwjpè_x-ďBd^E+_3x= *u=eeh-0. λXzo:6Xnv54)WВ#E& <ʧyP= +w_u^u^+S-_C$@$@$@$@M_>f=_>g$@*:n>~y=F'l%x5\~>|/eTbC>Mc .+ &       & Yl_V}:^>q~0C]&Ubq U5r^|dr_RYQ8 ]nlt-;N }d}sMR?F'<"dZ0k.K6v1ۘuٺEA6|2v6,N ,VedvP"\o6a_deb9V0dY2K*pϵӃ6?_M+ȁ  P'P#|FM$?{x\=3o5}kpzc5v%s9=R"_( HTu0VDl'tg!f?Mx q>R` ,X4r1Cz~w\woκ>-E'Xq8 U_D9A=5vޯ?Kz&~u׷K޽3;x:__X *zr"Dt jkgr$@$@$@$@$PcS#|FM$ k>.]BoKP_3|>L48))J O&      0_#Sq:Q@IDAT8᫷>efqQ3cE.?-1:(vm݊KٺG\?'*Ń24i}Z3|w,,F_1v|%ס]H7|gPO?oNA)\0c,W+}⒎8 4n||Q F +0z|t}Fku}Ʈ-O縿=|dTbCbƻ7DAˍ @l .xAVl/L鋗ߚqeN6v^9]e1Xa8 cR 춇ϣ7'_NnWױ=yx apYbXd߫>ӚK=e毈\4f=5Ѷcrq+3 .斂xxHHHH= |b |ϨI|#K5puTZtаX|`',~tq$70a7aO1qA13vavqCI[      H@Euz Oι Oџx3k-x{t6+X«|+p\uf_tl}%:|EKSK썻^<5bv{nô%z\(yID5ছB@5wb/{%ϗٽg%Ο{:2(̛8In3|p엟?~2uhO 2uEp0|_7vo0oGDV-/݌ K  @#@YN5 ob b%njWqO0K?wiyc:84ve#Q_޽Vy*_& nIHHHHHH 9&h ;_>KYq,hbjvn.?ÆCuX*K7+Re'ɲ cFSnxll 13V0Yr,M){z6KfdFm-HD+g+|8/xb]0'УU-bʷn ]bSp%3#J9~w#V#/CnX.77@7e/ ,\F$@$@$@$@M_>:_>g$@*:7IðkxqXk,xo܀n}M7O;Q4g$t\p`4 w @|~{P\?}XF.jY«G<+5x`3 ke.-a֜sMNx讏^ ?}î< fH_KsSԹ8cu7_OŏBVY<?+%3sE%n!PO]y *{Ͼ Gg*Y( a3S٣!S9F_IHHHH LGH7т/oI9T2±v9\jkTV&3sЮk[Gy_& nIHHHHHH 9_Ʌ]RTeCVѵ}KľEY~TdF֑c#KG*;,95;JXgQΦ6 c2T}$YosLWue/UVؔ@sy2عsZZ.k׭CYdeuBvs*p@ <HHHH |q |ϨI|#P[t@W 3|      J =J +yKޘ:_IHHHHGH7:T͚;-[lo-('テ&=َ ;M;\߻Dh$\$?x_YY+&\f͚!F>]ıuH$@$@$@$@$; | |ϨI|#sСSgt9]:U6Gرc8XV}kV }lB=IHHHHHHX`p\ѹW_t뉌V\tWU@bj#<>\tԡoވi/Ν;{ܥZa j/CQc'?oS{0$     C//3j _ |X^[7&kZ"cN<םuڵjNvq cr_Ƴ(U쓗iuuEf+88;?@`B,\+Du!Ns 37>w;_HHHHH |o |ϨITGőz YbKvEn0$@$@$@$@$@$@@aTh\[m6G&@1_ʪ [mBư!    h(1)>&h4f Z~s\ W✟@QGHa/٥}s HHHHHF0_  G༇igw* 4A0}b|\]-۶àKɗmlDhrz_oK. 4%    _>:_>g$@ Goa$v 'wϽm[f5xh 7Ga-_wے|t}"}d[a;/N'Ch8AZ^դT`喝`;T'| Ww/:A1^ؽ35kRxh, @ PF+!'hJjCq jjP-[}_u GcG_ ܳ㆝kMgnrgNgvAh-2[~˶y|of?$@$@$@$@$@$@$@4㖗4?]m|1>XM|171焯SF8Zyej-E59}бIhӹ{q@MQo8lfm2bwmE'dɸBVNhe|-14 9ǶO9&cF9Fxrv?tN(.42![]5o5?&1c+)nj; l. 69~:wڊYz;J!ԣ >©}cM:>R囊DNЫs{߱Zf+w92~<.~CsT5Aϧ$@$@$@$@M_>8_>g$@uN`{Y >,;dꐼxWB\GdFtaV iʘm,dl c+ٻj/s 3(j6/}֯OoQX *VRշzO}G/[m&&g:g qKHHHHHH& >.ӅNg.E@y !UM!~H<&a-okk㺰*x~!Ē"E)]X$"#HhEMdD\"),x #9Z䜰x*|N6B Kfenr6颶#B"ҰF5UPhEc ‚7"[â8N;Nc!ē_:3wx~\ m 9Wo)$mֺuF]2CR& @iDѾ&epH5pꈈղ_|8&uPAi ]}̩eFP8n tA!2ǧ.r~N떙ٱ=zpGƹA b[)z?ߞ3h -$63j!mXH& 7̐h%o]lː}ﲯSv}۶Y-cģ$@$@$@$@$@G|Q =1WQ$#2fݱ[g փ;uٮ);%;~4b\:tD1cD$@$@$@$@$@$@$PoJ6|ү6lkm=hվZY2Tpp:#C^2>'$ѿ"},CHXp"1]̊C@Ja`⽠/_D~Aq_P䧅~Vd5yΘQM.bÀ`#/u78w3%w aea1ڷnezw΄ݪ%ZP)KIV0B6xLd5V2fȉNqL۠@. u\p`!VR"yp}q0qf)#    #|hh(r}$@@ *NZ0:;A ~dșb9 &HHHHHH()X/?_|'򄃐#fwEVFҀ>{涍4Fݐox2F[$/1덏0zH?=Y肱 !޿>YsOꃻƏ2f )d*HHHHH((>&o}}7NKW$ )0Μq)( +_0:xȕIɝR;z_~0#䲰.֗q,\KDyG;(+O6".'\O~/`oaTBV,t;'; FÓ]WTxzObǚpcZ?Vl_e maNQi}B ]lY GԔ14:b#hwܙc]#S<hP|c9ny3k>Uv4FdRy(C`l܍òZu 0sOi}K=UU^[[M8RNh!_>uBlr+dhYmsУGУ&X%_7cb |X_#q=JB`|<c|*F *]!Cev9 +M/f)+yVNzT| _%z,C}+n9ά/,3F.WaĘe^' {HN~[1o{gs: ]Z_S;U?֍M"@U$|/pzO,W `wa~t֭g> }ϭ~G߲}l*ןQ>ps;i=>P0"  |9@It׎%[_V%pz.?6ڐ'Èavu94 |m2>ЖC͟n`+|x| g1X|*[vi6V ?h}&3Sl_2_a@=-D+œvot)ÛU/3;GK)Z[RDmGbgA{K@pwhU2v7iOlxzV+ڝrx3CMbl ئԿqǾ` _W6QMkuU:ev4~ysU\O ^{7m,Srۯ>Kzg^j)ǪLi}2͇ǀa~q$K8`9_{ϵo?Tx&:: T-~ĐSmxFMڧoiwdвpii:U}vz>/{Yt4fri+Fɋل8/$ A/TUzK$lJ9gk,a|Q J>u-{<8Y^z ̞I6v܏8x}J&+za ־Ƌ낟qX|Rk‰fo?1~=?"r UO37<[e;eƧo`rܙ;qe'5:>66m`SMsyP>N9[փs:|Pt:'$ (?ꐺu u,YEݦ&>l2Hf^ܧCӟ^q` _WjZ/sAurRp?w ŀ\- 8\O?~>{ͮ%u'^O襁`ڈ1D{6 4I|[]ɴ?٣-9FtUѯ68=3>xЮ˹7Tdv$-k_[o>yMd=u#j^&119Rf;m+Zky>}skhjo6{\ȿ{\+0bo{몟;Ev_8&I{'KfjosޏN:2mYNZ'S|^f>9&5/$ zE_V^mܸQۼyLJnܓxU%Q_P 5pQ3Ċ6ܮ]n78,3|eTl>A }eot[F?GFwJfZn= v, 2tN퓴@[6Ch}\vSZi޹8JPi7J UxJy).U_*K BNm_,X.PQ K-[v~2zd*:y@tzeX{l>deee>8c !3.iW؜ lQ-VbuA*$Zb9ga+ʰe~|b+ ODLKg_x]'< wЯ4sr%[$t|+J`e.(R e[xn9\FZ$j<.gZp=NE9@?#JdS}[m87k߭7ΐY̩%G?QSߟm0If"ۈүq1a>%?+hin㓵1fҤ2p̱*eIv$/7\ɯOPmjǟ*૯%)0ޯߴZBw(Rlء 7uS|skOyWp~lB,@"o0>ȍhJ ђUظOZG^Qb)=tCKޙIMDwi[^_ybDW$wIjsذKsq^q\lRd' C.1 ݔ/sV 3c8e8gaf6  ߇-{0t/@BKh#sw*xMtÇqcngw:\j@žgVXL|Q(_:TXpP_ !}Ds]Ԥ(ߥPk 7aJ'O˶={ >b~ _zxz#}OBn?ÄGEZ +4g&3|Vb mn11(+_Z"i@C`LѦ;M.,^ly H Ca">_-Rqa'[8semJ{#x|,_6|';.(mX/} |vagGC{˭8,iM?~ [.p:mX_$3W z:]mD6v?nR?.ιXeYV5{>HgdGUGNHl~eޯ߷z饗0h m͛7Wn<~*6gz2Vfr 6ߺLy'oϴި3ߔ mgͺ,T{mfE荩㵅k_Ec'=\4&*5O;^{glunxV:۹[0YI󢮛:_ߕ5?DŽϟ1sN6jX|Fy6z//،іn^c9ڶ1g>b4TWkDΚcO3߶ &o͏?fRmC*j JP( X$b  Ekqh(A I,1(!(N$e\,d#ɒ,yftg3߹o׊{B!kQm8RbԋJU>Q.93nz>JuXTUL^s:Ei>x\$jW&6&ˇ*q_Kc%Ό[Se?T{\l6$QTO>7Us95e:oTP&w7DɴGhBD]-S2Hs?\):VT!B(g7։   #bIoJG﫸M8yYq֚r!}qUn9X]mc~yܺ-5_ϚϞFoQImƙ~$Z;DdOb.~f4zu[^"NvJ *xss(㭜e~+K$qvⱵ_H9.ɿJWJ@]C{3bXbkؾן0=r>.:3LŽB.=[gsi(RHW~I?g5^]Y泡 M?(mm7[{<;.s@@ D[=|ywEұ^Pc.oMhA(. >+ E [WXa(--E9O,t,+o E&'{X\RQRȯ\զ-€EU-xh$1Q\*m(*0ms6_Qh62*|၄P]UkZL+Nu K+K.ckm@+pxz q +v|;eaV9`.H6@+c%)3OW ;;׀xm뗉7rqQWt_Q6'D}GoBhkASԼDO0htRp6kpٚFQUrChrG#!Q9ฦƗĹf#RT?oQ{7olrP(Uc W yE@,kko&cWb7gb{ʼ~r`b}!}z3jJ Lo>-#'3tyU`.斯aK"D7*lhBDDlaә v^s5 έeɅaizn7FiF<>ӛEgu&0/B%*8&"pI}Jx7Fަ;Ǽ~s-|JDSSJgutl 9QezQ/^~8*(gGCGۢ,cCHd/%V\mb7]֏+vחspu͂ko_,-}1Ђ[j{F|vmC xjW dv[5'orm4J鰹*QMDh X Ow vyݸݻV-35.JuVѰ 8C<\jv|xqL/#*rԯ +/sx-tXqAӋ.]Lx&Rtݭ_YVif(%Ь ݜ8c,/4'NHae@5wޥ=7(x)e[>#fpK8wU}7x65n϶O>FO;Χ[ gٕ곱BXB}B=wx/#9/Gw O31;^j*jWt^J>Σ{LD9ep@ԱF:2sHNX'RQuzge8    Z;D'bcq=2߾"urIwy6o|X$_z =͢-,W8o25-|%Vzm0;y>apn^'/Xd(۝͘ [B4wt.洺KTSߠǚ5ke|'if*3yEGS Ff%r0/(7<'xb#/DsX`/pQ^-n&/K#NDiyҾR$f"yv7J̫Zn3`F -"?IMw@[=]GX ߧd;ŭOh; dT'ڟ$jkEWO5D 74pq&katƜ{B|bbMאhE*b d2iނKqG,ʨ[(P)-^Q$pl `%z}VǺ2?>&Y6PyjƘQ2C,bvqs Zjt>8}Dd1#-x|Jk5O5d\T^_Qz#ɢMEnǩ9V*-\ݸW(XsO sW5Mg諒d)l !u_3gʙhSG+]c n=>)|7a?;rItta 0<VnHtL‚10y=E^*KͥeߎȼҚCAy\eL[̓6,XIؐ|u=}A<Ľ4IoS!.`⥠W}M+ Re 88(f 1Ȼịa>ΣًRHW([ܿz'q^^KM N%.{kdjH@@ ?@+|xuT0S |-ab>댧^Hm|Pv3|-;Jju\UhbOx=جZWJݷYh/F**5|! :3XB~pxuxZ7Yo&`%IaVz+AyMw-]x=`=M[d~ nϖ4lHwn,_rK8-cJֶq"_Y0'7tFl.46y )(m1eZFL)e{wuz3-򎂿 I}yLuȿ&vc%`Z; V[w볁8gD[.F$ yU~?)ea>ιEgX{Ԓ*+aeK|Vo3Y l$?&zݦ_p^䋳tx~ l w󍛟[uڴ0m~Nۋ<\_ދzӕ6iz0YtR"jxaq}KW,6;N_$FᷔpL ˇZO^l)ٻYn@\yI@%:@IDAT}T&ŷTqsXL,:hٻmxhf,dM=\.`\C*rÛsWKmb4 b۟MNס E?l1ccf2lЪ,qC`m[m\ټf4`<Qeo'ںR(Cv͈|iFlSYc2S$7qQH㪄/f2HvecsER^_Ùu'![ Lyt=Dz0_բG.BskG>i -),49._6 iɹz=ϞVXy K*Dc;[l>HV]Tz ar.~pyy63Y n|u^,ּ0ɺe+m_]_剀WۄbJދ ~!GlDB*oQۙ*:l~·+.4ڥfdrKBk|ATƶ$dvd*BK.?mZi`n^ 0qNkot\ qUD^ +^ :+# ;O}u}_f_޲XA{>&'jw,%׊1UPEbtc+B]tkk˺oq\bƑGv 3 ~WJ>f6vXa'2 g,KuZ_# i󅢢|i0y7'U&/+!3Ly*Fw^9~\ j /j=uEݜ7-u_Y.4N5:Z[Ek{I~bˇ>^VneYq.dڌ=B֊Z=QyZGq ֘ أ؍E4EeWV&m m0c.ACliM`'>+eeeJ⼞8ֳ佉tAQv6Oϟh9]/2ljNz<|6x^-7LC]-BKO-@b1ǘ{8s Or;6[U-o]gfb\2'4Qҵ? k΍fq1o}>(LC+ C^D^h'ؚqz%/98Yb5x.%%-C fogՇzI_ g)S K'FHK!R/NʱHzbcH?* ˪FHk}_wnɆ}1q!Q1Μ.Qy!ũF߱Dg%6Źe8H7+%"̴-L5^Ȁ锥ciEzޞ*Ѭ_a6xc-?V_tEg^>{,*EA ߲(QO<hV4vzzzbsueEVBO#<"gL_Dsc(Eʳq\N'Q)f* ;?E^fyhS$L 35VxZe:ުx]^G?ێE E})aEgYE+Ӭ__\U nE| [o }oTc\(CtŢ[d׮޿^oʒ)_/[p/`%{mbSg_1#-66ox@ˤϞ/b0Fΐ ؖXubEm4_<` q}gK?}BqUb[m^R^lp=-% ۹mlkJo_ħ/'Κs1 N3٠x-m 2|egcY16s9X&xdc -dYsì=V&;,jDYI_:?~ul<Σ9Ǒ-_>\eb{4sH=P#PWiۯ-|SQa V.<\X?gkd# |9F1O_bG@6悯ONIԽgxy!6ǀOO>pwq[KO|n一yu\ ƯS&C;U/Tl_p~ޣ5Pk7+{^D5l YicĜ=r3Tt-jb V割l;6./i]^彭b% ޿.]ڐ2t_Q'&; z2x]|èyKF{i9nV9;a=\׷  U IoF+9-ۻTLCΦdLgT>k ҳ C^^F8FYg&lZW^;ͅ=mO="/n,â5E&<|HY물ҘCv䵕zvyY2rG?؏OA|f}^;t5d6yz=^d8veL|dӿͻcct~V'c6!ps&q;sLH|d.b6gygs-/+q[FE{3[ O/NCs} {@ ~ Hܶ3k-S×o~: -_x<K");%췐˟㫭$y]~MUݪdB4쳲j^W$ִcIϱN4J5q Ϙו|G[$O EO^o`8y;@n @5E}뗢-k< J+Deee C_ZG71[ø.6!*,UUIlZ固Z'& OϷ/Va]H {Tl ?FiPk+*5uYHi_cŜ=4S/)gnM;vWR}_FNŅf{V<iP}bK /_aۿߟlƒf׼*ʸlŞvۓgGtqoGQڒCoUIQ=DD*j7~9>- >&7<ȜDksL qJ\W:gStoۡo|\[:Q#DsKhm[|8{+wr_an_ ̖wwOnx%Ϝ[FuJfGx86<:5>emN8zø9 ^-vc6-N)KiIʙݮll2pѯ7U|Qϗͱgśd`<1_x}xy+1Թcd޻]z墪fm kɸޅyGO>ʙ5n'm^CN"$m4nT𜙕WLl./ pq OUnhhH`ƩT42aI@xpej*6FckcyN%x$_7W<$?߽ŪW7rͿA,}$I8O{CD^؋xC{Īk }j ^{E)*b[D[a'\@ŷt絸be-x>)c&<@+3t q{s%V]7W<.^{bsb{V(K-~> y[1ܵ]~z:"|͵{ |ܺ(._$~kōn2_| KukV8"u=^t 2\OOg3$?^KR>v'~K6Q*X6HY[}!RqZi2y뼱`›u͓kzνJʋGm9 J>Σ9Ŋe%,~{vbp8 |j1p׊ዻfoYk#, |pļQO`l"SeX=/*׋RvA1Q: Pog5S&#켶6M88֔xo6xXO+Yc;l#>["s٤k?3^H+.v"s<Ɩ5{cлVr"xR#<(Av{m~;>$u\ Fhlj:^-Vƙ7:hRo,FnKVp3/^~8:=YG[]Y~uVA#)i;/wݏL9kguiIgd-N!zø9 ^fb-,^ȋdgni鳜i&5x2tVBxz^ta|JkEScu 7`ꓼөڷ%_(n9Sm7ζxq^ i4X;H5D*(q˩J .FSq'ϯpTyq- թDz}Yq_km-/#mWxq*7없Me_Tf &?<Xz4[|-0h R-~]ssJw.DŽH/X{뢡K _r;{Uazs fG્T\kF_1ƍoo v>o6Dv\@Ȗv'~An˸yIƼq|_NM/ O3'xOs6q\wmv1O[y+ɿ>qkv\5lγGvz~|gE=mmx_ˮqM ċ{uFS83c7䄍W|*yX>Eo9L6_`́]Иw |ݾ,iQ4["s٤k?|WH&^7S Ĝ4jQY{"iW#+쫙.be zø#eCD˴-L/z!¼mD)=)LM|lڈQ_3R5ڤǹ-<C%qo~VmsԌ|}d O *hrM_H;}SY%L3Kzhܿmެ׺'CKTM8G4ymiۢ8 96ڞ++ Bڒ^Z J=T.5<^lxQevyY2r*-]~mϦ/*x-Y zٶRcoGLQv&ܙwdzLIO\Rt Uz}dƕ,m&]/z}[;kwvs;yn/:#]\4NCo^t=˗g[xx'1q:nO. 8[:raCya7?rowaq,xX1&"9~_6KkZ+>/CؕOli[6DX+o3(lkT'ڹuF'_6%o(^\^xRo?yݒY5MW6a|L<S}O6_`Y_as=4Uy1{JyVۺ;Җl|N:+ߐ9cԾFD_%rw />֡u|G2DJI(,.%slÆuh:=zhzymk  @eے?~G5+E@>1|b\Q'XhOy ;vO䄴(|F<~Pz+'0|NƷ.DCEӾ]D*d{ D? <ˁ1+c\%7N3_e+%>Y7v˒ML.bMi[ Q (-,>6ϧIJpc<4y,*&]/ۧ\\)Βei.:U/QnfPM^S RNjXY%~)4%]EWu]|<̴%6|Ua^VgņK'h{@ȣ=Sżg:lC@ S2rтڳ;ٟ)TJݤZ4װzT>F."w")g% ^L[ գKnx\_- q124A92k,xi&qU~dڥ?Cc!5dqI-^tH  9$WDo|]ҋ׊ߊ| k{[K&׽Җ8y(& q '|#5/*]3֐ʢYT3۸xgAƫ.^CEh2ex>/jDCUEUHul]JHȉ]̫KNbT0iX9mL 1QY,T\-2ϻ!hj6.7Ë2KG{hI2/KVٛ;TP&[-yp˿"k?pi%GgQks >JLVd%:'4vւ%k+o%^iX',]9֍ݫ>vr+xt0lvavQVY<:)@vLG C{MCx;o]/}Q?1so eO%_j.4Sƒh'@qGއ|L}e4,=ɭJ4Krܖ3;ZH?-ړ|R\)x#ZkXMNË|W-NZ8Z",LokٔF[DfF;mQ湤&$zn'FGOe_TԙVo1/ tYefHfc1;3j N$ JO|^[r^{:D}<=p +M|Lm$b_e͕y18/:Ϊ֙=-5I?N_8Z)#M]̐‘x?$Oɸ( dlkx?._ uĩE4׉2ҹH?j5ub>G1iAI\`WrLISX?WVaO`[w * _vMe N_㞝_c? KCϦ/%AXϡٯfVvfMw&wbbnM÷H-.DR{^Slhhj;6\X:|8>{xy{|ȝkY{#7/]+:նO+6v4_ξǍrXA~ ?l'*ֽ-$:f !X|֍KYާ]D{n"ջVjZObkϲ=r<|z"zk^w^[lCm>e?wL6Q]>aU#U6́]^|$=wJo^!vuk5ninu_ Ae?y!Oќcnu=߫˗Eְ7RjV"4rudAEC]63H޳QI{Px}Xsi23Z[ Wgp@@` @W^<;xZLq2lO fNEvb>)|sK[8 ~V5bN9M` ׍'6FJ-[HY۝[}% #oJ*ˡ]cy۝ ͍|Þɽ &a+kEE`J+921)oG}qʣly Àu}\wV"'3yƏUͣ}^oX]agQzM{`.ly^lֱ› ʅBԐCmIM-s/Y lm$j_9d2\tcu3oU?u ѪO*M߃W,F]Ᏻq/rOR?<%~ 'ڦJ:.';|9WSu@f+X3fr/ض01g/nHYx9 !H #Jݯ;iGoyd2ou{o=qKڄSe0 3-7ƆMX .V9-~_,:#&|],lx~\=$:S|q(hB))N{mDZ×=M3yrmݾ*Qd牱T₥*ޚ ݞnyӋW0Wke|t<>O}C7}髺R[Xxm5uoKzRo/.w_/ ӇJAՖȸv_ٮ֠]. {.~JfX#/y{AnOθP~Xr1+5V-ҹrیU<|{>c4Τ..+[ĸVbcz\f~pƖs nWp.\7gA `Y{,M6//\x]V93bgAxqU/  |e7EmcVcյb|5EOo{A{BrVUĿ~Fme{Ş:QZhIUocԷbML?#'!6r+FFEUTZMFOĕ*uU1&huRP. -VXTՙ8x9TٴP.|@][,zDfoe!{&(L[DIA"3.QU\`,6T6IW6u;,JӠi|/^E'M:hw`K + . ˗W ;6.ͥKm[CL, MCX<߱-!090?I݇~x:齯{gڨ؜(9dܟzvE~j*lukcgUde/ϼvԇ1׋r&*RG}~(ʤUJ-.=QF#(Y-5<#i .ەy<#]}q;tW9Z/ʷT@>&6'o)uQԶh&j./=B9VX*XƐ@ __"M6nZ*![ 'ˢ|$3q%Z9*I%({>YWEiRcw?$"˽j8[& `|NgLTY#UcnH--XK]O^9%=/{EKzƹƼ+fx(ȜWz|v GUZH6pDjp3r`<{3?5^o986?r?_{Os+nV<*yW/|)&jkS4ϑ[9JPm(M?Q%Q=qm$2T#&vi8v;{DųK/Ioa^_z3`oC~Y9%_W 6m/. ?y1_]B ǂGև-/B .^޺I{o쑞^b+8˻V>pľ~YcX~jC?M+`ڻY\ًmLx_]֍tjgk⺋ nkwu,ڧDf)='V/[,. l赧.X(*KT#y.?o.V9(ZاY,ֶ);E5֎$<6qo-h4֋X~uբo^{?sjєdʄGff4XgwyyyC^QqGzײ(.IxN5\U)(cPHT> g"&ggmϒO%0R l91NM8l>88G4iQ4e 9eRR}Qb :zߥa)D'OCMMUȂJy_h<ݳM*r}I4'JAk{wHZ;}4g,Je@o/|;y~l3kZ0Hn۔)iLUnh.==4e:@֯CSfӔ~|,Y&^4y,"WFyViZOF7Mò 2q[%/!C 4E_&'!}cK"qƔɈu*x>g;wr/w:6HQ2KϏg;{jI\L ߢ6.9z+VgA3gΤ'/RM%0!/8  0 A'C7&Љ p8M?VQOUD1Y~? ^G'V WNo׸Hz\s+}>/ѦX7F'@@@ bp?GFfOO]eC+g?d)շs1}˾qxu;]c$?Kp(yDK1'㙭hGߘkJױSJuD@G&A0\ ;P  #HiT|IbWp=!-| ڼ|,'{wq- )azKn=HYϛlC7L8~ST/<(] }zWE%2]>@+kFz_>7!    0f[ yUTtBz5uDu&uCz   p8سmm# u|ggy=}4)>yiti'qK`|1/>b+lf|`mzk9k'g~,oEv@&l Gigׂ+p F-RÑ_9,UrI8$W G                 0 @B+4Cy#*b8ė?ϝdByb珋f+VgA3gΤ'!2S}o(u}k:0@@@@@@@@@@@@@@@@@`l7 &@IDATqH_9A@@@@@@@@@@@@@@@@`+W#i aACH@@@@@@@@@@@@@@@@!rXh|>qH_9A@@@@@@@@@@@@@@@@`+W#i aACH@@@@@@@@@@@@@@@@!rXh|>qH_9A@@@@@@@@@@@@@@@@`+W#i aACH@@@@@@@@@@@@@@@@!rXh|>qH_9A@@@@@@@@@@@@@@@@`+/eNj| Tߤ1:?Jgt 8jY, N[vwo< A@@@@@@@@@@@@@_9,||K=_MR1kl9X: Ѩ{/М G9~4B @wlOP=4s,O>#iЁA|}r:G @@@@@@@@@@@@@@@@*Zx1z4m48q"M/ ѻ:7:L>{eշm̟O'ٟk]ҫ {ҩtm ;#-=uwEO|0Yfeoz>o毡 @@@@@@@@@@@@@@ @"׏:& SW. gVQAWO݇ׯӆ-bg34ds>= ,~ܻ+@&N8>uɹ4%x"?%a3@*Zbqr7,[G~ze ]ùQ9ާ^)ܩ i,]+O'*MMjO@5B8d7{ | xmoЖwW|N؜/|1@@@@@@@@@@@@@/rXv.Z9/VoTƷiF|D5$Co&_| ǒ@Rכs,͹n^BScigiKC|KH?7/O=_('USOW8~9_{ޣ>M~T1- }^PIGMYchb ȡ>߽MLSKǜ8Ӹic/-;4{x$2mi_d#ӱaO{=ڳC]E??d 2piWm{ ѫ_kzJ T翸㝶Iˇv[Ȋ_Y.a%F/\{->%ʅ?5]sD\>t%$\OtM'KXoOz?$^Pcs~xsB5wk:U\!EolDca矣oyb4+ 1%0b یH{>j9,\K9 C5aKa#nϣy_"zgws-<׻-tZ &v]MeCqQ3et%Kpg_䣏6z =Z]H7Ib̒/cN`$_QlDK}-/} R[Mm_}GK@@@@@@@@@@@@@@%WxViPzz̭F|3OL]r!֖<1V0p޻wO~&Di~d|}E0E]ݯN6ɭ#4u+`pb d/ʼB4tmfy<t>2o|a%GR              p+{xޣ;Z-Xz}(@T*bFn83'@wޠ +^KfHq4D5O ^HWy?ⲯlv܋u9\ _lvAGkzfc6/^&8J q4c la!nϣwbh'j{p!" :]>< |1F&yPf$M `I{Z͌f$Uٴ{ a/z^j}9fu|Kz纩g 2-=:+I~?7~x!wL$1s$ƒ1xM{<*iA@ւo{QE_o}Ft!ؽ>>K)=w]x":y!VC{gwߚGެc'ނ ^6 ѻ[A/w/m!+tc9DwOS>rÌW2'k*嶎/{WI/Kw>_utew{ŎK^sI>^WYҞdw[ȡ-+םIB[v6>\na L'n+j7hْp,Տ?n=Fa|WXy>b:cVS>L8C?LsJ/\ W/^{蝽~/8-F_9<:y վcO#9'')Q&U~` FdxUV!RHTS:D$S^sC7>>uF8/s:2iouP^c͐"ӟKQr~G3 *w]?% >@ϘMs 3eD4qMv?'Ou<97I&'ukT\2dy HOa4@v.7ɖUC^vڬM]ۺ >/zl!:Iq}\8S0v;0%oq䣤s#*.2Qq)PԵZt}RH1E/OuҥD?4(EcqNJ<3r,Z|3G",)/PeX q\@H5o+,STs57B Xq4/;A JtÃ)v:%۵'|'EQ^ۍ_Y7sY'9"%>^m])_ȉ~Vm6~#|R^DžoN|6Ҙ=u#R"ce?Z~WM?%RUXw`oAPv T[jJs;IտzzbSxd\O~BmaĬ~A??!QAQ‘؈^h7 jjA- Rs 7JKTn E$TUV K~B@! B@! B@! B@u":ȭ ?s+v{{3+G9P{qjiϧ+:X{~_~?z amK`Ĥ:F`C駪pg7ߡ{NB@! B@! B@! B@x +^bI M`9[.o\% eȷHbiKߕb3<0)[q^׶9czTUv]BB@! B@! B@! B@!+.]iӦW.>~'h ;'9'./B@! B@! B@! B@! @ +HcOP_B@! B@! B@! B@! B@"V .)p~=hd] \p EĦh\۬Ӹ/盱"aB@! B@! B@! B|ꫲcut7D(>"J9 =DuTԿ4-\sSH#B@! B@! B@! |b]*R ^]$$`JV^ H{?'WP :1(}Ln}6(~zNA7伲 QA/*P͕\s\ϕ~Y3m"j}wjݮ{E+Ks9uM^S>> K&9*lT Z;%M<[94e׆GU(/ױw"| >g_Rvm@Vٍ.݇T|V9#Y<`&e1qQi?5f7){ߍq8GG9ܫ6ŋ' uKakOdRR?::(ϯsG+mtx9B@! B@! N WΝѬY3ԫW|K?TGmW}%ߴ%Z5**i]+6b0.uxEu&˷_,3EWP}oƮk2vvVs-pAGR_15yZ96|23*p=!\w։%;Ô)ԧϽK ڿ2)dgEMPMcl*>Yk@_%_Sz ж5 }Xɽ>||fI27ѾHJ09b:Ͳ謟GOۼ:ÿG<\C(/ىʖEv+\VOYL9\M@XCja0"@'`fZ;U摄ӵ•A* VE(TԐ'dlsQJ1]w6ȦVs~x?^WaD Viy8>^ ϥeVW~۬=f"߄B@! B@!W Lgxo[g[]y:e - w.ǂHO1Q #~heh~z<f+d~هa9V }K0炎| "Z+TC)K)ar%0 ]R3n|flB"V/7.v1 4N^;=xr_/`ptX>=9K=R];R%OZ^W$=Ic]0B9h;|YA WΆʺ_uR3Y´HkIΗr #jO׌N3Κ|5[]%븖%! B@! B<# *U@Wtox} b~M[_ "[n1 #.]ۦkrѾhۃX{twN n+QhxaK@^Dd;l9:u M.$xJ.R/vо؀њ7ԩԭ=B|KǢJg ܺ o+Goаԣ7l{ |o=M3Ǟt6}jhqE;\3@,Ȼspª3]a(Ш=5 ė;c;q7ѳd_:!|*!UPbQs\yMo؂.nWucמFM[vDo@TMpU#yS cl-R߰aK\1T6`-ݖлO_tiStlߖJ;1 TlڄeѮEc b| US gevqnlzn|QDk=n+["BU0cSp#Isv*?oH䪌)Wukp,zp Է5ĕCנюW>0V +qG˃1 js+R$6h}1E}05&O9GÆd{ͭOBENޅqas7:JUa?%8H&tB6Qa>-a; >,S$o,m %_Rn԰yKt=hऍ=#uN 5K:uAN NS_Qym)Rl)ځCՊX18A.#4c@\>83 m?9z6MBMЩu%D~Hߵl}%]۝>q*)m {{CC)+JǴ+v'v[Ғ4]@6.eмQ(̕\83Gc]%^ 883=_q'w:|ty6|):.>s1g6{%qɸ'OĠ[8{JK{LP^ k/!^WuCbduМ«FCbh˖qֵ1Q;МеW(Wj?mU#__{U*oxv%cjxu_GҸqV|/1gh5N&օf}u-oKr0q> #z9P4kڎm\D\nZM5~h̍Ty뮸~V筢l$oG:Ozns#]g|Is er3j|sgFWfrR1_--ڂ:Dc+;EϾש2s&c}"*}/P~&hB$磕%K.4]:ҋ'9撖8%sh rbȩO+_-)jDν?>*k]9#󩦹OwБjT (g>>c5&B@! u_+G?꾍e(ڲ1ڍUU"t/V`;#ĞK[[Q _h8g'z^mbƔ;hGQ0X t%<4 '8fcƑږ1z>|y3VO B}`tݤuMyH:emS21>|{JKd|%t@l~\ӈv-Vj:[3o,z6hඃ5U  ƫ>1Zޝ5r]l0|vdez5G2}佩TYLxuxt4way؏3`l2Q|+@6BV;2ݒ а,wnmow= l:8]}f}i;ͺvR9y)s~v.J[]^e'!0dd6رE;?Hi;fly1u"7/DZG6.RBqKyE <`5y1s;]d?y? O6^>;ҏ-+QԵ#+xwS.#a,1-HlP_L}jS1 V] 7a.nwo!sʵѿ܂ٮ&Ÿ##S?ud~ov~G&60r}Oݟ]JҰpo1%u\nZIʂl5u)~5;FkJ9onog}IsejbXyEW<S;w"A[`Ls e/YV'x=yjdlŇ?|]oNY}F۟4˭1'|f,Y SDZ>o=_Y8䨉rOž*_Ϲяg߰ &Jsپ'ثT ! B@! @$ /l縒sx}Y]Tk f`o5aVA=`5 WX/Rjzs6}#x+Ha=: 5MqM/ma]s |i9'Z+g(1MtxjĚ+ГGTqv+VW^Tj8!VۥbHuRODo>#z2>be0PY<5T"oXY I"bXڲߺVL)Y1Y&8!+1U*F~P]0afL%+(ͨH4]chGZt3/kޏ2#b>_~DM4yz2Gb|y 'иZAG_@m&w@FNfL*]o븞4Y:Sumc|5/C>-dl}grfkލ6Ozdlx3[1ׇ9w^>' m8ߙ8w'ˬŘ~;{p#Uڏht fbH6ZH`#Xaݰ~zи,\߇Lw]njB@! B@!P7 gܻ[ݪѽ>ld7+ 0SBtE[unz97fm5{`[R7b&&xzuKm[ 3㎧3`=-u-=TZ_UELHrl /'\y9I6vнx9E<Ϳ| pϪ0\wy[Y̲qW"NH%Q6=$ X,>̦-˞#KHo ?ZīFK1m( 71mu>F}_!+u9UxaӻIkXtӫسTLh;ʵ ݍB.jb!_vYK 0=][@Sb XG S&/k ^N75*%!Y_CH KbHeM1Au#6_XD&ڧu@x<+Ydoc%-v2 ӲcTYu默w@v/n'UE%sFw|򮥋Cavfք]Z_ |EvQXZ6TUyaċ4JTůnZ)go3G=yA\prSqy4@ of#`lIڏœ/ItW@P}[.oT<5a:<}oomPV>`n] iۑdcRt >N* [ym"1_׶,¾P4S;b\#}Ƭ19B@! B@J_noxr? _*Q>KX8v9ٻ?k5%N9t3KSEZxlhAb9ŕz6X\E$SayZ{2墫pyM̛fEAܩ"|Nn}jcky }NzTmTKunNSv_v xϪ ت7¦^u$aӱmX},ū\}z G+ӵLB` Eb25{\0~Cc{)J/혽dU^2[ж$4 /+7X~{ڠx;kQI[u~dǚk^I|Xu+=o[jԧp.m*__pOWFc!@FjC,-i0zVw"e{Sf7qRI3]cE媟>x9&S%Uz_=˵l[ct ~}\t\ZڳF* iyOlgzceP7PM !yo#¾365s `s;v,%/;}un}m5JB."TZd$,+3 Icc`^cc!UL [떭 F{q Pd0$Szy?Ċ1NUKs۠ܣ m4rXۨ:~?ŏ'R9??8Opi^Ap>_,hԱ:81.EO9˵\~l^ :D*mt֏BUiFʄdiO'w=.²n;]lhs4@o+}Qyokijm%Ξ+9W|e|߃y%C]JPc~.,8,[ٔ6jv3*G ! B@! @% /U.ݮC׶Q w|Oˎ1 7]exN#RcT O\f򶃡Ôg[}qjP żwb_~ßWώ QC|ݗ_L¨Nk c;DGu[Eœ*>s{#i{;M$6ve &OaI^qz9=sb5Z2~ nsd)zz>"_a ?a-8_%XEIk,Bk5TSS4|mw3 R /Vn <풾P /@FgkNytX4{$M .* SFicʌ3[ĐG"/nіMhj!45l2$?&"ϏMϏc_+&fu0mhw?b/MaTJbMO/wL M*AWmaH/9^k.v)4R)#6`+())q{vٚ k$|c 3R1\w#dg69E 5UG\-x IS6ρ72|\xP /'%}km@GHoL]u\Cj7;lQ!=VYrQ۸{Crcޥ=5]fs9ř~Y3}ƅB@! B@:EgUW]ƍ^z[)ٯxRа~Z> 5sh;XviW5LߎEH=tas??Uی+n,O g3*"wLsta͙"4/_}m[:jPZ7YW{cZ(B^s1ѶEl6ىo.^6[G[F6o~Ϯ٥j-D`fLĠ1(n+[)qcAN'cqK^Bx69+_uѐ'H#;41E#c^?Hp2bq?bmθZΔ 9鹏DobOg!;>4guβԳ.clT`FjhaRsaXRG|\w0F3O.μ$ `1l4. (Mh?ضh읍`% ݈C9Oe~E6۳O)&ly:V5 <ֿ>Ad2; 3iEHarMڨCbɤ˭~G~IJ3[su;qG@ƞ6Ҷm׭^qU0ۮGRct ufncFڣ#M3s1H S9#B@! u|ևMղFq ꅥu|KrS|9 @I 2yzkJ<іrgVO+0#< /.0Q3WExa6trij7uD;)aݶ3 w۔\=vNs<7VX9!B@! u_ײeеkW4kL<|5t u[9&N+Hu{7,oS'X~ Fmb=1 ?zMQcս؄"M\Lbʁ x,QV@|9ݺ~ kfWnNb RmS8WnWiKǣcsf#o%;ҧbN \8~pC\tqS4ip!Ro=NA|sug{I&hB[ |Hd[_z3\_XF)J¼a[/ Xw)$4?ãM{UB~g%.y o(/.>ޚTN~֩zeɹ)E9Ut=VI&r:Nv0aANOtG\cE t [xnh X2t b5m{i(Ү/@gN|5WE^dWVʂVW}A+ĩS-q*/K7cK}Yn3_4ʗfX SToA[9s!mJrD D^IZFT. Ad}h+[aYWx[3>ܙu$އR06\_B⓶e`^6%5䗋I4˿ /=$f)=o,4]1ꗍ\ztoJpncu홝Bl3r_VFB|]ݞ C"66GP?0yp>MP !WG~]DG\?>By'`:\V$mfw>b=$\do_nϕ3ߺnݣs0{LynNs]"8#2^P櫬}36+$tx+v~>]R:W=~ж,vW_ڇCSйVG\@0DMw+h"0SJR\pxc2m{A@edg]{ϊI,ȋ1Lʖae›Za)+%l_0\Mxm9VxlmKG:sm֙[i !lWRxǼ0K//Rci{Bi5_0/C_bF\.Sǰxmo.x|;oA%zM|'CVzm-;]`b%txB*>f|KE([yef׳oOuiNةIU:_>b'G{L`%8k ~9y[)En6dIQH4Aۧ 5kX$yo}&NWMp5j4QfЖo[|am.=Y!63.zisi[+k w'ҞxŨDel_:W9Q+| YKaDUH4j- o@eMVZ {WDڑIl_޶tVlLm/^4rPý5 v=G,ӧQQ3o øς)OgWx̞Dg(xGx\9DDr?m\ٙSYt}g^cn[REGɃe]|?pΞnu I샌m.|5 cC 9mcUrގLF<=/[B%vy#Ն=x&W;<0N''}yt[JeX^y|'ҟmԌrKx]-]@};NG-2_= .ټ~=&ev%V&@Fh[P6]9 wlqOvi3n)9! B@! KD6*iƿY5{:9uo MOk6b .eab|5M޹i1/\@7zē {cIW |4k=A;Fl/v"aswӌ!_Z"@8UV#.pav.xnu*6~3`S1`j3{qrh05oUo&dwiIUU߼%"=TL;Fݵd"ny@m苅X2N"c"2vqAJo j$>ftms46fE{ߕ)Q_gZDK,gK,Y4`iyȿAg,p*^Dq猭:l/m-;7jKhK-]Z6rQTmba=^c|mS8+v+G.QB.G869Ed[rihMFU~qtf ȾЖ)./wu . - zyO)4<PvY+1Gۭb3:|3~Ra읝#LNM݇2l#FHh7XQCYJ=b瓫/co--)[PtT:$DO9lsLu9j~ .o =9](?SHu<5zTTBËga2{ڲgP"Z6J\uD¼MeKRږݴ,lc,dB~/ k<8ofvM q?fO"ug ܏;G9yqM{\bJ9Ѣlbһ Q6dsܶxx\\Agf]:1\:NE"ώםiW"  [~v(vt|jC2a $Oxl2zox3VIcyRPF~imyY?YJh(+/;ds$.l/\!4s簼n,lj:y>*jҽU@Ӈ6LYsYwOgb` #B@! I@_ /`>(S~4p#p-EGs-]wl 1 Za(hxfd\=~ʹE% vF$/yD^P kxB#͹,~kCjIX{6Ê»>~a\g?g?qPo ]564:g!%Jh&~FWe|&`ȷUub[h^czlo\CcGɊi?Nd>'լY3!cl yh-Pq.ыMSL g"hD9kB@qA?pvG*T}G*ir@ ̰bmKB(hcS,3{ >YvAϨ(0竌Gug 'CvLlzNj{Nߏ y4O{jc5'}T&~qn&RoZۓ8}Ӌo,um16 omȢgX=];}.H9 ǂ(K(?kбĬ,9B@! B@:L@_TNnifhںn#,.–2]E;ݒm>b|5EGйR4p%\>\I ~R=A3wL ԭI܌coV/iv!Ϳxyӆ }EGiq0IYr?.9~;wBv*SoL\`bSNO;V(;^Gn~j^>D/3ycM[K&˩СcbX,#*STp7֑{uE Qɒ§ 4|snm2OE P.?s2bS0EFUtyіi Xښ4ۿ۩GqqRV$[?Jm?.ü7O /N7&*:,ijE%\iƸ@! M)(CLَw@UlIB$ (({ FE"QI&#'Ot 4oRjcje%RGT!O]PNLv`lA'd#mhT W6/ưq I7Z$Yۤ~w.=AтI͢{@[Ro["l9*v:rMh:K8odj-O1f96FmV1^0cCXC my/{/#U05m˛i R{{!z֞#Bڪs^=v꾘XS\W۵vYOIhK9&`‡pUqp}d Yj.m4+ ƴ1(o$|׵- Ǘ`R?I?"ogAt ƍ2E$[~/d[pL V~Iao7>PP-vټY~j?.lI ;>- nGyĵyuԓ{hbԬyO[zVم7&E'yr-mgԈu?c֩DqFs_Ucᛡg;O-/GБ-x-g8ru==ې;O󬇭uu92g'mdt,?q2IŻc 3'"xk~g_~OV5v6}lb.TX=]HsA6l߇Y㹏U- OjuMG! B@! <|%XEGw7ELivUKgL #_I`_3a&L&ss*}Zmچ08>A&lOl܇1MWD|Y چ(mClRs<֎c-]rݗ_顅چG/Wq_./#O7ywcxn35w籭 Fbt t]=WYpP]LĮ׎9YeZ)|aOU(9lKs\r=?2`<9 bVF_k̤2a{aNUx? 0/mV<. _/?#@iXǥ9Ep7sYv`opӬ#*R3;qm~3;& ?}P-ꊉMX^u 5&T1<Ù ?F:"E31x|t{'nG( k,nN|yoJWB\vp^npK=w ]V$SrΆV|Hoٖeq1: ^'_Z0=@*jmeɮ;',لέ&ߋWd!u!_39g,I_chi+َ4bkgpHbzǺwR gm$Z[q>Sz2jTA<w#-F_Wsvo GyTtT9lL2)Bv+j#1od@|cmC9Խ[Gzx_5Jچ gڷ&#f@ZP_}…boϼO%&߾ ]G*u7xxm5u̱Gsoo)t5C=I[ܻxt p \S\,~8c/z֩~W乏㯿: 4=xhRU\EaWvy/e|߃tڦ{Y,sA[^|g|X5 ! B@! DJ>)*D7E^7ogc5{f'},=vg3OvbZ/7fƫ1{`)BS¼Z&/N nGiG*&P?KN|iO+?OhT/[j/X[%OX6ՅZ$E[5Z#|4~ {BK?X x) uO'wVx$w <'Eq{_ ca;YF\* _,&胯?zwky({{b`

[UbiO1e+N_Hƶ:Xzh읍!B NJ)7+G(v K>o=Ohڂ=qozc%T<(ۮx{ܪo0mŠ@*ry7w3\^@Op~wXYVtߓuMN$vtv#^*ļ1qAoŠs?W6l)ϯƍQo7Oa &y !&wѶuK[<=58 qd:%+Gr>?cB;}fvi/=OLݷib|j 6,5O1|M}/QYw(4yS̘ bmc󊇵pqV - O<ۻ.nXg{Yrh,8{ ,ʉCOI9`BLSCy(W{)ol7ekgoڋ&Pg&%.9R,ͳ4[X9KChXAv4mdE`ֹg- 1{NNg%tƎd;ĥuq*Mxn.#du?Fߛ{x}>?j>Dp!>;9^Fg?݋Ask(q^?Z{c{x]w|֩:'ExԹ㟯&26P~z$2Y̡yݗ`9ɃzWoM{CWO[bS'c(D/st;%{aT|,&fˌ(E G/">S|ރp&Rú]eVPZ(Y3Azm׋,`L ! B@! @]! $DD Ji͛I c| B!T9 B9 OAJhѲ% ?V6G'E+Z? #R))Ŗ_5N";/D1ɖy#:2Ze_&p`C1es1Kx~y0P]Z:S ]m}?IF_` OeNZ8E(XkߨhF ܏}GBhЀq ѦefȞCBԩhޢg.?7<p!T z9K_ҲN }>T~E-2>foKI84j"BD>t+Z{'~p UG龠ύ/9˛4.إ`%+h-)qU>D|O`P̞K%a5#6sa d{6_laq^ 1{f%y4,GMX+YڽAi쯬DU2VwLҘL ԕ8F&eҸy jfLul&\,ؙ'=F-I9$~FS s4~q6Ԟ#mmTޢUb+n kiS]cV_؜ǎU|«X5TG^E><f/񪦹1hԘ:icl(WXA=NsI>2@`N|HoM1t-))NU7Pw%|y?M;U ht=H8Fz~F\_?wrf^-Inl\]QAsA홭y zwquԅ"6! B@! W"ŚEjFXDE%O 6>u竅&ԿcUi\gϨ[:L%BWE5UP9^?-`,QU)fOS5e+B@!p(߸mÇcJL`=m!| B@! B@!PWk"׷ᛋ΃_"jNF|,o]uZ1\&ʘ /!/Zqǡ@ˋWQϗc%0_}+Z/C ml66QB@! B(_= 2)onJUQ.? tfL~B$ ZPB@! B@j6c|))O@̷h@`ż}[ K8Ӡ>N5k3SV)'N9Vcńg\+~@}SK$ kK"v.{e1lc;'_B@! @cnj9g4#'₩)c"'.J6'-)B@! B@|t#X_J3)lxD7!?qJ^ ձkgRꩢo׫c92Eʘ /X l+-; WazƯw'}ko.s @W>pĶmѴЫw P{/z]t> @ @  1J_fџTl޾3=wvgJ9{15S3 1%6vU{KX~*  @ Żg>EkK㗿DTwOGJSnM|}b *^>kx@q#{  @ @ 5:т@IDAT |ᛂ(W4)ZbgmX5֟JFOѿD[Vch| Jb @Iww{wMns?ݙ9יٳgoeE0{w?Vrss)xfΩp'YVX/8⻏*'kVOÿޞ8m>>K`L 0Kq5gGNݵ~vx|.W~*Yǚ%8߄#dKYxho/.>-6@ep%0c҉6'`L 0&`L 0&`L ,VχO<F +|Wxfj_=ٞ7v)ؽC7| x%:6ڗK`{׊R@ =㌧bvOV|e =p ӗQK0_g4_l5`L 0&`L 0&`L 3+3ܭT+X҉ f¢`$zs։ o^|{>^;{`ȈpcG`먧w7Ç]7AC.2z$L{ նa=۴``9j |3x M[¶NcFQG{Bsc3l*>&(v |&`B m_=;`[ؾ};j#`#cXO@KvC`Cᠣqj;;!ag0^``eg3w]I'過-0q0w.'==!e=mMl,2Fy_6tfL 0&`L 0&`L 0&+u 2%l^wrBgc_/GUfCupV<{9̅s@q :n{9̺6xr p{\}Ϳ*_fHbn,X(V^ 9a/,3& t|m|ax§,ן±G:W;V+yyP*o߹r*PmU긻3/BxEWN'܄N_p]ķڱXi̖|z*Te] oy?KJ64 0&`L 0&`L 0&M 2XlA,i3mp_6baE1bTnx8肿x9\g52NUf&,[Tc knV4 ?3Rw=ct6B4HÓGA^~L' ?͊7b/43& T yq郎3ڷ\M-ñnZoW]@jT"{ f(2^0\8po;p)~Yxr5(|eضFf^: Dobq O}s!n-y|9 0&`L 0&`L 0&~O 2X+X҉ tu(m>d2=^@ng% ]OMt|.AM}?hXǺK*z-|$ 0&@fdEfˮ 1îJie_a?u,tB/]_"nGMQ>[ 4Οlg?`5lFt"hhGZɠ1| ,_y^Ũ7+Vg, ƼII ( >fL 0&`L 0&`L 0&` ?|eK:$+ tж }Pz>o8ⲇ0gh\>gڅ?^nmhm8Uzr xqm&p xnYoccOR=#͕F]o_Gnsm/aybӗI7oJ5َ~/[}md.6Rp&`N /ǀ rU=zRn7߁~^y[!gggk3 xk G꽋a~>*.RG^bû˃5r[F |ϓn7a}|L 0&`L 0&`L 0&s_O=p 0j(4h cTZ6h%9y|v6<cCk/=_U xifjcpd!ܪYVyGhh" |=Ʈ9`ų଻тB/{7'6I7`L 0Hkkۿrڧ~z27}nj{/9xmһq 2VZ}4k;|! Wgs:C A|}{ptոb:f ( >fL 0&`L 0&`L 0&0zG㏇#Gib/Sr^d .y6X;"Ǎgy*|phjӿ~^B8>_MkukVg1ʽ74[UoT•E/NU_ '#ׅ7 /].o N <'`L 0F /=|%pK0Qu0zxӋ;՗F=?} ~7pyGh߳Ks@۸u֍FX2!W<Șb/Ɉ?L 0&`L 0&`L 0&@L xKd _pK|U-̇G7qCx$x{ax{E0WPngCT7/ #{3Fgh_:| 0&!=sy lqğ-3{!z:GFq?_vG  /]g~Uq^d\ҠʾOݶQ^ۈBcyR=yFXmeHW<ȘܴT56rL 0&`L 0&`L 0&@rL ϟ'x"5tLu]ld=W5|`Ïϛ J^2LmxcEpet%o 2}M8 u$8tXx7é71 x NQ>uȕG\b.܆4&`@׹p_Qs\ [׾ ?Z8iJkKï/u%A~c ??02(_{ZF k`x Þ*-/]ͫnho|fi%?Ϛm]Uu}l :msq[Ekal1$MkGnHXo߿[S(nkʷ?mi'L 0&@?6 d*"aB԰K=aaԖa;`%cY>o ;|*o>F?_+;ߙzݲNLh67%s@|i |yHَro9߲aT>[^ 3&1&`L 0&`L 0&`#6`W|̈́yby򨵍gyOjW!{>Zfeԙ`L _?[ |+0鳟O)?Yü?3&pL 0&`L 0&`L 0&!_, 6 tO?X;i22nnS4rI9qv[74AKh0eN N 0&~L{-`#˜CA6W܏)'{6غylX>l. mM$9&`L 0&`L 0&`L`/ _,$6 4zZ3 6|>J`Ёasgz1&`J`{N(}Ux~94oүi?0 9 pQ#3`L 0&`L 0&`L 0&@߇lzw?|ʟ(!#F# e$L 0&#о6wl6XO{ Fi:Ξ_#dL 0&`L 0&`L 0&` |e>'φ)_ '~I71&`L`ر V|;°C,`L 0&`L 0&`L 0&`6;s>}F ԡr L 0&@Fݲy >hnS:n`a2" '`L 0&`L 0&`L 0T WS_)}C@J8GwC`}kp.~FIceL 0&@l쀺 h^k672|}_ޫN I'I㎁GJS `L 0&`L 0&`L 0&|-+_L@@= z{A==<碿{[^}=wNڶ%[ζMm}=zp`_ac޾U-| s$~0;0;:`6  x :P~o<žc5`L 0&o+4"#{u܋K7$={@~w҃I~wǾn_xẺwæ}+O<y,<>d{Dc0Ǎ9>cG# F=e3 ߃avGCPqGx<`% E##0&`L 0&`L 0&`L|l$zwA:jؽc; =]'c] à%Ha! 2 6: c=X]Lt2i*r x߈@j;[7BۺUl<ѿy܍#9vEF|?K樜#`ߐbsCFC&M>e&PX`L $$ЎFfLu==[evoX~Fì=ֹ}zq|WSԨ u4jNSa4r4FWAeu < ϠָPֹ{ o]1B 0XMSk,C6d 5jsI7  7j$' =p2:ѸL108- }4h Cr`L 0&`L 0&`L 0'_I 85▉k^}6BL::j2z:\64x>j>LƺKc=mmmhlu݇0/uy.A&`"Ќ{8.TDoWcBoj$Sc"i\dYFHhhd!)FGHiz1:Hc11Q;縧v! Ӊ^Τw3i'4;ud80ac@L 0&`L 0&`L 0&"_,6 &=a,S؅NUpԙSWE+V6-z VQ3n"1ǽ$Yh&/;C/Kണ@QY^%ӿ6Mka)>^Rb#h+9`L 0&`L 0&`L ` :}| = ͵o×~8nxrKn `fÉ]Β2&g?#[_0:,'ؼkloaL 0&`L 0&`L 0&Nlrc `9 >zJطn[[>oes`L Mߖvy,zY0|нR~ 0&`L 0&`L 0&` 6 |N 0&`L 0&`L 0&`L 0&`L +_?PD.{z7@$  p`8`0z`/% e&`P󀝢ac@ gP[!0F?L 0&`L 0&`L 0&A 2XlA!i4ӵ iN AF :pfL 0&;EOR$3I`4@y0&`L 0&`L 0&`{=6`_]lBC`ʌsa &3@'w'=i5,htgb1IyiW4X&~.3O%Si?B]z}؄q!Sܬ >w_qNS&+P_h~uBk}{Y}=УV!{.BhK>1uީOWC_Qlԋ+{:`MGiġCaē$=5/.sDF^ '|檙XK 80|xnN'T5w1KpdvN֠yD'zͤM$$w 17N:9Ŀl< 8떅V{m-<>}|pP6v;Ɯy3\cT~v|ay6Zkd[$)OYP{˹IGPY:sV i[޷ m7`sאp!GQMq{^oZzswF7a7w+.xş\BvI&4d ( SS?z>}fEPjb}O.s=>>7BsLsҹ*Ͽa| j2ϴhϭagJ`ߥ\relޞx󤄬L$LBA@s6dL``/"jx=037s>I| -?zx<1p 5pFF :`;+`бpZoc{vnC^l?z|π??WM?z-v|+ ?_pzyP襎S~մg Fi%vױ _f00I\)ʯ?#P4\]g“2Pv1d7+묳ϱi[>L/˻W[0 ${/?!3\_%˧kR=k!$ CVb~OxMzLQC1C$5ggCNI-YI/\KoOZ}+I9\ҙk擩6dW??m~?]+kL07]uRS<)!̀5_~ə1/!7Oب~& 62a/2{_tH:lj)ϏM:@(A׭G'蓦¡M(/[ϧ!G}omL=;G#~}97=iLxM+ozࢉS ypmE gIkwnyUlC/1C>kvto.^2:ADZ|_0^nuoڎ'#σBef,,3@PYa nä"#rK?}7L 02BgEf_Kȿ#d~>}9[oˢ}-DgAPX"Ewww+MPwnƵn%vEM{f3RY#j#z;ov^h]c캼MڰZnZe|X!z=WXZtszRٗŞބa lRF7OtL4~SqX]wmq~&vJRj-wVٶW%ww(붬 'Yzb{=mX~_t 0}3<#,Y">#Q__/8$~ cxtFe? x7KzKGj`뇮UOmP<8¸7ZaG?Rt.Xt5p:ȣY'ñ4"QWqI=(o[\+>\;v7P0T83kb\egǦa╰`‰)zD7ƍU [֯qدׯ-k>Xú_h?}# %u ~;:˿=-Op{|K؀4m7u\dTܒ*wwOOzmX#؎m[L;e:?<(M+f5wD-[s'z T/|/y-]2$]v)/Pо3V5 '] ~cᠣ mOط=Q2+sLMz76B ֱW_OZqp \|Ea5옛\|]še%jZqiNd"?1;[3187c\RS u gW p~b=g=mG[0hkd-U$kt&ޝp͡V%*#D0/CeMhgo:qmo%!ޣ.kYu<&GZGs$LVwA4dpJ=|nQ\ԳUݨ;×E/z(^"JOmqvmlQ^Y;އۋDoB V|^jBm0 K-dvB5E'BJף'Q᫽7+,y ?O޳ EC!B{M#7*O;U'~7͍Co%kk#^ ^^zr=|,|>1Ζ3g6ØcXЍ$nW6;ܜ<6%ci̼\u?x\ho@{}bW ᫲J9<.r-nQS̓(\ >ܰ#mu#RT%*lsaV6Elͅ]ϲnps698OkmS$=}룬t8Zo!o1Brn镗v I~CLPH4 ѰyvźfZJ+yv{:>rMT5cnJrQtSߒ_ˠ!8=jgݺy1j0V\Kuu}٢: !ZK5G/èw3W$~=‡iݹy(()][.{kPlIɈ߿e2ayKu*Fw94ͷ.*cIc,뎉Dc}sv,v6j=ƶBҟ$1/ hoJ}2fH<ӯ~^Hc}%ڼ[OLtvQQ೦)*Akdn&/yYp%QU"/Nω;eY_euBۿ+^LE:/Naף$\cTdm2ݥ+3|7-((ym>y14I C,0$I ]-DǚW}~m=7sE;|DT6E-褔U:EY0y!I4l+U ""9"77Wd{w* +|d|QXq[zt֕á< QPʕm9,. +QyF2پ'2+kG=fj|tVg;b->YEgr0󞗝prǵx] ps.>ȉsE6ytby[nci"OX/W&}Y"Z cUsm(b!IW,Ncyڝsɔᘛ\j4o2t=D~|q.q*[_X~L窴8k Ȼ'ǢAw[n/q5"rrww]RyP8$\ّ/LhXs1,d#wG'몚Hyq.dDy2Aq(hyi;/+D^G\7I5mZx2/eAe\݈Duj[۩Xc^ 1➘ڌO("ܗdt E[qΑx^"C}³yK4 JQ~f Î+I0bqϏ5s:ieOih.qD}[׼872Ghg>ˌJZ[O+ C-~=:TIhoJ ه[#wVQ>__z>f(G=__| ;+eY<^޻J.*. 3RXYEUVi?Z+oe?}Tbeu <|ZKsE],-:AD 7;<х]2C&;7+b!Hk2>Neqbޝ4TVO׶wsIW*ٿk5ņnz;11/k+B=VoG嗹Ƌp zqڽYP+L/m\<"荏At֑!6b,jvG' mTYyDy(v7bb@]LC~ xX *]MpeC~.g "%*b4A2Z]kqӧN(h+ϑYJ.{ɹ{ڰOJp7_mQ`5 JMnQq>(&}B<4W.ϏLVO V[2j,$=f=xqע8SQX^2ZKB$duIXWqlnZ'7sI[+'7:Gx-Co]i 9q6o_&nP=m,n%1򫞾ʈQ]Q+ nnA9;O[V"zyP<\GYrP+pYw7G7y,Vl`}s"19.qz }u~kEσf|ͯuk3![GwsN^Ka|1C=[O:<`B4tgv2<&;WGϙouX[Guho@9F=ZהR2CUӼG#qп~0WͿ^/W=ww|{"6,hR<ԸF,0ٽ\dΕ]dgFgYnFKd˸\I2PFvTΠGPI^ɦ.-NE]id캟O2 K]ݨ/'y\]wkI qEYht_ėzG%y+A*haalt.I'ұLAٗ:nP~:Qg/#eӈ?uo# ύ s]]Jy(FBitiCۿ+ȜEiِ\}xl$-|ګ42 Ȃ|?&}O q[aͻ=byz'uTi:/34$>b@IDAT6Jsn^k|˙^#|QP&|RDTf{A*9QbJ|k$.Z ߀n^ JDYycHE2{,jUJbkdN 1O+zJd(Ё5l4"ŧ9_ \"*׎rlK5Q3"k}Ummjw߹LdKo^S4]lx{mD(s΃ꥫw b'kmcXO9o(_6BBQ]F鸕(ZKo^p0aKo?d24$ WYw̚;RKJKϧ0ԋıf[!총IoJS%~ *r7qiQ<2y2,i듾yDP~R-ycPrR 缾.+0jWuEW?޶s1퓔q+L?&+|+ם:mګ݇nQΪH~ v 07}nn(k,v8G+82R*]7ꘑՊ7vlԻm؄oZuˈzQS`spd[xB&+*35&نQsK%پ5j(nw-ˈzYV|ek<%K+\6X QOjvzB!KWq6O??HuzA^3 Z۩02v'7+>@'ӹM祿TW7]yGQ^ݔ^ḴtoAs_ȫCrGrr1sS+JHa2R)CBT{hQNRƉۭvK;7sU>/լ]\P(JJDU]txɀxęGD=[zڠ e23 rXA>¬ htHF^cdZuDgM_jl:beKM]77Oǟ * zM&ڿkX^Ȟ\ů;fPv.o˙XPN%8|F9WdeίSR&ֱA R J;oVSQwz+0IWXAF@cٹvW܋tguR߿۱oSc+6O%oaGAz&=adBeִdu4ˁE@ t^fkl؇9&/`&5_EQZY)*+*DH8F6VD(#-"zA^g0%om(s'ɽj,W\)=[; M2gJ;j\\H0Դ[ĢZlõp-P6QQ0Mw;8"|-k뜰Y7=x_֋Ā'ݰGgp5Hk10c/}wb7 f_#O'OX\TZ@eQuA%iQO]Tvכ OygBBN*/qQ_ ZA TwLfGv>o/kcZ[&MAoHyJØ Vqha<# 7H9)1|SXHw`ЮR Om/!λliu+D^ (SuN#UŶUtvpS(10su5嵠-OTd H2 .(xcxbGK pB˧,օm#0jd+hRK_Y`ʕy ֌S5ª.s.Wz֔4L\~brcj8*M̎Sk,fo)-4nlijE_x L.RԱ ߸,y\t̓l|ET4x]rEf;|ɛRѼ_RCIURg:.9ӷ{KX2OEՊHO*uMLvU},z^L?۫:FRfrRWif-/0IXRҫhѿԧ(;Gp @r*ꚴ/sRjKru)qA44h|~mDL봫-' z=Z>k :Cy sy7n/ Ԃdu!8%v&.u,s&J }+պ8eG- FG:Fۅ[@k)>0Ƙ*of^ON]]Ipt,qE|ѼGn|4qSf3G g˽BڜrE7]^_J [GmFGܺ "Y=c> C&O`4^q{&af_"o{N}+.FQ::oaQ vtӞ_ տK 0–%+JEM~dbCEf@ĜhQAV((Ȏy)wF bMq.U:xRE*q/4!wðN~AFPm+flzsFT/ Go_@dM;Ķ8.bຎAXy|+h)v֋"ި""XjeRM e>N['2 Z2vG'"9ʸo;d-EEfѾ6ް5X_W|x:y?堏['*S~_yz9t.ȶ$w5i}JbRJ`iUG6ۨ"Œq j[XwHYK"y2eꦞm:ן ݢeMOeV[IN_W^kTx̲%Jj __WWyTהt ?+N͓nn=Xlsmn9E[KLQ#3C>\^#U"x7k!az!'zZ׫wybz\(Nʚsy+i6l%%1 Ā |Y"v_u!f(R@Sz<,y3W7qw|UӦI>1gTvfyQ,AG?IQNa"ghDŽo:W2z] \;Qfm&Ed"r}EFHyEyЇ%H Sբ\{*D}Ӹ2I(wgIOBU>m}na Ӱ u8sxG"Q^Y}ƣ/+YΞ-mTnG>zgISd>aicP&RT>4J!Uw%E4M2V^ӱ㣌!"/I K -}Zɷ)Ӡp0D wd3Tg(;}DzF8XA5~|]qnŹIw;K{++&Jb}Kˇ4iՇSwko)TpCo*ʫcAmW^i)S9*3k)z{tY_NS'<y4h>mf~4/$GpT&oy"yy|nhcIl&^j>-l-ޛpQ'ai7ʒ 2Ţq@~eRjA$gǞ(7q+bjL?[*oG!_ݞ(<~Ȥ8IO7|Q-˖}nksޤa c5z6tu]ps5c_ ||˩wJA뗼0IFjgm? O뺣X#Bه]2VWsVX2SK_@D8BPO7 R۩ı.9ohǶf$Lڝ-wmFԕ3iOy'= ?C+~Ⱥ4OD4ZNT 7}$^W%v 1_+ieuu1t"*OeUNF '- :&UY}euĂz,b{-_}LodE Z'nxFj<|)|Io]w8RYVhum;ٶ%f=1jFeGi#_>4) | ne|kR>Xu׹?/Ty֍54n|_iO0օ3yS*;%c%+h1"O8w@Xxɮ]ʼn=r|lII͚qZ~~)oC(ϰuD>Rieg׷hE1~)ƭIշ=$+]eL Tni$C8\P-"Qx*dԞL`I3[W 9gDi[W? m0<; [&RT>ڼ{"1 >8\1nzݓl$Ҕ?#4w+>.2OR* z'+ c-̙TDEZ e㴌}7ѧ~;B?L]POJ=CꕏcD >q)ƴa;v̼Z-C)>)o6 ZPXдϊ]'M&F'"%#1_Gvo9ߖ㍞Q%)W~m=7%c}eB2*Sz> yMǴ2}|@;>O<3*}St$ZZݢ[ N0,jAq(..+7jT#Q]Q* r-hxAQ 6tP*r*Y#Q6h|/JJd|ZUB6t1("{H n,۸KM';aˬWљ!/&^/gHYV}q_hB,ʟUb71RBqb)1J૙,ۣSVz-*K8/j%-{sQ`s+cqe,.?-_HzXQ,]z?S"ni|5l{A%_tض|X/ZEqΫ %uc ;+MI>IMi+)']GA_g|)ƸB;5xuecЮD;Aom6&߇]\'hq6'K# tGF4nLGeLvzf-evJƗOhE";b_IA!S&>xy=XwI? eZ}㫳ɖ@wO\<&ǯ\IL"MyV^ӱ bDׇO%*d #ѧEt6d4(洋D45JԺJ=?T[kZ;33>ef,Vn!;k|Fn;LR|{:#.R)ƴaJjo/GLp :Jt,hD|Iu\y$F'"ף덖j)a5EκkV3$ʯͻ&<&n^F%0cZFdL`_#_i*uvs_ݘTF_>ֺLȨCvKN4Шtu_MGo>D,m(I ] C=_sp^$gl[c蜧qOs4v1듲 D3Yro'P 8iK˒C󔳞VZɠvB]Pz'"-S.<HC-\DVh '3NͲӜ2E˂ֳ<4lN%: ,}aWvHby=f\iyԱ8v%ML({C_o~ޥ͸ qF.:;;_;soeߔ4nXvJDfV$ˋݵB'+yuM& (ډA?z R#Lʄft]J+_J+Wm|$aDe5irHpŗ݇9-|i%sLEt& ^# sbڵ?:yty֭MH<%v~u90P$ː}+iIÄiCї,i}WXj~P%.o]"7MOǐ >+JN{͝i2eǵGhʩeRcVa۲kRj}bge82=?m1AiFd{'6JK59>,۸;X T*ћ)(S;ItNCNkLQYq蠥dI2A?npD64VtWlI[Sq}aƉw"f\QLLbGSsIyʕJ]}SXa\~D~HÔeLSSٰϦ2Wg;[Ekw,"`uRɄ)Эs\2ngiUzZhd!$VZ_4~{rKiѾ5dNYP3*s}Yw痔89fT&)}ZWPYk|Xc:CٹCRnwHj,:KΉ q}Oa1—a븾Jv&( *:+eD_2_!IsuW;dQd"Nt[m>C#¯4te[EfǷC~M"<4vpbBery:wиC9T C.PDne%QA\|.4i]Pj[|S*7oBS?_WmϮHcEշrb_ g{}1_"_՛|T РyQ~2x/FYT|p@ 4r[ WE 7,c>oǃ5­2=_u|vAܢl1)CYᖎ(Yi{y@zޮ+;郵n4m`]N_P^3 e,O" PgkEZ2ƕ,QiL.Q|M\ J>f+22@}nizat >˳uye XX)Z7yOvBHCq}bv6(Onk1-)kg5WߤQb}ѼԵEhh,Xx=I'{_$,edOW"q}ӕ|ai0햆MVzR|4@}D oo}t q:{Y4FuUqPIu$UT0$+=I()ڭ#w@8ׄGryxbYG3 ۢIlƦR_k5}M Q~c_O.'@3I-\4G,tCT'J l/r&_ȹ}g]IlG5 HPQDMdTh(w DqehqԋrNj>A4y8Q^ QVQWUJiNeq DO1yVPV#Z/_; h>Kj,ݦ,zɲSn{󷉷֊Ŏœ?&[b[7~e $̆ڗ?rᱷbFi}ce*O_|Օ) VoEE9F=PS: QкN'dGU2C /iڱƣaGyV[EԔ>Įyy8kQd n][,dr?Ie1H5?T(kL5t~&PP{//bڮBV0a')D !qudr^{=no܆H--U"?b3M Xh4UJK' 70L!nyQ~e?ubέbF|Nx#:8V_{V mνkŪOz2Mמ  ncռsK5Jc7\v;p2r.ZnI 0]ܵZ,,|QBT<|<k/ %Dk :FmqdG}jR_.uJYi_iڀ:dMCh3R5/;Ӽ*]~~uOoKI=Էs2/U_ɏou0E|tY|.~L%=cC7"aX3#if ?2}=g]5Ͽh~KDM}zG=4(k A۬ѺտǴLP)rt֬B{ͻԥb}u6Ҽ`V2Mv`LWRoߊk&́GH )S&i8oYkz]OcMuGc& e*KgU+9}%Xbο_ NQ^%ʧ24#|*cXuD:orN0mSd- 3cEdʛM׼%4=C}?^W |EӒzK?˼?Iu\?D]ޔ zt8r %I'qAשOW}X5BDn_T%TBC^wy'f盵E$L~(r(h}Y&0W: s( JL24*sL?G//p'rWRkK)ʉG`:4ˆj!;EA2asJ 5M̑-Hɴ}@ 䶉Iy`'m+sW{i,(u=mx=ΠL }xôRt3 s▎A閎4^l¾e5&+WoH%Eͤ}f vA~T%n4.Gn0lwo-]6_kFW_4lnq(cI$j(5[K:s*OJ=9°cv=xYpB:Vϳq>iY$6wdLfu!mKmzۃ'5 ->X̋ɬ}d~'?AV>a#R',j_ ="uYդm/gA4.Z5\ +Y<[ Z^/rT:N\SnH 1bx~7T/^Xs]eԐ&i2+c4zKn\tpϊ9cyFohSOPT9^T\\,hDlí=~~ 뉗_[˸@}5n\tgKU8N^qoy@Hegʮ}%q٥\4٠ }6c/T8+?<|V}  령Odi/57MfcnbUGV34D~<ŭWeLAQP'?=g:Wխ%t֗'&L9l˻WL @#i+tM&a IP]Gw4"˧$MȎǬ\1tdٻs? #@5h,j+h@[ESx Ғ*7 xWTQ",$Մ9̜ۜNCo>=[>y&Z)T#knPXɳg_5n窣>jN̽&WIJOU#} V/?9E-Qwڧ֘,z.=~I#"]j7RۅyUx[Hq}3xwoH{izJOǀ]pF'߯~ZA@ôu2ϵo.ep}Fhk_ZxD~q\Vmܣݎ5wFs4҉^G}X%ߣis{Oi9 POZ/SфJ^р/syrYuh=5bTXY:jv81 *=LPctE ܣz|WU^jGu2?}HաYKrKHU^ :hX#[ KF'NVVԞMUoϖ wqj}S׿wkߙzUnTp2rW!jJo7s{TPVXa޳k%fyL.{Z{T_?>pKy}loVV?0}sbsYռ1Aƹܴ?wYݏ#[}1 y' 'vWu䚰@S6s9u?Z[=O{w&\WI2mBJqA|7/gv+]瞂rYpFE]6 =!R&Y]mlɳ[/?Ȯ5U)l=yU;q!!آ]!;^e-l)7vYiA>|jyxiXT;/G~j^ȵ]e6g-m o{E?m0Kjo`GW!wL{Gڧr j7B9veRp.ܳяw{x W"g>m0oyK?h.W7'_Ple{[;1rwЇ${}P$|~_Lʪg4~O% ZiúG=7~m+m%A}R=ѯ'rk}"ԀVZe<6_׹Yz^y;+uM[Zչ&;՟O*QvPOڍR6$$Ҭ+'7d8 aԝ\ұvVV+݇_uܹx'jzjLňx}8P^#CSLxy9=?ySqi?V^0 &>1-m\3)YUګ!<=kKk*j?r k.##[a6},C>'6|&ZZU){\ )V8Үڮ9鴶IKqE_@Iq̛8>'= JȪSa]~h3֠Mb)c/.4K<}d(^;|k"~~C)q?$X\~5Y@Jg5꒷GW#嬱sY4\W%29_!}es(LI hr^XO,U hL2J FA?7V fF N3k7L)*CUg)gϧD@]`W[_ OtU'q!}DV_>K;V K P QBdf=5c}'pJ\{/ i#qVۜimR]K'ﰧ:܊ # |u͵w/*;G2(P5 +D P N =SJCoB$#(ia-àӣ\(@3_[d'͂r<1F7?">3 c;3~,!,|YP6 0+ǀ Y|B'V2:m!A^ezI6-Qu(p8R۪uGW׮):J rxeq#8ޟn|*~QKe1 uyWǨeocPxwWE7*%)(E cΑ/ P@ݻe)@  [Zw…?+Xpp z?;~n(@ (y*οa^za&/8C_(M_ܸ(*PӶ_HF:~Tw<._r3ʧd< P/ G:%L c>w[鏾f*G+N@{orw0Yxf3g*Ǡ k>4n\V?K6u;Õߡme@tgB>7|lMո(&/7Ӵ_ dO_kmک-LO-)S(@ބɨ!sOWywX(@ P(@@IDAT P(@ P(@ P@-8c0H-^.\'Q7(@ P(@ P(@ P(@ P(pV(@ P(@ P(@ P(@ P@-`W_ g(@ P(@ P(@ P(@ P J`1+̚(@ P(@ P(@ P(@ PP_ l4|%YS(@ P(@ P(@ P(@ P 0+ƀ3k P(@ P(@ P(@ P(@ B|%@|fM P(@ P(@ P(@ P(@Z(6Ϭ)@ P(@ P(@ P(@ P(P FcW5(@ P(@ P(@ P(@ Pjh J >(@ P(@ P(@ P(@ P@-`W_ g(@ P(@ P(@ P(@ P J`1+̚(@ P(@ P(@ P(@ PP_ l4|%YS(@ P(@ P(@ P(@ P 0+ƀ3k P(@ P(@ P(@ P(@ B|%@|fM P(@ P(@ P(@ P(@Z(6Ϭ)@ P(@ P(@ P(@ P(P FcW5(@ P(@ P(@ P(@ Pjh J >(@ P(@ P(@ P(@ P@-`W_ gꈀwe+#Hͪ_ZmKqN8>hҶCe (@ P(@ P(@ P,6Ϭ)@ å%$編[fۢչѸy:PSSc8TV{sѱϠS8S(@ P(@ P(@ P( |%^˖_ gskn-:vԨfp|0Ds_5S(@ P(@ P(@ P(P y90+, WP@ m ~ck7xu~ ФU t<t /ņo֡~R:__V(@ P(@ P(@ P J`2+̚@U-5삧_zwja_u=Y P(@ P(@ P(@  J`3+̚@˘-5삉=AG?? ~o_vn^?0..F P(@ P(@ P(@K_ lo|%YS`geƯ{x]}Xqk7[DvE?6Cmp^hho84n E7{"E3$?MV+IqHZ\ImhZZe~84k m]g]<hظ^&2|]"I~tVAefWR(@ P(@ P(@ PV_ l:|%YSšl\Lls&Jb3OB=/`-XحIcnŽK3 ^.ley`\oNPkTxbacֶ(P|cFa!+x nR4۵ў](Z8u3^κw x VOU+ǫjIIP2Bɖ\Z؉=|0JX@ЉI@,4_V]{?`Ca.{vF_A J P(@ P(@ P(@ Z|%@|fM PD=Z[W˟Dh- mZb:+7_/;7tќ2-<4Idux'N[[ V +Cs\r P(@ P(@ P(@ Pg. J >(P| #e:-}EMx_⎟tA}qh`N6O@.+K qexٿc<3@ wX'v*5`Jg܄1-c ݡMMLM/|D P(@ P(@ P(@ n|%@|fM P ^(W_Öh? h8kھ 4i'о9fK 2uch"y*ͩ ]6_^(@ P(@ P(@ P(p 0+-€3k Pu@|0U`W.(@ P(@ P(@ Pjd J >(P>;TmŐB @j 떾?G9iL P(@ P(@ P(@ ԴjZ8B U(U`bU]{MѤe-Ł%|W\?GO>[zR(@ P(@ P(@ PuT_ lX|%YS#{7װo8vV^=z1ο& g^0q&E P(@ P(@ P(@ P 0rdW(@ PU'NHw8~`5S;7HjvDMNX P(@ P(@ P(@ P`W|%YS@ lΛG<0(@ P(@ P(@ P(@U_ ly|%YS@؏ٳqsj$&J P(@ P(@ P(@ Pl`W[_ g(pJ*vş,C~Homo>N?(@ P(@ P(@ P(@U_ ly|%YS8KN;qB'ڲ'mdGq~=Tp`@*vIH7W%Gߍ]]kߑ ɨ_[+BܨE4Hjz^_Cs}Z^!eeM}^%Ym P(@ P(@ P(@ Pl`W[_ gjU78W8XT'_iϾ8q'ZW=-H4S՗ѸA KOj${#Y\ԬZ :@REU(ى+pO"3u'2J`줬|1'$0 VPe]+sc)[fhظ7E&͌w{3ahB XV(@ P(@ P(@ P(p& 0+À3k PT|F|z |;:0Gj-e2bVK,#giOYZ@W] KL lG"<(DfFf޷ ΩH&1a-=Xl P(@ P(@ P(@ Pl`W[_ gj%s{vԉH\|/P {B)ߋJF'_+r P(@ P(@ P(@ P Q Jˀ3k PL`Oq_0jYn|i^KGN:#BQ(@ P(@ P(@ Pp`iZƀl(@ 7̨o>|eο&(KA P(@ P(@ P(@ P |ŀTS0૦d.(@ P(@ P(@ P(@ Pخ J >(Pu.5]*wB(@ P(@ P(@ P(@Z,6Ϭ)@ bմa=h|'P%_>:v25(@ P(@ P(@ P(@3E_ l |%YSIfW#~U=EM P(@ P(@ P(@ $B_P7d)Wp|859E׎dٖ")l:_׎r nKuEZ}}(N]7@2BmIp*ý|۰n9튾H@|؇%>җo\ O5TeIDV|{ {ȭI:)2x/5R\G P(@ P(@ P@"u o;4hM[s0L Ć՟Z.kwJȋ{Vcd0,W6K*K syP^)+vb|6uҧcPv~ݰ\΃&%;ǂGBe\GkRE\Cꏱ[nWRNƗبAh&EƍX}8"4m?] {ٟ9UxsԜ?uOk[Sy:iY4~ zH x Ê|xx/5b\I P(@ P(@ P@"U-(Z!>ݩՠq:9^ m_~)fGt#* O(X%Y~f%cK2gR ȷl,:=.AWeʂy:AeΪ بn ] ĀX 5@@g6MCЭ=qNJi k){i|Ym+1x#kI4<;k^3΁u8^g9ma@iyO3L C1AH8ėɷA(o4<Ɯէv} ٵvU(@ P(@ P(@ U Fs_ ={MaCæ`VuҴs姺*>{9y>y|-=?'zv/E P(@ P(@ P ڈ=ᐹЧs ;[Ȍj{1\{|%dʴm˵A|֞Wj X#ψ_iPw#(Z=iV;]c X5dza;5xvgC+uTNK ;/P\V2>眾+9h7Aţdx)1ǾaǾY?޸w`_|_պ`-}qџ_^:TgmWSA4(@ P(@ P(@ P8=|oūz)o}Zk1dGn^Q(}etd]#WA7e8薢MX6bG>TZE}iDRl)E1G^-vE+/wL/w yxV%~ZĦW&`Ԍ|}Y,}gtj9kq!}~Ci qXn;Gd/Fn??ـ?ƍxB\tq*zubYS~Mz⪫5?6|ۋe}#t.JGbQwzL<Ƙo,%={t uJGt]z[5j$I+S:vF>+|e;jbW%2r] qpش=Zسeh=  =v:tdTB@qac5zW?J `B?6BpUKK cݤ'aj|) ua.ȣX8>]In#|޶Q]{%Fgڴ=x##IMe$"sG/ގ,i6$WoDl_-hKd VnSY3i\o>Ol52P^㯟@F=ݏg?(kSכj׳kwc~ls|QXcǎ‡'ѯ[{Ub:?r=AKkU-PMucO\#d+Z_|[9/@~>ܥ)8FJΥc9BXE8"wD4 wٸ7TnUb!i:.%up\+NR6Hw~5M~Ֆ}r{Ԟ. ==WZ/6l.^`܏zRuX*WbNjgd86rYм"scHI"#j-ycw %hgC ,/`@FQFc4,nUPDoo$%BY 3Vl\Z64+/DŽ~=L >.ԄC?N ݗ)a8mi] H<0K|gs9tz0f%7%Oմ)˫tr 3Y_["r ԩ9y78bTғcG0b1K5OM;'}6IǠlZJEEʱҶ^2++hcF}۫aʠ/؏vS8ĚqU:^JcfZWd}d4Ooѿ_)xdomRteҊ26W̩lsM/܆ӏvvw3rswpa4EY|QR!"ΛB sSݫJGTZ`*;/_9z^ \KKWiL^=]:v! AzrS05grm$ה%1xHz^܊ރC%}{{v w6tv>cgF{$خY~n4(@ P(@ P(@ ǔ?OG Xw0]!}::r2—ctqcHN52d'Ԡ)H˸ؼ˕Ԝ)7Y4SOI+#{?BeǴU2I枧O'/AP)^UsbC?Tbq֭3z(Eʅ|+_Kv_)eg1Wl}g${I&7ϵ^)i)/-t2BwӤBʭK'݊Q+;!yeW/a]cKH7MZ!cM8V~Io%2՝ZIKۥLiguĪA8i2U^@pI),+`\#i2fDZD:ɩTt/})2dďg/-TfaI%Δ`ZBj"m_~i/xe믔ũ_w[f\ ~q\'X?yTf_G_̷/q93X0{6a(]3=L1R0ǓzRstd!!yz/6X-SbIrѯMue:|9=Ҭdq@zeSF b yF0{_һwG:)|(1^ۭ<_Nm{h7qTOwHǰd2zǙa5#eWǜuM޳)#rw< v < j2~~})>i#( ў~qwYM ܲjw P(@ P(@ P#/z'ժױH.?IA=x/)4 [9?h=)?S,ږ;te&'!50Y*i4cr\g<U̐QKfF-G 0LRF`CB٠E4iX)lN65p6:] ìQ72dqˏu &b=ƈRtd_`902wkLMUzQ:fȸtٹ_}2mc9#@JvY񢴯5`i1e~Is e/܉Hm+1ψ@}c΄s2M2"jr%/jMSaŒלN`)LF[KA^HaݥtWCL,俕D@yEL͗ I| ?ï&k6cs,]3=#=h.#v ͸؆0)v)_m1k~{q 6ƛ+í3i5uVFy)Fihڮ>3AoU_uƝ2d옚1jrmc~HZidk5`|6ho.ynue`]\ޯ4|cu}(DQ,վŬo.1ʘh%nh9WI=.zUSy/@Q΁TQF^$67sy|aӪƽ-MYy2rh/Ҝ;9g]Í ;+4_[n$Z25QKH`ZYOy:?E|0m!njH(^/"E[^rtl :ώ\WBdn;ZJPXO3(|1ܯ#3#K={vjIz~VkQ*?R(@ P(@ P(A_po5QmGqusJW#03X([Fwk̰2{Dbv4 I##ɓəbX~(K4Ɉ=ƈ=!BF!k:F#<&$%#h_u` uсVFL1tvfZ[z4K+L)ztDwꫣvE JNΩ@Ѣ|et~ՕI b8q&%KFƚl]9^D- IvknZ>MtZeodMƬ2U .?/upV9Tg;:G)#͈8ҝfguLk޼ۂL'?#Yżun|9tdW[M=ϊWZZRFɤ~KSiү[>.ږѯ?V^_Ÿ +gU}`U,_rseeK2؝b3VboߓOP|d_~zp`mr3<vLvu8:q;97?E(_qT4IFuW#GAƮ򹦥ni@{1:%G,?4z | k~2e6yF.54*`p;muPV{VNE#.ŋ]pn^߮ώҌz]UjۨyѸ]6bZح<ܯx w>_?$Y.ʥ(@ P(@ P(@ /{1ޕ`¾$kqڻdnoWc4 u5=km 6%ځ d4NgmNفNi" Je!mk=my˾yzvzpf'tF|4[FcRΒASlQ7 u#e![#;dc]$H3H!/2/9Юv 1W瀾}hٲhMGI3َG*\D ܻ]30۸%tl\ BOe;yJTzۙ~Rrd )SL5/^fic0Pz|_B6b.Mq(aۃZ\Sdˇy熎^2 =oNxU`2%0Kf׃m_8,ID-Lymze,.*~ӵs ?o\t,\73S$ t9U#HcRK^u(.ok=UXvkXӶusr>c*uWhx ;jܯ,^1gG=pFU,kZj]?|n)G P(@ P(@ P'j>yHm uZ%PT ě᪴4tiQ)1KaIet  B 7-ExXVl5I y:RPڻ)NHbQV;rQ:VB75|V39jHK1|'6js+S8kH@/·,C!g59U^]i:;VɪHFr]5RyspݻXj~_ /r:eq9jJҺ9dbNUhm1C\bxGu,wrޙyv7jB cpdKD3r @膝 k-oz틹!>iw9ݡsԬCT`Ltozk{-@+/ ZOaӗzZbgjfH^onY<_s*Cwbt3X-#@ȴdsrmiLP+/sOK9/.wMS3%mNȬ!ʻ4ղum2ʡ!#+rwT #di`5Z T<<_L<7vJ`S}cZ1\\g$<8Pʾ~cZ1r LɔL;n>vCAJݯղ9=cFrX@F@ܻopG.k,r ^*KvU{-SvwM[mShSM~Xv2).2cn{cST ǵec+p/84=RQ,KgNJ9MI,@[%uH͡ƽ.Zg,a֍*e΁i ̴H2]eѴ?viq2jFODa?GON-he;Rp_ἉkfL ٣ܹ(rnS󼊿|i)Dz{{Wٿ I )m"6+4ղ9S ͼ4؀qɃ`n[r{4?SΩ[׈G giylTås)/H`W%@qpv J ʶʢlHU+Ϯjr}PS)oGȁ(@ P(@ P(@ Pg<.)vXҽ!Hn=ˇ1&G`QA>nhv̸vfl}k RlnFӦMTȜ^;Ԏ'<}FC-jUt3v4k{KopG.k,cZfɴjG8r[H Ltvah  2ܪ,>g%#3WvEwn%KRK4<3Fqr> )|=1Sz {G&-gLkz5}T7xw_|xmI9[vo ټ6f-i\oЦtV~% |٣t,ۂ? 0/|(].M tzRvTA=iEoE$Lcz ͚6{DC 5jpZM|y-O/jS-iF,7N LnU({iew|e΂×i0ra_{'oJ;v;kH絛zlV1\W|<$KmaH*l S_6X@]=?IQqag?unh (@ P(@ P(@ PI'º=2zG]ݮKGJ$W` |h9J0Ah sמ22} q4CXuk2XmzdޡUn'_}EX8aIGA:ɵs.L'njQTkr\M'U<̭^YNhUG]疧ZW9]{8esHfFڦQwHiʴlƄmF9@ja {}Sg&̰ Qq ؃).QJ<{;⥶9n~>~ՃEd`Ul֛4|{E?/GFx|(]>m "]<*_3FTM%hYS: b`7?sz'Z496ܗH9̸gG ieR2R>(9uC^{mB>++y IM_.k{uyώ꾁V5SjsCO!-w-^Jہ2ʘٷA9g\H.dvdq>cz~BFǕgWxV oGonA P(@ P(@ P8k屩Kd:_=Wwv :ϖB42Wg%.,ր/S : [l%6NCWS;ziD kJGuN ^ȴGGj0ɵs.L'TES;\oǤ0[O>#fc-Z"#PsK[5>_˧zR,蟃UVaqtxWv"hO\3=CeRjR>fbΥ&h1f{𣦸px˳=S36fDt@'-7yN(]stBԇڸj4Ykp[M<}TKiA?yv3gWpLIAJAK` ^Q?1h[-KN7Cs}}'t 2>4@,(oZJ6֔g؋v?ݵӋu2&jZjڑS:S_V#+Fbڡxz^9)=-<ݗz)Wri6]B$-]kA`jx,|S\v?1JC!hKTszyQ \Kvݠ_õ3.[=YkK$XW;N;}C?RAets/zހbMaGFh'#4שfmc](n+#݆2rÒmyR1%) X^jy*ک-ڽ3xL2%PJM[ spT 3cF{PECF+i%Nsrǥ(JClc%iE,{ rN,~csHQ R >S;sb"!S̖SLZ{JW_Hn Wc)oP%kg&_ Kq Y T\;.ւ!kI(RQ,cb<ԯm}sCGX`>Y׋ȞFmk:+|mph@=+"elb'oh3WsKq^K0TZQ:&E<)j\[Ԁp+2B)Sԓ!M m^#=6!^/^B  {Q=;:LS5SR)pu2lA3W@jQ>DocϘZW p~ddLiUl|Lu4O\AŐ=F_u.d];qsOrå꯬+po%h@/ol#eԕƨ+שfcW|!m;p#hѵ+ttU:';eJ΁攜Z['#+P{2 zmĴNJiR_*ez3H7O1 It+QhALBi>~y5Zb͂Ȝ!Q)"w2*vL cDZ:)Vtڇq/z)8J ph}cnE Ow߬cFXJ }ŨjZ~qy (}4(2zh38ˣT%vFECU :! FuѨA|W2??2J(<;v(JV ^PࠝA?#.C%OލC)nƼ?\sjI{C%!E~ߋ P_^piaSwS|niiJ57{qhIvT$5k~= N@ECQGUGU\ize]k?,SGGyΫ(-{/bLBYظw2:y(kkz)y0Jƅ:ώT\)y/-躃]lÈ_t>c<Fω%/?~>r=?V>h(@ P(@ P(@ Pgw~wEOiȕѽ|Nnv@L)8Qr{_]$2ʕ.u$"3sc6-//MeO#H %;BGr|P&;H`qRXA@/)Ygɭ̔؃=3.foDV;bzF3$ ʘo ٩,S~s7yh߭Qui֢|,z#2" G-%N!#mUl[:nv*9zeSAJ7cV>ff+5SΩ?~Za<8¿/XeWFneʫ)_ Tl/;GS7?’׺bدXE"G}v׏2k6idӆ+XY_u>hFr ͜]52k(RsV`4{|iU^얦p9n!SA͎k P|:dܱlVNܖbXʵ#`C=V^/;9Oq{h {TEՐ%/˟x^UT3uy y50%mOQD FcyA3gω7nzЛ# 4ܪ}P3(@ P(@ P(@_< ~ }%CSj =.A^]B{6V #;9]h%diY2*-{] ?Q)R20)T+^G? SGNԇƣwX5BM}7%Y9ZW5 Ƒ m:l-9 F*`$˾`Ab[G@)&rANjڳY`^%D*>n3iج}X XnSzVb'0)2}Vy"NL~lXAcB<˒Qx7IFҎA^,I#1CH3@h{zq}&GB$b|zo߰Cc[/8Qa :D")+F=lf>[<3^tIO/E\~t^uȹo0f紖KjVyFQ I t X8ޝbx#V=D<6,`NDA@Ai!HHgfwd]̫fޛy2^ Lr[8qb{pKRxDOQ,L0LUVeh-jTK LrGf8_YvʡWzuPK[ozX's-c"(KLLM|LۇMѨYK4i52f=!GQNKGNVԉ…g# @Qq)NY?FFѺeS4oH:!`5@n^!eG\ti(tФ'         BK/ ^"Md< 5\\3CT,bri~:ѲLN ǏĉGa4y # Lܓ @$kԔ1.x xq:usZӰ'M̫GF }{籋Q\BӖ-ѾC}a\ێiP[\|sz%8|(iyb֥m2o_v 3NWY>G_ۼJoI2m>yw/Fg ̟Se]$|bq:x)VLY fax n &[?JG_:8mLsi4e 7x.qM˰\)oF4<>nhF"~~yzps3;,X퇏tƯN = C(Rp @&]"6zO ?+ct|wG|GO 'v,8ݶƔkxsx\z&m{BKHľChؼy p/'Eq:82=ʟ+L?r&NG#n%,sU/rg4<k_kyh|uq< $_֘͛N=l0ReHHHHHHHHHj'P_Y>G;P0޽\so_㍿06{`:֎mC&=&V3v\|i|esZ~+d.<,3 pNS=282 t/;5I(8Ðc/K:*/+m&̨`C`9ziXzpj.K AVV:8>(mqywΘ|e<tH&隱~Xi\q6=5g4U |곸nmkgjG $@$PK x|mחkr:r9yZL{+`?1q.{51EYCYF87L;=ZV&egVsVG ]j,x݋ R}hӳDwn,~~gKiRS&OA+3x1C'@_/$@$@$@$@$@$@$@$@$@$P; $\ұykIU&#˗195a->Nw.b13.m|1YL/be ,4@Cߡ/oG^:vt㐿Cd6FhsΓ+7gyq<=]9NWX+rQ;_] `?YYXr!^tu{V#.PL\[,x\co]Y'fŔ!ucoě,Ĥ9T W}!ܖnDf ͑;^NluX#d KU،~3uuO/!! ZM$ Jcyɗdp迷Q%$euMǾ~v=>DN>Sw-X1FD]s\.=0s̥Ґc_e#;j)W_ ["-uV ?ӧu=J|fY:&B:U[e#+uvX53ofzxǬ00$= N]{qYCxO9fEX3̹~wOq֊TO6Yq%+O]<>FY9ks,[f,Gkf/%PCξ`>iY8C.[a? ?H(0#/_<M":va@0bZ؛y`\o6[bfK+YQ઄A[R2;0Uy|b"ki]N\vRvuX6+`.vaʫ*-|Y(" ZKKX;\lRǏ[;.W+$.AΖx)r.|w6{~ [%㨘m.o<^_CcvZrh޾\"vY<|9㣑N1pS8Ȱ(YvQ_0ELr0 Y>qy_& IHHHHHHHHHvDn~[s܂,_k,Ũ_"Rmc˹9+P:WTq%v.(y{X{&\(Kae'Őems \ +,C 8F Эm >{.ey/\.W+.]Y " .{ωJULJ܍oSV^_9-|HA$@WL^h;WĔ?(eJOR|C-EK%KL.[|w5\oK! zxqLy Ux$InT\e-Y:g#W}0SeHHHHHHHHHj'@_.I불?.\ly;pݰ!_o#,qKxm[bq 3ob13fYq?FXڿ=1\3JJC_VLWrn9|= _R,S%{Ycx`}HW'ekbrrnrҷoucy|px,_Ғ cӪqFL$e9u19NǷ7vWâ1IH.OAE2:RX.%믆5-#`ɫ*+]-H q3Ġ]%Kz´f0粈EeYR|[y09lC|$?G{JR^:yԋ,|Q%ܸ "%Oc沟{]5){pǶ-8_'sgյƅ*$vk< e]ixE2$|Ejm|-u9bfu ]0}-|Y!4LV^f'G7^G'/>" JKvYo/26y˟?}%:"0r]Pc_?s;ږ9Yc.B\_9Xl+|}F#3/˿ʕ|3oTϓZϟF\n?<_7*b./o{ſEY  翩3.#+.A0#/$@$@$@$@$@$@$@$@$@$P; $#GSݛyl?iaxUh>Z-LٽBo?T®Ŗ_Ƣ|.-|, T tj4ƩxS~;}4:9'j s/,Lq[*?Ŧq]Т1}0Q%&)0'- byң1ed to(2_ | POm\s(jC;4$]8b~F6QRuϡw&; u)~e$f ,>~$b[0a.򛾏% )J¿ŷ{T?ƙmbP\nƈ >Je نܳ\:PVxhX8-rڭ^FAxSŏ[-NJy-~EüLI{         #/X1e*:-@3^zg'n{j]tH^ems?]xY6Re# 1U|/!wUu].{G/G~ӥKHPUUs ŮB߇ f9(_-3NRYұn2Jڥ~eX.K7۵SOf,(uMliw<*^%k)OR.//F:HH) /y--(?#jn> ćewvSkB\0)787`Bixsa?1i$_I+[+[.##cWɒ>_9gth\[ u Lܓ @$kX֯/a&R\v[8kggav:H«^nD tM|9|#\stvɼ}l+M lZu;Ψ'[xtqڠFH d|kK]!Y$맯p}o(#ꄫq]B-Kw1\^qvX+b/B'g_N{%R]刻1RxntTKS KS:g(rbHj5/Ug0We8 \?#%hU%́#a絮q7qVXv11̘i}u2C;&c«kdȞ d?Jjoy.>!&sgݎ-bQE<4~[|ø&ɲi}?ćbsV'f%ꝇy/$@$@$@$@$@$@$@$@$@$P; "zǕ@p6c6&}j@7v&Zs7/C.C(f,c@㟞L*NïN3ls-o/'+<C6 B*AVz& ֑Gƈk. ("deGNtѰGz#N؁Ok UF**%?6- uTJHH ^{i*k^%)>,K%gDK1VI֘@Ii)^{47]fB' @m!ױvs5I4iTbm)cʱoz-\hְpExH%@W& /vƵEnм]6nA+iGa!ı{qtw \qt$sC$@$60x̧((,E;}hբ|+O[J^'ߠoჇO '7d!ua8Oq1ѵf $@$@$@$@$@$@$@$@$@$@UN 7 (-A^}Ѽm4nٚA5QZRGu :"^*+&H_њ(Rۿ~6@Iqa VӤeuq5=ԩKKhմ-  }1Mr^dd%N_8b@+3%򓾦têZwzQЎHF\35          *%p| ~_ؿf1 NdVi5%&m;!O"i˚m5 "X=5Ue"+u8w0rON}TX4 Ny@$@MEuX>JS@СM#D)Xh         S gg/]`!ԉFÖmQIS]$PI($D[_7I.xŪJ xX{j)v/F hcIHHHHHHHHHHJZ ?0Jc"$@UOgJ/'ѫq.~<5nr H$@$@$Gs4ߪMGtװA1hgAX J_$@$@$@$@$@$@$@$@$@$@$Pb]l7ລgh{9AI+ "X3|_+-C{+2wo_u_x Obj"z-;=e3Ѳ[_4iY .A&@IDAT  S@Yjtqpe!u Detkw|??oMG\zZ}kŵE\K7u;nѤ>Sݱ$@$@$@$@$@$@$@$@$@$@#P+FШu{1f: ]3V,&V(`uTgB+-V{X5:QZ09}ڗ5G819(C^Qg?m:Z.b.t>k^WFJ2܌^oТ,FZwDՋEhԍqQ'Zܲp]O1:r+>[7J~ud⺮L%?34 @# ݓG+.{ޛ_uTqwIW]\S~̟*.~K$r3~?Aoaa r򋑓grŭYXsPV"jRm~m[εo54 sZd1pLghdD*/X1h~ bta7FC׋FO-{u۵~.ǯ]p%x_3.?G NUS^Ne         }>D'OVܻ:[]+ O3P|CNGs/AWM"F7o;w)sqmZAV>YKԍ'ߵ|w>g^G͛[߫yo۱ׯɞ @dPz|Bci*/CYG|zia^U~^_q!J^w;▽V4J]$(QC8Rw?*~ q)R醲LDs`vt &PRT_;+^FWì xPzk^]ᢡ>yH$@"0{ӯ f>|ԯ1W{k%#        K(8>0\/Ьcj3w7WҔyn=~(`':um3ω`.tm"b4U,MbYH')Vm>nrMS I%пg+. @e_נpEyƣ,}u>k︧l#`C&@W*+$@+ L)Vr2Xk=:NLZ_NHzӠ j'F !=Zճ$@$@$@$@$@$@$@$@$j.3AW QG LU<`/0V; m-vS< aY[IŬS/VD_^mAd)yߡrT^[ {s#qV C;`^ph~IM11\t*3235rNa)K DHMt3~kt ZCڀ'#8Q2-"? h?f UW(␟IeɯP7BԬ_^ /rRpy7^9crI0}Geq$~}w^m_SZ^;@ɝL̔柰,{q,E݆2굼c]>OKGjZ.نVjU-ظ?{C_Y֔;X6+ԲjyG[z|]/i+En8׼9{eܦpr]D4~s1gФzęA;ԁA0ioξ :> =w$qC7y$و㋇gxd!̇yoN=rYON5;*.`ߤh~zUR;vmCK }hCIWM{rVaC}yu4c[a}PbE/bܘT&|,\- g=aP„-Þ_J_iU3>n&#K+Q2Vgc|?sžZXwr4 ;bm'gR/ߌPTFQe|cEFe `t~}շxf1>լ 񽾶BײjR^+Bb}OZqP\җvh 牫QјZF TtuCtckuWmNW Ҽ*xwS8"8Lga˰G}gZۂTqx#)zZĀӋqsV8_T u[11m+t#0:wgco \tZӮ<'>m}DC|Yt-+R:pb |YOJM#Dz7{@y zX"ξaSf+ٲp'in 2GB*q$[12/0}n}_x#G; q1M"#MI{Z2g_-x\rE8CKdb/+r,LC0% e{M1V}u0sYun;@Se҆~wi_}H9d{GYRVBl:͗s~ fR;X^@a [#=uc#j#kG^rWezUV@#_6B٭QC|OEIPm'gR z1xICU];Msw}WjC_}]M**B|mP嵮ʣPmm??IUj])KuDD_i vUż>|Zٜo qՈ"06w_-pmBGO@ldm[_^p 03ixB֮x.`SÝU.}ًhwsh͘nP>xR1L7@_bAU>ҿKW2b]j+}2EUҳwth7g%c]ŲmޝsӿqW f\Ia P$n+]%^Yw\tV4r p`ӷxK+w6%]lqT3c8'%zTMRI3 +pKg_qos;.*#r_aBy_"3K1j3v*[2ؙ={,C0~ԏ-ެ5'pMUln{vK:V+~+ZCRhFy%Cll(aS ۑ%_|#QuEJO+ |Mk;dgWS_՜z mT"]ߧSSHM-xZ̷]h s|ohij7M#)NC߳]Z c~Zc'[>5nN]{~܅gH=tߞWx56aI[{.gۄ(v4D^0t؅CHwaѾ1 2vcdOE Ag۱y2A6ݷ=n=#k6Y fZtAл}Xj_Β*غ%i9|SW 8:{[ R np߄VL K1rpw7e8—[ɍXج׸%:=: ˂,< oލ?R=soVۮa-(EV,u㬫N8kywbYk˯[mk3Y`dƢ7+:wsms6ݯ#wǤ^}Sm)i=ط˽f4^6i ۶HyYmsw)Y\ҋ [p -yw™gq[1k_*Zϻ KUIssQ\,;miz:ND i3giS [D{$˔ G_8UhpM=x ?n{4g9FV\^/ %B㣱o*y0I$us5 N=,qE+Z(?9ీͿnvy~Fm[tWalqwq|lVN_e/üYZvi>l- -㏔Fb?[yW</cݗt 2qRpcr?Ѧ]=Bnǐd )-8=C=c7=#zj Jm>3jmq>l[;{{I9CEeYC}ʤzsmÆ8#坶S<oO1T{Mp;mi(蹫_#=w!zɟ$vz2hbض'߸'=P囒['1Б-=|4- pl+ A<;U< O(Y'6]GN}g(ffs:%MZ_V8]P}Чa{.5r/6&[w˷2,h ͸.ll,_YRq';z(`A{?#챈z̷7@ sD܁3ȳ:WN2q϶rx,+ۼ[v@;zgb>sypV(f(a|S;=]_1:i٭uH;#{ΥtT|_:r{Zm o07!cƟ~>\ O8wĹeځm2%z?% iyi7>Uh}% yirRny=nL ԟYهO[b@y낯c?e_[.lX#gIQ 6sXA_@Jk$P|A q{Mjvdm;Nx;:ٟӊ<|=NdiWI%{iamǚڎ-7;VI#8/n틧G f|ޕBmƙrx)_!cL{ h}1g~zQW~Gjk}3{&R;g|\)ܺ@u޼noz5:Ôy>ê6\-ã64xׯ/ڗ׃uZZS%)޽ I_u·亙ny#K JڜDgZcgiMڒ^L3|L>IK^OkKf7I3g&6tEaW^M<-X2G08QczO[]jO6([wc-j;Y*Ó+k6sN=F?ɮ.a |$v.mmL,'yL媯Kk3Y?3ezK)ն/~ٕ'YQ[T;wp'zKxc;Od^wʝg107i82m|bޮ|U+/YwOо|6dݾ :z{:K_2Do1r/{8>wڟ,hc̑f~mZ/I'O[rfm_zQ9~}җ'\qؖ/a4w== =D/ů=VP{j{*3Oj[Ckk r>aGo_ܤ愞8DW{MrwZ̀զ9FOں|gD2vr jhus&ɸN[T&m+mdmZ'Ns)%S2g Il"O:;?-~5~WޱWYu7 a|8)C,k*ImmS反TH0g!k[;}P} S[4jWv;q%m֢cɾ;}}MOGZVق|mO/ihgYwj.g{Um~og W;-j%= S%KqRٴ{yysUfw3fhK~|F8cѦwi3R }v|W~q2~ A{4Ohƚm^W Rd=B{V: d-{ o2Z{L~Oх1Ny?ӝ!c%n8 9b>s͸WSDU׷$oC)JqG_%Rh ZZܛѴ⣫ 3K?5ۘ߳s{7>Zxaa._+L1 U9|z|8Ҩle*띶\~n9v/_c!+ΒT` ̘nt ԟQq t>pN PU2<}ڭ|MôUez;Z6u[QHs$>#mÆ ڎ;;wjkϏ\?^G{) ZG**I[lW{kEK`[)گu m壵.7FƵN^# wkL[Kn=V=\7l(3l_][?h;0;Ùwkex8Җ,=ڸLoS}3GN!Mw\P]^}q&jAϏQnddj7+aoȧsmy8ӷ@oċ=ZCyqMZ&&-e:kcG؀>Lo" o>^$^Lk$1Il:}틴,uI3U/f ^&pazEd{}C3?+Vׄڄ$0þ CVCBXmlAf tRdBG:R?A۪G|T!jJ;QKZ6 -=eo VL/^K4Y&Dl>l4"1~ΪK3Ԍ^ yjOqo^>#'>te^;}V]d'~&hIђn(ki&p.q?1ת|ٿV2U׶ |m_.KzcS9y:xN^p+bvy|kvHg%/7y퍙7o p|*{8ڵY_*_yڵҽ.uoOp"Gu^1~kC^هePgE02AKJ-i|Wg4B|uՃ ]!góOO.>W-[&u@w)"[_mH{8ñ+F|pa=Nn{..SˌyK30$ߌ(ӡ|wuz mb_īxXٽ xъ;{%6sz7_VrU 'L4AcmqnA 5PPh"Iv2V*ɳ\}o 9^S<c_㽣X[41a@ʌ57WY_? U nA|^săۻdFӴ qfK61FY׼nRuX/UDU Tj"0 XZ{k왽wvy={fk.i˴re˫n|l)is֦tqд{DEAb/%jVƋWxg (;efq+3ӱ|6Ԍs=RtfRq`P<-ԟO u^_;G^!hMj& u۾O7<򌝘 Py?wAX@mTj a//EVkͶ ȓ&}JT;yaUT09_qla0tyj|,I2qR} L/V"[꿲R,N{!Ԛ-Χp,y n;JQ}|'mKd.$TRƴvqS\xL+ݞ,q6tn,ʔ7 27I.eKB.W&Eqۖ2!#~[m\ie\`6ElqTM7jl1Ӷ1 |$:e_YS^:U̬jك/xtk$ Q b^n7,N]d 2]F4vr"GE"wc!\ɜx%-ZsB9U. %Y J.19̌_J,F(P<Jv"\a;c܌e!r]y`,^|X/vGS_|-S C2f-G+t=zZY] aXLJ]lttGݍuKI|L?XEZ&։]65|q *yukhǬ|9y>m(|xb[NqrO~1A[LxrDBB ,dP.Vi\eki-]3g6mgOr_QqH_{oJgmV%95?[έp0h`[Ǽls$}^N6'mNʭI:\Z[5$7^[*,ֵ^mCfɰ[sȠ=Ϡ(;J:k>(1TO퐙Q3WR,'UQ<mq+H8X]QkTĄ9FG-U>kT^A02hGLƋQ= T9mM#Utƾ}|3eq0aios Ct^Gfl^o~ly)-+K#<>eK¹u8ss&'f%Ss(kxLO_x~͟a۟_ebH\""/[ ϲ/Ll IŠmxٮQ~ϫm2|ڱJ<Ϯ?k bަۮpHX8{]L\$Zm'U\4MŪ+&e Iӊ1?nxFx3׺J72K+*٪'5Qr9Vr{„e=f=W2'bv;M|i+zw.ԔK8y;ou?NMʅ5R2/5ubSEC!'Yu [o{֋-ʢXܜ5xm 6i(4עr{r{s6󄳷fckVv<ݺ|GS3jI/U+R^VN"q_ BuK5sr<B\lbŏ[r2I\W+m ΞR:{0UR_#-?E~csGZ~.gfx°eI-cbֻd/ Oc<-͠sSt9iaqZ#2JQs|Qol5a?xy$Y8^"뽙}< /^7߱Ɨ\kIPyx!#K_'`2d\@<^=^zVP2GRlZ$α ]a)[q= <fFF'e><Q62h^L#]x2[?x1j]穙٨q~ݪ_^7lͭaWa"Q1Z1;VG3uz-igsnnj5L+}aRDtzˏ;Olnnոuyi9} 3<(Jߦ IYZ(f_S4C?/)c[A>NLeFoʍZF9;[K3| ^ o#2Q5&(* Iّ4"cQI())1JKE1o/W8&0̻֍u{k&<Hz"VZ'[r|k[31x垿Qݳ|vit?|:lC:健=6_ZX.VI\2i0foqiR@IDATN[ %-­1lG&RRś WtD,Ӗ-/G˵0*qwn|9׸U,^0O5E\S%ʈ{\Uig5bR(_8|ʣ wGݴhLNF2΢ajČ{Ą+BqBqi?4Kjb1{ƙ-mk|\fޥŏvŒ / r_~,|9-@oXi;D2QR\,dPt)w6zE o 7ac1R i:-" -RGop|)GB8)wǠGeJt)\qc'O5{QéEŢlf\_tK$=v=A+e;;,ǜ) /'5"$8Xqh-͠sy9ǝS6wҕ(W>sRƱߴsi#̙>sҨ[1>eŚo'OnY,e?TDFr&xiaą y~٫d"NҖU>ITG%&Ǝ^1DPa1i~0~q9^.Z8~> V2[:Qvg[?mC lm^dJQ5ܝ=qn²]7eQc)ꪫD\K..־;<r.nߡV5jiI)Lt֕,c+\0a´9**9H/ٮqzoPn5I#_\<ˋ&jeFg3|9]kϯyfy~L=xu~ί>"L}ΤM~^%/vgKGoTQpT߻֊KGo5&)#$;No'ajfB$' \@Y|?)vm.5. }0V-8+G[g߽سg&/YPB)o_gQ5$N2b'-qX,kpcޑOcү#n.odp(l`~L-?P5/*u Kɴr(l ox/yf;cR3~S/ۡ|Mݖ/ɤY*.ɒ+[I!saD,Y2, 6,\Ņ1]Ѕ_@)/<I946n5KEY/Vǜ=xt\"nbbCi.+/;Qzd'cf+;o7uo]O)݇/|S,nla/rv+~WXF[ sdU4qXL, itN[Ѭr} )Ӆ>)Ǘ]| #F">iJĄ-e}u.1^'q؁l)crNxvΒcH?[f|rRΛ8jaY }ʖOk˱Oxά|ŠʒOx=:F[}tv{˅۩o 'Yn*WzNƗߧ>(b:a*%<_V|aJ _]9;X͈~STv, N?T{F0W;c.aaumP&øŋ= ˳3k"֌ښi,~ŷx(d?V/vص0e7dn۶:ɩڎg^n3/m0cuś< 7هq~nbr7&S~Ec1j$7BuI[P:-bRUHbWiݝ"* ʲhcqˠ&aLC|3Ңƙ~則vsKO0Y矎c|27 &be݅e3>p}"]\2vnnl, |en};7ĄM?K#)DJܭSU*v.,1$Ϥ:E QZ-pVF$0[:7o;{dOXYy'88L^>)~ahMs[U㦒rԺȵ匟\k=rF5aJ nEL,Vii寽ή+n YU9S[F&`+ϼ܆Z?Q`43zFKsw~kXr7aY;~]7;}7iwTNo Ҳ[bau#[Fz9W^IKŢ(gܹL&ty:;ge'zqe^;ry^NxFʪno ~~8Q!D?.t?POI|kdIW?~s~c_%GEނ+`φj#+/p̂cQ(/nygK[ӷn*F\<Y`ʖ2?^mR0E=?o዗ɳlOjclt=yXgS,~߾ |dRͰuO8>^۟;}X^2c["cN:ԟ1Da[a*c_-UֈUz^M(_ݸBmofHNT3.:1M;/?xˤLyFFqbK!gaƐrƿ-eC])sJ2=rqs|'Ȭ ϼM V+2bzӛO>E:/W~*'&+#r]gTmYRC֋E(zȸ;>k•>loXxv}Y>M'?;kD9n|L&Og̝oaF.*\iQaP0uhpةeT^[EK z~ШڈGvͧ<|tˆpu9p앑ߩil9b4d^Q55{he԰SM&A*7BQUoA2 nϧN7Nt['ŊN&* 'vqx4(@YL􍇕z #֯ ʊos6s٦^|ms g]>i~qI3ӣ3E`u?u ==~㤝Ft5rצF ϯ݀w6_fV^GŽ[~sa/2`.ڼcf^{|-8_|@]4\,l[&w\F$߾a15W]!~fػm)s3Faq{QBͯ:4hgW68DR,nJL,z f T,.#,!];Kc">3=?٦ *;7Ysl [Esh|E*K|Kv-Ԁ\.]/%Ǧ]%WTn{0)'UY8u1hPBO{k)nc$'IeUصJ[(..[żj=1T=-%M;#'h`l}yț5n6c|m޸ܰzt#ug~|V^Z'%lTuu&ܲd\\%1?U];j?kiCWuu;}W">5,#eT(f'ܻHizT'./3E<1^9iu|Tm SjV4}##'[Yſj.⣍ɸj^öܭn_X,iN(Rw̝;k|uϲEf~ӫsgad+3 e>嗴튌xn;V:=XUgBQLOyFl03;5 ^¶#^cm+u:̒3 J'Tgr>^u#tH/yX6fZ&|W8krdyuRX%6{{|-?CO[9޾1Q.~xvƘXh-Z5v$OsøI)\ݮuRR䈝T'6ck-B'CPU$).NZp0P(ڻin|1ƵϟGYxs$-Θ ~2[vq c0߫K(q%|&':o wȟl̮7 #?ԜGESE{0G}.b%9Z&/+p.' 2x/S-->8Qn$'Yg-b6?i+kp^~D;/^}n63SWL%2\Xz4e[s#!<\'xF]L yT5rS'sH Z-<\1Sl]*7vLݸY,X+#nLuF'$=1ܚA|d|#G]6t^Q inEYsE7,OFM?YK^p⬹z:QvVōZuRl-iJl]km1cS'fv:˪j#7BJe{ZFeʀ C'Yh [)Z%ꛥ,i.VTIJ3pb]Wچf*j)^7xAE|;tf&LU5UY.0ovUe|NC:Q5UUb Δ KEM}r뺤ZZ|e@-uDI!kEg= <8+>iaf)/)4{W0nWn6oӤj y}1bB,K/fWU(4u5 )5 VSN>uƋB ~"\-̝'Mmd2 ovOs8g)IU(^䶤<dլVmᄇŇe|zoB1ׅ+^d[r VFMfk">+xVަa3&xK\m?K->cfVtn-3$ζXkXYe]0"IrsLQ'v&Ⱦ^=T[mu m4oR3(t2'%x.u'nju>cHj|Ƣ1r7dEL1hʔwl'8. /ػv&kƊ95ATimsʘx:5)}~JvNmo3'x&,"9%շ5V4-ߺME ~y!b9Ȥn_R톓a xo3w>›eU}kRwUYFby~ӫ+5#kIg8|,x}.9.UOc}DTf9UwZQmDȋ1jوަtʫO_Ȥ .ךfۛTD(/.Q.*4^'9+享墮RuQʜ9e(n| ^W銭ʾW5U|{X1_ߡsMo}ΔG9N?1R:<,{? +0q2q$y[ho|cfN/쩹|" /_.\ٯ|>cT~'|lf-7Ţ*m6X_ôo}DŋHex86&H ^?Lg,܌/ kD;p8U2jl D(dOk/lp,?UԵrOx9-=lOcuU_vc9bpEǼgȝ#9%bӪru/'ޑŠR766a}Wqy(syiK Au՜c|istWwp8m'tpEבN;qʖ{gS?|y {3`~o,{N=~(s(nT rOw9naq͍Xu}Y!6rmZ*(U#z =!Ju|/[sH١8Mv4N|x;=$?dn8J,qnO8>NhGݶl7Ə317-,ysOXنI\/ʫg|^búҪ۔SY,{92ArKwO= ֌$NTjV$[3Mgtxe'?—}by[KyUVL2tJ(f8B^̄u<_-&1g |JemD߫ҢԳ=ߟTzf'H۳NcT'rA~XӞL+o3 vE]W}w>}U`<-Mo((/#?٬]E8|$eqR4jRFAe 8. //f=W2Y 8x|SS{QiXNħHTT7*|rOXY|6\Ԩ]â ѐ28NΝ0O-mUn0_dkA 9YN0*;QTXhW%ʄ%b.3걙%bN2#*J,sY+εazJqm_[?`vU@o\ e:|aGIpy˖ތF-225y6'6S]bܦ8{RtFn#l߾AH.$!ߎKHpyv ?^ ;d{N3Kb*z~OLwS%(u3rl,Osi95x1ʾ#LoخP,:.}#;F)k70^/.$-YNjc1)%҂y܆wT׃~WL^f2 FFq#IO6Jvӊ}]Զ;4:m[h툹4d( :N}m5+72Laq148ex]Fם]htly^z(LӍE\BtC_92Z]5v;LſmYʯtQ-wj ~ht?)?}A:OWҎv}*>hȰaieYildY/dδlfɞ+|#E(o ;hú'I?* YY8ɫQ{gr "-~J`2_XyuPUmqQsv<"63ͪ&H4ꢗ&I?'or/3fTm!_ jΌjo_,ThTcuQԞh_6D֝4!趕\N_mrp:؜c=|X<2(׬dd2|З)FZ3R׶F 9B}YjBS6'/,.5\Ԕl`K?ߺ) k,_--ڞv7OO5r8t9vZTvzɮ|_#і5ҴoM7-+pUg<3X3Kw #c\|Fn#|c|R}깐 ێx"~fqh=SDMt׸E8zx*bXQfh7rnK|V_YƞJ[|,1X-$ӵ%:ğWQc3 )}YOGܣ<1%I}64! :3>Jo4_*zLenM& 5%ؽDk In;gLct_4f|7=o翘hY6E#޵A"RjX[h(GIhCh|b"wa+|D=)q+HN9׹[k{;IH0={_H%'WxfYsKY /< M/9)O`#AIeU.,Nکo'ն^x q b_IG4l>[$뵦}ҢݩFm_y_2~=KG`y c,:<1EW@ VOΘ:F=IO^E`Y7>  з_0Y3UNG~c%*ra +/̷(Χe5͹FRMDF|vA\.8u e\"%c'ڿ4ոVo\DG`MtQ H\N@J合ݲd;1'!䕀aԍI!iK? }>irgv}>H @&BH}s'Hkl8?QY§'h{x] -ߎr{BġXv/ju30ff2/-Q x;ܶjk_|Jz*Ning@ 4h/{V.^?48H@۲{iȗg7 ;?Sa&mʝ|/L~~_WS7 @| %r)BnɃJ؉~-+k.O?:egzC*4o,z/, j'஽DJ]Q@ƏVڭ;``:ӧ rsÞ7>=ʷe|0w)'zV4:Ə蝏Iv&,E>Z5yCO3VqӦr?m۰=$:{ t5R'i{!tH6&%'r* {,|ʈ!r^LŇw_IOp ` Ļ=<0F앏7zki+fϯs\8BKr ztB~BQ]Qj7?@A@@@@@@@@@@@@@@@@ m?@@@@@@@@@@@@@@@@@@(!%]                 }_ySA@/$W3 MH_Q#[=U~%#A/G{y#4G[7͢4xa4xPꏅMR~u-h6:aph\T@@@@zƝWSۦutaCiQGC1^ukjmn6>_]tY8 Y'm;zmnmC p!&Ҧm4ToO~Ѐ@"m[_Һ~P~%7Y{9erdn   =X #|  @7y>nJ;5D@Ú5^1AQ7G    x)hԥWq򞎶m6:KHt #uy}r B6_i#>ETђ_\mڸ2}-׍!#(_ymAP_}yht_iKOyΟmoϦWK Σ1.d,:mp<I:ke\j>V!;PQnacO,} '}LJo p5\Y@;{}sN޹cXEtFT0\` stWދ@@7NEy~$?Kנ4/<_<|C@%/I{:=;_ [EW}'靟y8~GoGF깧{~B= @_mBG]H NBG"b9WcF_D>M׏y?xt!_Et7\_ A@@X #|  NZzD__g/ϚB4w4+,x}|5ʜ~r7!Bi|_uQ=~5":sNz_ 鑅n2z.<`w_>/nI[*W_S˛?2 :Iq~! 9u1.T/+e}1@.@ i Wp@Neq3mH;>| tQNkPD9?p:d_Nղ:vuG ÇֹKjfR(%*/ҵA`]Զq+8SJ7 ]]z$t tԱfx 4p      F[oNl=I_W/N6Zv 5w!tC;7vC]r\=pArF߲>~ tFJw#_Ò6nhM;wIYy9ng/uKS׎fhöX 9>{14 / l ҝ뺉նar]I? ]!W/kL˵ *4%F@l o~[:4@&W}眓bﳤ:mktԸ9)Вal!4]#|c4u܎Ћ;MB.3nG'7-xr%຀y}A^nF˭*'[UXIJ"iU4KQd. ?u2Y=_lm+|Tt\(E]w7ޣ/URn9ܕi  _ ·ɺ=ޏ[: c&CG@ 3Fg'罾OyK3]>n{t<ަw}f-mF_Z?W}_K.2ç/DhHsxC^<[G& /xEOe](EQ|7`Ϗo nޥEo_za Wg}̛K/ ]| !7_JkGDzaRvIa:K \_P߉[ s^CW{Rs4 @悯s|<[ §A;eK\ޱVLJĭptNBY@o\MFBU c@G@ sWW=4h4͕,{ }Tb+FNZz|vtcu*^FS.2=1wQti'`_p:ҹ/A@@@z t_}vJL'x_w|h{v!O/GG ?Գ>B|$XE]~=| N7_ A@@@z`YT]]Bg ONuiC0[W_;iŻRcw} Ka}4s r{FO]q_b|0 z|>ώ2_'2V" Jl7{X"p@@@`%WYt蕅–C߼3Z{KIL4>"}kZSUЅ'脫.ub mEu*Bbǔ]kQ7+ҕMeB=\MĜ HG*6_|B,|=<{ Y+Cq@HG*WɞcR+\1|E%w  3^$Lo]T&EtwP9Zw}tz㖺XbN.j:nX?&ti+&#*p]tߜN{"_J[?=p\8vG$=bJ|HZ{喓 ]:OB    y',MՋ'HŚ7^#țϏ&^H}"ŇZu߬?5#LTE5/3{d]sc),~uM"o]|57|N F>P&2\j  O ЯHW~|{   |> WD8i@l%rIb'DC!Îcu$>wѾ~t`]Զn+n䏰iO7_i@-    JO={: ]k`~)J]۩q^xArsDB0fEKpPסp.I~|8v! (G  k "& JZC'   _e d]A\'|O@ }WHwXB܄%uWCf<  fH"_٠?@@@R+_+ǀ=@J׾uH߾btuvҜ?|fc    Xzr:o~3;]sa:7頃~‘n%0eӴx:Zք4g(џpޕ(*OQݮf:Я~ghY_^"n@R&=鈣#=y<,@eDΝ}kmYvA3Fsb|     9-+ߠN9>i1Ӡ!gqknھy#57Ӧ53t5}$uHFO$tߞ!Æ?MC:JnkzHOjv޴hO5}RAO οU~:r ')֯lI~ndO    @`t!_Mx ,\.ͭ[Nm^G^, -%qItP^Y$ @@@@AjZ;iR⯽{:ehgO>>"i_JR4|Ds>Ҟ]=.~})B< =9 :})iH j>٫N+.\~~V+F~%'@_y, |>0tKMvPG<~dCA 䈀sԹsGB} ::H&W죭;[i'9A?HB<>  ?+_ݺ gm(QQA%QAP.-^˵hB`H PhkU+"Qb &$B ?g}^yѰr;3g=sxW2_D@" H_n0iuH$$ggܾ=S~RD@" H$Cc\;Ow(d% 7`O[ݒXD@" h=7oJ$D@" $I^+ N"hD" ظ1{VmRID@" H$D a콩掱֡cDe!pHVұoӟM<]u:-H$@#ߡcǗ^Mz#s[ˣRƗH$DE@|Ć_'|YD@"jKGM~wJkvcJlKJJC x`kpp)r9cBVSGID@" H$D@"!а{| gy 8]{PI$-}(#`H^/%c%W38*\-DI^?ƵI$D0w5eH9kGQ_*i8փH,bnԮ3+,H$D@@|f_'|YD@"BoE1r}^'cG|]U50J|T;WG)L;3: {Ws]we$_փ:G/tFu(މRlP:ksI|nnUm mڪֽV 7x C(ۨmp'EgV>H$D@" HZ?  Z+W 3k38|0EӁFoWrt8\\4| z]?ϻHTנnΤ|'g=~g ZǟAmцݟ&8t/½7)@(Y]횜,Z!s ܐXtΔId{M?BwBN!P=l.>e$ձDbF.^lj$> ~Nֱ m3x׎ƹ![WG|ז҈ۈ?!j/ǿD@"pz!`/>[za1/p^z^>Xb/Z\m.:x:Tӆ_1?m " =B\/d־m;g ip58LO4vOcD͏CyE_lD@" H$iu4 |'CIBUp UZG5#EjG kp)?ue5XoE*u#)C@&j5 4C*-68CgM+ucc€mw%xЮ""8P=}258 Dv!I( Dŵ}pK@'2V;B~]C('pDH$D@" 0^}-JpGIh?q5(G7Wa%Ҍ֖6lmߑ۫Wa>p}v)چ:̋.Eޗ㣞~qq1qAW A1;.Δcbі2 "D$ dҖ+=/F/YDȟD# N!B^uZ媌nU|esM.2(ĕKFJ4Xr{M?HSXS->iBGl9bn:FWSE[,3SkFi:OkEZ&aG)x[]CkEAkBmӲv$ueEd}'G۩WdGc b6" !Q=h ?no]6dv݀ćaXXz"Ā0%,C BDnjLC ck:rMyO۔' 3.9|Uv y@lT" 8i[um{v5چPqߙhjUnT$ٳ5$Hc8Dq =kbq99u=u!H-T-N<]Y.:vR5TYˇbRF'H<(މ%yax2\" H$DF`l\FyyHdůRȒtH$D@"p_' xQ4:ˢ%NasA+Xy2 CG#Iz: ˖H$D@"Т+qC[4}{g}ӸD'ÆqA&;xw3O" 8F1:b:>WY""Pw_U|' eH$D$viuEKZ9tH<'b+G$D@" H$q@@B̐\}KHcm~qL^pD J<%`Nt9:m)k"H$x# hI(Q%(mюp][R"K-AmE#KvD@" H$REg] a| h:͛;&3!Ѷ*{ǒo$ rq4 fH:ࣴ?D@" H$:$viuEKZHr}+kEծI ' pYD@" H$Sa% ic[jVpX~w֙\ibsI"Af$<ITG" @3!p07aD@" H-ૹn 4ڡUлI&QGaXbO=WxTwl׹'KZZ 3;z^͵lm\4[7=W|f(Nk.ƒjfzj ^'F5xrj5{l-pnE|,Z/?wˋO/QŮ9ۯ{)v0[q+gT{rWWx,}N4v 9 ;~Uv4H&]xJծ%T&W44*{A<#剽u^4+'T󴘡s3lO ySG6ף|k j)pAA<֤m_}vqbD"H$4 bMg\Կ:qb9P=vF@۶ڥz}h?W ?uGs] >+vZ}"{q B] g,5ќR= Nh,R&o@]1rHo!A#1SR~Bm5`qr*t&#;aObs{|/iu7|9BQZ@[OG쐱Cw _ {H qɻ/tlcMdH]PV'vF"SKy-c|W] ʥpWcO[Wɡu7cZXFkaeu !mɥ\Ꙋ>uօ}I lp9C[Wm7mB"6잸\}u 62O1amTNf^ ǧ=ıDq{be~WQ͝Yk~]=Dq$9gb!2ow oCzDfl+gŅZl^aA$εqD[OrQL+r!V~!OXLEM$^c'F}+x󴘁3|O vyO?3=F")}sGMc lX7zFGEd7??c~^OtdXXGuovoYz0tOhF}_+B$D@" hH/NM{e'(?@F[n0}Bhcڌ՟lg';\p%ƎLtUDdń9ȝ1 qjQ-2?b;lP*$k9:%*f]k4MY@Pyz߀Ug@_dD7:؈$aӰȝPѯǩЦ:a cMT__]m0uzl+¡v=pmaR\6dZDoB9:@Bg_0YϧDZZ`\ӻѫӐ:[s^Ij@QVlw.ç cOc_f'&w>{ֱr`вZ([?ikϑc2{'OISĖ(VD lQF'5CU[s }: xq՟1~A7}*~P[o--Ì[r"?dENwOu^ZyG@Z+XtQߩ޽HG۞ 8 }pY}[qWK=ޜϢ&jzX g"PdC,o&6:H(w k.[6 x0 9<cxHA<4ϳljx>"ZA@?`N{C'Ew FtQqHuǑf=FC| /a֊fj<}@_[WdD@" H$v|\P0ꌛ&C/c#sFξ;C&bMF|1\Jz2C_ON/7) rqwbP-4P2 $W)gm*;NI1 za@ocM7x^4Y^dYaħM^]!v1[M}dNawoXh4 2+ #yj8 &ǜ(NAw&T>~u\\s9iIk'mYY\n^Ow_d?G,? }U#to_`&Gxtk[E~1/(-R@~ijg?wˣ+#?)v|54+8'+|r>Z^k>'?}NOWY!5aX%k }}1"ڠu`GB7~#;3OƵkҺ`/k|WFy%s^?Ȑ WgIJ 8^z^b OGY,>rӼjӶkhB#^(.ؤnLg}2D@" H$- ic(]TXZj8ml՚WG#/7lSU}5c'n?k]l@|>YUtB=:vT Ġe\]^JKQBó|peNND:;i';uC }v͸ `w'K޻nId|Il)5H/h~g/nWq})%#ۓim3Kn~W>N{RS2"P/}-j<^|Cֱ/2w_dq^,c:Cmoa]s/OYlFAf Gy__.FяX gG1{JIJyٺGx!f |v`t\olc5BXhsIC|2b1QNz}w>$#qxy:]!tXH^BUc_DzËk|HGnfH1tOac/QöMH8tXdeaAn>inioIz-o߄qC{?|;tkIAn.FCxSK|U}qQbK[|Ң=Iv! 1TFjt24 qWfh wv\kIͣQ 7:D\pr mX]/>+w{mߕ0 _jV sc_7%/z ~0mCZgƐkb@϶tc#ь]ee9tዕy م)+܈%Qjm-*_ 躞I]t\cݎ2Uܧ/9ef\#͢/vA}XGfyyIp2|ĥ ="">A[ƒ58~*tt0uhӯQ_ov.1fHE[RQQFBqCayQ|&)|ݍ^sе ?z0'7z1Slƶ/Ʋ#3q0?Wef2ï6&#ٹ+GE& 뇓Z(W%vk?R,JgVt;>U i0[WTkTֽt=[XZl"^9T&9zʆ<׽4^såf"3f؞my_oõ }h%l^7罅 ^-, =( Wlm {0*+ٯVk,e;kZ>qga.PVIۜMAtD5^9/D2Wme0Ig+i^|R{.sǜMv~Rwbԭ*VSg)<% x~Ϋ uz+o9bItr:8F8k.ZKuvǣ Ji 8s4EY]lQTY1gxmD)6[ٰcsғ氵>~Xc9EYZp)5V/>?-XkC?~_crOPs aRUs e4Qf8޿-!/9J~? <ݯʮUMܥ|]]e›_?gȵ/?L9'Nxt/=Jˡes}5>{OyУ̷6U* )OQZiCsZ**a ۼ(Wq#R&#([pWƪW89Tls(#,\mG\ѯ,=ɜd<[l(W6(qɋh ʍF<ʣYMƯ'|+ g Y} Jy?annt^`2l@o1Sġ>:V7>RyAHۋBJ>&{2}yīP}c0ztW BkAQ4:*6"_EhYxSfq}+aK`NSvۺ1:~/dr]~{'1|8χb-O:_Ck &E-T'7nhsO2lzJe{<}5ew 16*'nKJu3f|kt;>H\$.> -VZkƍbe"ZE?7NuHp|1[lB!y*VUQ n7u}:Pr_frqÄq\Dv}I[G#Je8ԩ~ w;{*)wauCnL馍9׌<-Rh3yL؄y){OC3!-vTQ o HGf 1hbܽjP}0隌^[$Y?SR̲$&ctI 4cV)9uضe Rc,̑ZJ޶fV>ny7DLIN;oMWE9t1et#7:$X=WM^h<)ɘrݥ8T%bLYEj@;pˌN MjF"yjY$۞`EO;h'3'i]Q''eae_\kyڗW\1B["UH;n8׭X]+yC=iYf=6v/c 9Oq×Mo85Y@UZ;N|ubؽf{3scb!zs(^֨wX[/TxVJΪC#ޝ.b p~OQf0yl+K-31 C՝#< 9U;;,nS1cftx\A$Dp^=~/J^K܉8lF.ü2=(#N.x%B8es7uxuZd9pWymXDdZC;rTѧ 4Ұ/qc/f%+9kvB՗.fExb@v4p+>\cYwb/OJ Ů^K;]HM2cm ij旈eb7b3~ͨ%zak{g*[Չ ~E;ss ($v!ZƜœ"~ۆa }(85I_Mo.K4Ox4?)*:}=-C7V-~7 ~Փ z2 wU uٕ):Z/#dnqKmwB?4.,l )Z> Ɇ"1=È=?A!Ϡ<"4Ȧ:$QMD)1t%}Ń)tJ\-]ͥ>/7Nv9%owvg×?$~"D$ܚ{ mts4mD/7YGH_$su.i꾙,N_;8dls.X~`*^2[rJK >\$!$ pN_ _-etO]ććn~}ɯ_X<63'"6G2$ym[HuƒvsEyz^2?][Cw,·q7yL{Cܪ?5QL<|,o94!@-gyj,[Kmg'hYˋD@" H$+hyWu_˔ャC{ ×Wí>y$-S' k2$v̤ӁcP`mтۇm*y2L3O:{R g[b(UFbeY+W{Wb-RW)F]$+"?񗶢yQp%a*w@"Y"M٤kL*RBoEj<]"˃0.F[aKZe5J*k)fgy_߳һ'_#/Zj`_l۵ O̽|4wwg*;؅t'W;,oVZtݕCY_v`.N 7>򆲅yڐvfyx. ƽA_T^c@|nEؖYٸCYQ^+^ỽf*:f1x,/v ̖sbΏ;L_a[;@4K뇡ůdeYȳCwq+hl{͉^y3=a2U')U߫*RjcH'z_w+i<)|^~hڵv F} WIcs"9k^ybBgo+M/y ?85K$gнG;֓29Ǻ)uO}weyvOUŹ˘')J[3aƥXQA#T_kl0EYa| <2,qf5ܣ?İf߆~d:4so7lMl=by"/s o+R\ +ŷS6Cƹ[Xaqƚ$Yۥ<|i2ey,6<}O&3oz+QҠ#L#a{V;J= /c<+[(;Eq=<|v^5'$*+ÛXtsHkyh =EI7*I赔HeZg^/+x-{LiNԯ,Z1*v9{&jrK#+Balì239*cu3̴§>L<.T?m9 '%Y2e~%of*2n˔>2%M˘:>]שjx߸]{N5O 'öޜɕysoȏceV2(6!|}kʃ)?>\ȺWw罝 i`yPb+wc⿆Cf{z&;AQV91]z^?o> > =|jWU %&yScȀܡ(^D]x+[ˌbr++t=emxQC2"A5O9j~Rzk޲Ԉ%H;84i1W5JiccJz/[;||L3F쒊J¿LSpc ؂R]V#yv@_:=Z{z=._{RUbAe0KG{/wYKM|yFr0m `0N2L'iFƜ&"a,aZJ,QwPY;_^WKkKY^&Dexz8}gsWW-hZZz=lQ~qEFsgwN߱۹{zk`,9F"`_} _،5W#ޜWYx-Ը;O&;K}o1ƭ_9v%◭~3V;F;9NcSnx~2xrG36ܯqviotfMy5/~<<܆5Ozq?8M'fE#{Mu]7`zYD rpw'W:~CnĈ=h,Fo(֩nr@"TeaW~G#Bϼe2D[q&H9MNX9 gsVչ'M9D(?нzQǰf5ܣ?Dzfۆd_+$_rh\Tи|X8-=0 UsyљL)k y\(.шȀޗg=9|tC2`×oѿx$_:ʷaÃIJvClzȏyk񒫣|N,1q·9{cQ|IX?Yq|}ly"Cc俫ȨNlϊ_/%6Xk`:`3O1':CGXr`ybx,{6GqY8:N㢼Fl}Ԝ?䊎ʛYO|f"ls-s%^$翼}y<۽m^|e0a??\#qV: $YI=vi 21#FHke~FM(^E*it'cܙA=D;hz~5?.(l C {簅S{|Eӆ~dHFI/q#8&hvhX,nrJ#c)3Oƪ,п[bX_zMyQ0N4cy׌v])]"2~I|9^4.s6Kㄿ|w~7xj1,JQO_g_J=Ef3mT\=M(eQ\o gE;Ȱkjؕ6@ͻ6EXq ,i e6A&bd&I̥֓*18 ^K\(^./s m~[.28^XS>KO?h]Dc\fރ^|,zb 6z0y 7 U7͍dycB#3b$2f)ro_v?n~? `΍ZLu0ф6'lj/UT_#?/Kn13Ka9:~|d9G>+g. 5v 3eMڠۗ/l'/G[6f1fK0{l8w05׉S7^h+mUFdڰI4 Z-)`>{_zONA"mϊyž_ݤ'D@" HN+WPsGbՌ7"qh_ '\T`, RڹpThѮQQPZ>S|. /Uwf= ,/ -xn¤xӺ(4=h{S q)lRNqCBG4^ WSÞ OļLwlQ2|^6܆mU r.*2 1: /Ө=gdrS$riO64F.z2 (>uፋy§%UizqU5si Kp\o"(96|WqyD g`9)(z`癮 F>#ɜo_n:$.g=)tjp+x?v2] ۀ= Sa-7WIIۃQ7œ1f1ִS`1a5_h6Fy 3cϛP}Sیa4!mI;t/>@yg腭kx|U4msOO-/-[ɦ,wcYcb_-QQ>ιݎmŔ7AsDkeM=~zJVruhA/^aFcrt~5g_lCG^Cf%3(n"O^&i!4A>+Zz|ٌkv5ۜsh\qԽ}&/@z=& zx3އ 7͹Lt4sZcexxJؾu y͌AQ -QM^ͧEjx!il=魜lwId`ʲVIl,Yzq] 3P獤;mq)~/OF} Q׌av⻝M؂,3A_ӮM{ Acԩt* ?|L{c`OY𸹗x^mϺ%t1 ʫ6؆94'/ʽ9iezKx3Bp{ y(]z!e=9]N\ݤH$錀4 jH B2*&_M~h.Z(a.r!ف, SȰk.v-2vvO#!^FG,3X]sN$ DƲLoN OӑzJ.dq!_Et$fOGxZFW2 nSlQ`Ht*x[{-늭ͥ=Ӻ#oj܏t4 {tt I 9M|y&.+.z v`a>x+1_a_?p-W<=q+ N^޴7a2yzCBdmӨHS'qўGќ7 9f|AzdlZ0J2)H#II R1WNo{7i=St]U-܊t sTO]3za਻!Ϗ#=rBL$ϱ?C #=)ۇH`b!:9'#1ĭ6~ S `U mZ?&QKK_|J?}"bZR0khgOǘyjSytnd9>yWxhm̹Ls.E:ϤFixc\S[YZ.)A6_x-9>dbA?vs{l*<xFy#j66%cN!xA2U*(#{'?at5xiezK?,)g𕒆Et|Bzeja2;tg hq?eN ay 7G}FFW2µb=i[{x B!*)q"%8A={;PTJ]ts!ӵL^tNEC2–qiޑKTE%ÿ.<uB m4 zW%vYex`nE y m)ؿX҈Y>\pĵB#qOG:#IZpymRW{iײ ]@,7#w㗈=iǽOxcJޱWۂ"-XDZ?o!=x֮u u`u|m#{D \4І>47uK@.P>LeP"+FiRmC ;a6e؝1nI[0 wa0KO$_e+k}j]2L3N5gU1f3 4w-yL@9>x\$) \`3){֢|gU]ǚϊy}6`폒Gd&Fbŏ2:i$mc _thyU{@H UynONSInk e$%8zJ8DʂF]wK0v2Y?,n ڟo9WN{Kv3^}7B>W? oަx(^&,[6!q,zJƪ, R]b#`x>>x37|->W89 Œi皞zS^?&2=+kjC|3Ğ \{~ѻ6oЌE#1M޳故˫\5\uZ xwZkMG^}F:m~6+)ǯ0F #< c/v6:+z >mI!igddzuƅIzyZ:8HG=EVk~FB|mkt߶5NJ(˅{,I&V癊lTQ`0|pt^HSS?ڢ>x;S%/=q31vMs c z#vI{]X<[F3-U㴽|eN z%2k[Ɔ$tx_wiP-PsLܙ#,ܯn¤Z5hWR΢t֧Y›:NWwOEBCLE,DRW"\󟟀1srU2Ȟ6Uj(f8׼c5yޚ+!#4U7l]WW@,ȭN >~~FF~Ct/TLǣY.D՞ 7l8"5RwN$\ J5! v!ڝd+SL:L&=NG!VBB3Jb%h۽)[#|vf=FV qZ=ӱQL'mvևTX5=C9se_kDž})˦F"+^O~x˜E{88l:Ч5rCIXt9ʀ^COL_~x'/X6!t9l[@.ͣjM'yms I/XV" H$12߯7*⯦U+/_,^,+E^t}7#b-;+-ޯ z_ؑΫs*Է?DC]&n@YEZI%'SJI.tPS6埬(#FuQ^Ep\g?QR(WZiOv>F]Ӕ*zOiT Vo 2d39+ĝk4`# |k/(t4fP޼l[z`]Vug:*iveQ=m<k#ړ><Ƒz޺ZX;2^ߨp(_ R`_ LI~_#yYeAf/4V_vK]O^g;6t5*o.01x+i:eߠLRح-|Vޤ8Λ_f7Nlq07ڑX:=[TƩUJqAX1D_3A㮆asY:_xe Ț <ܯ l i$a_)3'uRah,X6췂rYFkh::y3U"͢kJRhS<1:߶C]h{q/j50—ԁhVE2Xy[ۥ,R~Z-VE*wAëO:ӟr%ԣ8]AǬckF>pZ%$Q 8 A'׌ax[&yDW>*qGٯ(Vrڀ #x{y==W6>6hJm|!q7*G@IDAT֘kGҤ߾M+ bc9K!dj{Gҿu?OGleT{N+_Uq=cC]fA=PS]4s.4)Μel`I?-Uғ-8 ηt5V8w}3nA,kQ=f6EuGYsk:"WG,)h>_W.T4`eَzv9QG?hC_iӯ5tlk2p2iiu=ObV?yiX5='ͺ]5l׽dZw[|= u>O\l)T_{ˈ,~$>`[Eko*7nT۷+૲DJnn!ofl}qR}9im-^7܍J+En{-{EfT jӴ:2U٤R%o! #?0—iۢ 8P)9Ed%?xSm>dI#*1,X>GR2YrAzqXme+ێ/<yrWUQÇ ?d(*Z)KfҔMN#MV?e腭kkQb)cݸ'{9f%ڌKv}v-GZq;KsAdQ3<H8å@%ޥXEH<ZѨU-"^Q( !A@I6y̼;d s=g9Qi9r?.WMUWUbm^_|xnZzG œwBWtfY% T7?"%* Eޭ{%iO^K@gbόZv5izB|EϮ4ĪJYow$qvhE"lАr#J@wGQvB[r{wwY'_ݤwUяgQ_E)3czWyl9Ys]bCNSEP|d9oX] yR^|=Q,ܰCs{B՚7ML,Rl0]W%x߯\>$ԑb xY]ܮ-_،svc'8q:<9 oy PuObҘkCs=_ۤ!x^ig9CQoW}aX:4{;?7-mIJ6J^Vk=?ljO„Wo,Q_f+f,%8`? 'VC7e7~ wLϖ蔀^k:oīx̋_]gXI襤] RP*Sv$:"g5/h4iHOSֿ@ݓ5cFF~GVK:~ts /!GyŠm49]Sm S޲j0~dSz (o˽u >czڿl&V O=t7mQܼDw#p/w&yYi&,HK=IrԷQJ#P6!v]Т$K꒎=z/=w7ә-u3Tl&wuzt;-_r27ݛ.End&wq́tl0=+? ^sRFogJ%={]mx];`99df-zmw'e~rۗn6\pۊ_;s0VRPt|W?BK<*D}^:[z{/q"/;%yz,=?7MS$/z (s0Pqaq*i7_,@M}y0<~ٿA}f?i}e7U|hhh 78 ^2!8@w瞾9П}sPi| @0G |ώ o0mXo;RDŽ{h řF.d3>E/#pHZ[VEW/1wrSz8ϗǂp:3'Io_C:GF&gx|zrw3ɵ2^ǃͳ;`w;)}8hE?tIV$+_%.eٶBRGW$@,pOE>"O zϽMBf  s_f^JUL7Yf/Ȗ-9"UF3:eiXzv-PlL~e۞X(r,_OceͿؕ9{\qlKo{rO7OE9bt_+a ڽ)xlӾ^.۞_R$^MQXc0lhݳ(CFr}_1}5_E~K%j_(^}ut[UoX1o-bkb1C^B +$+\`ZUIwp׷ĸn6d)nI4ԻbJ'$}<qDLM1lsQ3lc MO+{'bEz+e% ŋ)g},CU N·^jVg;g雔p 1y~eV6bmKhwvm9xϱ2׶.6?gkuc-(|9le3>93ڱ>;eA/=Aʇ-gf>r#0ԯussTly2-|IK2Z%/ostGEG[:QoQqSwIGşM$6cg=RZrx>ڈ Tk]gR۴ùh];.3vdiSKi}wѤ7薽>8gQ 2Oe poS5T7kd9T&y=/hn KӾ;g.d6~>zqvF,t>#xŲb -cj?[َ 6.ꆌ1Saw^:W=[Lӗzr2ƤҐ/{}e4U« 0,/E{^}n9x_n7>}xn~w\ƫ]<#追 /~]Wbh {mMl}{OӋzǽNR:jhGcYeJ7H5((reSsrw*s@z4:(q;d檬rc>ة[gʸz~'sѳUƄCϾˈ?˅g8c]sGqhf `üXL&47aMάgTs`h mu8RE1vz@@@c4 U @)K=kKh)G0NqT@ XW-?es`!9<7+}!   -@T*ZL6MBTnjfY%C,thViBbZ~NGz~LH2R  M2θ hɳsiZZ^:֔W-'M[htN@;wUHy|E @Z8@B^)P r(VLD/kvv?o~IF@L]=uP~-~grъ,= Z1OPcXA @@@+@M@~WԶb^ai;jG=Q)4h u 4??`p ثk&7 -KfG4z@ޜs9   (?'hiǖ&H":ʖ _Cn~N핽VUjUna@!ЙW4A0rn3].~Y?5D[d0[    Xڲr4TXZ~.^QyǶW_C?K@YBz)ݭƊVY@3#Ё|Ų5x Gy)^O˱qszx5ɾvY(٪`e{ٷmzt* iނhܨ>Vwq rÿ0Pb_(۲\Ŕn:?jї98F"Jh0V4A@@@@@@@@Z7-_P\8:|(u{ =7a=P@k%WKM Q@K%WK(G                  @B+5@|E "|D                 -@|;kX.]0a„                 mvVhrǰhJ]vvQ-~Q̝;WMRJJJsK                 8[A„+!|E!"|D                 -_Q,4Q@ $W (G                  @B+5@|E "|D                 -_Q,4Q@ $W (G                  @B+5@|E "|D                 -_Q,4Q@ $W (G                  @B+5@|E "|D                 -_Q,4Q@ $W (G                  @B+5@|E "|D                 -_Q,4Q@ $W (G                  @B+5@Hl ݵ!kbbbtsl:vԮ}lk6J~(Chj];tH#Dd#Tp            BFZ| @C`[Q(c'vq5NbYB:z9D,R9KGQ{`ST[_Gz!eajG1t@FqW`E  XZh`Yt[],WaYmYAyrD;g 󟦪v.Nven*+i䮨I6A'_QAWщtŔPInh7_ӚrUԫOOp4rp5 ^rk_4*ti?!4K_z5.'t7|VSWЙsiOܴpRظ_Q |E>H^WS&콏?>x2gU݁U'2%JZwid ѐg?ݥ!RA            &|p4 _MN i /Fv"=mZgP٣R'!jŅ5@ןF|@‡2&+D            l @Ţ+5@@="wÉF8GnF+ΣR.Ch#TבztBw p2u۱R ѺX~1ԯ{ qWfY\؞ԯW<\TTZnA}tՐݞ:i‚B:Pv#{crL}z=?"S=uzǩG3$nh4b[ދM[19i>Exʩe҆Ng yd#ߩ璯\ /AH |_,MƘ?oN#*ͣϧMy>a|p@@@@@@@@@@@@ J x%ZQ$TU}w"Zjp.ythGb3o.$xh/čmHnOϝF7OO.Żk< IX]#*X =7h_6F_NkN\-U]#iPw?g|j|A8& W׿ }&溎(M':qu }s%rߗ>f߯i~U|p@@@@@@@@@@@@ J x%ZQ$wI[K:feR/9(f?Ѹeժѫʭ1Sxe,Yu#OSu#/X˲ujh$)W>zPNg;c}z̦yDfL @#n u=O)#̂g^yuȊ?Ck8 f|yb `,J]v JX@_!O,=W=?w:={K>qvꙛ*v8WPJ|@ @+5@@FHܿ~?(J x܃i@7IdQ{h6#my,:n*{5) ]5x",@}$k+>F]5Un0͌̎7Mbw;T!,Zp ohroS?.!Y N@ -zT|:ҍ۟^~[=V8[I?|Fs^W8|惻            MCl _Xp@EeqSek[%̄;if%4yYT" Y,ٞkCY)q&|+BMB_rt]#vh^9fw.UCwi`YE=2IR6</4@C_xV>ԓTa)+ytR>dԯ#\.=^w@tp@@@@@@@@@@@@@T- .4  v Qeu}<%:.@*-ގnF?Dz]K݇ssަ{b1wҮ~l`;4dέT:0Ź ֥(׬oӽüy/ 4q_A**9z8l]],@inh+-8W"&y!`@@@@@@@@@@@@ j z"Q$k#/{7 z-|=ymKYDeQc4?#%m-[8^:iA t-| P,|ʚF:j<{= _|y @C_l+UEь4ldW?a!e0@#૑ @tp@ B|=8ޛ8(@2eGmznb /# #q?%f^o.XO9% &/4-_Y_F)K6r^7[oU3wl%4Z_wz~V|7|@@@@@@@@@@@@  uo|E>H 2/3GWqLu KXlʧ_]I-Z Jsw h썿^62V ^zfTV4Ͻ^Vc=VdLxtƟR3C8 @E59#/m{Z7h,}޹/~GupkU$!L;3xCU`tOO"%4 Rq(+W#jB|]VQWJ'Ҹ1ӑ}ԣM|:c,['%= .nn@iara91eFD-YwЩr_}.|D,D+{5D+TW:c4AB%+PX}^?J#Rs%u3ڡwwcr^;)!*?+ w| / A@@@@@@@@@@@F'+5@@|e.=uQ7 ׫ߠ.t?'M$_J#{yZkT2ʜBv?WXdqtj튲7_//~ X\~N,M-/MZބK=8'P׹~H3hVfȔLǛ6LޕJ} %Oev$8(G A x p]]A5ԫ{*^Nx:zN]ړh{ i{suNrwA}_$7"IaU/gD:H3Ĺ]TXea֖B%TKq{R>]MB/_ A@@@@@@@@@@@I(҇(G  4+`-&_-fC ҂_ECphE-_@"F,o8'bƀ*2Ng0>ϭ14:+^I~ 󯼪jH֬ٴj?)}`a ~A@@@@@@@@@@@@ i{|52` @]m }klOz+ާ/k'0ߊ~ڿ=(O(NI ݍ_R阾}Rl\fwm-.JQf4EڐI(;_QA./K_=|L~-:ؽ @uy-9HV8&:ٺWL&2 P(u֓:5ć             ]|E?_QAZ$}`ßYgծEh:/EOt"&hd|52@C?%/ѦRW@@K@vA<!D}=:7먞ʱz]{M"rBwʊ*C,꺌N5_STﮥ}>Rq'PcRS_l=Ű?uλWcz{5̘v{-a!䮫:QGnOo??\{UUС#ty8LU] NF7۷|M, =wԧ[Oߝq(]{k+hʽ|O.&&\ 4mА! @DuJwRɮ83)Vܮ_wVΫEVTT "bŰ*ڳ}#Ū{ϱr-V^7[aԭzsΣŅjZjӤ9}j=ﹻӮ_JM){%Jtv±.;v]sE`v̠ԋSҬ0 `&PvS^QmݷR%Jn{(C帪\܏dEU,RXd9u=yה\}`x ;:X+bA{XVS[WjjX|}u,lҤįźr]PWދN2 ;ca)64"M4 4:shQk;8A]6ScbC|jbEZ:}Ա YbLBW~4hL &VP(l\Cn!l]xŲ[u~Dl)"ձLU2V}hQE ~6M8:K5@@@@@@@@@@@@+W#j{wOO/!Wz0t'P,)?z4+CW fe姞I7-`ulϒb¬y1]!;            +Zv W"8V9nN{aA|Rn86D+T]x\ʵV)^>&|9)/|E$hQ_G,ِ`ׇ>>ϡ) kN۶/mntmKF'W#/{6                 O/&Mv&C@% IEʟssik2@O希SOh9FJA@@@@@@@@@@@ZX`|E>& XQSE]c}WhK:tfWpJ n3QEK] }A.4 u$|YsU(`W}U9[RZK1Ԯsz 1&r&+ٲHm.n3sq=NO8cݛ:#Bm'B{wtHoawҟ)k"Nu d^ޜqrʤ-{f^mi>#}WY=t.!XjCfф@IDAT-uu<ci[$ k2n>MtP'm)6O;tO#R˜YS *XC nA@@@@@@@@@i@ǹ w젒:tҰy9[]y!?ius :.OxJw~KwNFtz7+;JC%Q/ ູ.Hе'?N:@KT1eЌ Bk-^ng߯KHˢyXIMivڜMPY~^}i!t t˶b]JZy?x]m؅b\zX܁FD>[ǩӶW|KvT co8>iorrCGB~xuN**"W:uD=NJO:Fw:W˖Tl}*jZ5Ϗeb: ZK]lVrI7qaYDM7~n<] )9 UMzQe,|@@@@@@@@@ pҚ2RE'[iP?̯$G)WC=E%б Gx2^ۍ&++ҩzsw"-R\^2M?1qTÿu1`8ufD4WMtK%0;XB3io*60찅qNfW1 ԭGzIEۂ5>m=xUP}Ѐ t=缾?uX|QL[{ԖHmM,ƹmMgrؿۆ{br5ǩWcNl}kG3aY]MJϦO6_,/+V-{ յD>T|M.Xe=7.yKr}4c؝(S' ૄ_i?ΚOq?Α%ƪ,+b#$Eؘf\K榢蝧磊1AraΜ1,鿢GU5MU҇rֽqn$-t;&C zAs[O=|?̃wIsU_Utw[3%j,$a6v`\hf bֺoQNLl_Kͪ.kk:zSȡW%'ҏ7EqM1)%4fW b+~uT&;M/PLsVϾ[hltYo,U\r3 6eSAi tE9d.k9"E\>]i3Y&;+T1~TQC_;}u?muvP wn:AgLμ'ڙK[橞JR5TwMN2" ׊9ژwV=t?eGe#Flf?)͒UlբN4Hpw_s>#VmGDB0mju۳'m) ;o{boJ'YGZ%z\m XAY V1mDX?vi=EU$AVN hڢ\"hIL)Cxgg9O揍VM?'\qB=P*4y>%OKR| !EfZRRx'/lRI}*̂/mQ=.˦%&&J&re8zRMZ=RNU?x]PJ|fxrXɏrf$.+$xaI17.1AyX'$@)>e/8:W/#2IJ4A_QIeˈa99Iu99xG+_) B+kAX3'tTqvD_yYU )?(\F|/JeN[xQc^|º z;+Ks'`]7}rӠ21!UXlE`+Jyh~ &sT[jqkINթ52灠,BT;سleGSiPڣiחg@K"_i&,WXQS+fJd鶲DIlA*Id?.gF";ƿ(%z  ?dAJ/9nR^s~Vdid Œd)&{!". Chl,Y#Y Dv˴{9Oed'YZ?RPus 5LC垮+@QTe/>\oYXG33SoKB8nC UE)Ee%T_}H̿Fc=Z|[Qi.}zqX 4~oX~!$;xXY"+%kcM=d+ى=>%?ovzQ/daV]E$\#1{ϒ{?VT><*dKB2%urNc'?g[l*}fXhXkZ#Y5/n+>EҹVQ58$oVmGp>y9[ Y˳<<-kW?>^!JVt"9@8j$DPd 6-}Wbɑԍs KYh|,:fWYzӇ}z8她XLdfiB&/KΏ9}_]gR|dplX(!9Bx"f!JH3gA3S ,I+19EY!6[ lr|-=۪|(mPզ,-uXN:I2jBi9H 5/ÖaE.}yFx_,.־.-N3D"#ڒ,|Y) (}s+ DZ㫖D:Gd8Ѫ k%"cVEbbHHHPv ŏ\gR} jmGMO"]CW+ȬeK,6־|$,( nR~V8-7Y '9MpKwX|qD1\|I/®#YjS~n\|M`yH˓&ԥ['>:}2p\'p[9vG;v|=1EV P=^T]X.q$dd>Z|mZȷ!~K1߶LXkk\-EK̾X+U v'sA[J-SS zofI/8Io Azl_\ R`֨Þ<&M#K|EPŧؓ)YәZ13[L6jE8I!3QK#qU3K[߸f&M"V~V|蟂)Ed,-q &Y+qb]|i/ϾB!>ʜgk \G e~QZ?SQşz5<wΝ^v[{Q/w^m鸂^ۍ&KTݜ+Vuv=ECEDt><1/2{jj艔tVq4ϟ]v׍ZίoKZ@ܜ+?M/Qyq;ZetKI< X.CWw/"qArݦƚ'Rm'AI:!L>RҟiuK%4'jv%_K*|5օjiCXcNu3{3QSL_߇ޓcc;R<ڪޛ@A JBNE_Ù2zi4+p G\Stѽ3uFUoϺYY8 z%VqKtYzbRL'Azgڹ ngiŗ|DY%dQ|( 3Wҩ{R.]sX07tJ) h^H=^vF»hdxMt|jT*NE+LzN=pwأYz^!yވ]Xy NiD`9l &n[|B⠃8z*w.htCz$΢Rfs ?^oS $5t t5IrߘL_GR)uY?zKDZyd%p 7MSė)ʇVNvsZ iZb+5?v{m/6nȜUR{ҩrxفͱϊGݐz /6}w9V&+' 9et)Cd&b_o).tx\~él?ykÀ VmR+GkG7I g, K;mz8h5ꭖ.]JC]Rvʩͩi|—H^v%i Rp\H׫ k`>1Sc #xvW%*Ȏt, 1],luIʯϯԅ TBy$u ddBD^nba-%El[ӪFzjUrINhX+2iBƇ҆lu eEUc1F3$__hL~feJktɍwIGW 'xv&ڈ_NHUU^"Jmj'@O򟼈e67g[E&%XQ? ?L#2m??{wUu GH # F" .XjjU*FKXբV-*(Z* QY"Y K@IH$$!;s瞙z0$͇03w={ݟ9GdͶjMR x}+쟂& zIုp=3cYs=6UEa'˽5<6e?­jZW^3c`w0 9zҳfUP>>uO}[v|A5o_y |]qQe+t=5+;IOm+*#(@ P(@ PCn3k֬Z8r[FWpz|i/fy3eS]̼rݩ۪-eTtUD_vV .u>l%DX- Sɯqx/W jn">/ y|V}5(i(CeµV`ciRXzvmz]zO]# 3@{!ck{]W˦Zï2>x1Uɓu]Aa>.t׹ ]>{R7i^cɹbY9#Cː]y3)(@ P(@ P(@z)Cڦ3n7F7e|jyKZNiwZQvh&;װM5wӗ!ݚ;PwO]+*+۴g_S4y]-Aa1{H^2[n_]GY#/1k4h.vp>ܷPY.uҪʼ]ka.Cv9B͓1,^iAz$cvL`eYmm%um;I{syv@]By|Ŝ/3w)-1ojewLەcv_߆x<$RTcسZƾھmB?Ib|Uo^Fzݸwyvn^}l+#o[ }V{P+-8YR2nEd}'ޓyd,-_OԬv՘ڜ5u{hߣL.~] tm33AV mSet@>Qm߿IՒ0AK?aVcy6A[7[{X{4[[:cZە ^])-I+b2w&E.oXYc i9OTj6e{Q굿sve;_oۭzs? wlS4˖`g?֪]sg&-W(;Sk'{ۤ}Nɿ9W<1ݽ$N]8(@ P(@ P(P}WVecyc]]"8Xn>=rXdQ7Wo6*]Ku46zג5xOtt)vfu} 6 _4%?c\MOһT XBIj?yW6wN~j`qz|r|ILa^e㋫n!^t(fu4]'4^N+ 6Y jtgZt`/e|m+ytIk<6)=M7\,n6mN-й\)h%+eiԷ16@kWµ*'6yhzEF0Мk#O4NuG g49(@ P(@ P(p: 49߅ޣw! uPmJ &7v={mw϶Z}1wlJ-%jq}c\ 3UZQ~sz&}ʼu^XhVed|eA(vӥ>xsmУu4WRU00Xr!6Yo$ϲ޷.U3̇%G\J_9ŶV pŌ/+s]CS|$JWUeںԩZW1fM6FuS Yinխ =/;m(Mzwp{h˪GC[^+UꥳXM#XH[6ڮڬ> Bmaz8jw= ^m;fb V' %~M[Ve[V Walϓ}l0sAރLKuKOi%:5O~)CUj'b/jumCSj_Z2O4we}={~e{ u|AgY }ߜ¤ ^AbCke}~ϜGo)lO8A[jUTk=nrX{դ nzt`ص~J SmTos)3Mo/oz}/Osok3 ~fι.Ҡ/9oCP[tKP9nb-)rukw>k>ٹoo-p?;Sk';e`o_ιbrN*~(@ P(@ P@m|51!XدUnb(ANN=Rbۢ+)/).km۠}k;9?e0sJ"9dcz&z f}vee>:ڶ`PJ 63: P ˋS~9ڴm%:u0 ]xHO$&ȱMlK2}tlQ]kQO(i2D$u!rnѺF R+q}}).`Y Xs)+|x)kaz,zySc`t aPK}N圤U(lsGPEvzVG9&yUȹHr\E83s(4A&dc|Js;"T^j_oq svɁ/{u*qǿ0W;-WSu=P?VfSN6 }i-9~(@ P(@ P곀x whժI¯-+rSG|7GV^ J@(DI'K@] p[W8ۦI4ZiN&Y|^x3 Iql<>O;N2b )@ P(@ P(@-"W'teF{ls5ֳ4= ZiV(*Q+ѵfB\im/ P$_ծ5HWp:y R(@ P(@ P%/[l3jDZ>,Į-~ODr P(@ P(@ P0+̀U̗6CK.E8\(@ P@[c~^7C|8#q`ALY;ވ >dzlOۍnDV6 q<(@ P(@ P"X >WM P(@ 4:_>CoG7Lkĭ]72kxH&ڔqΙUqcGk](|m'gWu(@ P(@ P@C`WK_)@ P(@F'*+dxz[/GwEi 4=ڟvgG5@ P(@ P(@F!3"US(@ PN xXM71tf Z H~]lVpM`r3f$H,MACbC4 eNp1peߏ'?Z30i*[ 6sHBWaeð3<$@dXB~&/7z-AvYjxhxwxxN\ggL52 `7S(@ P(@ Pa 0+ˀs(@ P@u/&*_;~OpuȻ.FϿ nFGcr?~$FWꋵi/^EIΑ} ŵ݀M`.gQPs=UxjxɵVȴV}tv&Xaj羏?&Vb/q͞}+>_47DO *x^sKw?O&/FuxۤerOl9{_܏y56-eן;CCz W P(@ P(@ 4p|EA|(@ PhtwxWUwc/z7?o~ :zu΂|m.5^\9EE%~<CoWI ]W{tX.?44k4rgāF~./OtqyGwJHu(yJFV{h?,8 o,pݛ/ǣoCn#]S1wWcJ/Y˾xp}2Wty|;}qY[V@ G_n VsVǀ/(@ P(@ P(HfWj P(@ P Gr9g]kCzt8q˰Kѣ0btw%h,ΜnY-vY_KkcƬٶ.z&Kـq8v<^ %-|nK*Ə?ǁ}Y(?%[l0a u䛿ɻ&9ˢP_k%^_NO P(@ P(@*<"US(@ PN !C/#bXt?\7 ثʗ jKprxew'-tc&Kpப\<5~$#~WZ 믶aW_e1L||Y$5U H8+_Y 4cW_8>LQd}=vHwk`WH׿||i1-9kt_o@9AgW (@ P(@ P@`W _)@ P(@F'J:  +»§F`XWW%㍘h] wMpeо3xlǚ7~k|kCήn~i3ua}] 0+pݳC GQ;3oŊucjKb-#QgcΨ'Wv,o0*,GcqFA_|a<<)Qq߱s)/|)(@ P(@ PB_,f|E(@ P@|/C+q帹q|fTb ]1[ށA_}E\VmQ@0Hc[t8iamu=:5AO/}']S)o5COpfz =yϟG3\8~ĿϿo"ե1[D`t GZt ~G>Z|g)1' P(@ P(@ 4|EA|(@ Phtb]ڣ[rc{]EGo=WusjYW>F+'F6y% KZ{g]/?\e{ ^{|k"@(CF"e0"W\ApmVJGaշɑBvhIYʌǷ㿸ϚA>F't_:>²b[` keQ{~Dၟ4Ln?xb[9] 3ѺuzNJ >܃ǃ?^慉(@ P(@ P`Wx^:5j (@ P(T ;m).A h'N&h\CnA ǃ(;QYiT$v_^7=^煉(@ P(@ PB`WV>%j (@ P((+̅xH7[Dl\gD4IM29^hv\lhtj 1MN42a(@ P(@ P@0n\CZ*BbD(@ P7/AK w5|6v$53(@ P(@ P@ 0૎`CY,BQ4(@ P@I|< +u 7(gzaK+2\>{M"Z5iD *(@ P(@ P(PW +ˀ8 (@ P(@(P{+ r7F=)(ڵ W[hѾSuRyev*B֡B-Bƞ\ס-^{ Z⽵vG6.[%3 P(@ P(@ ԩ7؇c)@ P(@ DZ@NBvRO:U{NÍq]O05DN-Dw|0JE.=xiod؁qO~VϕqqF_z `ψ37kQMc$)4QgcwHs?zw~?yR;?a rTek.yƴ+$+X J#q?gC4.9x䷰ -0< m[c/͢a1MTbd|gyG7mge9> }(MQMh"_9LE P(@ P(@ |EA|(@ PhT'+O@:SwQ8*PU^|?˟1D9deiF`H%ThviL3D5kcf͝Ì2L]m6D+O;QFz 2gNROcNi֓g}VU PӃ(h&I_L D7Kh㽥EKĶB8Ll#@FQyǜ%FU2'$ҡiYiNAWFjAKfSD4ANz@dNp#nVg%J]N -wu -=X}FTI)>^.&eWM P(@ 4h=iӻPV7`!F :u9+< ۽"U%V΢GcrA\tN$w0Z;G4He' K۹-b pq 2(@ P(@ PNN׺¯(@ PjI`q0c[U7H PL/ݯ3b0qawqs`oލ73Ԯ(@ P(@ P@$ u:A|(@ PhzTgvFsz6|ۿKZL;N_s{ Ws<R򤥯sĠ(@ P(@ Pj tV|TS(@ P(@ P(@ P(@ Pq 0+̀s(@ P(@ P(@ P(@ P `1+\5(@ P(Шb&h|d|8d֢qi4'WN"dT9%|Q(@ P(@ P'ڳ {I 3P(@ PK@b2֌-~whد_f8,9aDtEd2J԰I; P(@ P(@ H_5 @سsbb ХC'M}\}Fw H\@Xa-<7 <1:p(ޏ ۲ux +9 ft9"喝ѿ_wԐ4#+}# CDZ:*E=C(3E-y`HyX@|#A_%`ddU\ձ8VKD0+;" gVF,#\q 9 K<|۞ Bg +RWpsDິ ˥(@ P@|ihNNWaMM߷G>+Z طwDд)bc@ڵߛ|c `H.ART*zW sp4(#w-F%܂l V _'EB[MkCXǜqlϥ5+R2% S;m,ʪaOL]v7*cdE1!R m,Rا4+ צ Vj%nצg("{)4Y~t$u U{/J6C;W^:Njyv?\!#s8G+19Y߼)BQ}cظ{le2Q ĝ.JD~}qn;'g w_Xl&t\.Q_r%עi!Wn a Zv ;ᚫnuoW2_z)z^9Xʅ?OKg/[t Ų/qYSҽkgpV5j A-ngab ^xd<ͺS\ :1cSV~ "3}ǜU,^c8VeHSF6EM-TU⪽nçB~ޓԟqH8l.`?GAr%$[ tOmu/KG"~țIx^ݱvᕴ=xp~WY/F]: Wy&O] מ;k_ }kh|[\q?1 ҭsƺn;vh > <򱞁$|^}^TCv, iGBȜ=s?_b|ǞEtBZ+Hh@uOۓ^ȍkm_ɵyP~"keN\_4Opoj#\sD^j. 9m(@ P^ ?U4FDû3Fm0CW'݄x?_Gw2roۢ89[.s< 1Z 8!|{JE%1 x;m1nu Y}&Wq1yGi򉝐,U[#Q4X֖ X SFx@L=xO% ct9.PX}eC@`gQ޽PڻLC1:U,^7S~>6z7zBO6}{(OcS z/Uu+E؊_'d{/{;?ogGa̢=xsMP?:37xZ;g?n茿u~{1~۷"t4+] PUyJ¨KV˩|۞ e]\;WU=&yrX)?PSyj?~ZKeiTgj+{\(@ PuXZQT :U DZv폟]qNJûŗS4gCof++ AL({_(@,4s @N]hrS2\KH]Bn "=OKCzB͗gvKWk9__)^e:,G[L5ق/-S$ #*- yVTJnD_ j>;^^m6/`H*&=~<w1^1ayj9`\׻޲0^ 0`9J n)}#; ׿~'9G߷߸G [tkBn{{qO21K:_IK`0П_ՋvHP]nҬ|_Ƭeh<1n`ZZmHz)HuOۓJr15v?r*j>Y Ժh.&zr*]ORgzw P(@#`7kݺYrv\}@Ʋ}\ i\!m}roGw:Ky9i;,ⳍϻI+_Jc͛9YE{g%tQ=;!鎎&EY2w\f~q!&ridǶ:p'NZy'oB%QJID'AQX' yzb4zR! +.kyƲ*C]MkE.!P[J -DGWݑ8W7zVB$ei3*].҄LyΫ^&乼 } ?>R;[\xQwu 7k +uO_HX^yt f\W(åLK(EkWN>JK֛peHЀBd{nrv&saP@AiRϛFZ <䱧߃tɂ };nm#dhrٶ7bKcѬl{ (vKQ+-SJbe*_ۼd!lѱm9L*1r UgedHz^7P;8nD]3,Ykt镈tS}qӖZ>͹ڿ kA!A܀U@u˱TҲyv{qdb ds+g{ܜ5c?sc|l~s㚱l=☎]e670v^5ӏ+ߣ7.qw`nH_[~:<~/CMxg*ʌ9̒,ݵ_c{(yׇ~ЧV_b;$۬|_c|8s~!essԻvŽuOoEO㉿J8I@Ό\6.ezy4Ac (I̹}L=hKo x.i6IwךMy}qw_9_rܮk\$u腤$Q" ġa;^ٻO^PSg};uqM~IZ$e`M8 ˅ݽʾz/h>;*ۓQJ;Nr=p*PUr-{5Nu_q8yx浓;VuhWuڽOrH/j]ԧr'`HR}qOA0JH{# ㌓Gx)R"xc=~1޿׫Wf!c&Ghsn" PDM9S6EʱsR7(@ P Z`zVZ!*^wXMKbߙ/KK%,@ɣظKJ4?jH k)_7&_řdTKwˆ)xձ.7kſsN3n! '_1}Y? ?|*s $RsU4IcxY1E=֕okN&0lGY7[)>%HKdiӰcIdʧI7!T&4?}_ hvuO,^9jE-[2m602^Gcx,^Z6"z9#'V_7N #KiWMKg"._s:@G$O/OC|n{j\g8{;5zDPCgx\I:{:l;4Vno}h<¹V TktO[[y/l' yk+e?YuqMcnn/㞂/;]|3~lLe⑦sòeHpk}&kuՈH|N"nocxw^mJr.ޓ f剨sV(@ PZp$$lU$LZy\꿅/}66AVq,Tc$,a08(܎*$&!3atK 6ʍk%י 2ZJ:$J佒$˱t|<\0> 7WRG_ {ǃ;1aHG^C&9Sn-)u~,dTʹXJ:8?=RDY,X|(/rUҝ^(7y\ \&Fc?r5Hț"CHyGN#a9Ϥd#eqSgg:9\Rv^`ݜpxK} <9x |NsC)1sUH*e' YIS>c=޸$ =;72&CnR@}8jLa<10^y3 HZ%MJJ2`T1]>w~_Niٓ`ZZ]۽}6o1j`:@娦Imlu7O^#F9^(ka.0l>fleo9NY݅ɼe=cdcyf9'= RY%m>FӘAZ4& tj̫o[=eRӮeGu&1z]1P#Zsϔ x21m٧\qL|O\^lY׶>BruA1NqjzF6~u좢vqN9q$% uj fe'G [= &F=Z~${E{+v3y^ix.<שq1Rx"c 餯kq*V rnimVexV6oD.IqCjۖ3pSLѣc2^ Vmhuh8鞱@g n p ^y%d|3$ 9X .}s|u~Ӳg75E1z8~;.*L>:/щ;RϽ4]#%al: Pqτ6\ɐ)lUzX]5r4zkVX/bKε݈2{4r#Gud :Դzlr~\Wۯ[ U><^dAYz~LoLHCYDI?}vr$}珔B_8h|z!z=@F&`H+՚v]y\i]!C|=+pY{OW6,۠>'#Gx>ֽCYuí8pU{d5_wŻBOV۷V^GHs]6lLF}՛㮕3UU ^Gp~&s n>>ݞ/;xc@<EG؝ 7ªL{ran3fvU")@ Pok_aaiwP[,m,}mAګrfig?:fU^"g6Ф4y8e>SKIp-GƏLQs& 3-K-SқnMOn{0y-VNaw7{2Ϩ9ZnW6gر.cy.CW6ezmwv([?vj9i\62mUNI%h볭yק(սk!ybuͪEb(ef9PӬ<姗G~:6~;Su*1`ۘ.g]URyuw$mPμBY(L%M>c6gNgH 5oy` m;A)qVtrzʹ TW[ ;njOY4 0J[iGd2Eu+a oGrRsbS.u`+/qWuP1YuEqOrMYGK\s9Vfs9}cZ6B-pLak@}5aaS5{޵jk'wyvͫ11d5ׁӫEׯ7ϱrlgW wmO?FV7ȵPSdcC7j\ھ:ޏN+{YnKV}Preo{R7V˗i::::::xonև~mܸQ۹sk.9 cn:u3Cm`!gЦ~ swW2E.ΡiVkʯ3:.vK tKW]i<5il1\6t߫Iu%&,\Ea61iN<|oF ieő>j\A[ OijuU+r69Z˺Q+~< =: mc#ToMM}/Y*B %If+e<{r2J$]x&I_͐ߥ_JTsbK.V1E%eͅ~ .;HuޟnW~\W"UXoBZSɩ*+G[-w:P$_mny3ڲԤSqSKsJ[j̿q_]8]lYb6h~SblSZ[*݋qXaO+HG߷Kq}+W% .Xbq_-lŠL۬3&uZVmbta0P,}Lh#:mG>3W<"V/EG!|?m+}^!@bq%mP1[~uP㮆B ٗxP5Rx?hS5TvCoZ*Ot;M[S3&gDYmJIm`R*]a=_K.pcb)t$pƷL<׉݆oC>V;{b5+vAdvqbRpl, GW9"ĕgh#&:L~ޑ9ǦCߋ e4G>]n~}gȥ3؃+gb }[W HHHH PQ(֧Rzm!nc4ů.{}!zqV $ُA$ Jܺ*Lbe+D}bSpX&fQJ|l$PL׉p!vA\?uB@]\y \ֶn:Av7yC쌡֦Y=FёFGq.[i_.!޾ڽBx[aנ l\<>C[qݐI/bhhV?t)W\ȶsڧМC߳A >ǶA^D_^yGjqy_*ߜux\o`douDh_~Ezܠjl~ǷV ڒxPL+h ;/=S;>}']h`jL;~ۧ`Ms]'4J]sP Sb]D#76fg՝sXQ'c1iIWv<q7ݻn$yD~4WVyE@[ï0F4;NL9b 5\JڿU3@lMOYFнM1U0LJxxD$@$@$@  : _Wf۰,8-}>a_CFBN jP'l+ʪJԳLo9 5Ii%o7o┧OǰM [c Kŋѻm,k &,B[/*{Qԭ^YأQq.4غR¶+DQA\I|:$Q^s!knΝ\4=Y]'!b$l=-U99eRNd_U'u>޻0DYcYƩ9?H`)'JI1>mBz<] Wb])t2t.2""+ol\A%kNyy5ڿŚo>bșȝD-qŤ!i\NdIИ4]2**XzMX ZV>a!bRf%+T,\iYҲ],Qw2ъ[?۶d7Y9>Kn6wټ*ݵC+oA\<6\Ui{sgȰ^zw2%Gkg:/r4 ǰ3ڈbS&:Mq'X[z tyrrӧv-=JwRyݜHHHH|@8Wygxu~ճ+qC fyrx^'FeۙCd3[ 7O э5+N9Qބman伭MUG'dž#'<#mqG&D(.51 'Oy+^."wRЃγy<G`>Ka'sJa1Qk%O ~^ToXZݟt)1 |X73j+]A`IuS%]^kZFr3M{7S~uka[צUg;=)Wg~q&K{n*2$N$4,BWߥf+StޤwD4Zlβeox[X4:ߺV,G|5x#ږv |W,V )5.&0M% np`Ɲs:XmX!"#bx,)Xz6q<yB]ma!,MYnsEr+ g R, (=~Ğ;_ޞgmSޱ,+KZ{TxΪ~!yi ~ujhIXGdRq+9_?N-u(C]'4cWnRf!|v.mzk4E0 Z; %cuwҟtȯ:Tӷ6=˱`0z l> Z`*uݛ4g ::LׯbS5w1}~SkcL562 )11{F冟HU*wyHHHPW ~ܼ^Ԥ-;#:| =*h pӋ jP,s fȶ,# \ʜpDk5k[ tZ-zֻѷ6Mqs+M 􀼥5fDg3ʶ6*JGsPӋ+xbM`_^a GK#^Ov~`n;)Oγ*{% L9e"SDu6OKog*7No~nJ~"tsN(qUs\ox٩p<*,ПM6#ә3X? bt,H_G[KMe 7?<<{떺XǭA'( w;R/M꼛QMJM(884:X܆}2|3L㊄n/Ͽ钳 NS8U~=u%]gEX^8AO!aA? ВkdO28ne=D&2'—cI?ȉMwcOJ LrW^R.激 + Y+N__p`!igt8zrȚ9hmb.?utqL"4qt#y9%8G]xFU'OAv&32_+F+viHX &L 6PF5Ìa_}DbSUQ%9 ӟFceȃqPdWUIY%yT>me!٪  m:X:űUWFvi;vwlyْ:ْxDMi˜2,u]88t_ȶpngU%_pr;OA>ZCp< [J<"RiNQz90^'k9eo/=/Mo:A~B~'Yh_lNÖ3N)8']'+D욃;}N,dŭ{[LjVUu96M1-eQ\&Fq)KAOG=gFguybM+IyPl 5bn;I=#ƘoPoRGA&I\NQ[ ꫵY'y*=DJ` 0yqp~dLGtӺtYqU`=yxbo`]) ;dA;@ _mS|eRcA[lٸ o2FLv_v}IFt:- 2]-A[Ooy}.zv}2v=iJsܕq?$[y{\?پ htt4e2I!>)I|51.ozf>c&yQ5+~D#<-rin?xg_aӓKp#:b"c03E\ skZJol?O#'mal[2^Y|tmC v؅ˏO5n[:~[aj#TWXcsYZ1.UV4;|zy>zQb}x1*dK 6T}A:sVϤ[1MuCuZ? Bva&·_pK'h@{uLt~KƝ d'桉(8t[Jt|te?OJg#ǙHHHH J( ׏_&m¯;8PՂ/⅘}Mg'ޒ%O,[2.;OPI'酙y3fШ&׏2{n]d"8GErP_,]y?z3 ].6-all_V2iǥ tyS/=1d3,!m9 KkeIb `bYmV1PIDgi9f'heS{%fB(Vغ6 danb2]y~4g0F2 & P~ <1z(O6R]cu]̤<SC/ħ3I]pW*>E"$:)@BuyY r7'\K@ ~3#/6COZ yUzklhzg\ݳ1a%ghNeӇ.O8ȤaPb׸&Snb>Ol~W*qV>~ItM8{^F.=^u~DINx1I_+X-"dcKa-?3@PEQlI#4h@=ڟ/xk+Sh\:Mگ*ݕJǣiڟhLO>'A&Yo\=|kA?E~[.qN \KY ]e|+ n.$NG]\T{ip2guγ_NUh|u}NkܥNw:ib{ۉ[7=IWhKոxw03=;/K-u,YpOUW&c)!8ّ{yt4W,+EK뙏o c-ɖzphb-,yh< JOZ/l3UᲧaEF[q_wy܍j բ1'U8ݸ8ƸgW?c;_k^\l3h/߉@gE} ~wd7;"~zAx-a\7u,FjeNEȗݻLl_# o]3t&})MĢ/| źNƆC)H/³[E9±:h1NBKVJ/#JdlX/{H?/`)ZJ*ךh:V=^1˟%e?4q _qd~,~9 +8RÎSiNpT' /Dž[!̠2öc>yseoo<-{@Hg0|_#~풛{^{Vع+~wȯ:|qt& -/X39[LbV =L]_&g>K+WKP }^<(/O^twU(&v}'X%a~1ß$@$@$@$pk׷dfU,Z}UpD.{V'Y(_P[96ow ⧨?o u AkǪ\%o+/~8I cCDbO)V/x=[鏵ta<(ݺ\Y-=lKFuK S.[k9 ±q]kokON dȰ޳Rɔ22Dw WzoQ'OL*/Mw!rGFaCWK9E׫?aԬ kȣK09n3a(߾O γ+'˳77Gↂ+Oa=թ,x,ySn,R^:q-B$<+o@.xa~`L9VT}gp?$[pW~O2²=hIyu!&L'.bne8G.Ъ$+|::ߊOPڌK 8-Xf֨FSQ\¶)e1}Od}— ]>X8?h{pg$q&+u>Zdʵ(.vIO?H0K6݁FmI Mm4NOx??r ZވѲ%.phٰ9=U?mĬӔQTim7\z᢮e԰p*WU/淶e:j4yjt+fJOqYJlzyFeEΫR];$ .~ݜ{6:nU}Q"pspt>;z2OV7GE~WD\{dGۛhpvn>GǺ/qB5s!>Zg/^⎆\*>ĸ8΅%˦uGz\c|o\0LN, žV*L~4@"h0Bۢ2t\j\OFO}3= 9ҖI BVA Q3X`2Lg+5s#:&lgp,ye*ylWq+(t-$ʼnb]&bO{?~nxA[oazc@FNE"~:d|_قnyuDӞ|~$`%'w#MW꼮W~:)' zx %%~o t ڟ hŻSѶ@mxfʖhB[kF7?y4v2M7MNr*G+K쌱T?Xьa"hWY]=nJJ9(3q?|!">[r9fL݊`_cm,IdÎ.2.`pjOtigde-'1?=sg*7JJLH+M8 -./JVTay$ʟq˹"[ k6?tNٙ i۸΃oa[x|F <ٞϔEʼo> `~h^e&Hxgt/2=6Hz FhVZWFsX8p'n|l$u]GϿ󲊞TSE eys":3w'ĺM {l|"p_ﶸw3oDZv@{/VƜb,٧e=)e`,.j7d]wٴq+}pd@IDAT?OaÌXp5]:m<_yJ5{*>Zshو0aILRbX5;nx "گ1g ?i-ƾCψMpUu7c~'X A qH;a)N< NS*a񲑇3vm!]r]U*Z&U̫3%#dbEq,ٸ1WC͝n>~/?3X[[}qrdc5&/_cmĽ$W&b 'zz8orT#قK@zOm@g&AJXީA~ XK]ɪDzS:"Z!u.w{vD acs[%MuѨz%*g\)ixN^p>&VdebaM!V[>#>jͻ7e[Gc<8 iɊGк(Of|O8Ώŗ!bȪ/2̕MiywPtlZ9/ܕDn |yh4g)uO'+r18=CpXWvu&\]Y?jww |ٚl^d0DN:꼱-fcEi^yiL-vtY/t ~ /FKSxk|3}lGx{۶yUdb|!1鶡8E^+wC`5@db\gQY}f8]9:/m[;`L~[?i]XVμU{SnSNjμnrѩ<^ mb)14ql=yY'Ɔǵ3BJDO* [0m\N^r9Ww#[k.4Lx3^YOz5ߟ}df<uvWg3y'~wn{b=vXs== ]t J>θMDZa@O}N;9<c' {~u <_\@\s_sV̹v1O~=eFjeNnŎ?#]_﯌p­>"ߏWI P}wNbE>$Qy;NQA<2޸J~5|w$eXv֧S>x^a53FUS;@t'ϑ56?ZQ5M^c Kd-$Ju'3pYg-"=oƟ"nmrЂupkr:=c=X% o'9 ,"    /f,DGPRRH9i͚/WV2J`vIC!.6nuVHc,[R^ȑim\?2]Akթ#1 _akQ-(m1xj͍3գHY JvFP^.KM5CLヒ| "~nܴi|V¤dFhڴRvGsa 2#7֕uozNc6r BpbJ; waѴf !T%R_#h Es|چr,3,[; ֶ0E4^ZR9ݻsѠq}o*dYi)vJʅo]a@&7LCnntq + A?Q&T8Iô[2]6l ַtpsl)Z\ȘVEc&2h$A5s)-wXVʬ^8q'лlwy{^F]qWx~m?6@nk$vk< Ϙ+vig{$ \rsAmSC&MRFͦd*\)MW=VV}|17&jW`4j"@։]܁eP`NÆh Q-v ̑2W9wd;V rKCk6OIf=~A(6g-/Ö-ۥ+Ʊ7TqCWRDSJ^\8pOpY) &`ݹ8?sV>*Y/ɼ^Y;,N'-e\52vzJw+klScXj6i&klۆkri3vÌUk,    _Y, !- pvls7 kDR9xc/bM=Dͨ涵d[y (bPEG|{kDy0ٟ Ap&                jH,_YϨIHHHHHHHHHHHHHHHH+FW3j                (bQEHHHHHHHHHHHHHHHH! Xh|e>&                jH,_YϨIHHHHHHHHHHHHHHHH+FW3j                (bQEHHHHHHHHHHHHHHHH! Xh|e>&                jH,_YϨIHHHHHHHHHHHHHHHH+FW3j                (bQEHHHHHHHHHHHHHHHH! Xh|e>&                jH,_YϨIHHHHHHHHHHHHHHHH+FW3j                (bQEHHHHHHHHHHHHHHHH! Xh|e>&   $~./Gb˰(r؛ׁqVnm$vBgZ902\ >@,_YϨIHHH xcUNq𡇡PFS?كbgV \?OHHHHHHHHHHHH,§+5 $ vL7} N-?{+S{w㝿@+o-l = T rP|; dO܃so=Xxkl"~hqhDҢA7>3pD.wf;           PB+5 $ ,1bY}o?n9G__k*NfHHHHHHHHHHH+DW3j   H@ q[@ cYUnt<0ބ[@]~M~\ >I, _YϨIHHH T_FߏZ\'Lp%/_޾m >߲sQpᇠIZ&rrF~¦M[Þ|!8ֵJƭ^tfj額qdrgO_o.ƖuC0-'u@asA 1-AlR(N'           D|U"dASϓ @v$9 s$t|47q%)"<81_x5~p$L,p(4- u_Œ9*? [zyß/1ɩOyµ:\޹/_ƿlG[4pwe^ C\f4o o+qvt(dmE鄸cz}Ǟ֑/IHHHHHHHHHHHjPU5}c IHHH R|%נјyibm;/ w["ve2k+FCU,/n6rs=mSc\睁;4CϠ56hHuqXM#{ɃKYz1JrҜ'q FJ_.  @U*(AW: @ *uA7G4lz:"w)lA/Ϙ,/JD`{uwʓ㟶X9)0n^8Rumz)>c%̸<ڢ1/_e~ >A,_YϨIHHH T_FߏZ&;'Fč<&^)axvdL[f?vf> W d{we{:ʣFE >H, _YϨIHHH _#'an Bq[@KFcZTT'NOWиز$BbfosbXK/-|,HHHHHHHHHHH|e$("|FM$@$@$@ T dxB3F߁;/&"2>7}O|A7_d «k0M(,tm#s ?anb|a<폘f+^^=ZX>yt Lz0^ L^C$@$@$@$@$@$@$@$@$@$@$@  X|e>&   R|uZ Z<+#–?X,[=w=D«O/11f|kb2Ry>|-]Cο!%no+qcxg?%Isb ޭ) ޘ1 >#u1            #@WM2_I    T_#x<,y ׃\q!qiwob «nCP<&   >|jV=r:q+yBI/: @%૒' DtxHHHG`1Xj֪mNDfQ@K>Q ]cۣP3'gJ%B$@$@$@$@$@$@$@$@$@$@$@' X|e>&   $o6-}JOry#A˳.@CL5 T1 /M$@$@$@$oػgD{DVqjACQU (b=+5 TC_>9}~I&           |UŐaP H`{(^&GӶ'e             X("|FM$@$@$@Մ۷,댖g;SO=v*PF5 I$@$@$@$@$@$@$@$@$@$@$@$) 2% 2G$@$@$@$ػ?{gWn|5{cصs;"k+w|_aY^8u;O}q u59uP9ԩrPf|BM96լii\S"}~1=$@$@$@$@$@$@$@$@$@$@$@$`+U,g$@$@$@$D@[[EL1~n+#?|m|~~Ğ]o.\[DR5MT VnԪmZ"2~,(ZuE=HD\ǢIPÃRjK%_/b׎秈5bi|opӮotM^C3j #=/n=8q,n!،            %@WM:_ $ T)?mod kZjV݃5fm|B:b*MgUGW_PѰ@VR,-v nǞǝOUuR (b1SEHHH// v)Ry"6`C1Ǥ蓗 JTIUu|UTI$@$@$@id^rz7OJ|'?NӍHHHHHHHHHHHH |e/S|eJIHHH s[̂c&cȏ@ޅW @ૂ_$@$@$@$P~?)Y!!           t|U:( f3$@$@$@${bIߛ$THEUv]ȩ]m @u @WK,g$@$@$@$K@y) ^&P#'5IHHHHHHHHHHH+1J=[־>r;40@dZvd6Ǟv:ٌ݇p Ħαtr 37G^IʷwW!)%Wn^6H N=6#&,͆jgg"ڻR)^e뾕rvYa2-}&kT,j52*oDY?]`Z1XkiwEف6rnZ)ǹ2sŰppOר业bXM &  _qſ__~jcNhd v܊ ?Wߡ," srP!1ql' a޲F䝃7:Lw+I?z;>xc)JOhܸ9nu 7I0(WvGaowת~0 ; 3Ow]K{9޸/<xwJHKsx)V.g E1pѾD:7}%-2YI$O]d*+?J{ވvu. L\1^?FUnx /1&B8T|\jg*cKн\\+!t=^)Ou8+%&8> b:6qXNj|m`5.<&HH\|鲏|lw,;ů/5G~?hM{sλ 'WŴ#F<73z L}_\߻-w׽qaʿݴࡗ5Zŝ^kpgLK6bK^uBq\Ctqu%#w$w O6f b?Տ0o=,s! :]UUVl٦j>vpxۑzS}l"9`Tf9Px"Tkiܵ3u jR6 ]G>e:\ 1 di0y?A3Be_HwUAuU0J|^c%FJ$@$@UH/ֵK08R/˹λ R,r[\9 ЬYclAqG|VMP5ښ]igƖ G@,xKaQ 1O$_(|& hLt<o=x R7$\u|/_!JVbZp4{IS.:4P"?0s#f\ G#v<`#j~aow6uTe^Jy)/ TwWdE+u W Uj@.y@x`B )mhӖ$II$93w)ר#mMB.y&B|zEMoy}g!"rqtW"v^-k.u5V[#9e9 r( kIW舫^ɒLf^"p 죓ޖje~[vi|xP mObO'^.|vع}*t>"n ƽuO{Kuץ/s;1}PɫWbxSu+YȆ'nG6:k<\;TW1[1e|ڏo,ѥg/;l\J5a\,6wMՋx(6H,ڂ뱱X/@`Lz.> 61r@>N이!@R{OXB^ZtwwiJ$(,vB#콿פSy=ъmC5QX;*Ovow>DqsfGaܶt4۵r[0cim7hkWy~G1 Ц+iːh|:OY-SXyaMgDGv#/Ȫ{iʩ]nvVF6G䛗k(i6tѲґ\KomzvekY4::=H#Lj*+Ѫ [HfY"yGe} Xsf x$]x'ЙcC[kJz]+A(:iM^i|ERC}F--M 1218F[v5Ӗ-CH*uNODl/7KC\ȣO3:殺fb_#[WO/ۤs:z餓1=lo3r<]I mnttٴ'J֗uͲvzqGgT_$R$-p6ٱm.N?[8SnOĖ1eWBeʎ=tc̳rl@;>qY-o{Vɺ.[F9+$մC,q:Et'v#Q<#vhŪ\%]^uJqQmG'tfd@[⎯n~\C[Uq?DG.+gdo1ڜ(ݜ9׽ErGu^odZS ;n|g|۵=Ud}@mjl|ב`YV]L떺qaDz2G1n[Jյӓ<&j :6^+؛v a,$-k=}o~I҆__A c[>uCK9'qr_xa3}1ZbF9%[裟HǏNȈ_F+^t?(Oc ipFѪ}CGxۖ=[l1}-N+kc-[!]񤞼VڲӉfKLQxjZ\_IGN298sej Z-RJ-3?NeY["q^0LMksq]pُ)|6f&c}\k=+fFcocU&{KqK.V_JUFM=#3SWK]0ufȔM5?8`~7=#yonꢛ.>yP@.!ܶʕ/1bbrk@Ш^d}El/\(n_!Oܹ]n}-͍lHVЫGqA-lyf;>ϹL_̡7Ar-1uYuB]^76o뼏$^g_΃$/[jlD 5ڸEץ>V76Iz~['=_ϋ\Eqy2u]w+0f9qEÜg.:T[&[Ee'ÿIUnf_o:䄲=߷FK*8y~TKQM6PISGvb~S/,^L ҥKiŴӥg 6,]5,i}=|Xhģ ޻TB7^ZvN2B'ޮuokU 5,SiE,y>ɓm v5koaL./5M:ݿg/.V{xrfXݫSEKΔ/FbAyJ-ߊ̦{Dgo]Tem_!B߷:[yUS\S*k&0*2Qת߈R\}Y]k=gʢN9IZas=:^Q j+\NQk#/Jkʵ\4j6[ SDDfG] K xemkQHm;TM?*uљ\YB'_~Me^6=|zQ.[|P;p!)_[yxi[.^։[?{N7Sq^0߿_xmnɣx^p/]sxGՖ4vn;;KB_ Fk:WO}xp?\l_W:;~ZIԷ4*KcZzE2=}ME#'FQcB}K(J^s +~_?#[Ntvĭxێ~;X=vJ-?$̳ ʩ}gsd:0ta3)tI ܉ߴ ^hM5K'K1vUYSUSW0;I˻HNU2`1Vu1q9ZրX v]kf\Pw.IJyhe}|-M6쯧۶4 m&UQ/Zj;=]3@IDATɥKڷdbi2Ud0a|?[s+!yb=Ϻgd4}ד`9+obMW4V{f6"X%yV|-9.YIHWr(Z#e<$X*h_{e}JT`= D닃..&7o3@=߷FeKQM`븶60& O[뭅}FW?>^U|12.3=\Zj  {%VA_KߌQ`KiѬ ِdO|'3wrr|*WTTpЦW0 F8Y'.ܣ>Q']z1ʹLTTUIUsz+AT SrYr -q[ίWܒ[f/W~3㲤 ~Nn}.V,RKީ.˶kq |y-m];n'aJ%3\DyEEƘ[zcI[xݒ1ԲAkpT67vNUX˃D?#ZoqdC\']-zP޳ v0Ґو ˩(zʩHNmTդ_rf}*Lm+y0M eǏ6˗[_Dg1ΗE#a[d̥ Q#_ok@Py\oC`.2>0B,ml2mas3P^/1NC` oD]%>z]7t$<Ι`*6v9%-4J?1c|%]4aqKkҐ[S'u[83/כ^)8}{5j?0y[?dSM3߱K:ghz'1Ю.gSWDB_%Umkwy C2D_ ~U^I 6*ڃʪEgl?,ZjRVI64s\${D?e;TK`waP^E#rҭI eK-]pP).p_'T)<~Z&sίMsPo{uxşC"ɻ$yDɘG{,**^+h},} Jֿy4o ,\?ͦ|1G)Iaw3pܣ$ ʩZp/n\.=vhW'^{Zc$* c0o[WPraFMoeM}ƊFl,6Nf6'n72(KIڤAF7t~=YmA}(,]=]~rݪ+z2IfAU*DW_엋ɬd=>Yy7ޱso[_`.ϧ _KKlٮznuX{[#naacmx짺$n@z+<ídxq캟y҆[mcى׈6njۻ/B|eu>(iNfץdq:ɋqᅗ[âJwuo\1F.bHG\G><B28f.L? .radܜ2 # +^Gߵ2к> '%^v\1Lo\|WB9ie}J2brIV%sIVEz mpQPҾZ(/=e|9H  ̘f'{dVJ!Dgʯ^keq0׵X푅m=1N6kM6P􂜹>X&u[VF XגsKsP6&::V[Сװk?$=9 [2r}!|Ơ8T]6c)֌䘀xg=L%Џ<ưTqA.:ghcV$Kd^>㡝."[=fQ|j3z\sΕ0֤x0/|)x}Qg#X$euMy6 Եz .gx0Rz <'tr3Ƚ0]6w/i/w8MZ$ں _ m&6'n|>DXۢF.' 6J/A jFØd:B2* J|/ @eaZh~SY/gt`Yz f0Z,ï}#+ӈK̼IQi=pw2C[\Qm{AKDubgs4m`3[E>sAؗ`N[#_<_Qscv]+-OGO9c|; Uqԅq:ƗU4d!x8j'KߘC|Mks}GYV>\ d1lpl|{/+ع䓿Bu~spG9-ǚ>G=fg|uڐۙ6g \+.mU1F ;L\|}qzX %IB<ǹmi#o :{Qs>k2ńcOְv_D29?E0!Z+scjlzz>yc<= Ś/4>opmrxa u4ym J?qڼ|aQ>Jژ$sXl lg/&VXe;\($ם؅GƙB=~dqW$яRԩYK@KԷBegyy;3f4ʧxL@7e).G^fgKQz",jY%yqtt3oizVQx)XZu_*}O<*Z_V|Zz93<2XF&Ρ:d"οu\hybMOen=.OƄI,wV^W[ֶtfx2o3.x̽ίq:lGi:"Fo%ܣ"_ ʓ-kE,mOnP!s]'Ӓ M{o`R>Mex{%UkzM=[$kmwxx~ \#(mk3 [mf oeaG7$/vIZ30s۞ykʥ xQ'ũc@ƺ&ӷ4MTurk%KMmsy[qqG5Pl #|y96T]IyWuQ*1'/ti$ ΒsGx?3͚/^6wJS%ʔ3me?ULVbF8&_H=bu?c?6sJ6.+x' p@@&<__DR.׶Wwqryw<w=Rɾ H`n "d,- w2 w*55բ:0 RꚌ8kjD%3D+H Lo9zH7NUTfѝ1SnP'++HRstd|re9*ۛE, Yƙ{F[2Okd!\ֆNխ>^x=$lCYoY2go*syEZS}L#SK:ɭo,zɾ7m%іrQ^z]SN4vX Nfi<IO*NyC?2=y#K&w}@Qf,66yv]rEY*tP /]'q#Z.Iԇ_)&,^ &fo˨ 3 ~ +~[ vm\.qݗ.޵K=Gxi ~Bfu3^7['~q祷/&OM/%Nzۺt'iwI%SG~Bam.fÖ1#wB 6;#8p]t0k6yC%Pu.[8N+@m vS*ڄfs+mYr:#N?M2q<1ϗ7m+}7.K1.W[M2b, ˑ-fr}x\o\K3I_%+5zrm8svOyA.Kk*op ,i?ɫ5%Vߋ7 沇锵 9ka<=Dzn94޷pKޞKjƥP;x 'v~pNWVŁ7>glXn?J߻J<6*V@5X>Uu{ ɮY8!9 aH v+U|O Ս.>ܫgˁ7hi6I\^'n=뷴6"qco(l݃7uSr4dxǷ/y.1VoY'mwd+YqY8uac\©ga} oX=uhƋ ~_^^ ;#8p]T\¹2bØG>be54^<[$ƃkC,6[U-Q\msNtxuۦK86QݓoxNI-ζ|H6H>czS cu&n[xʢ_\(ev+^\3'i_%L߬lsO^نH_Բ~Ur4ay~yf;ٷ Pz[3jn>{{%cptZ6au? @Mm!!mÌENϮcy\FC_ix2J}'8 R,5~fq&.so<]S᪼T3 ȡ?l`RiMҁ KJI.ETVݗW5L͘ /xnƞs* qY(LQx~8NsW*|QbV.ju5܏KG}<ݸ5|4P~\?,(:/I+> y )[W,lƾ8:c O +eխ2vaˁ7S_K"{O#D5SvwUϩ_/>xi buJa}xY1,o?N%9jrkذ^00J0ɽNMquGeSt} 6WbMN.Flxcռ+g#*lyT伨צ_0#>Rh/M[ jѮz:ry:/:#3_/M;ۢLw3_rCױ|qV3beQ`]o_|@cQiFO>}uZxVU]CMpu`]ʷc9 ltX3jnc+Hݓ|iSOK:dޖqM JI>rxaT~R'6_8np,Xz͐_Qt^ɣi([@̶ѓi_^l%\ݖ;d \넹^-:[HZ.^~Xm磥c|xPz%~ATl x~q.Wbg:?}b#g(-~|pFƺwgkv*[s%M_+:?l}KП+2Ͱ.hKimn D}=oH{rt3" ;{BF|syHܞqy jż-rfeqvIbKҧ X?dyud32EW*:tuC3yc0Y-|x5w5jAf|^D?JQ&/ކ{ugsa:;B,.}e>RWtߑ%=5GA[8  @ROXB^ZtKG<4IH^t8n(և؟[7I&CE/k-AQ` 'x_{ևVv;}0]/t%.wy>Q£=(MB3tI}GBAwS/Ճ_~kjmp1&Ōux_*uE~Z}<0v,eI^ӒlR%?fGK'9UkhgI ~_g1d넺Ӳ2Xmu_2|f(񍏈%7}}3 F`k7m í<ґ !U۞cXeibA2.g,~y_~}C ^r=a=Y6e-k~owd+YqY8y2 Ҙx9YQX/σ+Bqȼ})/k<|҅yCnsI."I˫|Ne5ccO^cmBrtΤG{40*]?-?k |zhC"eR,ݠOq$ls(.&.G:Z[krJ3u]}u<%.0 F+[cZ)=FʛұLlk5QA'I~޸?j1X'.Csuߐ0/3fPGAgD% QYY)(#E~6ku?˫p2ljASTVkg}(.s>?4VeTU!ʥ.UVՉ.55[~BສƲ`LGR}a،Զ֜T-M۸$5b[u\ΜNrK˿"Ku-{sI9paƧ[Mb1RHk`޵guOuxQ}OH/7+jba02l K<8B>\ޖ􃫔e 4`$čll6Zj6 |bo;EGG]2#;,Z|vuk]/g{+NNf!Ʃs$7IpR?g} O-U&^X-1v -Go[C3p%_~}~طb7; 6'e\g1YL~?o_~|G=78,*6{i&<Ĝcq٨oqe6<\r|ٯd%2˺J3u]9Vp˩%eRnA 'dQwsԤ22\xoGSj՟i/ꌼ{R%R =V2-}{+h><7 3hM;*M,ːQh՞ŕJ%Y8'o;Y5O_rv +)X2tUmNK}ڸU[_U~Bສ=g9v)jYwqר[qIui:nkIYXn~MvݟKJC^z$Jz1Fgpz    /kT#vvp:>8|aGlhw͢cm`xkxK W2_BIkhr[~ fԛ-C>0u=]ݢ_NzGցbm=KK4xQTբwD}p>--W;<,-u@ME0Lxۼe(Rȉ&ܮI]U'T^6Z!d/',aOc\DG3碘 עuRnҫ9(;xu#sS6@Y~(/n^<9yyn)/ ޒPt6 `(a-Ɩ9T&[;"}__7IySղ>9Q{,TzѤcq?Lc/^VraAn+=z5(z:6@/m%#{R13lBޑO/.ku8q= C69QWۨ+ ϭ/5m'1|3:ۑ.?^'s@Y vro;0o;#tMok|Jq˹^>r{˖ Vw .q.0seË7rsw;m;7|nxؒ63at>.n;]Z=I#;Tc<&^ڲU+iNZt;4N]Gm[4Ti%[xnfQ>xE1MNmG7 \åt&Տ=lsή^c?exw<%[f877Sr]cɐm&G+EX2O2{P4Vz}F brI8kU<]L^~Z{s927ŠJ3u]J1(\_nHQڎ*j?eC4y~ynʤLT[$H!.=kiO>N1rCuKޞvkB-c֡=ir{\J4˗B՚ \Mdzg |1ϲ.˜qZ,drOz!cyu,9~}nYhҫj+5e9ϯm/^?x3MsS,8$}{5jN 8yD?JQf>jz}/Ǯo:#f8y?fc|| @p@@&,)o5)03²}?v/쁮'r {4cipсEbX .9a2IlC9(ٌfEM/$[+4xjQ*W^n6:<儠`b6`wXy|*Ess|.IrodƢH2 {`ɣ+E.6tyaqPWS1.t6E<\^*靖VY>eGg1IJX~փN~7-LQv9 `Z/>yj2ԍG=qpy"3u8bYlC8Y9YtS3գpfapR`d}@>mѽO: ?ӻs?|˗oluzk;߾2% 1F.{x)`쥌^ ϮbܣV0-n\AD{2Emm,"/W+n0/%[쟨2u۝ e򑬞:R憗%J¾n93ٓzkbxǪYd}Dr?CE4Y9 eFs>+ 6|GtL%nͨO (=#δ~A163K7`uEdHV%sO)Ǟ_GBoT\tK?y䱎 e ]nhg")uC)_ݲٛ0xi^BZLzk[Ct47ׁa~ؖSIݓ*hhhV&bkwXrc/`; LC*G%л]V^-Zi: &n Jұʚ̂l7U}rZ.m\̣ͱf*howzF]hi^[hnUHgtУO ~ b[z#?V/Y1ϋ~n={'/]|q/i\ZZ.OY)^{_B rf앎kgW:iL%_Q,[d\'Ҙ0y/(i)ezui f.d_Cu^~4s-<ijٟ:UcRv'IRǏS/0oM74 jxc-QpW+2G'alosó}D:d^ŕ$QcF(pee<)cOO8O_]vPOt;.p8%In1z )Kj0>.3Bޤʪ[u,:_:$mU1Wt1:QyxtZz% oZwFc.Ώև̣rSu["c-MƦr^mUK8[c46[3e ;QϼKQvc&I\6 įa97EIy/Q&$E;V{]U1xXz-)_/:[CǞY9ꎁ(Jv.]u,' \ZIU6 ѦNDXW}I _oJjt9?=g:H";q[?dʥSyY LHG[,9.^Wc7S4mW=W=   0 k '??g{sbݫ3h߾s_ҹ^Y)IN`l6m1̙>ӂifGh`l(g??7M/c͜Ђ%vmdhw1'}ߏ̷OS`35?,6IóY4sɴ̼ ш̹)CmWɛ}ô~$CpF2?7k6+u`d:SBYV623S<324@;iLPnQf|OR9$6"bfͤ~/<4FE(L9~ ,QY/?iǰ1>C-XA.q7- I9qnz%m=ti7?[锔2.>23!J0AO$FqiFTݾeuZ}Nf`.}`!g`Fُϗ=ӏő::"n}ȁZ1:-%nwdd2N=Nr[-i?=NcP{o))#9"qU?yM`Dy7>7,4z{y w~\t,.?f+~#R( f*1Nw9|,sKO_]|钤0F#͜nҏ})_y= 6b\ f'[':1ƮfV1(R :tAnٓ2[Cu'r(p&2O%m͑oc3KҷF۸)E*EQî'O1%1&QYJ<0މ  S@R{Kŋi}ӧ  @bA6*TjZ8D`#}EX :]^N{SJBņxϠ` ;_|-ߌ+ W{~?̵S$&=]^V0s"@l|.vs5nY)'ީz򫄞@S-8362I_%T|Hz}sJiBj  Djht.҅!\|j*_>p>v0&zs7? C⽯ @Q 5Y: j)u{m][_@i{Xj[/> r(Pw&JINN3K)L|0*aૄ'Hovqthv$G@&.M6߈Hմ>Y-8'['r|6ٗ큭 SNߖ@&?M?@uwKOg&)xh#Թ̩S)@xl#cW$"   3fj[90}{$GhӔ7/7ml"iO4~>}꧜k;gahjcOZǮfɖSsW#L#o]W?{(4MT xpr*@ݙʥo;ƙV4    9WΨ # 1T&p[@IDATuJZu'ٴpb:P<FnBΦc>z5uJ+_[K;wKM=p!->HO]m@AƆR <7Ӿt|%lPwљ0Μ, M4F|0  J0*!|$                  JXh0*!|$                  JXh0*!|$                 ^cUY_~"׿v""Bh)A{G|~bN.]/^L/M> Cf.|7I ɑs܄3~<'!|F*02p@|E*e|.G_%,S|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|> H_%,4|>T6W5/;^FwO%̴i41tб8SFgL JX0*!|$    0i~v?i9! FM3&MɈwC;Ѯtgǿ4c>D            %$‡W #iIA`gFz[ǟL 1k֤W12zS>ui1@            { d[0yȍۯ/gEW 4N<=f mٱFvgӂCE{?ttE> V1^N'\r$           S JX0*!|$    0)d|+/kٳwgtI{_h1)D_%,l|> ~{ͥtD'?;z m{W\;{g\)hd@@@@@@@@@@@`RW _%A@@&l_]3|C7\^E?VΤgy-~5w}т93 Ѹ&rfΙM3i7mGϤ:~DfҼ}%o͛і(͡C>>4|ɱ466:2 ivpk0            0a ૄEG   @Voh#C+ܙ. NU_not#=ƽU? Pt%?i5t$|>eڶ"k#eu=W{{˾u̻R/3f#+UUCT5r?Kn. /N            01 ૄG   @\M72i_36Ͼ7:%t9zǛUv3 ;в/M?3:_\+0'.`嗟6U {k &=-[F۪;C>.]LG*馻+e|˧`U¢W #iIA WpKG}놿ұfgtM@L?Ev hVut*v'Yj?s5D:o7:c_rΥHy%^E¸~_02yL50*aૄ4 ?/=:K>6'}zZr{7Ʋzʌ6:yӣt%jFHC ͞:ڟ*hg'H-+ t@@@@@@@@@@@,|aUBH@@@`Rz:{/__C2ZX lXI?M7]qgFWlPqz內 -FKkG3Mnx-3FPU\b?t7~\0XפPXd@@@@@@@@@@@ @_4 |%%p    fu4z,/87Rq~.Z~"ɭS9Ǿ0tW2RN?}z3huӢ/]g{uD?~>okn"k/HC>*:KS             JXJ0*!|$    0)d3~CFӵmϥW|8NZ0۹|-*m/˕3O7ņHpq'ioEye][҆e^>ek.Ψomϔ9y]6}:ѴiS@@@@@@@@@@@2|aUBH@@@`PY`ZIc#?-ύv Ӥ2RTӥՌȿ4csox>N\[y;H2Ic0%{hl<-qwuuI4i&#!͘5Ϛ)1o:#~ \GH/Z*.L80*aૄ4!0fz{iÎ޴uh=PQKzRQ35>J0i4& v)ocl7#g9Ki3<' JIL :П}:ޭ&E eӚ?znbF4            "Rૄ4 c˿L ԤO2-Wҧ~ܪrNA            { d[0yȍ#+M>=S 4OMLa :L|0*aૄ4L@0*aૄ4$0c k4y0? Ah) YIJ_%,X|>TK}Lh{1˸             JXt0*!"&=e XM0:t:lnmym{ghat)GQ';'!Zlm3뀣+O(xFвH"C== eBKdϜFSܩWV{0vZ           0I +`ߣ=Qy>DxozЬt0g|rpk7e#gGG.pS~ }!03B=GՃ:#t)G?;-?N֔f;?ZtagtSduנ4?L           '/xVӓ9tVy9-o>LJv7]gdt{F L/ى7(b :oHӭ--t LacO a;:nnr 4"~cD\@/;G|=\5znODZ"#l9GZ}+ѫ٘&P?z 1P?'*5{w'QU?!b _+iť.E#ZD)*WPXE*l! ! 23Ζ2Iř빿sϝjhW Y P(@ P(@ P(P | v=r9!N:sY6H+/R?o뇙jWWֲ7x!نl!Owk'_h:j2i:G#)Y-=PzLê9S eQA`+$H7N_g[TL૥ܳx~S8{#xM=7B^r)9޽anj{i|5 (@ P(@ P(@ ` '~Yv1(G/պ -XM_2T[ զAEM;jg{ VȰ*6ɐf#!d 0OT"46^mJ]0jpt&sn1^Wz+SXT`I 6Y`qf/ARNۄ_nC)F:[G v |e@.]d._rT`yj(+֎h[|ԅ)W"+:$vs+nP}ۋr ʺMԗ=mk/)؄]uKz>ÁB꿇/)WV|]i,۳i3B*#9p;+fݺBnW=x.+\l(.]cD,X <༶zj{38Щؼm'V\6xagy_G†ZmXvK i8tIL5P} n&M*Xϲ}ӶF݁Zhcz!=\"mC(ܴ[ G\tvr͵^ nBrQvY\;Cn[~9(Wkf^L_|~qO1`úڱg7؞Wb~ἄߧ/._([V{^Gf+$ ~q9˸Ic&Z GӀQwˁCw`vc^C{.r M 嚦Ԍ7momG׾9LtYNJ(@ P(@ P(@ 4$)'u_#(_'w'F S[-4V6+䙤3"EzPYh>WN cfj7eO1v:sbSyHOf qw C2tb\ eS!g1StRaHc8+ cʐt]הxej*2|<ܖs1yxɱp>r47#3C 9Yr|9C,CZl^5{2;VGzcA+HK-Ìr+kfLEfT`nr2cAs='.ɦ%daNex۲V!w,o9O_lW0Qזݹ؅xK[Li場Qg>$"cwuu-=-&WڵO8}[{>]iXvRM/c g+$;V}c2}=;>cV&&+|jIr୸!E]9?ھaS9]%}(-,ΏF>;paQ Z M5޾wmrtUȸ` IpYߓd,[{|p2˹aoLFW& DkAږW9|*hY(z.&?O1_Xֱ|rr }FeWH`{&'wvJ IyT+ì~]2Ҡt &۷|:+W?N o+?b)3Vp]Ak@ P(@ P(@ P_^j v^! +R0&]c {38 sf/2}a5rs7#nV?ܥ=OT_^!Yh|>ThvL^(`3{r=+gcooGdWǵCLTvٹR2cTwc\2zZ)3\agJ[$/$ecH};E{|hoOvFeRXN)X~@̹] 8CKyȐ ѻKK> 4{|'}z&rNJ3?ϵ 2CaV-av( rL^&s򴞈:Όyx:#.\'hog|qZ~AB^ҰtKXh*F=Q%4KYbeMkóG rq I%tv U}UUrBw/{eLsvytB͘z3;z:{ѲsH5>G(XzUEH |}<=cftCgSX=~PcZyT_1]o×Q{~7]].Jq[ʦ,;Ϥ=r }gHkJ}"`_a]Ӕڴe,œ5K^f>lC9 !Ompu(@ P(@ P(@ PMY/ -UݗX߽V_8cD3mHg/a|X7R]z3eé!ܽ(eHMS2=;bY/{iB {oFn}g Jҋ &IJzedz^=IoKޖlK FhJ yo|c{KnPzL !^Й5 K%$ Ie-ہ<{a?eY\}0G(3zPaC={?2W wV,#lcPJz-=xy;*g`iP4g]i24!i+g]*X'QflEqL`2tZXaş@ Jv͞WIR# =a 6P3r5@iڦrѲ[Wt%%zg[ 2T3D|:0zD zYxkqlr\$g TiO҃ 5p3*8}-S\!+pZ\ 7u|EG 8 :ۘ*zleJS]=kTwh)ߙD<~8ͣ'BߵT_W>u[1қ\ڂGw^I^ _:[WEqԤ)g%OFZlɀLz S.j յ䘕Z):#%qUҳcPi =ˏ!O~(ME_;(@ P(@ P(@ Ph |yU֪nHGG>|sӷ!C9|=ן)ۈD+[z/!fh 65cr\/]/t^Y\ӵd,۝>Kɚ.++ FG#ۿx39^Bj·j8)9kr&H%C{zt3:P55iRLNZ{!_q}9.#^F?wdjqp;"5/=|%z_g 5!)@~<{ Q/wNPj_7+^2$4sEٽ%h-ZMa,?ouQZ-s|b\^?}`A\L,ڵFQhEuW},c$,?#;y+}oMs1qeq{W[Xǡ֛e;,%3DUkׅ0J]vzy<5w~d`9mJ iGkkwzkXؿ35py>MkW\o}TD|RS.[?[=4- gϤ_V]=JO{ 페pZJH#>_zV nHǰiZyk{:40M P(@ P(@ P_^fU6C9vz#'Ě[S )@3)AfVzEޠR:ˑ`_p;^vroͲ[2o =_#Ȟ6Z'И5cQ:lt~R Hh¼G k22!wxҿ7\þI-"57N Enqxh`=KoQQl2' >n~ޱ= Ks\S wHZ8{גafPC[*=Y)BshNKy%ۥX3u]%H;ub{nmW([Μ$c|h16d\q<-7q槍w|z΅njP>}Oxy4]&B+߾!=ŖLea>ix8qºX ̉)XWd@U<أG'ȱ3Mr s5, *wGqp Cwu` P(@ P(@ P(C% ut"}V C1zh% .vIz}Vxb}nMY7̏C1WD֥J"Wۤ kWk}~^?lCXek0g5E)= OPXp,CCٱz~&LqKR7cu(+ȓ[TBo¤P"q/3e{zu\7ݽf >I+ vA Q^!Γ!_ן2=s_rBڥsZ=Gԗvxek^G#ug]'-su󜠮9w^9UݶmLm̟q;S&e㷏 [;wh9׻Iwq{W}m4w{ 8s빽VzkLP\cެ[=D8hezi2,ޱ;8/~.[u]2Dl(k :H0k֤d7${yk:-s/njpWY_y4)\[1SpB |}ܑ_܋%=_!n9vgJ2 Q؛mfދ$ҶƵydz,k|~^#\,j{jމ/H P(@ P(@ P@`˫>|9Dx0^ s(9۠м= OAۋ!_p`rnrxw.n.GfeXO^E>+-aMwB?V쐇p8,ۍ d`.8yҲ ˗Sź)P:l^%V}.0SWRS-s'z, x2f̆^ݵ))[_ T_7ݺp)M,X0+^CvuSt#V흃! W]XURe7 \=)+=pmKY,"l)3ڹ0y}S xmԜnۻ>W5\ .r.-IhnBhy^~=o7:UGZ{s*P}uz]cyF<]W8<{n_a7>~J{r^Ü XCUpRғAIl,(lw ^QmQ=Bj7kx/sNg}aӴwQATME|~SvOa |?M=OI_c|>w=|`_{v|?Z9y}p ^;kc_ ~kU[Z&7=/jX~Dakc>S1ʽ* ?P(@ P(@ P(@'W:Ye9.OHa}>Wx9wj(PEmfX4wS/0kiȕ9GIm_n758"qO:oQ4a mI3יCwds_~};~+. ?Q(@ P(@ P(@F"WErw?Cih64NVfrڄWb`u×+yf-/Oh\ N/!aj>|0,{n7FLVfx^3刊s_erWmm_^^r mzmכV%ƢYP)E3mjâ^NF=(@ P(@ P(@ P) 0UgwLW?kiNb}NvkԁpǼkO͹wkEymyos+@Ia?Z DٺyK/{iS}@$TtBKHjH&add-|S`4 `o>>v>&Rvk15<|j_`ct _n{ns;vЋ)k\^o<ν'u ;us1*ӈh["9y)3zdiu/\ yŜU51:,CeC=Ie<'TpJ{RH=b Ĩa)9D,vkIX9t+_#!F*g>?*´듡:kW@+6tmU{w#6lo"q&N+1,"uv]P؛3So`6^缃aYuuTCz(,/"񚽶HBq5\ XUQ ;m:\r eM^z 9Znj+%.?1QrϷp@c\8[~oɖ˟{i-m+%GG\I~?,[b_/i?7wk+(Ǹ_pijɎɽ!Ayw}zGU{o;i 5Gն(@ P(@ P(@ Ph |ׅh..߭7:USz k%ё |Ib 3OýltMy779zZ$+9_0kQ@~@Ӯ1KUO`xNh(GƏ0c3D#\J !~CR0ccHb㴽߭nޤ%---&=2-4c||Ec瑮peN4a 2|sCmnZB(ԫ2<3_ ?[7mCڲV w FdX)sLt]zcp&%g`ūoGy}[QY,|s>FN16.gx7Hbُ.2\Tu羹` p^O8H/ow&d[_rRxp=+/=4{#'#fGIX< $ƬG 28uZ |ɹߌO^1/r4I 1rsGxn}Xh᷶]oj WOúyf>vB9޸=,3 4b+1Z$K?^x3bx=|y״E0!~DVzVV3׵Y⹱ڏb;i[MQ;(@ P(@ P(@ Phg}dW۠&a[2,V=|9R FA{Q9w5PY2yz{UsU;sB_@/ B@d[9c.=gUJJӆRT+g00=[swciX]P?/m@/Kz,6 WY) Wwp&=BPⷴڻp9 5w7 ūg6<kf8-pH_${l/޽M1r= t(IuJ|ɺɞڲ;w~] ́op5I4~zkd.ԛR4zw(VX.j}Ziߧr] gdr͗ϼc3-I|I{v&_Uw9A2lvr 7Nzusѷ|i ڬU !==2W)rx[nm{;RH~(@ P(@ P(@ P L|9m]-ݯJx_4p l+~ZÐ71ށ.f 5F %ː9CCIˎ|hoHaPj|m9M27#2;w 3犼EHH6zr{ IEL{hw&C9>;2|<ĺ%0,,%q 1;^(ƒ)0#LaKÂyOݲ`L6/C{)0GAg)bPO yן]ly 8}<2}OuZުޛOZofa([JKtsCã=M$=P;!$Dyv[ l\ti.c͟ ׊-g' p f<n͵8K6Wbы㡙tu73N{q󃿶a/^yDmƆ`M=}:D5[M˔^ƶa'-X/AAwֶz{q8_f`/;5umkMZhmʹ½C_ƌ 5s=do}x!نl.ˤaޗgW{b5ϸďGnL,{ᷛ]̣\mxT=[-p>˿.!}8v[X褙A>2㔧q w-{۟U)DW9BnEh;A}mwc߿~yӖ'ԇơpT .5M[gj<Sv2w,â;[$=QN=f(@ P(@ P(@ Phg}+xb}v[$qQRI^QQivZ+!c@c0IQQ1iv-O=^VDGG!JߩcI YTօ 5MvhS]%{Nˎ*+gُsXU2ѻYmyt|RbZTణ v16򳗕..uۅWwjQBI圓#EN/)q:vDN%"JV];fm Njpgv/-%JڋPa`C |Il{wEJPQRR1ЮOq:0շMfJWbG\\\б gYǁ2rs1UQ(+)GtYY-ZeֆS:ܩ&<I۪h!#mFS4%8/s/ơ}8v[i7^"njlc7>ʵ\GOXA-)oN߉^Ӕ =Jdݨ6rr+pRҼe렯5wRƏ(@ P(@ P(@ PI0jd+u x53V2aN!o^Hz3zf(q 4F?x(-sH/zVlzh&Y6u.*UpH/_|Q(@ P(@ P(@ 4n"X |Ep . U{:oZ #' ,s+S 0UsT_/N]3ͫ57h/uU^b^79(@ P(@ P(@ P`+ |E#K eǹ-s)>:<Y΅N$RdHDžƐMX,=vyuOfC^޾b^Z ^8B P(@ P(@ P_4"]G@ s#3Ͻ̅75!u^(и*6!5aӝ-s'"d>𚗾b\$T6k!%WebKO_ϺCx2]b+ gR(@ P(@ P(@F%Ws()÷Թ'td8#"6; 7mJimbRFP e0oq\넞]mV_EԂ_exG~/mGO{:<(@ P(@ P(@ PMS+_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(L7?kjV_]=S qm P(@ P(@ P(@ P(@ Pxq-C:޷~zB֭ѬY3S%`.?VWC[g޼yz&LЊP(@ P(@ P(@ P(@ P P ܼ_P |"7A P(@ P(@ P(@ P(@HV6_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ P(@ P(@ P(@ P(`1A|(@ P(@ P(@ P(@ PPV_)@ 4a'[l6qQ͢.s%Hn:5rNhzVZk1~]l\C(@ P(@ P(@ P(P |1p3H(@ P GwGкMn-cbTsi?z ?ԩSH|-&^Z7H94C\۶ҦڢyE۪vT!QD 7RSAH P(@ P(@ P((`51A|@݇]qOF„ygN?{ v`ϧ{Njd9Y( r8מ@qO11 Xi)V缇 [mA(@ P(@ P(@ P5j2 1נ(@H^{O[n1t`K=.ra xbp%?r7MpQg1hHtW_̡M@G.eCd-Oqp.|0:7L P(@ P(@ P(0`=0A|@|U >xS 1LZ3:q>~})ok\0[e{c(@ P(@ P(@ 4"X |E(D|HzL_MyXu 3u!~=ෲ?#:&)@ P(@ P(@ P 0H1U<(@PV_ ]1=ӈE\񢶁5?8q hXZ '7(Z |Ѧم-"=r!/4A P(@ P(@ P_R"]Sh5 |X1Fψ0oEށ"l58d{1޳6ᔆ'PTi>>z( ?k6/,H P(@ P(@ P_V"]Sh5 |w_. sιw,B P(@ P(@ P_^"]ShaԠɈGx2ͤVxj3XbbL`C|+F|}2?*=Ɓ=:z/~m5 |Ѧe wu!n9,廾:@j E P(@ P(@ PD:a n |ĥ(@ P xp_'.įV:teĉp̮n@f+5km[*^~'f+8 sR(@ P(@ P(@ P)0Zd+5(@&*nUĨw'ɍB SJq@uxl/ 4Pkm{|8*,b-RG^ _!qqa P(@ P(@ P(Ш`1A|@7U-J&+'B\1 |%{t/t _}8a$rFk3ȡMfg2 _}8(@ P(@ P(@ 4%"X |E(D |K_Z_+rBz#!cXǺ70j M{JzCL;$B(@ P(@ P(@ PQ 0c+5(@&*0 DRu! ( JBC R2<}1t!0Uq}r}`W0J\&CoSȽz_zny0H(@ P(@ P(@ P@`+Wk PMT P+7/Jo޶ S>x :b.~7:[[e!耡w+< #XO,@b|nZ=A!y!A&U^y<=āU 55_N S(@ P(@ P(@/W똁s@WC~_d4]ڲ#~և5Ǟ…Ѝ{e\;Iʰ|}!$b<^ |yk TޘR!:~=76%!ʿJ+eӉ?D6mǏƢ2/)@ P(@ P(@ P@`+uWk PMT W>⇵Ic+e@%4nݸ0΁o|ūF E8.c_eG_ |݌Jg"AKm̡`b&t Moe[z{_. ~(@ P(@ P(@ PM^V1_)@ 4QWxzT";δ逸8Жeˎ(?TqA2: |Y |[PTea)(DǶC[ z9S(@ P(@ P(@ P 0:f+5(@&*P[a૮Wm'6 y(@ P(@ P(@ Pi 0d+5(@&*0y nc5o`roAC̼u"&$6r`g@ىr¥!i8P&<ݠQ(@ P(@ P(@ \¦(G0-gmw錶:"U+?K3gXi)JеÅ+?c{>)،  h@ʓ'Qv0?; 8(@ P(@ P(@ PI 0d+5(@&,5XTv4#<虄mc[7@P6ֆxuH >7;vK'}_(@ P(@ P(@ PM[/_)@ 3QR7j ZscFc hTOġ2:}A;6.k^Dm(@ P(@ P(@ P?k=1E (f΁C-š@LdxQ<(@ P(@ P(@ P  |E  >wM PA rcPs! P@qkp7_s(@ P(@ P(@ P(@8u=)@ P \'_|=h.C1v  ZƆIGV^y l]?iGX wWS(@ P(@ P(@ ߮k2UcBn8} *Ϝ!+wrq0¾h=cܠhv9x{jyRҾ#:?:]l7?Qj-w{s}ns|Q1 hGڐ]ڏ1MK:rPR~Rv5WrY;*ޖ58&mk ѱu[t;~nL+MiKmiJ{o~|lgb)@ P(@ P(@ P@ |*V3U(@\@ i}kQ S$HIOqEH3n-䏼ǵ5]b<\q*=;}?uR{G|>nkA3 Fb65Hтbu遁'"&*Z ?S^y=غ[ g`']q|$h [Fb[D|?Ӵt.т^%G'/S8)?vl?].ߵ2<])m gȟ*=xE[k+˻VNȟe^K_E4 P(@ P(@ P(@F"W+s! =ޏ+FB|ZAÖ֫+>zK{ <_\& ml"#@h*޵}$|= u~\;\Ц-:>WHi)wI 2ٴP%zm`B"~6pz(@ P(@ P(@ P"x0A|@8p`›/#UR7Qax$@] hA_gpnH϶6_c+1 F(@ P(@ P(@ P^V!_)@ 47?l7ۨHz柰tSy`X-o򄞸U Q{䲿{8A P(@ P(@ PjQZ uS |*)@ P@ȓFUU\t:Q~~oERFZ6ӪA;gtbkw(@ P(@ P(@ P@ 0U7W`Υ(@ P(@ P(@ P(@ P |Y=_͝Q(@ P(@ P(@ P(@ P 0*d+5(@&&P%sq *Q3򧡾q i3_ii#ǫNAщf{l[(@ P(@ P(@ P_P7Wk PMH@ UUvXqD!F.pR^ZiȺe.(@ P(@ P(@ Ph |E ~ vm/WcP`cٰUФnX/¡J'N=zL=e_c+:RuV^ҽXuDˀ+9.X ;v]çߞ<`WΕv׊< mfu<_1)׻Q]wPh.>m(Qk~'%'׬KMջ2ɿw =Lۢ|*/څ{ARB~aKE9j7$s(Pv:(@!W=9uh/Ake `ռl'W)6\ڿk/1|hPX(7#xlhPVl9fkȬqddt>v&Z=mMM<9 xD!r?.=|m/{Wwq۵(,qŵ5tbMز}QvY41Gط?$% g4Ӓ;IH@ey|֯݊]ť3>laۊ )X{-/n=w8о&@֜U_o`Z_r/k* Kr}K{yH:?p/x{6DER~O廰2Zh@ F]#YE+qk됣l75Pe ?"Pa |X_vA({粵.Ш~B?HoB?ܠWF9RA6i@*"b8XR_.F-P!Moж,\yO֤G P xT+~|r|S0;Dw?zߧſpW򽝠_|u|@XcMmpwpI2R=[Q}z4*[܊2WoMC | 2_gӒim6vN.}~5VN͖wēZñ \…gg΋0fW$݁EF~:Lί U"m*GgprOϼގ}aŖ?g_kL_C2.~2|ӥ>Z_>\#UɈMT)WَDwI"Lګ=;~Іtl/a Tf?ՓU?PuJ䆗`loGhF8Igm~'1(e}qÄYΉRlrVep,=CW&Zk#CEK^e×r+c;?f$ ǥ[h?=n9g_@O0q~oOgoVp^snEq˪/9kNEyЏfYY9z}W)U|0튞䲽gsÓjp{v9ltۗ?Ƹjn껈p|+-`WMMLe6Uۿ5: uxOE{Ο} jB*z}J2{HEڻPی+\Gаv ,M0߽Z0[2@mPwWi"rTmUsε}aշ'Dg #9?ܧ~BskUǔY>?ύpb #!guS_Қa?kyzmaIc,s$UsgU;7l+W6-💪Xhu˛󏯫{$﷾aU)u >,wVS{g*k-PUsQ@kӷ>5J,귇 t}b/k1I_uAvmwZݴ9#8[Ejj۵'횠_V{,13 yzsZNQMAT_[]ճ(Ԥgvgͮ^5CFWac_s+öW P@| c~ݾ]T{ A9Yܾpw) X&tBU3$.B PK ܼ[oUqƪ;vTܹmM/ؑ+Qp-qx?D+P_v|)m֋qS+rL/-;P++ѪC7ѝ Q)WuJ -HWٟbˮbh#u+µIG)6 {8tT~[n7Q~j)0la cǮ _ac^}-CBet1BGq(Qذr%6qv-ۋz/ʥ,mݦE\\6d.v8[u@f٬ +|{ N a6T]8PK7#0VH}|tbX.qa7pW:ν;phvl)zpЋ5v5 HI>,b/OUގ?>8Qn6Ǵ׎vsf;ڂ$E]H[#rλ{4n={C5|KsvV^:y\.v]x]EXzR{J?ǭ3Kv.α-$$7ދ_FR+j{1$h*/;p@'Or$ }mV~7zس+s7 n^s eGi\QJctYݪzpߡv2okwCI֮yt.U]^S lzJVO{wEΌ{;{a+=l-C ]=?X".~ky%wMT_&E-kq>TkM˹@IDATۨIy$SϺ#W`q+ӵd_W$ߔ)5nc\_g?.i?% 䢯cm[Ek}=;9W^=ё;>@Ҽiʏެw59/_{Ti~l՝jWn+/? Ez<9?s4\C*q[s p7Ưy}ӌs iyg7ޙumXu} f*ۮ>A^=mkBd޹I2mXv;ٔ:}}e-z>W9BDp>s{ZvYT73I$r3jpCJ8.҉Yw1N6k-1)]6K|ߤ%=Z]K!a_I'3 6HXWjX!E<%>6񹨒Un>3B1ԳpuYxIyk:}~;C:UTQz`<ݥ&gL yOzg?}[ $Wj _3GÕĈW9J^*;VVR͸—쯽#jb$ݩƎcfj|rGO{Q]P0mUTiԤRr^g7~w}Yǫ=Pꙉ/*:Y#7EϨNVy}kE4w';j;Q&LvWQ*s Ͱd38{*|\icmR~Y.-RGhH\in[IגC~QGj۪ү}2ek%+Nϫa-7M][LR>p7L6j#}$;Y^p3 -: jr2\˻3 ŦUӻ56~+LQCF}{:?2J?s4Q6zŇ>_Neƌ_y^4\@V*W_]j_r;YGs"VXuׅ|=⸘3 ̌]<716v,lF1V*k9imW?$_q' Rpn¼7,ĸꋙ/G\t,_gr&ڔyooȓu ƿF5$>_oIT,n/[=2x$ r׵f7n>xM#[ H0w}jnꛫow1ŧ\T1Y_Mn.?+2< ukψ[KѦqmo|RN9v%:J0(s4\kDw1_eJ'/+,Pj繅([;VdؗNTlUF.Ѻ_H`GROh3c u^l#y&¹IWcfL1ss`.v uh+kK z@Uyrw~o7?$.:ϓu2M\﷗ݥC^Ha0Vs1o9nc+v?ct )[<,³Ns1$Wd-in/w{^0 k..o|(]GD@c۰mh5}NE>'6li_SjX|J=ו?g+oֈ!, |~p#D!$Asz$|H;pU#@ DR5hRE|c玄O՟ʨW αk@* ͉ډ^fJ8MF@I܌2.iEy\WM vQ$Q>  fX3~|od*ԟRD!x2ZH$yWt'L:5 ̫?~!.+ ˏ3;2'G'~?aR_3E;ᅁ?u5c2`^83aan Beߦ|m5VFoߺXWWZW[_+y {pxO! (N;‚*y̵}\Ks2Iѡvl9eOs[MȻ\N5ga=CG`F2c2VV~Uh[EWb\K|D۾}1X|L="|/=Az:&/Xxx:/Œ1!5syTG86iN%bEWu1|.:Γ;XfqnTQiM޶8n"5(RO3|T)_oY̘$⦫ FȢ!Wv}(vagߠ@sĿ'KunO+UR{~.85ԡw!  [j!c)D ߟ:SSc=(wR;˅?'nN#g(󉙐2OW, W0 >&ҡ׿Sz5/y$Wd+_KlU="'86t8XL޷l25<;͂Q˻LJ e2'UBJEN=ݔ,Vc`hD1j ̌r{u{F69ҌXը\}/ >lcݢ4SCS}btڇRdSGxJGm}`jXܘ:2PP- xwOVyTZi~a#?:iùpEpbbn0ZF&>Fn;Jb;y _<_+?|UK3uwG_VCQX}] IL'rA?\Jr5A1y8%y%ĈJ8?d.i6'Λ_|~I#6qwy)h^˟E#䘢;1{_Wf{j `FW5bper/q^=WzW.U=+uf۱ESS/éUa^8D0+ =aejaeCy[B/X(1\}A!Z7W]c W6x׵2ŴlV uЧXd5~Uz\_]lK]9.%1U4gN7I 9?3~eE 9gds k~>\RJN묯u\KaeQk91`[HIG[w.`d?cI:/}`.axԃ45ј90w;ٜ:*W2'ݴqEyz޴y7{0JW]]_ qSV?I7{dkvԴWwը<+Lu?=zbv<{b>Q>P.6Ԫz_Rwe)y&ҷs1G]gW}?u bF^VS<6F㧽|Hv6Qv|Ku {rhOY7?!'g:+d۸*Sߖ"_6xd.cxbʔh9y]R]755 5aV`b:l;k0}7XY+ qT٨9wB7_YĈ)3&d7u LjEâFW+9ˮG?EcwR*vωeBw&g}9|:Y=;%zMba\߆sZ]&Sc:q,8Wflx ߨ:7_Y]wb:!yz.Ǘλ%SG 7tU$ `#&Ξz8_?_`3tFcidSUc)AAЮݓ6=\}Vɛz]]Ehjq?q*ڞi7~N>3k_  p ૦ 2|Wόqâz&*>!VzY)5o`@ $'DlϮmڋŒRzTe2NC`tZkˌ4).c-̺VŁJru)(3&ttb5+?0ӫFL%,W=6W $eP!D_ {*Sm' _΢<To K)?pl ^-͗{_ \}>2PD'eYM jl~#5xiiH] SZ /uz؎~o?|0VIEJzV=sG>}Ol`QOxX7BTO[4RIBڳ44:Hf?Oɂc?iE}-M "*ϕ76[Q B5V_W=ȫ}>eJG^8<%(s,n{Gs#sd;4rE>SMc]}U۸[J<l.&92#Km[u˛rr-SMc[/Ѫki[T5H!%'EW=#ȦӺrco,[|V]m!u7o?C7N>VMems%Մ3*|Y{:]2Mmmie5+2M^i*Ǜ3`կ@e~'ۘ{me:T+q#9k=6/BΘkjAYzD267=wu1t1fܕ5.eڳ,/tIqqlXD00aj]})ay+R'mǃw6 RRǘȩ7*vx?dF~ {8eKyV2HSoe-om)3np$\24æԥ͆E*d beg%˖^bWlg{uӮcal쏶%H#ˊ]ytV!UβXkT N_H6&@/&&dY`0 x8NU A/JtqrE 'Q: 1["]`t,$sFGVW::q+Ŗ Yjhx _crJf}|*XP)u2nxFr$lcB9i,dإW_,WJ|ܫouvRmxc.Ke};뜴Lcqc\mNyz.Jh+ͧ'0VNe֐|m}+n(6ŖS7dKA^c+c5gq<)b_~+E V6y"u L_8+޸AYv6^v;3'_6V:FʙՆҒI\e;R˺Nki%ɣ@ |մD؁/|}G,ŃX##no*`r`?p2ѼyBg@Mi5ïSt:4y ˲)8a]ī.22 ۞Ɣ)+bYUUb7q=;2mSAD]xL5;;UW5o)df{姭6y:)ʍI3_Gve5;]TC`N)G^̓Cy |\lr:;<:><%.x}t@<|Fxb?Z-Űr,$[ۓl^y- :I/SW:qerj_u Q%$e9tsj8,/c҆vVvrxeIWLK9U^/`eE[fԻd)Ĝ*T UD!~pU %yDZ[8\8iO<|Y<.6%짶:( d_觡#V~ mkeV?lhdm3^|啰€GR=v">:5Oz~yKe|W z:ތp|۾6}IݗGd?lWw1^xI턤:WSddcYȴylR=6bН1~8Eh&}_g CL8H!Ծr1d1ꮮ&k21\ .vtWlˈIy .n, | zϦ=ΏNdd s szs.!3ޗWeݤrmgC;y.3<쿓Ӻ֣꣐3bmƜH(Ч]ޤ { h [˩eaU lXTJ+vO+:G2uCڼA{49m/Zctau2']NCw̓SwiWYԓGܷ9X@ᄋSA[t (m2z&醮1!mHQX֥)6.Rנ̄Äf z䪑kƘ:ņ6;Fdz+ϫamF6{&q@6jX Uʳ?R} uZM.ގ;_W ewY2nLW 2ILs)p Odb9s"^E&O3\JFұdb9EI'?fIe}RZ_q//FlOG t7XDsgN'/laHp~7zTwo$V^$UIemjG :2ސ~q@K ja1r/*m{M3\ʟ%m2_mYcxje[zj7 G\lxq%\6),ym|/!;Dӗ VL55 ^:a[Q lp'抺M:f^k4yd3䍒@+ +L۴lCo̸zѴ2e{d s4q [fu.Y(3&Uv<nalHNZz#74a3 s"XeOqbfߠ˧pe֓w$6EU^zlWE-l f#M'`N5\Xʱ6t=G'iK=y:|L%}^g}|̰r,ev)np fM)|}n1EnJY%7[KڇY3c_/&ʒֽm$6W57_s qz#A@`@WMKgNr%W='T$+8V#BtG=;|Lق8%ӑ#]{7MXZdLw.MheoW̩9N֬tt$`5=>A=,ے9qObI ?~]`; @OhpTV({M DxӌW.J7K,X[?p@}|sϿ T7d j-Vܽ?BqH\T423yF[Y1!YFqvN}JBk7KGg!ZX'PP3Jpʒ濿'l箇ՓoX×.is%E$ߔc` у_Qϯ2͜xm zQ/'S2vӺcy*vn" ޱ xNK8>.%Om7TepyC>]?e c\@D5˅AeīRlWzQW@hRL$2x*w^IkGOuT=R~X=S-—O5A5{ǽ#qJJ3/e9:N3W/Xk|\JvX-4IJȒn Y_`[Vá]>ɾӗ"w-DZ_#=#L.cWkb6ѵ^ m)y3^+870uC1gW/~]%)YGʔi)<.&q 1 K(:Gؘs;~;;[@5i˨C?B}sBΘqj͘ g'RUWǧY.~uw6..ưz,\L6-tc1r5E(hfZ!|ixjVJ=tR,]6朇ageN{'l!u]%|ug-m5}qs`0CE?q99?V\f7 6p"-رkd4/z`>p5C5}Mu%Տ#8gN}?`F={dmoT/RiQDCfLrddQ2 ,KIP*IvF1&7 g֗(;ݹkK xI5 $!kA3fԙ eA5βOC|6ˆ'*@7ZT _iq^M6SǃձJ^Y+hi\btS_Ʀl0arJИ%_Gl뻨g  l~$,< l3. *3x|8^Y&EE]Gq\^$g1U=_vl_{ǃ`, nWtGOq?(U}o\&dl]:֑wSœz㦮pGtua@ݼY:3=}\}V:p_Uϟ:.@ QWv8+L'~=0ƶFa lĀmsmt~{F7LAg<8?Ƃ:jz-pmบq07FĘOEKYV㽢y?"@˕01f^ b>EIcI.!^OeH=2; _WAx޾BIj6xUE 0}TLp{_6nlɱ1ON{>=Q#dg8YmS*^sb$IF59ӗCQTdz"2}b=o'Z_8=j 5}01m;+--էBgȻvZUG">GꞻMs]m>ٷ,hZiq97Un5_OҘv8Efn!۵rfy|׳ɛM̸g'F̉e @-T]נ?e:fW#bb [ύnc`Wj<@0+Vʁ|\xvVJ=tUڻ;)Dm\c..Y]椛3!;똻}>4Viý1W5fH_!Uu Li?y̰Ł_Ygf=[.YIuB֟~ˀ9ԗ@e?(敇|VYz4Q~0MP\L_oӹs,UIom_Y9H˔@tC0,QՕX3<K#zvq(WC2MpxUOwpWy]Uۡ"u8;WAݤU7Gkd׍: 96*u5tK7 }H!PSG91̇Rh Oqn|eczL{_[jwcWKW/W㨱?n)+Tmo/yuz5M$jM.ձEu`wRGԭ̱1>kuPh9(Kҧ6^Nzk\h?rҵ4FpGkq#z+i].uc߿h[KMIoGlꄲ5mg>𻧷ycn6q|#LYѴ2m)v[Wщk<H=s \fL?Ic7蹅p<~\k=R#Է,ieO#D2RA_-wqK|Inv9喷$dߎtڬ~yEaYA^^Oͧ&褗8.N cLUYȜtsCw?^]8_t#y*mmfꦫ)pҎ%_#>.埳L(?mҼlEYElkJjOϣ6Ys qzoZ|fV<)hz改Rץ/ѯ[:vBlyƞXz}g憂Z]^5-)SڑE~EIX]F}Čr2: + 1IW'};<_dAN9/屿FElF%sS: EYxހa>]WJԨpz%|Of6G¤+ 3sWWLZVQXpHs,L+E~3SsQuXMj~PDꓫ1y'TN.ՠ9WޥzFLTdvOu›,:(*>^R~Ю^^®^8[Uۤ۽oxRܴ%K?~4}WϳF(R Y~U=6V1u:Ա68ZRNyLÉ2?9*VV8AF=Y 5xmAϰҫSZ?ZcO q.iYhrB:dJ h$Tcsq6vL4덏ݯ&koY>Yq7X=`gF'Kɰ ;o/_~1n7g'ǃ_Y'5+/WޤjGJ1B$uIDAT{v'bb[ujH7Q]5/| _z:9'v,n,mݶ)]{:_>=a늓s m,d|H8$.5!fq *UގaUp5Z=s3*ysՇg]}l#Jx&\g ֩۴Jv~}qTY3/9h*usy1_eƌ_yy(4+XNH[O=*ECyf3kqy͗h߾γn=xZG5ZZ,r֖XByo.[zuо{#ee6"]*hk.@.Ȝ;&͒^7kZ۝2kMN. 3gHƂj?pjW.%V{MhO>W@\9(Ծk'ciSN)yܤ]ҹ؎}Ŏ.;GY㾛x iD:WYr 컉T',]8C *edwrױ.MA+l6tth{S)vdֵLUOʠy6_1|__|;7ԕ:ʅ0V} ?"cMsdj{9o8.OcWKpү:4G WL4< sN>y* M}tErZ7>꼛k߽~<"ce,S겓\ǺdeRlIW6޹!n%M'M~??Dl! M-Ǿ&O:PKj_DUFFW*ۆc`\M_!K]ۆeC]UԹ,pq\YlbѡCh޽_JM ^:ri_\WXxѕs N;]nI]m՜/}W5+I0s"3џM,'$=|V^xv>TX@  \uZT^X[$>IN$KxGA$|c$3n{cHN:M<&FQ kT|HKFC+az]=8 7p%uWk>_9_ګ$nx.\p?{aR֗P!f0kns   uuaڳgOstSռ..`3ZٷuW\YuZQ_vmtnpNNt׍*.^#WEWfTĉ}w齿hUSV:deU>ol&!A6XVWǫ{I[Kk9A ?u vgk)*^my/WCB!s_}h/꣙][pqV%ڪ-^&u|A>MSz$Fg{jV6 ]u6[z_c   >-𵾡hW+zxe~:LuؤZyvoy} WY稱5^~lWjwAn]t`X[Gy<֛S{EPYZdu t ?$<'`@.:_89fȀF78iXr_)h;b{5D/4JJ#+WVR8oK@חNAt`5-&*}}_v LsKCkPk]ou}?j  ;-WZZ^ W觯/ '7+Սv褎j`}֛wͷ5ؠj\Ye醽vнC_U ΢a߳Vgp L@,te`YՋj_:ZqwK̟>ZyBk^Nd*o\۞.-~vg0&~,Yzh?_|#@VЯp%pޛ"޹{`F{z"s %,.# )"J`|`/|;qfN8kxe[k}ez;;p+wϫ~c kmɜRF_N޽z׭Uƫuvtזn]HeewEW:= P/#_4-}k*g"V瞧s0v]t6h /gQG~׈ү<`wjު-oktYzqC]xNn{>Pxzqfg'Vhǎ+U%Mk\ܱ}7޽r0ҠAW@"Nlʼ:2MtN,oQGNj%75 O5_9N|W^ʯᕾV*_ @kuz&ŢW>M.Ł\LoztteL8I-UZTtoyet i'|nh- bՐ鍊nG                  4-O.}^ {qV+--*opFk}=kxNwM䧝_N;:hVOyA@@@@@@@@@@@@@@@@@`M={Pkk+Ŵd%ҫ˴{Oeť-/Vx/_|O' joo_'^WBqƫ|qW B}|_ule~޽{ *Mz;PyWriWZW:n~OR_8#E^cO_5BmouW~߾_$'ll:Í_륟^+KteKteWPUYH XqRGܵJޢ)^Eky 7Я{C8?@@@@@@@@@@@@@@@@@@`hZ׫/3K DtyhuMy5v'Q|uvvз|^| G}[ihm;o䀯>v;}y                 ۅ@8L^Z A_Zv:yU:|~NJ?8O/x_Ve^IزQ֍vS&D<{                  |JY_@Y~Ekm|GN+7p.jooz Ujk|y˂`զViW ];?z+u}tþN                 ۅ@VJ/z~W/b+ʝwj 󵱱_W#g;Vh_~];8JGJ˴L+]{*w@vRgP|;ߡCў={8şF`ѹs0g %:5w_"ZZIwӯ^o.]g?/ѫgש^J+e@t;#n:Hwܶ8(#z𥫪e:ܿ. N-c'A޼j-t ȵ/%@+z^=7ӡHe^[O @耯Ç7~/_uEWVez'oyx|l.)ZYՍvZWA]W2UZZ;c7^ۯѭ3w{?x[Ўv^L$ 7l#M^ٸF/]վ.2p.-iƁanm۱:nx7qV:IB]nܿvlwQU&6؆3S.+ϽLg\\y~+aWs>OQ^W֨.*u]߸zՂ8                  lZ*x\VZ.yUu/kW6[trP̩K%(/~܃}_x6OT@@@@@@@@@@@@@@@@@@:tٳߌJ-lp].^KP ZvNr.]guD                  p_{_Z[^x%:7gOmGܻ.                  W:|Y+Buy/kOC=A@@@@@@@@@@@@@@@@@`[_zJWW:mO ʁ@ҡC _Q@@@@@@@@@@@@@@@@@W^[耯Çck 0uG_]                 *~t!u6 ~ ik@@@@@@@@@@@@@@@@@'>v                 |]*lt!=t^鸝[u6amӚ%vM;ն1*                 (eG;i׮]Fb\fggI~c|]m*\ [ZZZJk-!66&o??mF6|mF@@@@@@@@@@@@@@@@@a>,mll9z{# \to_^y^Kq-M͚BjF K/"{z^A;M</k9z%@@@@@@@@@@@@@@@@@@~J)*J4??oFڵkWKV+|0QCąpGIZͧ{zWk mo~E,o/Sou>S^^m,N+9#N}6xZy:y2}xu-'!'nio>PNkZ-z(-~]'Rj|9}\%ټia1Ym,_ y{r^ќ3G~Uw󷢯|+76A@@ ֟&    C'nᆘ3;wXtx,)ta5uZ_qq*  L@=%}}i۶oy,Qgg'رvܹ'WB%(pAIHqޫ8H tdFG>i@u/6j@:GCyU:Vʋ 1[;ڨ]y J>!VShr Uj>Ԛ*t ΣɭX >;M2rPN\:0MGA:jaC[urF֫yx#|~5;o B'{xCP8}B`aa;nr:oo9^~e$cΞ=<|pI8ۀ6hk Řt7dCꀷ͒BY^ש <?ΦQIv,m Part-of-Speech Tagger

Tagging The Part of Speech Tagger marks tokens with their corresponding word type based on the token itself and the context of the token. A token might have multiple pos tags depending on the token and the context. The OpenNLP POS Tagger uses a probability model to predict the correct pos tag out of the tag set. To limit the possible tags for a token a tag dictionary can be used which increases the tagging and runtime performance of the tagger.
POS Tagger Tool The easiest way to try out the POS Tagger is the command line tool. The tool is only intended for demonstration and testing. Download the English maxent pos model and start the POS Tagger Tool with this command: The POS Tagger now reads a tokenized sentence per line from stdin. Copy these two sentences to the console: The POS Tagger will now echo the sentences with pos tags to the console: The tag set used by the English pos model is the Penn Treebank tag set.
POS Tagger API The POS Tagger can be embedded into an application via its API. First the pos model must be loaded into memory from disk or another source. In the sample below it is loaded from disk. After the model is loaded the POSTaggerME can be instantiated. The POS Tagger instance is now ready to tag data. It expects a tokenized sentence as input, which is represented as a String array, each String object in the array is one token. The following code shows how to determine the most likely pos tag sequence for a sentence. The tags array contains one part-of-speech tag for each token in the input array. The corresponding tag can be found at the same index as the token has in the input array. The confidence scores for the returned tags can be easily retrieved from a POSTaggerME with the following method call: The call to probs is stateful and will always return the probabilities of the last tagged sentence. The probs method should only be called when the tag method was called before, otherwise the behavior is undefined. Some applications need to retrieve the n-best pos tag sequences and not only the best sequence. The topKSequences method is capable of returning the top sequences. It can be called in a similar way as tag. Each Sequence object contains one sequence. The sequence can be retrieved via Sequence.getOutcomes() which returns a tags array and Sequence.getProbs() returns the probability array for this sequence.
Training The POS Tagger can be trained on annotated training material. The training material is a collection of tokenized sentences where each token has the assigned part-of-speech tag. The native POS Tagger training material looks like this: Each sentence must be in one line. The token/tag pairs are combined with "_". The token/tag pairs are whitespace separated. The data format does not define a document boundary. If a document boundary should be included in the training material it is suggested to use an empty line. The Part-of-Speech Tagger can either be trained with a command line tool, or via an training API.
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. Usage of the tool: The following command illustrates how an English part-of-speech model can be trained:
Training API The Part-of-Speech Tagger training API supports the training of a new pos model. Basically three steps are necessary to train it: The application must open a sample data stream Call the POSTagger.train method Save the POSModel to a file The following code illustrates that: lineStream = new PlainTextByLineStream(dataIn, StandardCharsets.UTF_8); ObjectStream sampleStream = new WordTagSampleStream(lineStream); model = POSTaggerME.train("en", sampleStream, TrainingParameters.defaultParams(), null, null); }]]> The above code performs the first two steps, opening the data and training the model. The trained model must still be saved into an OutputStream, in the sample below it is written into a file.
Tag Dictionary The tag dictionary is a word dictionary which specifies which tags a specific token can have. Using a tag dictionary has two advantages, inappropriate tags can not been assigned to tokens in the dictionary and the beam search algorithm has to consider less possibilities and can search faster. The dictionary is defined in an xml format and can be created and stored with the POSDictionary class. Please for now checkout the javadoc and source code of that class. Note: The format should be documented and sample code should show how to use the dictionary. Any contributions are very welcome. If you want to contribute please contact us on the mailing list or comment on the jira issue OPENNLP-287.
Evaluation The built-in evaluation can measure the accuracy of the pos tagger. The accuracy can be measured on a test data set or via cross validation.
Evaluation Tool There is a command line tool to evaluate a given model on a test data set. The following command shows how the tool can be run: This will display the resulting accuracy score, e.g.: There is a command line tool for cross-validation of the test data set. The following command shows how the tool can be run: This will display the resulting accuracy score, e.g.:
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/css/opennlp-docs.css0100664 0001750 0001750 00000003314 14135770370 026032 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ body { margin-top: 1em; margin-bottom: 1em; margin-left: 16%; margin-right: 8% } h1, h2, h3, h4, div.toc { color: #006699; } div.legalnotice { max-width: 450px; } pre.programlisting, pre.screen, pre.literallayout { border: 1px dashed #006699; background-color: #EEE; } /* * Java syntax highlighting with eclipse default colors * and default font-style */ pre.programlisting .hl-keyword { color: #7F0055; font-weight: bold; } /* Seems to be broken, override red inline style of hl-string */ pre.programlisting .hl-string, pre.programlisting b.hl-string i[style]{ color: #2A00FF !important; } pre.programlisting .hl-tag { color: #3F7F7F; } pre.programlisting .hl-comment { color: #3F5F5F; font-style: italic; } pre.programlisting .hl-multiline-comment { color: #3F5FBF; font-style: italic; } pre.programlisting .hl-value { color: #2A00FF; } pre.programlisting .hl-attribute { color: #7F007F; } apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/extension.xml0100664 0001750 0001750 00000005375 14135770370 024676 0ustar00jeffjeff0000000 0000000 Extending OpenNLP In OpenNLP extension can be used to add new functionality and to heavily customize an existing component. Most components define a factory class which can be implemented to customize the creation of it. And some components allow to add new feature generators.
Writing an extension In many places it is possible to pass in an extension class name to customize some aspect of OpenNLP. The implementation class needs to implement the specified interface and should have a public no-argument constructor.
Running in an OSGi container The traditional way of loading an extension via Class.forName does not work in an OSGi environment because the class paths of the OpenNLP Tools and extension bundle are isolated. OSGi uses services to provide functionality from one bundle to another. The extension bundle must register its extensions as services so that the OpenNLP tools bundle can use them. The following code illustrates how that can be done: props = new Hashtable(); props.put(ExtensionServiceKeys.ID, "org.test.SuperTokenizer"); context.registerService(Tokenizer.class.getName(), new org.test.SuperTokenizer(), props);]]> The service OpenNLP is looking for might not be (yet) available. In this case OpenNLP waits until a timeout is reached. If loading the extension fails an ExtensionNotLoadedException is thrown. This exception is also thrown when the thread is interrupted while it is waiting for the extension, the interrupted flag will be set again and the calling code has a chance to handle it.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/uima-integration.xml0100664 0001750 0001750 00000012547 14135770370 026135 0ustar00jeffjeff0000000 0000000 UIMA Integration The UIMA Integration wraps the OpenNLP components in UIMA Analysis Engines which can be used to automatically annotate text and train new OpenNLP models from annotated text.
Running the pear sample in CVD The Cas Visual Debugger is shipped as part of the UIMA distribution and is a tool which can run the OpenNLP UIMA Annotators and display their analysis results. The source distribution comes with a script which can create a sample UIMA application. Which includes the sentence detector, tokenizer, pos tagger, chunker and name finders for English. This sample application is packaged in the pear format and must be installed with the pear installer before it can be run by CVD. Please consult the UIMA documentation for further information about the pear installer. The OpenNLP UIMA pear file must be build manually. First download the source distribution, unzip it and go to the apache-opennlp/opennlp folder. Type "mvn install" to build everything. Now build the pear file, go to apache-opennlp/opennlp-uima and build it as shown below. Note the models will be downloaded from the old SourceForge repository and are not licensed under the AL 2.0. After the pear is installed start the Cas Visual Debugger shipped with the UIMA framework. And click on Tools -> Load AE. Then select the opennlp.uima.OpenNlpTextAnalyzer_pear.xml file in the file dialog. Now enter some text and start the analysis engine with "Run -> Run OpenNLPTextAnalyzer". Afterwards the results will be displayed. You should see sentences, tokens, chunks, pos tags and maybe some names. Remember the input text must be written in English.
Further Help For more information about how to use the integration please consult the javadoc of the individual Analysis Engines and checkout the included xml descriptors. TODO: Extend this documentation with information about the individual components. If you want to contribute please contact us on the mailing list or comment on the jira issue OPENNLP-49.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/cli.xml0100664 0001750 0001750 00000336101 14135770370 023423 0ustar00jeffjeff0000000 0000000 The Command Line Interface This section details the available tools and parameters of the Command Line Interface. For a introduction in its usage please refer to .
Doccat
Doccat Learned document categorizer
DoccatTrainer Trainer for the learnable document categorizer The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
DoccatEvaluator Measures the performance of the Doccat model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
DoccatCrossValidator K-fold cross validator for the learnable Document Categorizer The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
DoccatConverter Converts leipzig data format to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
Langdetect
LanguageDetector Learned language detector
LanguageDetectorTrainer Trainer for the learnable language detector The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used sentencesPerSample sentencesPerSample No Number of sentences per sample samplesPerLanguage samplesPerLanguage No Number of samples per language encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
LanguageDetectorConverter Converts leipzig data format to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used sentencesPerSample sentencesPerSample No Number of sentences per sample samplesPerLanguage samplesPerLanguage No Number of samples per language encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
LanguageDetectorCrossValidator K-fold cross validator for the learnable Language Detector The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used sentencesPerSample sentencesPerSample No Number of sentences per sample samplesPerLanguage samplesPerLanguage No Number of samples per language encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
LanguageDetectorEvaluator Measures the performance of the Language Detector model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription leipzig sentencesDir sentencesDir No Dir with Leipig sentences to be used sentencesPerSample sentencesPerSample No Number of sentences per sample samplesPerLanguage samplesPerLanguage No Number of samples per language encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
Dictionary
DictionaryBuilder Builds a new dictionary
Tokenizer
SimpleTokenizer Character class tokenizer
TokenizerME Learnable tokenizer
TokenizerTrainer Trainer for the learnable tokenizer The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) detokenizer dictionary No Specifies the file with detokenizer dictionary. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllu data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
TokenizerMEEvaluator Evaluator for the learnable tokenizer The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) detokenizer dictionary No Specifies the file with detokenizer dictionary. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllu data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
TokenizerCrossValidator K-fold cross validator for the learnable tokenizer The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) detokenizer dictionary No Specifies the file with detokenizer dictionary. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllu data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
TokenizerConverter Converts foreign data formats (irishsentencebank,ad,pos,conllx,namefinder,parse,conllu) to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) detokenizer dictionary No Specifies the file with detokenizer dictionary. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllu data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
DictionaryDetokenizer
Sentdetect
SentenceDetector Learnable sentence detector
SentenceDetectorTrainer Trainer for the learnable sentence detector The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. includeTitles includeTitles Yes If true will include sentences marked as headlines. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. moses data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conllu sentencesPerSample sentencesPerSample No Number of sentences per sample data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. letsmt detokenizer dictionary Yes Specifies the file with detokenizer dictionary. data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
SentenceDetectorEvaluator Evaluator for the learnable sentence detector The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. includeTitles includeTitles Yes If true will include sentences marked as headlines. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. moses data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conllu sentencesPerSample sentencesPerSample No Number of sentences per sample data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. letsmt detokenizer dictionary Yes Specifies the file with detokenizer dictionary. data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
SentenceDetectorCrossValidator K-fold cross validator for the learnable sentence detector The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. includeTitles includeTitles Yes If true will include sentences marked as headlines. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. moses data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conllu sentencesPerSample sentencesPerSample No Number of sentences per sample data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. letsmt detokenizer dictionary Yes Specifies the file with detokenizer dictionary. data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
SentenceDetectorConverter Converts foreign data formats (irishsentencebank,ad,pos,conllx,namefinder,parse,moses,conllu,letsmt) to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription irishsentencebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. includeTitles includeTitles Yes If true will include sentences marked as headlines. pos data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. namefinder data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. detokenizer dictionary No Specifies the file with detokenizer dictionary. moses data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conllu sentencesPerSample sentencesPerSample No Number of sentences per sample data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. letsmt detokenizer dictionary Yes Specifies the file with detokenizer dictionary. data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
Namefind
TokenNameFinder Learnable name finder
TokenNameFinderTrainer Trainer for the learnable name finder The supported formats and arguments are: FormatArgumentValueOptionalDescription evalita lang it No types per,loc,org,gpe No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) conll03 lang eng|deu No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. bionlp2004 types DNA,protein,cell_type,cell_line,RNA No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conll02 lang spa|nld No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. muc6 tokenizerModel modelFile No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No brat tokenizerModel modelFile Yes ruleBasedTokenizer name Yes annotationConfig annConfFile No bratDataDir bratDataDir No Location of brat data dir recursive value Yes sentenceDetectorModel modelFile Yes
TokenNameFinderEvaluator Measures the performance of the NameFinder model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription evalita lang it No types per,loc,org,gpe No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) conll03 lang eng|deu No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. bionlp2004 types DNA,protein,cell_type,cell_line,RNA No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conll02 lang spa|nld No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. muc6 tokenizerModel modelFile No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No brat tokenizerModel modelFile Yes ruleBasedTokenizer name Yes annotationConfig annConfFile No bratDataDir bratDataDir No Location of brat data dir recursive value Yes sentenceDetectorModel modelFile Yes
TokenNameFinderCrossValidator K-fold cross validator for the learnable Name Finder The supported formats and arguments are: FormatArgumentValueOptionalDescription evalita lang it No types per,loc,org,gpe No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) conll03 lang eng|deu No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. bionlp2004 types DNA,protein,cell_type,cell_line,RNA No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conll02 lang spa|nld No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. muc6 tokenizerModel modelFile No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No brat tokenizerModel modelFile Yes ruleBasedTokenizer name Yes annotationConfig annConfFile No bratDataDir bratDataDir No Location of brat data dir recursive value Yes sentenceDetectorModel modelFile Yes
TokenNameFinderConverter Converts foreign data formats (evalita,ad,conll03,bionlp2004,conll02,muc6,ontonotes,brat) to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription evalita lang it No types per,loc,org,gpe No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. splitHyphenatedTokens split Yes If true all hyphenated tokens will be separated (default true) conll03 lang eng|deu No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. bionlp2004 types DNA,protein,cell_type,cell_line,RNA No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. conll02 lang spa|nld No types per,loc,org,misc No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. muc6 tokenizerModel modelFile No data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No brat tokenizerModel modelFile Yes ruleBasedTokenizer name Yes annotationConfig annConfFile No bratDataDir bratDataDir No Location of brat data dir recursive value Yes sentenceDetectorModel modelFile Yes
CensusDictionaryCreator Converts 1990 US Census names into a dictionary
Postag
POSTagger Learnable part of speech tagger
POSTaggerTrainer Trains a model for the part-of-speech tagger The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. expandME expandME Yes Expand multiword expressions. includeFeatures includeFeatures Yes Combine POS Tags with word features, like number and gender. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
POSTaggerEvaluator Measures the performance of the POS tagger model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. expandME expandME Yes Expand multiword expressions. includeFeatures includeFeatures Yes Combine POS Tags with word features, like number and gender. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
POSTaggerCrossValidator K-fold cross validator for the learnable POS tagger The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. expandME expandME Yes Expand multiword expressions. includeFeatures includeFeatures Yes Combine POS Tags with word features, like number and gender. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
POSTaggerConverter Converts foreign data formats (ad,conllx,parse,ontonotes,conllu) to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. data sampleData No Data to be used, usually a file name. expandME expandME Yes Expand multiword expressions. includeFeatures includeFeatures Yes Combine POS Tags with word features, like number and gender. conllx data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. parse data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used. ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
Lemmatizer
LemmatizerME Learnable lemmatizer
LemmatizerTrainerME Trainer for the learnable lemmatizer The supported formats and arguments are: FormatArgumentValueOptionalDescription conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
LemmatizerEvaluator Measures the performance of the Lemmatizer model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription conllu tagset tagset Yes U|x u for unified tags and x for language-specific part-of-speech tags data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
Chunker
ChunkerME Learnable chunker
ChunkerTrainerME Trainer for the learnable chunker The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. end end Yes Index of last sentence start start Yes Index of first sentence data sampleData No Data to be used, usually a file name.
ChunkerEvaluator Measures the performance of the Chunker model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. end end Yes Index of last sentence start start Yes Index of first sentence data sampleData No Data to be used, usually a file name.
ChunkerCrossValidator K-fold cross validator for the chunker The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. end end Yes Index of last sentence start start Yes Index of first sentence data sampleData No Data to be used, usually a file name.
ChunkerConverter Converts ad data format to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription ad encoding charsetName No Encoding for reading and writing text, if absent the system default is used. lang language No Language which is being processed. end end Yes Index of last sentence start start Yes Index of first sentence data sampleData No Data to be used, usually a file name.
Parser
Parser Performs full syntactic parsing
ParserTrainer Trains the learnable parser The supported formats and arguments are: FormatArgumentValueOptionalDescription ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No frenchtreebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
ParserEvaluator Measures the performance of the Parser model with the reference data The supported formats and arguments are: FormatArgumentValueOptionalDescription ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No frenchtreebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
ParserConverter Converts foreign data formats (ontonotes,frenchtreebank) to native OpenNLP format The supported formats and arguments are: FormatArgumentValueOptionalDescription ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No frenchtreebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
BuildModelUpdater Trains and updates the build model in a parser model The supported formats and arguments are: FormatArgumentValueOptionalDescription ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No frenchtreebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
CheckModelUpdater Trains and updates the check model in a parser model The supported formats and arguments are: FormatArgumentValueOptionalDescription ontonotes ontoNotesDir OntoNotes 4.0 corpus directory No frenchtreebank data sampleData No Data to be used, usually a file name. encoding charsetName Yes Encoding for reading and writing text, if absent the system default is used.
TaggerModelReplacer Replaces the tagger model in a parser model
Entitylinker
EntityLinker Links an entity to an external data set
Languagemodel
NGramLanguageModel Gives the probability and most probable next token(s) of a sequence of tokens in a language model
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/machine-learning.xml0100664 0001750 0001750 00000012466 14135770370 026062 0ustar00jeffjeff0000000 0000000 Machine Learning
Maximum Entropy To explain what maximum entropy is, it will be simplest to quote from Manning and Schutze* (p. 589): Maximum entropy modeling is a framework for integrating information from many heterogeneous information sources for classification. The data for a classification problem is described as a (potentially large) number of features. These features can be quite complex and allow the experimenter to make use of prior knowledge about what types of informations are expected to be important for classification. Each feature corresponds to a constraint on the model. We then compute the maximum entropy model, the model with the maximum entropy of all the models that satisfy the constraints. This term may seem perverse, since we have spent most of the book trying to minimize the (cross) entropy of models, but the idea is that we do not want to go beyond the data. If we chose a model with less entropy, we would add `information' constraints to the model that are not justified by the empirical evidence available to us. Choosing the maximum entropy model is motivated by the desire to preserve as much uncertainty as possible. So that gives a rough idea of what the maximum entropy framework is. Don't assume anything about your probability distribution other than what you have observed. On the engineering level, using maxent is an excellent way of creating programs which perform very difficult classification tasks very well. For example, precision and recall figures for programs using maxent models have reached (or are) the state of the art on tasks like part of speech tagging, sentence detection, prepositional phrase attachment, and named entity recognition. On the engineering level, an added benefit is that the person creating a maxent model only needs to inform the training procedure of the event space, and need not worry about independence between features. While the authors of this implementation of maximum entropy are generally interested using maxent models in natural language processing, the framework is certainly quite general and useful for a much wider variety of fields. In fact, maximum entropy modeling was originally developed for statistical physics. For a very in-depth discussion of how maxent can be used in natural language processing, try reading Adwait Ratnaparkhi's dissertation. Also, check out Berger, Della Pietra, and Della Pietra's paper A Maximum Entropy Approach to Natural Language Processing, which provides an excellent introduction and discussion of the framework. *Foundations of statistical natural language processing . Christopher D. Manning, Hinrich Schutze. Cambridge, Mass. : MIT Press, c1999.
Implementation We have tried to make the opennlp.maxent implementation easy to use. To create a model, one needs (of course) the training data, and then implementations of two interfaces in the opennlp.maxent package, EventStream and ContextGenerator. These have fairly simple specifications, and example implementations can be found in the OpenNLP Tools preprocessing components. We have also set in place some interfaces and code to make it easier to automate the training and evaluation process (the Evalable interface and the TrainEval class). It is not necessary to use this functionality, but if you do you'll find it much easier to see how well your models are doing. The opennlp.grok.preprocess.namefind package is an example of a maximum entropy component which uses this functionality. We have managed to use several techniques to reduce the size of the models when writing them to disk, which also means that reading in a model for use is much quicker than with less compact encodings of the model. This was especially important to us since we use many maxent models in the Grok library, and we wanted the start up time and the physical size of the library to be as minimal as possible. As of version 1.2.0, maxent has an io package which greatly simplifies the process of loading and saving models in different formats.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/coref.xml0100664 0001750 0001750 00000004616 14135770370 023755 0ustar00jeffjeff0000000 0000000 Coreference Resolution The OpenNLP Coreference Resolution system links multiple mentions of an entity in a document together. The OpenNLP implementation is currently limited to noun phrase mentions, other mention types cannot be resolved. TODO: Write more documentation about the coref component. Any contributions are very welcome. If you want to contribute please contact us on the mailing list or comment on the jira issue OPENNLP-48. apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/tokenizer.xml0100664 0001750 0001750 00000044037 14135770370 024672 0ustar00jeffjeff0000000 0000000 Tokenizer
Tokenization The OpenNLP Tokenizers segment an input character sequence into tokens. Tokens are usually words, punctuation, numbers, etc. The following result shows the individual tokens in a whitespace separated representation. OpenNLP offers multiple tokenizer implementations: Whitespace Tokenizer - A whitespace tokenizer, non whitespace sequences are identified as tokens Simple Tokenizer - A character class tokenizer, sequences of the same character class are tokens Learnable Tokenizer - A maximum entropy tokenizer, detects token boundaries based on probability model Most part-of-speech taggers, parsers and so on, work with text tokenized in this manner. It is important to ensure that your tokenizer produces tokens of the type expected by your later text processing components. With OpenNLP (as with many systems), tokenization is a two-stage process: first, sentence boundaries are identified, then tokens within each sentence are identified.
Tokenizer Tools The easiest way to try out the tokenizers are the command line tools. The tools are only intended for demonstration and testing. There are two tools, one for the Simple Tokenizer and one for the learnable tokenizer. A command line tool the for the Whitespace Tokenizer does not exist, because the whitespace separated output would be identical to the input. The following command shows how to use the Simple Tokenizer Tool. To use the learnable tokenizer download the english token model from our website. To test the tokenizer copy the sample from above to the console. The whitespace separated tokens will be written back to the console. Usually the input is read from a file and written to a file. article-tokenized.txt]]> It can be done in the same way for the Simple Tokenizer. Since most text comes truly raw and doesn't have sentence boundaries and such, its possible to create a pipe which first performs sentence boundary detection and tokenization. The following sample illustrates that. Of course this is all on the command line. Many people use the models directly in their Java code by creating SentenceDetector and Tokenizer objects and calling their methods as appropriate. The following section will explain how the Tokenizers can be used directly from java.
Tokenizer API The Tokenizers can be integrated into an application by the defined API. The shared instance of the WhitespaceTokenizer can be retrieved from a static field WhitespaceTokenizer.INSTANCE. The shared instance of the SimpleTokenizer can be retrieved in the same way from SimpleTokenizer.INSTANCE. To instantiate the TokenizerME (the learnable tokenizer) a Token Model must be created first. The following code sample shows how a model can be loaded. After the model is loaded the TokenizerME can be instantiated. The tokenizer offers two tokenize methods, both expect an input String object which contains the untokenized text. If possible it should be a sentence, but depending on the training of the learnable tokenizer this is not required. The first returns an array of Strings, where each String is one token. The output will be an array with these tokens. The second method, tokenizePos returns an array of Spans, each Span contain the begin and end character offsets of the token in the input String. The tokenSpans array now contain 5 elements. To get the text for one span call Span.getCoveredText which takes a span and the input text. The TokenizerME is able to output the probabilities for the detected tokens. The getTokenProbabilities method must be called directly after one of the tokenize methods was called. The tokenProbs array now contains one double value per token, the value is between 0 and 1, where 1 is the highest possible probability and 0 the lowest possible probability.
Tokenizer Training
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. The data can be converted to the OpenNLP Tokenizer training format or used directly. The OpenNLP format contains one sentence per line. Tokens are either separated by a whitespace or by a special <SPLIT> tag. Tokens are split automaticaly on whitespace and at least one <SPLIT> tag must be present in the training text. The following sample shows the sample from above in the correct format. , 61 years old, will join the board as a nonexecutive director Nov. 29. Mr. Vinken is chairman of Elsevier N.V., the Dutch publishing group. Rudolph Agnew, 55 years old and former chairman of Consolidated Gold Fields PLC, was named a nonexecutive director of this British industrial conglomerate.]]> Usage of the tool: To train the english tokenizer use the following command: ... 95: .. loglikelihood=-769.2107474529454 0.999511955191386 96: .. loglikelihood=-763.8891914534009 0.999511955191386 97: .. loglikelihood=-758.6685383254891 0.9995157680414533 98: .. loglikelihood=-753.5458314695236 0.9995157680414533 99: .. loglikelihood=-748.5182305519613 0.9995157680414533 100: .. loglikelihood=-743.5830058068038 0.9995157680414533 Wrote tokenizer model. Path: en-token.bin]]>
Training API The Tokenizer offers an API to train a new tokenization model. Basically three steps are necessary to train it: The application must open a sample data stream Call the TokenizerME.train method Save the TokenizerModel to a file or directly use it The following sample code illustrates these steps: lineStream = new PlainTextByLineStream(new FileInputStream("en-sent.train"), StandardCharsets.UTF_8); ObjectStream sampleStream = new TokenSampleStream(lineStream); TokenizerModel model; try { model = TokenizerME.train("en", sampleStream, true, TrainingParameters.defaultParams()); } finally { sampleStream.close(); } OutputStream modelOut = null; try { modelOut = new BufferedOutputStream(new FileOutputStream(modelFile)); model.serialize(modelOut); } finally { if (modelOut != null) modelOut.close(); }]]>
Detokenizing Detokenizing is simple the opposite of tokenization, the original non-tokenized string should be constructed out of a token sequence. The OpenNLP implementation was created to undo the tokenization of training data for the tokenizer. It can also be used to undo the tokenization of such a trained tokenizer. The implementation is strictly rule based and defines how tokens should be attached to a sentence wise character sequence. The rule dictionary assign to every token an operation which describes how it should be attached to one continuous character sequence. The following rules can be assigned to a token: MERGE_TO_LEFT - Merges the token to the left side. MERGE_TO_RIGHT - Merges the token to the right side. RIGHT_LEFT_MATCHING - Merges the token to the right side on first occurrence and to the left side on second occurrence. The following sample will illustrate how the detokenizer with a small rule dictionary (illustration format, not the xml data format): The dictionary should be used to de-tokenize the following whitespace tokenized sentence: The tokens would get these tags based on the dictionary: NO_OPERATION said -> NO_OPERATION " -> MERGE_TO_RIGHT This -> NO_OPERATION is -> NO_OPERATION a -> NO_OPERATION test -> NO_OPERATION " -> MERGE_TO_LEFT . -> MERGE_TO_LEFT]]> That will result in the following character sequence:
Detokenizing API The Detokenizer can be used to detokenize the tokens to String. To instantiate the Detokenizer (a rule based detokenizer) a DetokenizationDictionary (the rule of dictionary) must be created first. The following code sample shows how a rule dictionary can be loaded. After the rule dictionary is loadeed the DictionaryDetokenizer can be instantiated. The detokenizer offers two detokenize methods,the first detokenize the input tokens into a String. Tokens which are connected without a space in-between can be separated by a split marker. "); Assert.assertEquals("A co-worker helped.", sentence);]]> The API also offers a method which simply returns operations array in the input tokens array. Output:
Detokenizer Dictionary Detokenization Dictionary is the rule dictionary about detokenizer. tokens - an array of tokens that should be detokenized according to an operation. operations - an array of operations which specifies which operation should be used for the provided tokens. The following code sample shows how a rule dictionary can be created.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/namefinder.xml0100664 0001750 0001750 00000060251 14135770370 024764 0ustar00jeffjeff0000000 0000000 Name Finder
Named Entity Recognition The Name Finder can detect named entities and numbers in text. To be able to detect entities the Name Finder needs a model. The model is dependent on the language and entity type it was trained for. The OpenNLP projects offers a number of pre-trained name finder models which are trained on various freely available corpora. They can be downloaded at our model download page. To find names in raw text the text must be segmented into tokens and sentences. A detailed description is given in the sentence detector and tokenizer tutorial. It is important that the tokenization for the training data and the input text is identical.
Name Finder Tool The easiest way to try out the Name Finder is the command line tool. The tool is only intended for demonstration and testing. Download the English person model and start the Name Finder Tool with this command: The name finder now reads a tokenized sentence per line from stdin, an empty line indicates a document boundary and resets the adaptive feature generators. Just copy this text to the terminal: the name finder will now output the text with markup for person names: Pierre Vinken , 61 years old , will join the board as a nonexecutive director Nov. 29 . Mr . Vinken is chairman of Elsevier N.V. , the Dutch publishing group . Rudolph Agnew , 55 years old and former chairman of Consolidated Gold Fields PLC , was named a director of this British industrial conglomerate .]]>
Name Finder API To use the Name Finder in a production system it is strongly recommended to embed it directly into the application instead of using the command line interface. First the name finder model must be loaded into memory from disk or an other source. In the sample below it is loaded from disk. There is a number of reasons why the model loading can fail: Issues with the underlying I/O The version of the model is not compatible with the OpenNLP version The model is loaded into the wrong component, for example a tokenizer model is loaded with TokenNameFinderModel class. The model content is not valid for some other reason After the model is loaded the NameFinderME can be instantiated. The initialization is now finished and the Name Finder can be used. The NameFinderME class is not thread safe, it must only be called from one thread. To use multiple threads multiple NameFinderME instances sharing the same model instance can be created. The input text should be segmented into documents, sentences and tokens. To perform entity detection an application calls the find method for every sentence in the document. After every document clearAdaptiveData must be called to clear the adaptive data in the feature generators. Not calling clearAdaptiveData can lead to a sharp drop in the detection rate after a few documents. The following code illustrates that: the following snippet shows a call to find The nameSpans arrays contains now exactly one Span which marks the name Pierre Vinken. The elements between the begin and end offsets are the name tokens. In this case the begin offset is 0 and the end offset is 2. The Span object also knows the type of the entity. In this case it is person (defined by the model). It can be retrieved with a call to Span.getType(). Additionally to the statistical Name Finder, OpenNLP also offers a dictionary and a regular expression name finder implementation. TODO: Explain how to retrieve probs from the name finder for names and for non recognized names
Name Finder Training The pre-trained models might not be available for a desired language, can not detect important entities or the performance is not good enough outside the news domain. These are the typical reason to do custom training of the name finder on a new corpus or on a corpus which is extended by private training data taken from the data which should be analyzed.
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. The data can be converted to the OpenNLP name finder training format. Which is one sentence per line. Some other formats are available as well. The sentence must be tokenized and contain spans which mark the entities. Documents are separated by empty lines which trigger the reset of the adaptive feature generators. A training file can contain multiple types. If the training file contains multiple types the created model will also be able to detect these multiple types. Sample sentence of the data: Pierre Vinken , 61 years old , will join the board as a nonexecutive director Nov. 29 . Mr . Vinken is chairman of Elsevier N.V. , the Dutch publishing group .]]> The training data should contain at least 15000 sentences to create a model which performs well. Usage of the tool: It is now assumed that the english person name finder model should be trained from a file called en-ner-person.train which is encoded as UTF-8. The following command will train the name finder and write the model to en-ner-person.bin: The example above will train models with a pre-defined feature set. It is also possible to use the -resources parameter to generate features based on external knowledge such as those based on word representation (clustering) features. The external resources must all be placed in a resource directory which is then passed as a parameter. If this option is used it is then required to pass, via the -featuregen parameter, a XML custom feature generator which includes some of the clustering features shipped with the TokenNameFinder. Currently three formats of clustering lexicons are accepted: Space separated two column file specifying the token and the cluster class as generated by toolkits such as word2vec. Space separated three column file specifying the token, clustering class and weight as such as Clark's clusters. Tab separated three column Brown clusters as generated by Liang's toolkit. Additionally it is possible to specify the number of iterations, the cutoff and to overwrite all types in the training data with a single type. Finally, the -sequenceCodec parameter allows to specify a BIO (Begin, Inside, Out) or BILOU (Begin, Inside, Last, Out, Unit) encoding to represent the Named Entities. An example of one such command would be as follows:
Training API To train the name finder from within an application it is recommended to use the training API instead of the command line tool. Basically three steps are necessary to train it: The application must open a sample data stream Call the NameFinderME.train method Save the TokenNameFinderModel to a file The three steps are illustrated by the following sample code: lineStream = new PlainTextByLineStream(new FileInputStream("en-ner-person.train"), StandardCharsets.UTF_8); TokenNameFinderModel model; try (ObjectStream sampleStream = new NameSampleDataStream(lineStream)) { model = NameFinderME.train("en", "person", sampleStream, TrainingParameters.defaultParams(), nameFinderFactory); } try (ObjectStream modelOut = new BufferedOutputStream(new FileOutputStream(modelFile)){ model.serialize(modelOut); }]]>
Custom Feature Generation OpenNLP defines a default feature generation which is used when no custom feature generation is specified. Users which want to experiment with the feature generation can provide a custom feature generator. Either via API or via an xml descriptor file.
Feature Generation defined by API The custom generator must be used for training and for detecting the names. If the feature generation during training time and detection time is different the name finder might not be able to detect names. The following lines show how to construct a custom feature generator which is similar to the default feature generator but with a BrownTokenFeature added. The javadoc of the feature generator classes explain what the individual feature generators do. To write a custom feature generator please implement the AdaptiveFeatureGenerator interface or if it must not be adaptive extend the FeatureGeneratorAdapter. The train method which should be used is defined as samples, TrainingParameters trainParams, TokenNameFinderFactory factory) throws IOException]]> where the TokenNameFinderFactory allows to specify a custom feature generator. To detect names the model which was returned from the train method must be passed to the NameFinderME constructor.
Feature Generation defined by XML Descriptor OpenNLP can also use a xml descriptor file to configure the feature generation. The descriptor file is stored inside the model after training and the feature generators are configured correctly when the name finder is instantiated. The following sample shows a xml descriptor which contains the default feature generator plus several types of clustering features: 2 2 2 2 true false 2 2 brownCluster brownCluster brownCluster word2vec.cluster clark.cluster ]]> The root element must be featureGenerators, each sub-element adds a feature generator to the configuration. The sample xml contains additional feature generators with respect to the API defined above. The following table shows the supported feature generators (you must specify the Factory's FQDN): Feature Generators Feature Generator Parameters CharacterNgramFeatureGeneratorFactory min and max specify the length of the generated character ngrams DefinitionFeatureGeneratorFactory none DictionaryFeatureGeneratorFactory dict is the key of the dictionary resource to use, and prefix is a feature prefix string PreviousMapFeatureGeneratorFactory none SentenceFeatureGeneratorFactory begin and end to generate begin or end features, both are optional and are boolean values TokenClassFeatureGeneratorFactory none TokenFeatureGeneratorFactory none BigramNameFeatureGeneratorFactory none TokenPatternFeatureGeneratorFactory none POSTaggerNameFeatureGeneratorFactory model is the file name of the POS Tagger model to use WordClusterFeatureGeneratorFactory dict is the key of the clustering resource to use BrownClusterTokenFeatureGeneratorFactory dict is the key of the clustering resource to use BrownClusterTokenClassFeatureGeneratorFactory dict is the key of the clustering resource to use BrownClusterBigramFeatureGeneratorFactory dict is the key of the clustering resource to use WindowFeatureGeneratorFactory prevLength and nextLength must be integers ans specify the window size
Window feature generator can contain other generators.
Evaluation The built in evaluation can measure the named entity recognition performance of the name finder. The performance is either measured on a test dataset or via cross validation.
Evaluation Tool The following command shows how the tool can be run: Note: The command line interface does not support cross evaluation in the current version.
Evaluation API The evaluation can be performed on a pre-trained model and a test dataset or via cross validation. In the first case the model must be loaded and a NameSample ObjectStream must be created (see code samples above), assuming these two objects exist the following code shows how to perform the evaluation: In the cross validation case all the training arguments must be provided (see the Training API section above). To perform cross validation the ObjectStream must be resettable. sampleStream = new PlainTextByLineStream(sampleDataIn.getChannel(), StandardCharsets.UTF_8); TokenNameFinderCrossValidator evaluator = new TokenNameFinderCrossValidator("en", 100, 5); evaluator.evaluate(sampleStream, 10); FMeasure result = evaluator.getFMeasure(); System.out.println(result.toString());]]>
Named Entity Annotation Guidelines Annotation guidelines define what should be labeled as an entity. To build a private corpus it is important to know these guidelines and maybe write a custom one. Here is a list of publicly available annotation guidelines: MUC6 MUC7 ACE CONLL 2002 CONLL 2003
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/langdetect.xml0100664 0001750 0001750 00000023620 14135770370 024765 0ustar00jeffjeff0000000 0000000 Language Detector
Classifying The OpenNLP Language Detector classifies a document in ISO-639-3 languages according to the model capabilities. A model can be trained with Maxent, Perceptron or Naive Bayes algorithms. By default normalizes a text and the context generator extracts n-grams of size 1, 2 and 3. The n-gram sizes, the normalization and the context generator can be customized by extending the LanguageDetectorFactory. The default normalizers are: Normalizers Normalizer Description EmojiCharSequenceNormalizer Replaces emojis by blank space UrlCharSequenceNormalizer Replaces URLs and E-Mails by a blank space. TwitterCharSequenceNormalizer Replaces hashtags and Twitter user names by blank spaces. NumberCharSequenceNormalizer Replaces number sequences by blank spaces ShrinkCharSequenceNormalizer Shrink characters that repeats three or more times to only two repetitions.
Language Detector Tool The easiest way to try out the language detector is the command line tool. The tool is only intended for demonstration and testing. The following command shows how to use the language detector tool. The input is read from standard input and output is written to standard output, unless they are redirected or piped.
Language Detector API To perform classification you will need a machine learning model - these are encapsulated in the LanguageDetectorModel class of OpenNLP tools. First you need to grab the bytes from the serialized model on an InputStream - we'll leave it you to do that, since you were the one who serialized it to begin with. Now for the easy part: With the LanguageDetectorModel in hand we are just about there: Note that the both the API or the CLI will consider the complete text to choose the most probable languages. To handle mixed language one can analyze smaller chunks of text to find language regions.
Training The Language Detector can be trained on annotated training material. The data can be in OpenNLP Language Detector training format. This is one document per line, containing the ISO-639-3 language code and text separated by a tab. Other formats can also be available. The following sample shows the sample from above in the required format. Note: The line breaks marked with a backslash are just inserted for formatting purposes and must not be included in the training data.
Training Tool The following command will train the language detector and write the model to langdetect.bin: Note: To customize the language detector, extend the class opennlp.tools.langdetect.LanguageDetectorFactory add it to the classpath and pass it in the -factory argument.
Training with Leipzig The Leipzig Corpora collection presents corpora in different languages. The corpora is a collection of individual sentences collected from the web and newspapers. The Corpora is available as plain text and as MySQL database tables. The OpenNLP integration can only use the plain text version. The individual plain text packages can be downloaded here: http://corpora.uni-leipzig.de/download.html This corpora is specially good to train Language Detector and a converter is provided. First, you need to download the files that compose the Leipzig Corpora collection to a folder. Apache OpenNLP Language Detector supports training, evaluation and cross validation using the Leipzig Corpora. For example, the following command shows how to train a model. The following sequence of commands shows how to convert the Leipzig Corpora collection at folder leipzig-train/ to the default Language Detector format, by creating groups of 5 sentences as documents and limiting to 10000 documents per language. Them, it shuffles the result and select the first 100000 lines as train corpus and the last 20000 as evaluation corpus: leipzig.txt $ perl -MList::Util=shuffle -e 'print shuffle();' < leipzig.txt > leipzig_shuf.txt $ head -100000 < leipzig_shuf.txt > leipzig.train $ tail -20000 < leipzig_shuf.txt > leipzig.eval ]]>
Training API The following example shows how to train a model from API. lineStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8); ObjectStream sampleStream = new LanguageDetectorSampleStream(lineStream); TrainingParameters params = ModelUtil.createDefaultTrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE); params.put(TrainingParameters.CUTOFF_PARAM, 0); LanguageDetectorFactory factory = new LanguageDetectorFactory(); LanguageDetectorModel model = LanguageDetectorME.train(sampleStream, params, factory); model.serialize(new File("langdetect.bin")); } ]]>
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/sentdetect.xml0100664 0001750 0001750 00000024546 14135770370 025025 0ustar00jeffjeff0000000 0000000 Sentence Detector
Sentence Detection The OpenNLP Sentence Detector can detect that a punctuation character marks the end of a sentence or not. In this sense a sentence is defined as the longest white space trimmed character sequence between two punctuation marks. The first and last sentence make an exception to this rule. The first non whitespace character is assumed to be the begin of a sentence, and the last non whitespace character is assumed to be a sentence end. The sample text below should be segmented into its sentences. After detecting the sentence boundaries each sentence is written in its own line. Usually Sentence Detection is done before the text is tokenized and that's the way the pre-trained models on the web site are trained, but it is also possible to perform tokenization first and let the Sentence Detector process the already tokenized text. The OpenNLP Sentence Detector cannot identify sentence boundaries based on the contents of the sentence. A prominent example is the first sentence in an article where the title is mistakenly identified to be the first part of the first sentence. Most components in OpenNLP expect input which is segmented into sentences.
Sentence Detection Tool The easiest way to try out the Sentence Detector is the command line tool. The tool is only intended for demonstration and testing. Download the english sentence detector model and start the Sentence Detector Tool with this command: Just copy the sample text from above to the console. The Sentence Detector will read it and echo one sentence per line to the console. Usually the input is read from a file and the output is redirected to another file. This can be achieved with the following command. output.txt]]> For the english sentence model from the website the input text should not be tokenized.
Sentence Detection API The Sentence Detector can be easily integrated into an application via its API. To instantiate the Sentence Detector the sentence model must be loaded first. After the model is loaded the SentenceDetectorME can be instantiated. The Sentence Detector can output an array of Strings, where each String is one sentence. The result array now contains two entries. The first String is "First sentence." and the second String is "Second sentence." The whitespace before, between and after the input String is removed. The API also offers a method which simply returns the span of the sentence in the input string. The result array again contains two entries. The first span beings at index 2 and ends at 17. The second span begins at 18 and ends at 34. The utility method Span.getCoveredText can be used to create a substring which only covers the chars in the span.
Sentence Detector Training
Training Tool OpenNLP has a command line tool which is used to train the models available from the model download page on various corpora. The data must be converted to the OpenNLP Sentence Detector training format. Which is one sentence per line. An empty line indicates a document boundary. In case the document boundary is unknown, its recommended to have an empty line every few ten sentences. Exactly like the output in the sample above. Usage of the tool: To train an English sentence detector use the following command: It should produce the following output: ... 95: .. loglikelihood=-288.25556805874436 0.9834118369854598 96: .. loglikelihood=-287.2283680343481 0.9834118369854598 97: .. loglikelihood=-286.2174830344526 0.9834118369854598 98: .. loglikelihood=-285.222486981048 0.9834118369854598 99: .. loglikelihood=-284.24296917223916 0.9834118369854598 100: .. loglikelihood=-283.2785335773966 0.9834118369854598 Wrote sentence detector model. Path: en-sent.bin ]]>
Training API The Sentence Detector also offers an API to train a new sentence detection model. Basically three steps are necessary to train it: The application must open a sample data stream Call the SentenceDetectorME.train method Save the SentenceModel to a file or directly use it The following sample code illustrates these steps: lineStream = new PlainTextByLineStream(new FileInputStream("en-sent.train"), StandardCharsets.UTF_8); SentenceModel model; try (ObjectStream sampleStream = new SentenceSampleStream(lineStream)) { model = SentenceDetectorME.train("en", sampleStream, true, null, TrainingParameters.defaultParams()); } try (OutputStream modelOut = new BufferedOutputStream(new FileOutputStream(modelFile))) { model.serialize(modelOut); }]]>
Evaluation
Evaluation Tool The command shows how the evaluator tool can be run: The en-sent.eval file has the same format as the training data.
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/introduction.xml0100664 0001750 0001750 00000034716 14135770370 025404 0ustar00jeffjeff0000000 0000000 Introduction
Description The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, and coreference resolution. These tasks are usually required to build more advanced text processing services. OpenNLP also includes maximum entropy and perceptron based machine learning. The goal of the OpenNLP project will be to create a mature toolkit for the abovementioned tasks. An additional goal is to provide a large number of pre-built models for a variety of languages, as well as the annotated text resources that those models are derived from.
General Library Structure The Apache OpenNLP library contains several components, enabling one to build a full natural language processing pipeline. These components include: sentence detector, tokenizer, name finder, document categorizer, part-of-speech tagger, chunker, parser, coreference resolution. Components contain parts which enable one to execute the respective natural language processing task, to train a model and often also to evaluate a model. Each of these facilities is accessible via its application program interface (API). In addition, a command line interface (CLI) is provided for convenience of experiments and training.
Application Program Interface (API). Generic Example OpenNLP components have similar APIs. Normally, to execute a task, one should provide a model and an input. A model is usually loaded by providing a FileInputStream with a model to a constructor of the model class: After the model is loaded the tool itself can be instantiated. After the tool is instantiated, the processing task can be executed. The input and the output formats are specific to the tool, but often the output is an array of String, and the input is a String or an array of String.
Command line interface (CLI)
Description OpenNLP provides a command line script, serving as a unique entry point to all included tools. The script is located in the bin directory of OpenNLP binary distribution. Included are versions for Windows: opennlp.bat and Linux or compatible systems: opennlp.
List of tools The list of command line tools for Apache OpenNLP , as well as a description of its arguments, is available at section .
Setting up OpenNLP script uses JAVA_CMD and JAVA_HOME variables to determine which command to use to execute Java virtual machine. OpenNLP script uses OPENNLP_HOME variable to determine the location of the binary distribution of OpenNLP. It is recommended to point this variable to the binary distribution of current OpenNLP version and update PATH variable to include $OPENNLP_HOME/bin or %OPENNLP_HOME%\bin. Such configuration allows calling OpenNLP conveniently. Examples below suppose this configuration has been done.
Generic Example Apache OpenNLP provides a common command line script to access all its tools: This script prints current version of the library and lists all available tools: . Usage: opennlp TOOL where TOOL is one of: Doccat learnable document categorizer DoccatTrainer trainer for the learnable document categorizer DoccatConverter converts leipzig data format to native OpenNLP format DictionaryBuilder builds a new dictionary SimpleTokenizer character class tokenizer TokenizerME learnable tokenizer TokenizerTrainer trainer for the learnable tokenizer TokenizerMEEvaluator evaluator for the learnable tokenizer TokenizerCrossValidator K-fold cross validator for the learnable tokenizer TokenizerConverter converts foreign data formats (namefinder,conllx,pos) to native OpenNLP format DictionaryDetokenizer SentenceDetector learnable sentence detector SentenceDetectorTrainer trainer for the learnable sentence detector SentenceDetectorEvaluator evaluator for the learnable sentence detector SentenceDetectorCrossValidator K-fold cross validator for the learnable sentence detector SentenceDetectorConverter converts foreign data formats (namefinder,conllx,pos) to native OpenNLP format TokenNameFinder learnable name finder TokenNameFinderTrainer trainer for the learnable name finder TokenNameFinderEvaluator Measures the performance of the NameFinder model with the reference data TokenNameFinderCrossValidator K-fold cross validator for the learnable Name Finder TokenNameFinderConverter converts foreign data formats (bionlp2004,conll03,conll02,ad) to native OpenNLP format CensusDictionaryCreator Converts 1990 US Census names into a dictionary POSTagger learnable part of speech tagger POSTaggerTrainer trains a model for the part-of-speech tagger POSTaggerEvaluator Measures the performance of the POS tagger model with the reference data POSTaggerCrossValidator K-fold cross validator for the learnable POS tagger POSTaggerConverter converts conllx data format to native OpenNLP format ChunkerME learnable chunker ChunkerTrainerME trainer for the learnable chunker ChunkerEvaluator Measures the performance of the Chunker model with the reference data ChunkerCrossValidator K-fold cross validator for the chunker ChunkerConverter converts ad data format to native OpenNLP format Parser performs full syntactic parsing ParserTrainer trains the learnable parser ParserEvaluator Measures the performance of the Parser model with the reference data BuildModelUpdater trains and updates the build model in a parser model CheckModelUpdater trains and updates the check model in a parser model TaggerModelReplacer replaces the tagger model in a parser model All tools print help when invoked with help parameter Example: opennlp SimpleTokenizer help ]]> OpenNLP tools have similar command line structure and options. To discover tool options, run it with no parameters: The tool will output two blocks of help. The first block describes the general structure of this tool command line: The general structure of this tool command line includes the obligatory tool name (TokenizerTrainer), the optional format parameters ([.namefinder|.conllx|.pos]), the optional parameters ([-abbDict path] ...), and the obligatory parameters (-model modelFile ...). The format parameters enable direct processing of non-native data without conversion. Each format might have its own parameters, which are displayed if the tool is executed without or with help parameter: To switch the tool to a specific format, add a dot and the format name after the tool name: The second block of the help message describes the individual arguments: Most tools for processing need to be provided at least a model: When tool is executed this way, the model is loaded and the tool is waiting for the input from standard input. This input is processed and printed to standard output. Alternative, or one should say, most commonly used way is to use console input and output redirection options to provide also an input and an output files: output.txt]]> Most tools for model training need to be provided first a model name, optionally some training options (such as model type, number of iterations), and then the data. A model name is just a file name. Training options often include number of iterations, cutoff, abbreviations dictionary or something else. Sometimes it is possible to provide these options via training options file. In this case these options are ignored and the ones from the file are used. For the data one has to specify the location of the data (filename) and often language and encoding. A generic example of a command line to launch a tool trainer might be: or with a format: Most tools for model evaluation are similar to those for task execution, and need to be provided fist a model name, optionally some evaluation options (such as whether to print misclassified samples), and then the test data. A generic example of a command line to launch an evaluation tool might be:
apache-opennlp-1.9.4-src/opennlp-docs/src/docbkx/opennlp.xml0100664 0001750 0001750 00000007321 14135770370 024326 0ustar00jeffjeff0000000 0000000 Version OpenNLP Written and maintained by the Apache OpenNLP Development Community License and Disclaimer The ASF licenses this documentation to you under the Apache License, Version 2.0 (the "License"); you may not use this documentation except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, this documentation and its contents are distributed under the License on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
2011 2014 The Apache Software Foundation
Apache OpenNLP Developer Documentation
apache-opennlp-1.9.4-src/opennlp-docs/pom.xml0100664 0001750 0001750 00000005014 14136044070 021372 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-docs pom Apache OpenNLP Documentation com.agilejava.docbkx docbkx-maven-plugin 2.0.11 generate-html package org.docbook docbook-xml 4.4 true opennlp.xml css/opennlp-docs.css 1 ${project.basedir}/src/main/resources/xsl/html.xsl apache-opennlp-1.9.4-src/checkstyle.xml0100664 0001750 0001750 00000013045 14135770370 020347 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-distr/src/main/readme/NOTICE0100664 0001750 0001750 00000000567 14135770370 024146 0ustar00jeffjeff0000000 0000000 Apache OpenNLP Copyright 2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). The snowball stemmers in opennlp-tools/src/main/java/opennlp/tools/stemmer/snowball were developed by Martin Porter and Richard Boulton. The full snowball package is available from http://snowball.tartarus.org/ apache-opennlp-1.9.4-src/opennlp-distr/src/main/readme/LICENSE0100664 0001750 0001750 00000100213 14135770370 024234 0ustar00jeffjeff0000000 0000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. The following license applies to the Snowball stemmers: Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF The CDDL 1.1 license applies to jersey and some of its dependencies: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1 1. Definitions. 1.1. “Contributor” means each individual or entity that creates or contributes to the creation of Modifications. 1.2. “Contributor Version” means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. 1.3. “Covered Software” means (a) the Original Software, or (b) Modifications or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. 1.4. “Executable” means the Covered Software in any form other than Source Code. 1.5. “Initial Developer” means the individual or entity that first makes Original Software available under this License. 1.6. “Larger Work” means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. 1.7. “License” means this document. 1.8. “Licensable” means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. “Modifications” means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modification; or C. Any new file that is contributed or otherwise made available under the terms of this License. 1.10. “Original Software” means the Source Code and Executable form of computer software code that is originally released under this License. 1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.12. “Source Code” means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. 1.13. “You” (or “Your”) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, “You” includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants. 2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. 2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. 3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. 3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. 3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. 4. Versions of the License. 4.1. New Versions. Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. 4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. 4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 6. TERMINATION. 6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as “Participant”) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. 6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 8. U.S. GOVERNMENT END USERS. The Covered Software is a “commercial item,” as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. 9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. 10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. The BSD 2-clause license applies to the morfologik dependencies: Copyright (c) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.apache-opennlp-1.9.4-src/opennlp-distr/src/main/docker/Dockerfile0100664 0001750 0001750 00000000266 14135770370 025242 0ustar00jeffjeff0000000 0000000 FROM openjdk:11-jre-slim MAINTAINER Apache OpenNLP (dev@opennlp.apache.org) ARG OPENNLP_BINARY ENV OPENNLP_BASE_DIR /opt/opennlp ADD $OPENNLP_BINARY $OPENNLP_BASE_DIR CMD ["sh"] apache-opennlp-1.9.4-src/opennlp-distr/src/main/assembly/src.xml0100664 0001750 0001750 00000002370 14135770370 025127 0ustar00jeffjeff0000000 0000000 src tar.gz zip /apache-opennlp-${project.version}-src ../ **/target/** **/.*/** **/pom.xml.releaseBackup **/release.properties apache-opennlp-1.9.4-src/opennlp-distr/src/main/assembly/bin.xml0100664 0001750 0001750 00000010640 14135770370 025107 0ustar00jeffjeff0000000 0000000 bin tar.gz zip true /apache-opennlp-${project.version} runtime false false 644 755 lib true src/main/readme 644 755 . . true 644 755 RELEASE_NOTES.html target 644 755 . README.html target/issuesFixed 644 755 issuesFixed src/main/bin 755 755 bin ../opennlp-morfologik-addon/src/main/bin 755 755 bin ../opennlp-brat-annotator/src/main/bin 755 755 bin ../opennlp-tools/lang 644 755 lang ../opennlp-docs/target/docbkx/html 644 755 docs/manual ../opennlp-tools/target/apidocs 644 755 docs/apidocs/opennlp-tools ../opennlp-brat-annotator/target/apidocs 644 755 docs/apidocs/opennlp-brat-annotator ../opennlp-morfologik-addon/target/apidocs 644 755 docs/apidocs/opennlp-morfologik-addon ../opennlp-uima/target/apidocs 644 755 docs/apidocs/opennlp-uima ../opennlp-uima/descriptors true 644 755 docs/opennlp-uima-descriptors apache-opennlp-1.9.4-src/opennlp-distr/src/main/bin/opennlp.bat0100664 0001750 0001750 00000003440 14135770370 024711 0ustar00jeffjeff0000000 0000000 @ECHO off REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. REM # Note: Do not output anything in this script file, any output REM # may be inadvertantly placed in any output files if REM # output redirection is used. SETLOCAL IF "%JAVA_CMD%" == "" ( IF "%JAVA_HOME%" == "" ( SET JAVA_CMD=java ) ELSE ( REM # Keep JAVA_HOME to short-name without spaces FOR %%A IN ("%JAVA_HOME%") DO SET JAVA_CMD=%%~sfA\bin\java ) ) REM remove HEAP variable SET HEAP= IF not "%JAVA_HEAP%" == "" ( SET HEAP="-Xmx%JAVA_HEAP%" ) REM # Should work with Windows XP and greater. If not, specify the path to where it is installed. IF "%OPENNLP_HOME%" == "" ( SET OPENNLP_HOME=%~sp0.. ) ELSE ( REM # Keep OPENNLP_HOME to short-name without spaces FOR %%A IN ("%OPENNLP_HOME%") DO SET OPENNLP_HOME=%%~sfA ) REM # Get the library JAR file name (JIRA OPENNLP-554) FOR %%A IN ("%OPENNLP_HOME%\lib\opennlp-tools-*.jar") DO SET JAR_FILE=%%A %JAVA_CMD% %HEAP% -jar %JAR_FILE% %* ENDLOCALapache-opennlp-1.9.4-src/opennlp-distr/src/main/bin/opennlp0100775 0001750 0001750 00000002506 14135770370 024151 0ustar00jeffjeff0000000 0000000 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Note: Do not output anything in this script file, any output # may be inadvertantly placed in any output files if # output redirection is used. if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then JAVACMD="$JAVA_HOME/bin/java" else JAVACMD="`which java`" fi fi unset HEAP if [ -n "$JAVA_HEAP" ] ; then HEAP="-Xmx$JAVA_HEAP" fi # Might fail if $0 is a link OPENNLP_HOME=`dirname "$0"`/.. $JAVACMD $HEAP -cp $(echo $OPENNLP_HOME/lib/*.jar | tr ' ' ':') opennlp.tools.cmdline.CLI $@ apache-opennlp-1.9.4-src/opennlp-distr/README_HEADER.html0100664 0001750 0001750 00000002627 14135770370 023124 0ustar00jeffjeff0000000 0000000 Apache OpenNLP Readme apache-opennlp-1.9.4-src/opennlp-distr/README_FOOTER.html0100664 0001750 0001750 00000001002 14135770370 023154 0ustar00jeffjeff0000000 0000000

The Apache OpenNLP project uses JIRA for issue tracking. Please report any issues you find at http://issues.apache.org/jira/browse/opennlp

List of JIRA Issues Fixed in this Release

Click issuesFixed/jira-report.html for the list of issues fixed in this release.

apache-opennlp-1.9.4-src/opennlp-distr/pom.xml0100664 0001750 0001750 00000014670 14136044070 021577 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-distr pom Apache OpenNLP Distribution ${project.version} org.apache.opennlp opennlp-tools org.apache.opennlp opennlp-uima org.apache.opennlp opennlp-morfologik-addon org.apache.opennlp opennlp-brat-annotator com.ruleoftech markdown-page-generator-plugin 1.0.0 process-sources generate ${basedir}/../ ${basedir}/target ${basedir}/README_HEADER.html ${basedir}/README_FOOTER.html TABLES,FENCED_CODE_BLOCKS,AUTOLINKS true maven-assembly-plugin bundle-project-sources package single src/main/assembly/bin.xml src/main/assembly/src.xml posix apache-opennlp-${project.version} maven-antrun-plugin 1.8 generate checksums for binary artifacts run verify apache-release org.apache.maven.plugins maven-changes-plugin 2.12.1 default-cli generate-resources jira-report true ${basedir}/target/issuesFixed/ 1000 docker com.spotify docker-maven-plugin 0.4.13 package build apacheopennlp ${project.basedir}/src/main/docker ${project.version} apache-opennlp-${project.version}-bin.tar.gz / ${project.build.directory} apache-opennlp-${project.version}-bin.tar.gz apache-opennlp-1.9.4-src/LICENSE0100664 0001750 0001750 00000031313 14135770370 016472 0ustar00jeffjeff0000000 0000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. The following license applies to the Snowball stemmers: Copyright (c) 2001, Dr Martin Porter Copyright (c) 2002, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. apache-opennlp-1.9.4-src/rat-excludes0100664 0001750 0001750 00000005112 14135770370 020006 0ustar00jeffjeff0000000 0000000 src/test/resources/opennlp/tools/*/*.txt src/test/resources/opennlp/tools/*/*.sample src/test/resources/opennlp/tools/*/*.txt src/test/resources/opennlp/tools/*/*.train src/test/resources/opennlp/tools/parser/en_head_rules src/test/resources/opennlp/tools/parser/en_head_rules src/test/resources/opennlp/tools/parser/parser.train src/test/resources/opennlp/tools/parser/test.parse src/test/resources/opennlp/tools/postag/AnnotatedSentences.txt src/test/resources/opennlp/tools/sentdetect/Sentences.txt src/test/resources/opennlp/tools/tokenize/token.train src/main/java/opennlp/tools/ml/maxent/AllEnglishAffixes.txt src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-broken.txt src/test/resources/data/opennlp/maxent/io/rvfes-bug-data-ok.txt src/test/resources/data/opennlp/maxent/real-valued-weights-training-data.txt src/test/resources/data/opennlp/maxent/repeat-weighting-training-data.txt src/test/resources/data/ppa/bitstrings src/test/resources/data/ppa/devset src/test/resources/data/ppa/test src/test/resources/data/ppa/training src/test/resources/data/ppa/NOTICE src/test/resources/opennlp/tools/doccat/DoccatSample.txt src/test/resources/opennlp/tools/formats/brat/voa-with-entities.ann src/test/resources/opennlp/tools/formats/brat/voa-with-entities.txt src/test/resources/opennlp/tools/formats/brat/voa-with-relations.ann src/test/resources/opennlp/tools/formats/brat/voa-with-relations.txt src/test/resources/opennlp/tools/languagemodel/sentences.txt src/test/resources/opennlp/tools/lemmatizer/trial.old.tsv src/test/resources/opennlp/tools/lemmatizer/output.txt lang/en/parser/en-head_rules lang/es/parser/es-head-rules src/test/resources/*.txt src/test/resources/*.info src/main/java/opennlp/tools/stemmer/snowball/*.java apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/util/CasUtil.java0100664 0001750 0001750 00000007707 14135770370 030364 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.uima.ResourceSpecifierFactory; import org.apache.uima.UIMAFramework; import org.apache.uima.cas.CAS; import org.apache.uima.cas.impl.XmiCasDeserializer; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.metadata.FsIndexDescription; import org.apache.uima.resource.metadata.TypePriorities; import org.apache.uima.resource.metadata.TypeSystemDescription; import org.apache.uima.resource.metadata.impl.FsIndexDescription_impl; import org.apache.uima.util.CasCreationUtils; import org.apache.uima.util.InvalidXMLException; import org.apache.uima.util.XMLInputSource; import org.apache.uima.util.XMLParser; import org.xml.sax.SAXException; public class CasUtil { public static TypeSystemDescription createTypeSystemDescription(InputStream in) { // Note: // Type System location is not set correctly, // resolving a referenced type system will fail XMLInputSource xmlTypeSystemSource = new XMLInputSource(in, new File("")); XMLParser xmlParser = UIMAFramework.getXMLParser(); TypeSystemDescription typeSystemDesciptor; try { typeSystemDesciptor = (TypeSystemDescription) xmlParser .parse(xmlTypeSystemSource); typeSystemDesciptor.resolveImports(); } catch (InvalidXMLException e) { e.printStackTrace(); typeSystemDesciptor = null; } return typeSystemDesciptor; } public static CAS createEmptyCAS(TypeSystemDescription typeSystem) { ResourceSpecifierFactory resourceSpecifierFactory = UIMAFramework .getResourceSpecifierFactory(); TypePriorities typePriorities = resourceSpecifierFactory .createTypePriorities(); FsIndexDescription indexDesciptor = new FsIndexDescription_impl(); indexDesciptor.setLabel("TOPIndex"); indexDesciptor.setTypeName("uima.cas.TOP"); indexDesciptor.setKind(FsIndexDescription.KIND_SORTED); CAS cas; try { cas = CasCreationUtils.createCas(typeSystem, typePriorities, new FsIndexDescription[] { indexDesciptor }); } catch (ResourceInitializationException e) { e.printStackTrace(); cas = null; } return cas; } public static void deserializeXmiCAS(CAS cas, InputStream xmiIn) throws IOException { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); saxParserFactory.setValidating(false); SAXParser saxParser; try { saxParser = saxParserFactory.newSAXParser(); } catch (ParserConfigurationException e) { throw new IllegalStateException( "SAXParser should be configured correctly!", e); } catch (SAXException e) { throw new IllegalStateException("SAX error while creating parser!", e); } XmiCasDeserializer dezerializer = new XmiCasDeserializer( cas.getTypeSystem()); try { saxParser.parse(xmiIn, dezerializer.getXmiCasHandler(cas)); } catch (SAXException e) { throw new IOException("Invalid XMI input!", e); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_test_java_opennlp_uima_util_AnnotationComb0100644 0000000 0000000 00000000160 14135770370 032552 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.java apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.ja0100664 0001750 0001750 00000005470 14135770370 034130 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.uima.cas.CAS; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.metadata.TypeSystemDescription; import org.junit.Assert; import org.junit.Test; public class AnnotationComboIteratorTest { /** * Tests ensures that the bug observed in OPENNLP 676 is fixed. The described * bug occurs if there are tokens which are out side of the sentence bounds. * In that case an uncommon code path in the iterator is used to skip the * out-of-sentence tokens until it again finds tokens which are inside a sentence. *

* The iterator was either crashing with a NoSuchElementException or it just left * out the first token in the next sentence. * * @throws IOException */ @Test public void OPENNLP_676() throws IOException { TypeSystemDescription ts = CasUtil .createTypeSystemDescription(AnnotationComboIteratorTest.class .getResourceAsStream("/test-descriptors/TypeSystem.xml")); CAS cas = CasUtil.createEmptyCAS(ts); CasUtil.deserializeXmiCAS(cas, AnnotationComboIteratorTest.class .getResourceAsStream("/cas/OPENNLP-676.xmi")); AnnotationComboIterator comboIterator = new AnnotationComboIterator(cas, cas.getTypeSystem().getType("opennlp.uima.Sentence"), cas .getTypeSystem().getType("opennlp.uima.Token")); List> tokensBySentence = new ArrayList<>(); for (AnnotationIteratorPair annotationIteratorPair : comboIterator) { final List tokens = new ArrayList<>(); for (AnnotationFS tokenAnnotation : annotationIteratorPair .getSubIterator()) { tokens.add(tokenAnnotation.getCoveredText()); } tokensBySentence.add(tokens); } Assert.assertEquals(Collections.singletonList("A"), tokensBySentence.get(0)); Assert.assertEquals(Arrays.asList("H", "I"), tokensBySentence.get(1)); } } apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/AnnotatorsInitializationTest.java0100664 0001750 0001750 00000005132 14135770370 033731 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima; import java.io.File; import java.io.IOException; import org.apache.uima.UIMAFramework; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.cas.CAS; import org.apache.uima.pear.util.FileUtil; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceSpecifier; import org.apache.uima.util.InvalidXMLException; import org.apache.uima.util.XMLInputSource; import org.junit.Assert; /** * Test for initialization of the opennlp.uima Annotators */ public class AnnotatorsInitializationTest { private static final String PATHNAME = "src/test/resources/test-descriptors/"; // TODO: This test requires the SourceForge models, or other models to run, // but they are missing due to license issues since the project was migrated to Apache //@Test public void testInitializationExecutionAndReconfigure() { File f = new File(PATHNAME); for (String descName : f.list(new FileUtil.ExtFilenameFilter("xml"))) { if (!descName.equals("TypeSystem.xml")) { try { AnalysisEngine ae = produceAE(descName); CAS cas = ae.newCAS(); cas.setDocumentText("this is a dummy document text for initialization and reconfiguration"); ae.process(cas); ae.reconfigure(); } catch (Exception e) { Assert.fail(e.getLocalizedMessage() + " for desc " + descName); } } } } private AnalysisEngine produceAE(String descName) throws IOException, InvalidXMLException, ResourceInitializationException { File descFile = new File(PATHNAME + descName); XMLInputSource in = new XMLInputSource(descFile); ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in); return UIMAFramework.produceAnalysisEngine(specifier); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_test_java_opennlp_uima_dictionary_Dictiona0100644 0000000 0000000 00000000161 14135770370 032562 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/dictionary/DictionaryResourceTest.java apache-opennlp-1.9.4-src/opennlp-uima/src/test/java/opennlp/uima/dictionary/DictionaryResourceTest.j0100664 0001750 0001750 00000010210 14135770370 034154 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.dictionary; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.apache.uima.UIMAFramework; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceSpecifier; import org.apache.uima.util.InvalidXMLException; import org.apache.uima.util.XMLInputSource; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import opennlp.tools.util.StringList; import opennlp.uima.util.CasUtil; public class DictionaryResourceTest { private static final String PATHNAME = "src/test/resources/test-descriptors/"; private static AnalysisEngine AE; @BeforeClass public static void beforeClass() throws Exception { AE = produceAE("DictionaryNameFinder.xml"); } @AfterClass public static void afterClass() { AE.destroy(); // is this necessary? } private static AnalysisEngine produceAE(String descName) throws IOException, InvalidXMLException, ResourceInitializationException { File descFile = new File(PATHNAME + descName); XMLInputSource in = new XMLInputSource(descFile); ResourceSpecifier specifier = UIMAFramework.getXMLParser() .parseResourceSpecifier(in); return UIMAFramework.produceAnalysisEngine(specifier); } @Test public void testDictionaryWasLoaded() { try { DictionaryResource dic = (DictionaryResource) AE.getResourceManager() .getResource("/opennlp.uima.Dictionary"); // simple check if ordering always is the same... Assert.assertEquals( "[[Berlin], [Stockholm], [New,York], [London], [Copenhagen], [Paris]]", dic.getDictionary().toString()); // else we can do a simple test like this Assert.assertEquals("There should be six entries in the dictionary", 6, dic.getDictionary().asStringSet().size()); Assert.assertTrue("London should be in the dictionary", dic.getDictionary().contains(new StringList("London"))); } catch (Exception e) { Assert.fail("Dictionary was not loaded."); } } @Test public void testDictionaryNameFinder() { Set expectedLocations = new HashSet<>(); Collections.addAll(expectedLocations, "London", "Stockholm", "Copenhagen", "New York"); try { CAS cas = AE.newCAS(); CasUtil.deserializeXmiCAS(cas, DictionaryResourceTest.class .getResourceAsStream("/cas/dictionary-test.xmi")); AE.process(cas); Type locationType = cas.getTypeSystem().getType("opennlp.uima.Location"); FSIterator locationIterator = cas .getAnnotationIndex(locationType).iterator(); while (locationIterator.isValid()) { AnnotationFS annotationFS = locationIterator.get(); Assert.assertTrue(expectedLocations.contains(annotationFS.getCoveredText())); expectedLocations.remove(annotationFS.getCoveredText()); locationIterator.moveToNext(); } Assert.assertEquals(0, expectedLocations.size()); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.getLocalizedMessage()); } } } apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/cas/dictionary-test.xmi0100664 0001750 0001750 00000006776 14135770370 030277 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/cas/OPENNLP-676.xmi0100664 0001750 0001750 00000003641 14135770370 026574 0ustar00jeffjeff0000000 0000000 apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/dictionary.dic0100664 0001750 0001750 00000003500 14135770370 026474 0ustar00jeffjeff0000000 0000000 en org.apache.uima.DictionaryEntry New York Copenhagen Berlin Stockholm Paris London apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/Tokenizer.xml0100664 0001750 0001750 00000007132 14135770370 031665 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.tokenize.Tokenizer Tokenizer ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.tokenizer.IsAlphaNumericOptimization String false false opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.SentenceType uima.tcas.DocumentAnnotation en true true opennlp.uima.ModelName opennlp.uima.tokenize.TokenizerModelResource TokenModel file:test-models/en-token.bin opennlp.uima.tokenize.TokenizerModelResourceImpl opennlp.uima.ModelName TokenModel ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_test_resources_test-descriptors_Organizati0100644 0000000 0000000 00000000156 14135770370 032637 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/OrganizationNameFinder.xml apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/OrganizationNameFinder.xml0100664 0001750 0001750 00000007371 14135770370 034315 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Organization Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Organization en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource OrganizationModel file:test-models/en-ner-organization.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName OrganizationModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/SentenceDetector.xml0100664 0001750 0001750 00000006410 14135770370 033147 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.sentdetect.SentenceDetector Sentence Detector 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.ContainerType String false false opennlp.uima.SentenceType opennlp.uima.Sentence en opennlp.uima.ModelName opennlp.uima.sentdetect.SentenceModelResource SentenceModel file:test-models/en-sent.bin opennlp.uima.sentdetect.SentenceModelResourceImpl opennlp.uima.ModelName SentenceModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/PosTagger.xml0100664 0001750 0001750 00000007046 14135770370 031612 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.postag.POSTagger POS Tagger 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.POSFeature String false true opennlp.uima.SentenceType opennlp.uima.Sentence opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.POSFeature pos en opennlp.uima.ModelName opennlp.uima.postag.POSModelResource PosModel file:test-models/en-pos-maxent.bin opennlp.uima.postag.POSModelResourceImpl opennlp.uima.ModelName PosModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/DictionaryNameFinder.xml0100664 0001750 0001750 00000010624 14135770370 033751 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.DictionaryNameFinder Dictionary Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Location en opennlp.uima.Dictionary opennlp.uima.dictionary.DictionaryResource NameFinderDictionary file:src/test/resources/dictionary.dic opennlp.uima.dictionary.DictionaryResourceImpl opennlp.uima.Dictionary NameFinderDictionary apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/PersonNameFinder.xml0100664 0001750 0001750 00000007333 14135770370 033115 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Person Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Person en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource PersonModel file:test-models/en-ner-person.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName PersonModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/TypeSystem.xml0100664 0001750 0001750 00000006045 14135770370 032043 0ustar00jeffjeff0000000 0000000 OpenNLP TypeSystem This is the default OpenNLP type system. All the sample descriptors reference the types in this type system. To replace it against a custom type system change the mapping in the descriptors to the custom types and reference the custom type system. 1.5.2-incubating Apache Software Foundation opennlp.uima.Sentence uima.tcas.Annotation opennlp.uima.Token uima.tcas.Annotation pos Part of speech uima.cas.String opennlp.uima.Chunk uima.tcas.Annotation chunkType uima.cas.String opennlp.uima.Person uima.tcas.Annotation opennlp.uima.Organization uima.tcas.Annotation opennlp.uima.Location uima.tcas.Annotation opennlp.uima.Date uima.tcas.Annotation opennlp.uima.Time uima.tcas.Annotation opennlp.uima.Money uima.tcas.Annotation opennlp.uima.Percentage uima.tcas.Annotation apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/MoneyNameFinder.xml0100664 0001750 0001750 00000007140 14135770370 032732 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Money Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Money en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource MoneyModel file:test-models/en-ner-money.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName MoneyModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/LocationNameFinder.xml0100664 0001750 0001750 00000007156 14135770370 033422 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Location Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Location en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource LocationModel file:test-models/en-ner-location.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName LocationModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/TimeNameFinder.xml0100664 0001750 0001750 00000007140 14135770370 032541 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Time Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Person en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource TimeModel file:test-models/en-ner-time.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName TimeModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/PercentageNameFinder.xml0100664 0001750 0001750 00000007171 14135770370 033724 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Percentage Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Percentage en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource PercentageModel file:test-models/en-ner-percentage.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName PercentageModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/DateNameFinder.xml0100664 0001750 0001750 00000007453 14135770370 032527 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Date Name Finder 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Date en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource DateModel file:test-models/en-ner-date.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl opennlp.uima.ModelName DateModel apache-opennlp-1.9.4-src/opennlp-uima/src/test/resources/test-descriptors/Chunker.xml0100664 0001750 0001750 00000010776 14135770370 031322 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.chunker.Chunker Chunker 1.5.2-incubating Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.POSFeature String false true opennlp.uima.ChunkType String false true opennlp.uima.ChunkTagFeature String false true opennlp.uima.SentenceType opennlp.uima.Sentence opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.POSFeature pos opennlp.uima.ChunkType opennlp.uima.Chunk opennlp.uima.ChunkTagFeature chunkType en opennlp.uima.ModelName opennlp.uima.chunker.ChunkerModelResource ChunkerModel file:test-models/en-chunker.bin opennlp.uima.chunker.ChunkerModelResourceImpl opennlp.uima.ModelName ChunkerModel apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/AbstractTokenizer.java0100664 0001750 0001750 00000010577 14135770370 033275 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; public abstract class AbstractTokenizer extends CasAnnotator_ImplBase { protected final String name; protected UimaContext context; protected Logger logger; /** * Type of the sentence containing the tokens. */ protected Type sentenceType; /** * Type of the tokens to be created. */ protected Type tokenType; private Boolean isRemoveExistingAnnotations; protected AbstractTokenizer(String name) { this.name = name; } @Override public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; logger = context.getLogger(); if (logger.isLoggable(Level.INFO)) { logger.log(Level.INFO, "Initializing the " + name + " annotator."); } isRemoveExistingAnnotations = AnnotatorUtil.getOptionalBooleanParameter( context, UimaUtil.IS_REMOVE_EXISTINGS_ANNOTAIONS); if (isRemoveExistingAnnotations == null) { isRemoveExistingAnnotations = false; } } @Override public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { super.typeSystemInit(typeSystem); sentenceType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.SENTENCE_TYPE_PARAMETER); tokenType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); } protected void postProcessAnnotations(Span[] tokens, AnnotationFS[] tokenAnnotations) { } protected abstract Span[] tokenize(CAS cas, AnnotationFS sentence); @Override public void process(CAS cas) throws AnalysisEngineProcessException { FSIndex sentences = cas.getAnnotationIndex(sentenceType); for (AnnotationFS sentence : sentences) { if (isRemoveExistingAnnotations) { UimaUtil.removeAnnotations(cas, sentence, tokenType); } Span[] tokenSpans = tokenize(cas, sentence); int sentenceOffset = sentence.getBegin(); StringBuilder tokeninzedSentenceLog = new StringBuilder(); AnnotationFS[] tokenAnnotations = new AnnotationFS[tokenSpans.length]; for (int i = 0; i < tokenSpans.length; i++) { tokenAnnotations[i] = cas .createAnnotation(tokenType, sentenceOffset + tokenSpans[i].getStart(), sentenceOffset + tokenSpans[i].getEnd()); cas.getIndexRepository().addFS(tokenAnnotations[i]); if (logger.isLoggable(Level.FINER)) { tokeninzedSentenceLog.append(tokenAnnotations[i].getCoveredText()); tokeninzedSentenceLog.append(' '); } } if (logger.isLoggable(Level.FINER)) { // remove last space tokeninzedSentenceLog.delete(tokeninzedSentenceLog.length() - 2, tokeninzedSentenceLog.length() - 1); logger.log(Level.FINER, "\"" + tokeninzedSentenceLog.toString() + "\""); } postProcessAnnotations(tokenSpans, tokenAnnotations); } } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/SimpleTokenizer.java0100664 0001750 0001750 00000003753 14135770370 032761 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import org.apache.uima.UimaContext; import org.apache.uima.cas.CAS; import org.apache.uima.cas.text.AnnotationFS; import opennlp.tools.util.Span; /** * OpenNLP Simple Tokenizer annotator. *

* Mandatory parameters * * * * * *
Type Name Description
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
*/ public final class SimpleTokenizer extends AbstractTokenizer { /** * The OpenNLP simple tokenizer. */ private opennlp.tools.tokenize.SimpleTokenizer tokenizer = opennlp.tools.tokenize.SimpleTokenizer.INSTANCE; /** * Initializes the current instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public SimpleTokenizer() { super("OpenNLP Simple Tokenizer"); // must not be implemented ! } @Override protected Span[] tokenize(CAS cas, AnnotationFS sentence) { return tokenizer.tokenizePos(sentence.getCoveredText()); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/Tokenizer.java0100664 0001750 0001750 00000010446 14135770370 031604 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import org.apache.uima.UimaContext; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Feature; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import opennlp.tools.tokenize.TokenizerME; import opennlp.tools.tokenize.TokenizerModel; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * OpenNLP Tokenizer annotator. *

* Mandatory parameters * * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
*

* Optional parameters * * * * *
Type Name Description
String opennlp.uima.ProbabilityFeature The name of the double * probability feature (not set by default)
* * @see TokenizerME */ public final class Tokenizer extends AbstractTokenizer { /** * The OpenNLP tokenizer. */ private TokenizerME tokenizer; private Feature probabilityFeature; /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public Tokenizer() { super("OpenNLP Tokenizer"); // must not be implemented ! } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); TokenizerModel model; try { TokenizerModelResource modelResource = (TokenizerModelResource) context .getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } tokenizer = new TokenizerME(model); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { super.typeSystemInit(typeSystem); probabilityFeature = AnnotatorUtil .getOptionalFeatureParameter(context, tokenType, UimaUtil.PROBABILITY_FEATURE_PARAMETER, CAS.TYPE_NAME_DOUBLE); } @Override protected Span[] tokenize(CAS cas, AnnotationFS sentence) { return tokenizer.tokenizePos(sentence.getCoveredText()); } @Override protected void postProcessAnnotations(Span[] tokens, AnnotationFS[] tokenAnnotations) { // if interest if (probabilityFeature != null) { double[] tokenProbabilties = tokenizer.getTokenProbabilities(); for (int i = 0; i < tokenAnnotations.length; i++) { tokenAnnotations[i].setDoubleValue(probabilityFeature, tokenProbabilties[i]); } } } /** * Releases allocated resources. */ public void destroy() { // dereference model to allow garbage collection tokenizer = null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_tokenize_TokenizerM0100644 0000000 0000000 00000000157 14135770370 032554 xustar000000000 0000000 111 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/TokenizerModelResource.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/TokenizerModelResource.jav0100664 0001750 0001750 00000002330 14135770370 034125 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import org.apache.uima.analysis_engine.AnalysisEngine; import opennlp.tools.tokenize.TokenizerModel; /** * A {@link TokenizerModel} which can be shared between {@link AnalysisEngine}s * and loaded via the UIMA resource model. */ public interface TokenizerModelResource { /** * Retrieves the shared model instance. * * @return the shared model instance */ TokenizerModel getModel(); } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/package.html0100664 0001750 0001750 00000001740 14135770370 031245 0ustar00jeffjeff0000000 0000000 Package related to finding tokens or word segments. ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_tokenize_TokenizerM0100644 0000000 0000000 00000000163 14135770370 032551 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/TokenizerModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/TokenizerModelResourceImpl0100664 0001750 0001750 00000002425 14135770370 034175 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import java.io.IOException; import java.io.InputStream; import opennlp.tools.tokenize.TokenizerModel; import opennlp.uima.util.AbstractModelResource; public class TokenizerModelResourceImpl extends AbstractModelResource implements TokenizerModelResource { public TokenizerModel getModel() { return model; } @Override protected TokenizerModel loadModel(InputStream in) throws IOException { return new TokenizerModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/tokenize/WhitespaceTokenizer.java0100664 0001750 0001750 00000003612 14135770370 033616 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.tokenize; import org.apache.uima.UimaContext; import org.apache.uima.cas.CAS; import org.apache.uima.cas.text.AnnotationFS; import opennlp.tools.util.Span; /** * OpenNLP Whitespace Tokenizer annotator. *

* Mandatory parameters * * * * * *
Type Name Description
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
*/ public final class WhitespaceTokenizer extends AbstractTokenizer { /** * Initializes the current instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public WhitespaceTokenizer() { super("OpenNLP Whitespace Tokenizer"); // must not be implemented ! } @Override protected Span[] tokenize(CAS cas, AnnotationFS sentence) { return opennlp.tools.tokenize.WhitespaceTokenizer.INSTANCE. tokenizePos(sentence.getCoveredText()); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/parser/Parser.java0100664 0001750 0001750 00000025056 14135770370 030535 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.parser; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.ArrayFS; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.parser.Parse; import opennlp.tools.parser.ParserFactory; import opennlp.tools.parser.ParserModel; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.ContainingConstraint; import opennlp.uima.util.UimaUtil; /** * Abstract base class for OpenNLP Parser annotators. *

* Mandatory parameters * * * * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
String opennlp.uima.ParseType The full name of the parse type
String opennlp.uima.TypeFeature The name of the type feature
*

* Optional parameters * * * * *
Type Name Description
Integer opennlp.uima.BeamSize
*/ public class Parser extends CasAnnotator_ImplBase { public static final String PARSE_TYPE_PARAMETER = "opennlp.uima.ParseType"; public static final String TYPE_FEATURE_PARAMETER = "opennlp.uima.TypeFeature"; public static final String CHILDREN_FEATURE_PARAMETER = "opennlp.uima.ChildrenFeature"; public static final String PROBABILITY_FEATURE_PARAMETER = "opennlp.uima.ProbabilityFeature"; protected UimaContext context; protected Logger mLogger; protected opennlp.tools.parser.Parser mParser; private Type mSentenceType; private Type mTokenType; private Type mParseType; private Feature mTypeFeature; private Feature childrenFeature; private Feature probabilityFeature; /** * Initializes the current instance with the given context. */ public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; mLogger = context.getLogger(); if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Initializing the OpenNLP Parser."); } ParserModel model; try { ParserModelResource modelResource = (ParserModelResource) context .getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } mParser = ParserFactory.create(model); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { mSentenceType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.SENTENCE_TYPE_PARAMETER); mTokenType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); mParseType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, PARSE_TYPE_PARAMETER); mTypeFeature = AnnotatorUtil.getRequiredFeatureParameter(context, mParseType, TYPE_FEATURE_PARAMETER, CAS.TYPE_NAME_STRING); childrenFeature = AnnotatorUtil.getRequiredFeatureParameter(context, mParseType, CHILDREN_FEATURE_PARAMETER, CAS.TYPE_NAME_FS_ARRAY); probabilityFeature = AnnotatorUtil.getOptionalFeatureParameter(context, mParseType, PROBABILITY_FEATURE_PARAMETER, CAS.TYPE_NAME_DOUBLE); } /** * Performs parsing on the given {@link CAS} object. */ public void process(CAS cas) { FSIndex sentences = cas.getAnnotationIndex(mSentenceType); for (AnnotationFS sentence : sentences) { process(cas, sentence); } } protected void process(CAS cas, AnnotationFS sentenceAnnotation) { FSIndex allTokens = cas.getAnnotationIndex(mTokenType); ContainingConstraint containingConstraint = new ContainingConstraint(sentenceAnnotation); String sentence = sentenceAnnotation.getCoveredText(); Iterator containingTokens = cas.createFilteredIterator( allTokens.iterator(), containingConstraint); List tokenSpans = new LinkedList<>(); while (containingTokens.hasNext()) { AnnotationFS token = containingTokens.next(); tokenSpans.add(new Span(token.getBegin() - sentenceAnnotation.getBegin(), token.getEnd() - sentenceAnnotation.getBegin())); } ParseConverter converter = new ParseConverter(sentence, tokenSpans.toArray(new Span[tokenSpans.size()])); Parse unparsedTree = converter.getParseForTagger(); if (unparsedTree.getChildCount() > 0) { Parse parse = mParser.parse(unparsedTree); // TODO: We need a strategy to handle the case that a full // parse could not be found. What to do in this case? parse = converter.transformParseFromTagger(parse); if (mLogger.isLoggable(Level.INFO)) { StringBuffer parseString = new StringBuffer(); parse.show(parseString); mLogger.log(Level.INFO, parseString.toString()); } createAnnotation(cas, sentenceAnnotation.getBegin(), parse); } } protected AnnotationFS createAnnotation(CAS cas, int offset, Parse parse) { Parse[] parseChildren = parse.getChildren(); AnnotationFS[] parseChildAnnotations = new AnnotationFS[parseChildren.length]; // do this for all children for (int i = 0; i < parseChildren.length; i++) { parseChildAnnotations[i] = createAnnotation(cas, offset, parseChildren[i]); } AnnotationFS parseAnnotation = cas.createAnnotation(mParseType, offset + parse.getSpan().getStart(), offset + parse.getSpan().getEnd()); parseAnnotation.setStringValue(mTypeFeature, parse.getType()); if (probabilityFeature != null) { parseAnnotation.setDoubleValue(probabilityFeature, parse.getProb()); } ArrayFS childrenArray = cas.createArrayFS(parseChildAnnotations.length); childrenArray.copyFromArray(parseChildAnnotations, 0, 0, parseChildAnnotations.length); parseAnnotation.setFeatureValue(childrenFeature, childrenArray); cas.getIndexRepository().addFS(parseAnnotation); return parseAnnotation; } /** * Releases allocated resources. */ public void destroy() { mParser = null; } private static class ParseConverter { private final String mSentence; private Map mIndexMap = new HashMap<>(); private Parse mParseForTagger; /** * Initializes a new instance. * * @param sentence * @param tokens */ public ParseConverter(String sentence, Span[] tokens) { mSentence = sentence; StringBuilder sentenceStringBuilder = new StringBuilder(); String[] tokenList = new String[tokens.length]; for (int i = 0; i < tokens.length; i++) { String tokenString = tokens[i].getCoveredText(sentence).toString(); String escapedToken = escape(tokenString); tokenList[i] = escapedToken; int escapedStart = sentenceStringBuilder.length(); int start = tokens[i].getStart(); mIndexMap.put(escapedStart, start); int escapedEnd = escapedStart + escapedToken.length(); int end = tokens[i].getEnd(); mIndexMap.put(escapedEnd, end); sentenceStringBuilder.append(tokenList[i]); sentenceStringBuilder.append(' '); } // remove last space if (sentenceStringBuilder.length() > 0) { sentenceStringBuilder.setLength(sentenceStringBuilder.length() - 1); } String tokenizedSentence = sentenceStringBuilder.toString(); mParseForTagger = new Parse(tokenizedSentence, new Span(0, tokenizedSentence.length()), "INC", 1, null); int start = 0; for (String token : tokenList) { mParseForTagger.insert(new Parse(tokenizedSentence, new Span(start, start + token.length()), opennlp.tools.parser.chunking.Parser.TOK_NODE, 0f, 0)); start += token.length() + 1; } } private static String escape(String text) { return text; } /** * Creates the parse for the tagger. * * @return the parse which can be passed to the tagger */ Parse getParseForTagger() { return mParseForTagger; } /** * Converts the parse from the tagger back. * * @param parseFromTagger * @return the final parse */ Parse transformParseFromTagger(Parse parseFromTagger) { int start = parseFromTagger.getSpan().getStart(); int end = parseFromTagger.getSpan().getEnd(); Parse transformedParse = new Parse(mSentence, new Span( mIndexMap.get(start), mIndexMap.get(end)), parseFromTagger.getType(), parseFromTagger.getProb(), parseFromTagger.getHeadIndex()); Parse[] parseFromTaggerChildrens = parseFromTagger.getChildren(); for (Parse child : parseFromTaggerChildrens) { transformedParse.insert(transformParseFromTagger(child)); } return transformedParse; } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_parser_ParserModelR0100644 0000000 0000000 00000000156 14135770370 032467 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/parser/ParserModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/parser/ParserModelResourceImpl.java0100664 0001750 0001750 00000002373 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.parser; import java.io.IOException; import java.io.InputStream; import opennlp.tools.parser.ParserModel; import opennlp.uima.util.AbstractModelResource; public class ParserModelResourceImpl extends AbstractModelResource implements ParserModelResource { public ParserModel getModel() { return model; } @Override protected ParserModel loadModel(InputStream in) throws IOException { return new ParserModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/parser/ParserModelResource.java0100664 0001750 0001750 00000001655 14135770370 033225 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.parser; import opennlp.tools.parser.ParserModel; public interface ParserModelResource { ParserModel getModel(); } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/AbstractModelResource.java0100664 0001750 0001750 00000003112 14135770370 033203 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.io.IOException; import java.io.InputStream; import org.apache.uima.resource.DataResource; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.SharedResourceObject; public abstract class AbstractModelResource implements SharedResourceObject { protected T model; protected abstract T loadModel(InputStream in) throws IOException; public void load(DataResource resource) throws ResourceInitializationException { try { model = loadModel(resource.getInputStream()); } catch (IOException e) { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.IO_ERROR_MODEL_READING, new Object[] { e.getMessage()}, e); } } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/UimaUtil.java0100664 0001750 0001750 00000007141 14135770370 030506 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; /** * This is a util class for uima operations. */ public final class UimaUtil { private UimaUtil(){ // this is util class must not be instantiated } /** * The token type parameter. */ public static final String TOKEN_TYPE_PARAMETER = "opennlp.uima.TokenType"; /** * The pos feature parameter. */ public static final String POS_FEATURE_PARAMETER = "opennlp.uima.POSFeature"; /** * The model parameter. */ public static String MODEL_PARAMETER = "opennlp.uima.ModelName"; /** * The sentence type parameter. */ public static String SENTENCE_TYPE_PARAMETER = "opennlp.uima.SentenceType"; /** * The beam size parameter. */ public static final String BEAM_SIZE_PARAMETER = "opennlp.uima.BeamSize"; public static final String LANGUAGE_PARAMETER = "opennlp.uima.Language"; public static final String DICTIONARY_PARAMETER = "opennlp.uima.Dictionary"; public static final String TRAINING_PARAMS_FILE_PARAMETER = "opennlp.uima.TrainingParamsFile"; public static final String CUTOFF_PARAMETER = "opennlp.uima.Cutoff"; public static final String ITERATIONS_PARAMETER = "opennlp.uima.Iterations"; public static final String PROBABILITY_FEATURE_PARAMETER = "opennlp.uima.ProbabilityFeature"; public static final String IS_REMOVE_EXISTINGS_ANNOTAIONS = "opennlp.uima.IsRemoveExistingAnnotations"; public static final String ADDITIONAL_TRAINING_DATA_FILE = "opennlp.uima.AdditionalTrainingDataFile"; public static final String ADDITIONAL_TRAINING_DATA_ENCODING = "opennlp.uima.AdditionalTrainingDataEncoding"; /** * Removes all annotations of type removeAnnotationType which are contained * by annotations of type containerAnnotationType. * * @param cas * @param containerAnnotation * @param removeAnnotationType */ public static void removeAnnotations(CAS cas, AnnotationFS containerAnnotation, Type removeAnnotationType) { FSIndex allRemoveAnnotations = cas .getAnnotationIndex(removeAnnotationType); ContainingConstraint containingConstraint = new ContainingConstraint( containerAnnotation); Iterator containingTokens = cas.createFilteredIterator( allRemoveAnnotations.iterator(), containingConstraint); Collection removeAnnotations = new LinkedList<>(); while (containingTokens.hasNext()) { removeAnnotations.add(containingTokens.next()); } for (Iterator it = removeAnnotations.iterator(); it.hasNext();) { cas.removeFsFromIndexes(it.next()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_util_OpenNlpAnnotat0100644 0000000 0000000 00000000165 14135770370 032511 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/OpenNlpAnnotatorProcessException.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/OpenNlpAnnotatorProcessExcepti0100664 0001750 0001750 00000002662 14135770370 034162 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; public class OpenNlpAnnotatorProcessException extends AnalysisEngineProcessException { private static final long serialVersionUID = 0; public OpenNlpAnnotatorProcessException(String messageKey, Object[] arguments) { super(ExceptionMessages.MESSAGE_CATALOG, messageKey, arguments); } public OpenNlpAnnotatorProcessException(String messageKey, Object[] arguments, Throwable t) { super(ExceptionMessages.MESSAGE_CATALOG, messageKey, arguments, t); } public OpenNlpAnnotatorProcessException(Throwable t) { super(t); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/OpennlpUtil.java0100664 0001750 0001750 00000006430 14135770370 031226 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.uima.resource.ResourceInitializationException; import opennlp.tools.ml.TrainerFactory; import opennlp.tools.ml.maxent.GISModel; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.BaseModel; /** * This class contains utils methods for the maxent library. */ final public class OpennlpUtil { private OpennlpUtil() { // this is util class must not be instantiated } /** * Serializes a {@link GISModel} and writes it to the given * {@link OutputStream}. * * @param model model to serialize * @throws IOException IOException */ public static void serialize(BaseModel model, File modelFile) throws IOException { try (OutputStream fileOut = new FileOutputStream(modelFile); OutputStream modelOut = new BufferedOutputStream(fileOut)) { model.serialize(modelOut); } } public static byte[] loadBytes(File inFile) throws IOException { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); try (InputStream in = new FileInputStream(inFile)) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > 0) { bytes.write(buffer, 0, len); } } return bytes.toByteArray(); } public static TrainingParameters loadTrainingParams(String inFileValue, boolean isSequenceTrainingAllowed) throws ResourceInitializationException { TrainingParameters params; if (inFileValue != null) { try (InputStream paramsIn = new FileInputStream(new File(inFileValue))) { params = new opennlp.tools.util.TrainingParameters(paramsIn); } catch (IOException e) { throw new ResourceInitializationException(e); } if (!TrainerFactory.isValid(params)) { throw new ResourceInitializationException(new Exception("Training parameters file is invalid!")); } TrainerFactory.TrainerType trainerType = TrainerFactory.getTrainerType(params); if (!isSequenceTrainingAllowed && TrainerFactory.TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { throw new ResourceInitializationException(new Exception("Sequence training is not supported!")); } } else { params = TrainingParameters.defaultParams(); } return params; } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/AnnotationComboIterator.java0100664 0001750 0001750 00000015344 14135770370 033565 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.util.Iterator; import java.util.NoSuchElementException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Type; import org.apache.uima.cas.text.AnnotationFS; /** * UIMA Annotation iterator combination of super- and subiterator. * *

* This class supports a common idiom in UIMA annotation iteration, where you need to iterate over * two kinds of annotations in lock-step. For example, you often want to iterate over all sentences, * then do something on each sentence and all tokens in that sentence. Here's how to do this with * this class. * *

 * CAS cas = ...
 * Type sentenceType = ..., tokenType = ...
 * // Init with CAS, upper and lower type.
 * AnnotationComboIterator it = new AnnotationComboIterator(cas, sentenceType, tokenType);
 * // Iterate over sentences
 * for (AnnotationIteratorPair aiPair : it) {
 *   // Obtain sentence annotation
 *   AnnotationFS sentence = aiPair.getAnnotation();
 *   // Do something with sentence...
 *
 *   // Iterate over tokens
 *   for (AnnotationFS token : aiPair.getSubIterator()) {
 *     // Do something with tokens...
 *   }
 * }
 * 
* * The combo iterator returns in its next() method a pair of an annotation of the upper * type (e.g., sentence), and an iterator over annotations of the lower type (e.g., tokens). Note * that both the upper and lower iterator also implement the Iterable interface and can be use * directly in for-loops. * *

* Note that only this usage is safe. To keep the implementation efficient, the combo iterator keeps * two iterators internally that it increments in lock-step. Do not attempt, for example, to collect * more than one of the subiterators (token iterator in our example). Do not use this class if your * intended usage does not fall into this pattern. */ public class AnnotationComboIterator implements Iterable, Iterator { // Internal implementation of subiterator private class AnnotationIterator implements Iterable, Iterator { private AnnotationIterator() { super(); } public AnnotationIterator iterator() { return this; } public boolean hasNext() { if (AnnotationComboIterator.this.nextLowerChecked) { return AnnotationComboIterator.this.nextLowerAvailable; } AnnotationComboIterator.this.nextLowerChecked = true; AnnotationComboIterator.this.nextLowerAvailable = false; if (AnnotationComboIterator.this.lowerIt.isValid()) { AnnotationFS lowerFS = AnnotationComboIterator.this.lowerIt.get(); int lowerBegin = lowerFS.getBegin(); while (lowerBegin < AnnotationComboIterator.this.upperBegin) { AnnotationComboIterator.this.lowerIt.moveToNext(); if (AnnotationComboIterator.this.lowerIt.isValid()) { lowerFS = AnnotationComboIterator.this.lowerIt.get(); lowerBegin = lowerFS.getBegin(); } else { return false; } } if (AnnotationComboIterator.this.upperEnd >= lowerFS.getEnd()) { AnnotationComboIterator.this.nextLowerAvailable = true; } } return AnnotationComboIterator.this.nextLowerAvailable; } public AnnotationFS next() { if (AnnotationComboIterator.this.nextLowerChecked) { if (!AnnotationComboIterator.this.nextLowerAvailable) { throw new NoSuchElementException(); } } else if (!hasNext()) { throw new NoSuchElementException(); } AnnotationComboIterator.this.nextLowerChecked = false; final AnnotationFS rv = AnnotationComboIterator.this.lowerIt.get(); AnnotationComboIterator.this.lowerIt.moveToNext(); return rv; } public void remove() { throw new UnsupportedOperationException(); } } // The upper iterator (e.g., sentence iterator) private final FSIterator upperIt; // The lower iterator (e.g., token iterator) private final FSIterator lowerIt; // Start position of current upper (e.g., sentence) annotation. Together with the end position, // this determines the boundaries for the lower iterator. private int upperBegin; // End position of current upper annotation. private int upperEnd; // Have we already checked that a next lower annotation is available? Premature optimization... private boolean nextLowerChecked = false; // State variable that holds the status of the lower iterator only in case that nextLowerChecked // is true. private boolean nextLowerAvailable = false; /** * Create a new combo iterator. * * @param cas * The CAS we're operating on. * @param upper * The type of the upper iterator, e.g., sentence. * @param lower * The type of the lower iterator, e.g., token. */ public AnnotationComboIterator(CAS cas, Type upper, Type lower) { this.upperIt = cas.getAnnotationIndex(upper).iterator(); this.lowerIt = cas.getAnnotationIndex(lower).iterator(); this.upperIt.moveToFirst(); this.lowerIt.moveToFirst(); if (this.upperIt.isValid()) { final AnnotationFS upperFS = this.upperIt.get(); this.upperBegin = upperFS.getBegin(); this.upperEnd = upperFS.getEnd(); } else { this.nextLowerChecked = true; } } public boolean hasNext() { return this.upperIt.hasNext(); } public AnnotationIteratorPair next() { if (!this.upperIt.hasNext()) { throw new NoSuchElementException(); } final AnnotationFS upperFS = this.upperIt.next(); this.upperBegin = upperFS.getBegin(); this.upperEnd = upperFS.getEnd(); this.nextLowerChecked = false; return new AnnotationIteratorPair(upperFS, new AnnotationIterator()); } public Iterator iterator() { return this; } /** * Not supported. */ public void remove() { throw new UnsupportedOperationException(); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/AnnotatorUtil.java0100664 0001750 0001750 00000036276 14135770370 031573 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.io.IOException; import java.io.InputStream; import org.apache.uima.UimaContext; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.dictionary.Dictionary; /** * This is a utility class for Annotators. */ public final class AnnotatorUtil { private AnnotatorUtil() { // util class not must not instantiated } /** * Retrieves a type of the given name from the given type system. * * @param typeSystem * @param name * @return the type * @throws AnalysisEngineProcessException */ public static Type getType(TypeSystem typeSystem, String name) throws AnalysisEngineProcessException { Type type = typeSystem.getType(name); if (type == null) { throw new OpenNlpAnnotatorProcessException( ExceptionMessages.TYPE_NOT_FOUND, new Object[] {name}); } return type; } /** * Checks if the given feature has the expected type otherwise * an exception is thrown. * * @param feature * @param expectedType * @throws AnalysisEngineProcessException - if type does not match */ private static void checkFeatureType(Feature feature, String expectedType) throws AnalysisEngineProcessException { if (!feature.getRange().getName().equals(expectedType)) { throw new OpenNlpAnnotatorProcessException( ExceptionMessages.WRONG_FEATURE_TYPE, new Object[] {feature.getName(), expectedType }); } } public static Feature getRequiredFeature(Type type, String featureName) throws AnalysisEngineProcessException { Feature feature = type.getFeatureByBaseName(featureName); if (feature == null) { throw new OpenNlpAnnotatorProcessException( ExceptionMessages.FEATURE_NOT_FOUND, new Object[] {type.getName(), featureName}); } return feature; } /** * Retrieves a required feature from the given type. * * @param type the type * @param featureName the name of the feature * @param rangeType the expected range type * @return the requested parameter * @throws AnalysisEngineProcessException */ public static Feature getRequiredFeature(Type type, String featureName, String rangeType) throws AnalysisEngineProcessException { Feature feature = getRequiredFeature(type, featureName); checkFeatureType(feature, rangeType); return feature; } public static Feature getRequiredFeatureParameter(UimaContext context, Type type, String featureNameParameter) throws AnalysisEngineProcessException { String featureName; try { featureName = getRequiredStringParameter(context, featureNameParameter); } catch (ResourceInitializationException e) { throw new OpenNlpAnnotatorProcessException(e); } return getRequiredFeature(type, featureName); } public static Feature getRequiredFeatureParameter(UimaContext context, Type type, String featureNameParameter, String rangeTypeName) throws AnalysisEngineProcessException { String featureName; try { featureName = getRequiredStringParameter(context, featureNameParameter); } catch (ResourceInitializationException e) { throw new OpenNlpAnnotatorProcessException(e); } return getRequiredFeature(type, featureName, rangeTypeName); } public static Type getRequiredTypeParameter(UimaContext context, TypeSystem typeSystem, String parameter) throws AnalysisEngineProcessException { String typeName; try { typeName = getRequiredStringParameter(context, parameter); } catch (ResourceInitializationException e) { throw new OpenNlpAnnotatorProcessException(e); } return getType(typeSystem, typeName); } /** * Retrieves a required parameter from the given context. * * @param context * @param parameter * @return the requested parameter * @throws ResourceInitializationException */ public static String getRequiredStringParameter(UimaContext context, String parameter) throws ResourceInitializationException { String value = getOptionalStringParameter(context, parameter); checkForNull(value, parameter); return value; } /** * Retrieves a required parameter from the given context. * * @param context * @param parameter * @return the requested parameter * @throws ResourceInitializationException */ public static Integer getRequiredIntegerParameter(UimaContext context, String parameter) throws ResourceInitializationException { Integer value = getOptionalIntegerParameter(context, parameter); checkForNull(value, parameter); return value; } /** * Retrieves a required parameter from the given context. * * @param context * @param parameter * @return the requested parameter * @throws ResourceInitializationException */ public static Float getRequiredFloatParameter(UimaContext context, String parameter) throws ResourceInitializationException { Float value = getOptionalFloatParameter(context, parameter); checkForNull(value, parameter); return value; } /** * Retrieves a required parameter from the given context. * * @param context * @param parameter * @return the requested parameter * @throws ResourceInitializationException */ public static Boolean getRequiredBooleanParameter(UimaContext context, String parameter) throws ResourceInitializationException { Boolean value = getOptionalBooleanParameter(context, parameter); checkForNull(value, parameter); return value; } private static void checkForNull(Object value, String parameterName) throws ResourceInitializationException { if (value == null) { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.PARAMETER_NOT_FOUND, new Object[] {parameterName}); } } public static Feature getOptionalFeatureParameter(UimaContext context, Type nameType, String featureNameParameter, String rangeTypeName) throws AnalysisEngineProcessException { String featureName; try { featureName = getOptionalStringParameter(context, featureNameParameter); } catch (ResourceInitializationException e) { throw new OpenNlpAnnotatorProcessException(e); } if (featureName != null) { return getOptionalFeature(nameType, featureName, rangeTypeName); } else { return null; } } public static Feature getOptionalFeature(Type type, String featureName, String rangeType) throws AnalysisEngineProcessException { Feature feature = type.getFeatureByBaseName(featureName); checkFeatureType(feature, rangeType); return feature; } public static Type getOptionalTypeParameter(UimaContext context, TypeSystem typeSystem, String parameter) throws AnalysisEngineProcessException { String typeName; try { typeName = getOptionalStringParameter(context, parameter); } catch (ResourceInitializationException e) { throw new OpenNlpAnnotatorProcessException(e); } if (typeName != null) { return getType(typeSystem, typeName); } else { return null; } } /** * Retrieves an optional parameter from the given context. * * @param context * @param parameter * @return the parameter or null if not set * @throws ResourceInitializationException */ public static String getOptionalStringParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = getOptionalParameter(context, parameter); if (value instanceof String) { return (String) value; } else if (value == null) { return null; } else { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.WRONG_PARAMETER_TYPE, new Object[] {parameter, "String"}); } } public static String[] getOptionalStringArrayParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = getOptionalParameter(context, parameter); if (value instanceof String[]) { return (String[]) value; } else if (value == null) { return new String[0]; } else { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.WRONG_PARAMETER_TYPE, new Object[] {parameter, "String array"}); } } /** * Retrieves an optional parameter from the given context. * * @param context * @param parameter * @return the parameter or null if not set * @throws ResourceInitializationException */ public static Integer getOptionalIntegerParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = getOptionalParameter(context, parameter); if (value instanceof Integer) { return (Integer) value; } else if (value == null) { return null; } else { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.WRONG_PARAMETER_TYPE, new Object[] {parameter, "Integer"}); } } /** * Retrieves an optional parameter from the given context. * * @param context * @param parameter * @return the parameter or null if not set * @throws ResourceInitializationException */ public static Float getOptionalFloatParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = getOptionalParameter(context, parameter); if (value instanceof Float) { return (Float) value; } else if (value == null) { return null; } else { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.WRONG_PARAMETER_TYPE, new Object[] {parameter, "Float"}); } } /** * Retrieves an optional parameter from the given context. * * @param context * @param parameter * @return the parameter or null if not set * @throws ResourceInitializationException */ public static Boolean getOptionalBooleanParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = getOptionalParameter(context, parameter); if (value instanceof Boolean) { return (Boolean) value; } else if (value == null) { return null; } else { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.WRONG_PARAMETER_TYPE, new Object[] {parameter, "Boolean"}); } } private static Object getOptionalParameter(UimaContext context, String parameter) throws ResourceInitializationException { Object value = context.getConfigParameterValue(parameter); Logger logger = context.getLogger(); if (logger.isLoggable(Level.INFO)) { logger.log(Level.INFO, parameter + " = " + (value != null ? value.toString() : "not set")); } return value; } /** * Retrieves a resource as stream from the given context. * * @param context * @param name * @return the stream * @throws ResourceInitializationException */ public static InputStream getResourceAsStream(UimaContext context, String name) throws ResourceInitializationException { InputStream inResource = getOptionalResourceAsStream(context, name); if (inResource == null) { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.IO_ERROR_MODEL_READING, new Object[] {name + " could not be found!"}); } return inResource; } public static InputStream getOptionalResourceAsStream(UimaContext context, String name) throws ResourceInitializationException { InputStream inResource; try { inResource = context.getResourceAsStream(name); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } return inResource; } public static Dictionary createOptionalDictionary(UimaContext context, String dictionaryParameter) throws ResourceInitializationException { String dictionaryName = AnnotatorUtil.getOptionalStringParameter(context, dictionaryParameter); Dictionary dictionary = null; if (dictionaryName != null) { Logger logger = context.getLogger(); try { InputStream dictIn = AnnotatorUtil.getOptionalResourceAsStream(context, dictionaryName); if (dictIn == null) { String message = "The dictionary file " + dictionaryName + " does not exist!"; if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, message); } return null; } dictionary = new Dictionary(dictIn); } catch (IOException e) { // if this fails just print error message and continue String message = "IOException during dictionary reading, " + "running without dictionary: " + e.getMessage(); if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, message); } } return dictionary; } else { return null; } } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/ExceptionMessages.java0100664 0001750 0001750 00000003211 14135770370 032375 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; /** * This class contains constants for the exception messages in the exception * massage catalog. */ public class ExceptionMessages { public static final String MESSAGE_CATALOG = "opennlp.uima.util.ExceptionMessages"; public static final String IO_ERROR_MODEL_READING = "io_error_model_reading"; public static final String IO_ERROR_DICTIONARY_READING = "io_error_dictionary_reading"; public static final String INVALID_DICTIONARY_FORMAT = "invalid_dictionary_format"; public static final String PARAMETER_NOT_FOUND = "parameter_not_found"; public static final String WRONG_PARAMETER_TYPE = "wrong_parameter_type"; public static final String TYPE_NOT_FOUND = "type_not_found"; public static final String FEATURE_NOT_FOUND = "feature_not_found"; public static final String WRONG_FEATURE_TYPE = "wrong_feature_type"; } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/ContainingConstraint.java0100664 0001750 0001750 00000004403 14135770370 033111 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.util.Collection; import java.util.LinkedList; import org.apache.uima.cas.FSMatchConstraint; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.text.AnnotationFS; /** * Checks if an AnnotationFS is contained by the given AnnotationFS. */ public final class ContainingConstraint implements FSMatchConstraint { private static final long serialVersionUID = 1; private Collection mContainingAnnotations = new LinkedList<>(); /** * Initializes a new instance. */ public ContainingConstraint() { // does currently nothing } /** * Initializes a new instance. * * @param containingAnnotation */ public ContainingConstraint(AnnotationFS containingAnnotation) { mContainingAnnotations.add(containingAnnotation); } /** * Checks if the given FeatureStructure match the constraint. */ public boolean match(FeatureStructure featureStructure) { if (!(featureStructure instanceof AnnotationFS)) { return false; } AnnotationFS annotation = (AnnotationFS) featureStructure; for (AnnotationFS containingAnnotation : mContainingAnnotations) { if (isContaining(annotation, containingAnnotation)) { return true; } } return false; } private boolean isContaining(AnnotationFS annotation, AnnotationFS containing) { return (containing.getBegin() <= annotation.getBegin()) && (containing.getEnd() >= annotation.getEnd()); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/AnnotationComparator.java0100664 0001750 0001750 00000002466 14135770370 033124 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import java.util.Comparator; import org.apache.uima.cas.text.AnnotationFS; /** * Checks two annotations for equality. */ public class AnnotationComparator implements Comparator { /** * Compares the begin indexes of the annotations. * * @param a - first annotation * @param b - second annotation * * @return 0 if equals, < 0 if before and > 0 if after */ public int compare(AnnotationFS a, AnnotationFS b) { return a.getBegin() - b.getBegin(); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/util/AnnotationIteratorPair.java0100664 0001750 0001750 00000002502 14135770370 033411 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.util; import org.apache.uima.cas.text.AnnotationFS; /** * A pair of a UIMA annotation and an annotation iterator. */ public final class AnnotationIteratorPair { private final AnnotationFS annot; private final Iterable it; public AnnotationIteratorPair(AnnotationFS a, Iterable it) { super(); this.annot = a; this.it = it; } public AnnotationFS getAnnotation() { return this.annot; } public Iterable getSubIterator() { return this.it; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_namefind_TokenNameF0100644 0000000 0000000 00000000171 14135770370 032401 xustar000000000 0000000 121 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/TokenNameFinderModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/TokenNameFinderModelResour0100664 0001750 0001750 00000002477 14135770370 034042 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.namefind; import java.io.IOException; import java.io.InputStream; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.uima.util.AbstractModelResource; public class TokenNameFinderModelResourceImpl extends AbstractModelResource implements TokenNameFinderModelResource { public TokenNameFinderModel getModel() { return model; } @Override protected TokenNameFinderModel loadModel(InputStream in) throws IOException { return new TokenNameFinderModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/AbstractNameFinder.java0100664 0001750 0001750 00000015102 14135770370 033251 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.namefind; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotationComboIterator; import opennlp.uima.util.AnnotationIteratorPair; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; abstract class AbstractNameFinder extends CasAnnotator_ImplBase { protected final String name; protected Type mSentenceType; protected Type mTokenType; protected Type mNameType; protected Map mNameTypeMapping = Collections.emptyMap(); protected UimaContext context; protected Logger mLogger; private Boolean isRemoveExistingAnnotations; AbstractNameFinder(String name) { this.name = name; } protected void initialize() throws ResourceInitializationException { } public final void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; mLogger = context.getLogger(); if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Initializing the " + name + "."); } isRemoveExistingAnnotations = AnnotatorUtil.getOptionalBooleanParameter( context, UimaUtil.IS_REMOVE_EXISTINGS_ANNOTAIONS); if (isRemoveExistingAnnotations == null) { isRemoveExistingAnnotations = false; } initialize(); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { // sentence type mSentenceType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.SENTENCE_TYPE_PARAMETER); // token type mTokenType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); // name type mNameType = AnnotatorUtil.getOptionalTypeParameter(context, typeSystem, NameFinder.NAME_TYPE_PARAMETER); String typeMapString = (String) context.getConfigParameterValue( NameFinder.NAME_TYPE_MAP_PARAMETER); if (typeMapString != null) { Map nameTypeMap = new HashMap<>(); String[] mappings = typeMapString.split(","); for (String mapping : mappings) { String[] parts = mapping.split(":"); if (parts.length == 2) { nameTypeMap.put(parts[0].trim(), typeSystem.getType(parts[1].trim())); } else { mLogger.log(Level.WARNING, String.format("Failed to parse a part of the type mapping [%s]", mapping)); } } mNameTypeMapping = Collections.unmodifiableMap(nameTypeMap); } if (mNameType == null && mNameTypeMapping.size() == 0) { throw new AnalysisEngineProcessException( new Exception("No name type or valid name type mapping configured!")); } } protected void postProcessAnnotations(Span[] detectedNames, AnnotationFS[] nameAnnotations) { } /** * Called if the current document is completely processed. */ protected void documentDone(CAS cas) { } protected abstract Span[] find(CAS cas, String[] tokens); /** * Performs name finding on the given cas object. */ public final void process(CAS cas) { if (isRemoveExistingAnnotations) { final AnnotationComboIterator sentenceNameCombo = new AnnotationComboIterator(cas, mSentenceType, mNameType); List removeAnnotations = new LinkedList<>(); for (AnnotationIteratorPair annotationIteratorPair : sentenceNameCombo) { for (AnnotationFS nameAnnotation : annotationIteratorPair.getSubIterator()) { removeAnnotations.add(nameAnnotation); } } for (AnnotationFS annotation : removeAnnotations) { cas.removeFsFromIndexes(annotation); } } final AnnotationComboIterator sentenceTokenCombo = new AnnotationComboIterator(cas, mSentenceType, mTokenType); for (AnnotationIteratorPair annotationIteratorPair : sentenceTokenCombo) { final List sentenceTokenAnnotationList = new LinkedList<>(); final List sentenceTokenList = new LinkedList<>(); for (AnnotationFS tokenAnnotation : annotationIteratorPair.getSubIterator()) { sentenceTokenAnnotationList.add(tokenAnnotation); sentenceTokenList.add(tokenAnnotation.getCoveredText()); } Span[] names = find(cas, sentenceTokenList.toArray(new String[sentenceTokenList.size()])); AnnotationFS[] nameAnnotations = new AnnotationFS[names.length]; for (int i = 0; i < names.length; i++) { int startIndex = sentenceTokenAnnotationList.get( names[i].getStart()).getBegin(); int endIndex = sentenceTokenAnnotationList.get( names[i].getEnd() - 1).getEnd(); Type nameType = mNameTypeMapping.get(names[i].getType()); if (nameType == null) { nameType = mNameType; } // Types in the model which are not mapped should be ignored, // this allows the usage of only some types in the model if (nameType != null) { nameAnnotations[i] = cas.createAnnotation(nameType, startIndex, endIndex); cas.getIndexRepository().addFS(nameAnnotations[i]); } } postProcessAnnotations(names, nameAnnotations); } documentDone(cas); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_namefind_TokenNameF0100644 0000000 0000000 00000000165 14135770370 032404 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/TokenNameFinderModelResource.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/TokenNameFinderModelResour0100664 0001750 0001750 00000001714 14135770370 034033 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.namefind; import opennlp.tools.namefind.TokenNameFinderModel; public interface TokenNameFinderModelResource { TokenNameFinderModel getModel(); } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/DictionaryNameFinder.java0100664 0001750 0001750 00000005702 14135770370 033620 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.namefind; import java.io.IOException; import java.io.InputStream; import org.apache.uima.cas.CAS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.util.Span; import opennlp.uima.dictionary.DictionaryResource; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.ExceptionMessages; import opennlp.uima.util.UimaUtil; public class DictionaryNameFinder extends AbstractNameFinder { private opennlp.tools.namefind.TokenNameFinder mNameFinder; /** * Initializes a new instance. *

* Note: Use {@link #initialize() } to initialize * this instance. Not use the constructor. */ public DictionaryNameFinder() { super("OpenNLP Dictionary Name annotator"); } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ public void initialize() throws ResourceInitializationException { Dictionary nameFinderDictionary; try { DictionaryResource modelResource = (DictionaryResource) context .getResourceObject(UimaUtil.DICTIONARY_PARAMETER); nameFinderDictionary = modelResource.getDictionary(); } catch (ResourceAccessException e) { try { String modelName = AnnotatorUtil.getRequiredStringParameter(context, UimaUtil.DICTIONARY_PARAMETER); InputStream inModel = AnnotatorUtil.getResourceAsStream(context, modelName); nameFinderDictionary = new Dictionary(inModel); } catch (IOException ie) { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, ExceptionMessages.IO_ERROR_DICTIONARY_READING, new Object[] {ie.getMessage()}); } } mNameFinder = new opennlp.tools.namefind.DictionaryNameFinder( nameFinderDictionary); } protected Span[] find(CAS cas, String[] tokens) { return mNameFinder.find(tokens); } /** * Releases allocated resources. */ public void destroy() { mNameFinder = null; } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/NameFinder.java0100664 0001750 0001750 00000015556 14135770370 031602 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.namefind; import org.apache.uima.UimaContext; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import opennlp.tools.namefind.NameFinderME; import opennlp.tools.namefind.TokenNameFinderModel; import opennlp.tools.util.Span; import opennlp.tools.util.eval.Mean; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * OpenNLP Name annotator. *

* Mandatory parameters * * * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
String opennlp.uima.NameType The full name of the name type
*

* Optional parameters * * * * * * * *
Type Name Description
String opennlp.uima.ProbabilityFeature The name of the double * probability feature (not set by default)
Integer opennlp.uima.BeamSize
String opennlp.uima.DocumentConfidenceType
String opennlp.uima.DocumentConfidenceType
*/ public final class NameFinder extends AbstractNameFinder { public static final String NAME_TYPE_PARAMETER = "opennlp.uima.NameType"; public static final String NAME_TYPE_MAP_PARAMETER = "opennlp.uima.NameTypeMap"; public static final String TOKEN_PATTERN_OPTIMIZATION = "opennlp.uima.TokenPatternOptimization"; // Token feature public static final String TOKEN_FEATURE_PARAMETER = "opennlp.uima.namefinder.TokenFeature"; public static final String TOKEN_FEATURE_PREV_WINDOW_SIZE_PARAMETER = TOKEN_FEATURE_PARAMETER + ".previousWindowSize"; public static final String TOKEN_FEATURE_NEXT_WINDOW_SIZE_PARAMETER = TOKEN_FEATURE_PARAMETER + ".nextWindowSize"; // Token class feature public static final String TOKEN_CLASS_FEATURE_PARAMETER = "opennlp.uima.namefinder.TokenClassFeature"; public static final String TOKEN_CLASS_FEATURE_PREV_WINDOW_SIZE_PARAMETER = TOKEN_CLASS_FEATURE_PARAMETER + ".previousWindowSize"; public static final String TOKEN_CLASS_FEATURE_NEXT_WINDOW_SIZE_PARAMETER = TOKEN_CLASS_FEATURE_PARAMETER + ".nextWindowSize"; private NameFinderME mNameFinder; private Feature probabilityFeature; private Type documentConfidenceType; private Feature documentConfidenceNameTypeFeature; private Feature documentConfidenceFeature; private Mean documentConfidence = new Mean(); /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public NameFinder() { super("OpenNLP Maxent Name annotator"); } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ public void initialize() throws ResourceInitializationException { super.initialize(); TokenNameFinderModel model; try { TokenNameFinderModelResource modelResource = (TokenNameFinderModelResource) context.getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } mNameFinder = new NameFinderME(model); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { super.typeSystemInit(typeSystem); probabilityFeature = AnnotatorUtil.getOptionalFeatureParameter(context, mNameType, UimaUtil.PROBABILITY_FEATURE_PARAMETER, CAS.TYPE_NAME_DOUBLE); documentConfidenceType = AnnotatorUtil.getOptionalTypeParameter(context, typeSystem, "opennlp.uima.DocumentConfidenceType"); if (documentConfidenceType != null) { documentConfidenceNameTypeFeature = AnnotatorUtil.getRequiredFeature( documentConfidenceType, "nameType"); documentConfidenceFeature = AnnotatorUtil.getRequiredFeature( documentConfidenceType, "confidence"); } } protected Span[] find(CAS cas, String[] tokens) { Span[] names = mNameFinder.find(tokens); double[] probs = mNameFinder.probs(); for (double prob : probs) { documentConfidence.add(prob); } return names; } protected void postProcessAnnotations(Span[] detectedNames, AnnotationFS[] nameAnnotations) { if (probabilityFeature != null) { double[] probs = mNameFinder.probs(detectedNames); for (int i = 0; i < nameAnnotations.length; i++) { nameAnnotations[i].setDoubleValue(probabilityFeature, probs[i]); } } } protected void documentDone(CAS cas) { // TODO: Create confidence FS // contains String name type // contains Double prob if (documentConfidenceType != null) { FeatureStructure confidenceFS = cas.createFS(documentConfidenceType); confidenceFS.setDoubleValue(documentConfidenceFeature, documentConfidence.mean()); confidenceFS.setStringValue(documentConfidenceNameTypeFeature, mNameType.getName()); cas.addFsToIndexes(confidenceFS); } // Clears the adaptive data which was created for the current document mNameFinder.clearAdaptiveData(); documentConfidence = new Mean(); } /** * Releases allocated resources. */ public void destroy() { mNameFinder = null; } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/namefind/package.html0100664 0001750 0001750 00000001751 14135770370 031200 0ustar00jeffjeff0000000 0000000 Package related to finding proper names and numeric amounts. apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/SentenceDetector.java0100664 0001750 0001750 00000010302 14135770370 033371 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.sentdetect; import org.apache.uima.UimaContext; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Feature; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * OpenNLP Sentence annotator. *

* Mandatory parameters * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
*

* Optional parameters * * * * * *
Type Name Description
String opennlp.uima.ContainerType The name of the container type
String opennlp.uima.ProbabilityFeature The name of the double * probability feature (not set by default)
*/ public final class SentenceDetector extends AbstractSentenceDetector { /** * OpenNLP sentence detector. */ private SentenceDetectorME sentenceDetector; private Feature probabilityFeature; /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public SentenceDetector() { // must not be implemented ! } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); SentenceModel model; try { SentenceModelResource modelResource = (SentenceModelResource) context .getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } sentenceDetector = new SentenceDetectorME(model); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { super.typeSystemInit(typeSystem); probabilityFeature = AnnotatorUtil.getOptionalFeatureParameter(context, sentenceType, UimaUtil.PROBABILITY_FEATURE_PARAMETER, CAS.TYPE_NAME_DOUBLE); } @Override protected Span[] detectSentences(String text) { return sentenceDetector.sentPosDetect(text); } @Override protected void postProcessAnnotations(AnnotationFS[] sentences) { if (probabilityFeature != null) { double[] sentenceProbabilities = sentenceDetector.getSentenceProbabilities(); for (int i = 0; i < sentences.length; i++) { sentences[i].setDoubleValue(probabilityFeature, sentenceProbabilities[i]); } } } /** * Releases allocated resources. */ public void destroy() { // dereference model to allow garbage collection sentenceDetector = null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_sentdetect_Abstract0100644 0000000 0000000 00000000163 14135770370 032537 xustar000000000 0000000 115 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/AbstractSentenceDetector.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/AbstractSentenceDetector0100664 0001750 0001750 00000007710 14135770370 034146 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.sentdetect; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.util.Span; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; public abstract class AbstractSentenceDetector extends CasAnnotator_ImplBase { protected UimaContext context; /** * The type of the sentences to be created. */ protected Logger logger; protected Type containerType; protected Type sentenceType; private Boolean isRemoveExistingAnnotations; @Override public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; logger = context.getLogger(); if (logger.isLoggable(Level.INFO)) { logger.log(Level.INFO, "Initializing the OpenNLP Sentence annotator."); } isRemoveExistingAnnotations = AnnotatorUtil.getOptionalBooleanParameter( context, UimaUtil.IS_REMOVE_EXISTINGS_ANNOTAIONS); if (isRemoveExistingAnnotations == null) { isRemoveExistingAnnotations = false; } } @Override public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { super.typeSystemInit(typeSystem); containerType = AnnotatorUtil.getOptionalTypeParameter(context, typeSystem, "opennlp.uima.ContainerType"); if (containerType == null) { containerType = typeSystem.getType(CAS.TYPE_NAME_DOCUMENT_ANNOTATION); } sentenceType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.SENTENCE_TYPE_PARAMETER); } protected abstract Span[] detectSentences(String text); protected void postProcessAnnotations(AnnotationFS[] sentences) { } @Override public void process(CAS cas) throws AnalysisEngineProcessException { FSIndex containerAnnotations = cas .getAnnotationIndex(containerType); for (AnnotationFS containerAnnotation : containerAnnotations) { String text = containerAnnotation.getCoveredText(); if (isRemoveExistingAnnotations) { UimaUtil.removeAnnotations(cas, containerAnnotation, sentenceType); } Span[] sentPositions = detectSentences(text); AnnotationFS[] sentences = new AnnotationFS[sentPositions.length]; for (int i = 0; i < sentPositions.length; i++) { sentences[i] = cas.createAnnotation(sentenceType, sentPositions[i].getStart() + containerAnnotation.getBegin(), sentPositions[i].getEnd() + containerAnnotation.getBegin()); cas.getIndexRepository().addFS(sentences[i]); if (logger.isLoggable(Level.FINER)) { logger.log(Level.FINER, "\"" + sentences[i].getCoveredText() + "\""); } } postProcessAnnotations(sentences); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_sentdetect_Sentence0100644 0000000 0000000 00000000160 14135770370 032535 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/SentenceModelResource.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/SentenceModelResource.ja0100664 0001750 0001750 00000001674 14135770370 034055 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.sentdetect; import opennlp.tools.sentdetect.SentenceModel; public interface SentenceModelResource { SentenceModel getModel(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_sentdetect_Sentence0100644 0000000 0000000 00000000164 14135770370 032541 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/SentenceModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/SentenceModelResourceImp0100664 0001750 0001750 00000002421 14135770370 034121 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.sentdetect; import java.io.IOException; import java.io.InputStream; import opennlp.tools.sentdetect.SentenceModel; import opennlp.uima.util.AbstractModelResource; public class SentenceModelResourceImpl extends AbstractModelResource implements SentenceModelResource { public SentenceModel getModel() { return model; } @Override protected SentenceModel loadModel(InputStream in) throws IOException { return new SentenceModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/sentdetect/package.html0100664 0001750 0001750 00000001736 14135770370 031564 0ustar00jeffjeff0000000 0000000 Package related to identifying sentece boundries. apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/normalizer/Normalizer.java0100664 0001750 0001750 00000017554 14135770370 032315 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.normalizer; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.util.StringList; import opennlp.uima.namefind.NameFinder; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.ExceptionMessages; import opennlp.uima.util.UimaUtil; /** * The Normalizer tries the structure annotations. The structured value * is than assigned to a field of the annotation. *

* The process depends on the *

* string Tokens must be (fuzzy) mapped to categories eg. a month, a day or a * year (use dictionary) integer, float tokens must be parsed eg. for percentage * or period boolean tokens must be parsed eg is there any ??? *

*

* restricted set of outcomes throw error if not matched or silently fail * unrestricted set of outcomes */ public class Normalizer extends CasAnnotator_ImplBase { /** * This set contains all supported range types. */ private static final Set SUPPORTED_TYPES; static { Set supportedTypes = new HashSet<>(); supportedTypes.add(CAS.TYPE_NAME_STRING); supportedTypes.add(CAS.TYPE_NAME_BYTE); supportedTypes.add(CAS.TYPE_NAME_SHORT); supportedTypes.add(CAS.TYPE_NAME_INTEGER); supportedTypes.add(CAS.TYPE_NAME_LONG); supportedTypes.add(CAS.TYPE_NAME_FLOAT); supportedTypes.add(CAS.TYPE_NAME_DOUBLE); SUPPORTED_TYPES = Collections.unmodifiableSet(supportedTypes); } private UimaContext context; private Logger mLogger; /** * The annotation marks the text to structure. */ private Type mNameType; /** * The target type which the text should have. This type must be primitive. *

* It should not be possible to assign something to this feature with is not * structured. The feature should define allowed values. */ private Feature mStructureFeature; // private Type mSentenceType; private StringDictionary mLookupDictionary; /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize this instance. Not * use the constructor. */ public Normalizer() { // must not be implemented ! } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. * @param context context to initialize */ public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; mLogger = context.getLogger(); if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Initializing the OpenNLP Normalizer annotator."); } try { String modelName = AnnotatorUtil.getOptionalStringParameter(context, UimaUtil.DICTIONARY_PARAMETER); if (modelName != null) { InputStream inModel = AnnotatorUtil.getResourceAsStream(context, modelName); mLookupDictionary = new StringDictionary(inModel); } } catch (IOException e) { throw new ResourceInitializationException( ExceptionMessages.MESSAGE_CATALOG, "io_error_model_reading", new Object[] {e.getMessage()}, e); } } /** * Initializes the type system. * @param typeSystem type system to initialize */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { // sentence type // String sentenceTypeName = // AnnotatorUtil.getRequiredStringParameter(mContext, // UimaUtil.SENTENCE_TYPE_PARAMETER); // mSentenceType = AnnotatorUtil.getType(typeSystem, sentenceTypeName); // name type mNameType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, NameFinder.NAME_TYPE_PARAMETER); mStructureFeature = AnnotatorUtil.getRequiredFeatureParameter(context, mNameType, "opennlp.uima.normalizer.StructureFeature"); if (!SUPPORTED_TYPES.contains(mStructureFeature.getRange().getName())) { throw new AnalysisEngineProcessException( ExceptionMessages.MESSAGE_CATALOG, "range_type_unsupported", new Object[] {mStructureFeature.getRange().getName()}); } } public void process(CAS tcas) { FSIndex sentenceIndex = tcas.getAnnotationIndex(mNameType); for (AnnotationFS nameAnnotation : sentenceIndex) { // check if the document language is supported String language = tcas.getDocumentLanguage(); if (!NumberUtil.isLanguageSupported(language)) { if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Unsupported language: " + language); } continue; } String text = nameAnnotation.getCoveredText(); // if possible replace text with normalization from dictionary if (mLookupDictionary != null) { StringList tokens = new StringList(text); String normalizedText = mLookupDictionary.get(tokens); if (normalizedText != null) { text = normalizedText; } } if (CAS.TYPE_NAME_STRING.equals(mStructureFeature.getRange().getName())) { nameAnnotation.setStringValue(mStructureFeature, text); } else { Number number; try { number = NumberUtil.parse(text, language); } catch (ParseException e) { if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Invalid number format: " + text); } continue; } if (CAS.TYPE_NAME_BYTE.equals(mStructureFeature.getRange().getName())) { nameAnnotation.setByteValue(mStructureFeature, number.byteValue()); } else if (CAS.TYPE_NAME_SHORT.equals(mStructureFeature.getRange() .getName())) { nameAnnotation.setShortValue(mStructureFeature, number.shortValue()); } else if (CAS.TYPE_NAME_INTEGER.equals(mStructureFeature.getRange() .getName())) { nameAnnotation.setIntValue(mStructureFeature, number.intValue()); } else if (CAS.TYPE_NAME_LONG.equals(mStructureFeature.getRange() .getName())) { nameAnnotation.setLongValue(mStructureFeature, number.longValue()); } else if (CAS.TYPE_NAME_FLOAT.equals(mStructureFeature.getRange() .getName())) { nameAnnotation.setFloatValue(mStructureFeature, number.floatValue()); } else if (CAS.TYPE_NAME_DOUBLE.equals(mStructureFeature.getRange() .getName())) { nameAnnotation .setDoubleValue(mStructureFeature, number.doubleValue()); } } } } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/normalizer/NumberUtil.java0100664 0001750 0001750 00000005463 14135770370 032255 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.normalizer; import java.text.NumberFormat; import java.text.ParseException; import java.util.Locale; /** * This class contains methods to parse numbers which occur * in natural language texts. */ public final class NumberUtil { /** * Checks if the language is supported. * * @param languageCode language code, e.g. "en", "pt" * @return true if the language is supported */ public static boolean isLanguageSupported(String languageCode) { Locale locale = new Locale(languageCode); Locale[] possibleLocales = NumberFormat.getAvailableLocales(); boolean isLocaleSupported = false; for (Locale possibleLocale : possibleLocales) { // search if local is contained if (possibleLocale.equals(locale)) { isLocaleSupported = true; break; } } return isLocaleSupported; } /** * Removes trailing and containing space. */ private static String removeChar(String string, char remove) { StringBuilder result = new StringBuilder(); int lastPosition = 0; int position = 0; while ((position = string.indexOf(remove, lastPosition)) != -1) { result.append(string.substring(lastPosition, position)); lastPosition = position + 1; } result.append(string.substring(lastPosition, string.length())); return result.toString(); } /** * Gives its best to parse the provided number. * * @param number number to parse * @param languageCode language code, e.g. "en", "pt" * @return parsed number * @throws ParseException ParseException */ public static Number parse(String number, String languageCode) throws ParseException { if (!isLanguageSupported(languageCode)) { throw new IllegalArgumentException("Language " + languageCode + " is not supported!"); } Locale locale = new Locale(languageCode); NumberFormat numberFormat = NumberFormat.getInstance(locale); number = number.trim(); number = removeChar(number, ' '); return numberFormat.parse(number); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/normalizer/StringDictionary.java0100664 0001750 0001750 00000005760 14135770370 033463 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.normalizer; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import opennlp.tools.dictionary.serializer.Attributes; import opennlp.tools.dictionary.serializer.DictionaryEntryPersistor; import opennlp.tools.dictionary.serializer.Entry; import opennlp.tools.util.StringList; // lookup a string for given token list public class StringDictionary { private Map entries = new HashMap<>(); public StringDictionary() { } /** * Initializes the current instance. * * @param in * @throws IOException */ public StringDictionary(InputStream in) throws IOException { DictionaryEntryPersistor.create(in, entry -> { String valueString = entry.getAttributes().getValue("value"); put(entry.getTokens(), valueString); }); } /** * Returns a corresponding String value from hash map. * @param key key to get value with */ public String get(StringList key) { return entries.get(key); } /** * Adds a new entry to hash map. * @param key key to put * @param value value to put */ public void put(StringList key, String value) { entries.put(key, value); } Iterator iterator() { return entries.keySet().iterator(); } /** * Writes the ngram instance to the given {@link OutputStream}. * * @param out * @throws IOException * if an I/O Error during writing occures */ public void serialize(OutputStream out) throws IOException { Iterator entryIterator = new Iterator() { private Iterator mDictionaryIterator = StringDictionary.this.iterator(); public boolean hasNext() { return mDictionaryIterator.hasNext(); } public Entry next() { StringList tokens = mDictionaryIterator.next(); Attributes attributes = new Attributes(); attributes.setValue("value", get(tokens)); return new Entry(tokens, attributes); } public void remove() { throw new UnsupportedOperationException(); } }; DictionaryEntryPersistor.serialize(out, entryIterator, true); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/postag/POSModelResourceImpl.java0100664 0001750 0001750 00000002346 14135770370 033253 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.postag; import java.io.IOException; import java.io.InputStream; import opennlp.tools.postag.POSModel; import opennlp.uima.util.AbstractModelResource; public class POSModelResourceImpl extends AbstractModelResource implements POSModelResource { public POSModel getModel() { return model; } @Override protected POSModel loadModel(InputStream in) throws IOException { return new POSModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/postag/POSModelResource.java0100664 0001750 0001750 00000001644 14135770370 032431 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.postag; import opennlp.tools.postag.POSModel; public interface POSModelResource { POSModel getModel(); } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/postag/package.html0100664 0001750 0001750 00000001727 14135770370 030717 0ustar00jeffjeff0000000 0000000 Package related to part-of-speech tagging. apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/postag/POSTagger.java0100664 0001750 0001750 00000017104 14135770370 031070 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.postag; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTaggerME; import opennlp.uima.util.AnnotationComboIterator; import opennlp.uima.util.AnnotationIteratorPair; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * OpenNLP Part Of Speech annotator. *

* Mandatory parameters * * * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
String opennlp.uima.POSFeature The name of the token pos feature, * the feature must be of type String
*

* Optional parameters * * * * * * * *
Type Name Description
String opennlp.uima.ProbabilityFeatureThe name of the double probability feature (not set by default)
Integer opennlp.uima.BeamSize
String opennlp.uima.DictionaryName The name of the dictionary file
*/ public final class POSTagger extends CasAnnotator_ImplBase { private POSTaggerME posTagger; private Type sentenceType; private Type tokenType; private Feature posFeature; private Feature probabilityFeature; private UimaContext context; private Logger logger; /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize this instance. Not use the * constructor. */ public POSTagger() { // must not be implemented ! } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ @Override public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; this.logger = context.getLogger(); if (this.logger.isLoggable(Level.INFO)) { this.logger.log(Level.INFO, "Initializing the OpenNLP " + "Part of Speech annotator."); } POSModel model; try { POSModelResource modelResource = (POSModelResource) context .getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } Integer beamSize = AnnotatorUtil.getOptionalIntegerParameter(context, UimaUtil.BEAM_SIZE_PARAMETER); if (beamSize == null) { beamSize = POSTaggerME.DEFAULT_BEAM_SIZE; } this.posTagger = new POSTaggerME(model); } /** * Initializes the type system. */ @Override public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { // sentence type this.sentenceType = AnnotatorUtil.getRequiredTypeParameter(this.context, typeSystem, UimaUtil.SENTENCE_TYPE_PARAMETER); // token type this.tokenType = AnnotatorUtil.getRequiredTypeParameter(this.context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); // pos feature this.posFeature = AnnotatorUtil.getRequiredFeatureParameter(this.context, this.tokenType, UimaUtil.POS_FEATURE_PARAMETER, CAS.TYPE_NAME_STRING); this.probabilityFeature = AnnotatorUtil.getOptionalFeatureParameter(this.context, this.tokenType, UimaUtil.PROBABILITY_FEATURE_PARAMETER, CAS.TYPE_NAME_DOUBLE); } /** * Performs pos-tagging on the given tcas object. */ @Override public void process(CAS tcas) { final AnnotationComboIterator comboIterator = new AnnotationComboIterator(tcas, this.sentenceType, this.tokenType); for (AnnotationIteratorPair annotationIteratorPair : comboIterator) { final List sentenceTokenAnnotationList = new LinkedList<>(); final List sentenceTokenList = new LinkedList<>(); for (AnnotationFS tokenAnnotation : annotationIteratorPair.getSubIterator()) { sentenceTokenAnnotationList.add(tokenAnnotation); sentenceTokenList.add(tokenAnnotation.getCoveredText()); } final List posTags = Arrays.asList(this.posTagger.tag( sentenceTokenList.toArray(new String[sentenceTokenList.size()]))); double[] posProbabilities = null; if (this.probabilityFeature != null) { posProbabilities = this.posTagger.probs(); } final Iterator posTagIterator = posTags.iterator(); final Iterator sentenceTokenIterator = sentenceTokenAnnotationList.iterator(); int index = 0; while (posTagIterator.hasNext() && sentenceTokenIterator.hasNext()) { final String posTag = posTagIterator.next(); final AnnotationFS tokenAnnotation = sentenceTokenIterator.next(); tokenAnnotation.setStringValue(this.posFeature, posTag); if (posProbabilities != null) { tokenAnnotation.setDoubleValue(this.probabilityFeature, posProbabilities[index]); } index++; } // log tokens with pos if (this.logger.isLoggable(Level.FINER)) { final StringBuilder sentenceWithPos = new StringBuilder(); sentenceWithPos.append("\""); for (final AnnotationFS token : sentenceTokenAnnotationList) { sentenceWithPos.append(token.getCoveredText()); sentenceWithPos.append('\\'); sentenceWithPos.append(token.getStringValue(this.posFeature)); sentenceWithPos.append(' '); } // delete last whitespace if (sentenceWithPos.length() > 1) // not 0 because it contains already the " char { sentenceWithPos.setLength(sentenceWithPos.length() - 1); } sentenceWithPos.append("\""); this.logger.log(Level.FINER, sentenceWithPos.toString()); } } } /** * Releases allocated resources. */ @Override public void destroy() { this.posTagger = null; } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/dictionary/DictionaryResource.java0100664 0001750 0001750 00000001667 14135770370 033771 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.dictionary; import opennlp.tools.dictionary.Dictionary; public interface DictionaryResource { Dictionary getDictionary(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_dictionary_Dictiona0100644 0000000 0000000 00000000161 14135770370 032527 xustar000000000 0000000 113 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/dictionary/DictionaryResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/dictionary/DictionaryResourceImpl.j0100664 0001750 0001750 00000002415 14135770370 034113 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.dictionary; import java.io.IOException; import java.io.InputStream; import opennlp.tools.dictionary.Dictionary; import opennlp.uima.util.AbstractModelResource; public class DictionaryResourceImpl extends AbstractModelResource implements DictionaryResource { @Override public Dictionary getDictionary() { return model; } @Override protected Dictionary loadModel(InputStream in) throws IOException { return new Dictionary(in); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_doccat_DoccatModelR0100644 0000000 0000000 00000000156 14135770370 032371 xustar000000000 0000000 110 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/DoccatModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/DoccatModelResourceImpl.java0100664 0001750 0001750 00000002373 14135770370 033747 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.doccat; import java.io.IOException; import java.io.InputStream; import opennlp.tools.doccat.DoccatModel; import opennlp.uima.util.AbstractModelResource; public class DoccatModelResourceImpl extends AbstractModelResource implements DoccatModelResource { public DoccatModel getModel() { return model; } @Override protected DoccatModel loadModel(InputStream in) throws IOException { return new DoccatModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/DoccatModelResource.java0100664 0001750 0001750 00000001655 14135770370 033127 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.doccat; import opennlp.tools.doccat.DoccatModel; public interface DoccatModelResource { DoccatModel getModel(); } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/LanguageDetector.java0100664 0001750 0001750 00000002447 14135770370 032456 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.doccat; import org.apache.uima.cas.CAS; /** * Analysis Engine which can detected the language of a text. The AE uses the OpenNLP document * categorizer and a special language detection model. The outcome of the document categorizer * model is written into the language field of the CAS view. */ public class LanguageDetector extends AbstractDocumentCategorizer { @Override protected void setBestCategory(CAS cas, String bestCategory) { cas.setDocumentLanguage(bestCategory); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/DocumentCategorizer.java0100664 0001750 0001750 00000004627 14135770370 033220 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.doccat; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import opennlp.uima.util.AnnotatorUtil; /** * OpenNLP Document Categorizer. *

* Mandatory parameters: */ public class DocumentCategorizer extends AbstractDocumentCategorizer { private Type mCategoryType; private Feature mCategoryFeature; public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { // get category type and feature (it a document propery, one object with a feature) mCategoryType = AnnotatorUtil.getRequiredTypeParameter(getContext(), typeSystem, "opennlp.uima.doccat.CategoryType"); // get feature name mCategoryFeature = AnnotatorUtil.getRequiredFeatureParameter(getContext(), mCategoryType, "opennlp.uima.doccat.CategoryFeature", CAS.TYPE_NAME_STRING); } @Override protected void setBestCategory(CAS tcas, String bestCategory) { FSIndex categoryIndex = tcas.getAnnotationIndex(mCategoryType); AnnotationFS categoryAnnotation; if (categoryIndex.size() > 0) { categoryAnnotation = categoryIndex.iterator().next(); } else { categoryAnnotation = tcas.createAnnotation(mCategoryType, 0, tcas.getDocumentText().length()); tcas.getIndexRepository().addFS(categoryAnnotation); } categoryAnnotation.setStringValue(mCategoryFeature, bestCategory); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_doccat_AbstractDocu0100644 0000000 0000000 00000000162 14135770370 032444 xustar000000000 0000000 114 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/doccat/AbstractDocumentCategorizer.0100664 0001750 0001750 00000006550 14135770370 034037 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.doccat; import java.util.ArrayList; import java.util.List; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.doccat.DoccatModel; import opennlp.tools.doccat.DocumentCategorizerME; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * Abstract document categorizer which can be implemented to define how the * output of the categorizer should be written into the CAS. */ abstract class AbstractDocumentCategorizer extends CasAnnotator_ImplBase { private UimaContext context; private opennlp.tools.doccat.DocumentCategorizer mCategorizer; private Type mTokenType; public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; Logger mLogger = context.getLogger(); if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Initializing the OpenNLP Categorizer."); } DoccatModel model; try { DoccatModelResource modelResource = (DoccatModelResource) context .getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } mCategorizer = new DocumentCategorizerME(model); } public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { mTokenType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); } protected abstract void setBestCategory(CAS cas, String bestCategory); public void process(CAS cas) { FSIterator tokenAnnotations = cas.getAnnotationIndex(mTokenType).iterator(); List tokensList = new ArrayList<>(); while (tokenAnnotations.hasNext()) { tokensList.add(tokenAnnotations.next().getCoveredText()); } double[] result = mCategorizer.categorize(tokensList.toArray(new String[tokensList.size()])); String bestCategory = mCategorizer.getBestCategory(result); setBestCategory(cas, bestCategory); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/ChunkerModelResource.java0100664 0001750 0001750 00000001664 14135770370 033533 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.chunker; import opennlp.tools.chunker.ChunkerModel; public interface ChunkerModelResource { ChunkerModel getModel(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_java_opennlp_uima_chunker_ChunkerMode0100644 0000000 0000000 00000000160 14135770370 032472 xustar000000000 0000000 112 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/ChunkerModelResourceImpl.java apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/ChunkerModelResourceImpl.ja0100664 0001750 0001750 00000002405 14135770370 034020 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.chunker; import java.io.IOException; import java.io.InputStream; import opennlp.tools.chunker.ChunkerModel; import opennlp.uima.util.AbstractModelResource; public class ChunkerModelResourceImpl extends AbstractModelResource implements ChunkerModelResource { public ChunkerModel getModel() { return model; } @Override protected ChunkerModel loadModel(InputStream in) throws IOException { return new ChunkerModel(in); } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/Chunker.java0100664 0001750 0001750 00000015412 14135770370 031036 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.uima.chunker; import org.apache.uima.UimaContext; import org.apache.uima.analysis_component.CasAnnotator_ImplBase; import org.apache.uima.analysis_engine.AnalysisEngineProcessException; import org.apache.uima.cas.CAS; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.Feature; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; import opennlp.tools.chunker.ChunkerME; import opennlp.tools.chunker.ChunkerModel; import opennlp.uima.util.AnnotatorUtil; import opennlp.uima.util.UimaUtil; /** * OpenNLP Chunker annotator. *

* Mandatory parameters * * * * * * * * * *
Type Name Description
String opennlp.uima.ModelName The name of the model file
String opennlp.uima.SentenceType The full name of the sentence type
String opennlp.uima.TokenType The full name of the token type
String opennlp.uima.POSFeature
String opennlp.uima.ChunkType
String opennlp.uima.ChunkTagFeature
*

* Optional parameters * * * * *
Type Name Description
Integer opennlp.uima.BeamSize
*/ public final class Chunker extends CasAnnotator_ImplBase { /** * The chunk type parameter. */ public static final String CHUNK_TYPE_PARAMETER = "opennlp.uima.ChunkType"; /** * The chunk tag feature parameter */ public static final String CHUNK_TAG_FEATURE_PARAMETER = "opennlp.uima.ChunkTagFeature"; private Type mTokenType; private Type mChunkType; private Feature mPosFeature; private ChunkerME mChunker; private UimaContext context; private Logger mLogger; private Feature mChunkFeature; /** * Initializes a new instance. *

* Note: Use {@link #initialize(UimaContext) } to initialize * this instance. Not use the constructor. */ public Chunker() { // must not be implemented ! } /** * Initializes the current instance with the given context. *

* Note: Do all initialization in this method, do not use the constructor. */ public void initialize(UimaContext context) throws ResourceInitializationException { super.initialize(context); this.context = context; mLogger = context.getLogger(); if (mLogger.isLoggable(Level.INFO)) { mLogger.log(Level.INFO, "Initializing the OpenNLP Chunker annotator."); } ChunkerModel model; try { ChunkerModelResource modelResource = (ChunkerModelResource) context.getResourceObject(UimaUtil.MODEL_PARAMETER); model = modelResource.getModel(); } catch (ResourceAccessException e) { throw new ResourceInitializationException(e); } mChunker = new ChunkerME(model); } /** * Initializes the type system. */ public void typeSystemInit(TypeSystem typeSystem) throws AnalysisEngineProcessException { // chunk type mChunkType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, CHUNK_TYPE_PARAMETER); // chunk feature mChunkFeature = AnnotatorUtil.getRequiredFeatureParameter(context, mChunkType, CHUNK_TAG_FEATURE_PARAMETER, CAS.TYPE_NAME_STRING); // token type mTokenType = AnnotatorUtil.getRequiredTypeParameter(context, typeSystem, UimaUtil.TOKEN_TYPE_PARAMETER); // pos feature mPosFeature = AnnotatorUtil.getRequiredFeatureParameter( context, mTokenType, UimaUtil.POS_FEATURE_PARAMETER, CAS.TYPE_NAME_STRING); } private void addChunkAnnotation(CAS tcas, AnnotationFS[] tokenAnnotations, String tag, int start, int end) { AnnotationFS chunk = tcas.createAnnotation(mChunkType, tokenAnnotations[start].getBegin(), tokenAnnotations[end - 1].getEnd()); chunk.setStringValue(mChunkFeature, tag); tcas.getIndexRepository().addFS(chunk); } /** * Performs chunking on the given tcas object. */ public void process(CAS tcas) { FSIndex tokenAnnotationIndex = tcas.getAnnotationIndex(mTokenType); String[] tokens = new String[tokenAnnotationIndex.size()]; String[] pos = new String[tokenAnnotationIndex.size()]; AnnotationFS[] tokenAnnotations = new AnnotationFS[tokenAnnotationIndex .size()]; int index = 0; for (AnnotationFS tokenAnnotation : tokenAnnotationIndex) { tokenAnnotations[index] = tokenAnnotation; tokens[index] = tokenAnnotation.getCoveredText(); pos[index++] = tokenAnnotation.getFeatureValueAsString( mPosFeature); } String[] result = mChunker.chunk(tokens, pos); int start = -1; int end = -1; for (int i = 0; i < result.length; i++) { String chunkTag = result[i]; if (chunkTag.startsWith("B")) { if (start != -1) { addChunkAnnotation(tcas, tokenAnnotations, result[i - 1].substring(2), start, end); } start = i; end = i + 1; } else if (chunkTag.startsWith("I")) { end = i + 1; } else if (chunkTag.startsWith("O")) { if (start != -1) { addChunkAnnotation(tcas, tokenAnnotations, result[i - 1].substring(2), start, end); start = -1; end = -1; } } else { System.out.println("Unexpected tag: " + result[i]); } } if (start != -1) { addChunkAnnotation(tcas, tokenAnnotations, result[result.length - 1].substring(2), start, end); } } /** * Releases allocated resources. */ public void destroy() { // dereference model to allow garbage collection mChunker = null; } } apache-opennlp-1.9.4-src/opennlp-uima/src/main/java/opennlp/uima/chunker/package.html0100664 0001750 0001750 00000002006 14135770370 031050 0ustar00jeffjeff0000000 0000000 Package related to finding non-recursive syntactic annotation such as noun phrase chunks. ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-uima_src_main_resources_opennlp_uima_util_Exception0100644 0000000 0000000 00000000164 14135770370 032637 xustar000000000 0000000 116 path=apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/opennlp/uima/util/ExceptionMessages_en.properties apache-opennlp-1.9.4-src/opennlp-uima/src/main/resources/opennlp/uima/util/ExceptionMessages_en.prop0100664 0001750 0001750 00000002546 14135770370 034221 0ustar00jeffjeff0000000 0000000 # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # io_error_model_reading = I/O error occurred during model reading: {0} io_error_dictionary_reading = "I/O" error occurred during dictionary reading: {0}; invalid_dictionary_format = The format of the dictionary is invalid: {0} parameter_not_found = The required parameter {0} can not be found! wrong_parameter_type = The parameter {0} does not have the expected type {1}! type_not_found = "Could not find {0} type!" feature_not_found = The type {0} does not have the feature {1}! wrong_feature_type = The Feature {0} must be of type {1}! range_type_unsupported = Range type is unsupported: {0} apache-opennlp-1.9.4-src/opennlp-uima/createPear.xml0100664 0001750 0001750 00000007717 14135770370 022701 0ustar00jeffjeff0000000 0000000 ##### Creating OpenNlpTextAnalyzer pear ##### apache-opennlp-1.9.4-src/opennlp-uima/metadata/install.xml0100664 0001750 0001750 00000003555 14135770370 024050 0ustar00jeffjeff0000000 0000000 Windows XP 1.5.0_14 opennlp.uima.OpenNlpTextAnalyzer OpenNlpTextAnalyzer $main_root/desc/OpenNlpTextAnalyzer.xml standard set_env_variable component classpath setting $main_root/lib/jwnl.jar;$main_root/lib/opennlp-maxent.jar;$main_root/bin;$main_root/lib/opennlp-tools.jar;$main_root/lib/opennlp-uima.jar classpath set_env_variable component uima.datapath setting $main_root/models uima.datapath apache-opennlp-1.9.4-src/opennlp-uima/descriptors/Tokenizer.xml0100664 0001750 0001750 00000006020 14135770370 025123 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.tokenize.Tokenizer Tokenizer ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.tokenizer.IsAlphaNumericOptimization String false false opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.SentenceType uima.tcas.DocumentAnnotation en true true opennlp.uima.ModelName opennlp.uima.tokenize.TokenizerModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/OrganizationNameFinder.xml0100664 0001750 0001750 00000006047 14135770370 027557 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Organization Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Organization en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/SentenceDetector.xml0100664 0001750 0001750 00000005036 14135770370 026415 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.sentdetect.SentenceDetector Sentence Detector ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.ContainerType String false false opennlp.uima.SentenceType opennlp.uima.Sentence en opennlp.uima.ModelName opennlp.uima.sentdetect.SentenceModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/Parser.xml0100664 0001750 0001750 00000011267 14135770370 024416 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.parser.Parser Parser ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.ParseType String false true opennlp.uima.TypeFeature String false true opennlp.uima.ChildrenFeature String false true opennlp.uima.ProbabilityFeature String false false opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.SentenceType opennlp.uima.Sentence opennlp.uima.ParseType opennlp.uima.Parse opennlp.uima.TypeFeature parseType opennlp.uima.ChildrenFeature children opennlp.uima.ProbabilityFeature prob en true true ParserModel file:en-parser-chunking.bin opennlp.uima.parser.ParserModelResourceImpl opennlp.uima.ModelName ParserModel opennlp.uima.ModelName opennlp.uima.parser.ParserModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/PosTagger.xml0100664 0001750 0001750 00000005760 14135770370 025056 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.postag.POSTagger POS Tagger ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.POSFeature String false true opennlp.uima.SentenceType opennlp.uima.Sentence opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.POSFeature pos en opennlp.uima.ModelName opennlp.uima.postag.POSModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/PersonNameFinder.xml0100664 0001750 0001750 00000006033 14135770370 026354 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Person Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Person en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/TypeSystem.xml0100664 0001750 0001750 00000007342 14135770370 025307 0ustar00jeffjeff0000000 0000000 Apache OpenNLP TypeSystem This is the default OpenNLP type system. All the sample descriptors reference the types in this type system. To replace it against a custom type system change the mapping in the descriptors to the custom types and reference the custom type system. ${project.version} Apache Software Foundation opennlp.uima.Sentence uima.tcas.Annotation opennlp.uima.Token uima.tcas.Annotation pos Part of speech uima.cas.String opennlp.uima.Chunk uima.tcas.Annotation chunkType uima.cas.String opennlp.uima.Person uima.tcas.Annotation opennlp.uima.Organization uima.tcas.Annotation opennlp.uima.Location uima.tcas.Annotation opennlp.uima.Date uima.tcas.Annotation opennlp.uima.Time uima.tcas.Annotation opennlp.uima.Money uima.tcas.Annotation opennlp.uima.Percentage uima.tcas.Annotation opennlp.uima.Parse uima.tcas.Annotation parseType Type of the parse node uima.cas.String children Leaf nodes uima.cas.FSArray prob Leaf nodes uima.cas.Double apache-opennlp-1.9.4-src/opennlp-uima/descriptors/MoneyNameFinder.xml0100664 0001750 0001750 00000006031 14135770370 026173 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Money Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Money en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/LocationNameFinder.xml0100664 0001750 0001750 00000006037 14135770370 026662 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Location Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Location en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/TimeNameFinder.xml0100664 0001750 0001750 00000005767 14135770370 026021 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Time Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Time en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/PercentageNameFinder.xml0100664 0001750 0001750 00000006044 14135770370 027165 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Percentage Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Percentage en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/DateNameFinder.xml0100664 0001750 0001750 00000006027 14135770370 025766 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.namefind.NameFinder Date Name Finder ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.NameType String false true opennlp.uima.SentenceType uima.tcas.DocumentAnnotation opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.NameType opennlp.uima.Date en opennlp.uima.ModelName opennlp.uima.namefind.TokenNameFinderModelResource apache-opennlp-1.9.4-src/opennlp-uima/descriptors/SimpleTokenizer.xml0100664 0001750 0001750 00000005012 14135770370 026275 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.tokenize.SimpleTokenizer SimpleTokenizer ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.SentenceType uima.tcas.DocumentAnnotation en true true apache-opennlp-1.9.4-src/opennlp-uima/descriptors/OpenNlpTextAnalyzer.xml0100664 0001750 0001750 00000021416 14135770370 027105 0ustar00jeffjeff0000000 0000000 org.apache.uima.java false OpenNlpTextAnalyzer ${project.version} Apache Software Foundation SentenceDetector Tokenizer PersonFinder OrganizationFinder MoneyFinder DateFinder LocationFinder PercentageFinder TimeFinder PosTagger Chunker Parser en true false false SentenceModel file:en-sent.bin opennlp.uima.sentdetect.SentenceModelResourceImpl TokenModel file:en-token.bin opennlp.uima.tokenize.TokenizerModelResourceImpl PersonModel file:en-ner-person.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl PercentageModel file:en-ner-percentage.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl OrganizationModel file:en-ner-organization.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl MoneyModel file:en-ner-money.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl DateModel file:en-ner-date.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl LocationModel file:en-ner-location.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl TimeModel file:en-ner-time.bin opennlp.uima.namefind.TokenNameFinderModelResourceImpl PosModel file:en-pos-maxent.bin opennlp.uima.postag.POSModelResourceImpl ChunkerModel file:en-chunker.bin opennlp.uima.chunker.ChunkerModelResourceImpl ParserModel file:en-parser-chunking.bin opennlp.uima.parser.ParserModelResourceImpl SentenceDetector/opennlp.uima.ModelName SentenceModel Tokenizer/opennlp.uima.ModelName TokenModel PersonFinder/opennlp.uima.ModelName PersonModel PercentageFinder/opennlp.uima.ModelName PercentageModel OrganizationFinder/opennlp.uima.ModelName OrganizationModel MoneyFinder/opennlp.uima.ModelName MoneyModel DateFinder/opennlp.uima.ModelName DateModel LocationFinder/opennlp.uima.ModelName LocationModel TimeFinder/opennlp.uima.ModelName TimeModel PosTagger/opennlp.uima.ModelName PosModel Chunker/opennlp.uima.ModelName ChunkerModel Parser/opennlp.uima.ModelName ParserModel apache-opennlp-1.9.4-src/opennlp-uima/descriptors/LanguageDetector.xml0100664 0001750 0001750 00000005612 14135770370 026374 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.doccat.LanguageDetector LanguageDetector ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.SentenceType opennlp.uima.Sentence en opennlp.uima.ModelName opennlp.uima.doccat.DoccatModelResource DoccatModel file:mlang.bin opennlp.uima.doccat.DoccatModelResourceImpl opennlp.uima.ModelName DoccatModel apache-opennlp-1.9.4-src/opennlp-uima/descriptors/Chunker.xml0100664 0001750 0001750 00000007243 14135770370 024560 0ustar00jeffjeff0000000 0000000 org.apache.uima.java true opennlp.uima.chunker.Chunker Chunker ${project.version} Apache Software Foundation opennlp.uima.SentenceType String false true opennlp.uima.TokenType String false true opennlp.uima.POSFeature String false true opennlp.uima.ChunkType String false true opennlp.uima.ChunkTagFeature String false true opennlp.uima.SentenceType opennlp.uima.Sentence opennlp.uima.TokenType opennlp.uima.Token opennlp.uima.POSFeature pos opennlp.uima.ChunkType opennlp.uima.Chunk opennlp.uima.ChunkTagFeature chunkType en opennlp.uima.ModelName opennlp.uima.chunker.ChunkerModelResource apache-opennlp-1.9.4-src/opennlp-uima/pom.xml0100664 0001750 0001750 00000005210 14136044070 021373 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-uima jar Apache OpenNLP UIMA Annotators ApacheIncubatorRepository http://people.apache.org/repo/m2-incubating-repository/ org.apache.opennlp opennlp-tools org.apache.uima uimaj-core 3.1.1 provided org.apache.opennlp opennlp-tools test-jar test junit junit test org.apache.maven.plugins maven-dependency-plugin 2.1 copy-dependencies package copy-dependencies provided true ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_test_java_opennlp_morfologik_b0100644 0000000 0000000 00000000201 14135770370 032534 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/builder/POSDictionayBuilderTest.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/builder/POSDictio0100664 0001750 0001750 00000006100 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.builder; import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Arrays; import morfologik.stemming.DictionaryMetadata; import org.junit.Assert; import org.junit.Test; import opennlp.morfologik.lemmatizer.MorfologikLemmatizer; public class POSDictionayBuilderTest { public static Path createMorfologikDictionary() throws Exception { Path tabFilePath = File.createTempFile( POSDictionayBuilderTest.class.getName(), ".txt").toPath(); tabFilePath.toFile().deleteOnExit(); Path infoFilePath = DictionaryMetadata.getExpectedMetadataLocation(tabFilePath); infoFilePath.toFile().deleteOnExit(); Files.copy(POSDictionayBuilderTest.class.getResourceAsStream( "/dictionaryWithLemma.txt"), tabFilePath, StandardCopyOption.REPLACE_EXISTING); Files.copy(POSDictionayBuilderTest.class.getResourceAsStream( "/dictionaryWithLemma.info"), infoFilePath, StandardCopyOption.REPLACE_EXISTING); MorfologikDictionayBuilder builder = new MorfologikDictionayBuilder(); return builder.build(tabFilePath); } public static void main(String[] args) throws Exception { // Part 1: compile a FSA lemma dictionary // we need the tabular dictionary. It is mandatory to have info // file with same name, but .info extension Path textLemmaDictionary = Paths.get( "/Users/wcolen/git/opennlp/opennlp-morfologik-addon/src/test/resources/dictionaryWithLemma.txt"); // this will build a binary dictionary located in compiledLemmaDictionary Path compiledLemmaDictionary = new MorfologikDictionayBuilder().build(textLemmaDictionary); // Part 2: load a MorfologikLemmatizer and use it MorfologikLemmatizer lemmatizer = new MorfologikLemmatizer(compiledLemmaDictionary); String[] toks = {"casa", "casa"}; String[] tags = {"NOUN", "V"}; String[] lemmas = lemmatizer.lemmatize(toks, tags); System.out.println(Arrays.toString(lemmas)); // outputs [casa, casar] } @Test public void testBuildDictionary() throws Exception { Path output = createMorfologikDictionary(); MorfologikLemmatizer ml = new MorfologikLemmatizer(output); Assert.assertNotNull(ml); output.toFile().deleteOnExit(); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_test_java_opennlp_morfologik_t0100644 0000000 0000000 00000000205 14135770370 032562 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/tagdict/MorfologikTagDictionaryTest.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/tagdict/Morfologi0100664 0001750 0001750 00000006226 14135770370 034207 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.tagdict; import java.nio.file.Path; import java.util.Arrays; import java.util.List; import morfologik.stemming.Dictionary; import org.junit.Assert; import org.junit.Test; import opennlp.morfologik.builder.POSDictionayBuilderTest; import opennlp.tools.postag.TagDictionary; public class MorfologikTagDictionaryTest { @Test public void testNoLemma() throws Exception { MorfologikTagDictionary dict = createDictionary(false); List tags = Arrays.asList(dict.getTags("carro")); Assert.assertEquals(1, tags.size()); Assert.assertTrue(tags.contains("NOUN")); } @Test public void testPOSDictionaryInsensitive() throws Exception { TagDictionary dict = createDictionary(false); List tags = Arrays.asList(dict.getTags("casa")); Assert.assertEquals(2, tags.size()); Assert.assertTrue(tags.contains("NOUN")); Assert.assertTrue(tags.contains("V")); // this is the behavior of case insensitive dictionary // if we search it using case insensitive, Casa as a proper noun // should be lower case in the dictionary tags = Arrays.asList(dict.getTags("Casa")); Assert.assertEquals(2, tags.size()); Assert.assertTrue(tags.contains("NOUN")); Assert.assertTrue(tags.contains("V")); } @Test public void testPOSDictionarySensitive() throws Exception { TagDictionary dict = createDictionary(true); List tags = Arrays.asList(dict.getTags("casa")); Assert.assertEquals(2, tags.size()); Assert.assertTrue(tags.contains("NOUN")); Assert.assertTrue(tags.contains("V")); // this is the behavior of case insensitive dictionary // if we search it using case insensitive, Casa as a proper noun // should be lower case in the dictionary tags = Arrays.asList(dict.getTags("Casa")); Assert.assertEquals(1, tags.size()); Assert.assertTrue(tags.contains("PROP")); } private MorfologikTagDictionary createDictionary(boolean caseSensitive) throws Exception { return this.createDictionary(caseSensitive, null); } private MorfologikTagDictionary createDictionary(boolean caseSensitive, List constant) throws Exception { Path output = POSDictionayBuilderTest.createMorfologikDictionary(); output.toFile().deleteOnExit(); Dictionary dic = Dictionary.read(output); return new MorfologikTagDictionary(dic, caseSensitive); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_test_java_opennlp_morfologik_t0100644 0000000 0000000 00000000176 14135770370 032571 xustar000000000 0000000 126 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/tagdict/POSTaggerFactoryTest.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/tagdict/POSTagger0100664 0001750 0001750 00000007002 14135770370 034036 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.tagdict; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import org.junit.Assert; import org.junit.Test; import opennlp.morfologik.builder.POSDictionayBuilderTest; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSSample; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.POSTaggerME; import opennlp.tools.postag.TagDictionary; import opennlp.tools.postag.WordTagSampleStream; import opennlp.tools.util.MarkableFileInputStreamFactory; import opennlp.tools.util.ObjectStream; import opennlp.tools.util.PlainTextByLineStream; import opennlp.tools.util.TrainingParameters; import opennlp.tools.util.model.ModelType; /** * Tests for the {@link POSTaggerFactory} class. */ public class POSTaggerFactoryTest { private static ObjectStream createSampleStream() throws IOException { MarkableFileInputStreamFactory sampleDataIn = new MarkableFileInputStreamFactory( new File(POSTaggerFactory.class.getResource("/AnnotatedSentences.txt").getFile())); ObjectStream lineStream = null; try { lineStream = new PlainTextByLineStream(sampleDataIn, StandardCharsets.UTF_8); } catch (IOException ex) { CmdLineUtil.handleCreateObjectStreamError(ex); } return new WordTagSampleStream(lineStream); } private static POSModel trainPOSModel(ModelType type, POSTaggerFactory factory) throws IOException { return POSTaggerME.train("en", createSampleStream(), TrainingParameters.defaultParams(), factory); } @Test public void testPOSTaggerWithCustomFactory() throws Exception { Path dictionary = POSDictionayBuilderTest.createMorfologikDictionary(); dictionary.toFile().deleteOnExit(); POSTaggerFactory inFactory = new MorfologikPOSTaggerFactory(); TagDictionary inDict = inFactory.createTagDictionary(dictionary.toFile()); inFactory.setTagDictionary(inDict); POSModel posModel = trainPOSModel(ModelType.MAXENT, inFactory); POSTaggerFactory factory = posModel.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof MorfologikTagDictionary); factory = null; ByteArrayOutputStream out = new ByteArrayOutputStream(); posModel.serialize(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); POSModel fromSerialized = new POSModel(in); factory = fromSerialized.getFactory(); Assert.assertTrue(factory.getTagDictionary() instanceof MorfologikTagDictionary); Assert.assertEquals(2, factory.getTagDictionary().getTags("casa").length); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_test_java_opennlp_morfologik_l0100644 0000000 0000000 00000000205 14135770370 032552 xustar000000000 0000000 133 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizerTest.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/java/opennlp/morfologik/lemmatizer/Morfol0100664 0001750 0001750 00000004235 14135770370 034240 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.lemmatizer; import java.nio.file.Path; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import opennlp.morfologik.builder.POSDictionayBuilderTest; import opennlp.tools.lemmatizer.Lemmatizer; public class MorfologikLemmatizerTest { @Test public void testLemmatizeInsensitive() throws Exception { Lemmatizer dict = createDictionary(false); String[] toks = {"casa", "casa", "Casa"}; String[] tags = {"V", "NOUN", "PROP"}; String[] lemmas = dict.lemmatize(toks, tags); Assert.assertEquals("casar", lemmas[0]); Assert.assertEquals("casa", lemmas[1]); // lookup is case insensitive. There is no entry casa - prop Assert.assertNull(lemmas[2]); } @Test public void testLemmatizeMultiLemma() throws Exception { MorfologikLemmatizer dict = createDictionary(false); String[] toks = {"foi"}; String[] tags = {"V"}; List> lemmas = dict.lemmatize(Arrays.asList(toks), Arrays.asList(tags)); Assert.assertTrue(lemmas.get(0).contains("ir")); Assert.assertTrue(lemmas.get(0).contains("ser")); } private MorfologikLemmatizer createDictionary(boolean caseSensitive) throws Exception { Path output = POSDictionayBuilderTest.createMorfologikDictionary(); output.toFile().deleteOnExit(); return new MorfologikLemmatizer(output); } } apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/resources/dictionaryWithLemma.dict0100664 0001750 0001750 00000000337 14135770370 032775 0ustar00jeffjeff0000000 0000000 \fsa_+^Ccfmeninapioo,ADo,NOUN,AAznho,AEj,ABjoi,AHCAr,VDsearsai`ona,ADaznha,AEJ,r,AA,V-INFAA,r"roasa,AA,PROPapache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/resources/AnnotatedSentences.txt0100664 0001750 0001750 00000031454 14135770370 032505 0ustar00jeffjeff0000000 0000000 Last_JJ September_NNP ,_, I_PRP tried_VBD to_TO find_VB out_RP the_DT address_NN of_IN an_DT old_JJ school_NN friend_NN whom_WP I_PRP had_VBD not_RB seen_VBN for_IN 15_CD years_NNS ._. I_PRP just_RB knew_VBD his_PRP$ name_NN ,_, Alan_NNP McKennedy_NNP ,_, and_CC I_PRP 'd_MD heard_VBD the_DT rumour_NN that_IN he_PRP 'd_MD moved_VBD to_TO Scotland_NNP ,_, the_DT country_NN of_IN his_PRP$ ancestors_NNS ._. So_IN I_PRP called_VBD Julie_NNP ,_, a_DT friend_NN who's_WDT still_RB in_IN contact_NN with_IN him_PRP ._. She_PRP told_VBD me_PRP that_IN he_PRP lived_VBD in_IN 23213_CD Edinburgh_NNP ,_, Worcesterstreet_NNP 12_CD ._. I_PRP wrote_VBD him_PRP a_DT letter_NN right_RB away_RB and_CC he_PRP answered_VBD soon_RB ,_, sounding_VBG very_RB happy_JJ and_CC delighted_JJ ._. Last_JJ year_NN ,_, I_PRP wanted_VBD to_TO write_VB a_DT letter_NN to_TO my_PRP$ grandaunt_NN ._. Her_PRP$ 86_CD th_NN birthday_NN was_VBD on_IN October_NNP 6_CD ,_, and_CC I_PRP no_RB longer_RB wanted_VBD to_TO be_VB hesitant_JJ to_TO get_VB in_IN touch_NN with_IN her_PRP ._. I_PRP did_VBD not_RB know_VB her_PRP face-to-face_RB ,_, and_CC so_RB it_PRP was_VBD not_RB easy_JJ for_IN me_PRP to_TO find_VB out_RP her_PRP$ address_NN ._. As_IN she_PRP had_VBD two_CD apartments_NNS in_IN different_JJ countries_NNS ,_, I_PRP decided_VBD to_TO write_VB to_TO both_DT ._. The_DT first_JJ was_VBD in_IN 12424_CD Paris_NNP in_IN Rue-de-Grandes-Illusions_NNP 5_CD ._. But_CC Marie_NNP Clara_NNP ,_, as_IN my_PRP$ aunt_NN is_VBZ called_VBN ,_, prefered_VBN her_PRP$ apartment_NN in_IN Berlin_NNP ._. It_PRP 's_VBZ postcode_JJ is_VBZ 30202_CD ._. She_PRP lived_VBD there_RB ,_, in_IN beautiful_JJ Kaiserstrae_NNP 13_CD ,_, particulary_NN in_IN summer_NN ._. Hi_UH my_PRP$ name_NN is_VBZ Stefanie_NNP Schmidt_NNP ,_, how_WRB much_RB is_VBZ a_DT taxi_NN from_IN Ostbahnhof_NNP to_TO Hauptbahnhof_NNP ?_. About_IN 10_CD Euro_NNP ,_, I_PRP reckon_VBP ._. That_DT sounds_VBZ good_JJ ._. So_RB please_VB call_VB a_DT driver_NN to_TO Leonardstrae_NNP 112_CD ,_, near_IN the_DT Ostbahnhof_NNP in_IN 56473_CD Hamburg_NNP ._. I_PRP 'd_MD like_VB to_TO be_VB at_IN Silberhornstrae_NNP 12_CD as_RB soon_RB as_IN possible_JJ ._. Thank_VB you_PRP very_RB much_RB !_. Hi_NNP Mike_NNP ,_, it_PRP 's_VBZ Stefanie_NNP Schmidt_NNP ._. I_PRP 'm_VBP in_IN Nrnberg_NNP at_IN the_DT moment_NN and_CC I_PRP 've_VBP got_VBD the_DT problem_NN that_IN my_PRP$ bike_NN has_VBZ broken_VBN ._. Could_MD you_PRP please_VB pick_VB me_PRP up_RP from_IN Seidlstrae_NNP 56_CD ,_, I_PRP 'm_VBP in_IN the_DT Caf_NNP "Mondnacht"_NNP at_IN the_DT moment_NN ._. Please_VB hurry_VB up_RB ,_, I_PRP need_VBP to_TO be_VB back_RB in_IN Ulm_NNP at_IN 8_CD p.m._NN !_. My_PRP$ husband_NN George_NNP and_CC me_PRP recently_RB celebrated_VBD our_PRP$ 10_CD th_JJ wedding_NN anniversary_NN ._. We_PRP got_VBD married_VBN on_IN March_NNP 11_CD ,_, 1995_CD ._. Therefore_RB ,_, we_PRP found_VBD a_DT photo_NN album_NN with_IN pictures_NNS of_IN our_PRP$ first_JJ own_JJ apartment_NN ,_, which_WDT was_VBD in_IN 81234_CD Munich_NNP ._. As_IN a_DT young_JJ married_JJ couple_NN ,_, we_PRP did_VBD not_RB have_VB enough_JJ money_NN to_TO afford_VB a_DT bigger_JJR lodge_NN than_IN this_DT one_CD in_IN Blumenweg_NNP 1_CD ._. But_CC only_RB five_CD years_NNS later_RB ,_, my_PRP$ husband_NN was_VBD offered_VBN a_DT well-payed_JJ job_NN in_IN 17818_CD Hamburg_NNP ,_, so_IN we_PRP moved_VBD there_RB ._. Since_IN then_RB ,_, our_PRP$ guests_NNS have_VBP to_TO ring_VB at_IN Veilchenstrae_NNP 11_CD if_IN they_PRP want_VBP to_TO visit_VB us_PRP ,_, Luise_NNP and_CC George_NNP Bauer_NNP ._. I_PRP read_VBD your_PRP$ help-wanted_JJ ad_NN with_IN great_JJ attention_NN ._. I_PRP 'm_VBP a_DT student_NN of_IN informatics_NNS ,_, 6th_JJ semester,_NN and_CC I_PRP 'm_VBP very_RB interested_VBN in_IN your_PRP$ part-time_JJ job_NN offer_NN ._. I_PRP have_VBP a_DT competent_JJ knowledge_NN of_IN programming_NN and_CC foreign_JJ languages_NNS ,_, like_IN French_JJ and_CC Italian_JJ ._. I_PRP 'm_VBP looking_VBG forward_RB to_TO your_PRP$ reply_NN ._. Alisa_NNP Fernandes_NNP ,_, a_DT tourist_NN from_IN Spain_NNP ,_, went_VBD to_TO the_DT reception_NN desk_NN of_IN the_DT famous_JJ Highfly-Hotel_NNP in_IN 30303_CD Berlin_NNP ._. As_IN she_PRP felt_VBD quite_RB homesick_JJ ,_, she_PRP asked_VBD the_DT staff_NN if_IN they_PRP knew_VBD a_DT good_JJ Spanish_JJ restaurant_NN in_IN Berlin_NNP ._. The_DT concierge_NN told_VBD her_PRP to_TO go_VB to_TO the_DT "Tapasbar"_NN in_IN Chesterstr._NNP 2_CD ._. Alisa_NNP appreciated_VBD the_DT hint_NN and_CC enjoyed_VBD a_DT delicious_JJ traditional_JJ meal_NN ._. An_DT old_JJ friend_NN from_IN France_NNP is_VBZ currently_RB travelling_VBG around_IN Europe_NNP ._. Yesterday_NN ,_, she_PRP arrived_VBD in_IN Berlin_NNP and_CC we_PRP met_VBD up_RP spontaneously_RB ._. She_PRP wanted_VBD me_PRP to_TO show_VB her_PRP some_DT famous_JJ sights_NNS ,_, like_IN the_DT Brandenburger_NNP Tor_NNP and_CC the_DT Reichstag_NNP ._. But_CC it_PRP was_VBD not_RB easy_JJ to_TO meet_VB up_RP in_IN the_DT city_NN because_IN she_PRP hardly_RB knows_VBZ any_DT streetname_NN or_CC building_NN ._. So_IN I_PRP proposed_VBD to_TO meet_VB at_IN a_DT quite_RB local_JJ point:_NN the_DT caf_NN "Daily's"_NN in_IN Unter-den-Linden_NNP 18,_CD 30291_CD Berlin_NNP ._. It_PRP is_VBZ five_CD minutes_NNS away_RB from_IN the_DT underground_JJ station_NN "Westbad"_NN ._. She_PRP found_VBD it_PRP instantly_RB and_CC we_PRP spent_VBD a_DT great_JJ day_NN in_IN the_DT capital_NN ._. Where_WRB did_VBD you_PRP get_VB those_DT great_JJ shoes_NNS ?_. They_PRP look_VBP amazing_JJ ,_, I_PRP love_VBP the_DT colour_NN ._. Are_VBP they_PRP made_VBN of_IN leather_NN ?_. No,_NNP that_DT 's_VBZ faked_VBN ._. But_CC anyway_RB ,_, I_PRP like_VBP them_PRP too_RB ._. I_PRP got_VBD them_PRP from_IN Hamburg._NNP Do_VBP not_RB you_PRP know_VB the_DT famous_JJ shop_NN in_IN Veilchenstrae_NNP ?_. It_PRP 's_VBZ called_VBN "Twentytwo"_NNP ._. I_PRP 've_VBP never_RB heard_VBN of_IN that_DT before_RB ._. Could_MD you_PRP give_VB me_PRP the_DT complete_JJ address_NN ?_. Sure_JJ ,_, it_PRP 's_VBZ in_IN Veilchenstrae_NNP 12_CD ,_, in_IN 78181_CD Hamburg_NNP ._. I_PRP deem_VBP it_PRP best_RB to_TO write_VB a_DT letter_NN to_TO the_DT owner_NN if_IN the_DT shoes_NNS are_VBP still_RB available_JJ ._. His_PRP$ name_NN is_VBZ Gerhard_NNP Fritsch_NNP ._. Hi_UH ,_, am_VBP I_PRP talking_VBG to_TO the_DT inquiries_NNS ?_. My_PRP$ name_NN is_VBZ Mike_NNP Sander_NNP and_CC I_PRP 'd_MD like_VB to_TO know_VB if_IN it_PRP is_VBZ possible_JJ to_TO get_VB information_NN about_IN an_DT address_NN if_IN I_PRP merely_RB know_VBP the_DT name_NN and_CC the_DT phone_NN number_NN of_IN a_DT person_NN !_. How_WRB is_VBZ he_PRP or_CC she_PRP called_VBD ?_. His_PRP$ name_NN is_VBZ Stefan_NNP Miller_NNP and_CC his_PRP$ number_NN is_VBZ the_DT 030/827234_CD ._. I'll_NNP have_VBP a_DT look_NN in_IN the_DT computer..._NN I_PRP found_VBD a_DT Stefan_NNP Miller_NNP who_WP lives_VBZ in_IN Leipzig._NNP Is_VBZ that_DT right_NN ?_. Yes_UH ,_, it_PRP definitely_RB is_VBZ ._. So_RB Stefan_NNP Miller_NNP lives_VBZ in_IN Heinrich-Heine-Strae_NNP 112_CD ,_, in_IN 20193_CD Leipzig_NNP ._. Thank_VB you_PRP very_RB much_RB for_IN the_DT information_NN ._. Bye_NNP !_. On_IN July_NNP 14_CD ,_, the_DT father_NN of_IN a_DT family_NN got_VBD painfully_RB injured_VBN after_IN he_PRP had_VBD tried_VBN to_TO start_VB a_DT barbecue_NN ._. The_DT flaring_VBG flames_NNS burnt_VBP instantly_RB through_IN his_PRP$ jacket_NN ,_, which_WDT he_PRP managed_VBD to_TO pull_VB off_RP last-minute_JJ ._. Although_IN the_DT wounds_NNS were_VBD n't_RB life-threatening_JJ ,_, it_PRP was_VBD urgent_JJ to_TO bring_VB him_PRP directly_RB into_IN ambulance_NN ._. But_CC the_DT only_JJ hospital_NN that_WDT had_VBD opened_VBN that_IN Sunday_NNP was_VBD the_DT Paracelsus_NNP Hospital_NNP in_IN 83939_CD Weilheim_NNP ,_, which_WDT was_VBD 2_CD hours_NNS away_RB ._. Convulsed_JJ with_IN pain_NN ,_, the_DT man_NN finally_RB arrived_VBD in_IN Stifterstrae_NNP 15_CD ,_, where_WRB the_DT personal_NN immediately_RB took_VBD care_NN of_IN him_PRP ._. Last_JJ year_NN ,_, I_PRP worked_VBD as_IN a_DT delivery_NN boy_NN for_IN a_DT small_JJ local_JJ magazine_NN ._. I_PRP worked_VBD in_IN the_DT area_NN of_IN 83454_CD Ottobrunn_NNP ._. I_PRP had_VBD a_DT list_NN with_IN the_DT home_NN addresses_NNS of_IN our_PRP$ costumers_NNS whom_WP I_PRP brought_VBD their_PRP$ papers_NNS once_RB a_DT week_NN ._. An_DT elderly_JJ lady_NN ,_, who_WP was_VBD called_VBN Elenor_NNP Meier_NNP ,_, lived_VBD in_IN Grtnerweg_NNP 6_CD ,_, and_CC I_PRP always_RB drove_VBD there_RB first_RB ,_, because_IN I_PRP liked_VBD her_PRP the_DT most_JJS ._. Afterwards_RB ,_, I_PRP went_VBD to_TO a_DT student_NN ,_, Gina_NNP Schneider_NNP ,_, who_WP lived_VBD still_RB in_IN her_PRP$ parent's_NNS house_NN in_IN Grtnerweg_NNP 25_CD ._. The_DT last_JJ in_IN line_NN was_VBD the_DT retired_JJ teacher_NN Bruno_NNP Schulz_NNP in_IN Dramenstrae_NNP 15_CD ._. He_PRP was_VBD friendly_JJ enough_RB to_TO tip_VB sometimes_RB ._. Our_PRP$ business_NN company_NN was_VBD founded_VBN in_IN 1912_CD by_IN the_DT singer_NN and_CC entertainer_NN Michel_NNP Seile_NNP ._. He_PRP opened_VBD the_DT first_JJ agency_NN in_IN Erding_NNP ,_, a_DT small_JJ town_NN near_IN Munich_NNP ._. Now_RB ,_, more_JJR than_IN 90_CD years_NNS of_IN turbulent_JJ ups_NNS and_CC downs_NNS later_RB ,_, we_PRP finally_RB decided_VBD to_TO situate_VB our_PRP$ company_NN in_IN a_DT more_JJR central_JJ and_CC frequented_JJ area_NN ._. Last_JJ year_NN ,_, we_PRP moved_VBD into_IN an_DT empty_JJ factory_NN building_NN in_IN 30303_CD Berlin_NNP ._. It_PRP is_VBZ located_VBN in_IN Barmerstr._NNP 34_CD ._. When_WRB George_NNP Miller_NNP ,_, a_DT tourist_NN from_IN England_NNP ,_, came_VBD to_TO Munich_NNP ,_, he_PRP had_VBD no_DT idea_NN how_WRB to_TO read_VB the_DT city_NN maps_NNS ._. He_PRP depended_VBD completely_RB on_IN the_DT help_NN and_CC information_NN of_IN German_JJ pedestrians_NNS ._. One_CD day_NN ,_, he_PRP simply_RB could_MD not_RB find_VB the_DT famous_JJ Lenbachhaus_NNP ._. So_RB he_PRP asked_VBD a_DT young_JJ woman_NN for_IN help_NN ._. She_PRP pointed_VBD at_IN a_DT street_NN sign_NN and_CC explained_VBD to_TO him_PRP that_IN he_PRP 'd_MD find_VB the_DT Lenbachhaus_NNP in_IN Luisenstrae_NNP 33_CD ,_, which_WDT is_VBZ in_IN 80333_CD Munich_NNP ._. Miller_NNP was_VBD very_RB grateful_JJ and_CC could_MD finally_RB enjoy_VB the_DT exhibition_NN ._. On_IN March_NNP 15_CD ,_, there_EX was_VBD an_DT accident_NN near_IN Munich_NNP ._. The_DT driver_NN got_VBD badly_RB injured_VBN ._. Driving_VBG alone_RB not_RB far_RB from_IN her_PRP$ home_NN ,_, the_DT middle-aged_JJ woman_NN crashed_VBD at_IN high_JJ speed_NN into_IN a_DT tree_NN ._. A_DT resident_NN ,_, who_WP lives_VBZ near_IN the_DT street_NN where_WRB the_DT accident_NN took_VBD place_NN ,_, called_VBN instantly_RB the_DT police_NN ._. He_PRP reported_VBD what_WP had_VBD happened_VBN and_CC gave_VBD his_PRP$ name_NN and_CC address_NN to_TO the_DT officer_NN ._. He_PRP 's_VBZ called_VBN Peter_NNP Schubert_NNP and_CC he_PRP lives_VBZ at_IN Max-Lw-Strae_NNP 13_CD in_IN 84630_CD Gauting_NNP ._. The_DT police_NN arrived_VBD ten_CD minutes_NNS later_RB and_CC brought_VBD the_DT woman_NN into_IN hospital_NN ._. Although_IN she_PRP had_VBD multiple_JJ trauma_NN ,_, she_PRP 's_VBZ out_IN of_IN mortal_JJ danger_NN ._. Hi_NNP ,_, how_WRB are_VBP you_PRP ?_. Are_VBP nt't_RB you_PRP a_DT friend_NN of_IN Natalie_NNP ?_. Yeah_UH for_IN sure_JJ ._. How_WRB did_VBD you_PRP know_VB that_DT ?_. I_PRP saw_VBD you_PRP sitting_VBG next_JJ to_TO her_PRP at_IN uni_JJ ._. Yeah_NNP she_PRP 's_VBZ my_PRP$ best_JJS friend_NN ._. Are_VBP you_PRP going_VBG to_TO her_PRP party_NN next_JJ friday_NN ?_. Oh_UH yes_UH ,_, I_PRP 'd_MD really_RB like_VB to_TO ._. But_CC in_IN fact_NN I_PRP do_VBP n't_RB know_VB yet_RB where_WRB it_PRP takes_VBZ place_NN ._. I_PRP can_MD tell_VB you_PRP :_: ring_NN at_IN Baumann,_NNP Meisenstrae_NNP 5_CD ,_, in_IN 81737_CD Munich_NNP ._. The_DT party_NN starts_VBZ at_IN 9_CD p.m._NN ._. I_PRP hope_VBP you_PRP 'll_MD find_VB it_PRP ._. Thank_VB you_PRP very_RB much_RB ,_, see_VBP you_PRP next_JJ friday_NN !_. My_PRP$ name_NN is_VBZ Michael_NNP Hinterhofer_NNP ._. When_WRB I_PRP was_VBD 21_CD ,_, I_PRP moved_VBD out_RP from_IN my_PRP$ parents_NNS home_NN into_IN my_PRP$ first_JJ own_JJ appartment_NN in_IN order_NN to_TO study_VB in_IN a_DT bigger_JJR city_NN ._. My_PRP$ new_JJ home_NN was_VBD in_IN Lilienstrae_NNP 1_CD in_IN 25334_CD Hamburg_NNP ._. But_CC I_PRP realized_VBD quickly_RB that_IN life_NN in_IN a_DT metropolis_NN was_VBD n't_RB relaxed_VBN enough_RB for_IN me_PRP ._. So_IN I_PRP decided_VBD to_TO move_VB into_IN a_DT smaller_JJR town_NN ._. Now_RB I_PRP 'm_VBP a_DT tenant_NN with_IN an_DT elderly_JJ widow_NN ._. We_PRP live_VBP in_IN Brgerstrae_NNP 2_CD in_IN 63737_CD Heidelberg_NNP ._. I_PRP really_RB like_IN the_DT smalltown_JJ flair_NN and_CC my_PRP$ studies_NNS at_IN Heidelberg_NNP 's_POS notable_JJ university_NN ._.apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/resources/dictionaryWithLemma.txt0100664 0001750 0001750 00000000325 14135770370 032666 0ustar00jeffjeff0000000 0000000 carro,carro,NOUN casa,casa,NOUN Casa,Casa,PROP casa,casinha,NOUN casa,casona,NOUN casar,casa,V casar,casar,V-INF ir,foi,V menino,menina,NOUN menino,menininho,NOUN menino,menino,NOUN menino,meninão,NOUN ser,foi,V apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/test/resources/dictionaryWithLemma.info0100664 0001750 0001750 00000000756 14135770370 033012 0ustar00jeffjeff0000000 0000000 # # REQUIRED PROPERTIES # # Column (lemma, inflected, tag) separator. This must be a single byte in the target encoding. fsa.dict.separator=, # The charset in which the input is encoded. UTF-8 is strongly recommended. fsa.dict.encoding=UTF-8 # The type of lemma-inflected form encoding compression that precedes automaton # construction. Allowed values: [suffix, infix, prefix, none]. # Details are in Daciuk's paper and in the code. # Leave at 'prefix' if not sure. fsa.dict.encoder=prefix./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_c0100644 0000000 0000000 00000000212 14135770370 032504 xustar000000000 0000000 138 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/XMLDictionaryToTableTool.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/X0100664 0001750 0001750 00000010115 14135770370 034040 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.cmdline.builder; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.util.Iterator; import java.util.Properties; import morfologik.stemming.DictionaryMetadata; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.postag.POSDictionary; public class XMLDictionaryToTableTool extends BasicCmdLineTool { private String SEPARATOR; public String getShortDescription() { return "reads an OpenNLP XML tag dictionary and outputs it in a tabular file"; } public String getHelp() { return getBasicHelp(Params.class); } public void run(String[] args) { Params params = validateAndParseParams(args, Params.class); File dictInFile = params.getInputFile(); File dictOutFile = params.getOutputFile(); Charset encoding = params.getEncoding(); SEPARATOR = params.getSeparator(); CmdLineUtil.checkInputFile("dictionary input file", dictInFile); CmdLineUtil.checkOutputFile("dictionary output file", dictOutFile); POSDictionary tagDictionary; try { tagDictionary = POSDictionary.create(new FileInputStream(dictInFile)); } catch (IOException e) { throw new TerminateToolException(-1, "Error while loading XML POS Dictionay: " + e.getMessage(), e); } Iterator iterator = tagDictionary.iterator(); try (BufferedWriter writer = Files.newBufferedWriter(dictOutFile.toPath(), encoding)) { while (iterator.hasNext()) { String word = iterator.next(); for (String tag : tagDictionary.getTags(word)) { if (valid(word, tag)) { String entry = createEntry(word, tag); writer.write(entry); writer.newLine(); } } } writer.close(); System.out.println("Created dictionary: " + dictOutFile.toPath()); } catch (IOException e) { throw new TerminateToolException(-1, "Error while writing output: " + e.getMessage(), e); } Properties info = new Properties(); info.setProperty("fsa.dict.separator", SEPARATOR); info.setProperty("fsa.dict.encoding", params.getEncoding().name()); info.setProperty("fsa.dict.encoder", params.getEncoder()); Path metaPath = DictionaryMetadata.getExpectedMetadataLocation(dictOutFile.toPath()); try { info.store(Files.newOutputStream(metaPath), "Info file for FSA Morfologik dictionary."); } catch (IOException e) { throw new TerminateToolException(-1, "Error while writing metadata output: " + e.getMessage(), e); } System.out.println("Created metadata: " + dictOutFile.toPath()); } private boolean valid(String word, String tag) { if (word.contains(SEPARATOR) || tag.contains(SEPARATOR)) { System.out .println("Warn: invalid entry because contains separator - word: " + word + " tag: " + tag); return false; } return true; } private String createEntry(String word, String tag) { return "" + SEPARATOR + // base word + SEPARATOR + tag; } interface Params extends XMLDictionaryToTableParams { } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_c0100644 0000000 0000000 00000000214 14135770370 032506 xustar000000000 0000000 140 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/XMLDictionaryToTableParams.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/X0100664 0001750 0001750 00000003550 14135770370 034045 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.cmdline.builder; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.EncodingParameter; /** * Params for Dictionary tools. */ interface XMLDictionaryToTableParams extends EncodingParameter { @ParameterDescription(valueName = "in", description = "OpenNLP XML Tag Dictionary.") File getInputFile(); @ParameterDescription(valueName = "out", description = "Output for Morfologik " + "(.info will be also created).") File getOutputFile(); @ParameterDescription(valueName = "char", description = "Columm separator " + "(must be a single character)") @OptionalParameter(defaultValue = ",") String getSeparator(); @ParameterDescription(valueName = "value", description = " Type of lemma-inflected " + "form encoding compression that precedes automaton construction. Allowed " + "values: [suffix, infix, prefix, none].") @OptionalParameter(defaultValue = "prefix") String getEncoder(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_c0100644 0000000 0000000 00000000223 14135770370 032506 xustar000000000 0000000 147 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/MorfologikDictionaryBuilderParams.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/M0100664 0001750 0001750 00000004542 14135770370 034034 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.cmdline.builder; import java.io.File; import opennlp.tools.cmdline.ArgumentParser.OptionalParameter; import opennlp.tools.cmdline.ArgumentParser.ParameterDescription; import opennlp.tools.cmdline.params.EncodingParameter; /** * Params for Dictionary tools. */ interface MorfologikDictionaryBuilderParams extends EncodingParameter { @ParameterDescription(valueName = "in", description = "The input file (base,inflected,tag). An associated metadata (*.info) file must exist.") File getInputFile(); @ParameterDescription(valueName = "true|false", description = "Accept leading BOM bytes (UTF-8).") @OptionalParameter(defaultValue = "false") Boolean getAcceptBOM(); @ParameterDescription(valueName = "true|false", description = "Accept CR bytes in input sequences (\r).") @OptionalParameter(defaultValue = "false") Boolean getAcceptCR(); @ParameterDescription(valueName = "FSA5|CFSA2", description = "Automaton serialization format.") @OptionalParameter(defaultValue = "FSA5") String getFormat(); @ParameterDescription(valueName = "true|false", description = "Ignore empty lines in the input.") @OptionalParameter(defaultValue = "false") Boolean getIgnoreEmpty(); @ParameterDescription(valueName = "true|false", description = "Overwrite the output file if it exists.") @OptionalParameter(defaultValue = "false") Boolean getOverwrite(); @ParameterDescription(valueName = "true|false", description = "Validate input to make sure it makes sense.") @OptionalParameter(defaultValue = "false") Boolean getValidate(); } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_c0100644 0000000 0000000 00000000221 14135770370 032504 xustar000000000 0000000 145 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/MorfologikDictionaryBuilderTool.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/builder/M0100664 0001750 0001750 00000004377 14135770370 034042 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.cmdline.builder; import java.io.File; import java.nio.file.Path; import morfologik.stemming.DictionaryMetadata; import opennlp.morfologik.builder.MorfologikDictionayBuilder; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CmdLineUtil; import opennlp.tools.cmdline.TerminateToolException; public class MorfologikDictionaryBuilderTool extends BasicCmdLineTool { interface Params extends MorfologikDictionaryBuilderParams { } public String getShortDescription() { return "builds a binary POS Dictionary using Morfologik"; } public String getHelp() { return getBasicHelp(Params.class); } public void run(String[] args) { Params params = validateAndParseParams(args, Params.class); File dictInFile = params.getInputFile(); CmdLineUtil.checkInputFile("dictionary input file", dictInFile); Path metadataPath = DictionaryMetadata.getExpectedMetadataLocation(dictInFile.toPath()); CmdLineUtil.checkInputFile("dictionary metadata (.info) input file", metadataPath.toFile()); MorfologikDictionayBuilder builder = new MorfologikDictionayBuilder(); try { builder.build(dictInFile.toPath(), params.getOverwrite(), params.getValidate(), params.getAcceptBOM(), params.getAcceptCR(), params.getIgnoreEmpty()); } catch (Exception e) { throw new TerminateToolException(-1, "Error while creating Morfologik POS Dictionay: " + e.getMessage(), e); } } } apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/cmdline/CLI.java0100664 0001750 0001750 00000011626 14135770370 033542 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.cmdline; import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import opennlp.morfologik.cmdline.builder.MorfologikDictionaryBuilderTool; import opennlp.morfologik.cmdline.builder.XMLDictionaryToTableTool; import opennlp.tools.cmdline.BasicCmdLineTool; import opennlp.tools.cmdline.CmdLineTool; import opennlp.tools.cmdline.StreamFactoryRegistry; import opennlp.tools.cmdline.TerminateToolException; import opennlp.tools.cmdline.TypedCmdLineTool; import opennlp.tools.util.Version; public final class CLI { private static final String CMD = "opennlp-morfologik-addon"; private static Map toolLookupMap; static { toolLookupMap = new LinkedHashMap<>(); List tools = new LinkedList<>(); tools.add(new MorfologikDictionaryBuilderTool()); tools.add(new XMLDictionaryToTableTool()); for (CmdLineTool tool : tools) { toolLookupMap.put(tool.getName(), tool); } toolLookupMap = Collections.unmodifiableMap(toolLookupMap); } /** * @return a set which contains all tool names */ public static Set getToolNames() { return toolLookupMap.keySet(); } private static void usage() { System.out.print("OpenNLP Morfologik Addon " + Version.currentVersion().toString() + ". "); System.out.println("Usage: " + CMD + " TOOL"); System.out.println("where TOOL is one of:"); // distance of tool name from line start int numberOfSpaces = -1; for (String toolName : toolLookupMap.keySet()) { if (toolName.length() > numberOfSpaces) { numberOfSpaces = toolName.length(); } } numberOfSpaces = numberOfSpaces + 4; for (CmdLineTool tool : toolLookupMap.values()) { System.out.print(" " + tool.getName()); for (int i = 0; i < StrictMath.abs(tool.getName().length() - numberOfSpaces); i++) { System.out.print(" "); } System.out.println(tool.getShortDescription()); } System.out.println("All tools print help when invoked with help parameter"); System.out.println("Example: opennlp-morfologik-addon POSDictionaryBuilder help"); } @SuppressWarnings("rawtypes") public static void main(String[] args) { if (args.length == 0) { usage(); System.exit(0); } String[] toolArguments = new String[args.length - 1]; System.arraycopy(args, 1, toolArguments, 0, toolArguments.length); String toolName = args[0]; //check for format String formatName = StreamFactoryRegistry.DEFAULT_FORMAT; int idx = toolName.indexOf("."); if (-1 < idx) { formatName = toolName.substring(idx + 1); toolName = toolName.substring(0, idx); } CmdLineTool tool = toolLookupMap.get(toolName); try { if (null == tool) { throw new TerminateToolException(1, "Tool " + toolName + " is not found."); } if ((0 == toolArguments.length && tool.hasParams()) || 0 < toolArguments.length && "help".equals(toolArguments[0])) { if (tool instanceof TypedCmdLineTool) { System.out.println(((TypedCmdLineTool) tool).getHelp(formatName)); } else if (tool instanceof BasicCmdLineTool) { System.out.println(tool.getHelp()); } System.exit(0); } if (tool instanceof TypedCmdLineTool) { ((TypedCmdLineTool) tool).run(formatName, toolArguments); } else if (tool instanceof BasicCmdLineTool) { if (-1 == idx) { ((BasicCmdLineTool) tool).run(toolArguments); } else { throw new TerminateToolException(1, "Tool " + toolName + " does not support formats."); } } else { throw new TerminateToolException(1, "Tool " + toolName + " is not supported."); } } catch (TerminateToolException e) { if (e.getMessage() != null) { System.err.println(e.getMessage()); } if (e.getCause() != null) { System.err.println(e.getCause().getMessage()); e.getCause().printStackTrace(System.err); } System.exit(e.getCode()); } } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_u0100644 0000000 0000000 00000000165 14135770370 032535 xustar000000000 0000000 117 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/util/MorfologikUtil.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/util/MorfologikUt0100664 0001750 0001750 00000002341 14135770370 034170 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.util; import java.io.File; import morfologik.stemming.DictionaryMetadata; public class MorfologikUtil { public static File getExpectedPropertiesFile(File dictFile) { return DictionaryMetadata.getExpectedMetadataLocation(dictFile.toPath()) .toFile(); } public static File getExpectedPropertiesFile(String dictFile) { File f = new File(dictFile); return getExpectedPropertiesFile(f); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_b0100644 0000000 0000000 00000000204 14135770370 032504 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/builder/MorfologikDictionayBuilder.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/builder/Morfologi0100664 0001750 0001750 00000006350 14135770370 034161 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.builder; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Path; import java.util.Properties; import morfologik.stemming.DictionaryMetadata; import morfologik.stemming.EncoderType; import morfologik.tools.DictCompile; /** * Utility class to build Morfologik dictionaries from a tab separated values * file. The first column is the word, the second its lemma and the third a POS * tag. If there is no lemma information leave the second column empty. */ public class MorfologikDictionayBuilder { /** * Helper to compile a morphological dictionary automaton. * * @param input The input file (base,inflected,tag). An associated metadata * (*.info) file must exist. * @param overwrite Overwrite the output file if it exists. * @param validate Validate input to make sure it makes sense. * @param acceptBom Accept leading BOM bytes (UTF-8). * @param acceptCr Accept CR bytes in input sequences (\r). * @param ignoreEmpty Ignore empty lines in the input. * @return the dictionary path * @throws Exception */ public Path build(Path input, boolean overwrite, boolean validate, boolean acceptBom, boolean acceptCr, boolean ignoreEmpty) throws Exception { DictCompile compiler = new DictCompile(input, overwrite, validate, acceptBom, acceptCr, ignoreEmpty); compiler.call(); Path metadataPath = DictionaryMetadata.getExpectedMetadataLocation(input); return metadataPath.resolveSibling( metadataPath.getFileName().toString().replaceAll( "\\." + DictionaryMetadata.METADATA_FILE_EXTENSION + "$", ".dict")); } /** * Helper to compile a morphological dictionary automaton using default * parameters. * * @param input The input file (base,inflected,tag). An associated metadata * (*.info) file must exist. * @return the dictionary path * @throws Exception */ public Path build(Path input) throws Exception { return build(input, true, true, false, false, false); } Properties createProperties(Charset encoding, String separator, EncoderType encoderType) throws IOException { Properties properties = new Properties(); properties.setProperty("fsa.dict.separator", separator); properties.setProperty("fsa.dict.encoding", encoding.name()); properties.setProperty("fsa.dict.encoder", encoderType.name()); return properties; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_t0100644 0000000 0000000 00000000204 14135770370 032526 xustar000000000 0000000 132 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/Morfologi0100664 0001750 0001750 00000011770 14135770370 034154 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.tagdict; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; import morfologik.stemming.DictionaryMetadata; import opennlp.tools.dictionary.Dictionary; import opennlp.tools.postag.POSTaggerFactory; import opennlp.tools.postag.TagDictionary; import opennlp.tools.util.model.ArtifactSerializer; import opennlp.tools.util.model.ByteArraySerializer; public class MorfologikPOSTaggerFactory extends POSTaggerFactory { private static final String MORFOLOGIK_POSDICT_SUF = "morfologik_dict"; private static final String MORFOLOGIK_DICT_INFO_SUF = "morfologik_info"; private static final String MORFOLOGIK_POSDICT = "tagdict." + MORFOLOGIK_POSDICT_SUF; private static final String MORFOLOGIK_DICT_INFO = "tagdict." + MORFOLOGIK_DICT_INFO_SUF; private TagDictionary dict; private byte[] dictInfo; private byte[] dictData; public MorfologikPOSTaggerFactory() { } public TagDictionary createTagDictionary(File dictionary) throws IOException { if (!dictionary.canRead()) { throw new FileNotFoundException("Could not read dictionary: " + dictionary.getAbsolutePath()); } Path dictionaryMeta = DictionaryMetadata.getExpectedMetadataLocation(dictionary.toPath()); if (dictionaryMeta == null || !dictionaryMeta.toFile().canRead()) { throw new FileNotFoundException("Could not read dictionary metadata: " + dictionaryMeta.getFileName()); } this.dictData = Files.readAllBytes(dictionary.toPath()); this.dictInfo = Files.readAllBytes(dictionaryMeta); return createMorfologikDictionary(dictData, dictInfo); } @Override protected void init(Dictionary ngramDictionary, TagDictionary posDictionary) { super.init(ngramDictionary, null); this.dict = posDictionary; } @Override public TagDictionary getTagDictionary() { if (this.dict == null) { if (artifactProvider != null) { Object obj = artifactProvider.getArtifact(MORFOLOGIK_POSDICT); if (obj != null) { byte[] data = artifactProvider .getArtifact(MORFOLOGIK_POSDICT); byte[] info = artifactProvider .getArtifact(MORFOLOGIK_DICT_INFO); try { this.dict = createMorfologikDictionary(data, info); } catch (IllegalArgumentException e) { throw new RuntimeException( "Could not load the dictionary files to Morfologik.", e); } catch (IOException e) { throw new RuntimeException( "IO error while reading the Morfologik dictionary files.", e); } } } } return this.dict; } @Override public void setTagDictionary(TagDictionary dictionary) { this.dict = dictionary; } @Override public TagDictionary createEmptyTagDictionary() { throw new UnsupportedOperationException( "Morfologik POS Tagger factory does not support this operation"); } @Override public TagDictionary createTagDictionary(InputStream in) throws IOException { throw new UnsupportedOperationException( "Morfologik POS Tagger factory does not support this operation"); } @Override @SuppressWarnings("rawtypes") public Map createArtifactSerializersMap() { Map serializers = super.createArtifactSerializersMap(); serializers.put(MORFOLOGIK_POSDICT_SUF, new ByteArraySerializer()); serializers.put(MORFOLOGIK_DICT_INFO_SUF, new ByteArraySerializer()); return serializers; } @Override public Map createArtifactMap() { Map artifactMap = super.createArtifactMap(); artifactMap.put(MORFOLOGIK_POSDICT, this.dictData); artifactMap.put(MORFOLOGIK_DICT_INFO, this.dictInfo); return artifactMap; } private TagDictionary createMorfologikDictionary(byte[] data, byte[] info) throws IOException { morfologik.stemming.Dictionary dict = morfologik.stemming.Dictionary .read(new ByteArrayInputStream(data), new ByteArrayInputStream( info)); return new MorfologikTagDictionary(dict); } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_t0100644 0000000 0000000 00000000201 14135770370 032523 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikTagDictionary.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/Morfologi0100664 0001750 0001750 00000005531 14135770370 034152 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.tagdict; import java.io.IOException; import java.util.ArrayList; import java.util.List; import morfologik.stemming.Dictionary; import morfologik.stemming.DictionaryLookup; import morfologik.stemming.IStemmer; import morfologik.stemming.WordData; import opennlp.tools.postag.TagDictionary; /** * A POS Tagger dictionary implementation based on Morfologik binary * dictionaries */ public class MorfologikTagDictionary implements TagDictionary { private IStemmer dictLookup; private boolean isCaseSensitive; /** * Creates a case sensitive {@link MorfologikTagDictionary} * * @param dict * a Morfologik FSA dictionary * @throws IllegalArgumentException * if FSA's root node cannot be acquired (dictionary is empty). * @throws IOException * could not read dictionary from dictURL */ public MorfologikTagDictionary(Dictionary dict) throws IllegalArgumentException, IOException { this(dict, true); } /** * Creates MorfologikLemmatizer * * @param dict * a Morfologik FSA dictionary * @param caseSensitive * if true it performs case sensitive lookup * @throws IllegalArgumentException * if FSA's root node cannot be acquired (dictionary is empty). * @throws IOException * could not read dictionary from dictURL */ public MorfologikTagDictionary(Dictionary dict, boolean caseSensitive) throws IllegalArgumentException, IOException { this.dictLookup = new DictionaryLookup(dict); this.isCaseSensitive = caseSensitive; } @Override public String[] getTags(String word) { if (!isCaseSensitive) { word = word.toLowerCase(); } List data = dictLookup.lookup(word); if (data != null && data.size() > 0) { List tags = new ArrayList<>(data.size()); for (WordData aData : data) { tags.add(aData.getTag().toString()); } if (tags.size() > 0) return tags.toArray(new String[tags.size()]); return null; } return null; } } ./PaxHeaders.X/apache-opennlp-1.9.4-src_opennlp-morfologik-addon_src_main_java_opennlp_morfologik_l0100644 0000000 0000000 00000000201 14135770370 032513 xustar000000000 0000000 129 path=apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizer.java apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/Morfol0100664 0001750 0001750 00000006013 14135770370 034201 0ustar00jeffjeff0000000 0000000 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package opennlp.morfologik.lemmatizer; import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; import morfologik.stemming.Dictionary; import morfologik.stemming.DictionaryLookup; import morfologik.stemming.IStemmer; import morfologik.stemming.WordData; import opennlp.tools.lemmatizer.Lemmatizer; public class MorfologikLemmatizer implements Lemmatizer { private IStemmer dictLookup; public MorfologikLemmatizer(Path dictionaryPath) throws IllegalArgumentException, IOException { this(Dictionary.read(dictionaryPath)); } public MorfologikLemmatizer(Dictionary dictionary) throws IllegalArgumentException, IOException { dictLookup = new DictionaryLookup(dictionary); } private List lemmatize(String word, String postag) { List dictMap = dictLookup.lookup(word.toLowerCase()); Set lemmas = new HashSet<>(); for (WordData wordData : dictMap) { if (Objects.equals(postag, asString(wordData.getTag()))) { lemmas.add(asString(wordData.getStem())); } } return Collections.unmodifiableList(new ArrayList<>(lemmas)); } private String asString(CharSequence tag) { if (tag == null) { return null; } return tag.toString(); } @Override public String[] lemmatize(String[] toks, String[] tags) { String[] lemmas = new String[toks.length]; for (int i = 0; i < toks.length; i++) { List l = lemmatize(toks[i], tags[i]); if (l.size() > 0) { lemmas[i] = l.get(0); } else { lemmas[i] = null; } } return lemmas; } /** * Generates a lemma tags for the word and postag returning the result in list of possible lemmas. * * @param toks an array of the tokens * @param tags an array of the pos tags * @return an list of possible lemmas for each token in the sequence. */ public List> lemmatize(List toks, List tags) { List> lemmas = new ArrayList<>(); for (int i = 0; i < toks.size(); i++) { lemmas.add(lemmatize(toks.get(i), tags.get(i))); } return lemmas; } } apache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/bin/morfologik-addon.bat0100664 0001750 0001750 00000003372 14135770370 030603 0ustar00jeffjeff0000000 0000000 @ECHO off REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. REM # Note: Do not output anything in this script file, any output REM # may be inadvertantly placed in any output files if REM # output redirection is used. SETLOCAL IF "%JAVA_CMD%" == "" ( IF "%JAVA_HOME%" == "" ( SET JAVA_CMD=java ) ELSE ( REM # Keep JAVA_HOME to short-name without spaces FOR %%A IN ("%JAVA_HOME%") DO SET JAVA_CMD=%%~sfA\bin\java ) ) REM # Should work with Windows XP and greater. If not, specify the path to where it is installed. IF "%OPENNLP_HOME%" == "" ( SET OPENNLP_HOME=%~sp0.. ) ELSE ( REM # Keep OPENNLP_HOME to short-name without spaces FOR %%A IN ("%OPENNLP_HOME%") DO SET OPENNLP_HOME=%%~sfA ) setLocal EnableDelayedExpansion set CLASSPATH=" FOR %%A IN ("%OPENNLP_HOME%\lib\*.jar") DO ( set CLASSPATH=!CLASSPATH!;%%A ) set CLASSPATH=!CLASSPATH!" %JAVA_CMD% -Xmx1024m -cp %CLASSPATH% opennlp.morfologik.cmdline.CLI %* ENDLOCALapache-opennlp-1.9.4-src/opennlp-morfologik-addon/src/main/bin/morfologik-addon0100775 0001750 0001750 00000002345 14135770370 030040 0ustar00jeffjeff0000000 0000000 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Note: Do not output anything in this script file, any output # may be inadvertantly placed in any output files if # output redirection is used. if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then JAVACMD="$JAVA_HOME/bin/java" else JAVACMD="`which java`" fi fi # Might fail if $0 is a link OPENNLP_HOME=`dirname "$0"`/.. $JAVACMD -Xmx1024m -cp "lib/*" opennlp.morfologik.cmdline.CLI $@ apache-opennlp-1.9.4-src/opennlp-morfologik-addon/pom.xml0100664 0001750 0001750 00000004206 14136044070 023677 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache.opennlp opennlp 1.9.4 ../pom.xml opennlp-morfologik-addon jar Apache OpenNLP Morfologik Addon http://maven.apache.org org.carrot2 morfologik-stemming ${morfologik.version} compile org.carrot2 morfologik-tools ${morfologik.version} compile org.apache.opennlp opennlp-tools org.apache.opennlp opennlp-tools test-jar test junit junit test apache-opennlp-1.9.4-src/opennlp-morfologik-addon/bin/morfologik-addon.bat0100664 0001750 0001750 00000001727 14135770370 027072 0ustar00jeffjeff0000000 0000000 @ECHO OFF REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # REM # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. mvn -e -q exec:java "-Dexec.mainClass=opennlp.morfologik.cmdline.CLI" "-Dexec.args=%*" apache-opennlp-1.9.4-src/opennlp-morfologik-addon/bin/morfologik-addon0100775 0001750 0001750 00000001622 14135770370 026322 0ustar00jeffjeff0000000 0000000 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. mvn -e -q exec:java "-Dexec.mainClass=opennlp.morfologik.cmdline.CLI" "-Dexec.args=$*" apache-opennlp-1.9.4-src/KEYS0100664 0001750 0001750 00000115202 14135770370 016163 0ustar00jeffjeff0000000 0000000 This file contains the PGP keys of various developers. Please don't use them for email unless you have to. Their main purpose is code signing. Examples of importing this file in your keystore: gpg --import KEYS.txt (need pgp and other examples here) Examples of adding your key to this file: pgp -kxa and append it to this file. (pgpk -ll && pgpk -xa ) >> this file. (gpg --list-sigs && gpg --armor --export ) >> this file. ----------------------------------------------------------------------------------- pub 4096R/FE045966 2009-10-13 Key fingerprint = A46D 8682 A850 E44E 4FEC 20EB 8A8A 771F FE04 5966 uid Grant Ingersoll (CODE SIGNING KEY) sub 4096R/72F9E0C0 2009-10-13 -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.7 (Darwin) mQINBErU6JEBEACsovhRB+Z8VrdTU76Qxg8u+0WiSaoilsksGgOaphWvWt0b6rA3 PJSGuDuMJfL+lGqk+aARehiZNbNl0cGYtP4Av/fElTdSr1UlmDeFjG+7Qi7FB6KK vAjv4mw+XM05QRTADjpNkDfAEXGPR1GNE7lOfPvNqvAl9YMLHJOBGlVqq5ZZAPHZ /R6Cg7+5qHbVJKtPqSxAoPJQwg6ADwDZv9nWZfbp2VwVwBkuVxBCRBPFN+WTFmW/ k1LSxUIeHqOG9RXo7S/DYddthE0iBzP3yKA5fs3k9zaQZNAjC92Dj/M4oDiIimqG DJAO7ixpQY2ug9FB4LtWkyeNRnOM1LKd3TbZNqzZt4TuhCI3C5LAfVoXRPxe4T3n 4hvWkL/2THSKfC4u0CLGjw41rXhD86YYiIWdvxVezfESzpqZPhBrAZWfx7kB69pq 8DxWFXCaA31S/L2I6B1ZUmpOhtxg0cDoevipne7jaqRjA7TknOC45+CrpuEkOvQO 8rwHbtshT/JDFLPfq0ruDH21eV4QYP/JLffDGyEtoRRRr4M2DZCFkOCWIPE0l142 5mIi0nqMSj1HK5kuwMQoNAf6vF6P6MYyGWJ8nR13CDtFOnjpOpuxZiTQhlb0cqXj X4yQBjFim8ztGOnHrlSh25OgeKuiCWiCIuyFGykjX21RtJ/AwiOeMr4zkwARAQAB tDhHcmFudCBJbmdlcnNvbGwgKENPREUgU0lHTklORyBLRVkpIDxnc2luZ2Vyc0Bh cGFjaGUub3JnPokCNwQTAQoAIQUCStTokQIbAwULCQgHAwUVCgkICwUWAgMBAAIe AQIXgAAKCRCKincf/gRZZqcfD/4+zhoLTTpTGRNutTyjPnR85aTuMUVtqYNLjEcF PSV7p1OPhsGd3g5iaQtwCMsbWDPRSL+Xvy4/E4D32YjUR026mzAUnICq4Z35TecT StIeMadgSwJ0fNvuzBB8jJfUYW6a91D9TZirEC4fRVRL1bnJvmjm0HnGLQa5uGCl dUMbR04YXU+5V8S6KbRtLwhiVDD/do6XKeS9PGY941sw9182mLZbIbEcQrNWf8s/ eOnobosxg5a0WxKfSZgQfNqkkuNlsRbKwI2gSjzAl030r6pWzduvftqFdnoaOBN/ yNM1BghAhXmb/hxjuQa0x+xan15/lY5FwDX1bdnZcEI0KHJ/FIPFgk59XJVnZYH/ tRI6jqmxQvdliA9q6rt/ctZAYaOhmXI28eeLCmdnZKUZjiG1ORYC0tIYdOYc/nXP NqryDaa2OD2rMy8BM5tfQ/Om/6kavDqn/m8x0jLLuOne5Umeste3yTZ3pbJWc5GF izOCX0FualpLXNBWt3jCooSaj5Gx92pFgoanbtI91ouVNsC24eKOJZYibKLP5fuH B1sNvtPcWE3e99qOzVnolHjbDX4KzXCW+yFad714kK1vdAlDvqIt2OuEuQFggZHS 5G5FbGjgqFUG5D0uckBmu/8lZ82YW2yhuQosa5EOMwChG1sqtsYuddbifFF78AM4 vYnmKohGBBARCgAGBQJK1OocAAoJEMsDFRmoZ+ixVg4An0MfyRmOv0tA8/UibzyK KPrzo1aeAKCIV+M3L+gPT9yJ9843HxyBWL+j6bkCDQRK1OiRARAApG7lRX08hPq5 7KRRUsK6GChneFeZZNNI35VpFQHPe8y/4ej7Ydnr37otEjIvd+14p0M+PF6igCIm IGp2dg57PFfoOVW+apoudAtBpWkdBSjMJQ4pCoLwyv/HSXKW6QxMZeO5OBdT4iAg AT36M2m/lpv5wC7g7SUJDusyFPuYtMtxAkj6TUPTFJBS4+FzhrNBoCXxILDKh0AE N9Sslm37tC7Le84PkiI/k0C//KqNZFQ11Cazyf0CuQKj4gLtkfBTaDenlsufAKNI M2pkIxtLNpx93Gcay2lVKD9Dv2i4EmQID7Vt6fZ2CP+60K7CnepLhapkfWa9Rk71 7fqLIlXCFYdWEmuT614dnDuuuRfm12ZqT3GAx9F0elZ2yv4DrXnW1F60ASJuFnDf RYcbTmw2VVoDiAo2al4uoE7a2yjyv7PExB65k0Uj0n1V4PF413np3r/WLSWBxxNu 9K8oV0KZI/UxvhMULGI23ryNTZAsoi3E44lZ0EUrJTWMRvLuewQdNpNLmlo30HNL VTyoIlWbzhsu4ejKVqLBs/Q9M92c/Um6FJM5owkiGBEvnRtGGWhf89RonCncwg2g i/rk91TTKnhGpYv3tenLjZ6qmlgMgT+KUrElqrLv02kD3xZ7+2zwhaLYWFlZN6wr xXlA/FDOEz3tChqG+41Vf8W26+QnC98AEQEAAYkCHwQYAQoACQUCStTokQIbDAAK CRCKincf/gRZZgzbEACfLTy+6afsT4wAgKYdlc+6w3bBqFnDzoG0JRIrUsVhEnjB xhl+RZA9XMkPvw5iAeNOWSU+SoPz8hGrv3tkGJXqfeThOAB5IVDDW8FDmm57/sl4 2m09B+QHZ7Buw56OD90GoCSm1otkbaIUjoMTbuQxTRb1qykVHO4AgLReaeMb9jqu hqwxyzGzWMqVR01olgvCkSDrooYjA1ltQ84JrJhic5+zdQq1XYIv0dTPP3CcrFcy b6pVx+Y31hK9f0EXoNZv6Ekg6B5L7LUleB3XdCL+jI1eWlQ3DTE7+OkVcehpyygc JFgPVm/0KMPkHTa3Fw55YWbcrwAKGv5fWSj852pbaW/GNgDAiay0MPExEYey2cu5 Pi8dUOmJoqcznBt9qQrrmRNWPRa1Gu9vowM9m90+jtU+Tlxo104tj8gKWVngnPhn v1VPKPblEwJfuqC3DQh3XWzs3AwjKLXXfwznF7slqBRT48BwdLsietnovoTsZXYg 7ks2s/QxklWisZUxrhpZTNeA/WQKxyXwiN2sKxulwjd1PnAz5DeFQWKDNZHyHP+T 1cqtTc96tSwb2XW3iA2uZlD4aTkrOmm3FKbauC/rFmCjkpvwpvqcIdpib4M2DgNx zAZ2cJnxw3f57qc9Yh5qvhDUephwOAlAy8ekc1AmX14F+mwYE3GjcqeGdEbLNw== =GLHu -----END PGP PUBLIC KEY BLOCK----- ----------------------------------------------------------------------------------- pub 2048R/44DC2602 2010-12-03 [expires: 2015-12-02] Key fingerprint = 00E3 DDC8 D514 81CE A29A 01AC C25E 6698 44DC 2602 uid James Kosin uid James Kosin sub 2048R/6131CA9C 2010-12-03 [expires: 2015-12-02] -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (MingW32) mQENBEz4aAgBCAC092PLZqCzabrpoSORtz6asDeXqB2ORDmh8dQJ7x4pcjV6kNac TnfNj4/xAHEKv6RFFhbvLWhB+wlYrh55VybQBmvxdiG9YlnwS9FicGIPS5no0TQb EEyDE77ZXlUVli7vrpEWZ4ziO4FuuqJqRU+DNwRCC4RFJo27ULQQmOJwyS66J+1L PSdO5DS5eQj/kg7Qqk8qSXdfk9QJpgFC9Bw+DM9tojrQ96wGmdUH/l47AFUmLqvw 04uKQGfWm1NVuVCqafoQ1LZAjwNpI81GcbYuFNo2oXJ3leRO+9K8VqHe8Ba0Q5i6 yP4Qv5fBrJYE1Xhf7bqMxlqYpNyEr3VjcCL/ABEBAAG0H0phbWVzIEtvc2luIDxq a29zaW5AYXBhY2hlLm9yZz6JAT4EEwECACgFAkz4abICGyMFCQlmAYAGCwkIBwMC BhUIAgkKCwQWAgMBAh4BAheAAAoJEMJeZphE3CYCuYQIALKG5NlRqs5QavwG8nnX gl56yrVsN3P9GV153I3HCO57nxFqvOAQ1SDXMn5LijOxGDi5e9Ik4+KDq4K7I9Gv W9AOXqPCZZsNW9Nc+PCK1cs/LosQRuYaPib1kBM4z5pk4U86IFo7DvALnG4bmpgF WBEQ54/OdOdJBS2sFMFNOlpujFo8yntuq8NSGrhGGu90z/sIWkzlTlBiWWFAJAm3 hAbir1by3x2U+bTVmi48ZZMGwlaxCY9Di2nHwN5yFZJHl0b4CbdhwOocnCntBY0M Pamh0XBdcFduPZAyFvn8aBChdRUJsaceGRpoJjnGkKw/A2nh6rBUaLfv6MWLpPi8 fVG0I0phbWVzIEtvc2luIDxqYW1lcy5rb3NpbkBnbWFpbC5jb20+iQFBBBMBAgAr AhsjBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAUCTPhpywIZAQAKCRDC XmaYRNwmArh5CACc2GUgc5jO2K+sir4bW151k68lM+dEdTm1XV9rxUzk4mv2vwFS ABTnrtAyZxA4ubLAS1pfsV7uXY5TSNVRFUTHebdHL5dP24SNvAAWKhS0s0j2ojbe amzi9BEt3SZt5i2TbkfPFyCYTNaSEfIbkuYoq142iNmmNdf2VBFqLBDA/Y5hOXOS y28yeGeMKmj2LUYVamuvFnsUjBIvUgSqyaR/wfwnBdqwKde9VVUlQtrENAHT+fcX 9mV6qxTu0f7Ykna/xOyGrc6tvp0+cSryguWE0z0GikeT9QKsexuiRRrz2rA1gyPR yugpy4p6/t4TSEQtM+O14EAMx+sbtivuWxQLuQENBEz4aAgBCADGtWJtGMK1777F q4N85JLKgFoKHJDHA3xHkdFidxY4cooSExOBOuFpuH6PdU8D76X8tSE86YpVYmJo 8SgdgzNFO+Trwlv/oe3xGC+O0i/teCCmEn1pNlMMvJ7pNRMQKFh7FfS5ObYKRVeF IXKx6JQsjVwmKjgW/tnyhFnDP3jJqEZDmesFD61E2/5rNX+a8qMddfpYR0RHpRR4 WJd6SqKwflkbXkW+t/ln52GHgCkx+WPfbRjE4Zh5KZqmaIkAByraWegLJgQZ+syD /JCa+2flF1ydB+q+sKBRYMPbEDBavB4naNPQzA+Iut/7aD5Ht81uCOBXZDzRMf33 YEqPcsTXABEBAAGJASUEGAECAA8FAkz4aAgCGwwFCQlmAYAACgkQwl5mmETcJgKm Mgf9HB9Jg6WiIYzgmelBAmLlbITlbH5iMVvm3TbBSxN/AD14VFx9Gyd8AiHPdH7B kpQet0URZZmDhL++4uD71wtdb/v1NQlZt8Dyw2BHN8w8iwIk36pxgMLuxdp+Xcs9 L1OZwGEWgAO/PPKWEy6bWcO3MvAU+gEjKKKQMNkkUymbDAr0J7K7qCrH8lhErFTs S9Xv/cxLewQs921l/LUIS+vxL5hUaArhF7yvbLx8OzbAyoaMzDljTbSKH9zM2Ryp gPPQm2kx4WCL1OLc9faqJmYXwsa0O7zq3uJEZx/nCoSgF+u9uqkjdFcwEarBtM6Y M3lA67tQpl6feMswEOgsEql7Bg== =jXKL -----END PGP PUBLIC KEY BLOCK----- ----------------------------------------------------------------------------------- pub 1024D/91DDAC20 2008-01-25 uid J�rn Kottmann sig 3 91DDAC20 2011-02-22 J�rn Kottmann sub 2048g/7B06114B 2008-01-25 sig 91DDAC20 2008-01-25 J�rn Kottmann pub 4096R/5EE31F7F 2011-02-22 uid J�rn Kottmann sig 3 5EE31F7F 2011-02-22 J�rn Kottmann sig 91DDAC20 2011-02-22 J�rn Kottmann sub 4096R/87CFF9D9 2011-02-22 sig 5EE31F7F 2011-02-22 J�rn Kottmann -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG/MacGPG2 v2.0.16 (Darwin) mQGiBEeZsXMRBACW7VN2XbSW2IiAECQbECh3a54Kq7K4nct04zDBerjwxXRYBJaR dGLkZ1iuto/fTWf9LedYctT5teRuLTw+hJNT3GmPl2RKsnQoCYnlrzXfQ8dkGvwH d9RBx/3ax9BE2z9aQW+MbCDFPzJLEKk4XGsoRWBRy+DVFKG8CbANCJiSkwCgvPIn v7y19Yk4XFKorfR012I6LH8D/1DeePwUEBrphORoDn7KInvZuDhjOLxGNp1puU5l PLnhAFDRMN9VXuG4GFy7DFmyhcXv/AwI7AKA1sX5gQT3dQ5m+vTCmBbMX0bKAgud gMXtkqSlnBJwM6M00dZOtngxYV6ocsoONKzkBYyNWGCinUhDxtTs+rR7V3LbEMz+ 73TUA/9lGAsg1lOVjqZbDiYC0AVQIM+SFVlRRloTQaVyLdwaaLrIsGtDq/bwsVv7 S+gTgQtrwjxLwF0vL2rjgK4IDI6zZqAgdBagK9GKxmdKh3wizkWMPSaNkfQ7IXqp Z9M1Gkgbvr4o/x1Al64ZbiXihjMw1wVatHlS/TFbvQOJDQMBzLQhSsO2cm4gS290 dG1hbm4gPGpvZXJuQGFwYWNoZS5vcmc+iGEEExECACECGwMCHgECF4AFAk1kGDMF CwkIBwMFFQoJCAsFFgIDAQAACgkQ2kbYYZHdrCDRxgCgmVHGB6yD0OJU1yxKtaoJ R9mBQKgAoISW2Z3xbTufMrlXc9hAUNLRxHgHuQINBEeZsaQQCAC+cK1uFagdbUQo 65cfKeVQOMaWA46W63BpX+ZOuQ7AvuV0w+5TAzh/VCEoaS9G9lwhXmBG9eKpSLRz cLv9rj7OOPWLYU9HRhMJ7A9inhx1uOOAbwzhmAbEYjiDTutz9c4cjF9dxM0adboI /nDNV92FhL3i4GFS+mkVPrPYnjtOJmrQnsIFKmLkq//va/Hy7X/Unjr3HVVWWYvm Up7R/5YcDpK+J/a04KBK1E59mVKO8D3XKa2+nyzRwu9PgT8AhGPESC/YLG/Eq+Xx nLuO+Th0oe8t6gWhhhtkMawttzx22LeS6OXagK5wO8I8AqokhuAOtnto5sf3mODF 37rPW4QnAAMFB/9IIv7BDRimEr707yxty8YeEn6+wJgO93lWZXvoz3yTUXw0w9ug abQNYkJoVK2eDAzazC2m9cw1F2rVrP1tD0L3bFhKqnsp8rEWPYEsDNtLwTkBXYz8 7BSgIrFQFoVJM0gQAgWsvJy2PdubYqJzOEhVAzVq7hhvsMvcgI/3kwTbkNaRrODw RX+66I6JSUtuxWLqMpX4MYV3LG6gp0dVA+yWZjPgWKDFfWh4SdA2dbYFpSHpZIRn Ou5OmwxpNb429nz4iZmB4+qSqU+Y1JYrtSdwA0BgF1OSwEJe+piwbAqTv1UUNJoo GtYLuAuqezckLTe281eGQNtOoukAt5El1OvJiEkEGBECAAkFAkeZsaQCGwwACgkQ 2kbYYZHdrCDW+ACdGhmTNDDusXBzUJIjDhVDoFvigsYAniLz783Y6+1ic8DdTfqR CAffspdh =HErw -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG/MacGPG2 v2.0.16 (Darwin) mQINBE1kFMQBEADLi0EsQnl2Ntttis+lN8FcyeEilETbRRiT3QNnse/OXKjJx5jn 3I8qTPUQE765ZxVceX1f6qbcz8pzGtq6qwdn/pp68CL9OCkU4mbGssr1mZJyg40R vEXfpuYPBLx//nruXWvlShhqWg1OnN/VriuCG0yogYiWLiGGj7uGAcg9EMufN+hZ GdHZZyQ99lsI1V6/fbpPdWxDNoW9C/mu9pouUMej2VoZOhquluDXrZrlO5BNcVhB 8uvvkwL5OxM7JVsoKTCQEBNrCQw8WQtKZNCHs04cS8srAIxSq72GIFfyruX+73Gv qWeOzxxw0Gzs2R0A3Xu5XqxkqiRty2QPeGXQrym5jptV7W6rVzIXcUSaWi/SANxb ruS1xBhNCXl/+n786N91G+iEFFDI4IAMPFauf+bMAkz22wYJeefL+fJdda4pTCw1 OyGSytwju6YBayoQ5PdceiXb/POug/fmTut+N1QNuVzoyRyXn8WcJujUvjcQW+in 739Pq3VrnGnsNgccTtzN0ySLaaPF7xrhC5Mq+sO9CReRmbF5LAbL0tnVeCGEStXi tsWUzHfURPVK+BnQy77AJUcnF4+tfJHFSvnVgbVh32Safdjs+CwrhqTlPWLn5E8n naF7SUMbDihvoPtGXlqnyy2wUOx0WtFgqZMf99It5eJM821J/AQVeN4pNwARAQAB tCFKw7ZybiBLb3R0bWFubiA8am9lcm5AYXBhY2hlLm9yZz6JAjYEEwEKACEFAk1k FMQCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ6tKtml7jH39QWQ/zBi18 aAtshZThYqF2Pj80hQ604MsFvlmhqG9/puJYMkKEXyMuhepan1cIJJceCw7GXB+P M8wVwePkMo5adzcr/0wnH++hC6P75IimWo2kf0hL2l1z0zkq9LQQt0JRjY9ZqxDw REj+6WSZl2l3JJVnTycpbzDzuLSAxHcmdIG9bkqnwrZ77GwO8J/MN+MUycUMT1fd 7iWPJpvjqnOWNE1+L3cFReUt6VgzVidJ7jHrOz49rTmqlF97+yjUy1tyRIDeLl3C 9V+oZM17ATlw5PJ04iB/q2Lg/caY9H5FsAcvjDmCNN6Eutyx0K0DC6DvZA9y5c5v OacJhtXR2jXukMnHs2p2WW2E6XoS4KQomC/F6qZngVpH18+bzMzsQu7ASud3epBd 9iDbiJ+UgjtUj6ec+FWc56qKhdmvdtqmzdvgSsQN+JaOpyCsWJg77sBM6/Z76BFL 1RC63mhuUd67bAdUNKKiw4oZ9QMJCd6KP/Fm+e98huetZcPTf//BglyePTkl4yfV iL5tk0T/kn2YNEG/mjev5HNROg0KoF0REl6FZ5+WwFnjmdjAw9BZRMNDwTDFSj3c Sl0PUZ2+R2V0gf3TBdxVhYCzPzLujpYjp//UgrJk6XWYmMNUGMQJq7P+LuUye0h2 TTz0eGDn/i1JDf89ET2v6+xg3GrVSSKHCTRzgIhGBBARCgAGBQJNZBd1AAoJENpG 2GGR3awgWjYAnjYtcttIduCQA191T4DvQYzdWuK7AJ4qAUXX4lbkzeLGEgNolVJd jtKD77kCDQRNZBTEARAA6cF+kZaIb4IlMO1FbTXowCOkEYOWhOP+5eXCcc1q3ZB0 HNV3kRCxKH1dbaDOhAxmuP0nMLwSDkQcFFGxfXAIfV5Miwtdtlwc7+jrCYMRzqZ4 zRCWmEdJ5bTE3bdiYc1Wo4/8dPfB9hn6sv/MGjlWy/DB4tElFYA1JDOyCdQ0SSwh yc15Yv+i78URjUf7q1WUGHhH7YN1lSldXvAiU4ZYioHLiLxMuhmGtXMoiE2+jRFt E8x9RwQCvDUjBMXqZ82FM/aqVeqMqcYi8F3iELDbZrVGoGBQ2cJh9a/rSvUTBEPg OSrPieDQqTlNK36isGBdLETDU1gPIXtHoUlbGpe9CvK6wazAjeEV+ck8mvRz20iC i3RzkkvlN2TV+s0VNGQTztK2DQblwuv0yeEGuiq2GlakMnhsSJLWgYYcPDirJR/j 2qsFIOZOxtWqqPfB3wJyl2wmBXjSIfpb7BCulCSP1QVHos1OITbFB0QLST9twWPw +cSF8tezJ3rbGUvvkBQQgpdDMUMceaTL84PGvUW1z5uz0HW3jo5ISihNRUN+zcQR 63q5+/Mw3Oar2dutmFxogC5iuIj+jZjRUewVaa+BC/YRNNeDEWSm63NVco+NRlS5 +Zsd2+831HuTtwuaSavSOJuZCx5HBA5578OEfwpFQRSYDIVJ1en09D/4K3GrvdEA EQEAAYkCHwQYAQoACQUCTWQUxAIbDAAKCRDq0q2aXuMff0Y8D/48gN/HXOurJhES 78hZsjkoIE1CUzL0MDtil5RI2XUqdRn2bIsVhsMtEK81aZjM66XLsRSuFaaAZwn0 QecxTI8gd4U6VV0DRP0R8Yq1Dcg8vaPAZVwPXlC0SDQaGrlR4bpW1mO51nSUnxlq la7zM1vzmboVn3nD+OjOshSPMQRnxWN/8L0pyQep7IA68UeJdRo/9DsoIJXU9vMF 14YIfE78jiXlv0MmDtQgQTv3amP4ktm6fcbXlTrr4tgiWYDbRXeerMY473pLLYtq 7UgtRSSZvQupBBB6KflojCfHrX53VItive2QcW0Grz7Rcz4/E3Rjr2Rhv5RRrpeg 2gF3gi0PP0Wl5k5sgMmF2Xx78SGv5eww1JD/ZCXQDYyzwV2+6En8BlOvUcSVkSfo 9dAel7PpcV59RZcc/oKWh7hZO2sbUUNwQGEAz1Rfz8s5HzQHB5Y90n80XjPsDYg9 XJ88V2f4lU+/dQjasBXph0e7LvlkZrn50ji/sfwpuBT/6++Jf2dr1330VukWXyDg 4U0dMVq7wNbB10sLJIdBPOvWb8jEOsv6hA28M9WOLM8fd6petg7n4zkRAjU9Hlk2 UPF+BhTMjtxCA7+XTVIHXkOBEWiA6b9WRyK9y3T2pLFvwQi8qhCk0DgY4tUX3Yoz K8lv1puwHj4laJEwSV7NpnveVzKRIw== =cn0A -----END PGP PUBLIC KEY BLOCK----- ----------------------------------------------------------------------------------- pub 4096R/BC0737A6 2013-02-05 uid [ultimate] William Daniel Colen de Moura Silva (CODE SIGNING KEY) sig 3 BC0737A6 2013-02-05 William Daniel Colen de Moura Silva (CODE SIGNING KEY) sub 4096R/EC30C4FB 2013-02-05 sig BC0737A6 2013-02-05 William Daniel Colen de Moura Silva (CODE SIGNING KEY) pub 4096R/524A9649 2016-12-30 uid [ultimate] William Daniel Colen de Moura Silva (CODE SIGNING KEY) sig 3 524A9649 2016-12-30 William Daniel Colen de Moura Silva (CODE SIGNING KEY) sub 4096R/72F0D8F1 2016-12-30 sig 524A9649 2016-12-30 William Daniel Colen de Moura Silva (CODE SIGNING KEY) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG/MacGPG2 v2.0.18 (Darwin) Comment: GPGTools - http://gpgtools.org mQINBFEQszABEACpumcwNdeLSnleW2/a7oVGxIvIRQueFKUoIME+nnnazPhcXfxT CCefEQkG5PsVZrFT3Koop3jgcof6v/Jo8XHF2RMnxZH+wgehxxBY+co6N3jxjNq4 WsKRYJXKMOO1/+vMGdJI1Dc7KINNDAC2T32UOaQSzdke5tOmLlIRFYH1+u8QweB5 z5YDOZK5ZY4nsfUv0qxnw1rkUDuv73/SEVR5YIbzuuTsZ6fOJj1NLXVq7yYuHjbJ ZFumaS0YlJ5QE4IqU4LEgDIdcIdwjJFu8YK7xsURdWwc/5TNHy5jcp9mwFycRmq1 WndO9yeNx0hysbVkvmWQtnN4i62bT3tex34KvH9X2JEi6aGuSDOSMuSiwVsYiqj9 DZGA+bVuzyTfcBU3tNVPT4Pr9b5T4yrxoYbFUeAzVpOH6PC5EyRzjceLNGWhivgE s+jJZ9neAy9OBKjg1t0DR2XpA4A3oViuO82EEs5i23l2SUTa3oyd3VoYBDjtZMUT SqShRP+XCO4VhRXPh46cTMcWtf33Db9szPq6NZJwN4NBYSC3cEZiFjY/QcdU3mUZ ZztIVkX5272CHjgVREFwvS+PV75daV0G6sIOMvxO9saQCjtTq+zplJOCJUQJCaOe Lmo0Vl6m7h+qSLBLO7EXRbpM56HbHdT8qWMueiITPak/mS6c0ELsrYD6wQARAQAB tElXaWxsaWFtIERhbmllbCBDb2xlbiBkZSBNb3VyYSBTaWx2YSAoQ09ERSBTSUdO SU5HIEtFWSkgPGNvbGVuQGFwYWNoZS5vcmc+iQI3BBMBAgAhAhsDAh4BAheABQJR ELUhBQsJCAcDBRUKCQgLBRYCAwEAAAoJEB0+sPi8Bzem5ZoP/0FrWwhbIRFngxP6 IMlWpz7Mjlz3pF2cSfdoouF6SjJvm+CPbxrd1DNsWrpeuMS29R9yPMzsrq0q4LB3 dmqofNphwcg2G0y9zxysyC15w5m5ZKI9zSvBksLdo8dEFRKW3Ko/AgwypWi2IaKI Q7w7LSMRAGR5/j96z/5bbfUEjDFOBFXyXnANadGULMGGh3b6NTxDz7OG2hJve1tr 5eo4/Y9bKz7ISLvAr33v/QOzHnuyjZo9iLXrpw2vIhWh6wRfZmFUg9Z5Tk3DUs+t CspkUY4q8EKj+A9RHKRLAjGFLsOHzRttHh1GVrRizQNYV5V4+YtwmaMqLizeABXL g5wrKtHxGLp34KFDe4N7UO5yUf0ZyhBlFBRQjT0dQhPVnYNHU0ODpmnyOZJ+fgT9 65emPQGHerLRosEDdji2xEIpZg3kARUDimi2r+LxNcSa62SWohKr5jYjJSXlSvfX 9aZa9DfHUgDIK0n+8v+SgO1S+wtpmpXMe88NYm8MTNCyoK/Az1IhaMWga9hwhkc7 ReNJamumqjp5YJ6gWOr+0ARENJQDSxw8lXIjKzpPPn1uf3RwijtTxepImAygU7aQ kOiAJlfTpR3vwKlu4BMVrNKJRoRWpiD1pB4RO45QME6JJ30UgFBCRhv+hGjccofJ Dm/+ftWZIQt5NBDm4v4NdSODII8NuQINBFEQszABEACggwZ1EfGmA/i2Q2MiHLGz Wg4KxaXrEpQ7zLiMYVhcWkdiYqs9U4ca5o4aFPpHXoQ1YNyHP1IrqWzP1JqI7z8t 7tO4HlB3ww5/jMQQJsRzYGsndBhES1KI4hO9E7YZdMP8JfI9mQlDAfHQwb1GRSjB Z3NsnD+C0MhozPf5pbBZKP70JUvaQ1taeGQr1VoGOt6+UG/uH0M4dEcptWEVUlH6 LrUI3ZNgb4semArikA2/aTp25kcMRqHT+KLN9WvELe/vSJQEdWr6DCggvKMwS4Hz k1kFkWFp/GVAR6/TrDxA7hljKPXRKvOL2jP0AJeXapIDHOaWyuRVIm3uPLTwdHgz O3lno7a7tZpX4vgdqMTovWnhheh07XXeUQNJ0Cy/fGi8cvlce3i/5Xm905PlBiIj zgLx+yojfIpoLcZZ8MDx0c6t6Inbi70qPSfx0McCm4APTksttaja7wPj2bsPG873 YwEHgzyaAO4xqcR7mhx+LrRzrghhyr2Ra3VmqEKsDG6Pdz2qxegIkKAzpuqVvrAC e89BynltFu+2/HkrwoQvevdYNgueNlL772m7dqqEwYrUc7dOGbLBjJ2uJhpvZeok P6XA/GODTkW5Vi7qPqTvQQJKrvQ8/jczS7L8RW8zOipNIsa7434KtNZT6kvfporS zTYWgCpTmQ6hwb036WmM8QARAQABiQIfBBgBAgAJBQJRELMwAhsMAAoJEB0+sPi8 Bzemy9wQAIRWWEzVF4ZK8Wq5KRBJzfT+57jc0qP+dvhjORFIHton0sFJIqKxTF/s jkbIilnkR0FcwtcNIduXNfSbqOuQjfpXmmOOjQfww3aeStY5i5r0tD4yGtXAK90P q+R5fG5Gnw3P1dB7GXRZ+bQjBfJ/XpjX5qn3z6vrhj6DHu0oqx5n2rZhIOXfofVs Otmk8BoeYFJPg6VExJRXiWmZHLLTqEJsZQDupv3+btmRb7++sjp/krCHjffZiiyd eJDUVQwpY5nRedjYrgLQhVcMR2o/g5xS5lfW7khqXQ4sqg5PILNJFeXiEjJo4ZQP 2dcsINvlARtnu++WXMbDwsS4R7baFFFWQ3BsMoS1/O7lXNq+7aesRH5cPCFzj1XF Q0wz4SgieylOc5VYQff2QWKWg+3gNsiaYnmJzD2lhaw9Ye0tht3Q5PYmp8g9J6Sd QT7axwnrWq2IbEk2EOOln1C22KNXciPBEUoZ6Vt+BfXKdSKP5Bgc65+YMPX3N9Ws Bwcmc5PmowPW2SEq1ngpU21WJhLZdoPuiimE6645T2QuNRVOzyY+3QHTmtBEzATA O8DxQXqXzYERWC/iPa6px/QLon+6CPcuZnHEkvwajqb0yxB7hzK8YNYQgBrCcFMM +bCJaQ7cLaC4frKoo2YMGTOteL2xG+shakapJPFsdBLnrbifFcrd =FZ1t -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFEQszABEACpumcwNdeLSnleW2/a7oVGxIvIRQueFKUoIME+nnnazPhcXfxT CCefEQkG5PsVZrFT3Koop3jgcof6v/Jo8XHF2RMnxZH+wgehxxBY+co6N3jxjNq4 WsKRYJXKMOO1/+vMGdJI1Dc7KINNDAC2T32UOaQSzdke5tOmLlIRFYH1+u8QweB5 z5YDOZK5ZY4nsfUv0qxnw1rkUDuv73/SEVR5YIbzuuTsZ6fOJj1NLXVq7yYuHjbJ ZFumaS0YlJ5QE4IqU4LEgDIdcIdwjJFu8YK7xsURdWwc/5TNHy5jcp9mwFycRmq1 WndO9yeNx0hysbVkvmWQtnN4i62bT3tex34KvH9X2JEi6aGuSDOSMuSiwVsYiqj9 DZGA+bVuzyTfcBU3tNVPT4Pr9b5T4yrxoYbFUeAzVpOH6PC5EyRzjceLNGWhivgE s+jJZ9neAy9OBKjg1t0DR2XpA4A3oViuO82EEs5i23l2SUTa3oyd3VoYBDjtZMUT SqShRP+XCO4VhRXPh46cTMcWtf33Db9szPq6NZJwN4NBYSC3cEZiFjY/QcdU3mUZ ZztIVkX5272CHjgVREFwvS+PV75daV0G6sIOMvxO9saQCjtTq+zplJOCJUQJCaOe Lmo0Vl6m7h+qSLBLO7EXRbpM56HbHdT8qWMueiITPak/mS6c0ELsrYD6wQARAQAB tElXaWxsaWFtIERhbmllbCBDb2xlbiBkZSBNb3VyYSBTaWx2YSAoQ09ERSBTSUdO SU5HIEtFWSkgPGNvbGVuQGFwYWNoZS5vcmc+iQI3BBMBAgAhAhsDAh4BAheABQJR ELUhBQsJCAcDBRUKCQgLBRYCAwEAAAoJEB0+sPi8Bzem5ZoP/0FrWwhbIRFngxP6 IMlWpz7Mjlz3pF2cSfdoouF6SjJvm+CPbxrd1DNsWrpeuMS29R9yPMzsrq0q4LB3 dmqofNphwcg2G0y9zxysyC15w5m5ZKI9zSvBksLdo8dEFRKW3Ko/AgwypWi2IaKI Q7w7LSMRAGR5/j96z/5bbfUEjDFOBFXyXnANadGULMGGh3b6NTxDz7OG2hJve1tr 5eo4/Y9bKz7ISLvAr33v/QOzHnuyjZo9iLXrpw2vIhWh6wRfZmFUg9Z5Tk3DUs+t CspkUY4q8EKj+A9RHKRLAjGFLsOHzRttHh1GVrRizQNYV5V4+YtwmaMqLizeABXL g5wrKtHxGLp34KFDe4N7UO5yUf0ZyhBlFBRQjT0dQhPVnYNHU0ODpmnyOZJ+fgT9 65emPQGHerLRosEDdji2xEIpZg3kARUDimi2r+LxNcSa62SWohKr5jYjJSXlSvfX 9aZa9DfHUgDIK0n+8v+SgO1S+wtpmpXMe88NYm8MTNCyoK/Az1IhaMWga9hwhkc7 ReNJamumqjp5YJ6gWOr+0ARENJQDSxw8lXIjKzpPPn1uf3RwijtTxepImAygU7aQ kOiAJlfTpR3vwKlu4BMVrNKJRoRWpiD1pB4RO45QME6JJ30UgFBCRhv+hGjccofJ Dm/+ftWZIQt5NBDm4v4NdSODII8NuQINBFEQszABEACggwZ1EfGmA/i2Q2MiHLGz Wg4KxaXrEpQ7zLiMYVhcWkdiYqs9U4ca5o4aFPpHXoQ1YNyHP1IrqWzP1JqI7z8t 7tO4HlB3ww5/jMQQJsRzYGsndBhES1KI4hO9E7YZdMP8JfI9mQlDAfHQwb1GRSjB Z3NsnD+C0MhozPf5pbBZKP70JUvaQ1taeGQr1VoGOt6+UG/uH0M4dEcptWEVUlH6 LrUI3ZNgb4semArikA2/aTp25kcMRqHT+KLN9WvELe/vSJQEdWr6DCggvKMwS4Hz k1kFkWFp/GVAR6/TrDxA7hljKPXRKvOL2jP0AJeXapIDHOaWyuRVIm3uPLTwdHgz O3lno7a7tZpX4vgdqMTovWnhheh07XXeUQNJ0Cy/fGi8cvlce3i/5Xm905PlBiIj zgLx+yojfIpoLcZZ8MDx0c6t6Inbi70qPSfx0McCm4APTksttaja7wPj2bsPG873 YwEHgzyaAO4xqcR7mhx+LrRzrghhyr2Ra3VmqEKsDG6Pdz2qxegIkKAzpuqVvrAC e89BynltFu+2/HkrwoQvevdYNgueNlL772m7dqqEwYrUc7dOGbLBjJ2uJhpvZeok P6XA/GODTkW5Vi7qPqTvQQJKrvQ8/jczS7L8RW8zOipNIsa7434KtNZT6kvfporS zTYWgCpTmQ6hwb036WmM8QARAQABiQIfBBgBAgAJBQJRELMwAhsMAAoJEB0+sPi8 Bzemy9wQAIRWWEzVF4ZK8Wq5KRBJzfT+57jc0qP+dvhjORFIHton0sFJIqKxTF/s jkbIilnkR0FcwtcNIduXNfSbqOuQjfpXmmOOjQfww3aeStY5i5r0tD4yGtXAK90P q+R5fG5Gnw3P1dB7GXRZ+bQjBfJ/XpjX5qn3z6vrhj6DHu0oqx5n2rZhIOXfofVs Otmk8BoeYFJPg6VExJRXiWmZHLLTqEJsZQDupv3+btmRb7++sjp/krCHjffZiiyd eJDUVQwpY5nRedjYrgLQhVcMR2o/g5xS5lfW7khqXQ4sqg5PILNJFeXiEjJo4ZQP 2dcsINvlARtnu++WXMbDwsS4R7baFFFWQ3BsMoS1/O7lXNq+7aesRH5cPCFzj1XF Q0wz4SgieylOc5VYQff2QWKWg+3gNsiaYnmJzD2lhaw9Ye0tht3Q5PYmp8g9J6Sd QT7axwnrWq2IbEk2EOOln1C22KNXciPBEUoZ6Vt+BfXKdSKP5Bgc65+YMPX3N9Ws Bwcmc5PmowPW2SEq1ngpU21WJhLZdoPuiimE6645T2QuNRVOzyY+3QHTmtBEzATA O8DxQXqXzYERWC/iPa6px/QLon+6CPcuZnHEkvwajqb0yxB7hzK8YNYQgBrCcFMM +bCJaQ7cLaC4frKoo2YMGTOteL2xG+shakapJPFsdBLnrbifFcrdmQINBFhmtuAB EADd8/WFwyC24WKSYV/SbgorjN5gp5Z4d/an6UDg1nH26DkZx/gG/Cr9RGm48bXe 8ipiELJDYdwbvCUrhsH9po7y3SkFtc5++OAKuqMCZdPOCihDU/tlW6lB+adHHZLy sckhSxxbnNWqGwT0F7JgwNivSKnLUWVV90TmVbgp/HgXoNGL0on7tA6MvedaZYGG DV0vRjyOegKKk6O5dL9mbq+SR3MooC+B6B0YEp8NAl8ffRCoEsvPbRzn9TDjrBAo R0CByys1yXFLQryIP5MlKCumJS0HofDscjaRw7Sg/oZL7A8F2foZxZtBIc3TmlBB J1YpJMFJXqob7L9TpwmVJsUPmaYxbbs1kd+DN6hx+yga6u0tTiHRohWFEtlYMdxw xB8GqSmmnCqL9C0BLks6QvpWjkPQkMU+HMYGagAq4jHkWO5+kpvePpqgT4lz9M+o kTOaOhlqF20baa3gZHZXwRzf3kV8/FCLBfNuBpOJeEExxIOrwNSjtiegMeaDQx9z ZdGunU9e7cMflB6ohpzYJhJOL0ZS+LDRt5pX5/pdlv3LfuIN2cNyWZgjSdgg/cxt W6LPSZ/0O2weznHpFZ5oKnWNLUr6e2RXyJfqzSRsdm5DYs0NefYm4OjDKDRsk8hW 0HiHcERwv8LfxYTKZduRKYUHlCV6/kYbyUkE2pZxCnq9lwARAQABtElXaWxsaWFt IERhbmllbCBDb2xlbiBkZSBNb3VyYSBTaWx2YSAoQ09ERSBTSUdOSU5HIEtFWSkg PGNvbGVuQGFwYWNoZS5vcmc+iQI3BBMBCgAhBQJYZrbgAhsDBQsJCAcDBRUKCQgL BRYCAwEAAh4BAheAAAoJENji8B1SSpZJvVgP/AkVDxFHv9b0CgqhhMWF3b1Dqdae EQsoFp6qP0StxgHrTtvJCP7I3RZqROLHJLAFdzi9Rqda41XcpHSvrnCi4mwo4k1S n0c8bO75euZXBqiIRMX5HR9O6y80QHrQumkjdGOTPBidA9fzFxLMbQIyoi35Jdsi patsg5BzwHss/5+LVyCX0LMC996NfP0CSWJc1M9YzjYN+mV8ogdHbSeNmoDaWYjo yMXht4vmxBWb22YO+ZCdMRS0Ki4y1pjiPhx3ewPYnvl/WsxRO5i45os/R4Kw6fRr mrIfnCMVPrMrFZcNObFE8SoU15DEaAbBIfU+ret8FMHIAPKD3pokBpkEg3Ij4uZB koznBU3KO01tapFx2WnuUHjAFtTrwTgcvaJXofFxfoTY+mp4TBCXA/fWMoOhaBfI k5PYH9Pbr5S4H44I9aMYW+Xw1UoEb8vk9fiSzVT3hEwMBWhvuu1wrZFwp2n9d6am hbmSFmxv01UrMnq/G6qY/YnCKjr0hOHwNFeLzcnjP5w4BVmOVs/lc+QJVVwqX3mm pyvqqEnDq+JuHfBDhPA9GJIv5b/sSzA+mHRhBpDm5e7ERpxkaWF88jrrSm8u7j+9 FNVuSsTrakAAQR0Y+AEsRPvb//Ra4TaVyK3QcvoTL2m22wuTEheOHGjYoxjGGqes xsZQHauDQAtoNApduQINBFhmtuABEADt5stsIH1PiFckXurCQinAddY+U6QSshey SS+AQKSGcHj1sp4MCHeSzppO3/78U1nlTJjPbsLNcaGBYRrQQgu82fwWZ4qz6JV4 R590pHCRE90LawMumA/aNbSQFWWE3ZuLb3a6bg+I3KH9kMBGMeFYCsHWn4CSeiwc zHpz/vYfe+YoHo5kqkmYA/iKUv3JQyhW2rjKfvSfLi75rMBp+1nmTu2JRCXcdIX4 G1q3FvuGsQLSq3vh201/4THop3IE4HVggu1Od8nmmw4EVQ92+0WfP1kUlWCdPw2X Kt3hLRWqOeIvoq5KN/U7oAt/9gRCshgfRJGE/K8jhZ7uZ8weNraDTOT9JCeGnNRs bjpDXMo2TFbzadAaIEQcOSIejXjShLOvGB6wt5D+X9XMJ1PrxXOLDo/b2gEMEDZD pRVyEgowkmiZnDKiGRP8T1SgS1u8zkSpyQPcg/3uFbQH94huhfTTt+1gIfkDZgjS U/EDk329JY1B/MoGF//tUG/FQ2Ecsf5nAPJSnDt58SuIgmj0Zliyeq+raAv/4Cgt tX4N1lhdNFlId+82Ne7d6bZQH4yiJmsebmC/IP8u/dYh5G7kYtpe+mz6pVxCK20T 9Ky8lHIdP5NKAuBuM3LjbqtSmWJ+aRYgeNMxR0Q3wUFkAT8Um5+EP1qljaq9V+7W CZpthkw3AwARAQABiQIfBBgBCgAJBQJYZrbgAhsMAAoJENji8B1SSpZJZTkP/RP/ z/b+RtCgb+zakVxCuh2qZXEJtE/1cwJr8ts2bNH4LVMcZsVBPuB+j52MaLTTMC4d 6P/fQ1DbLorVelHebQMa0JFIf9X5r6cXJwAc5d8gDt5WsQEJ/J03XNYX8fzxHIYw mhREfUU/sBQHw0t4JvnEC8etS6Qc59gdIoRm+S8doE94huQYDafATHEyfkWEkv4/ XoTWM922HHbQe0xsbbsduf3LYxt+vlrJ1gD9qoYIbLn5pzRnV7257JHCQ8GmP9ZR f4ZZ9wY6hiR3D7cbmWo8USsWXiH9hYN3LdoFg6BiOIlpQCYQIw7Wsruu/UmukF1v gM5zHPIHnVxU+oVUndzWkuw5xSq76VtvBLNMu6gWPxWW+pwiL4GrzdOZDFJGqQW4 N0H9aarCQWiKKObOgAy2JWsU/T/Z83FlNJw7c4HOAMWaek3ZUJgg8+k/+ohXN+ta j2d9ZtE8XYDW7/NWO92ofEqKkwyeqcRMWJXLt7PWuhXaU9Bl2UKjPd5itfNPmayL fIRqKAQFlx82cj5P/o3Ty4eHcdh5anlHeqOCpbFBs+uQ9VlSkmt2hV+47rHU1irh qx/0E4Q9ZYfZWgY8V8Tg8+2227R+wooHvr75LTR8/z4bxFlyNFJPTaIKGSS3J1lb 8hjYNzaUB/leS5+wlwEZiYJBZe79/9BACx+WKLHa =gTGg -----END PGP PUBLIC KEY BLOCK----- pub 4096R/D3541808 2014-01-09 uid [ultimate] Suneel Marthi (CODE SIGNING KEY) sig 3 D3541808 2014-01-09 Suneel Marthi (CODE SIGNING KEY) sub 4096R/AF46E2DE 2014-01-09 sig D3541808 2014-01-09 Suneel Marthi (CODE SIGNING KEY) -----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - https://gpgtools.org mQINBFLPJmEBEAC9d/dUZCXeyhB0fVGmJAjdjXfLebav4VqGdNZC+M1T9C3dcVsh X/JGme5bjJeIgVwiH5UsdNceYn1+hyxs8jXuRAWEWKP76gD+pNrp8Az0ZdBkJoAy zCywOPtJV2PCOz7+S5ri2nUA2+1Kgcu6IlSLMmYAGO0IAmRrjBEzxy9iGaxiNGTc LvQt/iVtIXWkKKI8yvpoJ8iFf3TGhpjgaC/h7cJP3zpy0SScmhJJASLXRsfocLv9 sle6ndN9IPbDtRW8cL7Fk3VQlzp1ToVjmnQTyZZ6S1WafsjzCZ9hLN+k++o8VbvY v3icY6Sy0BKz0J6KwaxTkuZ6w1K7oUkVOQboKaWFIEdO+jwrEmU+Puyd8Np8jLnF Q0Y5GPfyMlqM3S/zaDm1t4D1eb5FLciStkxfg5wPVK6TkqB325KVD3aio5C7E7kt aQechHxaJXCQOtCtVY4X+L4iClnMSuk+hcSc8W8MYRTSVansItK0vI9eQZXMnpan w9/jk5rS4Gts1rHB7+kdjT3QRJmkyk6fEFT0fz5tfMC7N8waeEUhCaRW6lAoiqDW NW1h+0UGxJw+9YcGxBC0kkt3iofNOWQWmuf/BS3DHPKT7XV/YtBHe44wW0sF5L5P nfQUHpnA3pcZ0En6bXAvepKVZTNdOWWJqMyHV+436DA+33h45QL6lWb/GwARAQAB tDVTdW5lZWwgTWFydGhpIChDT0RFIFNJR05JTkcgS0VZKSA8c21hcnRoaUBhcGFj aGUub3JnPokCNwQTAQoAIQUCUs8mYQIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIX gAAKCRC08czE01QYCOKKEAChRtHBoYNTX+RZbFO0Kl1GlN+i1Ik0shEm5ZJ56XHv AnFx/gRK7CfZzJswWo7kf2s/dvJiFfs+rrolYVuO6E8gNhAaTEomSuvWQAMHdPcR 9G5APRKCSkbZYugElqplEbSphk78FKoFO+sml52M7Pr9jj88ApBjoFVVY8njdnNq 6DVlaDsg8YninCD78Z7PNFnRGwxyZ8Qd4Dh0rG+MUTfAWopZu6/MxpQxU7QpeVeX SIMLg7ClFrGfXnZcszYF4dnav1aa0i7W88PAdYNPko7tC5qz5yv2ep7t2gRbcYKf RXhYC2FHQey3wPhMKjA8V436lAqmfYnY/YdmhEy9Xq/1EdX1nHsQ7OEkfgXK14WM F+rnqXRAl/0cwiyb41eocdg5kpZFIKgCYT02usLWxwNnd3jOCe109Ze3y3acN/G8 +xOf9YRfNVAe6pD8H6ieRbv9gRjBmsbz9bXQCmxFnDqxNri5Me6gBAQPNmYTJD0h jgJTK6o0vJ0pwjBLauasJsLu+1tR3Cb0dxPE+JVaTF26FCd7pM7W6KdVfod9ZfrN cSyJ/cECc2KvYVGmTjQNVo1dYG0awBachlWnYNt+0Qx4opLsczZOLtPKtFY4BJA7 aZoXT4Qf9yB8km7x2/cgNExVbFummToJ/IP3M39/EaryspsQQuM5Qu5Q5lZp8Qnn ybkCDQRSzyZhARAA7bAawFzbJaghYnm6mTZyGG5hQmfAynbF6cPAE+g2SnXcNQjP 6kjYx3tSpb7rEzmjQqs46ztqdec6PIVBMhakON6z27Zz+IviAtO/TcaZHWNuCAjw FXVQZ+tYsSeiKInttfkrQc8jXAHWwSkSjLqNpvQpBdBEX80MYkFB6ZPOeON2+/Ta GC1H/HU2YngF0qQSmG33KKG6ezihBJdKxU6t2tsQfTlCmZW6R6MGpS9fVurYMKBk vR+7RGZ/H6dSjWPcpxhusGg92J9uz7r5SopN1wSdyPMUCMAFGeyoxcAuBDl38quU H/ENG3x5LDPq2aEH2AJ6yvZfIXbeJ1zmXf2cAHv+HbmvZaTSp0XIjq8Yxh8NkYEC ZdfRWmsGLIpU16TkBijpK3Dn9MDXjHGT3V8/qfdpURtMvIaL8WFrq9ejcy/vGRFn mCYqxIIPH+vLiMXKWtuMc61GN3ES21msKQH6IuQxxfQLyhK44L/pv7FpF4E+6LaE 8uRwAex5HIDpR1v4aJq089rRtye9VXTJJLZ7lYs0HctdZ30QbBRWT4jS9d9rj3cr HgQ7mIGO9TAfK2kWc6AJN/EvxPWNbOwptsTUzAF/adiy9ax8C18iw7nKczC+2eN6 UcbxXiPdytuKYK7O9A8S9e1w89GwpxYN7Xfn2o6QfpSbL9cLKiinOeV+xikAEQEA AYkCHwQYAQoACQUCUs8mYQIbDAAKCRC08czE01QYCG7yD/471dmyOD+go8cZkdqR 3CHhjH03odtI0EJNVy4VGEC0r9paz3BWYTy18LqWYkw3ygphOIU1r8/7QK3H5Ke3 c4yCSUxaMk5SlAJ+iVRek5TABkR8+zI+ZN5pQtqRH+ya5JxV4F/Sx5Q3KWMzpvgY n6AgSSc3hEfkgdI7SalIeyLaLDWv+RFdGZ5JU5gD28C0G8BeH8L62x6sixZcqoGT oy9rwkjs45/ZmmvBZhd1wLvC/au8l2Ecou6O8+8m26W8Z7vCuGKxuWn0KV3DLLWe 66uchDVlakGoMJSPIK06JWYUlE+gL0CW+U2ekt/v2qb8hGgMVET3CBAMq+bFWuJ6 juX7hJd7wHtCFfjnFDDAkdp2IIIZAlBW6FZGv7pJ82xsW6pSAg0A7VrV6nTtMtDv T8esOfo/t4t0gaL7bivy9DVVdATbUBcJJFpoVoe5MxiyjptveqPzIRwzt04n52Ph ordVWAnX5AokXWTg+Glem/EWEuf7jUuZArfqCSl/sZoQdXGTjR7G4iFscispji4+ kNjVQsItqFbgDpuc6n+GcFxlKQ7YMCnu5MVtTV01U4lFs0qy0NTUqsuR35DM4z14 DkFmj1upWAayCoXTpKzsHBvJZPC+Wqf9Pl3O47apelg7KxU3S011YfXpVPvCTKBv kD2o/5GKWS5QkSUEUXXY1oDiLg== =f8kJ -----END PGP PUBLIC KEY BLOCK----- pub rsa4096 2017-08-10 [SC] 6AA3F1184DC9CD9DC0AD10947E9D263D2BDCF714 uid [ultimate] Peter Thygesen (OpenNLP) sig 3 7E9D263D2BDCF714 2017-08-10 Peter Thygesen (OpenNLP) sub rsa4096 2017-08-10 [E] sig 7E9D263D2BDCF714 2017-08-10 Peter Thygesen (OpenNLP) -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFmMHqkBEADPh1KhcGlWrqcPWu17dKGGT2/Vsmmttlqxov0TiQV0v+Jebffa 9xs2aPOEFav+OMqIXlETfySk63HrFddWMdrF+OoQyFaGCP0PuLXwAloUd9IM3vo9 MjNxm1nZYm8jJaacCkxOKzkJEY2qR8MsZOr/ywl++UV8kybjGW9E8CkVJLBJCSxL kroKnUtmNWvWgCEjVuYmhUsfqXSoTJgUG0mSGpIUB6AoGgce02jMV0oS8J8u9gm6 HAiw8eICS80hrhd7162onXuOqEr5aBQ47++DQKKr8qtrNaqCjEO5+W2veXOJTDAV OOlgqgtop/hOGkLhbiBijivmgL3VxH6an6IGhRQIX2slgaliPZOREwdiamsOqubW h9csrhkARglpkY/XxUM+k4bdoxapQzz8J4N4n/QtFOneMNlca6sFK75OJ1Nq9Qms pqjag/GiAqApf5cWutvYDMrJ1PJM9cSTCgA2dmtEj5sFiD3Lx8Vc8a2p+eND5TZC 6zF2RATnkg6KF2Pw8DasMGMoA+NbwvuJ81q36VQC7mPwg5u6M4rkwjSaRXSHuq4t ckahKXZ+OdJyUv6DWdkhYMhSG/Eyk/1DDc4P87EzEfY7YNfAV1/BtfOBLGY9j/aC UKOVs187X8ntPD3cTc73f/Pua0AZ6LT9wsNxMIAu+RgXNDtTwip12gRtqwARAQAB tC5QZXRlciBUaHlnZXNlbiAoT3Blbk5MUCkgPHRoeWdlc2VuQGFwYWNoZS5vcmc+ iQJOBBMBCAA4FiEEaqPxGE3JzZ3ArRCUfp0mPSvc9xQFAlmMHqkCGwMFCwkIBwIG FQgJCgsCBBYCAwECHgECF4AACgkQfp0mPSvc9xT71BAAly9ZXhSDZHNdcBPjMFbl vjF2f0Tvphg3izzGBC08Yv4xEU7Qmi3KFJSzfsJh8qiwaeRGYvmhVYDT2tJIjT2L bHrxVdnY23UJtJ/ZyZfMBYxQdhGqSCe5n76ZHLrpLIAag0zmMmyZgaQ5Pp7qzup6 nOhPrGnzSJUmrp2t3z26K8WZ7hV9j2RiXssmoMRqzKzCddrN+iYJvkPcsrkF1t0w HFRi9Z0clI8fRpZETEiEYRF2n0gHr0+XasHJxN/p5zji6qOR72gYEv9kQCGgKAWw XxgRTAMOM73KvZieHf3PRSJPk/cuQAnkAUVmm2umQvIVJIODZxh1MmPyuBZz4FIa NsrNxJVKPTN1n2CB4W0sCwv1MjyRLyf0hsxPm7VwxgbfNjTOWZCSapb26JF+lJA9 +7s/K9Csi4DhLuoM0qQ9Y/AVIfQD6LqB9we7Y25QKN0stj+IDybpHGsVz8TCS/UA WaQv8IBee485QeV9QkLuLHxTwKYuOTn0BosOenMpAT4fJ2GNT8VcxXCvI/4BMf0N VDVdYcmR2idmuUn4blCBDWL76tMW5C8pVOgD3KTIyo0YgtsUJZmUfPhsqPZeypgn dhPBx8wXKZ1KLIkOFLdNRk6B0WHVYpTrV8vCt/2+87LlLrm23Os/XUwLF7qnIs+I TDzURUtnz9fPT90R0nQDz6O5Ag0EWYweqQEQAN52RDCTu6DextjX1gNI5F4TZJMG LWL32rVDzCT5RBav4Ga1o+QSc52Hg6t1uE/ayjods5WL1T1PZroHxkAdWrBoc1vT lH8JfR6qbnUFNJxR3CyKFUeqo2f3V8gJ1yHFnbtA71/G6XuGLIKgmMPsUzdl/y2l xc7SrijHBpbWZLGmrs4GWSIO5XZWsyztePGU470v7JrWUGlqpsV8bb565cXb7qTl 7+HGde8PYA9HtO2O6azacFVt4lS7jXGu6EKu5zPiL7wIwiJ8OGFfFkQrU+hujFAU 1bpT4C9lo2VTjLfK47yOhJVW/zonUiFC2e7H2LOMaskyc23vdrJacDZT8wvwM2P0 eTsfnVNGlHTmi8YJfQw3sfacBHIXab3tMtzfONJgYWD1DzwPslO7HH9cwuzSWTQL hl/qMzk2vcPs0KD9eMzNMpJjdczoN6bVCFWUwchwR3CYU4Cj9nJABPFaIU8eMNok I4M6hJ678ap00HyAXooSOyPd2JUF+xgq90ItoTZPmuNaUcdce8eVIT/lnec5BQVQ sSkNwZQbdC6eh1E9Wf6ZsY0f4xQLy+Jj4YMsK9Po8LSeIx0l/UU/6yTX2Qxsff/Z 1MjW1fFJ6MMQRyOHUm960AAzannwFCVj9coGEtU7SVEzqb431gl/FMjMIeCC4+j9 9sjPcSffkTd0BX+tABEBAAGJAjYEGAEIACAWIQRqo/EYTcnNncCtEJR+nSY9K9z3 FAUCWYweqQIbDAAKCRB+nSY9K9z3FBUCEACiFoF8R/WvOANnSiAeyFclXb2///Wx R+EBlsqs2kV3ZTXLsXHep0FeXfljRZaWoUcgHXmMhuqDSC9VlimF1e5Y+ZSQmUQG S7wAquG9onQKyPf/AK7yIYhI6QR1yyCG8Vbt4ebgwOIWMYmP3lWU04uf8Zt3WM29 wK5smGR8sPOFDDvYQQ/ZlB/ZJaN0mvsqfc8ESxltRUrRyHySQCRVVVpFGz5UOB2R Yv4Y96g8z3RPj46mQKdTesV4G9wYuOBq1IXqy7Qe6PxXYaeHXgga+msRm8fcYUYr 4Iv65/88dhEvTwomIZnvr0YhC+v0iss+Y43zBEYyfaa+I7h4c2em+G+8UjMQQOee yh3ccVGv+2nInV+i8j9xaFoL9tR4gH81paabmhcbI0d/5/lxpATIRi10cofUwlhe go8EpDhVA4Au7ORIthadFad83Vj+SBadGcLietItrh6/eh8IRWlzX44L443ScJC3 C+eMjx3TFbhM5AQ09cekmV+B2rkvrcNR4licw9oEWoHzIo8ni9iZ6y8GIhVq1jk1 OCsZi/grIQU1xN2Pd0q8bWypRYP3I/a2JnstocMz9FY46rTPSX+JGLqgdn/p27xb IBVr9gCZ5D4Lj2cMpeleRjgbJ0jTBOSkejikDXPVPCVnjAHuztLTqGIBFIl0nFMt Yjey+RmCBW6Rxg== =FPcv -----END PGP PUBLIC KEY BLOCK----- pub 4096R/A785BE78 2017-08-10 [expires: 2021-08-10] uid [ultimate] Daniel Russ sig 3 A785BE78 2017-08-10 Daniel Russ sub 4096R/D0F85320 2017-08-10 [expires: 2021-08-10] sig A785BE78 2017-08-10 Daniel Russ -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFmMxQcBEADSATAECWxCCbCpONN6zUWyuvm3+T3t+Xv8vClv56AlDoMXCbp4 735oFlkPRL0h8ab8s/avAClyHkiHZckltdiVqb1pSEPTxuCce1bKcsHQ6YMQPrFL qL4shx99bjBAf/NGLQNPxJLlji9KwWeBwfDCpYbkN7o0PA4FNrcXOvZIZ3hvpL2e x5gUi51uID0u/hLt6HDubCAlnr+yzVdq6UVT9huU1wvtnkSlEHHj4vset2zPePN3 N9YRGf1uE3rATUjhn512Pnayso7pZEHOVAUcQeDTVqDuZmLU8lUc85GvlGqOkfpN Jn2okDrCCLglCna3JB/+e4s9H+O++uMHFE3MYVJaKe4JnId3Mkxc2/BWUtL8OxQQ b1lR/jUOvoMeMGaPPV/zQMuLWP5rvHdQxmoaru7Tkpnx3mIVHOyG1XvjJRhXtRGs xCf7PrZMjYB74ImsWR6CUvSWkeLNdB0nNx8NebpfNNfQMEZg6s1QLudyIgF1tCqg 3CpMSlt7/BeI3JCevsZTRQ+xiWu4pC98S/VrLHiDYRxOA8vpmb8mz2dHKOpm1FXh PxYXDgNZk9I4LfeP9SXY/ez0ugey7DJ6qSsTYOd42ufNmgEyVp/7h6DR1EbEkOQU ZHrryYEykeO8N31OV1zrJuRPwPMTMLpyR6aAKj8p0qobBdqqdlK1g21TjQARAQAB tB5EYW5pZWwgUnVzcyA8ZHJ1c3NAYXBhY2hlLm9yZz6JAj0EEwEKACcFAlmMxQcC GwMFCQeGH4AFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQVLrHDaeFvniayA// ekffUKkS5VZlRLv66JtMV+3KOSstPzsya19+00Il/km6yQvu57kiDm1t8/xGAW1H s9bHSX0zQ9rLPvblkdPJ7iokLH4L6FRhAqhqGJupbv9F1mZYgJ5KE1rDXWMQaDBT 2Zbo3okrJzSPP1SaqaApptuf2dav3aYndMfofHe9M9xHsljW+5Nm1K1ag5UouOeW ekf61ekrIXT8qjOhNPRqVLmV+QS0KMM7LqsegJOhzCy/9qtFInM5AXL0Sf2swn4H SMNglm/4Rv2WZUyg9PtZ9EDmKwR1QL9o7jhlwjDq9YgA4zmnd322948Qof4VWH38 cgTVEHIDYsDaPD/dRfez2YJh6pz2dtAVRt42jnh4n3n0cf1wGP64iYs/blrZxdqJ RESlIcwAfu3WwxxwcK2GWtBQpwJo6avKr+9Ow4YCvzRmRJY6hMH4qsWBOx2gk18E V+87HNaa3SVD2l1hd3b/Vm74hYJjYW1VwXrggSe4rfF3ffQKPOjGXrWwvzqg/NLx wX9Mk/SLvb5uOcm6xJx22eD+jLMDd5KI/Pf+xpjPBlnVong4AkvBvmy7+KioxU7h prYK37JinKFyj+XmTTWQx+nufJvru00VtTMDtjZ9uoREVjmj682htflWKIYt4y1z ishc/tZB7jYPS8gIaQtuMWj9KzJENujzYpIowJE+M/C5Ag0EWYzFBwEQAKpvF3hl Hekjl9ZawZNX6rCgx8rHRo1LFEn4Dkihb2Zbkehhhs6lZPmaqSVZPzuCg1mMtiZ0 oMgNhd96xMAMWkHJXZPp1EVPi5Rma5z4Be+JN3BmVqbmquhsZ+x21Exhq7RvvgfI Oi55SKabjBvQ9CwoPpYShEvH7ExNRnmBKTB3n+uUBffE/+75Euxn8JtCLopWZyeL 3QkZaoHx5F10AKOa370GZu2Oqgs0980NVJ3I3MaIX5NrTAGl5vh80LShOTXKOe5T n61Z51C1U3qhvF0EqWNDbGBbUd5GSIaYrFZoh1RI48tDI2EYA8GYvpgJZkATKIiW 9/wwyrvVqrMtvyqqdXpepX9lEBJhC05+JDJhWranE3d9/caNOzfy2APw6k76IySl 84OmadEYIoH1ZjHnmiWBn7DqHdsduiMWIfWsMJvsAtBnsaYRT1DrMogpbMbfRn3q 0orBnjqp4wPZbq4G4Y2cuops83pntacb5CwRsbJJvJ7lq1bUHqEjcv20Qt5qQSDs y7xwppLjQO7P4tUORUmlgR2bA9gB5wTJCBXptyPbbmhGNsgQ2Y1v0odc2OVly1Y0 +AnSjh8DFnjhib1AWsiSpz0V6j/ccNjFipflUTZrelbANYUaeC4e0ReoVRSTLFqc ybRENS5jL3orJzq46Kp01hl/xPhY5ywYA/7/ABEBAAGJAiUEGAEKAA8FAlmMxQcC GwwFCQeGH4AACgkQVLrHDaeFvnhCABAAgy2Yr1cAeDl0YxmdopUwcIuF75+vTacY x9FaVj0Kp1/6eXERr3087Y8ge5AA1vzkAjfRRibYcVpOk9XriYM4ERa0wORJMOkR wAPHUwVT/6qOazIhK+C6JlptS9/myj5YZMO9wghJ8vaNie45YMIxX1pc2ffEkd6z DGnrUEoSNI9xuDvRDrNx5MFkRj/yZCyF99Pu2vUIeXprTc7SaF8bf7KfsQ72QsDt H9j/dlLKiXbid8BJ6faSl10sqF2OLYzZtN2Dz7fpdQDMkbzRMWlZq5Wr1g+3JdHR qYelUE0RK7EqYbVYZQ/HEdAGvu3p/NN3+x3b1Kq5zVgkV/2cky9OhIvfKsU297Fm uCap+6bmgtFKPFIXzV99msIy+HaKfqzTxri7W0SU1Rl2vJn9kDaAZqAGznTRj39/ UjeSG8FrYtKuhpg61mszVMYI08kpk3n2cdH3TGVQYWUccd0G6DApLzlU17O0M53w DQRlPOpoz4VjIyeFRG19E3o4EB0/Ct1v5eUdvM5mOwc6IqHpF3mJZgF/qb/5QNQU /eWKmEw4x14F6NmE1VJ0KYYAVp45ZgciQaW2F9oRKXHtzBFXCpoIH+kNBvRMKdi/ L24DF8ybIa+mLOqnbRG9DQGSjEjfIUZbM6pORVhnQwQlqluH/YCrdilmBpQIkt8p Zf1LlcOaFLg= =Kmjz -----END PGP PUBLIC KEY BLOCK----- pub 4096R/891768A5 2012-06-07 uid [ultimate] Tommaso Teofili sig 3 891768A5 2012-06-07 Tommaso Teofili sub 4096R/6F037735 2012-06-07 sig 891768A5 2012-06-07 Tommaso Teofili -----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - https://gpgtools.org mQINBE/QVugBEAC1ejfMszFNZ6IzjyNJJEwB7sjR+aTSgkaLTlX9V0IZVE3L2Bby 4UsRLczstXpkFYOR5mOo1cfsav0Tf9qcw27rZFZJS2euX1qmhbG54VqpUo4FR6xX E7yGRrFNmqjwdXaBXj9VUlVTwRey86woevuSxixXma8CsA4fPQtOpAtnpJ6g6285 ZdseQd2WjnF9CskSP5pDw6/nP+uBOE3Ve9DaCUzcAQdYr8xm+DINFKWo1ibTeL0X JmsYI5pjD13liSQNUqjXft1TvGuikpQrl0Ty220DbIIxd24jvWedZUrsL9yvgAps +Bc3HQdjS1YRvf3y9Cjpiff0VZ1B4HDnczn7qko+sEnPyI6RCncpp2rZ5/5PIRLi WbCL+7s/1Ja4iv1vmF6TeanorvBQ+x/e+iewRVCRTfubHQOulI/ydiUWimv9zhqp xKyj1yz6WDf6S7WouL9wVKHpcgF8x3EE+vGt0CqCxkH9bFHw5KvicNPFrWdiOKf0 qd3AAJmZP7w3++mdGbrVu4Z6p/v6wuocEf5uOxGAT7Jk81+ottZMVREMkPe89NFL Us2T6wo3YNbT6GgLzLe77GlqXO15q4wfI/cGt8LjpECtoT8LLZLFZk8BHg4iS+EF DtEvEzS73rZ9MgQU/zbpSZdmHM73pH1ceQ3QTA0cxldhyMXW9hSsIGTBlwARAQAB tCRUb21tYXNvIFRlb2ZpbGkgPHRvbW1hc29AYXBhY2hlLm9yZz6JAjgEEwECACIF Ak/QVugCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOG+6RGJF2ill8oP /05/uE32cx0ZY/ap5giCYNKpIZZtJV54F/ElLJIEUMVP9zeNeqLbrQj2OTROqvre ucDCGOMIrraRS88WjDiFRXLbsncss8sqturwlR9JNwJSXW1jWj7BHTbVTt25Cf7d MpzBFjIUoGwODYbgdjh8U3tz5HUokwsVvDeoMKJlJ7+MdBdlat3/shew5HcSlgLE fDY5le67UYnbOB0zhtRKTPyldPUak0vpivBnYRqEcmL/na20atO/pxrhffbvVLSO z8kjMG0NawMc9TloW8LIkT+a1gGReN1ecpyO1RK082FGQNfz2MjM+4hn5SYEgcu9 DbkdXWsZdRrL2OKDb/4p9PfPzObskpSh2WXTardEys08PE4aSJ/V7EhD+WSRU1WV qPuUZjv/CqC9AecepyDBKu9VGP9Q8YcCh5BNJzXDVqu9W30uoFuUzoL2Wcx1H2K8 NTUitbi4RSQE8BYd88gJywmKyP3xj9KBSzylvUhev0S0Vh0gQ5vmAe4FIf/qflUB U8pTs/5TbwVv+5feRTqgJFMUEEaloGQdhxowMLXD0HPegNSJPJeHXBsizkp/aj1G DsV9zj70/FFwagFDHtSct09k+ql85RoDe+baNZmDwrfuXD7YgqNHC7UAYqAxuWZ9 6Y3wrKaOLRi4lsHZZSEKKGmI9mWBmzcfkvVNYMQxTHW6uQINBE/QVugBEAC7vlNW 17GSc+7XFEnJs3xcTnis5BCUpmsUCaOGyZydWnwrwcmuBwNSm5eHfmtzLJPlPjG+ Tt00S+vSf/u/O0PdO42dDq7T/NlWe0Uz5Dsh2+fIZVtv1SZBv0A+aHjekKC8QuOT +xsvFmt3mihZ714w8/PrK1mljTFZcsJjJV06L5XK82+yyCK7AZB4NZq1Qxx3hCFZ cu7gZ+G/cIZO2b5JjU0KusJoETaYcFcJUQZSfSD6d440Q9I8BiQ1pUq31mWvL1ga npUc0zvKfggT3bdCzJ1CBOr8MyYQmZHtLWHBa6upgsmMCh2/XQRIBTBH5NNoDAw5 BOVeCIM+h07IxXhfBfMNXKuRWFHdSWzKi4LBYwqiifl+2Ug3d5FqqGfX37B/D7Mb DMB42CzSf3+6D+8eCWarqe0PUMvF3UQ62Q+psHMQdnkMU9bLj/+4TJhcAUuFRoJ2 +ZR0hkiPb+60c2amhvlH4KXk+ADBHHSd3FzQfIodnYH6qj+k3g26ifqZnrn6nXyJ XSV32Ea42iBe4Vl6HDaqEQq1n5P6k7PQTIi0KOIX4snnkl2AAp+azf3wsBBVJAwv GlWwl1du1sYfHG7YMQQRudZbJXdUGbFO0ZwHEr2p8f+7WOo2DDVWmMbzaAgzV8mJ vS7o+fbEW+B7VRLx7hI5dpe6BZSQExnTyvjAPQARAQABiQIfBBgBAgAJBQJP0Fbo AhsMAAoJEOG+6RGJF2ilD2UQAJYSW1zaXUooBoCJZtvXoVMo0fDDdWAP8giYQDML zNcO7WkJH3quXSUdCXR67SEKgIQhOQZgS3aq0gtVkw0d6Li6D9G7rKRsvzI6z28W U7uHeL2cawFTb94tbMgB2bmIubA7RmFIHTz/o+gRc83XG81TciSDO3laii1kM6U4 +1uj2eR9eviVB9A86AU2YnePXlmyUUcG4cdB7ezjHkYp9JfzCYAtJqI+zCuL09ZM jG/cOB1eDckaa/n+OIfR+/m1cz8Ynj9qmVjKybHdSDsDukaxdM8jljAFk/pV5Io4 QjMuxDxNAqSR8c9UdahdY2cGu964JT6EsRhRRrZCISLrd9UUy4woZmDBvNi7JG4A I+HUt6CtPWWXqFxilyEjYRX2eMhT7wTHeh15M6RADc88GGxHhb9E7vtn7ex/gE9M iInXl1mSO4Yyz3YQH881OP2DFjo51JUIxtWbSTnGGzcmQCqJxMky9Md/44SktGnn 9tF7EosWnhPE4k3HR+pn967MnwfDfC6GUmXhZuUqxIYaN7gVBkZmGsXshXW0k+cc RmcwrIdKac+wSiWKYjjSZRDimA2WImQDPD04jsWir3YEKHDCGJU/0j0c5imr3wYz 3qCkiPkryqpovs4FQ5AVO7cECe0AM5QjvAJ7USRfy8Ge+N3PsZouGqlObhiHmyKb HrOQ =H63W -----END PGP PUBLIC KEY BLOCK----- pub 4096R/41EF12D8 2017-07-14 uid Jeff Zemerick (CODE SIGNING KEY) sig 3 41EF12D8 2017-07-14 Jeff Zemerick (CODE SIGNING KEY) sub 4096R/7E1DDD74 2017-07-14 sig 41EF12D8 2017-07-14 Jeff Zemerick (CODE SIGNING KEY) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 mQINBFlotdwBEAClmhlQUi7cLfcPHSLFN+TXTUEmDN3n+75/rJTgQnUzGvMjomJL 0QpouGGCzJM0XyFJO/KHWm1eurNtx0YGBTBWjvR1LMtBdcfg6WQJlz2PR4TcQCmu Hj+vgBi14X1raT1Ek8kyPcomnTRWjz0tbIhEx08/8kvrDrHUoMh/acu638j7sVKM FdtMxI66jGZjixB2brWCkFaRK3TpNd2R0GaAxNZOT/Z8VcOPU48fRimWf6PhYuor 5D2/85g5L9WNUTxA7ih0Py9XgtB24CZmBzvQfJ7t8+I4tjQtBd4yMuADmnoKppAU WQXlWj/5cNOkCIVViZpeUJuIQcbepodSoAkwlcMGEX2eVs4OT25cGfdc6taEf3ZB qS67sTOwSe5tT8KiFuRvpfrd4C4yfsuYumzOxpAaLiggQgBBM+CDp6CtnwdAOCkG 50psjn/5ubvnmkhB7TowCp7Vua44Wf2dQphdymn4k99Xoo6lgnpUhlBlY8c0FgfO q5/biJcu93FJjOmmTpapAhBNpov/9tfz4sLx1B2Tcy+lqIA3pFEuX4rY7vavPo49 m4u03+J3m5Yqp/1XtMgyrdRRQEY+c5fY4F7fSgqGaB2t0vvgqDkkfyzhMTXtSXb5 +s5CUjeqyJ6y5tSRmPngwyCid99lrky5mjj3/lqwLbgpsh8MEVydh9Gx/wARAQAB tDdKZWZmIFplbWVyaWNrIChDT0RFIFNJR05JTkcgS0VZKSA8anplbWVyaWNrQGFw YWNoZS5vcmc+iQI3BBMBAgAhAhsDAh4BAheABQJZaLhIBQsJCAcDBRUKCQgLBRYC AwEAAAoJEGDmOthB7xLY430P/iTbgncVwOZQR79lfCtwwhwDbe9BKP0fqCcoN6yF t9fjT55vomd2YxO4kyDivzVoFYAdKEopbkDnOZuEonGO7SKb6ysAbvlIhvy0Zxba uD1jTTjOxT+xlwz//5mFMIAVlJk46CyFfd72KFCs4Fsjj9isqiNDmphk2+PsviMT 759mW1R+pevT2kzx+l3nNFJkJvqEba/PNLZOZidhyPru0vNBdQ/5JHiy5cXmPea/ N3C9S7IVwiS00PrcF2oh4KOyXvsH6q8Rk/dXqOeTLll249rxt63Srmhbs2asFctV ub2u2L7aLjsJImCY5qusHHP80Hjf2Cnn5jbprZ7IM2zNcCAt+DjxKkM7nliLdExi 7oCJLXgH2oS0Vw1a9+x6m5ZwFvnrtsoWPJGnmueltFisnPjp/Z+/NjeP40mwfK5t m7QDduRNBr3w/GqWPERL0SOBIykoR/eHCZEu3Y4cZoZJNcb5XCrbAGFLxUj5mpLI QPTNNxoPzoZOkuG5hkObNi+8/Q0uBn/Uy3JGK2SU04iFqF756LgO7lKA3RPnPGQ9 UBe1dbP8d8gl0liyJqf12M6jJRV6dGP4QVtfQwY4mYl1I7aN6nsmMC8eJ+VUxX+7 1kY90MvFnu9viqltp5AbL5E2jGjcNUTe3CeCaJHJFEC6TN5IWZKzAtbFSBEOWmRn EpWAuQINBFlotdwBEAC1V/XjAfqyLqWcWMSVhJhEusRZxlIwRilnm4l0pvepij+W Dyvi3FgCEZ9T6Jy44EgsgWsWG+p4uDgSONAgWexsYoF4cmCXol+WzBP6g0ZCLI7o 2IM7YrhgwJmx+OssafRlGv9SQHbUc8XM30p0pjX4hCnoHESZGdgYLFEWiviGxj7d erS6n62y/bsbV7ecVAakYTugLLXlRZqOP4brdt46XwKDP/J/1F+hVEwv+OBBy7pZ lTql8N0iZi0I8cCPZvpwk/zFvimsCevx/n49CjNLlZ9Uns8OUCh7DKywgqi6hc55 /iiawq+PnGUL6isGmiSB7UNuacTrRDlJWY0uSOXdR77jyqaV3LgCg78PtKJHG9Ja oUcp02uLOL6uJ65Z4vFg7Dkh6xixpa179kNkqEurIMGV8zjbjl+RC24nvAgtE25Y V5Cnv6LMNywN9BBsHpqLC9SlOL6lX/ROeBuGn+w6O4MjHHrxBaa3D67tpYjpUah6 onuW48n/83NQ1vJMXHoTTGACw7Z5aZkEN0pEYgit64ATtAO8x+jw3wpRm6eeZykn ZQ3rhPNMMZU/8wMNZbWIwuGKf8mZ+DN1Lc/rW4u/6Wdp/J2Wj3yWpbFp0yQQ6KS2 Dbuz2oBuX4woE7+tlGM2W26VarZ8mAgC6AoZcDQL9CAsBYz16N3tnl8xCV7IoQAR AQABiQIfBBgBAgAJBQJZaLXcAhsMAAoJEGDmOthB7xLY1XMP/RQ3kdE94eqtcbvC aSJXekd/N38shOZAXjChf0wmt5fdTl2VWE0bS8vYt3eutNwSc51iS3933rdNNGYU w1737oXYj+nR8TvNejGtqp63oDCNuaUvUXPsQ0LYHA0g3sI5QBHDJs1e8+GHFYlh lbrCX6YxUsXqdiwOgGYkcEHDbsJ1QW9vuG8MLuqZia6cpV304QUeWP7/bDDCNm44 kD4Y7B+6QTXrQzrUBZYKxelVj3yn46bo/PQZDywd67el7gSAH2XldVWmj7VOx1lh SwwA2MmWD8zT7/eT3d5G//2HaiQhwhgLXR+CSm7J+hWgjFWjfR2MLAYVFdLSgICY P6hpdokoy4Yk2wW5+0bON6Fa9MigmTpPG2tut28dSo7cC7PssmOsJo/sCO1+MwB5 aelEZXZ+6waJ+FsgFN8rz2Fem862WhkLnyhNMc+DsPRu8hkhn9GeLmTknKyW20ew BMRvBS/t8in2HkUOkiEi2ZFtLj0z+pjkVUIa+yEnTguypiVxJCjeiEj+5x/1ef8e Q23dtbvyb9AkFCv+dF+kH2rEu5fDQw8r1h8FDpuDAKX1kHKJIVfyGHaDxTJgjBto 5Sh1fF7CKVgTHtA4xfuYqqmCQXjOhEkx1epk3yqXD7/MuVXyscTMadezTnEoqFNa FHIKOBUma/bNr1dta6xhG2/0UoIU =TOQS -----END PGP PUBLIC KEY BLOCK----- apache-opennlp-1.9.4-src/README.md0100664 0001750 0001750 00000011530 14135770370 016743 0ustar00jeffjeff0000000 0000000 Welcome to Apache OpenNLP! =========== [![Build Status](https://api.travis-ci.org/apache/opennlp.svg?branch=master)](https://travis-ci.org/apache/opennlp) [![Coverage Status](https://coveralls.io/repos/github/apache/opennlp/badge.svg?branch=master)](https://coveralls.io/github/apache/opennlp?branch=master) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.opennlp/opennlp/badge.svg?style=plastic)](https://maven-badges.herokuapp.com/maven-central/org.apache.opennlp/opennlp) [![Documentation Status](https://img.shields.io/:docs-latest-green.svg)](http://opennlp.apache.org/docs/index.html) [![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/apache/opennlp/master/LICENSE) [![Twitter Follow](https://img.shields.io/twitter/follow/ApacheOpennlp.svg?style=social)](https://twitter.com/ApacheOpenNLP) The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. This toolkit is written completely in Java and provides support for common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, parsing, coreference resolution, language detection and more! These tasks are usually required to build more advanced text processing services. The goal of the OpenNLP project is to be a mature toolkit for the above mentioned tasks. An additional goal is to provide a large number of pre-built models for a variety of languages, as well as the annotated text resources that those models are derived from. Presently, OpenNLP includes common classifiers such as Maximum Entropy, Perceptron and Naive Bayes. OpenNLP can be used both programmatically through its Java API or from a terminal through its CLI. OpenNLP API can be easily plugged into distributed streaming data pipelines like Apache Flink, Apache NiFi, Apache Spark. ## Useful Links For additional information, visit the [OpenNLP Home Page](http://opennlp.apache.org/) You can use OpenNLP with any language, demo models are provided [here](http://opennlp.sourceforge.net/models-1.5/). The models are fully compatible with the latest release, they can be used for testing or getting started. Please train your own models for all other use cases. Documentation, including JavaDocs, code usage and command-line interface examples are available [here](http://opennlp.apache.org/docs/) You can also follow our [mailing lists](http://opennlp.apache.org/mailing-lists.html) for news and updates. ## Overview Currently the library has different packages: * `opennlp-tools` : The core toolkit. * `opennlp-uima` : A set of [Apache UIMA](https://uima.apache.org) annotators. * `opennlp-brat-annotator` : A set of annotators for [BRAT](http://brat.nlplab.org/) * `opennlp-morfologik-addon` : An addon for Morfologik * `opennlp-sandbox`: Other projects in progress are found in the [sandbox](https://github.com/apache/opennlp-sandbox) ## Getting Started You can import the core toolkit directly from Maven, SBT or Gradle: #### Maven ``` org.apache.opennlp opennlp-tools ${opennlp.version} ``` #### SBT ``` libraryDependencies += "org.apache.opennlp" % "opennlp-tools" % "${opennlp.version}" ``` #### Gradle ``` compile group: "org.apache.opennlp", name: "opennlp-tools", version: "${opennlp.version}" ``` For more details please check our [documentation](http://opennlp.apache.org/docs/) ## Building OpenNLP At least JDK 8 and Maven 3.3.9 are required to build the library. After cloning the repository go into the destination directory and run: ``` mvn install ``` ## Contributing The Apache OpenNLP project is developed by volunteers and is always looking for new contributors to work on all parts of the project. Every contribution is welcome and needed to make it better. A contribution can be anything from a small documentation typo fix to a new component. If you would like to get involved please follow the instructions [here](https://github.com/apache/opennlp/blob/master/.github/CONTRIBUTING.md) apache-opennlp-1.9.4-src/pom.xml0100664 0001750 0001750 00000034524 14136044070 017001 0ustar00jeffjeff0000000 0000000 4.0.0 org.apache apache 18 org.apache.opennlp opennlp 1.9.4 pom Apache OpenNLP Reactor scm:git:https://github.com/apache/opennlp.git scm:git:git@github.com:apache/opennlp.git https://github.com/apache/opennlp.git opennlp-1.9.4 apache.snapshots Apache Snapshot Repository https://repository.apache.org/snapshots true Apache OpenNLP Users users-subscribe@opennlp.apache.org users-unsubscribe@opennlp.apache.org users@opennlp.apache.org http://mail-archives.apache.org/mod_mbox/opennlp-users/ Apache OpenNLP Developers dev-subscribe@opennlp.apache.org dev-unsubscribe@opennlp.apache.org dev@opennlp.apache.org http://mail-archives.apache.org/mod_mbox/opennlp-dev/ Apache OpenNLP Commits commits-subscribe@opennlp.apache.org commits-unsubscribe@opennlp.apache.org http://mail-archives.apache.org/mod_mbox/opennlp-commits/ Apache OpenNLP Issues issues-subscribe@opennlp.apache.org issues-unsubscribe@opennlp.apache.org http://mail-archives.apache.org/mod_mbox/opennlp-issues/ jira https://issues.apache.org/jira/browse/OPENNLP junit junit ${junit.version} test opennlp-tools ${project.groupId} ${project.version} opennlp-tools ${project.groupId} ${project.version} test-jar opennlp-uima ${project.groupId} ${project.version} opennlp-brat-annotator ${project.groupId} ${project.version} opennlp-morfologik-addon ${project.groupId} ${project.version} 1.8 1.8 3.3.9 2.6 3.0.0-M2 2.30.1 4.13 2.1.7 4.2.0 2.17 1.0C 4.3.0 0.7.9 2.22.2 3.9.0 org.apache.maven.plugins maven-release-plugin false deploy -Papache-release forked-path org.apache.maven.plugins maven-assembly-plugin 3.2.0 org.apache.felix maven-bundle-plugin 4.2.1 org.apache.maven.plugins maven-checkstyle-plugin ${checkstyle.plugin.version} com.puppycrawl.tools checkstyle 7.2 validate validate checkstyle.xml UTF-8 true true ${project.basedir}/src/test/java error true check org.jacoco jacoco-maven-plugin ${jacoco.maven.plugin} **/stemmer/* **/stemmer/snowball/* jacoco-prepare-agent prepare-agent jacoco-prepare-agent-integration prepare-agent-integration jacoco-report verify report org.eluder.coveralls coveralls-maven-plugin ${coveralls.maven.plugin} org.apache.maven.plugins maven-surefire-plugin ${maven.surefire.plugin} -Xmx2048m ${opennlp.forkCount} false **/stemmer/* **/stemmer/snowball/* de.thetaphi forbiddenapis 2.7 false jdk-deprecated jdk-non-portable validate check testCheck org.apache.maven.plugins maven-compiler-plugin 3.8.1 ${java.version} ${java.version} -Xlint org.apache.rat apache-rat-plugin default-cli check verify release.properties .travis.yml 1000000 maven-javadoc-plugin 3.1.1 none create-javadoc-jar jar package public false false 8 maven-source-plugin create-source-jar jar package org.apache.maven.plugins maven-eclipse-plugin 2.10 ../ http://opennlp.apache.org/code-formatter/OpenNLP-Eclipse-Formatter.xml org.apache.maven.plugins maven-enforcer-plugin ${enforcer.plugin.version} enforce-java enforce Java 8 or higher is required to compile this module [${java.version},) Maven 3.3.9 or higher is required to compile this module [${maven.version},) org.apache.maven.plugins maven-surefire-plugin de.thetaphi forbiddenapis org.apache.maven.plugins maven-checkstyle-plugin apache-release org.apache.rat apache-rat-plugin rat-excludes default-cli jacoco 1 org.jacoco jacoco-maven-plugin eval-tests 0.5C org.apache.maven.plugins maven-surefire-plugin ${maven.surefire.plugin} -Xmx4g **/*Test.java **/*Eval.java opennlp.tools.HighMemoryUsage high-memory-tests 1 org.apache.maven.plugins maven-surefire-plugin ${maven.surefire.plugin} -Xmx20g **/*Test.java **/*Eval.java opennlp.tools.HighMemoryUsage opennlp-tools opennlp-uima opennlp-brat-annotator opennlp-morfologik-addon opennlp-docs opennlp-distr

How to Report Issues